Retour au blog
article 18 mai 2026

Déployer Astro + Directus sur Hetzner avec Coolify

Tutoriel complet pour déployer une stack Astro SSR + Directus CMS + PostgreSQL sur un VPS Hetzner en utilisant Coolify comme PaaS self-hosted.

## Pourquoi Hetzner + Coolify ? Hetzner propose des VPS performants à des prix imbattables (à partir de 4€/mois pour un CX22 avec 2 vCPU et 4 Go de RAM). Coolify est un PaaS open-source self-hosted qui donne une expérience proche de Vercel/Railway mais sur votre propre infrastructure. ## Architecture déployée ` Hetzner VPS (Ubuntu 24.04) └── Docker ├── coolify-proxy (Traefik v3) — reverse proxy + SSL automatique ├── PostgreSQL 16 — base de données Directus ├── Directus 11 — CMS headless └── Astro SSR (Node.js 22) — frontend ` ## Prérequis - VPS Hetzner avec Ubuntu 24.04 (CX22 minimum recommandé) - Coolify installé via le script officiel - Repo GitHub avec votre projet Astro - GitHub App configurée dans Coolify pour le déploiement automatique ## Étapes clés ### 1. PostgreSQL via Coolify Créer une base de données PostgreSQL depuis l'interface Coolify. Notez l'URL de connexion interne (format postgres://user:pass@container-name:5432/db). ### 2. Directus avec Docker Compose Coolify supporte les services Docker Compose. Configurez les variables d'env Directus pour pointer sur le PostgreSQL interne : `yaml DB_CLIENT: pg DB_HOST: DB_PORT: 5432 DB_DATABASE: directus DB_USER: directus DB_PASSWORD: ` ### 3. Astro avec Dockerfile multi-stage `dockerfile FROM node:22-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build FROM node:22-alpine AS runtime WORKDIR /app COPY --from=builder /app/dist ./dist COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/package.json ./package.json ENV HOST=0.0.0.0 ENV PORT=4321 EXPOSE 4321 CMD ["node", "./dist/server/entry.mjs"] ` ### 4. Variables d'environnement Astro Dans Coolify, configurez les variables d'env pour pointer sur votre Directus prod : ` DIRECTUS_URL=http://directus-.votre-ip.sslip.io DIRECTUS_TOKEN=votre-token-admin PUBLIC_SITE_URL=https://votre-domaine.com ` ## Résultat Webhook GitHub déclenche un build automatique à chaque push sur main. Traefik gère le SSL Let's Encrypt automatiquement dès que vous configurez un vrai domaine.
Built with Astro Directus Docker Coolify Hetzner