Aller au contenu

Déploiement

RandomLock est déployé sur le serveur avec Dokploy. L'image est construite par Railpack à partir du dépôt GitHub. Chaque push sur main redéploie automatiquement.

Configuration Dokploy

Paramètre Valeur
Projet / environnement randomlock / production
Application front
Source GitHub DuncanCos/RandomDeadlock, branche main
Type de build Railpack (version 0.2.2)
Build path /
Variables d'environnement Aucune (ni variable d'env, ni build arg)
Domaine randomlock.dunkan.xyz, chemin / vers le port 80 du conteneur
HTTPS Oui, certificat Let's Encrypt
Auto deploy Activé (déclenché par un push)
Réplicas 1

Chaîne de déploiement

flowchart LR
  A["git push origin main"] --> B["GitHub<br/>DuncanCos/RandomDeadlock"]
  B -->|auto deploy| C[Dokploy]
  C --> D["Railpack<br/>install + npm run build"]
  D --> E["Conteneur Caddy<br/>sert dist/ sur :80"]
  U([Navigateur]) -->|"HTTPS randomlock.dunkan.xyz"| F["Reverse proxy Dokploy<br/>(Let's Encrypt)"]
  F --> E

Ce que fait Railpack

Pour un projet Node qui utilise Vite, Railpack applique son mode « site statique » (doc Railpack Node) :

  1. Il détecte Vite grâce au fichier vite.config.js.
  2. Il installe les dépendances. Aucun lockfile pnpm, yarn ou bun n'est présent, donc il utilise npm.
  3. Il lance le script build (vite build), qui produit dist/.
  4. Il sert dist/ avec Caddy et son Caddyfile par défaut.

En production, une URL inconnue renvoie index.html avec un code 200. Comme l'appli n'a pas de routeur, cela ne change rien pour l'utilisateur.

Version de Node au build

Le dépôt ne fixe pas de version de Node (pas de engines, .nvmrc ni .node-version), donc Railpack prend sa version par défaut. Pour la fixer, on peut ajouter "engines": { "node": "22.x" } dans package.json ou définir la variable RAILPACK_NODE_VERSION dans Dokploy.

Redéployer

git push origin main

Dokploy reçoit l'événement GitHub, puis reconstruit et redéploie l'application.

  1. Ouvrir https://dokploy.dunkan.xyz.
  2. Aller dans le projet randomlock, environnement production, puis l'application front.
  3. Cliquer sur Deploy.
  4. Suivre le build dans l'onglet Deployments.
# Lancer un déploiement
dokploy POST application.deploy '{"applicationId":"<applicationId>"}'

# Statut de l'application (done / running / error)
dokploy GET 'application.one?applicationId=<applicationId>' | jq -r .applicationStatus

# Derniers déploiements
dokploy GET 'application.one?applicationId=<applicationId>' \
  | jq '.deployments[] | {title, status, createdAt}'

Vérifier après un déploiement

# La page répond
curl -sI https://randomlock.dunkan.xyz | head -1          # HTTP/2 200

# Un asset est bien servi (ici le nom contient un « & »)
curl -sI "https://randomlock.dunkan.xyz/Deadlock_Render_Heroes/Mo_&_Krill_Render.png" | head -1

Ensuite, ouvrir le site et cliquer plusieurs fois sur Choisir à nouveau pour vérifier que les images s'affichent.

Revenir en arrière

L'application suit directement main. Pour annuler un changement, il suffit d'annuler le commit et de pousser :

git revert <sha>
git push origin main

Dépannage

Symptôme Piste
Le build échoue Lire les logs du déploiement dans Dokploy (onglet Deployments). Vérifier que npm run build passe en local.
Un héros s'affiche sans image Le nom de fichier ne respecte pas la convention, ou la casse est différente. Le serveur Linux est sensible à la casse. Voir Assets.
Le site ne répond plus Vérifier le statut de l'application (applicationStatus) et le domaine dans Dokploy.