95 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| **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](https://docs.gitea.com/administration/config-cheat-sheet)
 | |
| 
 | |
| 
 | |
| ## Docker Configuration
 | |
| ```yaml 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
 | |
| ```
 | |
| 
 | |
| ```yaml 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
 | |
| ``` |