Page MenuHomeSealhub

Codeberg Cloud Init Script
ActivePublic

Authored by cichy1173 on May 3 2026, 16:34.
Project Tags
None
Referenced Files
F20830834: Codeberg Cloud Init Script
May 3 2026, 16:34
Subscribers
None
#cloud-config
package_update: true
packages:
- qemu-guest-agent
- sudo
- lsb-release
- curl
- gnupg
- apt-transport-https
- make
- mc
- net-tools
- lsof
- htop
- cron
- jq
- zip
- telnet
- ca-certificates
- python3-yaml
write_files:
- path: /usr/local/bin/init.sh
content: |
#!/usr/bin/env bash
set -xe
export RUNNER_VERSION=$(curl -X 'GET' https://code.forgejo.org/api/v1/repos/forgejo/runner/releases/latest | jq .name -r | cut -c 2-)
wget -O /home/${USERNAME}/forgejo-runner https://code.forgejo.org/forgejo/runner/releases/download/v$RUNNER_VERSION/forgejo-runner-$RUNNER_VERSION-linux-amd64
chmod +x /home/${USERNAME}/forgejo-runner
cd /home/${USERNAME} && ./forgejo-runner register --no-interactive --token ${CODEBERG_TOKEN} --name ${RUNNER_NAME} --instance https://codeberg.org
./forgejo-runner generate-config > /home/${USERNAME}/config.yml
# Allow Docker socket mount in CI job containers for docker buildx
python3 -c "
import yaml, sys
with open('/home/${USERNAME}/config.yml') as f:
cfg = yaml.safe_load(f)
cfg.setdefault('container', {})
cfg['container']['valid_volumes'] = ['/var/run/docker.sock']
cfg['container']['docker_host'] = 'unix:///var/run/docker.sock'
with open('/home/${USERNAME}/config.yml', 'w') as f:
yaml.dump(cfg, f, default_flow_style=False)
"
chown -R ${USERNAME}:${USERNAME} /home/${USERNAME}
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt -y update
sudo apt -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
usermod -aG docker ${USERNAME}
curl -fsSL https://tailscale.com/install.sh | sh && sudo tailscale up --auth-key=${TAILNET_KEY}
# Create the systemd service file
cat > /etc/systemd/system/forgejorunnerservice.service << 'EOF'
[Unit]
Description=Forgejo CI Runner Listening Service
After=network.target docker.service
Requires=docker.service
[Service]
Type=simple
User=${USERNAME}
WorkingDirectory=/home/${USERNAME}
ExecStart=/home/${USERNAME}/forgejo-runner --config /home/${USERNAME}/config.yml daemon
Restart=on-failure
RestartSec=5
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
# Enable and start the service
systemctl daemon-reload
systemctl enable forgejorunnerservice.service
systemctl start forgejorunnerservice.service
permissions: '0755'
- path: /etc/systemd/system/init-script.service
content: |
[Unit]
Description=One-shot service for initializing Init Script
After=network.target
[Service]
User=root
Type=oneshot
ExecStart=/usr/local/bin/init.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
permissions: '0644'
runcmd:
- systemctl enable --now qemu-guest-agent
- systemctl enable --now init-script.service

Event Timeline

cichy1173 created this object in space S5 Publiczna.
cichy1173 changed the visibility from "All Users" to "Public (No Login Required)".
cichy1173 changed the edit policy from "All Users" to "cichy1173 (Grzegorz Cichocki)".