L’une des raisons d’être de Fatplant est la souveraineté des données. Pas d’abonnement mensuel à une plateforme SaaS, pas de dépendance à un hébergeur qui peut fermer son service ou augmenter ses tarifs du jour au lendemain. Vos données, votre serveur, vos règles.
Ce guide vous accompagne pas à pas pour héberger Fatplant sur votre propre infrastructure.
Choisir son serveur
Pour une instance Fatplant légère (moins de 10 utilisateurs, quelques milliers d’articles), un VPS 4 Go de RAM et 2 vCPU est largement suffisant. Les hébergeurs comme Hetzner, OVHcloud, Scaleway ou DigitalOcean proposent ce type de configuration pour 5 à 15 €/mois.
Pour une rédaction plus active ou un trafic public important, visez 8 Go de RAM et un SSD d’au moins 50 Go. La base de données PostgreSQL et les fichiers uploadés sont les principales sources de consommation d’espace disque.
Système d’exploitation recommandé : Debian 12 ou Ubuntu 24.04 LTS. Ces distributions sont bien documentées, bénéficient de mises à jour de sécurité longue durée, et Docker s’y installe sans friction.
Préparer le serveur
Installer Docker
# Mettre à jour le système
sudo apt update && sudo apt upgrade -y
# Installer les dépendances
sudo apt install -y ca-certificates curl gnupg
# Ajouter le dépôt Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Installer Docker Engine et Docker Compose
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Ajouter votre utilisateur au groupe docker
sudo usermod -aG docker $USER
newgrp docker Configurer le pare-feu
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable Ne jamais exposer les ports des conteneurs directement (5432, 6379, 8000…) — laissez Nginx faire le reverse-proxy.
Déployer Fatplant
# Cloner le dépôt
sudo git clone https://github.com/fatplant/fatplant.git /opt/fatplant
cd /opt/fatplant
# Configurer l'environnement
sudo cp .env.example .env
sudo nano .env Les variables minimales à personnaliser :
APP_URL,ADMIN_URL,FRONTEND_URL— vos domainesDATABASE_URL— connexion PostgreSQL (le conteneurdbest défini dans docker-compose)APP_SECRET— générez une valeur aléatoire avecopenssl rand -hex 32
Générez ensuite les clés JWT :
sudo mkdir -p /opt/fatplant/config/jwt
sudo openssl genrsa -out /opt/fatplant/config/jwt/private.pem 4096
sudo openssl rsa -pubout -in /opt/fatplant/config/jwt/private.pem
-out /opt/fatplant/config/jwt/public.pem Démarrez les services :
cd /opt/fatplant
docker compose up -d Obtenir un certificat TLS avec Let’s Encrypt
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d monmedia.fr -d admin.monmedia.fr -d api.monmedia.fr -d yjs.monmedia.fr Certbot configure automatiquement Nginx pour le HTTPS et planifie le renouvellement automatique.
Bonnes pratiques de maintenance
Sauvegardes automatiques
Ne négligez jamais les sauvegardes. Créez un script simple :
#!/bin/bash
# /opt/scripts/backup.sh
DATE=$(date +%Y%m%d_%H%M%S)
# Sauvegarde PostgreSQL
docker compose -C /opt/fatplant exec -T db
pg_dump -U fatplant fatplant | gzip > /opt/backups/db_$DATE.sql.gz
# Sauvegarde des uploads
tar czf /opt/backups/uploads_$DATE.tar.gz /opt/fatplant/data/uploads/
# Nettoyage des sauvegardes de plus de 30 jours
find /opt/backups -mtime +30 -delete Planifiez-le toutes les nuits à 3h :
echo "0 3 * * * root /opt/scripts/backup.sh" | sudo tee /etc/cron.d/fatplant-backup Mises à jour
Mettez à jour régulièrement, surtout pour les correctifs de sécurité :
cd /opt/fatplant
git pull origin main
docker compose pull
docker compose up -d
docker compose exec backend php bin/console doctrine:migrations:migrate --no-interaction Supervision
Installez Uptime Kuma (ou un service équivalent) pour être alerté si votre instance est indisponible. Configurez des sondes HTTP sur /api/health et /health.
Ce que le self-hosting vous apporte
- Contrôle total sur vos données et votre infrastructure
- Pas de limite arbitraire sur le nombre d’articles, d’utilisateurs ou de médias
- Personnalisation complète du comportement, des thèmes et des plugins
- Conformité RGPD facilitée : vous savez exactement où sont vos données
Le self-hosting demande un peu d’investissement initial, mais il se révèle économique sur le long terme et vous donne une tranquillité d’esprit que peu de solutions SaaS peuvent offrir.