chore(vault): backup 2026-07-03 10:01:32
This commit is contained in:
@@ -1,405 +0,0 @@
|
|||||||
---
|
|
||||||
created: 2026-03-29
|
|
||||||
tags:
|
|
||||||
- note
|
|
||||||
- journal
|
|
||||||
para: []
|
|
||||||
---
|
|
||||||
|
|
||||||
###
|
|
||||||
|
|
||||||
## Gitea 数据库选择sqlite3
|
|
||||||
|
|
||||||
/var/packages/gitea/var/data/gitea.db
|
|
||||||
|
|
||||||
<http://192.168.123.21:8418/>
|
|
||||||
|
|
||||||
sc-gitea
|
|
||||||
|
|
||||||
/volume3/gitea-share/gitea-repositories
|
|
||||||
|
|
||||||
用户名:giteahhg
|
|
||||||
|
|
||||||
usfjdmmmgitea1123
|
|
||||||
|
|
||||||
访问地址: <https://git.haiguang.xyz/>
|
|
||||||
|
|
||||||
登录用户: giteahhg
|
|
||||||
|
|
||||||
## MariaDB10 on port 3307数据库信息(未使用)
|
|
||||||
|
|
||||||
==========================================
|
|
||||||
Gitea Database Initialization
|
|
||||||
MariaDB10 on port 3307
|
|
||||||
==========================================
|
|
||||||
|
|
||||||
Database Configuration:
|
|
||||||
|
|
||||||
Database: gitea
|
|
||||||
|
|
||||||
Username: gitea
|
|
||||||
|
|
||||||
Password: gitea_secure_2026
|
|
||||||
|
|
||||||
Port: 3307
|
|
||||||
|
|
||||||
Socket: /run/mysqld/mysqld10.sock
|
|
||||||
|
|
||||||
⚠️ Please change the password before running!
|
|
||||||
|
|
||||||
Cancelled
|
|
||||||
|
|
||||||
## **全部搞定!HTTPS 证书已自动部署。**
|
|
||||||
|
|
||||||
现在你可以浏览器打开:
|
|
||||||
|
|
||||||
**[https://git.haiguang.xyz](https://git.haiguang.xyz/)**
|
|
||||||
|
|
||||||
完成 Gitea 初始化设置,注意:
|
|
||||||
|
|
||||||
- 数据库选 **SQLite**
|
|
||||||
- **ROOT_URL** 设为 `https://git.haiguang.xyz`
|
|
||||||
- 设好管理员账号密码
|
|
||||||
|
|
||||||
HTTPS 证书到期日 2026-06-26,certbot 已配好自动续期,
|
|
||||||
|
|
||||||
## FRP 内网穿透方案详解
|
|
||||||
|
|
||||||
架构图
|
|
||||||
|
|
||||||
Copy
|
|
||||||
|
|
||||||
你的电脑/手机
|
|
||||||
|
|
||||||
│
|
|
||||||
|
|
||||||
▼
|
|
||||||
|
|
||||||
互联网
|
|
||||||
|
|
||||||
│
|
|
||||||
|
|
||||||
▼
|
|
||||||
|
|
||||||
腾讯云VPS (公网IP) ← frps 服务端
|
|
||||||
|
|
||||||
:443 / :80 ← Nginx 反代
|
|
||||||
|
|
||||||
│
|
|
||||||
|
|
||||||
FRP隧道 ← 加密通道
|
|
||||||
|
|
||||||
│
|
|
||||||
|
|
||||||
▼
|
|
||||||
|
|
||||||
群晖NAS (内网) ← frpc 客户端
|
|
||||||
|
|
||||||
:3000 (Gitea)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
一、腾讯云VPS端(服务端 frps)
|
|
||||||
|
|
||||||
1. 下载安装
|
|
||||||
bash
|
|
||||||
Copy
|
|
||||||
|
|
||||||
# 下载frp(以amd64为例)
|
|
||||||
|
|
||||||
wget <https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz>
|
|
||||||
|
|
||||||
tar -xzf frp_0.61.1_linux_amd64.tar.gz
|
|
||||||
|
|
||||||
cd frp_0.61.1_linux_amd64
|
|
||||||
|
|
||||||
# 只需要 frps 和 frps.toml
|
|
||||||
|
|
||||||
2. 配置 frps.toml
|
|
||||||
toml
|
|
||||||
Copy
|
|
||||||
bindPort = 7000 # FRP通信端口(客户端连接用)
|
|
||||||
auth.token = "你的强密码" # 认证令牌,客户端必须一致
|
|
||||||
|
|
||||||
# Dashboard(可选,方便看连接状态)
|
|
||||||
|
|
||||||
webServer.addr = "0.0.0.0"
|
|
||||||
|
|
||||||
webServer.port = 7500
|
|
||||||
|
|
||||||
webServer.user = "admin"
|
|
||||||
|
|
||||||
webServer.password = "你的dashboard密码"
|
|
||||||
|
|
||||||
3. 资源占用
|
|
||||||
|
|
||||||
- 内存:约 10-20MB
|
|
||||||
- 几乎可以忽略不计,对你的VPS没压力
|
|
||||||
4. systemd 服务(开机自启)
|
|
||||||
ini
|
|
||||||
Copy
|
|
||||||
|
|
||||||
# /etc/systemd/system/frps.service
|
|
||||||
|
|
||||||
[Unit]
|
|
||||||
|
|
||||||
Description=FRP Server
|
|
||||||
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
|
|
||||||
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.toml
|
|
||||||
|
|
||||||
Restart=always
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
|
|
||||||
5. 腾讯云防火墙
|
|
||||||
|
|
||||||
- 开放 7000 端口(FRP通信)
|
|
||||||
- 7500 可选(Dashboard,建议仅限内网或白名单IP访问)
|
|
||||||

|
|
||||||
二、群晖NAS端(客户端 frpc)
|
|
||||||
6. 安装方式
|
|
||||||
- 方式A:群晖套件中心搜索 "FRP"(有第三方套件)
|
|
||||||
- 方式B:SSH 登录 NAS,手动下载 Linux ARM/x86 版本
|
|
||||||
7. 配置 frpc.toml
|
|
||||||
toml
|
|
||||||
Copy
|
|
||||||
serverAddr = "你的VPS公网IP" # 或域名
|
|
||||||
serverPort = 7000
|
|
||||||
auth.token = "你的强密码" # 与服务端一致
|
|
||||||
|
|
||||||
# Gitea HTTP 服务穿透
|
|
||||||
|
|
||||||
[[proxies]]
|
|
||||||
|
|
||||||
name = "gitea"
|
|
||||||
|
|
||||||
type = "tcp"
|
|
||||||
|
|
||||||
localIP = "127.0.0.1"
|
|
||||||
|
|
||||||
localPort = 3000 # NAS上Gitea的端口
|
|
||||||
|
|
||||||
remotePort = 0 # 不指定,服务端自动分配
|
|
||||||
|
|
||||||
# Gitea SSH(可选,git clone用SSH协议)
|
|
||||||
|
|
||||||
[[proxies]]
|
|
||||||
|
|
||||||
name = "gitea-ssh"
|
|
||||||
|
|
||||||
type = "tcp"
|
|
||||||
|
|
||||||
localIP = "127.0.0.1"
|
|
||||||
|
|
||||||
localPort = 2222 # NAS上Gitea SSH端口
|
|
||||||
|
|
||||||
remotePort = 0
|
|
||||||
|
|
||||||
3. remotePort = 0 的含义
|
|
||||||
|
|
||||||
- 让 frps 自动分配远程端口(避免端口冲突)
|
|
||||||
- 启动后 Dashboard 会显示分配的端口号
|
|
||||||
- 也可以指定固定端口,比如 remotePort = 13000
|
|
||||||

|
|
||||||
三、Nginx 反代(腾讯云VPS上,已有Nginx)
|
|
||||||
把分配到的端口反代到 80/443 + 域名:
|
|
||||||
nginx
|
|
||||||
Copy
|
|
||||||
server {
|
|
||||||
listen 443 ssl;
|
|
||||||
server_name git.yourdomain.com; # 你的域名
|
|
||||||
|
|
||||||
ssl_certificate /path/to/cert.pem;
|
|
||||||
|
|
||||||
ssl_certificate_key /path/to/key.pem;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
|
|
||||||
proxy_pass <http://127.0.0.1:13000>; # frp分配的远程端口
|
|
||||||
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
|
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
|
||||||
|
|
||||||
# WebSocket支持(Gitea需要)
|
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
|
||||||
proxy_set_header Connection "upgrade";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
四、安全加固(重要)
|
|
||||||
|
|
||||||
措施
|
|
||||||
|
|
||||||
说明
|
|
||||||
|
|
||||||
auth.token
|
|
||||||
|
|
||||||
强密码,防止别人连你的frps
|
|
||||||
|
|
||||||
限制Dashboard
|
|
||||||
|
|
||||||
7500端口不要对公网开放,或加IP白名单
|
|
||||||
|
|
||||||
TLS加密
|
|
||||||
|
|
||||||
frpc↔frps 通信建议启用 TLS
|
|
||||||
|
|
||||||
Nginx HTTPS
|
|
||||||
|
|
||||||
对外必须走HTTPS,保护Git凭证
|
|
||||||
|
|
||||||
Gitea自身认证
|
|
||||||
|
|
||||||
禁止公开注册,启用两步验证
|
|
||||||
|
|
||||||
frps 开启 TLS:
|
|
||||||
|
|
||||||
toml
|
|
||||||
|
|
||||||
Copy
|
|
||||||
|
|
||||||
# frps.toml
|
|
||||||
|
|
||||||
transport.tls.force = true
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
五、完整流程总结
|
|
||||||
|
|
||||||
Copy
|
|
||||||
|
|
||||||
1. VPS上装 frps → 配置 → 启动 → 开防火墙端口
|
|
||||||
2. NAS上装 Gitea → 配置 SQLite → 启动
|
|
||||||
3. NAS上装 frpc → 配置连接VPS → 启动
|
|
||||||
4. frps分配端口(如13000) → Nginx反代 + HTTPS
|
|
||||||
5. 域名解析 git.yourdomain.com → VPS IP
|
|
||||||
6. 完成!浏览器访问 git.yourdomain.com,git clone/push 走HTTPS
|
|
||||||

|
|
||||||
六、成本与资源
|
|
||||||
项目
|
|
||||||
开销
|
|
||||||
FRP软件
|
|
||||||
免费
|
|
||||||
VPS frps 内存
|
|
||||||
~15MB
|
|
||||||
NAS frpc 内存
|
|
||||||
~10MB
|
|
||||||
额外磁盘
|
|
||||||
几乎为零
|
|
||||||
域名
|
|
||||||
你已有,加一条DNS解析就行
|
|
||||||
对你现有VPS的影响: 几乎可忽略。15MB内存 + 一个端口,不会对OpenClaw产生任何影响。
|
|
||||||

|
|
||||||
七、注意事项
|
|
||||||
- Git大文件传输:速度取决于VPS带宽(腾讯云轻量服务器带宽一般不大),如果仓库有大量大文件可能偏慢
|
|
||||||
- 断线重连:frpc 会自动重连,NAS重启后也会自动恢复(配了systemd/套件自启)
|
|
||||||
- 多服务穿透:以后如果NAS还有其他服务(Jellyfin、WebDAV等),加一个 [[proxies]] 就行
|
|
||||||
|
|
||||||
## ✅ FRP 服务端部署完成
|
|
||||||
|
|
||||||
**版本:** FRP v0.68.0
|
|
||||||
|
|
||||||
**内存占用:** 9.3MB(很轻量)
|
|
||||||
|
|
||||||
**状态:** 运行中,已设为开机自启
|
|
||||||
|
|
||||||
### 🔑 NAS 端连接信息(请保密)
|
|
||||||
|
|
||||||
|参数|值|
|
|
||||||
|---|---|
|
|
||||||
|serverAddr|`82.156.57.104`|
|
|
||||||
|serverPort|`700`|
|
|
||||||
|auth.token|`deb19f52ac7fa6423efcd1a3fbf9c2b7`|
|
|
||||||
|TLS加密|必须开启(`transport.tls.enable = true`)|
|
|
||||||
|
|
||||||
### 📋 NAS 端 frpc.toml 配置模板
|
|
||||||
|
|
||||||
Copy
|
|
||||||
|
|
||||||
```toml
|
|
||||||
serverAddr = "82.156.57.104"
|
|
||||||
serverPort = 700
|
|
||||||
auth.token = "deb19f52ac7fa6423efcd1a3fbf9c2b7"
|
|
||||||
|
|
||||||
transport.tls.enable = true
|
|
||||||
|
|
||||||
# Gitea HTTP
|
|
||||||
[[proxies]]
|
|
||||||
name = "gitea"
|
|
||||||
type = "tcp"
|
|
||||||
localIP = "127.0.0.1"
|
|
||||||
localPort = 300
|
|
||||||
remotePort = 1300
|
|
||||||
|
|
||||||
# Gitea SSH(可选)
|
|
||||||
[[proxies]]
|
|
||||||
name = "gitea-ssh"
|
|
||||||
type = "tcp"
|
|
||||||
localIP = "127.0.0.1"
|
|
||||||
localPort = 222
|
|
||||||
remotePort = 13022
|
|
||||||
``
|
|
||||||
|
|
||||||
### ⚠️ 你需要手动操作
|
|
||||||
|
|
||||||
去**腾讯云控制台 → 安全组**放行以下端口:
|
|
||||||
- **TCP 700**(FRP通信,NAS必须能连上)
|
|
||||||
- 建议来源限制为 NAS 的公网IP(如果有的话)
|
|
||||||
|
|
||||||
Dashboard 750 仅本地监听,无需放行 ✅
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
配置文件和Nginx反代模板已保存到 memory 目录。NAS 端
|
|
||||||
```
|
|
||||||
|
|
||||||
serverAddr = "82.156.57.104"
|
|
||||||
|
|
||||||
serverPort = 7000
|
|
||||||
|
|
||||||
auth.token = "deb19f52ac7fa6423efcd1a3fbf9c2b7"
|
|
||||||
|
|
||||||
transport.tls.enable = true
|
|
||||||
|
|
||||||
# Gitea HTTP
|
|
||||||
|
|
||||||
[[proxies]]
|
|
||||||
|
|
||||||
name = "gitea"
|
|
||||||
|
|
||||||
type = "tcp"
|
|
||||||
|
|
||||||
localIP = "127.0.0.1"
|
|
||||||
|
|
||||||
localPort = 3000
|
|
||||||
|
|
||||||
remotePort = 13000
|
|
||||||
|
|
||||||
# Gitea SSH(可选)
|
|
||||||
|
|
||||||
[[proxies]]
|
|
||||||
|
|
||||||
name = "gitea-ssh"
|
|
||||||
|
|
||||||
type = "tcp"
|
|
||||||
|
|
||||||
localIP = "127.0.0.1"
|
|
||||||
|
|
||||||
localPort = 2222
|
|
||||||
|
|
||||||
remotePort = 13022
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
created: 2026-03-31
|
|
||||||
tags:
|
|
||||||
- note
|
|
||||||
- journal
|
|
||||||
- 工具/git
|
|
||||||
para: []
|
|
||||||
---
|
|
||||||
|
|
||||||
![[个人Git服务部署指南#使用指南]]
|
|
||||||
@@ -1,447 +0,0 @@
|
|||||||
---
|
|
||||||
title: 个人Git服务部署指南
|
|
||||||
date: 2026-03-29
|
|
||||||
tags:
|
|
||||||
- git
|
|
||||||
- gitea
|
|
||||||
- frp
|
|
||||||
- nginx
|
|
||||||
- 运维
|
|
||||||
aliases:
|
|
||||||
- Git服务部署
|
|
||||||
- FRP内网穿透
|
|
||||||
- Gitea安装
|
|
||||||
---
|
|
||||||
|
|
||||||
# 个人Git服务部署指南
|
|
||||||
|
|
||||||
> 基于 FRP 内网穿透 + Gitea + Nginx 反代 + Let's Encrypt HTTPS 的完整个人 Git 服务方案。内网群晖 NAS 运行 Gitea,通过腾讯云 VPS 中转暴露到公网。
|
|
||||||
|
|
||||||
## 架构概览
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
graph LR
|
|
||||||
A[用户浏览器] -->|HTTPS| B[腾讯云VPS]
|
|
||||||
A -->|git clone/push| B
|
|
||||||
B -->|Nginx反代| C[frps:13000]
|
|
||||||
C -->|FRP隧道<br/>TLS加密| D[frpc]
|
|
||||||
D -->|TCP| E[NAS Gitea:8418]
|
|
||||||
```
|
|
||||||
|
|
||||||
## 环境信息
|
|
||||||
|
|
||||||
### VPS(腾讯云轻量应用服务器)
|
|
||||||
|
|
||||||
| 项目 | 值 |
|
|
||||||
|------|-----|
|
|
||||||
| 系统 | Ubuntu 24.04.4 LTS |
|
|
||||||
| CPU | 2核 AMD EPYC 7K62 |
|
|
||||||
| 内存 | 2GB(可用约640MB) |
|
|
||||||
| 磁盘 | 40GB(可用14GB) |
|
|
||||||
| 公网IP | 82.156.57.104 |
|
|
||||||
| 已有服务 | Nginx、OpenClaw Gateway、CouchDB |
|
|
||||||
|
|
||||||
### NAS(群晖)
|
|
||||||
|
|
||||||
| 项目 | 值 |
|
|
||||||
|------|-----|
|
|
||||||
| 内网IP | 192.168.123.21 |
|
|
||||||
| Gitea端口 | 8418 |
|
|
||||||
| Gitea SSH端口 | 10022 |
|
|
||||||
| FRP客户端 | frpc v0.68.0 |
|
|
||||||
|
|
||||||
### 域名
|
|
||||||
|
|
||||||
| 项目 | 值 |
|
|
||||||
|------|-----|
|
|
||||||
| 域名 | git.haiguang.xyz |
|
|
||||||
| DNS服务商 | 腾讯云 |
|
|
||||||
| 记录类型 | A 记录 → 82.156.57.104 |
|
|
||||||
| HTTPS | Let's Encrypt(自动续期) |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 部署过程
|
|
||||||
|
|
||||||
### 第一步:方案选型
|
|
||||||
|
|
||||||
> [!tip] 选型结论
|
|
||||||
> 经过对比 Gitea vs Gogs、SQLite vs MySQL/PostgreSQL、FRP vs Tailscale,最终选择:**Gitea + SQLite + FRP**。
|
|
||||||
|
|
||||||
**对比记录:**
|
|
||||||
|
|
||||||
| 维度 | Gitea ✅ | Gogs | GitLab ❌ |
|
|
||||||
|------|---------|------|---------|
|
|
||||||
| 最低内存 | ~200MB | ~100MB | ≥4GB |
|
|
||||||
| 功能完整度 | PR/Actions/包管理/Wiki | 基础 | 全功能 |
|
|
||||||
| CI/CD | 内置 Actions | 需外接 | 内置 |
|
|
||||||
| 社区活跃度 | 非常活跃 | 维护模式 | 活跃 |
|
|
||||||
|
|
||||||
| 维度 | SQLite ✅ | MySQL | PostgreSQL | CouchDB(已有) |
|
|
||||||
|------|---------|-------|-----------|---------------|
|
|
||||||
| 额外内存 | 0 | ~200MB | ~200MB | ~43MB |
|
|
||||||
| 额外部署 | 无 | 需安装 | 需安装 | 已有 |
|
|
||||||
| Gitea支持 | ✅ | ✅ | ✅ | ❌ |
|
|
||||||
|
|
||||||
| 维度 | FRP ✅ | Tailscale | Cloudflare Tunnel |
|
|
||||||
|------|--------|-----------|-------------------|
|
|
||||||
| 每台设备装客户端 | 不需要 | 需要 | 不需要 |
|
|
||||||
| 传输方式 | 中继 | P2P优先 | 中继 |
|
|
||||||
| 部署复杂度 | 低 | 中 | 中 |
|
|
||||||
| 适用场景 | 少设备通用访问 | 多设备频繁访问 | HTTP-only |
|
|
||||||
|
|
||||||
> [!warning] Tailscale 不选的原因
|
|
||||||
> - 家宽NAT穿透不稳定,手机4G大概率走DERP中继(速度与FRP相当)
|
|
||||||
> - 每台设备都要装客户端,临时借用电脑不方便
|
|
||||||
> - VPS带宽才是瓶颈(~2.8Mbps),P2P优势有限
|
|
||||||
|
|
||||||
### 第二步:FRP 服务端部署(VPS)
|
|
||||||
|
|
||||||
**1. 下载安装**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 下载 FRP v0.68.0
|
|
||||||
wget https://github.com/fatedier/frp/releases/download/v0.68.0/frp_0.68.0_linux_amd64.tar.gz
|
|
||||||
tar -xzf frp_0.68.0_linux_amd64.tar.gz -C /opt/
|
|
||||||
mv /opt/frp_0.68.0_linux_amd64 /opt/frp
|
|
||||||
ln -s /opt/frp/frps /usr/local/bin/frps
|
|
||||||
```
|
|
||||||
|
|
||||||
**2. 配置 frps.toml**
|
|
||||||
|
|
||||||
```toml
|
|
||||||
# FRP 服务端配置
|
|
||||||
bindPort = 7000 # 客户端连接端口
|
|
||||||
|
|
||||||
[auth]
|
|
||||||
token = "你的强密码" # 认证令牌(两端必须一致)
|
|
||||||
|
|
||||||
[transport]
|
|
||||||
tls.force = true # 强制TLS加密
|
|
||||||
|
|
||||||
[webServer]
|
|
||||||
addr = "127.0.0.1" # Dashboard仅本地访问
|
|
||||||
port = 7500
|
|
||||||
user = "admin"
|
|
||||||
password = "你的密码"
|
|
||||||
```
|
|
||||||
|
|
||||||
**3. systemd 服务**
|
|
||||||
|
|
||||||
```ini
|
|
||||||
# /etc/systemd/system/frps.service
|
|
||||||
[Unit]
|
|
||||||
Description=FRP Server Service
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
User=nobody
|
|
||||||
Restart=on-failure
|
|
||||||
RestartSec=5s
|
|
||||||
ExecStart=/usr/local/bin/frps -c /opt/frp/frps.toml
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
```
|
|
||||||
|
|
||||||
**4. 启动**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl enable --now frps
|
|
||||||
```
|
|
||||||
|
|
||||||
**5. 腾讯云安全组放行**
|
|
||||||
|
|
||||||
| 端口 | 协议 | 来源 | 用途 |
|
|
||||||
|------|------|------|------|
|
|
||||||
| 7000 | TCP | 0.0.0.0/0 | FRP通信 |
|
|
||||||
| 13000 | TCP | 0.0.0.0/0 | Gitea Web |
|
|
||||||
| 10022 | TCP | 0.0.0.0/0 | Gitea SSH(可选) |
|
|
||||||
|
|
||||||
### 第三步:FRP 客户端配置(NAS)
|
|
||||||
|
|
||||||
```toml
|
|
||||||
serverAddr = "82.156.57.104"
|
|
||||||
serverPort = 7000
|
|
||||||
auth.method = "token"
|
|
||||||
auth.token = "你的token"
|
|
||||||
transport.tls.enable = true
|
|
||||||
log.to = "/var/log/frpc.log"
|
|
||||||
log.level = "info"
|
|
||||||
log.maxDays = 7
|
|
||||||
|
|
||||||
[[proxies]]
|
|
||||||
name = "gitea-web"
|
|
||||||
type = "tcp"
|
|
||||||
localIP = "127.0.0.1"
|
|
||||||
localPort = 8418
|
|
||||||
remotePort = 13000
|
|
||||||
|
|
||||||
[[proxies]]
|
|
||||||
name = "gitea-ssh"
|
|
||||||
type = "tcp"
|
|
||||||
localIP = "127.0.0.1"
|
|
||||||
localPort = 10022
|
|
||||||
remotePort = 10022
|
|
||||||
```
|
|
||||||
|
|
||||||
### 第四步:DNS 解析
|
|
||||||
|
|
||||||
在腾讯云 DNS 解析添加:
|
|
||||||
|
|
||||||
| 类型 | 主机记录 | 记录值 |
|
|
||||||
|------|---------|--------|
|
|
||||||
| A | git | 82.156.57.104 |
|
|
||||||
|
|
||||||
> [!warning] 域名注意事项
|
|
||||||
> - 确认域名 DNS 服务器是腾讯云 DNSPod(ns1/ns2.dnspod.net)
|
|
||||||
> - 如果用了第三方 DNS(如加速乐),在腾讯云加的记录不会生效
|
|
||||||
> - `haiguang.com` 用了加速乐 DNS,改用 `haiguang.xyz` 解决
|
|
||||||
|
|
||||||
### 第五步:Nginx 反代 + HTTPS
|
|
||||||
|
|
||||||
**1. HTTP 反代配置**
|
|
||||||
|
|
||||||
```nginx
|
|
||||||
# /etc/nginx/sites-available/gitea
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
listen [::]:80;
|
|
||||||
server_name git.haiguang.xyz;
|
|
||||||
|
|
||||||
access_log /var/log/nginx/gitea-access.log;
|
|
||||||
error_log /var/log/nginx/gitea-error.log;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
proxy_pass http://127.0.0.1:13000;
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
|
||||||
proxy_set_header Connection "upgrade";
|
|
||||||
client_max_body_size 100m;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**2. Let's Encrypt 证书**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 安装 certbot
|
|
||||||
apt install certbot python3-certbot-nginx
|
|
||||||
|
|
||||||
# 签发证书并自动配置HTTPS
|
|
||||||
certbot --nginx -d git.haiguang.xyz
|
|
||||||
```
|
|
||||||
|
|
||||||
certbot 会自动修改 Nginx 配置,添加 HTTPS 监听和证书路径。
|
|
||||||
|
|
||||||
### 第六步:Gitea 初始化
|
|
||||||
|
|
||||||
通过 `https://git.haiguang.xyz` 访问,完成初始设置:
|
|
||||||
|
|
||||||
- 数据库:**SQLite**(无需额外部署)
|
|
||||||
- ROOT_URL:`https://git.haiguang.xyz/`
|
|
||||||
- 禁止公开注册
|
|
||||||
- 设置管理员账号
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 关键参数速查
|
|
||||||
|
|
||||||
### 端口映射
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
graph TD
|
|
||||||
subgraph VPS ["腾讯云 VPS (82.156.57.104)"]
|
|
||||||
A[":7000 frps通信"]
|
|
||||||
B[":13000 → Gitea Web"]
|
|
||||||
C[":10022 → Gitea SSH"]
|
|
||||||
D[":443 Nginx HTTPS"]
|
|
||||||
E[":80 Nginx HTTP→HTTPS"]
|
|
||||||
D -->|反代| B
|
|
||||||
end
|
|
||||||
|
|
||||||
subgraph NAS ["群晖 NAS (192.168.123.21)"]
|
|
||||||
F["frpc"]
|
|
||||||
G[":8418 Gitea Web"]
|
|
||||||
H[":10022 Gitea SSH"]
|
|
||||||
F -->|隧道| A
|
|
||||||
B -->|穿透| G
|
|
||||||
C -->|穿透| H
|
|
||||||
end
|
|
||||||
```
|
|
||||||
|
|
||||||
| 位置 | 端口 | 服务 | 说明 |
|
|
||||||
|------|------|------|------|
|
|
||||||
| VPS | 7000 | frps | FRP通信(必须开放) |
|
|
||||||
| VPS | 13000 | frps代理 | Gitea Web穿透端口 |
|
|
||||||
| VPS | 10022 | frps代理 | Gitea SSH穿透端口 |
|
|
||||||
| VPS | 80/443 | Nginx | 对外HTTPS访问 |
|
|
||||||
| NAS | 8418 | Gitea | Web服务 |
|
|
||||||
| NAS | 10022 | Gitea | SSH服务 |
|
|
||||||
|
|
||||||
### 文件路径
|
|
||||||
|
|
||||||
| 文件 | 路径 |
|
|
||||||
|------|------|
|
|
||||||
| frps 二进制 | /usr/local/bin/frps |
|
|
||||||
| frps 配置 | /opt/frp/frps.toml |
|
|
||||||
| frps 服务 | /etc/systemd/system/frps.service |
|
|
||||||
| Nginx Gitea配置 | /etc/nginx/sites-available/gitea |
|
|
||||||
| HTTPS证书 | /etc/letsencrypt/live/git.haiguang.xyz/ |
|
|
||||||
| HTTPS密钥 | /etc/letsencrypt/live/git.haiguang.xyz/privkey.pem |
|
|
||||||
|
|
||||||
### 认证信息
|
|
||||||
|
|
||||||
> [!danger] 敏感信息,注意保密
|
|
||||||
|
|
||||||
| 项目 | 值 | 说明 |
|
|
||||||
|------|-----|------|
|
|
||||||
| frps auth.token | deb***c2b7 | FRP通信认证 |
|
|
||||||
| frps TLS | 强制开启 | 传输加密 |
|
|
||||||
| Dashboard | 127.0.0.1:7500 | 仅本地访问 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 使用指南
|
|
||||||
|
|
||||||
### 通过浏览器访问
|
|
||||||
|
|
||||||
直接打开 **<https://git.haiguang.xyz>** 即可。
|
|
||||||
|
|
||||||
### 通过 Git 命令行
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# HTTPS 方式(推荐,无需端口)
|
|
||||||
git clone https://git.haiguang.xyz/username/repo.git
|
|
||||||
git push origin main
|
|
||||||
|
|
||||||
# SSH 方式(需配置端口10022)
|
|
||||||
git clone ssh://git@git.haiguang.xyz:10022/username/repo.git
|
|
||||||
```
|
|
||||||
|
|
||||||
### 配置 Git SSH(可选)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 生成密钥
|
|
||||||
ssh-keygen -t ed25519 -C "your@email.com"
|
|
||||||
|
|
||||||
# 添加到 Gitea → 设置 → SSH/GPG Keys
|
|
||||||
|
|
||||||
# 测试连接
|
|
||||||
ssh -T -p 10022 git@git.haiguang.xyz
|
|
||||||
```
|
|
||||||
|
|
||||||
### 添加远程仓库(已有项目迁移)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd existing-project
|
|
||||||
git remote add origin https://git.haiguang.xyz/username/repo.git
|
|
||||||
git push -u origin main
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 日常维护
|
|
||||||
|
|
||||||
### 检查服务状态
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# FRP服务端
|
|
||||||
systemctl status frps
|
|
||||||
|
|
||||||
# FRP客户端连接日志
|
|
||||||
journalctl -u frps --no-pager -n 20
|
|
||||||
|
|
||||||
# Nginx
|
|
||||||
/usr/sbin/nginx -t
|
|
||||||
|
|
||||||
# 证书到期检查
|
|
||||||
certbot certificates
|
|
||||||
```
|
|
||||||
|
|
||||||
### 常见问题排查
|
|
||||||
|
|
||||||
> [!bug] frpc 连接失败
|
|
||||||
> 1. 检查腾讯云安全组是否放行 7000 端口
|
|
||||||
> 2. 检查 frpc 的 token 是否与 frps 一致
|
|
||||||
> 3. 检查 `transport.tls.enable` 是否开启
|
|
||||||
> 4. 查看 frpc 日志:`cat /var/log/frpc.log`
|
|
||||||
|
|
||||||
> [!bug] proxy already exists
|
|
||||||
> 旧连接未断开,重启 frps 解决:`systemctl restart frps`
|
|
||||||
|
|
||||||
> [!bug] Gitea 页面链接错误
|
|
||||||
> 检查 `app.ini` 中 `ROOT_URL` 是否设为 `https://git.haiguang.xyz/`
|
|
||||||
|
|
||||||
> [!bug] Git clone/push 失败
|
|
||||||
> 1. HTTPS 方式:检查证书是否有效,防火墙是否放行 443
|
|
||||||
> 2. SSH 方式:检查端口 10022 是否放行,SSH 密钥是否添加
|
|
||||||
|
|
||||||
### 证书续期
|
|
||||||
|
|
||||||
certbot 已自动配置续期,无需手动操作。可以手动测试:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
certbot renew --dry-run
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 扩展:穿透更多服务
|
|
||||||
|
|
||||||
在 NAS 的 frpc.toml 中添加新的 `[[proxies]]` 即可:
|
|
||||||
|
|
||||||
```toml
|
|
||||||
# 示例:穿透群晖 WebDAV
|
|
||||||
[[proxies]]
|
|
||||||
name = "webdav"
|
|
||||||
type = "tcp"
|
|
||||||
localIP = "127.0.0.1"
|
|
||||||
localPort = 5005
|
|
||||||
remotePort = 13001
|
|
||||||
|
|
||||||
# 示例:穿透 Jellyfin
|
|
||||||
[[proxies]]
|
|
||||||
name = "jellyfin"
|
|
||||||
type = "tcp"
|
|
||||||
localIP = "127.0.0.1"
|
|
||||||
localPort = 8096
|
|
||||||
remotePort = 13002
|
|
||||||
```
|
|
||||||
|
|
||||||
然后在 VPS Nginx 中添加对应的反代和域名即可。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 经验教训
|
|
||||||
|
|
||||||
> [!warning] 坑1:FRP proxy type 选错
|
|
||||||
> frpc 中 gitea-web 的 `type` 不能用 `http`,除非 frps 配置了 `vhostHTTPPort`。**直接用 `type = "tcp"` 最简单可靠。**
|
|
||||||
|
|
||||||
> [!warning] 坑2:多个 frpc 实例冲突
|
|
||||||
> NAS 上可能同时跑了多个 frpc 进程,导致 proxy name 冲突(`proxy already exists`)。修改配置后确保**先停旧进程再启新进程**。
|
|
||||||
|
|
||||||
> [!warning] 坑3:remotePort 与 VPS 服务冲突
|
|
||||||
> `remotePort = 3000` 会和常见服务冲突。建议穿透端口用 `13xxx` 或 `10xxx` 段。
|
|
||||||
|
|
||||||
> [!warning] 坑4:域名 DNS 服务器不在腾讯云
|
|
||||||
> `haiguang.com` 的 DNS 指向加速乐,在腾讯云加的 A 记录不会生效。解决:换用 `haiguang.xyz`(DNS 在腾讯云)。
|
|
||||||
|
|
||||||
> [!warning] 坑5:Gitea ROOT_URL 未更新
|
|
||||||
> Gitea 安装时 ROOT_URL 默认是内网地址(如 `http://192.168.123.21:8418/`),必须改为 `https://git.haiguang.xyz/`,否则页面链接、Webhook、OAuth 等功能全部异常。
|
|
||||||
|
|
||||||
> [!tip] 资源紧张时的优化建议
|
|
||||||
> - VPS 内存仅 2GB,OpenClaw 占 47%,选择 SQLite 而非 MySQL/PostgreSQL 节省了约 200MB
|
|
||||||
> - frps 仅占 9MB,几乎无感
|
|
||||||
> - 如果后续需要更多服务穿透,建议升级 VPS 内存到 4GB
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*部署时间:2026-03-28 ~ 2026-03-29*
|
|
||||||
|
|
||||||
*文档更新:2026-03-29*
|
|
||||||
Reference in New Issue
Block a user