Aller au contenu

Déployer sur Node.js

EmDash fonctionne sur toute plateforme d’hébergement Node.js 22+. Ce guide couvre le déploiement sur des fournisseurs courants en utilisant SQLite et un stockage local ou compatible S3.

  • Node.js v22.12.0 ou supérieur
  • Un fournisseur d’hébergement Node.js ou un VPS

Configurez EmDash pour un déploiement Node.js :

astro.config.mjs
import { defineConfig } from "astro/config";
import node from "@astrojs/node";
import emdash, { local, s3 } from "emdash/astro";
import { sqlite } from "emdash/db";
export default defineConfig({
output: "server",
adapter: node({ mode: "standalone" }),
integrations: [
emdash({
database: sqlite({ url: "file:./data/emdash.db" }),
storage: local({
directory: "./data/uploads",
baseUrl: "/_emdash/api/media/file",
}),
}),
],
});
  1. Construisez le projet :
Fenêtre de terminal
npm run build
  1. Initialisez la base de données :

    Fenêtre de terminal
    npx emdash init --database ./data/emdash.db
  2. Démarrez le serveur :

    Fenêtre de terminal
    node ./dist/server/entry.mjs

Le serveur s’exécute sur http://localhost:4321 par défaut.

Pour la production, utilisez un stockage compatible S3 au lieu du système de fichiers local :

js title="astro.config.mjs"
import emdash, { s3 } from "emdash/astro";
export default defineConfig({
integrations: [
emdash({
database: sqlite({ url: `file:${process.env.DATABASE_PATH}` }),
storage: s3({
endpoint: process.env.S3_ENDPOINT,
bucket: process.env.S3_BUCKET,
accessKeyId: process.env.S3_ACCESS_KEY_ID,
secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
publicUrl: process.env.S3_PUBLIC_URL, // Optional CDN URL
}),
}),
],
});

Créez un Dockerfile :

dockerfile title="Dockerfile"
FROM node:22-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:22-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./
ENV HOST=0.0.0.0
ENV PORT=4321
EXPOSE 4321
CMD ["node", "./dist/server/entry.mjs"]

Construisez et exécutez :

Fenêtre de terminal
docker build -t my-emdash-site .
docker run -p 4321:4321 -v emdash-data:/app/data my-emdash-site
VariableDescription
EMDASH_AUTH_SECRETSigne les cookies de session et les jetons d’authentification. Générez avec npx emdash auth secret.
EMDASH_PREVIEW_SECRETSigne les URL de prévisualisation pour le contenu en brouillon. Générez avec npx emdash auth secret.
VariableDescriptionExemple
DATABASE_PATHChemin vers la base de données SQLite/data/emdash.db
HOSTHôte du serveur0.0.0.0
PORTPort du serveur4321
S3_ENDPOINTURL du point de terminaison S3https://xxx.r2.cloudflarestorage.com
S3_BUCKETNom du compartiment S3my-media-bucket
S3_ACCESS_KEY_IDClé d’accès S3AKIA...
S3_SECRET_ACCESS_KEYClé secrète S3...
S3_PUBLIC_URLURL publique pour les médiashttps://cdn.example.com

SQLite nécessite un stockage disque persistant. Assurez-vous que votre plateforme d’hébergement fournit :

  • Un volume monté ou un disque persistant
  • Un accès en écriture au répertoire de la base de données
  • Des mécanismes de sauvegarde pour le fichier de base de données

Ajoutez un point de terminaison de vérification de santé pour les équilibreurs de charge :

astro title="src/pages/health.ts"
export const GET = () => {
return new Response("OK", { status: 200 });
};

Configurez votre plateforme pour vérifier /health pour les sondes de vivacité.