Skip to content

在 Debian 12 上安装 Forgejo 配置私有 Git

Published: at 04:44编辑

Forgejo 起源于 Gitea 的一次“软分叉”,并在 2024 年初演变为硬分叉。Gitea 是 Gogs 的继任者,而 Forgejo 则是在 Gitea 的基础上进一步发展而来,不仅提供更强大的功能也提供了更好的用户体验。Forgejo 是在 2022 年 10 月 Gitea 的域名和商标未经社区同意被转让给一家营利性公司后,作为社区驱动的替代方案而创立,现由非营利组织 Codeberg e.V. 管理,致力于为公共利益服务。

0x00 与其他竞品对比

你可能会说为什么不用 GitLab 呢?

Forgejo 拥有相对轻量的架构,它是一个用 Go 编写的单一二进制文件,并且提供官方的 Docker 镜像,这使得部署和维护变得非常简单,尤其适合资源有限的小型团队或个人开发者。相比之下,GitLab 是一个功能全面但更为复杂的系统,需要更多的服务器资源和更复杂的基础架构来运行,增加了运维成本

我在社交平台上看到过你推荐 OneDev,为什么不用它呢?

OneDev 打动我的是它的 UI/UX,但是对于一个有资源限制的系统来说,我认为 Forgejo 包含了大部分的功能,足够我自己用很长时间了

0x01 环境准备

处于安全原因,或者不想让文件系统一团糟,我选择使用 Docker 部署 Forgejo,方法也很简单,配置 docker-compose.yml 就好了:

services:
  server:
    image: codeberg.org/forgejo/forgejo:9
    container_name: forgejo
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    volumes:
      - ./data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - '127.0.0.1:3000:3000' # 写成 127.0.0.1 的原因是宿主机上有反代服务

这里要注意的是,映射目录如果出现 docker bind source path does not exist: /etc/timezone 错误,则需要检查宿主机是否存在 /etc/timezone 文件,如果不存在就删了这条映射罢,用环境变量 TZ=Asia/Shanghai 也不是不行

配置好反代后,就可以 docker compose up -d 了,之后访问 https://<YOUR_DOMAIN> 进入安装流程。具体流程和 Gitea 大差不差,配置项也都可以在 /data/gitea/conf/app.ini 里修改,这里不再赘述

0x02 管理设置

如果你和我一样喜欢读配置而不是冗长的文档,在 Codeberg 上你可以阅读 Forgejo 的示例 app.ini。如果你喜欢读文档,请前往 配↑置↓备↑忘↓录↑ 自行查看

这里我需要配置除了 Git 的内容都上传到 Cloudflare R2,按照 官方文档教程 我的配置应该长这样:

[storage]
STORAGE_TYPE = minio
MINIO_ENDPOINT = <ID>.r2.cloudflarestorage.com
MINIO_ACCESS_KEY_ID = <ACCESS_KEY_ID>
MINIO_SECRET_ACCESS_KEY = <ACCESS_KEY_SECRET>
MINIO_BUCKET = git
MINIO_LOCATION = auto
MINIO_USE_SSL = true           # 生产环境,应当启用 SSL
MINIO_CHECKSUM_ALGORITHM = md5 # Minio checksum algorithm: default (for MinIO, garage or AWS S3) or md5 (for Cloudflare or Backblaze)

另外我需要接入 932 统一通行证,所以我还需要进行如下配置:

[openid]
ENABLE_OPENID_SIGNIN = true
ENABLE_OPENID_SIGNUP = true

之后前往 网站管理 里添加 认证源 即可

另外我推荐你启用内置的 徽章 功能(因为好看),具体配置在 配↑置↓备↑忘↓录↑ 有写。

0x03 开始享用

我安装 Forgejo 主要是应对 Gitlab 将停止为中国区用户提供服务,强制中国开发者转移到付费的极狐,通过 Forgejo 内置的迁移仓库,可以很轻松的将仓库从远端拉取下来(虽然上次提交已经是三年前了),如果你想要使用镜像功能(如双向镜像),可以看看 用户手册

Forgejo 的迁移界面

Forgejo 的迁移界面

Forgejo 的 GitLab 迁移界面

Forgejo 的 GitLab 迁移界面

0x04 结语

如果你有统一通行证的访问权限,可以访问我的 自托管实例,只要确保 Git 仓库不要太大就好。感谢你阅读到这里,对本文有任何问题欢迎留言!


下一篇
水篇文章,介绍一下阿里云免费企业邮

人机验证:请刷新页面以加载评论区