Confluence Lite 部署指南
本文档介绍在 Windows 电脑上部署 Confluence Lite 的两种方式:Docker 部署(推荐)和非 Docker 手动部署。
目录
架构概览
浏览器 (http://localhost:8080)
│
▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Nginx:80 │─────▶│ Express API │─────▶│ SQL Server │
│ 静态资源 + │ │ :3001 │ │ :1433 │
│ API 反向代理 │ │ (Node.js) │ │ (mssql) │
└──────────────┘ └──────────────┘ └──────────────┘
- 前端:React + Vite,构建产物由 Nginx 托管(端口 80)
- 后端:Node.js + Express REST API(端口 3001),JWT 鉴权
- 数据库:SQL Server 2022(端口 1433)
方式一:Docker 部署(推荐)
前提条件
| 软件 | 最低版本 | 说明 |
|---|---|---|
| Docker Desktop | 24.x+ | 下载地址 |
| 磁盘空间 | ≥ 4 GB | 主要用于 SQL Server 镜像和数据库数据卷 |
| 内存 | ≥ 4 GB | SQL Server 最低需要 2 GB 内存 |
安装 Docker Desktop 后,确保在设置中启用 WSL 2(推荐)或 Hyper-V 后端。
第一步:获取项目代码
将项目文件夹 confluence-lite 复制到目标电脑上,假设放在 E:\deploy\confluence-lite。
第二步:修改环境变量(重要)
部署前务必修改以下敏感信息:
文件 docker-compose.yml
需要修改 3 处密码:
# 1. SQL Server sa 密码(两处要一致)
MSSQL_SA_PASSWORD: "Your_Strong_Password123" # 第 9 行
DB_PASSWORD: "Your_Strong_Password123" # 第 28 行
# 2. JWT 签名密钥(换成随机长字符串)
JWT_SECRET: "change-me-to-random-string" # 第 29 行
安全提示:JWT_SECRET 可以用以下命令随机生成:
powershell -Command "[Convert]::ToBase64String((1..32 | ForEach-Object { Get-Random -Maximum 256 }))"
第三步:启动服务
打开 PowerShell 或 命令提示符,进入项目根目录:
cd E:\deploy\confluence-lite
# 构建镜像并启动所有服务
docker compose up -d --build
首次启动会下载镜像(SQL Server ~1.5GB,Node.js ~150MB,Nginx ~50MB),根据网速可能需要 5-15 分钟。
第四步:验证服务状态
# 查看各容器运行状态
docker compose ps
正常输出应显示 3 个容器均为 Up 状态:
NAME STATUS
confluence-sqlserver Up (healthy)
confluence-backend Up
confluence-frontend Up
如果 confluence-sqlserver 长时间处于 starting 状态,说明 SQL Server 正在首次初始化,耐心等待 1-2 分钟即可。
第五步:访问系统
浏览器打开:
http://localhost:8080
首次使用点击「注册」创建账号,第一个注册的账号自动成为全局管理员。
修改访问端口
如果想改为其他端口(如 8088),只需修改项目根目录下的 .env 文件:
WEB_PORT=8088
然后重启服务:
docker compose down
docker compose up -d
数据备份
SQL Server 数据存储在 Docker 卷 sqlserver_data 中,建议定期备份:
# 备份:导出数据库为 SQL 脚本
docker compose exec sqlserver /opt/mssql-tools/bin/sqlcmd \
-S localhost -U sa -P "Your_Strong_Password123" \
-Q "BACKUP DATABASE [confluence_lite] TO DISK = N'/var/opt/mssql/backup.bak'"
# 从容器复制备份文件到宿主机
docker cp confluence-sqlserver:/var/opt/mssql/backup.bak ./backup_$(Get-Date -Format 'yyyyMMdd').bak
或者直接备份整个 Docker 卷:
docker run --rm -v confluence-lite_sqlserver_data:/data -v ${PWD}:/backup alpine tar czf /backup/sqlserver_backup.tar.gz -C /data .
停止与清理
# 停止所有服务(保留数据)
docker compose down
# 停止并删除所有数据(不可恢复!)
docker compose down -v
方式二:非 Docker 手动部署
如果不想安装 Docker,可以手动部署各个组件。
一键脚本部署(推荐)
项目根目录提供了 deploy.ps1 一键部署脚本,自动完成环境检测、配置、安装依赖、构建和启动。
前置条件:已安装 Node.js 18+,并参考下方第一步安装好 SQL Server 并创建数据库。
cd E:\deploy\confluence-lite
# 允许运行 PowerShell 脚本(如未设置过)
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
# 一键部署(交互式引导)
.\deploy.ps1
# 跳过前端构建(已构建过时可用)
.\deploy.ps1 -SkipBuild
# 跳过配置向导(已有 .env 时可用)
.\deploy.ps1 -SkipConfig
# 自定义后端端口
.\deploy.ps1 -Port 4000
脚本会按以下步骤执行:
- 检测 Node.js、npm、SQL Server 环境
- 交互式配置向导(数据库地址、密码、JWT 密钥)
- 安装后端依赖
- 安装前端依赖并构建
- 可选安装 pm2 管理后台进程(支持后台运行和开机自启)
手动分步部署
如果不使用脚本,也可以按以下步骤手动部署。
前提条件
| 软件 | 最低版本 | 下载 |
|---|---|---|
| Node.js | 18.x LTS | nodejs.org |
| SQL Server | 2022 Developer | 下载 SQL Server 2022 Developer 或 Express 版 |
| SQL Server Management Studio (SSMS) | 任意版本 | 下载 SSMS(可选,方便管理数据库) |
| nginx | 1.25+ | nginx.org(Windows 版下载 zip 包即可) |
第一步:安装并配置 SQL Server
1.1 安装 SQL Server
下载并运行 SQL Server 2022 Developer 安装程序:
- 选择「基本」安装类型
- 在「数据库引擎配置」步骤中,选择「混合模式(SQL Server 身份验证和 Windows 身份验证)」
- 设置
sa用户密码,请记下这个密码
1.2 启用 TCP/IP 协议
- 打开「SQL Server 配置管理器」(开始菜单搜索即可)
- 展开「SQL Server 网络配置」→ 点击「MSSQLSERVER 的协议」
- 右键「TCP/IP」→「启用」
- 双击「TCP/IP」→「IP 地址」选项卡
- 滚动到底部「IPAll」,将「TCP 端口」设为
1433 - 确定保存后,在左侧「SQL Server 服务」中右键「SQL Server (MSSQLSERVER)」→「重新启动」
1.3 创建数据库
打开 命令提示符 或 PowerShell,使用 sqlcmd 创建数据库:
sqlcmd -S localhost -U sa -P "你的sa密码" -Q "CREATE DATABASE confluence_lite"
Windows 可能不自带
sqlcmd,也可以用 SSMS 图形化创建:连接服务器 → 右键「数据库」→「新建数据库」,名称填入confluence_lite。
第二步:部署后端
cd E:\deploy\confluence-lite\backend
2.1 配置环境变量
编辑 backend\.env 文件:
# 监听端口
PORT=3001
# SQL Server 连接信息
DB_HOST=localhost
DB_PORT=1433
DB_NAME=confluence_lite
DB_USER=sa
DB_PASSWORD=你设置的sa密码
# JWT 密钥(换成随机长字符串)
JWT_SECRET=换成随机长字符串
2.2 安装依赖并启动
# 安装依赖
npm install
# 生产模式启动
npm start
后端启动成功会显示:
Confluence Lite 后端运行在 http://localhost:3001
若需后台运行,可以使用 pm2:
npm install -g pm2 pm2 start src/index.js --name confluence-backend pm2 save pm2 startup # 设置开机自启
第三步:部署前端
3.1 安装依赖并构建
cd E:\deploy\confluence-lite\frontend
npm install
npm run build
构建产物在 frontend\dist\ 目录下。
3.2 配置 nginx
将 frontend\dist\ 目录复制到 nginx 的 html 目录,或修改 nginx 配置指向 dist 目录。
打开 nginx 安装目录下的 conf\nginx.conf,在 server 块中配置:
server {
listen 8080;
server_name _;
# 修改为你的 dist 目录绝对路径
root E:/deploy/confluence-lite/frontend/dist;
index index.html;
client_max_body_size 55m;
location /api/ {
proxy_pass http://localhost:3001/api/;
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;
}
location / {
try_files $uri $uri/ /index.html;
}
gzip on;
gzip_types text/css application/javascript application/json;
}
3.3 启动 nginx
cd C:\nginx # 替换为你的 nginx 安装目录
start nginx
浏览器访问 http://localhost:8080。
无需 nginx 的简化方案:后端本身也能托管前端静态文件。如果你不想安装 nginx,可以跳过第三步的 3.2 和 3.3,直接将前端 dist 目录放在
frontend\dist(即backend\..\frontend\dist),后端的index.js会自动检测并服务静态文件。这种模式下直接访问http://localhost:3001即可。
第四步:设置为 Windows 服务(可选)
如需开机自启动,推荐使用 pm2 管理 Node.js 进程:
npm install -g pm2
# 启动后端
cd E:\deploy\confluence-lite\backend
pm2 start src/index.js --name confluence-backend
# 设置开机自启
pm2 save
pm2 startup
部署后初始化
创建管理员账号
- 浏览器打开系统首页
- 点击「注册」
- 填写用户名、显示名称和密码
- 注册成功后自动获得全局管理员权限
第一个注册的用户即为全局管理员,可以管理所有空间和用户。
创建第一个空间
- 登录后点击左侧「+ 新建空间」
- 填写空间名称、Key(唯一标识,如
TEAM、DEV) - 选择可见性(公开/私有)
- 在空间内即可创建页面(文档、看板、数据看板等)
常用运维操作
查看后端日志
Docker 部署:
docker compose logs -f backend
手动部署:
pm2 logs confluence-backend
重启服务
Docker 部署:
docker compose restart
手动部署:
pm2 restart confluence-backend
数据库备份
Docker 部署:
docker compose exec sqlserver /opt/mssql-tools/bin/sqlcmd \
-S localhost -U sa -P "Your_Strong_Password123" \
-Q "BACKUP DATABASE [confluence_lite] TO DISK = N'/var/opt/mssql/backup.bak'"
docker cp confluence-sqlserver:/var/opt/mssql/backup.bak ./backup.bak
手动部署(使用 SSMS 图形化操作或 sqlcmd):
sqlcmd -S localhost -U sa -P "你的sa密码" `
-Q "BACKUP DATABASE [confluence_lite] TO DISK = N'E:\backups\confluence_lite.bak'"
升级版本
获取新代码后:
Docker 部署:
docker compose down
docker compose up -d --build
数据库表结构会在后端启动时自动迁移,已有数据不会丢失。
手动部署:
# 后端
cd backend
npm install
pm2 restart confluence-backend
# 前端
cd frontend
npm install
npm run build
常见问题
Q1: Docker 启动后 SQL Server 容器一直在重启
SQL Server 需要至少 2 GB 内存。确保 Docker Desktop 设置中分配了足够的内存(Settings → Resources → Memory ≥ 4GB)。
Q2: 浏览器打开后页面空白
按 F12 打开开发者工具 → Console,查看是否有报错:
- 502 Bad Gateway:后端未启动完成,等待 1-2 分钟后刷新
- CORS 错误:检查 nginx 代理配置是否正确
- 数据库连接失败:检查 SQL Server 是否正常运行,密码是否配置正确
Q3: better-sqlite3 编译失败(Docker 构建时)
后端的 Dockerfile 已内置编译依赖(python3、make、g++),正常情况不会失败。如果在特殊 CPU 架构上构建较慢,耐心等待即可。
Q4: SQL Server 端口被占用
如果本机已经安装了 SQL Server 并使用 1433 端口,修改 docker-compose.yml 的端口映射:
ports:
- "14330:1433" # 改为其他端口
Q5: 如何彻底重置(清空所有数据重新开始)
Docker 部署:
docker compose down -v
docker compose up -d --build
手动部署:
-- 连接数据库后执行
DROP DATABASE confluence_lite;
CREATE DATABASE confluence_lite;
然后重启后端服务即可,数据库表结构会自动重新创建。
Q6: 想用 HTTPS 访问怎么办?
推荐在 nginx 前套一层反向代理(如 Caddy、Nginx Proxy Manager),由它们处理 HTTPS 证书,系统本身无需任何改动。本地使用无需配置 HTTPS。
Q7: 看板导入 SQLite 文件报错
上传的 SQLite 文件大小限制为 100 MB,且必须是有效的 SQLite 格式。如果用 Navicat 导出的 .sql 文本文件是不支持的,请导出为 .db 或 .sqlite 格式。
浙公网安备 33010602011771号