Armbian搭建本地Gitea服务器
1 安装Docker
Docker 是一个用于开发、发布和运行应用程序的开放平台。
Docker 是一个开源的应用容器引擎,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
1.1 打开Armbian软件中心,安装Docker
sudo armbian-software
未安装的软件
:状态显示为 not-installed
,输入软件对应的 ID
即可 安装
。
已安装的软件
:状态显示为 installed
,输入软件对应的 ID
,根据提示选择 更新
或 删除
。
等待安装成功。
2 Docker安装Gitea
Gitea 提供了标准的容器镜像(gitea/gitea
),统一支持 SQLite、MySQL、PostgreSQL 和 SQL Server 作为数据库后端。每个版本的镜像同时支持两种主流的处理器体系结构 amd64
和 arm64/v8
。
查看Armbian 系统架构
$> uname -a
Linux armbian 5.15.80-flippy-79+o #193 SMP PREEMPT Sat Nov 26 20:38:02 CST 2022 aarch64 GNU/Linux
AArch64 不是一个单纯的 32 位 ARM 构架扩展,而是 ARMv8 内全新的构架,完全使用全新的 A64 指令集。
2.1 创建git服务器单独管理账户
直接使用root用户存在较大风险,通常git服务器使用单独的管理账户,这里创建一个名为git的用户并禁用登录。
sudo adduser --disabled-login --gecos 'Gitea' git
sudo su git
2.2 创建工作目录
创建工作目录前,首先查看自己新创建的git账户的UID/GID
,用于后续授予正确的用户组权限
git@armbian:~/gitea$ cat /etc/passwd
......
git:x:1001:1001:Gitea,,,:/home/git:/usr/bin/bash
首先创建一个 gitea 工作目录,后续工作都在这个目录下完成。
mkdir ~/gitea && cd ~/gitea
# 预先创建 data 和 config 目录,稍后用于数据挂载
mkdir data config
# 授予正确的用户组权限
chown 1001:1001 data config
2.3 创建 docker-compose.yml
使用下面的模板创建 docker-compose.yml
,这里使用到的镜像是 gitea/gitea:1.17.3
。
镜像默认使用 UID/GID 1000:1000 作为程序运行的用户组,为了保证 gitea 程序挂载权限正确的数据目录,我们在前面的步骤中预先创建了 data
和 config
目录。
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:1.17.3
container_name: gitea
environment:
- USER_UID=1001
- USER_GID=1001
restart: always
networks:
- gitea
volumes:
- ./data:/var/lib/gitea
- ./config:/etc/gitea
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "2222:2222"
几个重要的参数说明:
- volumes:数据挂载
./data:/data
,将主机当前目录下的data
目录挂载到容器内的/var/lib/gitea
目录。/data
是 Gitea 标准容器的数据存储点,包含了 Git 仓库、SQLite 数据库文件、缓存文件等。./config:/etc/gitea
挂载 Gitea 的 app.ini 配置文件所在的目录。/etc/timezone:/etc/timezone:ro
用于指定时区/etc/localtime:/etc/localtime:ro
同上,用于指定本地时间
- ports:端口映射
3000:3000
HTTP 端口,从左到右的顺序是从主机映射到 Docker 容器。在此,您可以通过http://127.0.0.1:3000
直接访问到 Gitea 的 Web 界面,或通过反向代理引擎提供更具有扩展性的 SSL 集成,例如 Nginx。2222:2222
SSH 端口。这里主机侧暴露的端口为2222
避免了与默认 SSH 服务端口冲突。禁用 SSH 时删除端口转发即可。如果您希望将主机完全作为 Gitea 服务器,可以将主机配置文件/etc/ssh/sshd_config
中的端口Port 22
更改为其他值,使得 Docker 可以使用 Gitea 内建的 Go SSH 或 OpenSSH 占用 22 端口作为 Git 服务。
2.4 启动Gitea实例
使用 docker compose 命令拉取镜像并启动 Gitea 实例:
# 终端中执行 su 命令,然后输入密码,从普通用户切换为根用户
su
# 拉取镜像并启动 Gitea
docker compose up -d
用 docker compose ps
查看容器:
root@armbian:/home/git/gitea# docker compose ps
NAME COMMAND SERVICE STATUS PORTS
gitea "/usr/bin/entrypoint…" server running 0.0.0.0:2222->2222/tcp, :::2222->2222/tcp, 22/tcp, 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp
用 docker compose logs -f
查看容器日志:
root@armbian:/home/git/gitea# docker compose logs -f
gitea | Generating /data/ssh/ssh_host_ed25519_key...
gitea | Generating /data/ssh/ssh_host_rsa_key...
gitea | Generating /data/ssh/ssh_host_dsa_key...
gitea | Generating /data/ssh/ssh_host_ecdsa_key...
gitea | Server listening on :: port 22.
gitea | Server listening on 0.0.0.0 port 22.
gitea | 2022/12/04 13:51:08 cmd/web.go:106:runWeb() [I] Starting Gitea on PID: 19
gitea | 2022/12/04 13:51:08 ...s/install/setting.go:21:PreloadSettings() [I] AppPath: /usr/local/bin/gitea
gitea | 2022/12/04 13:51:08 ...s/install/setting.go:22:PreloadSettings() [I] AppWorkPath: /app/gitea
gitea | 2022/12/04 13:51:08 ...s/install/setting.go:23:PreloadSettings() [I] Custom path: /data/gitea
gitea | 2022/12/04 13:51:08 ...s/install/setting.go:24:PreloadSettings() [I] Log path: /data/gitea/log
gitea | 2022/12/04 13:51:08 ...s/install/setting.go:25:PreloadSettings() [I] Configuration file: /data/gitea/conf/app.ini
gitea | 2022/12/04 13:51:08 ...s/install/setting.go:26:PreloadSettings() [I] Prepare to run install page
gitea | 2022/12/04 13:51:08 ...s/install/setting.go:29:PreloadSettings() [I] SQLite3 is supported
gitea | 2022/12/04 13:51:10 cmd/web.go:217:listen() [I] [638c354e] Listen: http://0.0.0.0:3000
gitea | 2022/12/04 13:51:10 cmd/web.go:221:listen() [I] [638c354e] AppURL(ROOT_URL): http://localhost:3000/
gitea | 2022/12/04 13:51:10 ...s/graceful/server.go:61:NewServer() [I] [638c354e] Starting new Web server: tcp:0.0.0.0:3000 on PID: 19
当看到上述日志的时候可以认为实例已经启动了,在浏览器中输入 http://192.168.1.118:3000/ 即可登陆 Gitea 实例进行初始化设置。这里的实际IP地址是:
http://192.168.1.118:3000/
2.5 登录Gitea
首次安装 Gitea 后,在浏览器中输入 http://192.168.1.118:3000/ 访问初始化页面,按需设置服务器信息。第一个注册的用户账号为管理账号,也可以在下面服务器配置 管理员账户配置
中提前进行设置。
注:下面 基础URL
需要修改成自己的服务器ip,这里的设置为:
http://192.168.1.118:3000/
至此就已完成 Docker 的方式来成功安装和运行了 Gitea 实例。