**Purpose**: Gitea is a painless self-hosted all-in-one software development service, it includes Git hosting, code review, team collaboration, package registry and CI/CD. It is similar to GitHub, Bitbucket and GitLab. Gitea was forked from Gogs originally and almost all the code has been changed. ## Docker Configuration ```jsx title="docker-compose.yml" version: "3" services: server: image: gitea/gitea:latest container_name: gitea privileged: true environment: - USER_UID=1000 - USER_GID=1000 - TZ=America/Denver - GITEA__mailer__ENABLED=true - GITEA__mailer__FROM=${GITEA__mailer__FROM:?GITEA__mailer__FROM not set} - GITEA__mailer__PROTOCOL=smtp+starttls - GITEA__mailer__HOST=${GITEA__mailer__HOST:?GITEA__mailer__HOST not set} - GITEA__mailer__IS_TLS_ENABLED=true - GITEA__mailer__USER=${GITEA__mailer__USER:-apikey} - GITEA__mailer__PASSWD="""${GITEA__mailer__PASSWD:?GITEA__mailer__PASSWD not set}""" restart: always volumes: - /srv/containers/gitea:/data # - /etc/timezone:/etc/timezone:ro # - /etc/localtime:/etc/localtime:ro ports: - "3000:3000" - "222:22" networks: docker_network: ipv4_address: 192.168.5.70 # labels: # - "traefik.enable=true" # - "traefik.http.routers.gitea.rule=Host(`git.bunny-lab.io`)" # - "traefik.http.routers.gitea.entrypoints=websecure" # - "traefik.http.routers.gitea.tls.certresolver=letsencrypt" # - "traefik.http.services.gitea.loadbalancer.server.port=3000" depends_on: - postgres postgres: image: postgres:12-alpine ports: - 5432:5432 volumes: - /srv/containers/gitea/db:/var/lib/postgresql/data environment: - POSTGRES_DB=gitea - POSTGRES_USER=gitea - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - TZ=America/Denver restart: always networks: docker_network: ipv4_address: 192.168.5.71 networks: docker_network: external: true ``` ```jsx title=".env" GITEA__mailer__FROM=noreply@bunny-lab.io GITEA__mailer__HOST=mail.bunny-lab.io GITEA__mailer__PASSWD=SecureSMTPPassword GITEA__mailer__USER=noreply@bunny-lab.io POSTGRES_PASSWORD=SomethingSuperSecure ``` ## Traefik Reverse Proxy Configuration If the container does not run on the same host as Traefik, you will need to manually add configuration to Traefik's dynamic config file, outlined below. ``` yaml http: routers: git: entryPoints: - websecure tls: certResolver: letsencrypt http2: service: git rule: Host(`git.bunny-lab.io`) services: git: loadBalancer: servers: - url: http://192.168.5.70:3000 passHostHeader: true ```