Installation
Quatre façons de déployer Tick&
Tick& s'auto-héberge. Deux dépendances seulement — PostgreSQL et Redis, toutes deux libres — et quatre chemins d'installation selon ce que votre organisation autorise sur ses serveurs. Deux d'entre eux ne demandent aucun moteur de conteneurs.
Conteneurs — Docker ou Podman
Le chemin le plus court : un fichier compose, cinq services, rien à compiler.
Ce que fait le compose
PostgreSQL et Redis d'abord, puis un service dédié qui applique les migrations une seule fois et rend la main, puis l'API, puis l'interface. Deux conteneurs lancés ensemble ne peuvent pas jouer la même migration en parallèle.
Podman convient aussi
C'est souvent le moteur autorisé là où Docker ne l'est pas, puisqu'il tourne sans
démon privilégié. Remplacer docker compose par
podman compose suffit ; le reste est identique.
Images publiées
ghcr.io/tick0001/tick-api et tick-web, publiques, tirables
sans authentification. Épingler une version plutôt que suivre
latest : une montée de version doit rester une décision.
Linux, sans conteneur
Pour les organisations dont la politique interdit un moteur de conteneurs sur un serveur — ce qui reste courant en environnement régulé.
Ce qu'il faut
Node 22, PostgreSQL 18, Redis 7 et nginx, depuis les dépôts amont. Debian, Ubuntu, RHEL, Rocky et AlmaLinux sont couverts, avec les commandes exactes de chacun.
Archives autonomes
Chaque version publie une archive contenant le code compilé et ses dépendances. Le serveur n'a besoin ni de pnpm, ni d'un compilateur, ni du dépôt.
Unité systemd fournie
Compte de service dédié sans shell, secrets hors du fichier d'unité, et un durcissement qui ne laisse en écriture que le dossier des pièces jointes.
-
Le rôle propriétaire a besoin de
CREATEROLE. La migration initiale crée le rôle applicatif ; sans cet attribut elle échoue après avoir déjà appliqué une partie du schéma. C'est l'écart le plus fréquent avec un déploiement par conteneurs, où l'image PostgreSQL fait du propriétaire un superutilisateur sans qu'on l'ait demandé. - L'archive Linux est bâtie sur glibc. Elle couvre Debian, Ubuntu, RHEL, Rocky et SUSE, mais pas les distributions en musl comme Alpine : le module natif de hachage n'est pas le même. Sur Alpine, ce sont les images de conteneurs.
-
SELinux bloque le relais. En mode enforcing, nginx n'a pas le
droit d'ouvrir une connexion réseau, et le relais vers l'API échoue en 502 sans
explication lisible. Un
setseboolsuffit.
Cette procédure a été déroulée intégralement sur une Debian 12 vierge — paquets, migrations, création du premier compte, démarrage et connexion.
Windows Server
Pour les organisations qui n'exploitent pas de serveurs Linux. L'API tourne nativement, avec un point à trancher d'abord.
- Redis n'a pas de version Windows officielle, et il n'est pas optionnel : six files en dépendent, dont l'escalade des engagements de service. Trois options réelles — pointer un Redis existant du réseau, ce qui est souvent le plus propre ; Memurai, natif mais sous licence payante en production ; ou WSL2, avec la réserve qu'une politique interdisant Docker interdit souvent WSL2 pour la même raison.
- Le portage Microsoft de Redis est à écarter. Archivé, figé depuis 2016, il ne fournit pas les commandes dont dépendent les files. Le symptôme est une erreur obscure au premier travail mis en file, pas un refus au démarrage.
- Le reste passe sans difficulté. Les quatre extensions PostgreSQL requises sont livrées par l'installeur, l'API lit sa configuration depuis un fichier plutôt que des variables d'environnement, et le module natif de hachage existe en version Windows.
Dans tous les cas
Un terminateur TLS en amont
Tick& n'expose pas de TLS lui-même. Il attend derrière Caddy, Traefik, nginx ou un répartiteur d'entreprise. Le déployer sans, c'est faire voyager les mots de passe en clair.
Deux rôles PostgreSQL
Le propriétaire possède les tables et échappe au Row-Level Security ; il ne sert qu'aux migrations. Le rôle applicatif porte tout le trafic normal et y est soumis. Les intervertir désactiverait le cloisonnement en silence.
Une clé de chiffrement à sauvegarder à part
Elle chiffre les secrets d'annuaire et de collecteur stockés en base. La perdre les rend définitivement illisibles ; la ranger à côté de la sauvegarde annule l'intérêt de les avoir chiffrés.
La documentation détaillée est en français, dans le dépôt : déploiement par conteneurs, installation nue sur Linux, installation sur Windows Server.