跳过正文
  1. Blogs/

Gitea 安装备忘

·1185 字·3 分钟· ·
代码 Gitea Git Gitea Vps Server
作者
大大的小蜗牛
机会总是垂青于有准备的人!
目录

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

ports:
       - "3000: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

进入容器后:

ifconfig

显示结果:

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 -uroot -p
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

安装预览:

相关文章

Ubuntu Server 安装 Mosh
·321 字·1 分钟
代码 Mosh Ubuntu Server Vps Ssh Mosh
Ubuntu Server snap 安装 Nextcloud
·352 字·1 分钟
代码 Nextcloud Ubuntu Server 网盘 Nexecloud Snap
Ubuntu VPS 优化
·80 字·1 分钟
代码 Ubuntu-Vps-Optimized Ubuntu Vps 优化 主机 LNMP

LoadGiscusor