内网 Gitea 通过 FRP 公网访问配置教程(SSH + HTTP)
1️⃣ 环境概览
架构:
公网服务器(公网ip)
│ 7000, 7400 (FRP服务端)
│
▼
内网主机(192.168.1.180)
│ 22(SSH宿主机)、3000(Gitea HTTP)、2222(Gitea SSH 内部端口)
│
▼
Docker 容器 Gitea
│ 3000(HTTP)、22(SSH,映射到宿主机2222)- 目标:公网客户端可通过 SSH(端口59022)和 HTTP(端口59023)访问内网 Gitea。
- 工具:FRP 内网穿透 + Gitea Docker + SSH Key。
2️⃣ Docker 部署 Gitea
在内网主机执行:
docker run -d \
--name gitea \
-p 3000:3000 \ # HTTP
-p 222:22 \ # SSH
-v /data/gitea:/data \
gitea/gitea:latest- Gitea 内部 SSH 端口:22 → 宿主机映射 222
- Gitea HTTP 端口:3000 → 宿主机映射 3000
配置 Gitea
在 app.ini 中(位于 /data/gitea/custom/conf/app.ini):
[server]
DOMAIN = git.frp.beihong.wang
SSH_DOMAIN = git.frp.beihong.wang
HTTP_PORT = 3000
ROOT_URL = https://git.frp.beihong.wang/
DISABLE_SSH = false
SSH_PORT = 22 # 容器内端口
SSH_LISTEN_PORT = 223️⃣ 配置 FRP
FRP 客户端配置(运行在内网主机):
serverAddr = "8.155.166.96"
serverPort = 7000
auth.method = "token"
auth.token = "60d8a83c544e6168db"
webServer.addr = "0.0.0.0"
webServer.port = 7400
webServer.user = "frpc_user"
webServer.password = "e63bnK6FZRpDAjXm"
# Gitea HTTP 映射(可选)
[[proxies]]
name = "tai_git"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3000 # 宿主机 HTTP 端口
remotePort = 59023 # 公网访问端口
# Gitea SSH 映射
[[proxies]]
name = "gitea_ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 222 # 宿主机 Gitea SSH 映射端口
remotePort = 59022 # 公网访问端口FRP 服务端配置(运行在公网服务器):
[common]
bind_port = 7000
dashboard_port = 7400
dashboard_user = frpc_user
dashboard_pwd = e63bnK6FZRpDAjXm
vhost_http_timeout = 300启动 FRP:
# 服务端(公网)
./frps -c ./frps.ini
# 客户端(内网)
./frpc -c ./frpc.ini4️⃣ 客户端 SSH Key 配置
在本地开发机(客户端):
# 启动 SSH agent
eval "$(ssh-agent -s)"
# 添加私钥
ssh-add ~/.ssh/id_ed25519
# 验证
ssh-add -l将 公钥(~/.ssh/id_ed25519.pub)添加到 Gitea 的 SSH Keys 页面。
5️⃣ 配置 Git 远程仓库
修改 Git 远程 URL:
git remote set-url origin ssh://git@git.frp.beihong.wang:59022/用户名/仓库名.git- 这里
59022是 FRP 映射的 SSH 公网端口 git@git.frp.beihong.wang→ 公网 FRP 地址
第一次连接时:
ssh -p 59022 git@git.frp.beihong.wang
# 会提示 host key,输入 yes6️⃣ Git 推送
git push -u origin main成功输出示例:
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 20 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 659.06 KiB | 18.31 MiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To ssh://git.frp.beihong.wang:59022/用户名/仓库名.git
929f627..bfd2d9a main -> main
branch 'main' set up to track 'origin/main'.✅ 注意事项
端口映射冲突
- FRP TCP 端口不能重复。SSH(59022)和 HTTP(59023)分开映射。
Gitea SSH 端口
- Docker 容器内默认 22
- 宿主机映射 222 → FRP 映射 59022
SSH host key
本地 known_hosts 文件可能要删除旧条目:
ssh-keygen -R "[git.frp.beihong.wang]:59022"
HTTP 访问
- 如果只需要浏览器访问,可以用 59023 端口
- Git clone / push 优先用 SSH(稳定)
评论
暂无评论