Gitea is a lightweight, self-hosted Git service similar to GitHub or GitLab. It offers repository hosting, issue tracking, code reviews and a web-based UI. Designed for simplicity and speed, it’s ideal for teams or individuals who want to manage their own Git servers. It’s easy to deploy and low on system resources. Gitea is perfect for developers wanting version control without cloud dependency.
Setup
docker-compose.yaml
version: '3'
networks:
docker_net:
external: true
volumes:
gitea:
mysql:
services:
server:
image: gitea/gitea:latest
container_name: gitea
restart: unless-stopped
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=gitea-mysql:3306
- GITEA__database__NAME=gitea
- GITEA__database__USER=admin
- GITEA__database__PASSWD=$MYSQL_PASSWORD
networks:
- docker_net
volumes:
- gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- 3000:3000
- 2222:22
depends_on:
- db
db:
image: mysql:8
container_name: gitea-mysql
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD
- MYSQL_USER=admin
- MYSQL_PASSWORD=$MYSQL_PASSWORD
- MYSQL_DATABASE=gitea
networks:
- docker_net
volumes:
- mysql:/var/lib/mysql
gitea-act-runner:
image: gitea/act_runner:latest
container_name: gitea-act-runner
restart: unless-stopped
volumes:
- /root/config/act-runner:/config/act-runner
- /var/run/docker.sock:/var/run/docker.sock
environment:
CONFIG_FILE: "/config/act-runner/config.yaml"
GITEA_INSTANCE_URL: $GITEA_INSTANCE_URL
GITEA_RUNNER_REGISTRATION_TOKEN: $RUNNER_REGISTRATION_TOKEN
GITEA_RUNNER_NAME: "main-runner"
GITEA_RUNNER_LABELS: ""
networks:
- docker_net
deploy:
resources:
limits:
cpus: '2'
memory: 4G
Add Gitea runner
generate config file:
docker run --entrypoint="" --rm -it gitea/act_runner:latest act_runner generate-config > config.yaml
-> gitea runner service in portainer stack