Gitea Docker 安装

使用 Gitea 安装自己的私有 git 仓库。

官方文档地址: 跳转

快速开始

本笔记使用 docker 快速部署安装。其他方式安装不太方便。

docker run -d --name gitea \
-v /mnt/zfs-raid5-pool/gitea:/data \
-p 53000:3000 \
-p 53022:22 \
--restart always \
-e SSH_DOMAIN=ssh.gits.chilisdy.site \
-e DOMAIN=gits.chilisdy.site \
-e ROOT_URL=https://gits.chilisdy.site \
-e DISABLE_REGISTRATION=true \
-e SSH_PORT=53022 \
-e SSH_LISTEN_PORT=22 \
gitea/gitea:1

镜像使用 gitea/gitea 的根据官方文档提示,默认的 latest 标签是最新的开发版本。如果想使用稳定版本的需要明确指定版本号,可以直接指定大的版本号或者具体的小版本号。

上面的命令我们指定了 httpsssh 的域名,指定了 ssh 的端口号,如果想使用默认的 22 号端口,那么外网的服务器 22 号端口就需要更换成别的。上面的示例还关闭了注册功能。

容器的所有持久化数据位置都在容器内的 /data 文件夹下。

docker 环境变量

  • APP_NAME“Gitea: Git with a cup of tea”:应用程序名称,在页面标题中使用。
  • RUN_MODEprod:应用程序运行模式,会影响性能和调试。“dev”,“prod"或"test”。
  • DOMAINlocalhost:此服务器的域名,用于 Gitea UI 中显示的 http 克隆 URL。
  • SSH_DOMAINlocalhost:该服务器的域名,用于 Gitea UI 中显示的 ssh 克隆 URL。如果启用了安装页面,则 SSH 域服务器将采用以下形式的 DOMAIN 值(保存时将覆盖此设置)。
  • SSH_PORT22:克隆 URL 中显示的 SSH 端口。
  • SSH_LISTEN_PORT%(SSH_PORT)s:内置 SSH 服务器的端口。
  • DISABLE_SSHfalse:如果不可用,请禁用 SSH 功能。如果要禁用 SSH 功能,则在安装 Gitea 时应将 SSH 端口设置为 0
  • HTTP_PORT3000:HTTP 监听端口。
  • ROOT_URL"":覆盖自动生成的公共 URL。如果内部 URL 和外部 URL 不匹配(例如在 Docker 中),这很有用。
  • LFS_START_SERVERfalse:启用 git-lfs 支持。
  • DB_TYPEsqlite3:正在使用的数据库类型[mysql,postgres,mssql,sqlite3]。
  • DB_HOSTlocalhost:3306:数据库主机地址和端口。
  • DB_NAMEgitea:数据库名称。
  • DB_USERroot:数据库用户名。
  • DB_PASSWD"<empty>" :数据库用户密码。如果您在密码中使用特殊字符,请使用“您的密码”进行引用。
  • INSTALL_LOCKfalse:禁止访问安装页面。
  • SECRET_KEY"" :全局密钥。这应该更改。如果它具有一个值并且 INSTALL_LOCK 为空,则 INSTALL_LOCK 将自动设置为 true
  • DISABLE_REGISTRATIONfalse:禁用注册,之后只有管理员才能为用户创建帐户。
  • REQUIRE_SIGNIN_VIEWfalse:启用此选项可强制用户登录以查看任何页面。
  • USER_UID1000:在容器内运行 Gitea 的用户的 UID(Unix 用户 ID)。如果使用主机卷,则将其与 /data 卷的所有者的 UID 匹配(对于命名卷,则不需要这样做)。
  • USER_GID1000:在容器内运行 Gitea 的用户的 GID(Unix 组 ID)。如果使用主机卷,则将其与 /data 卷的所有者的 GID 匹配(对于命名卷,则不需要这样做)。

测试 SSH

使用下面的命令测试 ssh 连接仓库是否可用。因为我们的端口号不是默认的 22,所以这里使用 -p 参数来指定端口号。

➜  aaaa git:(main) ssh -T git@gits.chilisdy.site -p 53022
Hi there, gldsly! You've successfully authenticated with the key named wangyong@chilisdy.local, but Gitea does not provide shell access.
If this is unexpected, please log in with password and setup Gitea under another user.
➜  aaaa git:(main)

尝试推送数据

➜  aaaa git:(main) git push -u origin main
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 202 bytes | 202.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: . Processing 1 references
remote: Processed 1 references in total
To ssh://gits.chilisdy.site:53022/gldsly/smalldisk.git
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.
➜  aaaa git:(main)