Skip to content

Gitea

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.

Detailed SMTP Configuration Reference

Docker Configuration

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
.env
[email protected]
GITEA__mailer__HOST=mail.bunny-lab.io
GITEA__mailer__PASSWD=SecureSMTPPassword
[email protected]
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.

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