添加 siyuan certd vaultwarden
This commit is contained in:
197
README.md
Normal file
197
README.md
Normal file
@@ -0,0 +1,197 @@
|
||||
# Docker 服务部署集合
|
||||
|
||||
一套完整的自托管服务部署方案,适用于阿里云等国内服务器环境。
|
||||
|
||||
## 服务列表
|
||||
|
||||
| 服务 | 说明 | 端口 |
|
||||
|------|------|------|
|
||||
| [base/](base/) | 公共基础设施(Docker + Nginx + Certbot + 防火墙) | — |
|
||||
| [gitea/](gitea/) | Git 代码托管(Gitea + MySQL 8.4) | 443, 2222 |
|
||||
| [certd/](certd/) | SSL 证书自动化管理(Certd) | 443 |
|
||||
| [vaultwarden/](vaultwarden/) | 密码管理器(Vaultwarden / Bitwarden 兼容) | 443 |
|
||||
| [siyuan/](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
|
||||
```
|
||||
|
||||
## 快速开始
|
||||
|
||||
### 场景一:全新服务器部署所有服务
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
# 上传新服务文件(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。
|
||||
|
||||
```bash
|
||||
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 |
|
||||
|
||||
## 日常运维
|
||||
|
||||
### 查看各服务状态
|
||||
|
||||
```bash
|
||||
# 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
|
||||
```
|
||||
|
||||
### 备份所有服务
|
||||
|
||||
```bash
|
||||
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 检查)。
|
||||
|
||||
```bash
|
||||
# 查看所有证书
|
||||
certbot certificates
|
||||
|
||||
# 手动测试续期
|
||||
certbot renew --dry-run
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
- **Gitea 的 deploy.sh 是自包含的**,不依赖 base/(历史兼容)。Certd、Vaultwarden 和 SiYuan 依赖 base/。
|
||||
- 所有容器端口仅监听 `127.0.0.1`,通过 Nginx 反向代理对外提供 HTTPS 服务。
|
||||
- `.env` 文件包含敏感信息,不要提交到公开仓库。
|
||||
- 首次部署每个服务时需要运行两次 `deploy.sh`:第一次生成 `.env`,修改配置后第二次正式部署。
|
||||
Reference in New Issue
Block a user