Dokploy est une solution pour déployer vos applications
Dokploy est une solution de déploiement stable et facile à utiliser, conçue pour simplifier le processus de gestion des applications. Considérez Dokploy comme votre alternative gratuite et auto-hébergeable aux plateformes telles que Heroku, Vercel et Netlify, en tirant parti de la robustesse de Docker et de la flexibilité de Traefik.
Prérequis
Architecture
La compréhension de l'architecture de Dokploy est cruciale pour le déploiement et la mise à l'échelle des applications. Vous trouverez ci-dessous un diagramme illustrant les principaux composants :
Lorsque Dokploy est installé, il met automatiquement en place les composants suivants :
- Application Next.js : Sert d'interface frontale. L'utilisation de Next.js permet un rendu intégré côté serveur, rationalisant l'interface utilisateur et le backend en une seule application cohérente.
- Base de données PostgreSQL : C'est la base de données principale de Dokploy, choisie pour sa robustesse et son adoption généralisée. Elle stocke toutes les données de configuration et d'exploitation.
- Base de données Redis : Employée pour gérer les files d'attente de déploiement. Cela permet de s'assurer que plusieurs déploiements ne se déclenchent pas simultanément, ce qui pourrait entraîner une charge élevée sur le serveur et un gel potentiel.
- Traefik: Utilisé comme proxy inverse et équilibreur de charge. Traefik facilite le routage dynamique et la découverte de services, ce qui simplifie le processus de configuration en permettant une configuration déclarative via l'interface utilisateur.
Notre serveur "reverse proxy" fait office de ingress. Il fournit HTTPS pour les domaines suivants :
- *.kaze-cloud.fr
- *.dokploy.kaze-cloud.fr
Lorsqu'une requête est faite sur une URL qui est sur le domaine dokploy.kaze-cloud.fr
, les requêtes sont dirigées vers le serveur "Dokploy".
DNS
Il faut rajouter l'entrée DNS suivante :
CNAME *.dokploy kaze-cloud.fr
A kaze-cloud.fr 85.14.178.39
Loadbalancer HAPROXY + HTTPS
Lets encrypt
Il va falloir générer votre certificat wildcard avec Cerbot.
certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials cloudflareapi.txt \
--dns-cloudflare-propagation-seconds 60 \
-d '*dokploy.kaze-cloud.fr'
Puis il faut créer notre PEM :
cat /etc/letsencrypt/live/dokploy.kaze-cloud.fr/{fullchain.pem,privkey.pem} > /etc/haproxy/ssl/dokploy.kaze-cloud.fr.pem
Il se base sur la documentation : haproxy wildcard
HAProxy
Le fichier de configuration /etc/haproxy/haproxy.cfg
pour se connecter à l'interface de l'administration :
frontend http-front
bind *:80
# Redirection HTTP vers HTTPS
redirect scheme https code 301 if !{ ssl_fc }
frontend https-front
bind *:443 crt /etc/haproxy/ssl/dokploy.kaze-cloud.fr.pem
mode http
option httplog
# Block /swagger
acl block_api path_sub /swagger
http-request deny if block_api
# Domaine Name - ADMIN
acl ACL_dokploy hdr(host) -i dokploy.kaze-cloud.fr
use_backend dockploy-backend-admin if ACL_dokploy
# Wildcard redirection
acl ACL_dokploy_http hdr(host) -m sub .dokploy.kaze-cloud.fr
use_backend dockploy-backend-http if ACL_dokploy_http
backend dockploy-backend-admin
mode http
option forwardfor except 127.0.0.1
compression algo gzip
server dokploy.kaze-cloud.local 172.XX.X.X:3000
backend dockploy-backend-http
mode http
server dokploy.kaze-cloud.local 172.XX.X.X:80
Serveur
Pour garantir une expérience fluide avec Dokploy, votre serveur doit disposer d'au moins 2 Go de RAM, 4VCPU et de 30 Go d'espace disque. Cette spécification permet de gérer les ressources consommées par Docker pendant les constructions et d'éviter les blocages du système.
Dokploy se déploie avec le moteur de container de Docker.
On utilise directement le script d'installation :
curl -sSL https://dokploy.com/install.sh | sh
Deployer votre première installation
Après la bonne installation de votre instance de Dokploy et création de votre compte SUPERADMIN. Vous pouvez déployer une première application pour vérifier le fonctionnement.
On crée un projet qui va contenir une application avec ces services (apache, base de données, cache) :
Puis CREATE -> Application
:
Dokploy est capable de build votre projet depuis un référenciel de code, dans notre démonstration on reste sur une image docker déjà packager.
Puis Deploy
On va configurer l'adresse pour accéder à l'application.
On décoche la génération d'un certificat, HAPROXY s'en charge pour nous.
Documentation
La documentation officielle est ici, je dois encore creuser cet outil.