Files
implohq/compose.yml

199 lines
5.7 KiB
YAML

# admin token:
# text input: glEY8%iK!&r44KxUj8Bv1Yj$68mcHElc
# salt: ^85Du@M&
name: implohq
include:
- ./services/photos/compose.yaml
services:
proxy:
image: traefik:v2.10
container_name: implohq-proxy
networks:
- proxy
restart: always
ports:
- "80:80"
- "8080:8080"
- "443:443"
- "22:22"
volumes:
- "./letsencrypt:/letsencrypt"
- "./certs:/certs"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./dynamic:/etc/traefik/dynamic"
command:
- "--log.level=DEBUG"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.network=implohq_proxy"
- "--providers.docker.exposedbydefault=false"
- "--providers.file.directory=/etc/traefik/dynamic"
- "--providers.file.watch=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.ssh.address=:22"
- "--certificatesresolvers.webresolver.acme.tlschallenge=true"
# - "--certificatesresolvers.webresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
- "--certificatesresolvers.webresolver.acme.email=quirin.ecker@bajupa.com"
- "--certificatesresolvers.webresolver.acme.storage=/letsencrypt/acme.json"
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
smarthome:
container_name: implohq-smarthome
networks:
- proxy
image: homeassistant/home-assistant:stable
restart: always
volumes:
- ./storage/home-assistant/config:/config
expose:
- 8123
ports:
- "5683:5683/udp"
- "8123:8123"
labels:
- "traefik.enable=true"
- "traefik.http.routers.homeassistant.rule=Host(`smarthome.implohq.de`)"
- "traefik.http.services.homeassistant.loadbalancer.server.port=8123"
- "traefik.http.routers.homeassistant.entrypoints=websecure"
- "traefik.http.routers.homeassistant.tls.certresolver=webresolver"
cloud:
container_name: implohq-cloud
networks:
- proxy
- database
image: lscr.io/linuxserver/nextcloud:latest
restart: always
volumes:
- ./storage/nextcloud/data:/data
- ./storage/nextcloud/config:/config
- /var/run/docker.sock:/var/run/docker.sock:ro
expose:
- 80
ports:
- "8001:80"
labels:
- "traefik.enable=true"
- "traefik.http.routers.nextcloud.rule=Host(`cloud.implohq.de`)"
- "traefik.http.routers.nextcloud.entrypoints=websecure"
- "traefik.http.routers.nextcloud.tls.certresolver=webresolver"
env_file:
- .env.cloud
database:
container_name: implohq-database
restart: always
image: postgres
networks:
- database
ports:
- "5432:5432"
volumes:
- ./storage/postgres/:/var/lib/postgresql
env_file:
- .env.database
broker:
container_name: implohq-broker
image: eclipse-mosquitto
ports:
- "1883:1883"
- "8883:8883"
volumes:
- ./storage/mqtt/config:/mosquitto/config/
- ./storage/mqtt/certs/:/mosquitto/certs/
vpn:
image: lscr.io/linuxserver/wireguard:latest
container_name: implohq-vpn
cap_add:
- NET_ADMIN
- SYS_MODULE #optional
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- SERVERURL=vpn.implohq.de #optional
- SERVERPORT=51820 #optional
- PEERS=4 #optional
- PEERDNS=auto #optional
- INTERNAL_SUBNET=10.13.13.0 #optional
- ALLOWEDIPS=0.0.0.0/0 #optional
- PERSISTENTKEEPALIVE_PEERS= #optional
- LOG_CONFS=true #optional
volumes:
- ./storage/wireguard/config:/config
- ./storage/wireguard/modules:/lib/modules
ports:
- 51820:51820/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
password-manager:
image: vaultwarden/server:latest
container_name: implohq-password-manager
restart: unless-stopped
networks:
- proxy
ports:
- 9445:80 #map any custom port to use (replace 9445 not 80)
volumes:
- ./storage/vaultwarden/:/data:rw
environment:
- ADMIN_TOKEN=$argon2i$v=19$m=16,t=2,p=1$Xjg1RHVATSY$6EP9M9H3QUOnmlEDPlX/5g
- WEBSOCKET_ENABLED=true
- SIGNUPS_ALLOWED=true
- DOMAIN=https://passwords.implohq.de
labels:
- "traefik.enable=true"
- "traefik.http.routers.vaultwarden.rule=Host(`passwords.implohq.de`)"
- "traefik.http.routers.vaultwarden.entrypoints=websecure"
- "traefik.http.routers.vaultwarden.tls=true"
- "traefik.http.routers.vaultwarden.tls.domains[0].main=passwords.implohq.de"
env_file:
- .env.password-manager
# Directly reference the certificate files
git-server:
image: docker.gitea.com/gitea:1.24.6
container_name: implohq-git-server
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
volumes:
- ./storage/gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
networks:
- proxy
ports:
- "2222:22"
expose:
- 3000
labels:
- "traefik.enable=true"
- "traefik.http.routers.git.rule=Host(`git.implohq.de`)"
- "traefik.http.services.git.loadbalancer.server.port=3000"
- "traefik.http.routers.git.entrypoints=websecure"
- "traefik.http.routers.git.tls.certresolver=webresolver"
# ssh config
- "traefik.tcp.routers.git.rule=HostSNI(`*`)"
- "traefik.tcp.routers.git.entrypoints=ssh"
- "traefik.tcp.services.git.loadbalancer.server.port=22"
networks:
proxy:
ipam:
config:
- subnet: "172.19.0.0/16"
gateway: "172.19.0.1"
database:
portainer: