2026-04-07 16:03:47 +08:00
2026-04-07 16:03:47 +08:00
2026-04-07 16:03:47 +08:00
2026-04-07 16:03:47 +08:00
2026-04-07 16:03:47 +08:00

Docker 服务部署集合

一套完整的自托管服务部署方案,适用于阿里云等国内服务器环境。

服务列表

服务 说明 端口
base/ 公共基础设施Docker + Nginx + Certbot + 防火墙)
gitea/ Git 代码托管Gitea + MySQL 8.4 443, 2222
certd/ SSL 证书自动化管理Certd 443
vaultwarden/ 密码管理器Vaultwarden / Bitwarden 兼容) 443
siyuan/ 知识管理笔记(思源笔记 SiYuan 443

架构概览

                    ┌─────────────┐
                    │   Nginx     │ ← 统一 HTTPS 入口
                    │  (系统包)    │ ← Let's Encrypt 证书
                    └──────┬──────┘
                           │
            ┌──────────────┼──────────────┬──────────────┐
            │              │              │              │
     ┌──────▼──────┐ ┌────▼─────┐ ┌──────▼──────┐ ┌────▼─────┐
     │   Gitea     │ │  Certd   │ │ Vaultwarden │ │  SiYuan  │
     │ :3000(内部)  │ │ :7001    │ │ :8080(内部)  │ │ :6806    │
     │ + MySQL 8.4 │ │          │ │             │ │          │
     └─────────────┘ └──────────┘ └─────────────┘ └──────────┘
          Docker          Docker        Docker        Docker

所有服务通过 Nginx 反向代理提供 HTTPS 访问,容器端口仅监听 127.0.0.1

目录结构

docker/
├── README.md                 # 本文件
├── base/                     # 公共基础设施
│   ├── setup.sh              #   安装脚本Docker/Nginx/Certbot/防火墙)
│   ├── .env.example          #   Docker 镜像加速配置
│   └── README.md
├── gitea/                    # Gitea 代码托管
│   ├── docker-compose.yml    #   Gitea + MySQL 容器编排
│   ├── deploy.sh             #   一键部署脚本(自包含)
│   ├── backup.sh             #   备份脚本
│   ├── upgrade.sh            #   升级脚本
│   ├── migrate.sh            #   迁移脚本
│   ├── nginx/gitea.conf      #   Nginx 配置模板
│   └── README.md
├── certd/                    # Certd 证书管理
│   ├── docker-compose.yml
│   ├── deploy.sh             #   部署脚本(依赖 base/
│   ├── backup.sh
│   ├── nginx/certd.conf
│   └── README.md
├── vaultwarden/              # Vaultwarden 密码管理
│   ├── docker-compose.yml
│   ├── deploy.sh             #   部署脚本(依赖 base/
│   ├── backup.sh
│   ├── nginx/vaultwarden.conf
│   └── README.md
└── siyuan/                   # SiYuan 思源笔记
    ├── docker-compose.yml
    ├── deploy.sh             #   部署脚本(依赖 base/
    ├── backup.sh
    ├── nginx/siyuan.conf
    └── README.md

快速开始

场景一:全新服务器部署所有服务

# 1. 上传所有文件到服务器
scp -r base/ gitea/ certd/ vaultwarden/ siyuan/ root@<IP>:/opt/

# 2. 安装基础环境
ssh root@<IP>
cd /opt/base
cp .env.example .env
bash setup.sh

# 3. 部署 Gitea
cd /opt/gitea
bash deploy.sh          # 首次生成 .env修改配置后再次运行
vi .env
bash deploy.sh

# 4. 部署 Certd
cd /opt/certd
bash deploy.sh
vi .env
bash deploy.sh

# 5. 部署 Vaultwarden
cd /opt/vaultwarden
bash deploy.sh
vi .env
bash deploy.sh

# 6. 部署 SiYuan
cd /opt/siyuan
bash deploy.sh
vi .env
bash deploy.sh

场景二:已有 Gitea 的服务器,追加部署 Certd

# 上传新服务文件base 是新增的公共依赖)
scp -r base/ certd/ root@<IP>:/opt/

ssh root@<IP>

# 安装 base会检测已安装的组件并跳过
cd /opt/base
cp .env.example .env
bash setup.sh

# 部署 Certd
cd /opt/certd
bash deploy.sh
vi .env
bash deploy.sh

场景三:只部署单个服务

每个服务的 deploy.sh 会自动调用 base/setup.sh 安装缺失的基础环境,无需手动运行 base。

scp -r base/ vaultwarden/ root@<IP>:/opt/
ssh root@<IP>
cd /opt/vaultwarden
bash deploy.sh
vi .env
bash deploy.sh

域名规划示例

服务 域名 DNS 记录
Gitea git.example.com A → 服务器 IP
Certd cert.example.com A → 服务器 IP
Vaultwarden vault.example.com A → 服务器 IP
SiYuan note.example.com A → 服务器 IP

日常运维

查看各服务状态

# Gitea
cd /opt/gitea && docker compose ps

# Certd
cd /opt/certd && docker compose ps

# Vaultwarden
cd /opt/vaultwarden && docker compose ps

# SiYuan
cd /opt/siyuan && docker compose ps

备份所有服务

cd /opt/gitea && bash backup.sh
cd /opt/certd && bash backup.sh
cd /opt/vaultwarden && bash backup.sh
cd /opt/siyuan && bash backup.sh

SSL 证书续期

所有服务共享 Certbot证书自动续期每天 03:00 检查)。

# 查看所有证书
certbot certificates

# 手动测试续期
certbot renew --dry-run

注意事项

  • Gitea 的 deploy.sh 是自包含的,不依赖 base/历史兼容。Certd、Vaultwarden 和 SiYuan 依赖 base/。
  • 所有容器端口仅监听 127.0.0.1,通过 Nginx 反向代理对外提供 HTTPS 服务。
  • .env 文件包含敏感信息,不要提交到公开仓库。
  • 首次部署每个服务时需要运行两次 deploy.sh:第一次生成 .env,修改配置后第二次正式部署。
Description
No description provided
Readme 124 KiB
Languages
Shell 100%