# Setting up local Codeberg runners

DevFeed: [Setting up local Codeberg runners](<https://devfeed.tech/articles/setting-up-local-codeberg-runners-26166.md>)

Original publisher: [Read original article](<https://dev.to/tkuenneth/setting-up-local-codeberg-runners-4eif>)

Author: Thomas Künneth

Published: 2026-03-02T18:29:02Z

Content type: tutorial

Language: en

Sources: [Thomas Künneth](<https://devfeed.tech/sources/thomas-kunneth.md>)

Topics: [CI/CD](<https://devfeed.tech/topics/cicd.md>), [Docker Compose](<https://devfeed.tech/topics/docker-compose.md>), [Docker](<https://devfeed.tech/topics/docker.md>), [Gitea](<https://devfeed.tech/topics/gitea.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [configuration](<https://devfeed.tech/topics/configuration.md>), [container](<https://devfeed.tech/topics/container.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [ci](<https://devfeed.tech/tags/ci.md>), [ci-cd](<https://devfeed.tech/tags/ci-cd.md>), [cicd](<https://devfeed.tech/tags/cicd.md>), [coding](<https://devfeed.tech/tags/coding.md>), [community](<https://devfeed.tech/tags/community.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [container](<https://devfeed.tech/tags/container.md>), [development](<https://devfeed.tech/tags/development.md>), [docker](<https://devfeed.tech/tags/docker.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [guide](<https://devfeed.tech/tags/guide.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [inclusive](<https://devfeed.tech/tags/inclusive.md>), [opensource](<https://devfeed.tech/tags/opensource.md>), [software](<https://devfeed.tech/tags/software.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

## AI overview

This tutorial explains how to set up a local CI/CD runner for Codeberg. It covers registering the runner, configuring and launching a Docker-based runner with Docker Compose, and choosing between the containerized and direct binary methods, including considerations for Mac computers with Apple Silicon and Android builds.

## Source excerpt

In my previous article, First steps towards Codeberg, we looked at how to get set up and comfortable on the platform. Now that your code has a new home, it's time to level up your workflow with automation. While Codeberg provides shared runners for CI/CD, there are plenty of reasons to run your own, among others, performance specific hardware requirements avoiding queue times In this guide , I'll show you how to use your local machine as a CI/CD runner for Codeberg. This works behind firewalls and home routers without needing to expose your IP address. Sounds cool, right? Depending on your needs, you can choose between two setup methods: the containerized approach using Docker / OrbStack, or running the act_runner binary directly. Since I am on a Mac with Apple Silicon, the choice actually matters quite a bit. Docker on M-series chips runs Linux ARM64 images, and unfortunately, the standard Android build tools don't officially support that environment yet. If you are here for Android builds, you might want to look at the binary method; otherwise, Docker is a safe bet. First, get your registration token. On Codeberg, navigate to Settings > Actions > Runners Click Create new runner Copy the Registration Token Next, prepare the workspace. Docker / OrbStack Open your terminal and create a folder to house the runner's identity and configuration. mkdir codeberg-runner cd codeberg-runner After that, create the configuration by putting a file named docker-compose.yml in that folder: code docker-compose.yml Here's how that file should look like. Replace <TOKEN> and <name-of-your-runner> with your registration token and a name for your runner. <name-of-your-runner> will appear in the Codeberg dashboard. services: runner: image: gitea/act_runner:latest container_name: codeberg_runner restart: always environment: - GITEA_INSTANCE_URL=https://codeberg.org - GITEA_RUNNER_REGISTRATION_TOKEN=<TOKEN> - GITEA_RUNNER_NAME=<name-of-your-runner> - ACT_RUNNER_DEFAULT_IMAGE=gitea/runner-i