添加 siyuan certd vaultwarden

This commit is contained in:
2026-04-07 16:03:47 +08:00
parent 3b01ca8ed3
commit 41a586b97b
25 changed files with 2894 additions and 27 deletions

View File

@@ -22,7 +22,7 @@
| 组件 | 版本 | 说明 |
|------|------|------|
| Gitea | 1.25 | Git 托管服务(含内置 SSH 服务器) |
| MySQL | 8.0 | 数据库utf8mb4 |
| MySQL | 8.4 LTS | 数据库utf8mb4 |
| Nginx | 系统包 | HTTPS 反向代理 |
| Certbot | 系统包 | Let's Encrypt 自动 SSL 证书 |
| Docker | 最新 | 容器运行时 |
@@ -158,29 +158,126 @@ git clone ssh://git@git.yourdomain.com:2222/用户名/仓库.git
### GPG 签名提交
#### 步骤 1确认 GPG 可用
**macOS / Linux**
```bash
# 1. 生成 GPG 密钥
gpg --full-generate-key
# 选择 RSA and RSA → 4096 → 填写名字和邮箱
# 2. 查看密钥 ID
gpg --list-secret-keys --keyid-format=long
# 输出中 sec 行的 XXXXXXXXXXXXXXXX 就是密钥 ID
# 3. 导出公钥
gpg --armor --export XXXXXXXXXXXXXXXX
# 4. 在 Gitea 中添加
# → 头像 → 设置 → SSH/GPG 密钥 → 添加 GPG 密钥 → 粘贴公钥
# 5. 配置 Git 使用 GPG 签名
git config --global user.signingkey XXXXXXXXXXXXXXXX
git config --global commit.gpgsign true
# 6. 签名提交(之后所有 commit 自动签名)
git commit -S -m "signed commit"
gpg --version
```
如未安装:
- macOS: `brew install gnupg`
- Ubuntu/Debian: `sudo apt-get install gnupg`
**Windows**
Windows 系统默认**没有** `gpg` 命令。推荐使用 Git for Windows 自带的 GPG无需额外安装
```powershell
# 确认 Git 自带的 GPG 可用
& "C:\Program Files\Git\usr\bin\gpg.exe" --version
# 输出类似: gpg (GnuPG) 2.4.x
```
**将 GPG 加入系统 PATH推荐这样可以直接使用 `gpg` 命令):**
```powershell
# 将 Git 自带的 GPG 目录添加到用户 PATH永久生效需重启终端
$gpgDir = "C:\Program Files\Git\usr\bin"
$userPath = [Environment]::GetEnvironmentVariable("Path", "User")
if ($userPath -notlike "*$gpgDir*") {
[Environment]::SetEnvironmentVariable("Path", "$userPath;$gpgDir", "User")
Write-Host "已添加到 PATH请重启终端后生效"
}
# 重启终端后验证
gpg --version
```
> 也可以通过 **系统设置 → 系统 → 关于 → 高级系统设置 → 环境变量 → 用户变量 → Path → 编辑**,手动添加 `C:\Program Files\Git\usr\bin`。
**配置 Git 使用该 GPG必须否则 `git commit -S` 会报错):**
```powershell
git config --global gpg.program "C:\Program Files\Git\usr\bin\gpg.exe"
```
> 也可以安装 [Gpg4win](https://www.gpg4win.org/),安装后 `gpg` 会自动加入 PATH无需上述配置。
#### 步骤 2生成 GPG 密钥
> **Windows 用户注意**:必须在 **Git Bash** 中执行以下命令(不要在 PowerShell / CMD 中执行,因为交互式密钥生成在非 TTY 环境下会失败)。
```bash
gpg --full-generate-key
```
按提示依次操作:
| 提示 | 推荐选择 |
|------|----------|
| 密钥类型 | `1`RSA and RSA |
| 密钥长度 | `4096` |
| 有效期 | `0`(永不过期),然后输入 `y` 确认 |
| 真实姓名 | 你的名字(将显示在签名中) |
| 电子邮箱 | **必须与 Git / Gitea 的提交邮箱一致** |
| 注释 | 可留空,直接回车 |
| 确认 | 输入 `O`Okay |
| 密码 | 设置一个保护密码(每次签名提交时需要输入) |
#### 步骤 3获取密钥 ID
```bash
gpg --list-secret-keys --keyid-format=long
```
输出示例:
```
sec rsa4096/ABCDEF1234567890 2026-04-07 [SC]
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid [ultimate] Your Name <your@email.com>
ssb rsa4096/1234567890ABCDEF 2026-04-07 [E]
```
其中 `sec``rsa4096/` 后面的 **ABCDEF1234567890** 就是密钥 ID。
#### 步骤 4配置 Git 签名
```bash
# 设置签名密钥
git config --global user.signingkey ABCDEF1234567890
# 开启自动签名(之后所有 commit 自动签名,无需每次加 -S
git config --global commit.gpgsign true
```
#### 步骤 5导出公钥并添加到 Gitea
```bash
# 导出 ASCII 格式公钥
gpg --armor --export ABCDEF1234567890
```
复制输出的完整内容(从 `-----BEGIN PGP PUBLIC KEY BLOCK-----``-----END PGP PUBLIC KEY BLOCK-----`),然后:
1. 登录 Gitea → 头像 → **设置****SSH / GPG 密钥**
2. 点击 **添加密钥**GPG 密钥区域)
3. 粘贴公钥 → 确认添加
#### 步骤 6验证签名提交
```bash
# 测试签名提交
git commit --allow-empty -m "test: GPG signed commit"
# 验证签名
git log --show-signature -1
```
push 到 Gitea 后,提交记录旁会显示绿色 **Verified** 徽标。
### Git LFS 大文件
```bash
@@ -604,6 +701,12 @@ docker compose exec -u git server \
## 六、常见问题
**Q: 部署完成后访问显示 502 Bad Gateway**
- 这是正常现象,说明 Nginx 已就绪但 Gitea 容器尚未启动完成
- 步骤 8 拉取 Docker 镜像较慢(首次需要下载约 300MB等待脚本执行完毕即可
- 如脚本已结束仍然 502手动启动容器`cd /opt/gitea && docker compose up -d`
- 确认容器状态:`docker compose ps`,确认 Gitea 日志:`docker compose logs -f server`
**Q: SSL 证书申请失败?**
- 确认域名 A 记录已解析到服务器 IP`dig git.yourdomain.com` 验证)
- 确认 80 端口可从外网访问(云安全组 + 防火墙)
@@ -619,8 +722,17 @@ docker compose exec server gitea admin user change-password -u 管理员用户
- 如仍超时,检查服务器带宽和磁盘空间
**Q: GPG 签名的提交不显示 "Verified"**
- 确认 GPG 公钥已添加到 Gitea 用户设置
- 确认 Git 提交邮箱与 GPG 密钥邮箱一致
- 确认 GPG 公钥已添加到 Gitea 用户设置(头像 → 设置 → SSH/GPG 密钥)
- 确认 Git 提交邮箱`git config user.email`与 GPG 密钥邮箱**完全一致**
- 确认密钥未过期:`gpg --list-keys`
**Q: Windows 上 `gpg` 命令找不到?**
- Windows 默认不带 GPG推荐使用 Git for Windows 自带的 GPG
```powershell
git config --global gpg.program "C:\Program Files\Git\usr\bin\gpg.exe"
```
- 或安装 [Gpg4win](https://www.gpg4win.org/)
- 生成密钥时请在 **Git Bash** 中执行 `gpg --full-generate-key`PowerShell/CMD 下交互式生成会失败)
**Q: 如何迁移到新服务器?**
使用迁移脚本一键完成,详见上方「迁移到新服务器」章节:

View File

@@ -125,8 +125,12 @@ install_docker() {
if command -v docker &> /dev/null; then
log "Docker 已安装: $(docker --version)"
else
log "正在安装 Docker..."
curl -fsSL https://get.docker.com | bash
log "正在安装 Docker (使用阿里云镜像)..."
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" \
> /etc/apt/sources.list.d/docker.list
apt-get update -qq
apt-get install -y -qq docker-ce docker-ce-cli containerd.io docker-compose-plugin
log "Docker 安装完成: $(docker --version)"
fi
@@ -424,7 +428,7 @@ show_info() {
echo -e "${GREEN}${NC} ✓ Git LFS 大文件存储"
echo -e "${GREEN}${NC} ✓ SSH 密钥认证"
echo -e "${GREEN}${NC} ✓ GPG 签名验证"
echo -e "${GREEN}${NC} ✓ MySQL 8.0 数据库"
echo -e "${GREEN}${NC} ✓ MySQL 8.4 LTS 数据库"
echo -e "${GREEN}${NC}"
echo -e "${GREEN}${NC} 首次访问说明:"
echo -e "${GREEN}${NC} 1. 浏览器打开 https://${GITEA_DOMAIN}"

View File

@@ -56,7 +56,7 @@ services:
condition: service_healthy
db:
image: mysql:8.0
image: mysql:8.4
container_name: gitea-db
restart: always
environment: