Files
Inanis_Vault/21-Server Reference/stacks/gitea.md

2.3 KiB

Gitea

Self-hosted Git service (GitHub alternative).

Access

Containers

Container Image Role
gitea gitea/gitea:latest Web app + Git server
gitea_db mysql:8 MySQL database
gitea-tailscale-sidecar tailscale/tailscale:latest Tailscale node

Compose File

Path: /home/artanis/DockerFiles/gitea/docker-compose.yml

services:
  gitea:
    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=db:3306
      - GITEA__database__NAME=gitea
      - GITEA__database__USER=gitea
      - GITEA__database__PASSWD=<redacted>
    volumes:
      - /home/artanis/DockerFiles/gitea/gitea_data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2222:2222"

  db:
    image: mysql:8
    container_name: gitea_db
    restart: unless-stopped
    environment:
      - MYSQL_ROOT_PASSWORD=<redacted>
      - MYSQL_DATABASE=gitea
      - MYSQL_USER=gitea
      - MYSQL_PASSWORD=<redacted>
    volumes:
      - /home/artanis/DockerFiles/gitea/gitea_db_data:/var/lib/mysql

  gitea-tailscale-sidecar:
    image: tailscale/tailscale:latest
    container_name: gitea-tailscale-sidecar
    restart: always
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun
    volumes:
      - gitea_tailscale_state:/var/lib/tailscale
    environment:
      - TS_AUTHKEY=<redacted>
      - TS_HOSTNAME=gitea
      - TS_STATE_DIR=/var/lib/tailscale
    network_mode: "service:gitea"

volumes:
  gitea_tailscale_state:

Data Layout

Path Contents
/home/artanis/DockerFiles/gitea/gitea_data Gitea repos, config, attachments
/home/artanis/DockerFiles/gitea/gitea_db_data MySQL data directory

Notes

  • Database: MySQL 8 (separate container gitea_db)
  • Port 2222 is exposed for SSH-based Git operations (clone/push via ssh://)
  • Timezone files from the host are mounted read-only to keep Gitea's timestamps consistent