Auto-héberger Unitae sur un VPS en 10 minutes
8 min de lecture
Vous voulez savoir exactement où vivent les données de votre assemblée. Pas une promesse d’un hébergeur — vous voulez vous connecter en SSH à la machine et voir la base de données vous-même. Bien. Dans dix minutes, vous aurez une instance Unitae fonctionnelle sur votre propre serveur, derrière votre propre domaine, avec toutes les fonctionnalités déverrouillées. Le code source est sur GitHub sous AGPL-3.0, et la version auto-hébergée est identique à la version gérée.
Ce dont vous avez besoin
Un VPS avec au moins 1 vCPU, 1 Go de RAM et 20 Go de stockage. Un Hetzner CX21 à environ 4 €/mois convient. Ubuntu 22.04 LTS ou Debian 12 recommandé. Un nom de domaine avec un enregistrement A, Docker et Docker Compose installés, et un fournisseur SMTP (le niveau gratuit de Resend suffit).
Sur votre machine locale, vous n’avez besoin que d’un accès SSH et d’un éditeur de texte. Tout le reste se passe sur le serveur.
Cloner et configurer
Connectez-vous en SSH, clonez le dépôt, copiez le fichier d’environnement. Définissez APP_URL (ex. https://unitae.votre-assemblee.org). Générez SESSION_SECRET avec openssl rand -hex 32. Configurez SMTP_HOST, SMTP_PORT, SMTP_USER et SMTP_PASS. DATABASE_URL et REDIS_URL sont préconfigurés pour les conteneurs Docker Compose.
# Clone the repository
git clone https://github.com/Unitae/unitae.git && cd unitae
# Copy the environment file
cp .env.example .env
# Edit .env with your values
nano .env
Démarrer Unitae
Lancez docker compose up -d pour démarrer la pile. Appliquez les migrations et initialisez les données. Unitae tourne sur le port 8080. En cas de problème, docker compose logs web affiche les journaux. Problèmes courants : DATABASE_URL mal formé ou SESSION_SECRET manquant.
docker compose up -d
docker compose exec app pnpm prisma migrate deploy
docker compose exec app pnpm prisma db seed
✓ Unitae is running on localhost:8080
Ajouter votre domaine et TLS
Caddy est le reverse proxy recommandé — il gère automatiquement les certificats Let’s Encrypt. Créez un Caddyfile avec une ligne : votre domaine en proxy vers localhost:8080. Démarrez Caddy, pointez votre enregistrement DNS, et HTTPS est actif en quelques minutes.
Assurez-vous que les ports 80 et 443 sont ouverts dans votre pare-feu. Fermez le port 8080 au trafic externe maintenant qu’il est proxifié.
Première connexion et configuration
Naviguez vers votre domaine. L’écran de configuration vous guide pour créer votre compte administrateur et configurer votre assemblée. Parcourez la checklist : définissez la structure territoriale, invitez le préposé aux territoires et le secrétaire, créez votre première carte.
Invitez d’autres membres depuis la section Proclamateurs. Chaque invitation envoie un email avec un lien de création de compte. Les membres reçoivent un accès adapté à leur rôle.
Maintenir l’instance à jour
Mise à jour en trois étapes : git pull, docker compose up -d --build, puis migrations. Abonnez-vous aux releases GitHub pour être notifié. Pour les sauvegardes, ajoutez un cron quotidien qui exporte PostgreSQL. Conservez au moins sept jours de sauvegardes. Vous avez désormais une instance entièrement vôtre — et si vous contribuez, chaque assemblée utilisant Unitae en bénéficie.