Forgejo 支持 s3 存储,可以把除核心 repos 之外的文件存在云存储服务中。腾讯云的计算服务器的磁盘空间成本还是比较高的,因此腾讯云的 COS 就成了第一选择。不过,COS 与 S3/MiniIO 还是有些不同。本文记述 Forgejo 接入 COS 的过程。

创建专用子账户

登录腾讯云控制台,通过右上用户菜单,进入 访问管理 > 用户 > 用户列表,点击 新建用户,选择 快速创建。

  • 用户名:forgejo
  • 访问方式:勾选 编程访问
  • 权限:选择策略 QcloudAccessForAgsCosReadWrite

记录下密钥信息。

创建 COS Bucket

进入 对象存储,创建存储桶 forgejo。假设最终的桶名称是 forgejo-1300000000

进入桶权限管理,在用户权限处添加子帐号的权限,选择完全控制。

修改 Forgejo 配置

编辑 /etc/forgejo/app.ini

[storage]
STORAGE_TYPE = minio
MINIO_ENDPOINT = cos.ap-beijing.myqcloud.com
MINIO_ACCESS_KEY_ID = <YOUR_SECRET_ID>
MINIO_SECRET_ACCESS_KEY = <YOUR_SECRET_KEY>
MINIO_BUCKET = forgejo-1300000000
MINIO_LOCATION = ap-beijing
MINIO_USE_SSL = true
MINIO_CHECKSUM_ALGORITHM = md5
MINIO_BUCKET_LOOKUP = dns

[storage.lfs]
MINIO_BASE_PATH = lfs

[storage.attachments]
MINIO_BASE_PATH = attachments

[storage.releases]
MINIO_BASE_PATH = releases

[storage.avatars]
MINIO_BASE_PATH = avatars

[storage.repo-avatars]
MINIO_BASE_PATH = repo-avatars

[storage.packages]
MINIO_BASE_PATH = packages

[storage.actions]
MINIO_BASE_PATH = actions

重点是

MINIO_ENDPOINT = cos.ap-beijing.myqcloud.com
MINIO_BUCKET_LOOKUP = dns

AI 可能会建议切换到 SeaweedFS 或者 MiniIO,然后再寻另建同步到 COS 的策略。完全没有必要,尽管 COS 声称新桶不再支持虚拟目录风格,但是这样的配置是能够正常工作的。

然后重启 Forgejo,确认是否能正常工作。可以尝试修改 Forgejo 一个 账户/组织/仓库 的头像,看看腾讯控制台中桶的文件列表中 avatars 目录下是否有新文件生成。

经过我的测试,Forgejo 似乎不能将此前积累的本地文件自动上传到 COS,可能需要手动上传一次。