From dc40d193933c003db5324bc0044d96e9ae9224c4 Mon Sep 17 00:00:00 2001 From: SSAnkur Date: Thu, 22 Oct 2026 22:33:51 +0600 Subject: [PATCH] Initial Commit --- Docker/DMZ-Server/gitea/docker-compose.yaml | 20 + Docker/DMZ-Server/gotify/docker-compose.yaml | 15 + .../DMZ-Server/jellyfin/docker-compose.yaml | 27 ++ .../DMZ-Server/librespeed/docker-compose.yaml | 20 + .../DMZ-Server/mailrise/docker-compose.yaml | 39 ++ .../DMZ-Server/mirotalk/docker-compose.yaml | 27 ++ Docker/DMZ-Server/nginx/docker-compose.yaml | 17 + .../openspeedtest/docker-compose.yaml | 16 + .../pingvin-share/docker-compose.yaml | 18 + .../qbittorrent-vpn/docker-compose.yaml | 49 +++ .../qbittorrent/docker-compose.yaml | 44 ++ .../socket-proxy/docker-compose.yaml | 52 +++ .../traefik-dmz/docker-compose.yaml | 137 +++++++ Docker/LAN-Server/adguard-home/Dockerfile | 14 + .../adguard-home/docker-compose.yaml | 19 + Docker/LAN-Server/adminer/docker-compose.yaml | 16 + Docker/LAN-Server/bazarr/docker-compose.yaml | 22 + .../LAN-Server/dockhand/docker-compose.yaml | 18 + Docker/LAN-Server/dozzle/docker-compose.yaml | 18 + Docker/LAN-Server/ente/docker-compose.yaml | 44 ++ Docker/LAN-Server/esphome/docker-compose.yaml | 18 + .../flaresolverr/docker-compose.yaml | 17 + Docker/LAN-Server/gatus/docker-compose.yaml | 375 ++++++++++++++++++ Docker/LAN-Server/grocy/docker-compose.yaml | 18 + .../home-assistant/docker-compose.yaml | 18 + .../LAN-Server/homepage/docker-compose.yaml | 353 +++++++++++++++++ Docker/LAN-Server/immich/docker-compose.yaml | 65 +++ Docker/LAN-Server/ledfx/docker-compose.yaml | 18 + .../LAN-Server/mosquitto/docker-compose.yaml | 39 ++ .../music-assistant/docker-compose.yaml | 18 + Docker/LAN-Server/piper/docker-compose.yaml | 18 + .../LAN-Server/prowlarr/docker-compose.yaml | 17 + Docker/LAN-Server/radarr/docker-compose.yaml | 22 + Docker/LAN-Server/radicale/Dockerfile | 5 + .../LAN-Server/radicale/docker-compose.yaml | 17 + Docker/LAN-Server/sonarr/docker-compose.yaml | 22 + Docker/LAN-Server/traefik/docker-compose.yaml | 287 ++++++++++++++ .../vaultwarden/docker-compose.yaml | 15 + .../wyoming-vosk/docker-compose.yaml | 26 ++ 39 files changed, 2000 insertions(+) create mode 100644 Docker/DMZ-Server/gitea/docker-compose.yaml create mode 100644 Docker/DMZ-Server/gotify/docker-compose.yaml create mode 100644 Docker/DMZ-Server/jellyfin/docker-compose.yaml create mode 100644 Docker/DMZ-Server/librespeed/docker-compose.yaml create mode 100644 Docker/DMZ-Server/mailrise/docker-compose.yaml create mode 100644 Docker/DMZ-Server/mirotalk/docker-compose.yaml create mode 100644 Docker/DMZ-Server/nginx/docker-compose.yaml create mode 100644 Docker/DMZ-Server/openspeedtest/docker-compose.yaml create mode 100644 Docker/DMZ-Server/pingvin-share/docker-compose.yaml create mode 100644 Docker/DMZ-Server/qbittorrent-vpn/docker-compose.yaml create mode 100644 Docker/DMZ-Server/qbittorrent/docker-compose.yaml create mode 100644 Docker/DMZ-Server/socket-proxy/docker-compose.yaml create mode 100644 Docker/DMZ-Server/traefik-dmz/docker-compose.yaml create mode 100644 Docker/LAN-Server/adguard-home/Dockerfile create mode 100644 Docker/LAN-Server/adguard-home/docker-compose.yaml create mode 100644 Docker/LAN-Server/adminer/docker-compose.yaml create mode 100644 Docker/LAN-Server/bazarr/docker-compose.yaml create mode 100644 Docker/LAN-Server/dockhand/docker-compose.yaml create mode 100644 Docker/LAN-Server/dozzle/docker-compose.yaml create mode 100644 Docker/LAN-Server/ente/docker-compose.yaml create mode 100644 Docker/LAN-Server/esphome/docker-compose.yaml create mode 100644 Docker/LAN-Server/flaresolverr/docker-compose.yaml create mode 100644 Docker/LAN-Server/gatus/docker-compose.yaml create mode 100644 Docker/LAN-Server/grocy/docker-compose.yaml create mode 100644 Docker/LAN-Server/home-assistant/docker-compose.yaml create mode 100644 Docker/LAN-Server/homepage/docker-compose.yaml create mode 100644 Docker/LAN-Server/immich/docker-compose.yaml create mode 100644 Docker/LAN-Server/ledfx/docker-compose.yaml create mode 100644 Docker/LAN-Server/mosquitto/docker-compose.yaml create mode 100644 Docker/LAN-Server/music-assistant/docker-compose.yaml create mode 100644 Docker/LAN-Server/piper/docker-compose.yaml create mode 100644 Docker/LAN-Server/prowlarr/docker-compose.yaml create mode 100644 Docker/LAN-Server/radarr/docker-compose.yaml create mode 100644 Docker/LAN-Server/radicale/Dockerfile create mode 100644 Docker/LAN-Server/radicale/docker-compose.yaml create mode 100644 Docker/LAN-Server/sonarr/docker-compose.yaml create mode 100644 Docker/LAN-Server/traefik/docker-compose.yaml create mode 100644 Docker/LAN-Server/vaultwarden/docker-compose.yaml create mode 100644 Docker/LAN-Server/wyoming-vosk/docker-compose.yaml diff --git a/Docker/DMZ-Server/gitea/docker-compose.yaml b/Docker/DMZ-Server/gitea/docker-compose.yaml new file mode 100644 index 0000000..244778c --- /dev/null +++ b/Docker/DMZ-Server/gitea/docker-compose.yaml @@ -0,0 +1,20 @@ +networks: + ssankur: + external: "true" + +services: + gitea: + container_name: "gitea" + environment: + - "GITEA__repository__DEFAULT_PUSH_CREATE_PRIVATE=false" + - "GITEA__repository__ENABLE_PUSH_CREATE_ORG=true" + - "GITEA__repository__ENABLE_PUSH_CREATE_USER=true" + - "TZ=Asia/Dhaka" + - "USER_GID=1000" + - "USER_UID=1000" + image: "docker.gitea.com/gitea:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/data:/data" diff --git a/Docker/DMZ-Server/gotify/docker-compose.yaml b/Docker/DMZ-Server/gotify/docker-compose.yaml new file mode 100644 index 0000000..62a390b --- /dev/null +++ b/Docker/DMZ-Server/gotify/docker-compose.yaml @@ -0,0 +1,15 @@ +networks: + ssankur: + external: "true" + +services: + gotify: + container_name: "gotify" + environment: + - "TZ=Asia/Dhaka" + image: "gotify/server:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/data:/app/data" diff --git a/Docker/DMZ-Server/jellyfin/docker-compose.yaml b/Docker/DMZ-Server/jellyfin/docker-compose.yaml new file mode 100644 index 0000000..7370d4b --- /dev/null +++ b/Docker/DMZ-Server/jellyfin/docker-compose.yaml @@ -0,0 +1,27 @@ +networks: + ssankur: + external: "true" + +volumes: + TrueNAS-RO-Movies: + external: "true" + TrueNAS-RO-Shows: + external: "true" + +services: + jellyfin: + container_name: "jellyfin" + devices: + - "/dev/dri:/dev/dri" + environment: + - "PGID=1000" + - "PUID=1000" + - "TZ=Asia/Dhaka" + image: "lscr.io/linuxserver/jellyfin:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/config:/config" + - "TrueNAS-RO-Movies:/mnt/TrueNAS/Movies:ro" + - "TrueNAS-RO-Shows:/mnt/TrueNAS/Shows:ro" diff --git a/Docker/DMZ-Server/librespeed/docker-compose.yaml b/Docker/DMZ-Server/librespeed/docker-compose.yaml new file mode 100644 index 0000000..a07adcb --- /dev/null +++ b/Docker/DMZ-Server/librespeed/docker-compose.yaml @@ -0,0 +1,20 @@ +networks: + ssankur: + external: "true" + +services: + librespeed: + container_name: "librespeed" + environment: + - "DOCKER_MODS=ghcr.io/themepark-dev/theme.park:librespeed" + - "PASSWORD=${PASSWORD}" + - "PGID=1000" + - "PUID=1000" + - "TP_THEME=dracula" + - "TZ=Asia/Dhaka" + image: "lscr.io/linuxserver/librespeed:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/config:/config" diff --git a/Docker/DMZ-Server/mailrise/docker-compose.yaml b/Docker/DMZ-Server/mailrise/docker-compose.yaml new file mode 100644 index 0000000..8675959 --- /dev/null +++ b/Docker/DMZ-Server/mailrise/docker-compose.yaml @@ -0,0 +1,39 @@ +networks: + ssankur: + external: "true" + +services: + mailrise: + configs: + - source: "mailrise" + target: "/etc/mailrise.conf" + container_name: "mailrise" + image: "yoryan/mailrise:latest" + networks: + - "ssankur" + ports: + - "10.1.4.2:25:25/tcp" + restart: "on-failure" + +configs: + mailrise: + content: | + configs: + fileserver@mailrise.ssankur.com: + urls: + - "gotify://gotify/${GOTIFY_TOKEN_FILE_SERVER}" + mirotalk@mailrise.ssankur.com: + urls: + - "gotify://gotify/${GOTIFY_TOKEN_MIROTALK}" + pfsense@mailrise.ssankur.com: + urls: + - "gotify://gotify/${GOTIFY_TOKEN_PFSENSE}" + truenas@mailrise.ssankur.com: + urls: + - "gotify://gotify/${GOTIFY_TOKEN_TRUENAS}" + listen: + port: "25" + smtp: + auth: + basic: + SSAnkur: "${SMTP_PASSWORD}" diff --git a/Docker/DMZ-Server/mirotalk/docker-compose.yaml b/Docker/DMZ-Server/mirotalk/docker-compose.yaml new file mode 100644 index 0000000..bb22509 --- /dev/null +++ b/Docker/DMZ-Server/mirotalk/docker-compose.yaml @@ -0,0 +1,27 @@ +networks: + ssankur: + external: "true" + +services: + mirotalk: + container_name: "mirotalk" + environment: + - "EMAIL_ALERTS_ENABLED=true" + - "EMAIL_FROM=ankur7914@gmail.com" + - "EMAIL_HOST=mailrise" + - "EMAIL_PASSWORD=${EMAIL_PASSWORD}" + - "EMAIL_PORT=25" + - "EMAIL_SEND_TO=mirotalk@mailrise.ssankur.com" + - "EMAIL_USERNAME=SSAnkur" + - "JWT_SECRET=${JWT_SECRET}" + - "PRESENTER_JOIN_FIRST=false" + - "PRESENTERS=Ankur" + - "SFU_SERVER=true" + - "SFU_ANNOUNCED_IP=mirotalk.ssankur.com" + image: "mirotalk/sfu:latest" + networks: + - "ssankur" + ports: + - "10.1.4.2:40000-40004:40000-40004/tcp" + - "10.1.4.2:40000-40004:40000-40004/udp" + restart: "on-failure" diff --git a/Docker/DMZ-Server/nginx/docker-compose.yaml b/Docker/DMZ-Server/nginx/docker-compose.yaml new file mode 100644 index 0000000..ea3a68a --- /dev/null +++ b/Docker/DMZ-Server/nginx/docker-compose.yaml @@ -0,0 +1,17 @@ +networks: + ssankur: + external: "true" + +services: + nginx: + container_name: "nginx" + environment: + - "PGID=1000" + - "PUID=1000" + - "TZ=Asia/Dhaka" + image: "lscr.io/linuxserver/nginx:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/config:/config" diff --git a/Docker/DMZ-Server/openspeedtest/docker-compose.yaml b/Docker/DMZ-Server/openspeedtest/docker-compose.yaml new file mode 100644 index 0000000..dc3b11f --- /dev/null +++ b/Docker/DMZ-Server/openspeedtest/docker-compose.yaml @@ -0,0 +1,16 @@ +networks: + ssankur: + external: "true" + +services: + openspeedtest: + container_name: "openspeedtest" + environment: + - "SET_USER=1000" + - "TZ=Asia/Dhaka" + image: "openspeedtest/latest:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/letsencrypt:/var/log/letsencrypt" diff --git a/Docker/DMZ-Server/pingvin-share/docker-compose.yaml b/Docker/DMZ-Server/pingvin-share/docker-compose.yaml new file mode 100644 index 0000000..394a693 --- /dev/null +++ b/Docker/DMZ-Server/pingvin-share/docker-compose.yaml @@ -0,0 +1,18 @@ +networks: + ssankur: + external: "true" + +services: + pingvin-share: + container_name: "pingvin-share" + environment: + - "PGID=1000" + - "PUID=1000" + - "TZ=Asia/Dhaka" + image: "stonith404/pingvin-share:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/data:/opt/app/backend/data" + - "./mounts/img:/opt/app/frontend/public/img" diff --git a/Docker/DMZ-Server/qbittorrent-vpn/docker-compose.yaml b/Docker/DMZ-Server/qbittorrent-vpn/docker-compose.yaml new file mode 100644 index 0000000..d2bc64a --- /dev/null +++ b/Docker/DMZ-Server/qbittorrent-vpn/docker-compose.yaml @@ -0,0 +1,49 @@ +networks: + ssankur: + external: "true" + +volumes: + Vault: + external: "true" + +services: + qbittorrent-vpn: + cap_add: + - "NET_ADMIN" + configs: + - source: "wg0" + target: "/config/wireguard/wg0.conf" + container_name: "qbittorrent-vpn" + environment: + - "PGID=1000" + - "PUID=1000" + - "TZ=Asia/Dhaka" + - "VPN_ENABLED=true" + - "VPN_LAN_NETWORK=10.1.1.0/24,10.5.5.1" + - "VPN_NAMESERVERS=1.1.1.1@853#cloudflare-dns.com" + - "WEBUI_PORTS=8082/tcp" + image: "ghcr.io/hotio/qbittorrent:latest" + networks: + - "ssankur" + ports: + - "10.1.4.2:8082:8082/tcp" + restart: "on-failure" + sysctls: + - "net.ipv4.conf.all.src_valid_mark=1" + - "net.ipv6.conf.all.disable_ipv6=1" + volumes: + - "./mounts/config:/config" + - "Vault:/mnt/Vault" + +configs: + wg0: + content: | + [Interface] + Address = 10.9.9.3/32 + DNS = 1.1.1.1 + PrivateKey = ${PRIVATE_KEY} + + [Peer] + AllowedIPs = 0.0.0.0/0 + Endpoint = ${VPN_SERVER_IP}:51820 + PublicKey = ${PUBLIC_KEY} diff --git a/Docker/DMZ-Server/qbittorrent/docker-compose.yaml b/Docker/DMZ-Server/qbittorrent/docker-compose.yaml new file mode 100644 index 0000000..356a83f --- /dev/null +++ b/Docker/DMZ-Server/qbittorrent/docker-compose.yaml @@ -0,0 +1,44 @@ +networks: + ssankur: + external: "true" + +volumes: + TrueNAS-RW-Downloads: + external: "true" + TrueNAS-RO-Games-Setup: + external: "true" + TrueNAS-RO-Movies: + external: "true" + TrueNAS-RO-Shows: + external: "true" + TrueNAS-RO-Softwares-Operating-Systems: + external: "true" + TrueNAS-RO-Videos: + external: "true" + Vault: + external: "true" + +services: + qbittorrent: + container_name: "qbittorrent" + environment: + - "PGID=1000" + - "PUID=1000" + - "TZ=Asia/Dhaka" + image: "lscr.io/linuxserver/qbittorrent:latest" + networks: + - "ssankur" + ports: + - "10.1.4.2:6881:6881/tcp" + - "10.1.4.2:6881:6881/udp" + - "10.1.4.2:8080:8080/tcp" + restart: "on-failure" + volumes: + - "./mounts/config:/config" + - "TrueNAS-RW-Downloads:/mnt/TrueNAS/Downloads" + - "TrueNAS-RO-Games-Setup:/mnt/TrueNAS/Games/Setup:ro" + - "TrueNAS-RO-Movies:/mnt/TrueNAS/Movies:ro" + - "TrueNAS-RO-Shows:/mnt/TrueNAS/Shows:ro" + - "TrueNAS-RO-Softwares-Operating-Systems:/mnt/TrueNAS/Softwares/Operating Systems:ro" + - "TrueNAS-RO-Videos:/mnt/TrueNAS/Videos:ro" + - "Vault:/mnt/Vault" diff --git a/Docker/DMZ-Server/socket-proxy/docker-compose.yaml b/Docker/DMZ-Server/socket-proxy/docker-compose.yaml new file mode 100644 index 0000000..b26d507 --- /dev/null +++ b/Docker/DMZ-Server/socket-proxy/docker-compose.yaml @@ -0,0 +1,52 @@ +networks: + ssankur: + external: "true" + +services: + socket-proxy: + container_name: "socket-proxy" + environment: + - "ALLOW_ARCHIVE=1" + - "ALLOW_CHANGES=1" + - "ALLOW_EXPORT=1" + - "ALLOW_LOGS=1" + - "ALLOW_PAUSE=1" + - "ALLOW_RESTARTS=1" + - "ALLOW_STOP=1" + - "ALLOW_START=1" + - "ALLOW_TOP=1" + - "ALLOW_UNPAUSE=1" + - "AUTH=1" + - "BUILD=1" + - "COMMIT=1" + - "CONFIGS=1" + - "CONTAINERS=1" + - "DISTRIBUTION=1" + - "EVENTS=1" + - "EXEC=1" + - "IMAGES=1" + - "INFO=1" + - "NETWORKS=1" + - "NODES=1" + - "PING=1" + - "PLUGINS=1" + - "POST=1" + - "SECRETS=1" + - "SERVICES=1" + - "SESSION=1" + - "SWARM=1" + - "SYSTEM=1" + - "TASKS=1" + - "TZ=Asia/Dhaka" + - "VERSION=1" + - "VOLUMES=1" + image: "lscr.io/linuxserver/socket-proxy:latest" + networks: + - "ssankur" + ports: + - "10.1.4.2:2375:2375/tcp" + restart: "on-failure" + tmpfs: + - "/run" + volumes: + - "/var/run/docker.sock:/var/run/docker.sock" diff --git a/Docker/DMZ-Server/traefik-dmz/docker-compose.yaml b/Docker/DMZ-Server/traefik-dmz/docker-compose.yaml new file mode 100644 index 0000000..5e36a2c --- /dev/null +++ b/Docker/DMZ-Server/traefik-dmz/docker-compose.yaml @@ -0,0 +1,137 @@ +networks: + ssankur: + external: "true" + +services: + traefik-dmz: + configs: + - source: "config" + target: "/etc/traefik/config.yaml" + - source: "traefik" + target: "/etc/traefik/traefik.yaml" + container_name: "traefik-dmz" + environment: + - "CF_DNS_API_TOKEN=${CF_DNS_API_TOKEN}" + - "TZ=Asia/Dhaka" + image: "traefik:latest" + networks: + - "ssankur" + ports: + - "10.1.4.2:80:80/tcp" + - "10.1.4.2:443:443/tcp" + - "10.1.4.2:8081:8080/tcp" + restart: "on-failure" + volumes: + - "./mounts/letsencrypt:/etc/letsencrypt" + +configs: + config: + content: | + http: + routers: + files: + rule: "Host(`files.ssankur.com`)" + service: "files" + gitea: + rule: "Host(`gitea.ssankur.com`)" + service: "gitea" + gotify: + rule: "Host(`gotify.ssankur.com`)" + service: "gotify" + hunt: + rule: "Host(`hunt.ssankur.com`)" + service: "hunt" + jellyfin: + rule: "Host(`jellyfin.ssankur.com`)" + service: "jellyfin" + mirotalk: + rule: "Host(`mirotalk.ssankur.com`)" + service: "mirotalk" + openspeedtest: + rule: "Host(`openspeedtest.ssankur.com`)" + service: "openspeedtest" + speedtest: + rule: "Host(`speedtest.ssankur.com`)" + service: "speedtest" + + services: + files: + loadBalancer: + servers: + - url: "http://pingvin-share:3000" + gitea: + loadBalancer: + servers: + - url: "http://gitea:3000" + gotify: + loadBalancer: + servers: + - url: "http://gotify:80" + hunt: + loadBalancer: + servers: + - url: "http://nginx:80" + jellyfin: + loadBalancer: + servers: + - url: "http://jellyfin:8096" + mirotalk: + loadBalancer: + servers: + - url: "https://mirotalk:3010" + openspeedtest: + loadBalancer: + servers: + - url: "https://openspeedtest:3001" + speedtest: + loadBalancer: + servers: + - url: "https://librespeed:443" + + traefik: + content: | + api: + disableDashboardAd: "true" + insecure: "true" + + certificatesResolvers: + letsencrypt: + acme: + dnsChallenge: + propagation: + delayBeforeChecks: "300" + disableANSChecks: "true" + disableChecks: "true" + provider: "cloudflare" + email: "ankur7914@gmail.com" + storage: "/etc/letsencrypt/acme.json" + + entryPoints: + http: + address: ":80" + http: + redirections: + entryPoint: + to: "https" + https: + address: ":443" + asDefault: "true" + forwardedHeaders: + trustedIPs: + - "172.18.0.0/16" + http: + tls: + certResolver: "letsencrypt" + domains: + - main: "ssankur.com" + sans: + - "*.ssankur.com" + log: + level: "INFO" + + providers: + file: + filename: "/etc/traefik/config.yaml" + + serversTransport: + insecureSkipVerify: "true" diff --git a/Docker/LAN-Server/adguard-home/Dockerfile b/Docker/LAN-Server/adguard-home/Dockerfile new file mode 100644 index 0000000..f15240b --- /dev/null +++ b/Docker/LAN-Server/adguard-home/Dockerfile @@ -0,0 +1,14 @@ +FROM golang:alpine AS build +RUN apk add --no-cache alpine-sdk npm patch +RUN git clone -b release-v0.107.79 https://github.com/AdguardTeam/AdGuardHome.git /AdGuardHome +WORKDIR /AdGuardHome +RUN wget https://patch-diff.githubusercontent.com/raw/AdguardTeam/AdGuardHome/pull/8571.patch +RUN patch -p 1 -i 8571.patch +RUN sed -i 's:CHANNEL = development:CHANNEL = release:' Makefile +RUN make +FROM alpine:latest +RUN apk add --no-cache ca-certificates +COPY --from=build /AdGuardHome/AdGuardHome /opt/adguardhome/ +EXPOSE 53/tcp 53/udp 67/tcp 67/udp 68/tcp 68/udp 80/tcp 443/tcp 853/tcp 853/udp 3000/tcp +VOLUME ["/opt/adguardhome/conf", "/opt/adguardhome/work"] +ENTRYPOINT ["/opt/adguardhome/AdGuardHome", "-c", "/opt/adguardhome/conf/AdGuardHome.yaml", "-w", "/opt/adguardhome/work", "--web-addr", "0.0.0.0:3000"] diff --git a/Docker/LAN-Server/adguard-home/docker-compose.yaml b/Docker/LAN-Server/adguard-home/docker-compose.yaml new file mode 100644 index 0000000..ca46570 --- /dev/null +++ b/Docker/LAN-Server/adguard-home/docker-compose.yaml @@ -0,0 +1,19 @@ +networks: + ssankur: + external: "true" + +services: + adguard-home: + container_name: "adguard-home" + environment: + - "TZ=Asia/Dhaka" + image: "ssankur/adguard-home:latest" + networks: + - "ssankur" + ports: + - "10.1.1.253:53:53/tcp" + - "10.1.1.253:53:53/udp" + restart: "on-failure" + volumes: + - "./mounts/conf:/opt/adguardhome/conf" + - "./mounts/work:/opt/adguardhome/work" diff --git a/Docker/LAN-Server/adminer/docker-compose.yaml b/Docker/LAN-Server/adminer/docker-compose.yaml new file mode 100644 index 0000000..03dc766 --- /dev/null +++ b/Docker/LAN-Server/adminer/docker-compose.yaml @@ -0,0 +1,16 @@ +networks: + ssankur: + external: "true" + +services: + adminer: + container_name: "adminer" + environment: + - "ADMINER_DEFAULT_SERVER=postgres" + - "PGID=1000" + - "PUID=1000" + - "TZ=Asia/Dhaka" + image: "adminer:latest" + networks: + - "ssankur" + restart: "on-failure" diff --git a/Docker/LAN-Server/bazarr/docker-compose.yaml b/Docker/LAN-Server/bazarr/docker-compose.yaml new file mode 100644 index 0000000..9874add --- /dev/null +++ b/Docker/LAN-Server/bazarr/docker-compose.yaml @@ -0,0 +1,22 @@ +networks: + ssankur: + external: "true" + +volumes: + TrueNAS: + external: "true" + +services: + bazarr: + container_name: "bazarr" + environment: + - "PGID=1000" + - "PUID=1000" + - "TZ=Asia/Dhaka" + image: "lscr.io/linuxserver/bazarr:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/config:/config" + - "TrueNAS:/mnt/TrueNAS" diff --git a/Docker/LAN-Server/dockhand/docker-compose.yaml b/Docker/LAN-Server/dockhand/docker-compose.yaml new file mode 100644 index 0000000..efdac1d --- /dev/null +++ b/Docker/LAN-Server/dockhand/docker-compose.yaml @@ -0,0 +1,18 @@ +networks: + ssankur: + external: "true" + +services: + dockhand: + container_name: "dockhand" + environment: + - "PGID=1000" + - "PUID=1000" + - "TZ=Asia/Dhaka" + image: "fnsys/dockhand:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "/var/run/docker.sock:/var/run/docker.sock" + - "./mounts/data:/app/data" diff --git a/Docker/LAN-Server/dozzle/docker-compose.yaml b/Docker/LAN-Server/dozzle/docker-compose.yaml new file mode 100644 index 0000000..355ac39 --- /dev/null +++ b/Docker/LAN-Server/dozzle/docker-compose.yaml @@ -0,0 +1,18 @@ +networks: + ssankur: + external: "true" + +services: + dozzle: + container_name: "dozzle" + environment: + - "DOZZLE_HOSTNAME=LAN-Server" + - "DOZZLE_NO_ANALYTICS=true" + - "DOZZLE_REMOTE_HOST=tcp://10.1.4.2:2375|DMZ-Server" + - "TZ=Asia/Dhaka" + image: "amir20/dozzle:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "/var/run/docker.sock:/var/run/docker.sock" diff --git a/Docker/LAN-Server/ente/docker-compose.yaml b/Docker/LAN-Server/ente/docker-compose.yaml new file mode 100644 index 0000000..78dd523 --- /dev/null +++ b/Docker/LAN-Server/ente/docker-compose.yaml @@ -0,0 +1,44 @@ +networks: + ssankur: + external: "true" + +services: + ente-server: + container_name: "ente-server" + depends_on: + ente-postgres: + condition: "service_healthy" + environment: + - "ENTE_DB_HOST=ente-postgres" + - "ENTE_DB_NAME=ente" + - "ENTE_DB_PASSWORD=${DB_PASSWORD}" + - "ENTE_DB_USER=ente" + image: "ghcr.io/ente-io/server:latest" + networks: + - "ssankur" + restart: "on-failure" + + ente-web: + container_name: "ente-web" + depends_on: + ente-server: + condition: "service_started" + image: "ghcr.io/ente-io/web:latest" + networks: + - "ssankur" + restart: "on-failure" + + ente-postgres: + container_name: "ente-postgres" + environment: + - "POSTGRES_DB=ente" + - "POSTGRES_PASSWORD=${DB_PASSWORD}" + - "POSTGRES_USER=ente" + healthcheck: + test: "pg_isready -d ente -q -U ente" + image: "postgres:17" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/postgres:/var/lib/postgresql/data" diff --git a/Docker/LAN-Server/esphome/docker-compose.yaml b/Docker/LAN-Server/esphome/docker-compose.yaml new file mode 100644 index 0000000..d409334 --- /dev/null +++ b/Docker/LAN-Server/esphome/docker-compose.yaml @@ -0,0 +1,18 @@ +networks: + ssankur: + external: "true" + +services: + esphome: + container_name: "esphome" + environment: + - "ESPHOME_DASHBOARD_USE_PING=true" + - "PGID=1000" + - "PUID=1000" + - "TZ=Asia/Dhaka" + image: "ghcr.io/esphome/esphome:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/config:/config" diff --git a/Docker/LAN-Server/flaresolverr/docker-compose.yaml b/Docker/LAN-Server/flaresolverr/docker-compose.yaml new file mode 100644 index 0000000..22ef2c2 --- /dev/null +++ b/Docker/LAN-Server/flaresolverr/docker-compose.yaml @@ -0,0 +1,17 @@ +networks: + ssankur: + external: "true" + +services: + flaresolverr: + container_name: "flaresolverr" + environment: + - "PGID=1000" + - "PUID=1000" + - "TZ=Asia/Dhaka" + image: "flaresolverr/flaresolverr:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/config:/config" diff --git a/Docker/LAN-Server/gatus/docker-compose.yaml b/Docker/LAN-Server/gatus/docker-compose.yaml new file mode 100644 index 0000000..0492923 --- /dev/null +++ b/Docker/LAN-Server/gatus/docker-compose.yaml @@ -0,0 +1,375 @@ +networks: + ssankur: + external: "true" + +services: + gatus: + configs: + - source: "config" + target: "/config/config.yaml" + container_name: "gatus" + environment: + - "TZ=Asia/Dhaka" + extra_hosts: + - "files.ssankur.com=10.1.4.2" + - "gitea.ssankur.com=10.1.4.2" + - "gotify.ssankur.com=10.1.4.2" + - "hunt.ssankur.com=10.1.4.2" + - "jellyfin.ssankur.com=10.1.4.2" + - "mirotalk.ssankur.com=10.1.4.2" + - "openspeedtest.ssankur.com=10.1.4.2" + - "speedtest.ssankur.com=10.1.4.2" + image: "ghcr.io/twin/gatus:latest" + networks: + - "ssankur" + restart: "on-failure" + +configs: + config: + content: | + alerting: + gotify: + server-url: "https://gotify.ssankur.com" + token: "${GOTIFY_TOKEN}" + default-alert: + failure-threshold: 1 + success-threshold: 1 + send-on-resolved: true + + endpoints: + - name: "AdGuard Home" + group: "LAN-Server" + url: "http://adguard-home:3000" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Adminer" + group: "LAN-Server" + url: "http://adminer:8080" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Bazarr" + group: "LAN-Server" + url: "http://bazarr:6767" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Dockhand" + group: "LAN-Server" + url: "http://dockhand:3000" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Dozzle" + group: "LAN-Server" + url: "http://dozzle:8080" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Ente Postgres" + group: "LAN-Server" + url: "tcp://ente-postgres:5432" + conditions: + - "[CONNECTED] == true" + alerts: + - type: "gotify" + - name: "Ente Server" + group: "LAN-Server" + url: "tcp://ente-server:8080" + conditions: + - "[CONNECTED] == true" + alerts: + - type: "gotify" + - name: "Ente Web" + group: "LAN-Server" + url: "http://ente-web:3003" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "ESPHome" + group: "LAN-Server" + url: "http://esphome:6052" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "FlareSolverr" + group: "LAN-Server" + url: "http://flaresolverr:8191" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Gatus" + group: "LAN-Server" + url: "http://gatus:8080" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Gitea" + group: "DMZ-Server" + url: "https://gitea.ssankur.com" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Gotify" + group: "DMZ-Server" + url: "https://gotify.ssankur.com" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Grocy" + group: "LAN-Server" + url: "http://grocy" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Home Assistant" + group: "LAN-Server" + url: "http://home-assistant" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Homepage" + group: "LAN-Server" + url: "http://homepage:3000" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Immich" + group: "LAN-Server" + url: "http://immich:2283" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Immich Machine Learning" + group: "LAN-Server" + url: "http://immich-machine-learning:3003" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Immich Postgres" + group: "LAN-Server" + url: "tcp://immich-postgres:5432" + conditions: + - "[CONNECTED] == true" + alerts: + - type: "gotify" + - name: "Immich Valkey" + group: "LAN-Server" + url: "tcp://immich-valkey:6379" + conditions: + - "[CONNECTED] == true" + alerts: + - type: "gotify" + - name: "Jellyfin" + group: "DMZ-Server" + url: "https://jellyfin.ssankur.com" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "LibreSpeed" + group: "DMZ-Server" + url: "https://speedtest.ssankur.com" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + # - name: "Librespot" + # group: "LAN-Server" + # url: "icmp://librespot" + # conditions: + # - "[CONNECTED] == true" + # alerts: + # - type: "gotify" + - name: "LedFx" + group: "LAN-Server" + url: "http://ledfx:8888" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Mailrise" + group: "DMZ-Server" + url: "tcp://10.1.4.2:25" + conditions: + - "[CONNECTED] == true" + alerts: + - type: "gotify" + - name: "MiroTalk" + group: "DMZ-Server" + url: "https://mirotalk.ssankur.com" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Mosquitto" + group: "LAN-Server" + url: "tcp://mosquitto:1883" + conditions: + - "[CONNECTED] == true" + alerts: + - type: "gotify" + - name: "Music Assistant" + group: "LAN-Server" + url: "http://music-assistant:8095" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Nginx" + group: "DMZ-Server" + url: "https://hunt.ssankur.com" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "OpenSpeedTest" + group: "DMZ-Server" + url: "https://openspeedtest.ssankur.com" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Pingvin Share" + group: "DMZ-Server" + url: "https://files.ssankur.com" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Piper" + group: "LAN-Server" + url: "tcp://piper:10200" + conditions: + - "[CONNECTED] == true" + alerts: + - type: "gotify" + - name: "Prowlarr" + group: "LAN-Server" + url: "http://prowlarr:9696" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "qBittorrent" + group: "DMZ-Server" + url: "http://10.1.4.2:8080" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "qBittorrent (VPN)" + group: "DMZ-Server" + url: "http://10.1.4.2:8082" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Radarr" + group: "LAN-Server" + url: "http://radarr:7878" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Radicale" + group: "LAN-Server" + url: "http://radicale:5232" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + # - name: "Scream" + # group: "LAN-Server" + # url: "icmp://scream" + # conditions: + # - "[CONNECTED] == true" + # alerts: + # - type: "gotify" + - name: "Scrutiny" + group: "TrueNAS" + url: "http://10.1.1.201:8080" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + # - name: "Shairport Sync" + # group: "LAN-Server" + # url: "tcp://shairport-sync:5000" + # conditions: + # - "[CONNECTED] == true" + # alerts: + # - type: "gotify" + - name: "Socket Proxy" + group: "DMZ-Server" + url: "http://10.1.4.2:2375/_ping" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Sonarr" + group: "LAN-Server" + url: "http://sonarr:8989" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Traefik" + group: "LAN-Server" + url: "http://traefik:8080" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Traefik (DMZ)" + group: "DMZ-Server" + url: "http://10.1.4.2:8081" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + - name: "Vaultwarden" + group: "LAN-Server" + url: "http://vaultwarden" + conditions: + - "[STATUS] == 200" + alerts: + - type: "gotify" + # - name: "Wyoming Satellite" + # group: "LAN-Server" + # url: "tcp://wyoming-satellite:10700" + # conditions: + # - "[CONNECTED] == true" + # alerts: + # - type: "gotify" + # - name: "Wyoming Snowboy" + # group: "LAN-Server" + # url: "tcp://wyoming-snowboy:10400" + # conditions: + # - "[CONNECTED] == true" + # alerts: + # - type: "gotify" + - name: "Wyoming Vosk" + group: "LAN-Server" + url: "tcp://wyoming-vosk:10300" + conditions: + - "[CONNECTED] == true" + alerts: + - type: "gotify" diff --git a/Docker/LAN-Server/grocy/docker-compose.yaml b/Docker/LAN-Server/grocy/docker-compose.yaml new file mode 100644 index 0000000..128dea9 --- /dev/null +++ b/Docker/LAN-Server/grocy/docker-compose.yaml @@ -0,0 +1,18 @@ +networks: + ssankur: + external: "true" + +services: + grocy: + container_name: "grocy" + environment: + - "GROCY_CURRENCY=BDT" + - "PGID=1000" + - "PUID=1000" + - "TZ=Asia/Dhaka" + image: "lscr.io/linuxserver/grocy:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/config:/config" diff --git a/Docker/LAN-Server/home-assistant/docker-compose.yaml b/Docker/LAN-Server/home-assistant/docker-compose.yaml new file mode 100644 index 0000000..3193dfc --- /dev/null +++ b/Docker/LAN-Server/home-assistant/docker-compose.yaml @@ -0,0 +1,18 @@ +networks: + ssankur: + external: "true" + +services: + home-assistant: + container_name: "home-assistant" + environment: + - "DOCKER_MODS=ghcr.io/linuxserver/mods:homeassistant-hacs" + - "PGID=1000" + - "PUID=1000" + - "TZ=Asia/Dhaka" + image: "lscr.io/linuxserver/homeassistant:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/config:/config" diff --git a/Docker/LAN-Server/homepage/docker-compose.yaml b/Docker/LAN-Server/homepage/docker-compose.yaml new file mode 100644 index 0000000..bfa05d1 --- /dev/null +++ b/Docker/LAN-Server/homepage/docker-compose.yaml @@ -0,0 +1,353 @@ +networks: + ssankur: + external: "true" + +services: + homepage: + configs: + - source: "bookmarks" + target: "/app/config/bookmarks.yaml" + - source: "docker" + target: "/app/config/docker.yaml" + - source: "services" + target: "/app/config/services.yaml" + - source: "settings" + target: "/app/config/settings.yaml" + - source: "widgets" + target: "/app/config/widgets.yaml" + container_name: "homepage" + environment: + - "HOMEPAGE_ALLOWED_HOSTS=*" + - "TZ=Asia/Dhaka" + image: "ghcr.io/gethomepage/homepage:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/images:/app/public/images" + - "/var/run/docker.sock:/var/run/docker.sock:ro" + +configs: + bookmarks: + content: "\n" + + docker: + content: | + LAN-Server: + socket: "/var/run/docker.sock" + DMZ-Server: + host: "10.1.4.2" + port: "2375" + + services: + content: | + - Home Automation: + - ESPHome: + icon: "/images/esphome.png" + href: "https://esphome.ssankur.com" + server: "LAN-Server" + container: "esphome" + widget: + type: "esphome" + url: "http://esphome:6052" + fields: ["online", "offline", "unknown", "total"] + - Home Assistant: + icon: "/images/home-assistant.png" + href: "https://home-assistant.ssankur.com" + server: "LAN-Server" + container: "home-assistant" + widget: + type: "homeassistant" + url: "http://home-assistant" + key: "${HOME_ASSISTANT_KEY}" + custom: + - template: "{{ states('sensor.lywsd03mmc_temperature', with_unit=True) }}" + label: Indoor Temperature + - template: "{{ states('sensor.lywsd03mmc_humidity', with_unit=True) }}" + label: Indoor Humidity + - Music Assistant: + icon: "/images/music-assistant.png" + href: "https://music-assistant.ssankur.com" + server: "LAN-Server" + container: "music-assistant" + - LedFx: + icon: "/images/ledfx.png" + href: "https://ledfx.ssankur.com" + server: "LAN-Server" + container: "ledfx" + + - Media: + - Bazarr: + icon: "/images/bazarr.png" + href: "https://bazarr.ssankur.com" + server: "LAN-Server" + container: "bazarr" + widget: + type: "bazarr" + url: "http://bazarr:6767" + key: "${BAZARR_KEY}" + - Immich: + icon: "/images/immich.png" + href: "https://immich.ssankur.com" + server: "LAN-Server" + container: "immich" + widget: + type: "immich" + url: "http://immich:2283" + key: "${IMMICH_KEY}" + version: "2" + fields: ["photos", "videos"] + - Jellyfin: + icon: "/images/jellyfin.png" + href: "https://jellyfin.ssankur.com" + server: "DMZ-Server" + container: "jellyfin" + widget: + type: "jellyfin" + url: "https://jellyfin.ssankur.com" + key: "${JELLYFIN_KEY}" + version: "2" + fields: ["movies", "series", "episodes"] + enableBlocks: "true" + enableNowPlaying: "false" + - Prowlarr: + icon: "/images/prowlarr.png" + href: "https://prowlarr.ssankur.com" + server: "LAN-Server" + container: "prowlarr" + widget: + type: "prowlarr" + url: "http://prowlarr:9696" + key: "${PROWLARR_KEY}" + - qBittorrent: + icon: "/images/qbittorrent.png" + href: "https://qbittorrent.ssankur.com" + server: "DMZ-Server" + container: "qbittorrent" + widget: + type: "qbittorrent" + url: "http://10.1.4.2:8080" + username: "SSAnkur" + password: "${QBITTORRENT_PASSWORD}" + - qBittorrent (VPN): + icon: "/images/qbittorrent.png" + href: "https://qbittorrent-vpn.ssankur.com" + server: "DMZ-Server" + container: "qbittorrent-vpn" + widget: + type: "qbittorrent" + url: "http://10.1.4.2:8082" + username: "SSAnkur" + password: "${QBITTORRENT_VPN_PASSWORD}" + - Radarr: + icon: "/images/radarr.png" + href: "https://radarr.ssankur.com" + server: "LAN-Server" + container: "radarr" + widget: + type: "radarr" + url: "http://radarr:7878" + key: "${RADARR_KEY}" + - Sonarr: + icon: "/images/sonarr.png" + href: "https://sonarr.ssankur.com" + server: "LAN-Server" + container: "sonarr" + widget: + type: "sonarr" + url: "http://sonarr:8989" + key: "${SONARR_KEY}" + + - Monitoring & Tracking: + - Dockhand: + icon: "/images/dockhand.png" + href: "https://dockhand.ssankur.com" + server: "LAN-Server" + container: "dockhand" + widget: + type: "dockhand" + url: "http://dockhand:3000" + username: "SSAnkur" + password: "${DOCKHAND_PASSWORD}" + fields: ["running", "pending_updates", "total"] + - Gatus: + icon: "/images/gatus.png" + href: "https://gatus.ssankur.com" + server: "LAN-Server" + container: "gatus" + widget: + type: "gatus" + url: "http://gatus:8080" + - Gotify: + icon: "/images/gotify.png" + href: "https://gotify.ssankur.com" + server: "DMZ-Server" + container: "gotify" + widget: + type: "gotify" + url: "https://gotify.ssankur.com" + key: "${GOTIFY_KEY}" + - Scrutiny: + icon: "/images/scrutiny.png" + href: "https://scrutiny.ssankur.com" + widget: + type: "scrutiny" + url: "https://scrutiny.ssankur.com" + - Dozzle: + icon: "/images/dozzle.png" + href: "https://dozzle.ssankur.com" + server: "LAN-Server" + container: "dozzle" + - Grocy: + icon: "/images/grocy.png" + href: "https://grocy.ssankur.com" + server: "LAN-Server" + container: "grocy" + + - Networking: + - AdGuard Home: + icon: "/images/adguard-home.png" + href: "https://adguard.ssankur.com" + server: "LAN-Server" + container: "adguard-home" + widget: + type: "adguard" + url: "http://adguard-home:3000" + username: "SSAnkur" + password: "${ADGUARD_HOME_PASSWORD}" + - Traefik: + icon: "/images/traefik.png" + href: "https://traefik.ssankur.com" + server: "LAN-Server" + container: "traefik" + widget: + type: "traefik" + url: "http://traefik:8080" + - Traefik (DMZ): + icon: "/images/traefik.png" + href: "https://traefik-dmz.ssankur.com" + server: "DMZ-Server" + container: "traefik-dmz" + widget: + type: "traefik" + url: "http://10.1.4.2:8081" + - OpenWrt: + icon: "/images/openwrt.png" + href: "https://openwrt.ssankur.com" + ping: "10.1.1.254" + - pfSense: + icon: "/images/pfsense.png" + href: "https://pfsense.ssankur.com" + ping: "10.1.1.1" + + - Servers & NAS: + - Proxmox: + icon: "/images/proxmox.png" + href: "https://proxmox.ssankur.com" + ping: "10.1.1.200" + widget: + type: "proxmox" + url: "https://10.1.1.200:8006" + username: "root@pam!homepage" + password: "${PROXMOX_PASSWORD}" + - TrueNAS: + icon: "/images/truenas-scale.png" + href: "https://truenas.ssankur.com" + ping: "10.1.1.201" + widget: + type: "truenas" + url: "https://10.1.1.201" + username: "admin" + password: "${TRUENAS_PASSWORD}" + enablePools: "true" + + - Various: + - Adminer: + icon: "/images/adminer.png" + href: "https://adminer.ssankur.com" + server: "LAN-Server" + container: "adminer" + - Ente Auth: + icon: "/images/ente-auth.png" + href: "https://ente-auth.ssankur.com" + server: "LAN-Server" + container: "ente-web" + - Gitea: + icon: "/images/gitea.png" + href: "https://gitea.ssankur.com" + server: "DMZ-Server" + container: "gitea" + - LibreSpeed: + icon: "/images/librespeed.png" + href: "https://speedtest.ssankur.com" + server: "DMZ-Server" + container: "librespeed" + - MiroTalk: + icon: "/images/mirotalk.png" + href: "https://mirotalk.ssankur.com" + server: "DMZ-Server" + container: "mirotalk" + - OpenSpeedTest: + icon: "/images/openspeedtest.png" + href: "https://openspeedtest.ssankur.com" + server: "DMZ-Server" + container: "openspeedtest" + - Radicale: + icon: "/images/radicale.png" + href: "https://radicale.ssankur.com" + server: "LAN-Server" + container: "radicale" + - SSAnkur's File Server: + icon: "/images/server.png" + href: "https://files.ssankur.com" + server: "DMZ-Server" + container: "pingvin-share" + - Vaultwarden: + icon: "/images/vaultwarden.png" + href: "https://vaultwarden.ssankur.com" + server: "LAN-Server" + container: "vaultwarden" + + settings: + content: | + background: + image: "/images/background.jpg" + blur: "sm" + brightness: "50" + opacity: "50" + color: "slate" + disableCollapse: "true" + hideVersion: "true" + layout: + Home Automation: + style: "row" + columns: "4" + Media: + style: "row" + columns: "4" + Monitoring & Tracking: + style: "row" + columns: "4" + Networking: + style: "row" + columns: "4" + Servers & NAS: + style: "row" + columns: "4" + Various: + style: "row" + columns: "4" + target: "_self" + theme: "dark" + title: "Homelab Dashboard" + + widgets: + content: | + - search: + provider: "google" + target: "_self" + - datetime: + text_size: "md" + format: + dateStyle: "long" + timeStyle: "short" diff --git a/Docker/LAN-Server/immich/docker-compose.yaml b/Docker/LAN-Server/immich/docker-compose.yaml new file mode 100644 index 0000000..fd8ee63 --- /dev/null +++ b/Docker/LAN-Server/immich/docker-compose.yaml @@ -0,0 +1,65 @@ +networks: + ssankur: + external: "true" + +volumes: + TrueNAS: + external: "true" + +services: + immich: + container_name: "immich" + depends_on: + immich-postgres: + condition: "service_healthy" + immich-valkey: + condition: "service_healthy" + environment: + - "DB_DATABASE_NAME=immich" + - "DB_HOSTNAME=immich-postgres" + - "DB_PASSWORD=${DB_PASSWORD}" + - "DB_USERNAME=immich" + - "REDIS_HOSTNAME=immich-valkey" + - "TZ=Asia/Dhaka" + image: "ghcr.io/immich-app/immich-server:release" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/data:/data" + - "TrueNAS:/mnt/TrueNAS" + + immich-machine-learning: + container_name: "immich-machine-learning" + image: "ghcr.io/immich-app/immich-machine-learning:release" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/cache:/cache" + + immich-postgres: + container_name: "immich-postgres" + image: "ghcr.io/immich-app/postgres:17-vectorchord0.4.3" + environment: + - "POSTGRES_DB=immich" + - "POSTGRES_INITDB_ARGS=--data-checksums" + - "POSTGRES_PASSWORD=${DB_PASSWORD}" + - "POSTGRES_USER=immich" + networks: + - "ssankur" + restart: "on-failure" + shm_size: "128mb" + volumes: + - "./mounts/postgres:/var/lib/postgresql/data" + + immich-valkey: + container_name: "immich-valkey" + healthcheck: + test: "redis-cli ping || exit 1" + image: "valkey/valkey:8" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/valkey:/data" diff --git a/Docker/LAN-Server/ledfx/docker-compose.yaml b/Docker/LAN-Server/ledfx/docker-compose.yaml new file mode 100644 index 0000000..568a324 --- /dev/null +++ b/Docker/LAN-Server/ledfx/docker-compose.yaml @@ -0,0 +1,18 @@ +networks: + ssankur: + external: "true" + +services: + ledfx: + command: + - "--clear-effects" + - "--offline" + container_name: "ledfx" + environment: + - "TZ=Asia/Dhaka" + image: "ghcr.io/ledfx/ledfx:2.1.9" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/config:/home/ledfx/ledfx-config" diff --git a/Docker/LAN-Server/mosquitto/docker-compose.yaml b/Docker/LAN-Server/mosquitto/docker-compose.yaml new file mode 100644 index 0000000..3a7911c --- /dev/null +++ b/Docker/LAN-Server/mosquitto/docker-compose.yaml @@ -0,0 +1,39 @@ +networks: + ssankur: + external: "true" + +services: + mosquitto: + configs: + - source: "mosquitto" + target: "/mosquitto/config/mosquitto.conf" + uid: "1883" + gid: "1883" + mode: 0400 + - source: "passwd" + target: "/mosquitto/config/passwd" + uid: "1883" + gid: "1883" + mode: 0400 + container_name: "mosquitto" + environment: + - "TZ=Asia/Dhaka" + image: "eclipse-mosquitto:latest" + networks: + - "ssankur" + ports: + - "10.1.1.253:1883:1883/tcp" + restart: "on-failure" + volumes: + - "./mounts/data:/mosquitto/data" + - "./mounts/log:/mosquitto/log" + +configs: + mosquitto: + content: | + listener 1883 + allow_anonymous false + password_file /mosquitto/config/passwd + passwd: + content: | + ${PASSWD} diff --git a/Docker/LAN-Server/music-assistant/docker-compose.yaml b/Docker/LAN-Server/music-assistant/docker-compose.yaml new file mode 100644 index 0000000..45b72b0 --- /dev/null +++ b/Docker/LAN-Server/music-assistant/docker-compose.yaml @@ -0,0 +1,18 @@ +networks: + ssankur: + external: "true" + +services: + music-assistant: + container_name: "music-assistant" + environment: + - "TZ=Asia/Dhaka" + image: "ghcr.io/music-assistant/server:latest" + networks: + - "ssankur" + ports: + - "10.1.1.253:7406:7406/tcp" + - "10.1.1.253:6001-6010:6001-6010/udp" + restart: "on-failure" + volumes: + - "./mounts/data:/data" diff --git a/Docker/LAN-Server/piper/docker-compose.yaml b/Docker/LAN-Server/piper/docker-compose.yaml new file mode 100644 index 0000000..a7886fe --- /dev/null +++ b/Docker/LAN-Server/piper/docker-compose.yaml @@ -0,0 +1,18 @@ +networks: + ssankur: + external: "true" + +services: + piper: + container_name: "piper" + environment: + - "PIPER_VOICE=en_US-hfc_male-medium" + - "PGID=1000" + - "PUID=1000" + - "TZ=Asia/Dhaka" + image: "lscr.io/linuxserver/piper:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/config:/config" diff --git a/Docker/LAN-Server/prowlarr/docker-compose.yaml b/Docker/LAN-Server/prowlarr/docker-compose.yaml new file mode 100644 index 0000000..b55b614 --- /dev/null +++ b/Docker/LAN-Server/prowlarr/docker-compose.yaml @@ -0,0 +1,17 @@ +networks: + ssankur: + external: "true" + +services: + prowlarr: + container_name: "prowlarr" + environment: + - "PGID=1000" + - "PUID=1000" + - "TZ=Asia/Dhaka" + image: "lscr.io/linuxserver/prowlarr:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/config:/config" diff --git a/Docker/LAN-Server/radarr/docker-compose.yaml b/Docker/LAN-Server/radarr/docker-compose.yaml new file mode 100644 index 0000000..ce14d95 --- /dev/null +++ b/Docker/LAN-Server/radarr/docker-compose.yaml @@ -0,0 +1,22 @@ +networks: + ssankur: + external: "true" + +volumes: + TrueNAS: + external: "true" + +services: + radarr: + container_name: "radarr" + environment: + - "PGID=1000" + - "PUID=1000" + - "TZ=Asia/Dhaka" + image: "lscr.io/linuxserver/radarr:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/config:/config" + - "TrueNAS:/mnt/TrueNAS" diff --git a/Docker/LAN-Server/radicale/Dockerfile b/Docker/LAN-Server/radicale/Dockerfile new file mode 100644 index 0000000..97d3542 --- /dev/null +++ b/Docker/LAN-Server/radicale/Dockerfile @@ -0,0 +1,5 @@ +FROM python:alpine +RUN pip install --no-cache-dir Radicale[bcrypt] +EXPOSE 5232/tcp +VOLUME /var/lib/radicale +ENTRYPOINT ["radicale", "-H", "0.0.0.0:5232"] diff --git a/Docker/LAN-Server/radicale/docker-compose.yaml b/Docker/LAN-Server/radicale/docker-compose.yaml new file mode 100644 index 0000000..86e2911 --- /dev/null +++ b/Docker/LAN-Server/radicale/docker-compose.yaml @@ -0,0 +1,17 @@ +networks: + ssankur: + external: "true" + +services: + radicale: + container_name: "radicale" + environment: + - "RADICALE_CONFIG=/config/radicale.conf" + - "TZ=Asia/Dhaka" + image: "ssankur/radicale:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/config:/config" + - "./mounts/radicale:/var/lib/radicale" diff --git a/Docker/LAN-Server/sonarr/docker-compose.yaml b/Docker/LAN-Server/sonarr/docker-compose.yaml new file mode 100644 index 0000000..e1a6332 --- /dev/null +++ b/Docker/LAN-Server/sonarr/docker-compose.yaml @@ -0,0 +1,22 @@ +networks: + ssankur: + external: "true" + +volumes: + TrueNAS: + external: "true" + +services: + sonarr: + container_name: "sonarr" + environment: + - "PGID=1000" + - "PUID=1000" + - "TZ=Asia/Dhaka" + image: "lscr.io/linuxserver/sonarr:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/config:/config" + - "TrueNAS:/mnt/TrueNAS" diff --git a/Docker/LAN-Server/traefik/docker-compose.yaml b/Docker/LAN-Server/traefik/docker-compose.yaml new file mode 100644 index 0000000..5656710 --- /dev/null +++ b/Docker/LAN-Server/traefik/docker-compose.yaml @@ -0,0 +1,287 @@ +networks: + ssankur: + external: "true" + +services: + traefik: + configs: + - source: "config" + target: "/etc/traefik/config.yaml" + - source: "traefik" + target: "/etc/traefik/traefik.yaml" + container_name: "traefik" + environment: + - "CF_DNS_API_TOKEN=${CF_DNS_API_TOKEN}" + - "TZ=Asia/Dhaka" + image: "traefik:latest" + networks: + - "ssankur" + ports: + - "10.1.1.253:80:80/tcp" + - "10.1.1.253:443:443/tcp" + restart: "on-failure" + volumes: + - "./mounts/letsencrypt:/etc/letsencrypt" + +configs: + config: + content: | + http: + routers: + adguard: + rule: "Host(`adguard.ssankur.com`)" + service: "adguard" + adminer: + rule: "Host(`adminer.ssankur.com`)" + service: "adminer" + bazarr: + rule: "Host(`bazarr.ssankur.com`)" + service: "bazarr" + dockhand: + rule: "Host(`dockhand.ssankur.com`)" + service: "dockhand" + dozzle: + rule: "Host(`dozzle.ssankur.com`)" + service: "dozzle" + ente-auth: + rule: "Host(`ente-auth.ssankur.com`)" + service: "ente-auth" + ente-server: + rule: "Host(`ente-server.ssankur.com`)" + service: "ente-server" + esphome: + rule: "Host(`esphome.ssankur.com`)" + service: "esphome" + gatus: + rule: "Host(`gatus.ssankur.com`)" + service: "gatus" + gitea: + rule: "Host(`gitea.ssankur.com`)" + service: "gitea" + grocy: + rule: "Host(`grocy.ssankur.com`)" + service: "grocy" + home-assistant: + rule: "Host(`home-assistant.ssankur.com`)" + service: "home-assistant" + homepage: + rule: "Host(`homepage.ssankur.com`)" + service: "homepage" + immich: + rule: "Host(`immich.ssankur.com`)" + service: "immich" + ledfx: + rule: "Host(`ledfx.ssankur.com`)" + service: "ledfx" + music-assistant: + rule: "Host(`music-assistant.ssankur.com`)" + service: "music-assistant" + openwrt: + rule: "Host(`openwrt.ssankur.com`)" + service: "openwrt" + pfsense: + rule: "Host(`pfsense.ssankur.com`)" + service: "pfsense" + prowlarr: + rule: "Host(`prowlarr.ssankur.com`)" + service: "prowlarr" + proxmox: + rule: "Host(`proxmox.ssankur.com`)" + service: "proxmox" + qbittorrent: + rule: "Host(`qbittorrent.ssankur.com`)" + service: "qbittorrent" + qbittorrent-vpn: + rule: "Host(`qbittorrent-vpn.ssankur.com`)" + service: "qbittorrent-vpn" + radarr: + rule: "Host(`radarr.ssankur.com`)" + service: "radarr" + radicale: + rule: "Host(`radicale.ssankur.com`)" + service: "radicale" + scrutiny: + rule: "Host(`scrutiny.ssankur.com`)" + service: "scrutiny" + sonarr: + rule: "Host(`sonarr.ssankur.com`)" + service: "sonarr" + traefik: + rule: "Host(`traefik.ssankur.com`)" + service: "traefik" + traefik-dmz: + rule: "Host(`traefik-dmz.ssankur.com`)" + service: "traefik-dmz" + truenas: + rule: "Host(`truenas.ssankur.com`)" + service: "truenas" + vaultwarden: + rule: "Host(`vaultwarden.ssankur.com`)" + service: "vaultwarden" + + services: + adguard: + loadBalancer: + servers: + - url: "http://adguard-home:3000" + adminer: + loadBalancer: + servers: + - url: "http://adminer:8080" + bazarr: + loadBalancer: + servers: + - url: "http://bazarr:6767" + dockhand: + loadBalancer: + servers: + - url: "http://dockhand:3000" + dozzle: + loadBalancer: + servers: + - url: "http://dozzle:8080" + ente-auth: + loadBalancer: + servers: + - url: "http://ente-web:3003" + ente-server: + loadBalancer: + servers: + - url: "http://ente-server:8080" + esphome: + loadBalancer: + servers: + - url: "http://esphome:6052" + gatus: + loadBalancer: + servers: + - url: "http://gatus:8080" + gitea: + loadBalancer: + servers: + - url: "http://gitea:3000" + grocy: + loadBalancer: + servers: + - url: "http://grocy" + home-assistant: + loadBalancer: + servers: + - url: "http://home-assistant" + homepage: + loadBalancer: + servers: + - url: "http://homepage:3000" + immich: + loadBalancer: + servers: + - url: "http://immich:2283" + ledfx: + loadBalancer: + servers: + - url: "http://ledfx:8888" + music-assistant: + loadBalancer: + servers: + - url: "http://music-assistant:8095" + openwrt: + loadBalancer: + servers: + - url: "https://10.1.1.254" + pfsense: + loadBalancer: + servers: + - url: "https://10.1.1.1" + prowlarr: + loadBalancer: + servers: + - url: "http://prowlarr:9696" + proxmox: + loadBalancer: + servers: + - url: "https://10.1.1.200:8006" + qbittorrent: + loadBalancer: + servers: + - url: "http://10.1.4.2:8080" + qbittorrent-vpn: + loadBalancer: + servers: + - url: "http://10.1.4.2:8082" + radarr: + loadBalancer: + servers: + - url: "http://radarr:7878" + radicale: + loadBalancer: + servers: + - url: "http://radicale:5232" + scrutiny: + loadBalancer: + servers: + - url: "http://10.1.1.201:8080" + sonarr: + loadBalancer: + servers: + - url: "http://sonarr:8989" + traefik: + loadBalancer: + servers: + - url: "http://traefik:8080" + traefik-dmz: + loadBalancer: + servers: + - url: "http://10.1.4.2:8081" + truenas: + loadBalancer: + servers: + - url: "https://10.1.1.201" + vaultwarden: + loadBalancer: + servers: + - url: "http://vaultwarden" + + traefik: + content: | + api: + disableDashboardAd: "true" + insecure: "true" + + certificatesResolvers: + letsencrypt: + acme: + dnsChallenge: + propagation: + delayBeforeChecks: "300" + disableANSChecks: "true" + disableChecks: "true" + provider: "cloudflare" + email: "ankur7914@gmail.com" + storage: "/etc/letsencrypt/acme.json" + + entryPoints: + http: + address: ":80" + http: + redirections: + entryPoint: + to: "https" + https: + address: ":443" + asDefault: "true" + http: + tls: + certResolver: "letsencrypt" + domains: + - main: "ssankur.com" + sans: + - "*.ssankur.com" + log: + level: "INFO" + + providers: + file: + filename: "/etc/traefik/config.yaml" + + serversTransport: + insecureSkipVerify: "true" diff --git a/Docker/LAN-Server/vaultwarden/docker-compose.yaml b/Docker/LAN-Server/vaultwarden/docker-compose.yaml new file mode 100644 index 0000000..65832b0 --- /dev/null +++ b/Docker/LAN-Server/vaultwarden/docker-compose.yaml @@ -0,0 +1,15 @@ +networks: + ssankur: + external: "true" + +services: + vaultwarden: + container_name: "vaultwarden" + environment: + - "DOMAIN=https://vaultwarden.ssankur.com" + image: "vaultwarden/server:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/data:/data" diff --git a/Docker/LAN-Server/wyoming-vosk/docker-compose.yaml b/Docker/LAN-Server/wyoming-vosk/docker-compose.yaml new file mode 100644 index 0000000..e90023b --- /dev/null +++ b/Docker/LAN-Server/wyoming-vosk/docker-compose.yaml @@ -0,0 +1,26 @@ +networks: + ssankur: + external: "true" + +services: + wyoming-vosk: + command: + - "--data-dir" + - "/data" + - "--sentences-dir" + - "/sentences" + - "--correct-sentences" + - "--limit-sentences" + - "--debug" + container_name: "wyoming-vosk" + environment: + - "PGID=1000" + - "PUID=1000" + - "TZ=Asia/Dhaka" + image: "rhasspy/wyoming-vosk:latest" + networks: + - "ssankur" + restart: "on-failure" + volumes: + - "./mounts/data:/data" + - "./mounts/sentences:/sentences"