Auf Node.js bereitstellen
EmDash läuft auf jeder Hosting-Plattform mit Node.js 22 oder höher. Diese Anleitung beschreibt ein typisches Deployment mit SQLite und lokalem oder S3-kompatiblem Speicher.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Node.js v22.12.0 oder höher
- Ein Node.js Hosting-Anbieter oder VPS
Konfiguration
Abschnitt betitelt „Konfiguration“Konfigurieren Sie EmDash für das Node.js Deployment:
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", }), }), ],});Bauen und ausführen
Abschnitt betitelt „Bauen und ausführen“- Bauen Sie das Projekt:
npm run build-
Initialisieren Sie die Datenbank:
Terminal-Fenster npx emdash init --database ./data/emdash.db -
Starten Sie den Server:
Terminal-Fenster node ./dist/server/entry.mjs
Der Server läuft standardmäßig unter http://localhost:4321.
Produktionsspeicher
Abschnitt betitelt „Produktionsspeicher“Für die Produktion verwenden Sie S3-kompatiblen Speicher anstelle des lokalen Dateisystems:
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 }), }), ],});Erstellen Sie eine Dockerfile:
FROM node:22-alpine AS builderWORKDIR /appCOPY package*.json ./RUN npm ciCOPY . .RUN npm run build
FROM node:22-alpineWORKDIR /appCOPY --from=builder /app/dist ./distCOPY --from=builder /app/node_modules ./node_modulesCOPY --from=builder /app/package.json ./
ENV HOST=0.0.0.0ENV PORT=4321
EXPOSE 4321CMD ["node", "./dist/server/entry.mjs"]Bauen und ausführen:
docker build -t my-emdash-site .docker run -p 4321:4321 -v emdash-data:/app/data my-emdash-siteUmgebungsvariablen
Abschnitt betitelt „Umgebungsvariablen“Erforderlich für die Produktion
Abschnitt betitelt „Erforderlich für die Produktion“| Variable | Beschreibung |
|---|---|
EMDASH_AUTH_SECRET | Signiert Session-Cookies und Auth-Tokens. Generieren mit npx emdash auth secret. |
EMDASH_PREVIEW_SECRET | Signiert Vorschau-URLs für Entwurfsinhalte. Generieren mit npx emdash auth secret. |
Datenbank und Speicher
Abschnitt betitelt „Datenbank und Speicher“| Variable | Beschreibung | Beispiel |
|---|---|---|
DATABASE_PATH | Pfad zur SQLite-Datenbank | /data/emdash.db |
HOST | Server-Host | 0.0.0.0 |
PORT | Server-Port | 4321 |
S3_ENDPOINT | S3-Endpunkt-URL | https://xxx.r2.cloudflarestorage.com |
S3_BUCKET | S3-Bucket-Name | my-media-bucket |
S3_ACCESS_KEY_ID | S3-Zugangsschlüssel | AKIA... |
S3_SECRET_ACCESS_KEY | S3-Geheimschlüssel | ... |
S3_PUBLIC_URL | Öffentliche URL für Medien | https://cdn.example.com |
Persistenter Speicher
Abschnitt betitelt „Persistenter Speicher“SQLite benötigt persistenten Datenträgerspeicher. Stellen Sie sicher, dass Ihre Hosting-Plattform Folgendes bietet:
- Einen gemounteten Volume oder persistenten Datenträger
- Schreibzugriff auf das Datenbankverzeichnis
- Backup-Mechanismen für die Datenbankdatei
Health-Checks
Abschnitt betitelt „Health-Checks“Fügen Sie einen Health-Check-Endpunkt für Load-Balancer hinzu:
export const GET = () => { return new Response("OK", { status: 200 });};Konfigurieren Sie Ihre Plattform so, dass sie /health für Liveness-Probes überprüft.