Integrating Gitea and Act Runners with Coolify (Similar to GitHub Actions)

Integrating Gitea and its Act Runners into Coolify is straightforward. Act Runners are fully compatible with GitHub Actions, which means you can migrate your projects without having to modify your existing workflows.

Deploying Gitea in Coolify

The first step is to add a new Gitea resource to one of your Coolify projects. The default configuration is already designed to work seamlessly with the platform, making the setup process very simple.

However, configuring the Runner (the container responsible for executing your CI/CD pipelines) may require a few adjustments. After adding the Gitea Runner resource from the list of available services in Coolify, you may need to modify some settings to ensure everything works correctly.

Configuring Environment Variables

Start by configuring the following environment variables:

GITEA_INSTANCE_URL

The URL of your Gitea instance.

GITEA_RUNNER_REGISTRATION_TOKEN

The Runner registration token. You can retrieve it from the Gitea administration interface: Site Administration → Actions → Runners → Create New Runner
The token is displayed during the runner creation process.

GITEA_RUNNER_NAME

The name of your runner, for example:

gitea-runner

GITEA_RUNNER_LABELS

ubuntu-latest:docker://node:22-bullseyeCode language: JavaScript (javascript)

This configuration is important because most workflows rely on Node.js. The runner will automatically pull a Docker image based on Ubuntu with Node.js 22 preinstalled.

Issue Encountered When Starting Actions

During my testing, I encountered a blocking issue during the environment preparation phase of the runner. After spending quite some time searching for a solution without success, I found the following error message:

Gitea Runner(version:v1.0.3) received task 1100 of job Build and push yggdrasil docker image, be triggered by event: push
workflow prepared
evaluating expression ‘success()’
expression ‘success()’ evaluated to ‘true’
Starting job container Error response from daemon:
Head "https://registry-1.docker.io/v2/gitea/runner-images/manifests/ubuntu-latest": unknown: malformed HTTP Authorization headerCode language: JavaScript (javascript)

Solution

To resolve this issue, I followed these steps:

1. Remove the Registered Runner

In Gitea, navigate to: Site Administration → Actions → Runners
Then remove the runner that is currently registered.

2. Generate the Configuration File

Next, connect to the runner container and generate the default configuration file:

gitea-runner generate-config > config.yamlCode language: CSS (css)

In my case, this file was missing, which prevented the runner from operating correctly.

3. Re-register the Runner

Once the configuration file has been created and verified, register the runner again:

gitea-runner register

Follow the registration process and use the token generated earlier in Gitea.

Conclusion

After these adjustments, your Gitea instance and Act Runners should work perfectly within Coolify. You now have a fully self-hosted Git environment with CI/CD pipelines running entirely on your own infrastructure.

This approach provides greater control over your data, improved privacy, and full ownership of your deployment pipeline—especially at a time when centralized platforms remain attractive targets for security incidents and cyberattacks.

GhostvOne
GhostvOne

Leave a Reply

Your email address will not be published. Required fields are marked *