Aller au contenu

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.

dokploy logo

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 :

dokploy architecture

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

Documentation ACL HAPROXY

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) :

dockploy add

Puis CREATE -> Application :

create app dokploy

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.

deployment

Puis Deploy

On va configurer l'adresse pour accéder à l'application.

ingress 0

ingress 1

On décoche la génération d'un certificat, HAPROXY s'en charge pour nous.

tadam

Documentation

La documentation officielle est ici, je dois encore creuser cet outil.