Logo
Derniere etape. On prend un projet reel, on le deploie sur notre serveur, et chaque push met a jour l'app automatiquement.

La serie complete

  • Partie 1 : Installation Ubuntu Server + IP fixe + pare-feu
  • Partie 2 : SSH securise (cles + passphrase) + Cloudflare Tunnel
  • Partie 3 : Docker + Coolify
  • Partie 4 (cet article) : Deployer une vraie app

Ce qu'on va faire

On va deployer une application web complete avec :

  • Code source sur GitHub
  • Dockerfile pour la conteneurisation
  • Base de donnees PostgreSQL
  • Domaine personnalise avec HTTPS
  • Deploiement automatique a chaque git push

Je prends l'exemple d'une app Django (c'est ce que j'utilise pour mon portfolio), mais le process est le meme pour React, Node.js, Spring Boot, Flask, ou n'importe quoi.

Deploiement application web
Du code au deploiement en quelques minutes

Phase 1 — Preparer le Dockerfile

Ton projet doit avoir un Dockerfile a la racine. Voici un exemple pour Django :

FROM python:3.12-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

RUN python manage.py collectstatic --noinput

EXPOSE 8000

CMD ["gunicorn", "monprojet.wsgi:application", "--bind", "0.0.0.0:8000", "--workers", "3"]

Points importants :

  • python:3.12-slim : image legere, rapide a builder
  • collectstatic : genere les fichiers statiques au build
  • gunicorn : serveur de production (pas manage.py runserver !)
  • EXPOSE 8000 : le port que Coolify va utiliser

Pour une app Node.js/React

FROM node:20-alpine

WORKDIR /app

COPY package*.json ./
RUN npm ci --only=production

COPY . .
RUN npm run build

EXPOSE 3000

CMD ["node", "server.js"]
Regle d'or : si ca tourne avec docker build . && docker run -p 8000:8000 monapp sur ton PC, ca marchera sur Coolify.

Phase 2 — Creer l'application dans Coolify

  1. Ouvrir Coolify (http://192.168.1.80:8000 ou via ton domaine)
  2. Cliquer sur + New Resource > Application
  3. Choisir GitHub comme source
  4. Selectionner le repository et la branche (main)
  5. Build Pack : Dockerfile
  6. Cliquer sur Deploy

Coolify va : cloner le repo, builder l'image Docker, lancer le conteneur, et le rendre accessible.

Coolify new application setup
Configuration de l'application dans Coolify

Phase 3 — Configurer les variables d'environnement

  1. Dans Coolify, aller dans les Settings de l'app
  2. Section Environment Variables
  3. Ajouter tes variables
DATABASE_URL=postgresql://user:pass@db-uuid:5432/mydb
SECRET_KEY=une-cle-tres-longue-et-aleatoire
DEBUG=False
ALLOWED_HOSTS=monapp.mondomaine.com
Pour la DATABASE_URL : si tu as cree une base de donnees dans Coolify (Partie 3), elle te donne l'URL de connexion interne. Les conteneurs communiquent entre eux via le reseau Docker interne.

Phase 4 — Attacher un domaine

  1. Dans les settings de l'app : Domains
  2. Ajouter monapp.mondomaine.com
  3. Dans Cloudflare Tunnel, ajouter l'entree
  4. Relancer cloudflared : sudo systemctl restart cloudflared
  5. Attendre 1-2 minutes pour la propagation DNS
  - hostname: monapp.mondomaine.com
    service: http://localhost:80

Ouvre https://monapp.mondomaine.com — ton app est en ligne avec HTTPS.


Phase 5 — Deploiement automatique (CI/CD)

C'est la ou la magie opere. Chaque fois que tu push sur main :

  1. GitHub envoie un webhook a Coolify
  2. Coolify pull le code, rebuild l'image Docker
  3. Le nouveau conteneur remplace l'ancien (zero downtime)
  4. Ton app est mise a jour en quelques minutes

Configurer le webhook

Normalement, si tu as connecte GitHub via l'app dans la Partie 3, le webhook est automatique. Sinon :

  1. Dans les settings de l'app Coolify, copier l'URL du webhook
  2. Sur GitHub : Settings > Webhooks > Add webhook
  3. Coller l'URL, choisir application/json, event push

Tester le deploiement automatique

Fais une modification dans ton code, puis :

git add .
git commit -m "test auto-deploy"
git push

Va dans Coolify > Deployments : tu verras le build en cours. En 2-3 minutes, ta modification est en ligne.

Git push auto deployment
Un git push et l'app se redploie automatiquement

Phase 6 — Monitoring et logs

Dans Coolify > ton app > Logs, tu vois les logs du conteneur en temps reel. Le dashboard montre aussi :

  • Le statut de l'app (running/stopped)
  • Le dernier deploiement et son resultat
  • L'utilisation memoire et CPU
  • L'historique de tous les deployments

Phase 7 — Deployer plusieurs projets

La beaute du setup, c'est que tu peux repeter les etapes 2 a 5 pour chaque nouveau projet. Sur mon serveur j'ai actuellement :

  • Mon portfolio (Django) — www.gilesjr.com
  • Une app e-commerce (Django) — chicandcheap.gilesjr.com
  • Une API Spring Boot — en interne
  • Des bases de donnees PostgreSQL et Redis

Tout ca sur un seul vieux PC HP. Chaque projet a son propre domaine, ses propres variables, et se deploie independamment.


Recapitulatif de la serie

En 4 articles, on est passe de un vieux PC qui traine a un serveur complet avec deploiement automatique.

  • Un serveur Ubuntu Server stable avec IP fixe
  • SSH securise (cles + passphrase + fail2ban + pare-feu)
  • Acces mondial via Cloudflare Tunnel (HTTPS gratuit)
  • Docker pour isoler chaque projet
  • Coolify pour gerer tout via une interface web
  • Deploiement automatique a chaque git push
  • Plusieurs apps et domaines sur le meme serveur

Cout total

  • Vieux PC : 0 (tu l'avais deja)
  • Ubuntu Server : Gratuit
  • Docker : Gratuit
  • Coolify : Gratuit (open-source)
  • Cloudflare Tunnel : Gratuit
  • Nom de domaine : ~10 USD/an
  • Electricite : variable (mais le PC consomme peu)
  • Total : ~10 USD/an

Compare ca a un VPS (5-20 USD/mois) ou a un PaaS cloud (qui monte vite avec plusieurs apps)...

Home server setup final
Ton propre cloud, a la maison, pour presque rien

Pour aller plus loin

  • Sauvegardes : configurer des backups automatiques de tes bases de donnees
  • Monitoring : ajouter Uptime Kuma pour surveiller que tes apps sont en ligne
  • Notifications : configurer Coolify pour t'envoyer un message si un deploy echoue
  • Plusieurs serveurs : Coolify peut gerer des serveurs distants aussi

Conclusion

Ce setup, c'est celui que j'utilise au quotidien. Mon portfolio, mes projets clients, mes experimentations — tout tourne sur ce vieux PC. C'est fiable, c'est gratuit, et j'ai le controle total.

Le self-hosting n'est pas plus complique que le cloud. C'est juste different. Et une fois que c'est en place, tu ne reviens plus en arriere.


Toute la serie est terminee ! Si tu as des questions, des retours, ou si tu veux que j'ecrive sur un sujet en particulier, dis-le moi en commentaire.

Partager :

Laisser un commentaire

Les champs marqués d'un astérisque (*) sont obligatoires !