时间:2024年9月5日
环境: Debian 11.11 bullseye with 2vCPU&1707MEM
Gitea版本: 1.22.1
Docker版本: 27.2.0
MySQL版本: 9.0.0

前言

一些个人的项目以及配置文件,不希望托管在GitHub上。特别是供个人使用的配置文件。
ps:其实这些配置文件可以在GitHub上通过gist托管。
但是不方便管理更新,也不方便在没有魔法的环境下下载。
于是打算搭建属于自己的托管平台。
第一时间想到的是Gitlab,但其占用资源很离谱,在安装过程中直接干爆内存然后调用虚拟内存导致硬盘满读导致服务器卡死😅。

我也不需要那么多功能,只需要基本代码管理就可以,因此选择了更轻量级的Gitea。

安装过程

我选择的是docker部署,自备数据库。

数据库准备

通过root登录到MySQL

mysql -u -root -p

创建用于gitea的用户,这里是gitea

CREATE USER 'gitea' IDENTIFIED BY 'passwd';

创建数据库

    CREATE DATABASE gitea CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_bin'; 

将数据库上的所有权限授予上述创建的数据库用户

    GRANT ALL PRIVILEGES ON gitea.* TO 'gitea';
    FLUSH PRIVILEGES; 

安装docker

    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh

这会安装软件包里存在的最新版

创建用于运行gitea的用户git

adduser \
   --system \
   --shell /bin/bash \
   --gecos 'Git Version Control' \
   --group \
   --disabled-password \
   --home /home/git \
   git 

准备目录

创建一个目录/www/wwwroot/gitea/并在目录下创建data文件夹。

mkdir -p /www/wwwroot/gitea/{data}
chown -R git:git /www/wwwroot/gitea/
chmod -R 750 /www/wwwroot/gitea/

安装gitea

在/gitea下创建一个docker-compose.yml并编辑它

version: "3"
networks:
  gitea:
    external: false
services:
  server:
    image: gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
    restart: always
    networks:
      - gitea
    volumes:
      - /www/wwwroot/gitea/data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "222:22"

通过docker compose up -d后台启动gitea
访问yourip:3000在网页配置
注意数据库地址不能填写localhost或者127.0.0.1,请填写你服务器的外网ip地址,因为docker是一个独立环境的容器,在docker里面访问的127.0.0.1是docker容器内的本地服务器而不是主机的本地服务器,你还必须将MySQL的访问权限开放到外网并且设置仅允许你服务器的ip地址访问。
配置文件里的域名可以填写一个你解析的域名并将rooturl也设置成域名加端口的形式,这样我们可以将gitea反代到你的域名,注意区分http(s)。
END