这份文档分两种方式:
- 方式 A:直接拉 Docker Hub 镜像一键部署(推荐)
- 方式 B:上传源码后用 compose 本地 build
如果你只是想在宝塔里尽快跑起来,优先用方式 A,少折腾。
mkdir -p /www/wwwroot/2025-blog-local-docker/datadocker run -d \
--name 2025-blog-local-docker \
-p 3000:3000 \
-e NODE_ENV=production \
-e DATA_DIR=/app/data \
-v /www/wwwroot/2025-blog-local-docker/data:/app/data \
--restart unless-stopped \
duanxiaosheng/2025-blog-local-docker:latesthttp://服务器IP:3000默认情况下:
- 不设置
ADMIN_PASSWORD,首次访问后台/编辑页时走初始化密码流程 - 不设置
SESSION_SECRET,程序会自动生成一个随机值并保存到data/config/admin-auth.json
如果你确实想预置固定密码/固定 session secret,也可以自己额外加:
-e ADMIN_PASSWORD='你自己的后台密码'
-e SESSION_SECRET='一串足够长的随机字符串'仓库里新增了发布版编排文件:
docker-compose.release.yml它不是本地 build,而是直接拉 Docker Hub 镜像。
cd /www/wwwroot/2025-blog-local-docker
cp .env.example .env
mkdir -p data
docker compose -f docker-compose.release.yml up -dPORT=3000
DATA_DIR=/app/data
IMAGE_NAME=duanxiaosheng/2025-blog-local-docker:latest如果你想跳过初始化页面,才额外添加:
ADMIN_PASSWORD=你自己的后台密码
SESSION_SECRET=你自己的随机字符串- 打开宝塔面板
- 进入 Docker
- 进入 Compose
- 新建编排项目
- 选择
docker-compose.release.yml - 配好
.env后点击部署
适合你自己要改代码。
项目目录建议:
/www/wwwroot/2025-blog-public-adapt把整个项目上传到服务器。
确保目录内至少有这些文件:
Dockerfiledocker-compose.yml.env.exampledata/(首次可以没有,程序会自动初始化)
默认情况下你不需要设置 ADMIN_PASSWORD 和 SESSION_SECRET:
ADMIN_PASSWORD不设置:首次访问后台/编辑页时初始化密码SESSION_SECRET不设置:程序首次启动自动生成并持久化到data/config/admin-auth.json
如果你就是想固定它们,也可以自己在 compose 里加上。
推荐直接使用 docker-compose.yml 部署。
- 打开宝塔面板
- 进入 Docker
- 进入 Compose
- 新建编排项目
- 选择这个项目目录里的
docker-compose.yml - 点击部署
cd /www/wwwroot/2025-blog-public-adapt
docker compose up -d --build默认映射:
ports:
- "3000:3000"如果 3000 端口被占用,可以改成:
ports:
- "8080:3000"那么访问地址就是:
http://服务器IP:8080如果你有域名,比如:
blog.example.com可以在宝塔网站里做反向代理到:
http://127.0.0.1:3000或者你自己改过端口后对应改成:
http://127.0.0.1:8080你真正要备份的是:
./data里面包括:
data/public/blogs/:博客正文、封面、资源文件data/content/:about、projects、share、snippets、bloggers、picturesdata/config/:站点配置
备份命令示例:
cd /www/wwwroot/2025-blog-local-docker
tar -czf blog-data-backup.tar.gz data迁移时只要:
- 新服务器部署同一份项目代码,或者直接拉同一个 Docker Hub 镜像
- 把旧服务器
data/目录复制过去 - 启动容器
如果你是 Docker Hub 部署,迁移根本不需要重新 build。
前台地址:
/博客写作:
/write博客管理:
/blog其他可编辑内容页面:
/about/projects/share/snippets/bloggers/pictures
登录方式:
- 点击页面中的管理员登录按钮
- 输入
ADMIN_PASSWORD
程序首次启动时会自动把原项目内置内容初始化到:
data/后续编辑都会保存到这个目录,不再依赖 GitHub。
因为内容已经持久化到 data/ 挂载目录,这正是预期行为。
因为你只需要迁移 data/ 即可。
可以,直接改:
ADMIN_PASSWORD- 建议同时改
SESSION_SECRET
不用。这个改造版已经不再依赖 GitHub App / .pem 私钥发布。