前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Gitea 安装备忘

Gitea 安装备忘

作者头像
eallion
发布2022-12-20 15:04:08
8530
发布2022-12-20 15:04:08
举报
文章被收录于专栏:大大的小蜗牛大大的小蜗牛

警告

本文最后更新于 2021-07-30,文中内容可能已过时。

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 内容:

代码语言:javascript
复制
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

数据持久化:

代码语言:javascript
复制
volumes:
      - /data:/var/www/gitea/test

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

更新:更新一个宝塔面板添加 Gitea 容器的截图:

https://images.eallion.com/images/2021/07/giteadocker.png
https://images.eallion.com/images/2021/07/giteadocker.png

题外话:个人不建议在生产环境使用任何面板包括宝塔面板。

Nginx 反代

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

代码语言:javascript
复制
ports:
       - "3000:3000"

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

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

代码语言:javascript
复制
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:(多余的步骤)

代码语言:javascript
复制
docker ps --format "table {{.ID}}\t{{.Names}}"

显示结果:

代码语言:javascript
复制
CONTAINER ID   IMAGE
7f888888884e   gitea/gitea:latest

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

代码语言:javascript
复制
docker exec -it 7f888888884e /bin/sh

进入容器后:

代码语言:javascript
复制
ifconfig

显示结果:

代码语言:javascript
复制
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。 在宿主机终端设置:

代码语言:javascript
复制
mysql -uroot -p
代码语言:javascript
复制
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。

https://images.eallion.com/images/2021/07/giteamysql.png
https://images.eallion.com/images/2021/07/giteamysql.png

安装 Gitea

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

安装预览:

https://images.eallion.com/images/2021/07/giteainstallation.png
https://images.eallion.com/images/2021/07/giteainstallation.png
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-302,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Docker 安装 Gitea
  • Nginx 反代
  • 数据库
  • 安装 Gitea
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档