添加 siyuan certd vaultwarden
This commit is contained in:
158
gitea/README.md
158
gitea/README.md
@@ -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: 如何迁移到新服务器?**
|
||||
使用迁移脚本一键完成,详见上方「迁移到新服务器」章节:
|
||||
|
||||
@@ -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}"
|
||||
|
||||
@@ -56,7 +56,7 @@ services:
|
||||
condition: service_healthy
|
||||
|
||||
db:
|
||||
image: mysql:8.0
|
||||
image: mysql:8.4
|
||||
container_name: gitea-db
|
||||
restart: always
|
||||
environment:
|
||||
|
||||
Reference in New Issue
Block a user