← Retour au blog

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 petit VPS OVH ou Scaleway aux alentours de 4-5 €/mois convient (les données restent en France, cohérent avec l’hébergement managé). 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 UNITAE_BASE_URL (ex. https://unitae.votre-assemblee.org). Générez UNITAE_SESSION_SECRET et UNITAE_CRON_SECRET avec openssl rand -hex 32 — les deux doivent faire au moins 32 caractères. Définissez RESEND_API_KEY pour les emails de réinitialisation et notifications (créez un compte sur resend.com). DB_URL, DB_RUNTIME_URL et REDIS_HOST sont préconfigurés pour les conteneurs Docker Compose — choisissez simplement des valeurs solides pour DB_PASSWORD et REDIS_PASSWORD.

# 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. Le service migrate applique les migrations puis sort, ensuite web et worker démarrent. Unitae tourne sur le port 8080 — ouvrez-le dans un navigateur et l’assistant d’installation crée votre premier utilisateur et votre assemblée, en initialisant automatiquement les rôles et les gabarits de programmes par défaut. En cas de problème, docker compose logs web affiche les journaux. Problèmes courants : DB_URL mal formé ou UNITAE_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.

Prêt à le faire tourner vous-même ?

14 jours gratuits. Aucune carte bancaire. Sans engagement.