HedgeDoc 协作笔记平台搭建教程

HedgeDoc(前身为 CodiMD)是一款开源的实时协作 Markdown 笔记平台,支持多人同时编辑同一份文档。它非常适合团队协作、会议记录、知识库管理等场景。本文将详细介绍如何在搬瓦工 VPS 上通过 Docker 部署 HedgeDoc,并完成反向代理和基础配置。如果你还没有安装 Docker,请先参考 Docker 安装教程

一、HedgeDoc 功能特点

HedgeDoc 作为一款成熟的协作笔记工具,具备以下核心功能:

  • 实时协作:多个用户可以同时编辑同一篇文档,所有修改实时同步显示。
  • Markdown 支持:完整支持 Markdown 语法,包括表格、代码高亮、数学公式(KaTeX/MathJax)等。
  • 幻灯片模式:支持将 Markdown 文档转换为幻灯片演示,方便做简报。
  • 权限控制:文档可设置为公开、登录可见或私有,灵活控制访问权限。
  • 多种登录方式:支持本地账号、LDAP、OAuth(GitHub、GitLab 等)多种认证方式。
  • 历史版本:自动保存文档修改历史,可以回溯到任意版本。
  • 图片上传:支持粘贴或拖拽上传图片,可配置存储到本地或 S3。

二、环境要求与准备

在开始部署之前,请确认满足以下条件:

  • 搬瓦工 VPS 一台,建议内存 1GB 以上(推荐购买时使用优惠码 NODESEEK2026 享受 6.77% 折扣)。
  • 已安装 Docker 和 Docker Compose(参考 Docker 安装教程)。
  • 一个已解析到 VPS IP 的域名(可选但推荐)。
  • 系统推荐 Ubuntu 22.04 或 Debian 12。

2.1 创建项目目录

mkdir -p /opt/hedgedoc
cd /opt/hedgedoc

三、编写 Docker Compose 配置

HedgeDoc 需要搭配 PostgreSQL 数据库使用。创建 docker-compose.yml 文件:

cat > /opt/hedgedoc/docker-compose.yml <<'EOF'
version: '3.8'

services:
  database:
    image: postgres:15-alpine
    restart: always
    environment:
      POSTGRES_USER: hedgedoc
      POSTGRES_PASSWORD: your_db_password_here
      POSTGRES_DB: hedgedoc
    volumes:
      - db_data:/var/lib/postgresql/data

  hedgedoc:
    image: quay.io/hedgedoc/hedgedoc:latest
    restart: always
    depends_on:
      - database
    ports:
      - "3000:3000"
    environment:
      CMD_DB_URL: postgres://hedgedoc:your_db_password_here@database:5432/hedgedoc
      CMD_DOMAIN: notes.yourdomain.com
      CMD_PROTOCOL_USESSL: "true"
      CMD_URL_ADDPORT: "false"
      CMD_ALLOW_ANONYMOUS: "false"
      CMD_ALLOW_EMAIL_REGISTER: "true"
      CMD_IMAGE_UPLOAD_TYPE: filesystem
      CMD_SESSION_SECRET: your_random_session_secret_here
    volumes:
      - upload_data:/hedgedoc/public/uploads

volumes:
  db_data:
  upload_data:
EOF

重要:请将 your_db_password_here 替换为强密码,将 notes.yourdomain.com 替换为你的实际域名,并生成随机的 session secret。

3.1 生成随机密钥

openssl rand -hex 32

将输出结果填入 CMD_SESSION_SECRET 的值中。

四、启动 HedgeDoc

cd /opt/hedgedoc
docker compose up -d

等待镜像下载完成后,检查服务状态:

docker compose ps

确认两个容器均为 running 状态。此时 HedgeDoc 已在端口 3000 上运行。

五、配置 Nginx 反向代理

为了通过域名和 HTTPS 访问 HedgeDoc,建议配置 Nginx 反向代理。

5.1 安装 Nginx 和 Certbot

apt update
apt install nginx certbot python3-certbot-nginx -y

5.2 创建 Nginx 配置

cat > /etc/nginx/sites-available/hedgedoc <<'EOF'
server {
    listen 80;
    server_name notes.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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;
    }

    # WebSocket 支持(实时协作必需)
    location /socket.io/ {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }

    client_max_body_size 50m;
}
EOF

ln -sf /etc/nginx/sites-available/hedgedoc /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

5.3 申请 SSL 证书

certbot --nginx -d notes.yourdomain.com

按照提示完成证书申请,Certbot 会自动修改 Nginx 配置并启用 HTTPS。

六、HedgeDoc 常用配置

6.1 禁止匿名访问

docker-compose.yml 中设置:

CMD_ALLOW_ANONYMOUS: "false"
CMD_ALLOW_ANONYMOUS_EDITS: "false"

6.2 配置 GitHub OAuth 登录

在 GitHub 上创建 OAuth Application 后,添加以下环境变量:

CMD_GITHUB_CLIENTID: your_github_client_id
CMD_GITHUB_CLIENTSECRET: your_github_client_secret

6.3 限制注册

如果只希望特定用户使用,可以关闭邮箱注册:

CMD_ALLOW_EMAIL_REGISTER: "false"

七、数据备份

定期备份数据库和上传文件是非常重要的:

7.1 备份数据库

docker compose exec database pg_dump -U hedgedoc hedgedoc > /opt/hedgedoc/backup_$(date +%Y%m%d).sql

7.2 备份上传文件

docker cp $(docker compose ps -q hedgedoc):/hedgedoc/public/uploads /opt/hedgedoc/uploads_backup

7.3 自动备份脚本

cat > /opt/hedgedoc/backup.sh <<'SCRIPT'
#!/bin/bash
BACKUP_DIR="/opt/hedgedoc/backups"
mkdir -p $BACKUP_DIR
cd /opt/hedgedoc
docker compose exec -T database pg_dump -U hedgedoc hedgedoc > $BACKUP_DIR/db_$(date +%Y%m%d).sql
find $BACKUP_DIR -name "*.sql" -mtime +7 -delete
SCRIPT
chmod +x /opt/hedgedoc/backup.sh

添加 crontab 定时任务,每天凌晨 3 点执行备份:

echo "0 3 * * * /opt/hedgedoc/backup.sh" | crontab -

八、版本更新

更新 HedgeDoc 到最新版本:

cd /opt/hedgedoc
docker compose pull
docker compose up -d
docker image prune -f

建议更新前先执行数据备份操作。

九、常见问题

WebSocket 连接失败

如果实时协作功能不工作,检查 Nginx 是否正确配置了 WebSocket 代理。确保 location /socket.io/ 部分包含 UpgradeConnection 头。

图片上传失败

检查上传目录的权限:

docker compose exec hedgedoc ls -la /hedgedoc/public/uploads

如果权限不正确,可以在容器内修正:

docker compose exec hedgedoc chown -R hedgedoc:hedgedoc /hedgedoc/public/uploads

数据库连接错误

确认数据库容器正常运行,并检查连接字符串中的用户名密码是否一致:

docker compose logs database

总结

HedgeDoc 是一个功能完善的协作笔记平台,通过 Docker 部署在搬瓦工 VPS 上非常方便。它的实时协作能力和丰富的 Markdown 支持使其成为团队知识管理的好选择。你还可以在 VPS 上部署 Nextcloud 云盘Gitea 代码仓库 等服务,打造完整的自托管工作环境。选购搬瓦工 VPS 请访问 bwh81.net,购买时使用优惠码 NODESEEK2026 可享受 6.77% 优惠。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。