Docker 安装 Gitea
系统:Ubuntu 24.04
创建工作目录
shell
# 预先创建 gitea 和 mysql 目录,稍后用于数据挂载
mkdir ~/gitea
mkdir ~/mysql
# 授权
cd ~
chown 1000:1000 gitea mysql
创建 docker-compose.yml
yaml
version: "3"
networks:
gitea:
external: false
services:
server:
image: docker.gitea.com/gitea:1.23.7
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
- ./tmp/gitea:/tmp
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
depends_on:
- db
db:
image: docker.io/library/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
ports:
- "3306:3306"
拉取镜像并启动 Gitea
shell
docker compose up -d
等待启动成功,访问 http://宿主机IP:3000
即可。
[可选]配置 Gitea
进入 gitea 容器或直接在宿主机找到挂载位置
shell
docker exec -it gitea /bin/bash
修改配置
shell
vi /data/gitea/conf/app.ini
退出并重启容器
shell
exit
docker restart gitea
禁用注册
ini
[service]
DISABLE_REGISTRATION = true
禁用OpenID登录
ini
[openid]
ENABLE_OPENID_SIGNIN = false
ENABLE_OPENID_SIGNUP = false
禁用用户探索页面
ini
[service.explore]
DISABLE_USERS_PAGE = true
仅允许已登录的用户查看探索页面
ini
[service]
REQUIRE_SIGNIN_VIEW = true
启用登录注册验证码
ini
[service]
ENABLE_CAPTCHA = true
REQUIRE_CAPTCHA_FOR_LOGIN = true
修改更新镜像仓库 Cron
默认 @every 10m
ini
[cron.update_mirrors]
SCHEDULE = @every 3h
修改页面 footer
ini
[other]
SHOW_FOOTER_VERSION = false
SHOW_FOOTER_TEMPLATE_LOAD_TIME = false
ini
[api]
ENABLE_SWAGGER = false
Nginx反向代理
如果没有在初始化 Gitea 时配置域名,就单独修改配置文件下方配置即可。
ini
[server]
ROOT_URL = https://你的域名/
Nginx 配置文件部分:
nginx
server {
listen 443 ssl;
server_name 你的域名;
ssl_certificate 你的证书地址.pem;
ssl_certificate_key 你的证书地址.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
# 确保 client_max_body_size 足够大,否则在上传大文件时会出现 "client_max_body_size" 错误
client_max_body_size 512M;
proxy_pass http://xx.xx.xx.xx:3000;
# Proxy headers
proxy_set_header Connection $http_connection;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# HTTP 请求 将转发到 HTTPS
server {
listen 80;
server_name 你的域名;
rewrite ^ https://$http_host$request_uri? permanent;
}
[可选]DIY
上方操作后, gitea 目录位置:/root/gitea
mkdir -p /root/gitea/gitea/templates/custom
mkdir -p /root/gitea/gitea/public/assets
修改完配置,注意重启。
shell
docker restart gitea
顶部链接
shell
cd /root/gitea/gitea/templates/custom
vim extra_links.tmpl
html
<a class="item" href="https://charles7c.top" target="_blank">博客</a>
尾部链接
shell
cd /root/gitea/gitea/templates/custom
vim extra_links_footer.tmpl
html
<a class="item" href="https://github.com/Charles7c" target="_blank">
<svg class="svg" aria-hidden="true" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="m12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61-.546-1.385-1.335-1.755-1.335-1.755-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57 4.801-1.574 8.236-6.074 8.236-11.369 0-6.627-5.373-12-12-12"></path></svg><font _mstmutation="1">
GitHub
</font></a>
自定义主题
从 主题 中选择一个你喜欢的,本次选择使用主题 Catppuccin - Soothing pastel theme for Gitea
shell
mkdir -p /root/gitea/gitea/public/assets/css
# 将主题文件放到此目录下
cd /root/gitea/gitea/public/assets/css
修改 ini 配置文件
ini
[ui]
THEMES = catppuccin-rosewater-auto,catppuccin-flamingo-auto,catppuccin-pink-auto,catppuccin-mauve-auto,catppuccin-red-auto,catppuccin-maroon-auto,catppuccin-peach-auto,catppuccin-yellow-auto,catppuccin-green-auto,catppuccin-teal-auto,catppuccin-sky-auto,catppuccin-sapphire-auto,catppuccin-blue-auto,catppuccin-lavender-auto
自定义首页
shell
cd /root/gitea/gitea/templates
vim home.tmpl
html
{{template "base/head" .}}
<div role="main" aria-label="{{if .IsSigned}}{{.locale.Tr "dashboard"}}{{else}}{{.locale.Tr "home"}}{{end}}" class="page-content home">
<div class="gt-mb-5 gt-px-5">
<div class="center">
<img class="logo" width="220" height="220" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{.locale.Tr "logo"}}">
<div class="hero">
<h1 class="ui icon header title">
{{AppName}}
</h1>
<h2>编写 & 测试 & 分享个人碎片化、结构化的开源项目代码</h2>
</div>
</div>
</div>
<div class="ui stackable middle very relaxed page grid">
<div class="eight wide center column">
<h1 class="hero ui icon header">
{{svg "octicon-squirrel"}} 代码游乐场
</h1>
<p class="large">
编写、测试和分享一些有趣的代码片段、脚本和项目
</p>
</div>
<div class="eight wide center column">
<h1 class="hero ui icon header">
{{svg "octicon-database"}} 代码存储库
</h1>
<p class="large">
同步、保存和归档来自 GitHub、Gitee 等其他平台的个人代码
</p>
</div>
</div>
</div>
{{template "base/footer" .}}
更改 Logo
shell
mkdir -p /root/gitea/gitea/public/assets/img
# 上传 logo.svg、favicon.svg
cd /root/gitea/gitea/public/assets/img
参考资料
1.客制化 Gitea:https://blog.fernvenue.com/zh/archives/gitea-customization/