Files
selfhosted-templates/homelab/docker-compose.yml
2023-07-10 21:50:50 -05:00

185 lines
4.4 KiB
YAML

version: '3.8'
services:
nextcloud-db:
image: mariadb:10.5
container_name: nextcloud-db
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: unless-stopped
volumes:
- ./data/nextcloud-db:/var/lib/mysql
environment:
- MARIADB_AUTO_UPGRADE=1
- MARIADB_DISABLE_UPGRADE_BACKUP=1
env_file:
- ./env/nextcloud-db.env
nextcloud-redis:
image: redis:alpine
container_name: nextcloud-redis
restart: unless-stopped
nextcloud-app:
build: ./builds/nextcloud-app/
container_name: nextcloud-app
restart: unless-stopped
volumes:
- ./data/nextcloud-app:/var/www/html
environment:
- VIRTUAL_HOST=nextcloud.yourdomain.com
- LETSENCRYPT_HOST=nextcloud.yourdomain.com
- LETSENCRYPT_EMAIL=youremail@domain.com
- MYSQL_HOST=nextcloud-db
- REDIS_HOST=nextcloud-redis
env_file:
- ./env/nextcloud-db.env
depends_on:
- nextcloud-db
- nextcloud-redis
networks:
- proxy-tier
- default
nextcloud-cron:
image: nextcloud:apache
container_name: nextcloud-cron
restart: unless-stopped
volumes:
- ./data/nextcloud-app:/var/www/html
entrypoint: /cron.sh
depends_on:
- nextcloud-db
- nextcloud-redis
gitea-app:
image: gitea/gitea:nightly
container_name: gitea-app
environment:
- VIRTUAL_HOST=gitea.yourdomain.com
- LETSENCRYPT_HOST=gitea.yourdomain.com
- LETSENCRYPT_EMAIL=youremail@domain.com
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=gitea-db:3306
- SSH_PORT=2321
env_file:
- ./env/gitea-db.env
restart: unless-stopped
networks:
- proxy-tier
volumes:
- ./data/gitea-app:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "2321:22"
depends_on:
- gitea-db
gitea-db:
image: mariadb:10.5
container_name: gitea-db
restart: unless-stopped
env_file:
- ./env/gitea-db.env
networks:
- proxy-tier
volumes:
- ./data/gitea-db:/var/lib/mysql
syncthing-app:
image: lscr.io/linuxserver/syncthing:latest
container_name: syncthing-app
hostname: yourhostname
environment:
- PUID=1000
- PGID=1000
- TZ=YourRegion/YourCity
networks:
- proxy-tier
volumes:
- ./data/syncthing-app/config:/config
- ./data/syncthing-app/data:/source
ports:
- 8384:8384
- 22000:22000/tcp
- 22000:22000/udp
- 21027:21027/udp
restart: unless-stopped
freshrss:
image: lscr.io/linuxserver/freshrss:latest
container_name: freshrss-app
environment:
- VIRTUAL_HOST=freshrss.yourdomain.com
- LETSENCRYPT_HOST=freshrss.yourdomain.com
- LETSENCRYPT_EMAIL=youremail@domain.com
- PUID=1000
- PGID=1000
- TZ=YourRegion/YourCity
networks:
- proxy-tier
volumes:
- ./data/freshrss-app/config:/config
restart: unless-stopped
heimdall-app:
image: lscr.io/linuxserver/heimdall:latest
container_name: heimdall-app
environment:
- VIRTUAL_HOST=homepage.yourdomain.com
- LETSENCRYPT_HOST=homepage.yourdomain.com
- LETSENCRYPT_EMAIL=youremail@domain.com
- PUID=1000
- PGID=1000
- TZ=YourRegion/YourCity
volumes:
- ./data/heimdall-app/config:/config
networks:
- proxy-tier
restart: unless-stopped
nginx-proxy:
build: ./builds/nginx-proxy/
container_name: nginx-proxy
restart: unless-stopped
ports:
- 80:80
- 443:443
labels:
com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
volumes:
- certs:/etc/nginx/certs:ro
- vhost.d:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
- proxy-tier
letsencrypt-companion:
image: nginxproxy/acme-companion
container_name: letsencrypt-companion
restart: unless-stopped
volumes:
- certs:/etc/nginx/certs
- acme:/etc/acme.sh
- vhost.d:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- /var/run/docker.sock:/var/run/docker.sock:ro
networks:
- proxy-tier
depends_on:
- nginx-proxy
volumes:
certs:
acme:
vhost.d:
html:
networks:
proxy-tier:
external: true