commit e2696a4af580e42c50e604b1722240a45384ee96 Author: rob Date: Sun Jan 10 10:31:20 2021 -0500 initial commit diff --git a/media/docker-compose.yaml b/media/docker-compose.yaml new file mode 100644 index 0000000..e346ee5 --- /dev/null +++ b/media/docker-compose.yaml @@ -0,0 +1,232 @@ +version: "3.7" + +services: + nzbget: + image: jshridha/docker-nzbgetvpn + container_name: nzbget + restart: unless-stopped + networks: + - connector + dns: + - 192.168.1.1 + cap_add: + - NET_ADMIN + volumes: + - downloads:/data + - nzbget_config:/config + - /etc/localtime:/etc/localtime:ro + environment: + PUID: 0 + PGID: 0 + LAN_NETWORK: 192.168.0.0/16 + NAME_SERVERS: 192.168.1.11,1.1.1.1 + VPN_ENABLED: "yes" + VPN_PROV: custom + labels: + - "traefik.http.routers.nzbget.rule=Host(`nzbget.olympus.sherman.one`)" + - "traefik.http.services.nzbget.loadbalancer.server.port=6789" + + deluge: + image: binhex/arch-delugevpn + container_name: deluge + restart: unless-stopped + networks: + - connector + cap_add: + - NET_ADMIN + volumes: + - downloads:/data + - nzbget_config:/config + - /etc/localtime:/etc/localtime:ro + dns: + - 192.168.1.1 + environment: + VPN_ENABLED: "yes" + VPN_PROV: custom + PUID: 0 + PGID: 0 + LAN_NETWORK: 192.168.0.0/16 + NAME_SERVERS: 192.168.1.11,1.1.1.1 + labels: + - "traefik.http.routers.deluge.rule=Host(`deluge.olympus.sherman.one`)" + - "traefik.http.services.deluge.loadbalancer.server.port=8112" + + jackett: + image: linuxserver/jackett + restart: unless-stopped + container_name: jackett + networks: + - connector + environment: + PUID: 1000 + PGID: 1000 + TZ: America/New_York + volumes: + - jackett_config:/config + - downloads:/downloads + dns: + - 192.168.1.1 + labels: + - "traefik.http.routers.jackett.rule=Host(`jackett.olympus.sherman.one`)" + - "traefik.http.services.jackett.loadbalancer.server.port=9117" + + sonarr: + image: linuxserver/sonarr + restart: unless-stopped + container_name: sonarr + networks: + - connector + environment: + PUID: 1000 + PGID: 1000 + TZ: America/New_York + volumes: + - sonarr_config:/config + - tv:/tv + - downloads:/downloads + dns: + - 192.168.1.1 + labels: + - "traefik.http.routers.sonarr.rule=Host(`sonarr.olympus.sherman.one`)" + - "traefik.http.services.sonarr.loadbalancer.server.port=8989" + + radarr: + image: linuxserver/radarr + restart: unless-stopped + container_name: radarr + networks: + - connector + environment: + PUID: 1000 + PGID: 1000 + TZ: America/New_York + volumes: + - radarr_config:/config + - movies:/movies + - downloads:/downloads + dns: + - 192.168.1.1 + labels: + - "traefik.http.routers.radarr.rule=Host(`radarr.olympus.sherman.one`)" + - "traefik.http.services.radarr.loadbalancer.server.port=7878" + + + lidarr: + image: linuxserver/lidarr + restart: unless-stopped + container_name: lidarr + networks: + - connector + environment: + PUID: 1000 + PGID: 1000 + TZ: America/New_York + volumes: + - lidarr_config:/config + - music:/music + - downloads:/downloads + dns: + - 192.168.1.1 + labels: + - "traefik.http.routers.lidarr.rule=Host(`lidarr.olympus.sherman.one`)" + - "traefik.http.services.lidarr.loadbalancer.server.port=8686" + + jellyfin: + image: linuxserver/jellyfin + container_name: jellyfin + restart: unless-stopped + network_mode: host + environment: + PUID: 1000 + PGID: 1000 + TZ: America/New_York + volumes: + - jellyfin_config:/config + - tv:/data/tvshows + - movies:/data/movies + - music:/data/music + dns: + - 192.168.1.1 + + + rss: + image: linuxserver/freshrss + container_name: freshrss + restart: unless-stopped + networks: + - connector + volumes: + - freshrss_data:/config + dns: + - 192.168.1.1 + labels: + - "traefik.http.routers.freshrss.rule=Host(`rss.sherman.one`)" + - "traefik.http.routers.freshrss.tls=true" + - "traefik.http.routers.freshrss.tls.certresolver=le" + - "traefik.http.routers.freshrss.tls.domains[0].sans=*.sherman.one" + - "traefik.http.routers.freshrss.entrypoints=web-secure" + - "traefik.http.routers.freshrssredir.middlewares=file-https@file" + - "traefik.http.routers.freshrssredir.entrypoints=web" + - "traefik.http.routers.freshrssredir.rule=Host(`rss.sherman.one`)" + + +volumes: + nzbget_config: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@config/nzbget + device: /dev/sdc + jackett_config: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@config/jackett + device: /dev/sdc + sonarr_config: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@config/sonarr + device: /dev/sdc + radarr_config: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@config/radarr + device: /dev/sdc + lidarr_config: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@config/lidarr + device: /dev/sdc + jellyfin_config: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@config/jellyfin + device: /dev/sdc + freshrss_data: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@data/freshrss + device: /dev/sdc + downloads: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@data/downloads + device: /dev/sdc + tv: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@data/tv + device: /dev/sdc + movies: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@data/movies + device: /dev/sdc + music: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@data/music + device: /dev/sdc + +networks: + connector: + external: true diff --git a/network/docker-compose.yaml b/network/docker-compose.yaml new file mode 100644 index 0000000..9e0742d --- /dev/null +++ b/network/docker-compose.yaml @@ -0,0 +1,90 @@ +version: "3.7" + +services: + mqtt: + image: eclipse-mosquitto + container_name: mqtt + restart: unless-stopped + ports: + - "1883:1883" + - "8883:8883" + dns: + - 192.168.1.1 + volumes: + - mosquitto_config:/mosquitto/config + - mosquitto_data:/mosquitto/data + + pihole: + image: pihole/pihole:latest + container_name: pihole + ports: + - "53:53" + - "53:53/udp" + networks: + - connector + environment: + TZ: 'America/New_York' + WEBPASSWORD: pass + VIRTUAL_HOST: pihole.olympus.sherman.one + volumes: + - 'pihole-etc:/etc/pihole/' + - 'pihole-dnsmasq:/etc/dnsmasq.d/' + dns: + - 127.0.0.1 + - 1.1.1.1 + restart: unless-stopped + labels: + - "traefik.http.routers.pihole.rule=Host(`pihole.olympus.sherman.one`)" + - "traefik.http.services.pihole.loadbalancer.server.port=80" + + traefik: + image: traefik + container_name: traefik + restart: unless-stopped + networks: + - connector + ports: + - "80:80" + - "443:443" + - "8080:8080" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - traefik_config:/etc/traefik + environment: + CF_DNS_API_TOKEN: 2a6MNiw5LEwd35at7ZzLdIpDvIk98VM6HGHUkH6Y + dns: + - 192.168.1.1 + labels: + - "traefik.http.routers.traefik.rule=Host(`traefik.olympus.sherman.one`)" + - "traefik.http.services.traefik.loadbalancer.server.port=8080" + +volumes: + mosquitto_config: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@config/mosquitto + device: /dev/sdc + mosquitto_data: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@data/mosquitto + device: /dev/sdc + pihole-etc: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@config/pihole + device: /dev/sdc + pihole-dnsmasq: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@data/pihole + device: /dev/sdc + traefik_config: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@config/traefik + device: /dev/sdc + +networks: + connector: + name: connector diff --git a/testing/docker-compose.yaml b/testing/docker-compose.yaml new file mode 100644 index 0000000..eb13fd2 --- /dev/null +++ b/testing/docker-compose.yaml @@ -0,0 +1,51 @@ +version: "3.7" + +x-defaults: &default + restart: unless-stopped + networks: + - connector + - local + dns: + - 192.168.1.1 + +services: + wp: + <<: *default + image: wordpress + container_name: wordpress + volumes: + - wordpress:/var/www/html + environment: + WORDPRESS_DB_HOST: wp_db + WORDPRESS_DB_USER: wordpress + WORDPRESS_DB_PASSWORD: wordpress + WORDPRESS_DB_NAME: wordpress + labels: + - "traefik.http.routers.wordpressSecure.rule=Host(`wp.sherman.one`)" + - "traefik.http.routers.wordpressSecure.tls=true" + - "traefik.http.routers.wordpressSecure.tls.certresolver=le" + - "traefik.http.routers.wordpressSecure.tls.domains[0].sans=*.sherman.one" + - "traefik.http.routers.wordpressSecure.entrypoints=web-secure" + - "traefik.http.routers.wordpress.rule=Host(`wp.sherman.one`)" + - "traefik.http.routers.wordpress.entrypoints=web" + - "traefik.http.routers.wordpress.middlewares=file-https@file" + + wp_db: + <<: *default + image: mysql:5.7 + volumes: + - db:/var/lib/mysql + environment: + MYSQL_DATABASE: wordpress + MYSQL_USER: wordpress + MYSQL_PASSWORD: wordpress + MYSQL_RANDOM_ROOT_PASSWORD: 1 + +volumes: + wordpress: + db: + +networks: + connector: + external: true + local: diff --git a/utils/docker-compose.yaml b/utils/docker-compose.yaml new file mode 100644 index 0000000..837c8fb --- /dev/null +++ b/utils/docker-compose.yaml @@ -0,0 +1,233 @@ +version: "3.7" + +x-defaults: &default + restart: unless-stopped + +services: + ide: + <<: *default + #image: linuxserver/code-server + build: ide + container_name: ide + networks: + - connector + volumes: + - ide_config:/config + environment: + PASSWORD: password + SUDO_PASSWORD: pass + labels: + - "traefik.http.routers.codeServerSecure.rule=Host(`code.sherman.one`)" + - "traefik.http.routers.codeServerSecure.tls=true" + - "traefik.http.routers.codeServerSecure.tls.certresolver=le" + - "traefik.http.routers.codeServerSecure.tls.domains[0].sans=*.sherman.one" + - "traefik.http.routers.codeServerSecure.entrypoints=web-secure" + - "traefik.http.routers.codeServer.rule=Host(`code.sherman.one`)" + - "traefik.http.routers.codeServer.entrypoints=web" + - "traefik.http.routers.codeServer.middlewares=file-https@file" + - "traefik.http.services.codeServer.loadbalancer.server.port=8443" + + bitwarden: + image: bitwardenrs/server + container_name: bitwarden + restart: unless-stopped + networks: + - connector + volumes: + - bitwarden_data:/data + ports: + - "1335:80" + dns: + - 192.168.1.1 + labels: + - "traefik.http.routers.bitwarden.rule=Host(`pw.sherman.one`)" + - "traefik.http.routers.bitwarden.tls=true" + - "traefik.http.routers.bitwarden.tls.certresolver=le" + - "traefik.http.routers.bitwarden.tls.domains[0].sans=*.sherman.one" + - "traefik.http.routers.bitwarden.entrypoints=web-secure" + - "traefik.http.routers.bitwardenredirect.rule=Host(`pw.sherman.one`)" + - "traefik.http.routers.bitwardenredirect.entrypoints=web" + - "traefik.http.routers.bitwardenredirect.middlewares=file-https@file" + + hass: + image: homeassistant/home-assistant:stable + container_name: hass + restart: unless-stopped + network_mode: host + volumes: + - homeassistant_config:/config + dns: + - 192.168.1.1 + environment: + TZ: America/New_York + + grocy: + image: linuxserver/grocy + container_name: grocy + restart: unless-stopped + networks: + - connector + environment: + TZ: America/New_York + volumes: + - grocy_config:/config + dns: + - 192.168.1.1 + labels: + - "traefik.http.routers.grocySecure.rule=Host(`grocy.sherman.one`)" + - "traefik.http.routers.grocySecure.tls=true" + - "traefik.http.routers.grocySecure.tls.certresolver=le" + - "traefik.http.services.grocy.loadbalancer.server.port=80" + + barcode-buddy: + image: f0rc3/barcodebuddy-docker + container_name: barcode-buddy + restart: unless-stopped + networks: + - connector + volumes: + - barcode_buddy_config:/config + dns: + - 192.168.1.1 + labels: + - "traefik.http.routers.bb.rule=Host(`bb.sherman.one`)" + - "traefik.http.services.bb.loadbalancer.server.port=80" + + git: + image: gitea/gitea:latest + container_name: gitea + environment: + USER_UID: 1000 + USER_GID: 1000 + DISABLE_SSH: "true" + ROOT_URL: "https://git.sherman.one" + restart: unless-stopped + networks: + - connector + volumes: + - gitea:/data + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + labels: + - "traefik.http.routers.gitearedirect.rule=Host(`git.sherman.one`)" + - "traefik.http.routers.gitearedirect.middlewares=file-https@file" + - "traefik.http.routers.gitearedirect.entrypoints=web" + - "traefik.http.routers.gitea.rule=Host(`git.sherman.one`)" + - "traefik.http.routers.gitea.tls=true" + - "traefik.http.routers.gitea.tls.certresolver=le" + - "traefik.http.routers.gitea.entrypoints=web-secure" + - "traefik.http.routers.gitea.tls.domains[0].sans=*.sherman.one" + - "traefik.http.services.gitea.loadbalancer.server.port=3000" + + teedy: + image: sismics/docs:v1.7 + container_name: teedy + restart: unless-stopped + networks: + - connector + volumes: + - teedy:/data + labels: + - "traefik.http.routers.teedy.rule=Host(`docs.sherman.one`)" + + files: + build: files + container_name: fileserver + restart: unless-stopped + networks: + - connector + volumes: + - files:/var/www/localhost/htdocs/files/ + labels: + - "traefik.http.routers.files.rule=Host(`sherman.one`)&&PathPrefix(`/files/`)" + - "traefik.http.routers.files.tls=true" + - "traefik.http.routers.files.tls.certresolver=le" + - "traefik.http.routers.files.entrypoints=web-secure" + - "traefik.http.routers.filesRedirect.rule=Host(`sherman.one`)&&PathPrefix(`/files/`)" + - "traefik.http.routers.filesRedirect.middlewares=file-https@file" + - "traefik.http.routers.filesRedirect.entrypoints=web" + + minecraft: + image: itzg/minecraft-server + container_name: minecraft + restart: unless-stopped + volumes: + - minecraft:/data + dns: + - 192.168.1.1 + ports: + - "25565:25565" + - "25575:25575" + environment: + EULA: "TRUE" + TYPE: "FORGE" + MEMORY: "10G" + VERSION: "1.12.2" + ENABLE_RCON: "TRUE" + RCON_PASSWORD: "password" + RCON_PORT: "25575" + MAX_TICK_TIME: -1 + ALLOW_FLIGHT: "TRUE" + + + +volumes: + ide_config: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@config/ide + device: /dev/sdc + nextcloud_data: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@data/nextcloud + device: /dev/sdc + nextcloud_config: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@config/nextcloud + device: /dev/sdc + bitwarden_data: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@data/bitwarden + device: /dev/sdc + homeassistant_config: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@config/homeassistant + device: /dev/sdc + grocy_config: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@config/grocy + device: /dev/sdc + gitea: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@data/gitea + device: /dev/sdc + teedy: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@data/teedy + device: /dev/sdc + minecraft: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@data/minecraft + device: /dev/sdc + barcode_buddy_config: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@config/barcode_buddy + device: /dev/sdc + files: + driver_opts: + type: btrfs + o: rw,noatime,compress=zstd,subvol=@data/files + device: /dev/sdc + +networks: + connector: + external: true diff --git a/utils/files/Dockerfile b/utils/files/Dockerfile new file mode 100644 index 0000000..dd88cfe --- /dev/null +++ b/utils/files/Dockerfile @@ -0,0 +1,8 @@ +FROM alpine + + +RUN apk add --no-cache lighttpd && mkdir /var/www/localhost/htdocs/files + +EXPOSE 80 + +CMD lighttpd -f /etc/lighttpd/lighttpd.conf -D diff --git a/utils/ide/Dockerfile b/utils/ide/Dockerfile new file mode 100644 index 0000000..c86f965 --- /dev/null +++ b/utils/ide/Dockerfile @@ -0,0 +1,5 @@ +FROM linuxserver/code-server + +RUN apt-get update && apt-get upgrade -y && apt-get install -y python3 python3-pip python3-venv docker.io && apt-get clean && apt-get autoclean + +RUN pip3 install --no-cache pylint pyls yapf rope