Skip to content

Déploiement

pedrokarim edited this page Jun 11, 2026 · 1 revision

Déploiement

La production se fait via Docker (image Bun standalone). Un mécanisme de déploiement par cron (pull-based) permet les mises à jour automatiques.

Avec Docker Compose

Prérequis

Docker + Docker Compose sur le serveur.

Étapes

git clone https://github.com/pedrokarim/sharex-manager.git
cd sharex-manager
cp .env.example .env          # éditez AUTH_SECRET, AUTH_URL, domaines…
mkdir -p config data uploads  # volumes persistants
docker compose up -d --build

Points clés du docker-compose.yml

  • Service sharex-manager, build target: runner (image oven/bun:1, commande bun server.js).
  • Ports : ${PORT:-3000}:${PORT:-3000}.
  • env_file: .env + variables explicites : AUTH_SECRET, AUTH_URL, NEXT_PUBLIC_API_URL, NEXT_PUBLIC_IMAGE_DOMAIN, NEXT_PUBLIC_APP_DOMAIN, TZ=Europe/Paris.
  • restart: unless-stopped, user: "${UID:-1000}:${GID:-1000}".
  • Volumes persistants : ./config, ./uploads (:delegated), ./data, + cache next-cache.

💾 Sauvegardez uploads/, data/ et config/ : ils contiennent vos fichiers, vos utilisateurs/clés et votre configuration.

Mise à jour automatique par cron (pull-based)

Le script bun run deploy:cron (= cli/commands/deploy-cron.ts) compare la branche locale au remote et redéploie uniquement s'il y a du nouveau.

Test manuel (depuis la racine du dépôt)

bun run deploy:cron

Exemple de cron (toutes les 2 h)

0 */2 * * * cd /chemin/vers/sharex-manager && bun run deploy:cron >> /var/log/sharex-manager-deploy.log 2>&1

Comment ça marche

Pose un verrou (avec détection de verrou périmé) → git fetch → compare HEAD vs <remote>/<branch>. Si identiques → « aucun changement ». Sinon → git checkout -fgit reset --hardgit clean -fd (option) → docker compose stop (option) → docker compose build (option) → docker compose up -d --remove-orphans.

Variables d'environnement de réglage (défauts)

Variable Défaut
DEPLOY_BRANCH main
DEPLOY_REMOTE origin
DEPLOY_LOCK_FILE .deploy.lock
DEPLOY_LOCK_STALE_MINUTES 60
DEPLOY_GIT_CLEAN true
DEPLOY_DOCKER_COMPOSE_COMMAND docker compose
DEPLOY_DOCKER_COMPOSE_FILE docker-compose.yml
DEPLOY_DOCKER_STOP true
DEPLOY_DOCKER_BUILD true
DEPLOY_DOCKER_BUILD_NO_CACHE false

Flags CLI équivalents : --branch, --remote, --lock-file, --lock-stale-minutes, --compose-command, --compose-file, --no-clean, --no-stop, --no-build, --build-no-cache.

🔐 Bonnes pratiques : lancez le cron en non-root, protégez la branche déployée (tout ce qui y arrive part en prod), et sauvegardez les volumes.

➡️ Avant exposition publique, parcourez les points de durcissement de la FAQ et de la Référence API.

Clone this wiki locally