Implantar no Node.js
O EmDash funciona em qualquer plataforma de hospedagem Node.js 22+. Este guia cobre a implantação em provedores comuns usando SQLite e armazenamento local ou compatível com S3.
Pré-requisitos
Seção intitulada “Pré-requisitos”- Node.js v22.12.0 ou superior
- Um provedor de hospedagem Node.js ou VPS
Configuração
Seção intitulada “Configuração”Configure o EmDash para implantação Node.js:
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", }), }), ],});Construir e Executar
Seção intitulada “Construir e Executar”- Construa o projeto:
npm run build-
Inicialize o banco de dados:
Terminal window npx emdash init --database ./data/emdash.db -
Inicie o servidor:
Terminal window node ./dist/server/entry.mjs
O servidor é executado em http://localhost:4321 por padrão.
Armazenamento em Produção
Seção intitulada “Armazenamento em Produção”Para produção, use armazenamento compatível com S3 em vez do sistema de arquivos 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 }), }), ],});Crie um 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"]Construa e execute:
docker build -t my-emdash-site .docker run -p 4321:4321 -v emdash-data:/app/data my-emdash-siteVariáveis de Ambiente
Seção intitulada “Variáveis de Ambiente”Obrigatórias para Produção
Seção intitulada “Obrigatórias para Produção”| Variável | Descrição |
|---|---|
EMDASH_AUTH_SECRET | Assina cookies de sessão e tokens de autenticação. Gere com npx emdash auth secret. |
EMDASH_PREVIEW_SECRET | Assina URLs de visualização para conteúdo em rascunho. Gere com npx emdash auth secret. |
Banco de Dados e Armazenamento
Seção intitulada “Banco de Dados e Armazenamento”| Variável | Descrição | Exemplo |
|---|---|---|
DATABASE_PATH | Caminho para o banco de dados SQLite | /data/emdash.db |
HOST | Host do servidor | 0.0.0.0 |
PORT | Porta do servidor | 4321 |
S3_ENDPOINT | URL do endpoint S3 | https://xxx.r2.cloudflarestorage.com |
S3_BUCKET | Nome do bucket S3 | my-media-bucket |
S3_ACCESS_KEY_ID | Chave de acesso S3 | AKIA... |
S3_SECRET_ACCESS_KEY | Chave secreta S3 | ... |
S3_PUBLIC_URL | URL pública para mídia | https://cdn.example.com |
Armazenamento Persistente
Seção intitulada “Armazenamento Persistente”O SQLite requer armazenamento em disco persistente. Certifique-se de que sua plataforma de hospedagem forneça:
- Um volume montado ou disco persistente
- Acesso de escrita ao diretório do banco de dados
- Mecanismos de backup para o arquivo do banco de dados
Verificações de Saúde
Seção intitulada “Verificações de Saúde”Adicione um endpoint de verificação de saúde para balanceadores de carga:
astro title="src/pages/health.ts"export const GET = () => { return new Response("OK", { status: 200 });};Configure sua plataforma para verificar /health para sondas de atividade.