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
| Variable | Défaut | Ce qu'elle fait |
|---|---|---|
SECRET_KEY_BASE | — | La seule variable obligatoire en production. Générez-en une avec openssl rand -hex 64 et gardez-la. |
DATABASE_URL | sqlite3:storage/production.sqlite3 | Où 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_SSL | false | Mettez 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. |
PORT | 3000 | Le 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_LEVEL | info | Les logs vont sur stdout et nulle part ailleurs. Ceci en règle la quantité. |
RATE_LIMIT_PER_HOUR | — | Combien 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.
| Variable | Défaut | Ce qu'elle fait |
|---|---|---|
REDIS_URL | redis://localhost:6379 | Le serveur utilisé pour les deux rôles, réparti en db 0 pour la progression et db 1 pour la file. |
PROGRESS_REDIS_URL | REDIS_URL, db 0 | Remplace le stockage de progression seul. |
SIDEKIQ_REDIS_URL | REDIS_URL, db 1 | Remplace la file seule. |
PROGRESS_TTL_SECONDS | 86400 | Combien 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_PREFIX | pw:progress | Pré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.
| Variable | Défaut | Ce qu'elle fait |
|---|---|---|
VAPID_PUBLIC_KEY | — | Moitié publique de la paire qui signe chaque push. Remise au navigateur quand il s'abonne. |
VAPID_PRIVATE_KEY | — | Moitié privée. Ne quitte jamais le serveur. |
VAPID_SUBJECT | mailto:hello@progress.watch | Une adresse de contact que les services de push peuvent joindre si quelque chose tourne mal. Personne ne la vérifie. |
PUSH_CONTENT | full | full met le titre de la tâche dans la notification, minimal envoie « Task completed » et rien d'identifiant. |
Dimensionnement des processus
| Variable | Défaut | Ce qu'elle fait |
|---|---|---|
RAILS_MAX_THREADS | 5 | Threads Puma par processus, et taille du pool de connexions à la base comme à Redis. |
WEB_CONCURRENCY | 0 | Processus worker de Puma. Zéro fait tourner un seul processus, ce qui est la bonne réponse sur une petite machine. |
SIDEKIQ_CONCURRENCY | 5 | Threads du processus Sidekiq. Envoyer des notifications est le seul travail qui existe. |