act_runner(Gitea Actions 的 runner)。访问 Gitea 的官方下载页面:https://dl.gitea.com/gitea/
选择适合目标服务器架构的版本。最常见的是 Linux amd64。下载二进制文件。例如,选择版本 1.21.0:
bash# 创建一个目录来存放所有离线文件
mkdir gitea-offline
cd gitea-offline
# 下载 Gitea 二进制文件
wget -O gitea https://dl.gitea.com/gitea/1.21.0/gitea-1.21.0-linux-amd64
chmod +x gitea
注意:请将 1.21.0 替换为当时最新的稳定版本。
act_runner 的发布版本在 Gitea 的官方仓库:https://dl.gitea.com/act_runner/
同样选择 Linux amd64 版本:
bash# 下载 act_runner 二进制文件
wget -O act_runner https://dl.gitea.com/act_runner/act_runner-linux-amd64
chmod +x act_runner
Gitea Actions 依赖于 act_runner,而 act_runner 需要 Docker 来运行工作流容器。
前往 Docker 官方文档获取离线安装包:https://docs.docker.com/engine/install/binaries/
或者直接下载静态二进制包(例如,从 https://download.docker.com/linux/static/stable/ 选择版本):
bash# 示例:下载 Docker 20.10.24 for x86_64
wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.24.tgz
将所有这些文件打包成一个压缩包,方便传输。
bash# 回到上级目录
cd ..
tar -czvf gitea-offline-pack.tar.gz gitea-offline/
将 gitea-offline-pack.tar.gz 文件通过U盘、内部网络或其他方式复制到目标离线服务器上。
bash# 将安装包复制到服务器后,解压
tar -xzvf gitea-offline-pack.tar.gz
cd gitea-offline
# 安装 Git (如果尚未安装)
# 对于 CentOS/RHEL/Fedora,你需要提前下载好rpm包并使用rpm命令安装
# sudo rpm -ivh git-*.rpm
# 对于 Debian/Ubuntu,使用dpkg安装提前下载的deb包
# sudo dpkg -i git-*.deb
bash# 解压 Docker 二进制包
tar -xzvf docker-20.10.24.tgz
# 将二进制文件复制到系统的可执行路径
sudo cp docker/* /usr/bin/
# 创建 docker 用户组(如果不存在)
sudo groupadd docker
# 将当前用户添加到 docker 组(例如用户 ‘git’)
sudo usermod -aG docker $USER
# 或者指定用户 sudo usermod -aG docker git
# 配置 Docker 守护进程(使用 systemd)
# 首先,创建 systemd 服务文件
sudo tee /etc/systemd/system/docker.service > /dev/null <<'EOF'
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 启动 Docker 并设置开机自启
sudo systemctl enable docker --now
# 验证 Docker 是否安装成功
docker --version
bash# 创建一个系统用户来运行 Gitea(例如 ‘git’)
sudo adduser \
--system \
--shell /bin/bash \
--comment 'Git Version Control' \
--home /home/git \
--group \
--disabled-password \
git
# 创建必要的目录结构
sudo mkdir -p /var/lib/gitea/{custom,data,log}
sudo chown -R git:git /var/lib/gitea
sudo chmod -R 750 /var/lib/gitea
# 将 gitea 二进制文件复制到全局可执行路径
sudo cp gitea /usr/local/bin
sudo chown git:git /usr/local/bin/gitea
sudo chmod +x /usr/local/bin/gitea
# 为 Gitea 创建 systemd 服务
sudo tee /etc/systemd/system/gitea.service > /dev/null <<'EOF'
[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=docker.service
[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web --work-path /var/lib/gitea
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target
EOF
# 重新加载 systemd 并启动 Gitea
sudo systemctl daemon-reload
sudo systemctl enable gitea --now
# 检查 Gitea 状态,确保它正在运行
sudo systemctl status gitea
至此就可以通过浏览器访问服务器的 IP 地址和端口(默认 http://<server-ip>:3000)来完成 Gitea 的初始网页配置。
重要:在配置页面中,将 SSH 服务器域名 和 Gitea 基本 URL 设置为离线环境中其他客户端可以访问的地址。
bash# 将 act_runner 二进制文件复制到全局路径
sudo cp act_runner /usr/local/bin/
sudo chmod +x /usr/local/bin/act_runner
# 为 act_runner 创建工作目录
sudo mkdir -p /var/lib/act_runner
sudo chown -R git:git /var/lib/act_runner
# 切换到 git 用户
sudo su - git
# 在 Gitea 实例中创建 Runner Token
# 1. 以管理员身份登录 Gitea Web 界面。
# 2. 进入 “站点管理” -> “Actions” -> “Runners”。
# 3. 点击 “创建新的 Runner”,选择 “Runner 类型”(例如:组织级)。
# 4. 复制生成的令牌(一个长长的字符串)。它看起来像 `MR6MZ6V4DQQBVCUVTGN6T3RRN4HS6`。
# 注册 runner (在离线服务器的命令行中运行)
# 将 <your-gitea-url> 替换为你的内网 Gitea 地址,<your-runner-token> 替换为上一步复制的令牌
cd /var/lib/act_runner
act_runner register --instance <your-gitea-url> --token <your-runner-token> --no-interactive
# 注册过程中会询问一些配置,使用默认值即可(直接回车)。由于是离线环境,`--no-interactive` 参数有助于避免需要输入无法访问的默认值(如 docker.io)。
# 为 act_runner 创建 systemd 服务文件 (以 root 用户操作)
exit # 退出 git 用户,回到 root
sudo tee /etc/systemd/system/act_runner.service > /dev/null <<'EOF'
[Unit]
Description=Gitea Act Runner
After=network.target docker.service gitea.service
Requires=docker.service
[Service]
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/act_runner
ExecStart=/usr/local/bin/act_runner daemon
Restart=always
Environment=HOME=/home/git
[Install]
WantedBy=multi-user.target
EOF
# 重新加载 systemd 并启动 act_runner
sudo systemctl daemon-reload
sudo systemctl enable act_runner --now
# 检查 act_runner 状态
sudo systemctl status act_runner
.gitea/workflows/demo.yaml 工作流文件,推送代码后,应该能看到 Actions 被触发并且由你的离线 runner 执行。act_runner 的日志 journalctl -u act_runner -f。常见问题是网络无法连接到 Gitea 服务器地址,或者令牌无效。git 用户属于 docker 组,并重新登录该用户(或重启服务)以使组更改生效。act_runner 日志。如果工作流需要基础镜像(如 node:20-alpine),需要在内网搭建一个私有 Docker 镜像仓库,并提前将所需镜像推送进去,或者在离线环境中手动 docker load 这些镜像。本文作者:sea-whales
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!