Configurer Progress Watch par variables d'environnement

Tout est une variable d'environnement. Il n'y a pas de fichiers de configuration à éditer et pas d'identifiants chiffrés cuits dans l'image, le même conteneur tourne donc sur un NAS domestique et dans le cloud.

Général

VariableDéfautCe qu'elle fait
SECRET_KEY_BASELa seule variable obligatoire en production. Générez-en une avec openssl rand -hex 64 et gardez-la.
DATABASE_URLsqlite3:storage/production.sqlite3Où vivent les espaces et la structure des tâches. Le fichier par défaut est ce que contient le volume Docker ; pointez vers postgresql://… pour un déploiement cloud. La progression elle-même n'est jamais écrite ici.
FORCE_SSLfalseMettez true quand quelque chose devant termine le TLS. Cela pilote aussi assume_ssl, laisser désactivé garde donc l'application utilisable en HTTP simple au lieu de rediriger vers un certificat que vous n'avez pas.
PORT3000Le port sur lequel Puma écoute dans le conteneur. docker-compose.yml le publie sur 7979, parce qu'un service laissé tourner des semaines ne devrait pas occuper le port que veulent vos propres serveurs de développement.
RAILS_LOG_LEVELinfoLes logs vont sur stdout et nulle part ailleurs. Ceci en règle la quantité.
RATE_LIMIT_PER_HOURCombien d'espaces et de tâches une adresse peut créer par heure. Non défini signifie aucune limite, ce qui est la bonne réponse pour un serveur que vous seul pouvez atteindre. Rapporter la progression n'est jamais limité.

Derrière un proxy, RATE_LIMIT_PER_HOUR ne vaut que ce que vaut l'adresse que voit l'application. Rails lit X-Forwarded-For et lui fait confiance depuis les plages privées, ce qu'envoie un reverse proxy sur le même hôte — mais si l'en-tête n'arrive pas, chaque requête ressemble à un seul client et la limite bloque tout le monde d'un coup plutôt que personne.

Redis

Redis contient deux choses sans rapport : la progression courante de chaque tâche, et la file Sidekiq. Ce sont par défaut deux bases logiques d'un même serveur, et chacune peut être déplacée sur sa propre instance.

VariableDéfautCe qu'elle fait
REDIS_URLredis://localhost:6379Le serveur utilisé pour les deux rôles, réparti en db 0 pour la progression et db 1 pour la file.
PROGRESS_REDIS_URLREDIS_URL, db 0Remplace le stockage de progression seul.
SIDEKIQ_REDIS_URLREDIS_URL, db 1Remplace la file seule.
PROGRESS_TTL_SECONDS86400Combien de temps une tâche garde sa progression sans être écrite. Chaque rapport la rafraîchit, ceci revient donc à la durée pendant laquelle une tâche abandonnée reste à l'écran.
PROGRESS_KEY_PREFIXpw:progressPréfixe de clé du stockage de progression, pour qu'il puisse partager une base avec autre chose.

Notifications

Les deux clés vides signifient que la fonctionnalité n'existe pas : pas de bouton sur un espace, et rien de stocké sur qui que ce soit. Il n'y a rien à enregistrer chez Apple ou Google — celui qui a fait le navigateur exploite le service de push. Générez une paire une fois et ne la faites pas tourner ; les abonnements existants y sont liés et les navigateurs n'en sont pas informés.

VariableDéfautCe qu'elle fait
VAPID_PUBLIC_KEYMoitié publique de la paire qui signe chaque push. Remise au navigateur quand il s'abonne.
VAPID_PRIVATE_KEYMoitié privée. Ne quitte jamais le serveur.
VAPID_SUBJECTmailto:hello@progress.watchUne adresse de contact que les services de push peuvent joindre si quelque chose tourne mal. Personne ne la vérifie.
PUSH_CONTENTfullfull met le titre de la tâche dans la notification, minimal envoie « Task completed » et rien d'identifiant.

Dimensionnement des processus

VariableDéfautCe qu'elle fait
RAILS_MAX_THREADS5Threads Puma par processus, et taille du pool de connexions à la base comme à Redis.
WEB_CONCURRENCY0Processus worker de Puma. Zéro fait tourner un seul processus, ce qui est la bonne réponse sur une petite machine.
SIDEKIQ_CONCURRENCY5Threads du processus Sidekiq. Envoyer des notifications est le seul travail qui existe.