惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
月光博客
月光博客
T
Tailwind CSS Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
人人都是产品经理
人人都是产品经理
IT之家
IT之家
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园_首页
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - Franky
The Cloudflare Blog
博客园 - 【当耐特】
Hugging Face - Blog
Hugging Face - Blog
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
Jina AI
Jina AI
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
Last Week in AI
Last Week in AI

eallion's Blog

春假清明自驾游 Ubuntu 25.10 安装和配置 秋假 彩礼 2025 博客变化 预制菜 联邦礼仪之一 重拾写博客的乐趣 少儿 TED - 时间管理大师 n8n 之同步博客到 Mastodon n8n 之备份 Mastodon 嘟文 如何备份 Mastodon Docker 部署 Mastodon NAS 折腾记 Windows 11 安装软件 博客排版 - 挤压中文标点符号 Hugo 博客集成 Mastodon 独立博客自省问卷 15 题 Chrome 插件更新:网址净化器 在 Hugo 中使用 Shiki 炒菜万能公式 uBlacklist 订阅合集 读《中文互联网正在加速崩塌》 CSS 和 JS 实现博客热力图 受灾小记 那,他吃什么?! Mastodon 同步到 Memos Hugo 外部链接跳转提示页面 联邦宇宙及 Mastodon 简介 2024 博客变化
Gitea 安装备忘
Charles Chin · 2021-07-30 · via eallion's Blog

DEMO: https://git.eallion.com/

Gitea 有多种安装方式,本文是介绍 Docker 安装 Gitea 时的一些关键信息备忘笔记。
Gitea 采用 Go 开发,对系统资源的需求不高,甚至在树莓派上都可以运行。
我个人也在配置极低的软路由上使用过一段时间。

计划自建 Gitea 时,默认您具有一定的DockerNginxMysql基础。

Request:

  • Docker
  • Docker compose
  • Nginx
  • Mysql(非必需)
  • 域名(非必需)

# Docker 安装 Gitea

官方文档: https://docs.gitea.io/zh-cn/install-with-docker/

镜像名: gitea/gitea:latest
个人使用的数据库是宿主机的 Mysql,所以没有拉取db镜像。
docker-compose.yml 内容:

version: "3"

networks:
  gitea:
    external: false

services:
  server:
    image: gitea/gitea:1.14.5
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
#     - DB_TYPE=mysql
#     - DB_HOST=db:3306
#     - DB_NAME=gitea
#     - DB_USER=gitea
#     - DB_PASSWD=gitea
    restart: always
    networks:
      - gitea
    volumes:
      - /data:/var/www/gitea/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
     ports:
       - "3000:3000"
       - "22222: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

数据持久化:

volumes:
      - /data:/var/www/gitea/test

需要把 Gitea 文件持久化存储在本地,不然 Docker 重启,就会丢失数据。
本实例数据映射到宿主机目录:/var/www/gitea/test

更新:更新一个宝塔面板添加 Gitea 容器的截图:
Gitea Docker
题外话:个人不建议在生产环境使用任何面板包括宝塔面板。

# Nginx 反代

如果需要域名访问 Gitea,可选 Nginx 绑定域名。
绑定过程就省略了。
docker-compose.yml 里映射的端口为3000

所以需要利用 Nginx 反代实现域名访问 Gitea,不然需要添加端口号才能访问,如:https://git.eallion.com:3000,这样的带有端口号的 URL 不美观。
反代配置:

官方文档: https://docs.gitea.io/zh-cn/reverse-proxies/

server
{
    listen 80;
    listen 443 ssl http2;
    server_name git.eallion.com;
    
# ......
# 其他配置
# ......

# 反代 Gitea 配置
location /
{
    proxy_pass http://127.0.0.1:3000;
    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 REMOTE-HOST $remote_addr;
    add_header X-Cache $upstream_cache_status;
    #Set Nginx Cache
    add_header Cache-Control no-cache;
}

# ......

}

# 数据库

如果是个人使用,预计 Gitea 的使用量会很小的话,可以使用 Sqlite3 数据库。

我这台 VPS 宿主机有 Mysql 环境,所以我的docker-compose.yml 没有拉取db镜像,而是直接使用了宿主机的 Mysql。(实际上使用 Docker compose 拉取数据库会更简单。)

但是 Docker 的默认网络设置,访问 localhost 并不能访问到宿主机的 Mysql,所以需要在宿主机的 Mysql 里面授权 Gitea 的 IP 访问。
查看 Gitea 容器的 ID:(多余的步骤)

docker ps --format "table {{.ID}}\t{{.Names}}"

显示结果:

CONTAINER ID   IMAGE
7f888888884e   gitea/gitea:latest

查看 Gitea 容器的 IP:(假设容器 ID 为:7f888888884e

docker exec -it 7f888888884e /bin/sh

进入容器后:

显示结果:

eth0      Link encap:Ethernet  HWaddr RA:ND:OM:MA:CA:DD
          inet addr:172.17.0.3  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1244 (1.2 KiB)  TX bytes:718 (718.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

记录下inet addr显示的 IP,如:172.17.0.3
在宿主机终端设置:

mysql>GRANT ALL PRIVILEGES ON showx.* TO 'showx'@'172.17.0.3' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql>flush privileges;

如果 Gitea 容器的 IP 变动,需要重新授权新 IP。

更新:数据库管理面板中,数据库可能也需要授权一下 Docker 的 IP。
Gitea Mysql

# 安装 Gitea

完成上面这些步骤后,在浏览器中输入绑定的域名,如: https://git.eallion.com按提示安装即可。如果是本例的架构方式,在填写数据库信息的时候,Mysql host 不要填写localhost,而要填写ifconfig显示的 IP,如本例的:172.17.0.1

安装预览: