Retour au blog
article 18 mai 2026 AstroDirectusDocker

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: <uuid-postgres-container> DB_PORT: 5432 DB_DATABASE: directus DB_USER: directus DB_PASSWORD: <votre-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-<uuid>.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.

Stack Astro Directus Docker Coolify Hetzner
Tous les articles