3.2 KiB
3.2 KiB
https://docs.gitea.com/usage/actions/act-runner
Binary Runner (for host/native workloads)
Create dedicated user
sudo useradd -r -s /usr/sbin/nologin -m -c "Gitea Actions Runner" act_runner
Download latest version (0.2.12)
VERSION=0.2.12
sudo curl -sSLo /usr/local/bin/act_runner \
https://dl.gitea.com/act_runner/${VERSION}/act_runner-${VERSION}-linux-amd64
sudo chmod +x /usr/local/bin/act_runner
Create directories
sudo mkdir -p /etc/act_runner
sudo mkdir -p /var/lib/act_runner
Generate & edit config
/usr/local/bin/act_runner generate-config | sudo tee /etc/act_runner/config.yaml
runner:
file: .runner
capacity: 1
labels:
- "native:host"
- "linux-host:host"
- "self-hosted:host"
- "ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest"
- "ubuntu-24.04:docker://docker.gitea.com/runner-images:ubuntu-24.04"
The :host suffix tells the runner to execute jobs directly on the host instead of in Docker containers.
Register the runner
cd /var/lib/act_runner_native
sudo -u act_runner /usr/local/bin/act_runner \
--config /etc/act_runner/config.yaml \
register \
--no-interactive \
--instance https://your-gitea.example.com \
--token YOUR_REGISTRATION_TOKEN \
--name native-runner
sudo chown -R act_runner:act_runner /var/lib/act_runner
sudo chown -R act_runner:act_runner /etc/act_runner
Create systemd service
/etc/systemd/system/act_runner.service
[Unit]
Description=Gitea Actions Runner (Native/Host)
Documentation=https://gitea.com/gitea/act_runner
After=network.target
[Service]
ExecStart=/usr/local/bin/act_runner daemon --config /etc/act_runner/config.yaml
ExecReload=/bin/kill -s HUP $MAINPID
WorkingDirectory=/var/lib/act_runner
TimeoutSec=0
RestartSec=10
Restart=always
User=act_runner
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now act_runner
Rootless Podman Configuration for act_runner
1. User Setup
The service user needs a proper home directory and shell:
sudo usermod -m -d /home/act_runner -s /bin/bash act_runner
sudo mkdir -p /home/act_runner
sudo chown act_runner:act_runner /home/act_runner
2. User Namespace Mappings
Required for rootless containers to map UIDs/GIDs:
sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 act_runner
podman system migrate
3. Enable Linger and Podman Socket
sudo loginctl enable-linger act_runner
sudo -u act_runner XDG_RUNTIME_DIR=/run/user/$(id -u act_runner) systemctl --user enable --now podman.socket
4. Configure act_runner
In /etc/act_runner/config.yaml:
container:
docker_host: unix:///run/user/<UID>/podman/podman.sock
Replace <UID> with output of id -u act_runner.
5. Configure Registries
In /etc/containers/registries.conf:
unqualified-search-registries = ["docker.io", "docker.gitea.com"]
6. systemd Unit Environment
Add to /etc/systemd/system/act_runner.service under [Service]:
Environment="XDG_RUNTIME_DIR=/run/user/%U"
7. Apply Changes
sudo systemctl daemon-reload
sudo systemctl restart act_runner
Docker Runner
WIP