Docker部署Gitea,以及自定义 Gitea 页面
首先要先在你的Linux系统上成功安装Docker和Docker Compose。
开始配置和部署Gitea:
- 创建git用户。
sudo useradd -m -s /bin/bash -U -u 1000 git
- 配置docker-compose.yml,我这里使用了80端口和MySQL8数据库。
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:1.21.4
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=db:3306
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- /home/git/.ssh/:/data/git/.ssh
ports:
- "80:80"
- "2222:22"
depends_on:
- db
db:
image: mysql:8
restart: always
environment:
- MYSQL_ROOT_PASSWORD=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=gitea
- MYSQL_DATABASE=gitea
networks:
- gitea
volumes:
- ./mysql:/var/lib/mysql
- 创建好所需的文件夹。
mkdir -p ./gitea
mkdir -p ./mysql
- 使用Docker Compose启动Gitea服务。
docker-compose up --force-recreate -d
- 创建 SSH 密钥对。该密钥对将用于向主机验证主机上的 git 用户。
sudo -u git ssh-keygen -t rsa -b 4096 -C "Gitea Host Key"
- 创建一个名为 /usr/local/bin/gitea 的文件(具有可执行权限),负责从主机到容器的 SSH 转发。
ssh -p 2222 -o StrictHostKeyChecking=no git@127.0.0.1 "SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\" $0 $@"
- 开放防火墙,然后就可以访问你的Gitea服务了。
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
自定义 Gitea 页面
官方doc这里写得很模糊,这个功能尝试了很久才弄成功。
- 创建文件夹,我的gitea文件夹在/home/gitea
mkdir -p /home/gitea/gitea/gitea/templates/custom
mkdir -p /home/gitea/gitea/gitea/public/assets
- 添加自定义链接,修改这个文件
/home/gitea/gitea/gitea/templates/custom/extra_links.tmpl
,内容如下
<a class="item" href="{{AppSubUrl}}/assets/impressum.html">Impressum</a>
- 将自定义的页面文件放在这
/home/gitea/gitea/gitea/public/assets/impressum.html
- 调整文件所有者并重启服务
chown git:git -R /home/gitea/gitea/gitea
cd /home/gitea
docker-compose restart server
- 访问gitea页面,这时就会发现顶部多了一个自定义的链接