All templates

Gitea

v1.0.0

Self-hosted Git repositories, code review, issues, and project collaboration.

gitdevelopment by getarcaneapp
x-arcane:
  icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/gitea.svg
  urls:
    - https://docs.gitea.com/installation/install-with-docker/

services:
  gitea:
    image: docker.gitea.com/gitea:latest
    restart: unless-stopped
    ports:
      - "${BIND_ADDRESS:-127.0.0.1}:${APP_PORT:-3006}:3000"
      - "${SSH_PORT:-2223}:22"
    environment:
      USER_UID: ${PUID:-1000}
      USER_GID: ${PGID:-1000}
      GITEA__database__DB_TYPE: sqlite3
      GITEA__server__DOMAIN: ${DOMAIN:-localhost}
      GITEA__server__SSH_DOMAIN: ${DOMAIN:-localhost}
      GITEA__server__ROOT_URL: ${BASE_URL:-http://localhost:3006/}
      GITEA__server__SSH_PORT: ${SSH_PORT:-2223}
      GITEA__service__DISABLE_REGISTRATION: "true"
    volumes:
      - gitea-data:/data
    labels:
      com.getarcaneapp.arcane.icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/gitea.svg

volumes:
  gitea-data:

README

The web interface binds to loopback by default. Open it on the Docker host or through an SSH tunnel. For LAN access, set BIND_ADDRESS to a trusted interface after completing account setup; use an authenticated HTTPS reverse proxy for remote access.

Set DOMAIN and BASE_URL to the hostname and URL users will access, then open that URL to complete the installation wizard. Keep SQLite selected and create the administrator in the wizard; public registration is disabled.

SSH clone URLs use SSH_PORT (default 2223). If you change the HTTP port, update BASE_URL too. Repositories, configuration, and the SQLite database persist in gitea-data; back up the whole volume. This template does not install an Actions runner.

Upstream deployment documentation.