Last active
October 7, 2022 15:18
-
-
Save karlbaillie/9300da1571de6a80c15dd09800c933c9 to your computer and use it in GitHub Desktop.
Self-Hosted Stack w/Traeik Front End
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: "2.4" | |
networks: | |
frontend: | |
external: true | |
backend: | |
external: true | |
vlan30: | |
driver: macvlan | |
driver_opts: | |
parent: eno1.30 | |
ipam: | |
config: | |
- subnet: 192.168.30.0/24 | |
gateway: 192.168.30.1 | |
ip_range: 192.168.30.32/27 | |
services: | |
traefik: | |
image: traefik:v2.1 | |
container_name: traefik | |
command: | |
# - "--log.level=DEBUG" # enable debugging | |
- "--api.insecure=true" # allow http | |
- "--providers.docker" # use docker as a provider of config (via labels) | |
- "--providers.docker.network=frontend" # default network traefik will use to reach containers | |
- "--providers.docker.exposedbydefault=false" # don't expose all containers by default | |
- "--entrypoints.http.address=:80" # define http entrypoint | |
- "--entrypoints.git-ssh.address=:2222" # define git entrypoint | |
- "--entrypoints.influxdb.address=:8086" # define influxdb entrypoint | |
- "--entrypoints.mqtt.address=:1883" # define mqtt entrypoint | |
ports: | |
- 80:80 # http | |
- 1883:1883 # mqtt | |
- 8080:8080 # traefik dash | |
- 8086:8086 # influxdb | |
- 3306:3306 # mysql | |
- 2222:2222 # git-ssh | |
networks: | |
- frontend | |
volumes: | |
- /var/run/docker.sock:/var/run/docker.sock:ro | |
transmission: | |
image: linuxserver/transmission | |
container_name: transmission | |
environment: | |
- PUID=60010 | |
- PGID=60010 | |
- TZ=Europe/London | |
volumes: | |
- /storage/data/transmission:/config | |
- /storage/downloads:/downloads | |
- /storage/watch:/watch | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.transmission.entrypoints=http" | |
- "traefik.http.routers.transmission.rule=Host(`transmission.home.yourname.com`)" | |
- "traefik.http.services.transmission.loadbalancer.server.port=9091" | |
networks: | |
vlan30: | |
priority: 1000 | |
restart: unless-stopped | |
dns: | |
- 1.1.1.1 | |
- 9.9.9.9 | |
sonarr: | |
image: linuxserver/sonarr | |
container_name: sonarr | |
restart: unless-stopped | |
environment: | |
PGID: '60010' | |
PUID: '60010' | |
volumes: | |
- /dev/rtc:/dev/rtc:ro | |
- /storage/data/sonarr:/config | |
- /storage/downloads:/downloads | |
- /storage/media/tv:/tv | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.sonarr.entrypoints=http" | |
- "traefik.http.routers.sonarr.rule=Host(`sonarr.home.yourname.com`)" | |
- "traefik.http.services.sonarr.loadbalancer.server.port=8989" | |
networks: | |
vlan30: | |
priority: 1000 | |
dns: | |
- 1.1.1.1 | |
- 9.9.9.9 | |
lidarr: | |
image: linuxserver/lidarr | |
container_name: lidarr | |
restart: unless-stopped | |
environment: | |
PGID: '60010' | |
PUID: '60010' | |
TZ: Europe/London | |
volumes: | |
- /dev/rtc:/dev/rtc:ro | |
- /storage/data/lidarr:/config | |
- /storage/downloads:/downloads | |
- /storage/media/music:/music | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.lidarr.entrypoints=http" | |
- "traefik.http.routers.lidarr.rule=Host(`lidarr.home.yourname.com`)" | |
- "traefik.http.services.lidarr.loadbalancer.server.port=8686" | |
networks: | |
vlan30: | |
priority: 1000 | |
dns: | |
- 1.1.1.1 | |
- 9.9.9.9 | |
radarr: | |
image: linuxserver/radarr | |
container_name: radarr | |
restart: unless-stopped | |
environment: | |
PGID: '60010' | |
PUID: '60010' | |
TZ: Europe/London | |
volumes: | |
- /dev/rtc:/dev/rtc:ro | |
- /storage/data/radarr:/config | |
- /storage/downloads:/downloads | |
- /storage/media/movies:/movies | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.radarr.entrypoints=http" | |
- "traefik.http.routers.radarr.rule=Host(`radarr.home.yourname.com`)" | |
- "traefik.http.services.radarr.loadbalancer.server.port=7878" | |
networks: | |
vlan30: | |
priority: 1000 | |
dns: | |
- 1.1.1.1 | |
- 9.9.9.9 | |
jackett: | |
image: linuxserver/jackett | |
container_name: jackett | |
restart: unless-stopped | |
environment: | |
PUID: '60010' | |
PGID: '60010' | |
TZ: Europe/London | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.jackett.entrypoints=http" | |
- "traefik.http.routers.jackett.rule=Host(`jackett.home.yourname.com`)" | |
- "traefik.http.services.jackett.loadbalancer.server.port=9117" | |
volumes: | |
- /storage/data/jackett:/config | |
- /etc/localtime:/etc/localtime:ro | |
networks: | |
vlan30: | |
priority: 1000 | |
dns: | |
- 1.1.1.1 | |
- 9.9.9.9 | |
calibre-web: | |
image: linuxserver/calibre-web | |
container_name: calibre-web | |
environment: | |
PUID: '60010' | |
PGID: '60010' | |
TZ: Europe/London | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.calibre-web.entrypoints=http" | |
- "traefik.http.routers.calibre-web.rule=Host(`calibre-web.home.yourname.com`)" | |
- "traefik.http.services.calibre-web.loadbalancer.server.port=8083" | |
volumes: | |
- /storage/data/calibre-web:/config | |
- /storage/media/books:/books | |
restart: unless-stopped | |
networks: | |
vlan30: | |
priority: 1000 | |
dns: | |
- 1.1.1.1 | |
- 9.9.9.9 | |
lazylibrarian: | |
image: linuxserver/lazylibrarian | |
container_name: lazylibrarian | |
environment: | |
PUID: '60010' | |
PGID: '60010' | |
TZ: Europe/London | |
DOCKER_MODS: linuxserver/calibre-web:calibre | |
expose: | |
- 5299 | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.lazylibrarian.entrypoints=http" | |
- "traefik.http.routers.lazylibrarian.rule=Host(`lazylibrarian.home.yourname.com`)" | |
- "traefik.http.services.lazylibrarian.loadbalancer.server.port=5299" | |
volumes: | |
- /storage/data/lazylibrarian:/config | |
- /storage/downloads:/downloads | |
- /storage/media/books:/books | |
restart: unless-stopped | |
networks: | |
vlan30: | |
priority: 1000 | |
dns: | |
- 1.1.1.1 | |
- 9.9.9.9 | |
thelounge: | |
image: linuxserver/thelounge | |
container_name: thelounge | |
restart: unless-stopped | |
environment: | |
PUID: '1009' | |
PGID: '1009' | |
TZ: Europe/London | |
volumes: | |
- /storage/data/thelounge:/config | |
networks: | |
vlan30: | |
priority: 1000 | |
dns: | |
- 1.1.1.1 | |
- 9.9.9.9 | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.thelounge.rule=Host(`thelounge.home.yourname.com`)" | |
- "traefik.http.services.thelounge.loadbalancer.server.port=9000" | |
- "traefik.http.routers.thelounge.entrypoints=http" | |
- "traefik.docker.network=frontend" | |
plex: | |
image: plexinc/pms-docker:latest | |
container_name: plex | |
restart: unless-stopped | |
environment: | |
VERSION: latest | |
PLEX_UID: '60010' | |
PLEX_GID: '60010' | |
TZ: Europe/London | |
ADVERTISE_IP: 'http://192.168.20.10:32400/' | |
ALLOWED_NETWORKS: '192.168.20.0/24,192.168.60.0/24' | |
hostname: plex.home.yourname.com | |
ports: | |
- 32400:32400/tcp | |
- 32400:32400/udp | |
- 32469:32469/tcp | |
- 32469:32469/udp | |
- 32410:32410/udp | |
- 32412:32412/udp | |
- 32413:32413/udp | |
- 32414:32414/udp | |
- 5353:5353/udp | |
- 1900:1900/udp | |
- 33400:33400/tcp | |
- 33443:33443/tcp | |
volumes: | |
- /storage/media:/data | |
- /storage/data/plex/config:/config | |
- /storage/data/plex/transcode:/transcode | |
restart: unless-stopped | |
mysql: | |
image: mysql:5.7 | |
container_name: mysql | |
restart: unless-stopped | |
environment: | |
MYSQL_ROOT_PASSWORD: dfgerxdrfbdrsgd | |
networks: | |
backend: | |
priority: 1000 | |
frontend: | |
priority: 500 | |
volumes: | |
- /storage/data/mysql:/var/lib/mysql:rw | |
influxdb: | |
image: influxdb | |
container_name: influxdb | |
restart: unless-stopped | |
networks: | |
backend: | |
priority: 1000 | |
frontend: | |
priority: 500 | |
volumes: | |
- /storage/data/influxdb:/var/lib/influxdb | |
labels: | |
- "traefik.enable=true" | |
- "traefik.tcp.routers.influxdb.rule=HostSNI(`*`)" | |
- "traefik.tcp.routers.influxdb.entryPoints=influxdb" | |
- "traefik.tcp.routers.influxdb.service=influxdb" | |
- "traefik.tcp.services.influxdb.loadbalancer.server.port=8086" | |
- "traefik.docker.network=frontend" | |
phpmyadmin: | |
image: phpmyadmin/phpmyadmin | |
container_name: phpmyadmin | |
restart: unless-stopped | |
environment: | |
PMA_HOST: 'mysql' | |
PMA_USER: 'root' | |
PMA_PASSWORD: 'dfgerxdrfbdrsgd' | |
PMA_ABSOLUTE_URI: "http://phpmyadmin.home.yourname.com/" | |
networks: | |
frontend: | |
priority: 1000 | |
backend: | |
priority: 500 | |
depends_on: | |
- mysql | |
expose: | |
- 80 | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.phpmyadmin.rule=Host(`phpmyadmin.home.yourname.com`)" | |
- "traefik.http.services.phpmyadmin.loadbalancer.server.port=80" | |
- "traefik.http.routers.phpmyadmin.entrypoints=http" | |
gitea: | |
image: gitea/gitea:latest | |
container_name: gitea | |
environment: | |
USER_UID: '60010' | |
USER_GID: '60010' | |
TZ: Europe/London | |
DB_TYPE: 'mysql' | |
DB_HOST: 'mysql:3306' | |
DB_NAME: 'gittea' | |
DB_PASSWD: '14wM478iiu6DJiI' | |
ROOT_URL: '' | |
SSH_PORT: '2222' | |
SSH_DOMAIN: 'gitea.home.yourname.com' | |
INSTALL_LOCK: 'false' | |
DISABLE_REGISTRATION: 'false' | |
REQUIRE_SIGNIN_VIEW: 'false' | |
volumes: | |
- /storage/data/gitea/data:/data | |
networks: | |
frontend: | |
priority: 1000 | |
backend: | |
priority: 500 | |
restart: unless-stopped | |
depends_on: | |
- mysql | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.gitea-web.rule=Host(`gitea.home.yourname.com`)" | |
- "traefik.http.routers.gitea-web.entrypoints=http" | |
- "traefik.http.routers.gitea-web.service=gitea-web-svc" | |
- "traefik.http.services.gitea-web-svc.loadbalancer.server.port=3000" | |
- "traefik.tcp.routers.gitea-ssh.rule=HostSNI(`*`)" | |
- "traefik.tcp.routers.gitea-ssh.entrypoints=git-ssh" | |
- "traefik.tcp.routers.gitea-ssh.service=gitea-ssh-svc" | |
- "traefik.tcp.services.gitea-ssh-svc.loadbalancer.server.port=2222" | |
- "traefik.docker.network=frontend" | |
drone: | |
image: drone/drone:1 | |
container_name: drone | |
restart: unless-stopped | |
depends_on: | |
- gitea | |
expose: | |
- 80 | |
- 443 | |
environment: | |
- DRONE_GIT_ALWAYS_AUTH=false | |
- DRONE_GITEA_SERVER=http://gitea.home.yourname.com/ | |
- DRONE_SERVER_PROTO=http | |
- DRONE_SERVER_HOST=drone.home.yourname.com | |
- DRONE_TLS_AUTOCERT=false | |
- DRONE_GITEA_CLIENT_ID=96799sdgsdfsdgsdfrgbvwebvw654faa094 | |
- DRONE_GITEA_CLIENT_SECRET=bM1APdPZyCsefsefvsegsY12QqGLGAw7CzsEPg= | |
- DRONE_RPC_SECRET=7e292ed577sdfgsrgwsegwsegwsegr | |
networks: | |
frontend: | |
priority: 1000 | |
volumes: | |
- /storage/data/drone:/data | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.drone.rule=Host(`drone.home.yourname.com`)" | |
- "traefik.http.services.drone.loadbalancer.server.port=80" | |
- "traefik.http.routers.drone.entrypoints=http" | |
- "traefik.docker.network=frontend" | |
drone-runner-docker: | |
image: drone/drone-runner-docker:1 | |
container_name: drone-runner-docker | |
restart: unless-stopped | |
environment: | |
- DRONE_RPC_PROTO=http | |
- DRONE_RPC_HOST=drone | |
- DRONE_RPC_SECRET=7e292ed577sdfgsrgwsegwsegwsegr | |
- DRONE_RUNNER_CAPACITY=2 | |
- DRONE_RUNNER_NAME=${HOSTNAME} | |
networks: | |
frontend: | |
priority: 1000 | |
volumes: | |
- /var/run/docker.sock:/var/run/docker.sock | |
depends_on: | |
- gitea | |
- drone | |
tt-rss: | |
image: lunik1/tt-rss | |
container_name: tt-rss | |
restart: unless-stopped | |
environment: | |
PUID: '60010' | |
PGID: '60010' | |
TZ: Europe/London | |
networks: | |
frontend: | |
priority: 1000 | |
backend: | |
priority: 500 | |
volumes: | |
- /etc/localtime:/etc/localtime:ro | |
- /storage/data/tt-rss:/config:rw | |
depends_on: | |
- mysql | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.tt-rss.rule=Host(`tt-rss.home.yourname.com`)" | |
- "traefik.http.services.tt-rss.loadbalancer.server.port=80" | |
- "traefik.http.routers.tt-rss.entrypoints=http" | |
- "traefik.docker.network=frontend" | |
wallabag: | |
image: wallabag/wallabag | |
container_name: wallabag | |
environment: | |
- SYMFONY__ENV__MAILER_HOST=127.0.0.1 | |
- SYMFONY__ENV__MAILER_USER=~ | |
- SYMFONY__ENV__MAILER_PASSWORD=~ | |
- [email protected] | |
- SYMFONY__ENV__DOMAIN_NAME=http://wallabag.home.yourname.com/ | |
networks: | |
frontend: | |
priority: 1000 | |
volumes: | |
- /storage/data/wallabag:/var/www/wallabag/data | |
- /storage/data/wallabag/_images:/var/www/wallabag/web/assets/images | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.wallabag.rule=Host(`wallabag.home.yourname.com`)" | |
- "traefik.http.services.wallabag.loadbalancer.server.port=80" | |
- "traefik.http.routers.wallabag.entrypoints=http" | |
- "traefik.docker.network=frontend" | |
phpipam: | |
image: pierrecdn/phpipam | |
container_name: phpipam | |
restart: unless-stopped | |
environment: | |
MYSQL_ENV_MYSQL_HOST: 'mysql' | |
MYSQL_ENV_MYSQL_USER: 'phpipam' | |
MYSQL_ENV_MYSQL_ROOT_PASSWORD: 'asfafaqwfdvzxc' | |
MYSQL_ENV_MYSQL_DB: 'phpipam' | |
networks: | |
frontend: | |
priority: 1000 | |
backend: | |
priority: 500 | |
depends_on: | |
- mysql | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.phpipam.rule=Host(`phpipam.home.yourname.com`)" | |
- "traefik.http.services.phpipam.loadbalancer.server.port=80" | |
- "traefik.http.routers.phpipam.entrypoints=http" | |
- "traefik.docker.network=frontend" | |
telegraf: | |
image: telegraf | |
container_name: telegraf | |
network_mode: "service:influxdb" | |
restart: unless-stopped | |
environment: | |
HOST_PROC: '/host/proc' | |
volumes: | |
- /proc:/host/proc:ro | |
- /var/run/docker.sock:/var/run/docker.sock | |
mqtt: | |
image: ncarlier/mqtt | |
container_name: mqtt | |
restart: unless-stopped | |
networks: | |
frontend: | |
priority: 1000 | |
labels: | |
- "traefik.enable=true" | |
- "traefik.tcp.routers.mqtt.rule=HostSNI(`*`)" | |
- "traefik.tcp.routers.mqtt.entrypoints=mqtt" | |
- "traefik.tcp.routers.mqtt.service=mqtt-svc" | |
- "traefik.tcp.services.mqtt-svc.loadbalancer.server.port=1883" | |
grafana: | |
image: grafana/grafana | |
container_name: grafana | |
restart: unless-stopped | |
depends_on: | |
- influxdb | |
networks: | |
frontend: | |
priority: 1000 | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.grafana.rule=Host(`grafana.home.yourname.com`)" | |
- "traefik.http.services.grafana.loadbalancer.server.port=3000" | |
- "traefik.http.routers.grafana.entrypoints=http" | |
- "traefik.docker.network=frontend" | |
volumes: | |
- /storage/data/grafana:/var/lib/grafana | |
user: "60010" | |
watchtower: | |
image: containrrr/watchtower | |
container_name: watchtower | |
restart: unless-stopped | |
volumes: | |
- /var/run/docker.sock:/var/run/docker.sock:rw |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
where is this running on? VPS?