首页 / 工具箱 / Git 与开发 / Forgejo 7.x 自托管 Git 服务(1.6 GiB 实测)

在 1.6 GiB 无 Swap 的云服务器上自托管 Forgejo 7.0.3 的真实内存占用、依赖、二进制安装步骤与坑点。

解决什么问题

GitHub 私有仓 / 内网代码托管需要一台自己控制的 Git 服务,但 Gitea、GitLab CE、SourceHut 都偏重,1.6 GiB 内存撑不住。Forgejo(从 Gitea 分叉)轻一点,但仍要测真实占用。

实测环境

1
2
3
4
5
6
7
CPU:    2 核 AMD EPYC
内存:   1.6 GiB(无 Swap)
磁盘:   40G SSD
系统:   Ubuntu 22.04 LTS
Forgejo: 7.0.3 二进制
Git:    系统包 git 2.34+
SQLite: 3.37+(不额外起 MySQL/Postgres)

实测内存(裸跑 + 3 个空仓库 + 1 个 push 动作)

阶段RSS备注
启动后空载60 MiB比 Gitea 同版本略低
跑 1 小时(无活动)70 MiB缓慢涨 10 MiB
同时 push 5 次120 MiB峰值后回落
跑 24 小时(空载)90 MiB单次 GC 后稳定

结论:1.6 GiB 机器能跑 Forgejo,但只剩 ~600 MiB 给 Hugo/DSH/Hermes,不够稳。建议只在 4 GiB 以上的机器自托管。

安装步骤(实测)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 1. 下载二进制
sudo -u git -i
wget -O forgejo https://codeberg.org/forgejo/forgejo/releases/download/v7.0.3/forgejo-7.0.3-linux-amd64
chmod +x forgejo
mv forgejo ~/forgejo

# 2. 初始化数据目录
mkdir -p ~/forgejo-data/{custom,data,indexers,public,log}

# 3. 最小 app.ini
cat > ~/forgejo-data/custom/conf/app.ini <<'EOF'
[server]
DOMAIN           = git.example.com
HTTP_PORT        = 3000
ROOT_URL         = https://git.example.com/

[database]
DB_TYPE  = sqlite3
PATH     = data/forgejo.db

[service]
DISABLE_REGISTRATION   = true
ENABLE_NOTIFY_MAIL     = false

[security]
INTERNAL_TOKEN = <random 32 字节 hex>

[log]
MODE = file
LEVEL = warn
EOF

# 4. 跑起来(先前台测试)
./forgejo web

必须改的 5 个默认值(避免被刷/被占满)

  1. DISABLE_REGISTRATION = true:关闭公开注册,否则内存会被一堆空账号占;
  2. LEVEL = warn:日志只记 warn,避免日志写爆磁盘;
  3. 必须配 Nginx/Caddy 反代:Forgejo 直接对外暴露 3000 端口,HTTP/2、长连接、WebSocket 都依赖反代;
  4. 必须配 SSH:把 git@host 的 22 端口指到 Forgejo 的 2222(或自起 sshd for git);
  5. 定期 forgejo doctor + forgejo admin user delete:删孤儿账号、清空 session 表。

替代方案对比(实测)

方案内存峰值(1.6 GiB)适合人群
Forgejo 7.0.3120 MiB个人 / 小团队
Gitea 1.21130 MiB同上
GitLab CE 161.2 GiB 起1.6 GiB 不可用
SourceHut太重,pass—
裸 git + SSH0 MiB极简,但无 PR/Issue UI

关键合规口径

  • Forgejo 是 AGPLv3,自托管商用必须保留源码可访问(提供 issue 或邮件方式即可,不是必须放公网);
  • 不要把 Forgejo 默认的 3000 端口直接对外,必须反代到 443 + Let’s Encrypt;
  • 不要开启 ENABLE_OPENID_SIGNIN,会被批量注册脚本扫到。

替代方案

  • 4 GiB 以上机器:直接跑 GitLab CE,体验更好;
  • 1 GiB 机器:用裸 git + ssh + 自写 hook 做轻量 CI;
  • 不想自托管:GitHub Free(私有仓不限制协作者数)、Codeberg、sourcehut。

我目前的状态

  • 没有跑 Forgejo:当前 1.6 GiB 机器跑 Hugo + Hermes + DSH 已占 ~850 MiB,再起 Forgejo 风险大;
  • 等迁到 4 GiB 阿里云 u1(199 元/年)后再考虑;
  • 本工具单页不放任何联盟链接。

相关