部署私有git仓库,Gitea

部署私有git仓库,Gitea
幻雪前言
正好前几天程序部署了私有的 git 仓库,又恰逢群友有需要,写一篇如何在 ubuntu 上部署 Gitea 的教程。
内容包含 常规部署 与 Docker 部署 两种方式,同时配置 Runner 以便 Git Action 正常执行。
Ps:虽然教程中涉及其他系统的安装步骤,但主要以 Linux 系为主,Runner 配置部分在文末。
直接部署
选一个适合自己架构的版本下载(注:如果是 x86-32位
,需下载源码后自行用 Go 编译)。
Linux (x86-64 位)1
2wget -O gitea https://dl.gitea.com/gitea/1.23.4/gitea-1.23.4-linux-amd64
chmod +x gitea
Linux (ARM 64)1
2wget -O gitea https://dl.gitea.com/gitea/1.23.4/gitea-1.23.4-linux-arm64
chmod +x gitea
Linux (ARMv6)1
2wget -O gitea https://dl.gitea.com/gitea/1.23.4/gitea-1.23.4-linux-arm-6
chmod +x gitea
Linux (ARMv5)1
2wget -O gitea https://dl.gitea.com/gitea/1.23.4/gitea-1.23.4-linux-arm-5
chmod +x gitea
Windows (x86-64 位)1
wget -O gitea.exe https://dl.gitea.com/gitea/1.23.4/gitea-1.23.4-windows-4.0-amd64.exe
Windows (x86 位)1
wget -O gitea.exe https://dl.gitea.com/gitea/1.23.4/gitea-1.23.4-windows-4.0-386.exe
MacOS (x86-64 位)1
2wget -O gitea https://dl.gitea.com/gitea/1.23.4/gitea-1.23.4-darwin-10.12-amd64
chmod +x gitea
MacOS (ARM 64)1
2wget -O gitea https://dl.gitea.com/gitea/1.23.4/gitea-1.23.4-darwin-10.12-arm64
chmod +x gitea
FreeBSD (x86-64 位)1
2wget -O gitea https://dl.gitea.com/gitea/1.23.4/gitea-1.23.4-freebsd13-amd64
chmod +x gitea
源代码1
wget -O gitea-src.tar.gz https://dl.gitea.com/gitea/1.23.4/gitea-src-1.23.4.tar.gz
环境准备
安装 Git
首先需要确保目标机安装了 Git(版本需大于 2.0)。在大多数 Linux 发行版上可使用如下命令:
Ubuntu/Debian1
2sudo apt update
sudo apt install git
CentOS/RHEL1
sudo yum install git
或者对于较新的版本:1
sudo dnf install git
Fedora1
sudo dnf install git
Arch Linux1
sudo pacman -S git
openSUSE1
sudo zypper install git
macOS
使用 Homebrew:1
brew install git
或使用 MacPorts:1
sudo port install git
Windows
从 Git for Windows 下载并安装。
验证安装1
git --version
添加用户
为 Gitea 添加专用用户:
Ubuntu/Debian1
2
3
4
5
6
7
8adduser \
--system \
--shell /bin/bash \
--gecos 'Git Version Control' \
--group \
--disabled-password \
--home /home/git \
git
Fedora/RHEL/CentOS1
2
3
4
5
6
7
8
9groupadd --system git
adduser \
--system \
--shell /bin/bash \
--comment 'Git Version Control' \
--gid git \
--home-dir /home/git \
--create-home \
git
创建工作路径
1 | mkdir -p /var/lib/gitea/{custom,data,log} |
设置 Git 用户权限
1 | chmod 750 /etc/gitea |
配置环境变量
1 | export GITEA_WORK_DIR=/var/lib/gitea/ |
将 Gitea 移动到系统路径:1
cp gitea /usr/local/bin/gitea
启动与配置
命令行启动
如果以上步骤均正确,可以使用下面的命令启动 Gitea:1
GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini
成功启动后,可将其配置为系统服务。编辑服务文件:1
sudo vim /etc/systemd/system/gitea.service
并将以下配置内容复制进去(注意根据实际情况调整数据库依赖、 Git 安装路径等):1
2
3
4
5
6
7
8
9
10
11
12
13
14[Unit]
Description=Gitea
After=network.target mysql.service
[Service]
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=PATH=/usr/local/bin:/bin:/usr/bin
[Install]
WantedBy=multi-user.target
如使用 MySQL、MariaDB、PostgreSQL、Memcached 或 Redis,请取消相应的 Wants
和 After
行的注释,确保 Gitea 在这些服务启动后再启动。
启动服务:1
2sudo systemctl enable gitea
sudo systemctl start gitea
以下图片来源于知乎
你需要配置的有 ssh端口和 http 端口,rootURL,站点名,mysql,管理员账号和密码,邮箱验证端口,邮箱。
其中注意的是,不同的邮箱配置不同,比如说网易是 25 端口,这邮箱端口和你开不开服务器端口无关,只和你能不能通网络,以及邮箱服务商端口设置成什么有关。
其中的邮箱密码是应用密码,需要到邮箱服务那边设置。
App. Ini
以上配置均会插入到 app.ini
中,如果需要改变的话,可以手动 vim /etc/gitea/app.ini
下面我给出我的配置,你们可以参考1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80WORK_PATH = /var/lib/gitea/
RUN_MODE = prod
[database]
DB_TYPE = mysql
HOST = 127.0.0.1:3306
NAME = gitea
USER = gitea
PASSWD = xxxxxx
SCHEMA =
SSL_MODE = disable
PATH = /var/lib/gitea/data/gitea.db
LOG_SQL = false
[repository]
ROOT = /var/lib/gitea/data/gitea-repositories
[server]
SSH_DOMAIN = free.huanxue.top
DOMAIN = git.huanxue.top
HTTP_PORT = 3000
ROOT_URL = http://git.huanxue.top:20815
APP_DATA_PATH = /var/lib/gitea/data
DISABLE_SSH = false
SSH_PORT = 22
LFS_START_SERVER = true
LFS_JWT_SECRET = zcWFascazPqW_haskdjhjwhisajoicjzjkz-Lx-x9awdawdT6RA
OFFLINE_MODE = true
[lfs]
PATH = /var/lib/gitea/data/lfs
[mailer]
ENABLED = true
SMTP_ADDR = smtp.163.com
SMTP_PORT = 25
FROM = huanxuetop@163.com
USER = huanxuetop@163.com
PASSWD = xxxxxxxxxxxx
[service]
REGISTER_EMAIL_CONFIRM = true
ENABLE_NOTIFY_MAIL = true
DISABLE_REGISTRATION = false
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
ENABLE_CAPTCHA = false
REQUIRE_SIGNIN_VIEW = false
DEFAULT_KEEP_EMAIL_PRIVATE = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING = true
NO_REPLY_ADDRESS = noreply.localhost
[openid]
ENABLE_OPENID_SIGNIN = true
ENABLE_OPENID_SIGNUP = true
[cron.update_checker]
ENABLED = true
[session]
PROVIDER = file
[log]
MODE = console
LEVEL = info
ROOT_PATH = /var/lib/gitea/log
[repository.pull-request]
DEFAULT_MERGE_STYLE = merge
[repository.signing]
DEFAULT_TRUST_MODEL = committer
[security]
INSTALL_LOCK = true
INTERNAL_TOKEN = eyasdasdIJUcasIacsJOascIkpXVCJ9.eyJuYmYiOjE3NDA2NzYyNDh9.Pfs87wYxo9ADSC7asdaSAscaS98wjciPUMTQASDSKv5-OmnAD2342SZhs
PASSWORD_HASH_ALGO = pbSACdf2
[oauth2]
JWT_SECRET = K6FsM1pASDC21CsasdfcVHd4dsfHISXcHiRd30
测试
安装完以后你需要测试的有几个
- 能不能通过管理员登录
- 能不能注册新人
- 能不能邮箱验证
- 能不能创建新仓库
- 能不能 ssh clone 代码(需要添加公钥到目标机)
以上均可以说明 gitea 下载成功了
接下来就是安装 runner,让 gitea 可以运行 action
Docker 部署
如果不希望直接部署,也可使用 Docker 进行部署。
安装 Docker
在 Linux 上安装 Docker
- 更新系统包:
1
sudo apt update
- 安装依赖:
1
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
- 添加 Docker 官方 GPG 密钥:
1
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 添加 Docker 仓库:
1
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装 Docker:
1
2sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io - 启动 Docker 服务并设置开机自启:
1
2sudo systemctl start docker
sudo systemctl enable docker - 验证安装:
1
docker --version
在 macOS 上安装 Docker
- 访问 Docker 官网 下载 Docker Desktop for Mac。
- 双击
.dmg
文件,将 Docker 图标拖入 Applications 文件夹。 - 启动 Docker Desktop 并验证:
1
docker --version
在 Windows 上安装 Docker
- 下载 Docker Desktop for Windows(参考 Docker 官网)。
- 安装后启动 Docker Desktop,并验证:
1
docker --version
安装 Docker Compose
在 Linux 上安装 Docker Compose
- 下载 Docker Compose:
1
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 赋予可执行权限:
1
sudo chmod +x /usr/local/bin/docker-compose
- 验证安装:
1
docker-compose --version
在 macOS 和 Windows 上
Docker Desktop 已包含 Docker Compose,可直接验证:1
docker-compose --version
使用 Docker Compose 部署
将下面的 docker-compose.yml
文件保存至项目目录,然后运行:1
docker-compose up -d
如需停止服务,运行:1
docker-compose down
以下提供部分常见服务的示例配置:
MySQL + PHP + Nginx
1 | version: '3.8' |
PostgreSQL + Django + Gunicorn + Nginx
1 | version: '3.8' |
Redis + Node.js + MongoDB
1 | version: '3.8' |
WordPress + MySQL
1 | version: '3.8' |
Elasticsearch + Kibana
1 | version: '3.8' |
配置 gitea
可以参考以下使用 Compose 文件部署 Gitea(注意 ssh 外部端口映射为 222,对应内部 22):1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45version: "3"
networks:
gitea:
external: false
volumes:
gitea:
driver: local
services:
server:
image: gitea/gitea:1.22.4
container_name: gitea
environment:
- USER_UID=1001
- USER_GID=1001
- 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
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "32768:3000"
- "222:22"
depends_on:
- db
db:
image: mysql:8.0.36
restart: always
environment:
- MYSQL_ROOT_PASSWORD=2759947937
- MYSQL_USER=gitea
- MYSQL_PASSWORD=gitea
- MYSQL_DATABASE=gitea
networks:
- gitea
volumes:
- ./mysql:/var/lib/mysql
可以参考gitea官网
如果以上的 docker 让你感觉部署困难,那么可以使用宝塔自带的 docker,并在 docker 中下载 gitea。
Runner 配置
Runner 是可以脱离目标机在其他的机器上运行的。所以通过 docker 部署也行,再任何一台可以 ping 得通的机器上运行都可以,以下以 Docker 部署为例,便于管理和配置。
如果不需要 docker 可以参考官方文档gitea官网
下载 Runner 镜像
夜间版本较新,若需要稳定版,请拉取 latest:1
docker pull docker.io/gitea/act_runner:latest # 最新稳定版本
或1
docker pull docker.io/gitea/act_runner:nightly # 最新夜间版
确保 Git 用户有 Docker 权限:1
sudo usermod -aG docker git
生成配置文件
执行以下命令生成 Runner 配置:1
docker run --entrypoint="" --rm -it docker.io/gitea/act_runner:latest act_runner generate-config > config.yaml
官方 Runner Compose 示例
1 | version: "3.8" |
我个人的 Runner 部署示例
1 | sudo docker run \ |
其中:
- GITEA_RUNNER_REGISTRATION_TOKEN:
- GITEA_RUNNER_LABELS:指定 Runner 标签,用于匹配对应的 Action 任务,也就是 action 启动你可以指定哪一个标签类的 runner 启动
- GITEA_INSTANCE_URL:这个也就是 runner 要访问的目标机网站
- 如果是目标机运行 runner,用目标机自己的局域网 ip 也就是 192.168. Xx. Xx 加端口就可以了。
- 如果是非目标机运行 runner,保证 runner 机可以 ping 通目标机,并访问 gitea 端口,就可以。
后话
如果在部署过程中遇到任何问题,请在评论区留言。
另外,Git Action 可通过在仓库根目录下创建 .gitea/workflows/分支名.yaml
文件实现自动触发运行。