手动将EmDash部署到自己的服务器上面的通用方法分享

EmDash 支持手动部署到任意自己的服务器(VPS、独立主机、云服务器等),使用 Node.js + SQLite 模式(无需 Cloudflare)。 它基于 Astro 框架,打包后就是一个标准的 Node.js 服务端应用(dist/server/entry.mjs),非常适合自托管。

通用部署方法

以下是两种最常用、最推荐的手动部署方式(2026 年最新 v0.x 版本通用):

前提条件(所有方式通用)

  • 服务器:Linux(推荐 Ubuntu/Debian/CentOS)或任意支持 Node.js 的系统
  • Node.js 版本:v22 LTS 或更高(强烈推荐 22.15+)
  • pnpm(推荐)或 npm(npm install -g pnpm
  • 持久化存储目录(存放 SQLite 数据库,不能和代码部署目录混在一起,否则更新时会被覆盖)
  • 域名 + HTTPS(Passkey 登录要求 HTTPS,生产环境必须)
  • 端口:默认 4321(可改)

方式一:纯 Node.js 手动部署(推荐 VPS 用户,最灵活)

  1. 创建项目(选择 Node.js 模板) 在服务器上执行:

    Bash
    npm create emdash@latest my-site
    • 项目名:my-site(可自定义)
    • 部署目标:选择 “Node.js”(不是 Cloudflare)
    • 模板:选 blog / marketing / portfolio 等
    Bash
    cd my-site
    pnpm install   # 或 npm install
  2. 配置 Astro(重要!) 编辑 astro.config.mjs,确保是 server 模式 + Node standalone:

    JavaScript
    import { defineConfig } from 'astro/config';
    import node from '@astrojs/node';
    import emdash from 'emdash';
    
    export default defineConfig({
      output: 'server',
      adapter: node({ mode: 'standalone' }),
      integrations: [emdash()],
    });
  3. 生成密钥并设置环境变量

    Bash
    npx emdash auth secret

    把生成的密钥添加到 .env 文件(或系统环境变量):

    env
    EMDASH_AUTH_SECRET=你的密钥1
    EMDASH_PREVIEW_SECRET=你的密钥2
    DATABASE_PATH=/var/data/emdash/emdash.db # 必须是持久化路径
    HOST=0.0.0.0
    PORT=4321
    NODE_ENV=production
  4. 创建持久化数据库目录

    Bash
    mkdir -p /var/data/emdash
    chown -R $USER:$USER /var/data/emdash
  5. 构建项目

    Bash
    pnpm build   # 或 npm run build
  6. 初始化数据库 + 种子数据

    Bash
    pnpm bootstrap   # 或 npx emdash init && npx emdash seed
  7. 启动服务(推荐用 PM2 或 systemd)

    推荐 PM2(最简单)

    Bash
    npm install -g pm2
    pm2 start dist/server/entry.mjs --name emdash \
      --env production \
      -- --port 4321
    pm2 save
    pm2 startup

    或者 systemd(系统级服务): 创建 /etc/systemd/system/emdash.service

    ini
    [Unit]
    Description=EmDash CMS
    After=network.target
    
    [Service]
    Type=simple
    User=www-data   # 或你的用户
    WorkingDirectory=/path/to/my-site
    ExecStart=/usr/bin/node dist/server/entry.mjs
    Restart=always
    EnvironmentFile=/path/to/my-site/.env
    LimitNOFILE=65535
    
    [Install]
    WantedBy=multi-user.target
    Bash
    sudo systemctl daemon-reload
    sudo systemctl enable --now emdash
  8. 设置反向代理(Nginx 推荐) 示例 Nginx 配置(/etc/nginx/sites-available/emdash):

    nginx
    server {
        listen 443 ssl;
        server_name your-domain.com;
    
        ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
    
        location / {
            proxy_pass http://127.0.0.1:4321;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }

    重载 Nginx:sudo nginx -s reload

访问 https://your-domain.com/_emdash/admin 完成首次设置向导(Passkey 注册)。

方式二:使用 Docker 部署(最推荐,隔离最好)

仓库自带 Dockerfilecompose.yaml,超级简单:

Bash
# 1. 克隆或创建项目后
cd my-site

# 2. 启动(自动 build + 运行)
docker compose up -d --build

compose.yaml 默认会映射端口、持久化 SQLite 卷。 你也可以直接用官方仓库的 compose.yaml 启动演示站点。

常见问题 & 注意事项

 

 

 

 

在宝塔面板使用 Docker 功能部署 EmDash的方法

 

在宝塔面板使用 Docker 功能部署 EmDash(Node.js 模式)

EmDash 官方提供了 Dockerfilecompose.yaml,非常适合宝塔的 Compose 项目 部署。下面是 2026 年最新 v0.1.x 版本 的实用教程,已在宝塔面板(推荐 8.x+ 版本)上验证过。

前提条件

  • 宝塔面板已安装 Docker 插件(软件商店 → 搜索 “Docker” → 一键安装)
  • 宝塔已安装 Node.js 版本管理器(用于创建项目,推荐 Node 22 LTS)
  • 服务器端口 4321 未被占用(可自定义)
  • 准备好域名 + 宝塔 SSL 证书(生产环境必须 HTTPS)

步骤 1:创建 EmDash 项目(在服务器上生成代码)

  1. 打开宝塔 终端(或 SSH 登录)。
  2. 执行以下命令创建项目:
    Bash
    mkdir -p /www/wwwroot/emdash && cd /www/wwwroot/emdash
    npm create emdash@latest . -- --yes --template blog   # 可选模板:blog / marketing 等
    • 部署目标选择 Node.js(不是 Cloudflare)。
  3. 进入项目目录:
    Bash
    cd /www/wwwroot/emdash

步骤 2:生成密钥并创建持久化数据目录

Bash
# 生成两个密钥(复制保存好)
npx emdash auth secret
npx emdash auth secret

创建持久化目录(重要!数据库必须持久化):

Bash
mkdir -p /www/docker/emdash/data
chmod -R 777 /www/docker/emdash/data

在项目根目录新建 .env 文件(宝塔文件管理器 → 新建文件):

env
EMDASH_AUTH_SECRET=上面生成的第一个密钥
EMDASH_PREVIEW_SECRET=上面生成的第二个密钥
DATABASE_PATH=/app/data/emdash.db
HOST=0.0.0.0
PORT=4321
NODE_ENV=production

步骤 3:使用宝塔 Docker Compose 部署

  1. 打开宝塔左侧 DockerCompose 项目添加项目

  2. 项目名称:填 emdash(随意)。

  3. Compose 文件来源 选择 从目录导入

    • 目录路径填:/www/wwwroot/emdash
    • 宝塔会自动读取项目里的 compose.yaml
  4. 如果没有自动读取,可手动编辑 compose.yaml(推荐使用绑定挂载方式,更直观):

    compose.yaml 内容替换为下面(已优化适配宝塔):

    YAML
    services:
      emdash:
        build: .
        ports:
          - "4321:4321"
        volumes:
          - /www/docker/emdash/data:/app/data   # 关键:持久化数据
        restart: unless-stopped
        environment:
          - EMDASH_AUTH_SECRET=${EMDASH_AUTH_SECRET}
          - EMDASH_PREVIEW_SECRET=${EMDASH_PREVIEW_SECRET}
          - DATABASE_PATH=/app/data/emdash.db
          - HOST=0.0.0.0
          - PORT=4321
  5. 点击 保存并启动(或 部署)。

  6. 等待构建完成(第一次会下载 node:22-alpine 并构建,大概 1-3 分钟)。

步骤 4:设置 Nginx 反向代理(宝塔推荐方式)

  1. 宝塔 网站添加站点(填你的域名)。
  2. 站点创建后,点击 设置反向代理添加反向代理
    • 代理目录:/
    • 目标 URL:http://127.0.0.1:4321
    • 发送域名:保持默认
  3. 开启 SSL(申请或导入证书)。
  4. 保存后访问 https://你的域名/_emdash/admin 即可看到 EmDash 安装向导(Passkey 注册)。

常见问题 & 优化

  • 数据库丢失:必须使用上面 /www/docker/emdash/data 挂载目录,否则重启容器数据就没了。
  • 构建失败:确认项目目录里有 package.jsonastro.config.mjsDockerfile
  • 端口冲突:改 compose.yaml 中的 4321:4321 为其他端口(如 54321:4321),然后反向代理对应端口。
  • 更新 EmDash:进入项目目录 git pull(或重新 create)→ Docker Compose 项目 → 重建
  • 插件沙箱:Node.js + Docker 模式下插件在容器内运行,安全性比 Cloudflare Workers 稍低但完全够用。

部署完成后,你就可以直接在 EmDash 里使用 AI 代理(MCP)生成页面和功能了!

 

 

 

未经允许不得转载:泥人传说 » 手动将EmDash部署到自己的服务器上面的通用方法分享
分享到:
赞(0)
全球云加速,高防CDN,提供全球约60个地区或国家云服务器,三网CN2 GIA和VIP GIA专线,双ISP家宽静态住宅原生IP的服务器,满足您的多元化需求。

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址