Node.jsへのデプロイ
EmDashはNode.js 22+をサポートする任意のホスティングプラットフォームで動作します。このガイドでは、SQLiteとローカルまたはS3互換ストレージを使用した一般的なプロバイダーへのデプロイについて説明します。
- Node.js v22.12.0 以上
- Node.jsホスティングプロバイダーまたはVPS
Node.jsデプロイメント用にEmDashを設定します:
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", }), }), ],});ビルドと実行
Section titled “ビルドと実行”- プロジェクトをビルドします:
npm run build-
データベースを初期化します:
Terminal window npx emdash init --database ./data/emdash.db -
サーバーを起動します:
Terminal window node ./dist/server/entry.mjs
サーバーはデフォルトで http://localhost:4321 で実行されます。
本番環境ストレージ
Section titled “本番環境ストレージ”本番環境では、ローカルファイルシステムの代わりにS3互換ストレージを使用します:
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 }), }), ],});Docker
Section titled “Docker”Dockerfileを作成します:
dockerfile title="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"]ビルドして実行します:
docker build -t my-emdash-site .docker run -p 4321:4321 -v emdash-data:/app/data my-emdash-site本番環境に必須
Section titled “本番環境に必須”| 変数 | 説明 |
|---|---|
EMDASH_AUTH_SECRET | セッションクッキーと認証トークンに署名します。npx emdash auth secretで生成します。 |
EMDASH_PREVIEW_SECRET | 下書きコンテンツのプレビューURLに署名します。npx emdash auth secretで生成します。 |
データベースとストレージ
Section titled “データベースとストレージ”| 変数 | 説明 | 例 |
|---|---|---|
DATABASE_PATH | SQLiteデータベースへのパス | /data/emdash.db |
HOST | サーバーホスト | 0.0.0.0 |
PORT | サーバーポート | 4321 |
S3_ENDPOINT | S3エンドポイントURL | https://xxx.r2.cloudflarestorage.com |
S3_BUCKET | S3バケット名 | my-media-bucket |
S3_ACCESS_KEY_ID | S3アクセスキー | AKIA... |
S3_SECRET_ACCESS_KEY | S3シークレットキー | ... |
S3_PUBLIC_URL | メディア用の公開URL | https://cdn.example.com |
永続ストレージ
Section titled “永続ストレージ”SQLiteには永続的なディスクストレージが必要です。ホスティングプラットフォームが以下を提供していることを確認してください:
- マウントされたボリュームまたは永続ディスク
- データベースディレクトリへの書き込みアクセス
- データベースファイルのバックアップメカニズム
ヘルスチェック
Section titled “ヘルスチェック”ロードバランサー用のヘルスチェックエンドポイントを追加します:
astro title="src/pages/health.ts"export const GET = () => { return new Response("OK", { status: 200 });};プラットフォームを設定して、生存確認プローブのために /health をチェックします。