如果主机的 22 端口已被使用,使用 Docker
安装 Gitea
时只能把容器的 22 端口映射到主机的其它端口(如:10022),这是没有任何问题的。但是以 SSH
方式 clone
项目时,URL
长这样ssh://git@git.example.com:10022:username/project.git
如果我们想要类似以下这样的 URL
时就需要把 Gitea
容器的和主机共享 22 端口git@git.example.com:username/project.git
下面总结一下使用 Docker
安装 Gitea
共享主机 22 端口的主要步骤,Gogs
应该是同理。
创建 git 用户
1 | # Create git user |
安装 Gitea
1 | docker run -d --name=gitea -p 10022:22 -p 10080:3000 -v /home/git/gitea/data:/data --restart=always gitea/gitea:latest |
生成 SSH key
1 | sudo -u git ssh-keygen -t rsa -b 4096 -C "Gitea Host Key" |
配置 SSH passthrough
配置 passthrough
连接到 Gitea
容器的 SSH
映射端口 10022
1 | mkdir -p /app/gitea/ |
Caddy 反向代理配置
这里使用 Caddy
反向代理配置域名,Caddyfile
配置信息如下:
1 | git.example.com { |
配置完域名之后,输入域名进行安装,现在就可以修改 【SSH 服务域名】 为 git.example.com
,【Gitea 基本 URL】 为 https://git.example.com/
,也可以后通过 /home/git/gogs/data/gogs/conf/app.ini
配置文件修改相关配置。
注意事项
由于
docker
启动容器的默认uid
和gid
是 1000,所以git
用户的uid
、gid
必须为 1000,如果git
用户的uid
和gid
不是 1000(比如:1002),尝试通过docker run --user 1002:1002
、docker run -e "PUID=1002" -e "PGID=1002"
等方式启动docker
容器都不管用。保证
git
用户下的所有文件都属于git
用户和git
组
1 | [git]$ ls -la /home/git/gitea/data |