Files
blog/write-server
2026-06-22 13:30:55 +08:00
..
2026-06-22 13:30:55 +08:00
2026-06-21 20:42:44 +08:00
2026-06-21 22:03:30 +08:00
2026-06-22 13:20:07 +08:00
2026-06-21 20:42:44 +08:00
2026-06-22 13:01:37 +08:00
2026-06-22 13:20:07 +08:00
2026-06-21 20:42:44 +08:00
2026-06-22 13:30:55 +08:00
2026-06-22 12:03:11 +08:00
2026-06-21 20:42:44 +08:00
2026-06-22 12:21:30 +08:00
2026-06-21 20:42:44 +08:00
2026-06-21 20:42:44 +08:00
2026-06-21 20:42:44 +08:00
2026-06-21 20:42:44 +08:00
2026-06-21 20:42:44 +08:00
2026-06-21 20:42:44 +08:00
2026-06-21 20:42:44 +08:00

Write Server - Hugo Blog Admin for Linux

基于 Next.js 16 的 Hugo 博客管理后台 Linux 部署版本

这是一个为 Linux 服务器优化的 Hugo 博客管理后台,支持 Docker 部署和 systemd 服务管理。

特性

  • 完整的博客管理功能(文章、评论、友链、订阅源等)
  • Docker 容器化部署
  • systemd 服务支持
  • Nginx 反向代理配置
  • 自动重启和健康检查
  • 日志管理
  • 备份策略

快速开始

方式一:Docker 部署(推荐)

# 1. 克隆项目
git clone <your-repo-url>
cd write-server

# 2. 配置环境变量
cp .env.example .env
nano .env  # 编辑配置

# 3. 启动服务
docker-compose up -d

# 4. 查看日志
docker-compose logs -f

方式二:直接部署

# 1. 安装依赖
./scripts/install.sh

# 2. 配置环境变量
cp .env.example .env
nano .env

# 3. 启动服务
./scripts/start.sh

# 4. 设置开机自启
sudo ./scripts/setup-service.sh

目录结构

write-server/
├── src/                    # 源代码
├── public/                 # 静态资源
├── scripts/                # 部署脚本
├── nginx/                  # Nginx 配置
├── systemd/                # systemd 服务文件
├── backups/                # 备份目录
├── logs/                   # 日志目录
├── Dockerfile              # Docker 镜像配置
├── docker-compose.yml      # Docker Compose 配置
├── .env.example            # 环境变量模板
└── README.md               # 本文档

配置说明

环境变量

复制 .env.example 为 .env,并填写以下配置:

# 博客根目录(Hugo 项目路径)
BLOG_ROOT=/path/to/your/hugo/blog

# 服务端口
PORT=8016

# Artalk 评论系统
ARTALK_SERVER=https://artalk.your-domain.com
ARTALK_SITE=Your Site Name

# Telegram Bot(可选)
TG_BOT_TOKEN=your-bot-token
TG_ALLOWED_CHAT_IDS=your-chat-id

# 微信公众号(可选)
WECHAT_APP_ID=your-app-id
WECHAT_APP_SECRET=your-app-secret

# AI 配置(可选)
DEEPSEEK_API_KEY=your-api-key
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-chat

Nginx 配置

如果需要域名访问,参考 nginx/write-server.conf 配置 Nginx 反向代理。

管理命令

# Docker 方式
docker-compose up -d          # 启动
docker-compose down           # 停止
docker-compose restart        # 重启
docker-compose logs -f        # 查看日志
docker-compose ps             # 查看状态

# systemd 方式
sudo systemctl start write-server    # 启动
sudo systemctl stop write-server     # 停止
sudo systemctl restart write-server  # 重启
sudo systemctl status write-server   # 查看状态
sudo journalctl -u write-server -f   # 查看日志

备份与恢复

# 手动备份
./scripts/backup.sh

# 恢复备份
./scripts/restore.sh backups/write-server-20260101.tar.gz

# 自动备份(已配置 cron)
crontab -l  # 查看定时任务

更新升级

# 拉取最新代码
git pull

# Docker 方式
docker-compose build --no-cache
docker-compose up -d

# 直接部署方式
npm install
npm run build
sudo systemctl restart write-server

故障排查

查看日志

# 应用日志
tail -f logs/app.log

# PM2 日志(直接部署方式)
pm2 logs write-server

# Docker 日志
docker-compose logs -f

常见问题

  1. 端口被占用

    lsof -i :8016
    kill -9 <PID>
    
  2. 权限问题

    sudo chown -R $USER:$USER /path/to/blog
    
  3. Hugo 未安装

    # 参考 scripts/install.sh 安装 Hugo
    

安全建议

  1. 使用 HTTPS(配置 SSL 证书)
  2. 限制访问 IP(防火墙或 Nginx 配置)
  3. 定期更新依赖
  4. 启用访问日志
  5. 配置 fail2ban 防暴力破解

性能优化

  1. 启用 Gzip 压缩
  2. 配置 CDN
  3. 使用 PM2 集群模式
  4. 配置 Redis 缓存(可选)

许可证

MIT License