From ca4b6be44218b2ba6320e772a70756ebe66a8b00 Mon Sep 17 00:00:00 2001 From: Penelope Gwen Date: Wed, 17 Apr 2024 12:34:36 -0600 Subject: [PATCH] New backup 2024-04-17 12:34:36 --- .env_template | 33 +++---- auth.yml | 63 +++++++++++++ docker-compose.yml | 202 ----------------------------------------- docker-compose.yml.bak | 43 +++++++++ libretranslate.yml | 30 ++++++ monitoring.yml | 52 +++++++++++ networking.yml | 44 +++++++++ smarthome.yml | 50 ++++++++++ startall.sh | 11 +++ updategit.sh | 8 ++ 10 files changed, 315 insertions(+), 221 deletions(-) create mode 100644 auth.yml delete mode 100644 docker-compose.yml create mode 100644 docker-compose.yml.bak create mode 100644 libretranslate.yml create mode 100644 monitoring.yml create mode 100644 networking.yml create mode 100644 smarthome.yml create mode 100755 startall.sh create mode 100755 updategit.sh diff --git a/.env_template b/.env_template index 4a57389..ca0a7fe 100644 --- a/.env_template +++ b/.env_template @@ -1,37 +1,32 @@ #SYSINFO -# Time zone - get identifier here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones TZ= -# UID & GID - get by running 'id' command as user who should own files UID= GID= -#because home assistant throws a fit if the reverse proxy ip address changes, which it tends to when recreated/restarted. Make this something like "172.1.1." -SUBNET_PREFIX= +AUTH_SUBNET_PREFIX= +MONITOR_SUBNET_PREFIX= +NETWORKING_SUBNET_PREFIX= #URLS -#lldap server url LLDAP_SERVER= #PATHS -# Data Path - this is the parent directory where all of your persistent container data will be stored DATA_PATH= -# Media Path - this is the parent directory where all of your media is stored- you can use samba to connect to remote media drive MEDIA_PATH= #PORTS -#These are the ports services will be available at. I've left my reccomendations here -DDNS_PORT=8001 -KUMA_PORT=3001 +DDNS_PORT= +KUMA_PORT= -LLDAP_LDAP_PORT=3890 -LLDAP_LDAPS_PORT=6360 -LLDAP_WEBUI_PORT=17170 +LLDAP_LDAP_PORT= +LLDAP_LDAPS_PORT= +LLDAP_WEBUI_PORT= -ORGANIZR_PORT=8449 +ORGANIZR_PORT= -NGINX_HTTP_PORT=80 -NGINX_WEBUI_PORT=81 -NGINX_HTTPS_PORT=443 +NGINX_HTTP_PORT= +NGINX_WEBUI_PORT= +NGINX_HTTPS_PORT= -WYOMING_PIPER_PORT=10200 -WYOMING_WHISPER_PORT=10300 +WYOMING_PIPER_PORT= +WYOMING_WHISPER_PORT= diff --git a/auth.yml b/auth.yml new file mode 100644 index 0000000..0ccf738 --- /dev/null +++ b/auth.yml @@ -0,0 +1,63 @@ +version: "3.8" + +networks: + authelia: + driver: bridge + docker-local: + driver: bridge + ipam: + driver: default + config: + - subnet: ${AUTH_SUBNET_PREFIX}0/24 + +services: + + lldap: #very simple LDAP implementation- in case you want a central account for all other services https://github.com/lldap/lldap + image: nitnelave/lldap:stable + container_name: lldap + logging: + driver: "json-file" + options: + max-size: "1024m" + max-file: "3" + networks: + docker-local: + ipv4_address: ${AUTH_SUBNET_PREFIX}4 + volumes: + - ${DATA_PATH}/lldap/data:/data + hostname: ${LLDAP_SERVER} + ports: + - ${LLDAP_LDAP_PORT}:3890 + - ${LLDAP_WEBUI_PORT}:17170 + - ${LLDAP_LDAPS_PORT}:6360 + restart: unless-stopped + + authelia: # authentication frontend for services that don't natively support external login + image: authelia/authelia + container_name: authelia + environment: + - PUID=${UID} + - PGID=${GID} + - TZ=${TZ} + volumes: + - ${DATA_PATH}/authelia/config:/config + networks: + - authelia + ports: + - 9091:9091 + restart: unless-stopped + + authelia-redis: # data structure server for authelia #https://redis.io/docs/about/ + image: redis:alpine + container_name: authelia-redis + environment: + - TZ=${TZ} + - PUID=${UID} + - PGID=${GID} + volumes: + - ${DATA_PATH}/authelia/redis:/data + networks: + - authelia + expose: + - 6379 + restart: unless-stopped diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index d77abfa..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,202 +0,0 @@ -version: "3.8" - -networks: - authelia: - driver: bridge - docker-local: - driver: bridge - ipam: - driver: default - config: - - subnet: ${SUBNET_PREFIX}0/24 - -volumes: - portainer_data: - name: portainer_data - -services: - - portainer: #Portainer is a web UI for managing your docker containers https://www.portainer.io/ - image: portainer/portainer-ce:latest - container_name: portainer - volumes: - - /var/run/docker.sock:/var/run/docker.sock - - portainer_data:/data - ports: - - "8000:8000" - - "9443:9443" - restart: always - - organizr: #organizr is a server control panel https://github.com/causefx/Organizr - image: organizr/organizr - container_name: organizr - volumes: - - ${DATA_PATH}/organizr/config:/config - environment: - - PGID=${GID} - - PUID=${UID} - - TZ=${TZ} - - branch=v2-master - ports: - - ${ORGANIZR_PORT}:80 - restart: unless-stopped - - ddns-updater: # dns updater, prevents issues caused by cycling residential ip address https://hub.docker.com/r/qmcgaw/ddns-updater - image: qmcgaw/ddns-updater:latest - container_name: ddns-updater - networks: - docker-local: - ipv4_address: ${SUBNET_PREFIX}2 - environment: - - LISTENING_PORT=8000 - - ROOT_URL=/ - - TZ=${TZ} - volumes: - - ${DATA_PATH}/ddns-updater/data:/updater/data - ports: - - ${DDNS_PORT}:8000/tcp - restart: unless-stopped - - home-assistant: #home automation hub. Control lights, audio, temperature, etc. https://www.home-assistant.io/installation/linux#docker-compose - image: ghcr.io/home-assistant/home-assistant:stable - container_name: home-assistant - volumes: - - ${DATA_PATH}/home-assistant/config:/config - - /etc/localtime:/etc/localtime:ro - - /run/dbus:/run/dbus:ro - - ${MEDIA_PATH}:/media/Media:ro - privileged: true - network_mode: host - restart: unless-stopped - - uptime-kuma: # uptime watcher, send notifications when something is down https://github.com/louislam/uptime-kuma - image: louislam/uptime-kuma:latest - container_name: uptime-kuma - networks: - docker-local: - ipv4_address: ${SUBNET_PREFIX}3 - volumes: - - ${DATA_PATH}/uptime-kuma/data:/app/data - ports: - - ${KUMA_PORT}:3001 - restart: unless-stopped - - lldap: #very simple LDAP implementation- in case you want a central account for all other services https://github.com/lldap/lldap - image: nitnelave/lldap:stable - container_name: lldap - networks: - docker-local: - ipv4_address: ${SUBNET_PREFIX}4 - volumes: - - ${DATA_PATH}/lldap/data:/data - hostname: ${LLDAP_SERVER} - ports: - - ${LLDAP_LDAP_PORT}:3890 - - ${LLDAP_WEBUI_PORT}:17170 - - ${LLDAP_LDAPS_PORT}:6360 - restart: unless-stopped - - nginx-proxy-manager: # web ui for managing nginx reverse proxy config https://nginxproxymanager.com/ - image: jc21/nginx-proxy-manager:latest - container_name: nginx-proxy-manager - networks: - docker-local: - ipv4_address: ${SUBNET_PREFIX}5 - volumes: - - ${DATA_PATH}/nginx-proxy-manager/data:/data - - ${DATA_PATH}/nginx-proxy-manager/letsencrypt:/etc/letsencrypt - - ${DATA_PATH}/nginx-proxy-manager/static:/static - - ${DATA_PATH}/nginx-proxy-manager/snippets:/snippets:ro - ports: - - ${NGINX_HTTP_PORT}:80 - - ${NGINX_WEBUI_PORT}:81 - - ${NGINX_HTTPS_PORT}:443 - restart: unless-stopped - - authelia: # authentication frontend for services that don't natively support external login - image: authelia/authelia - container_name: authelia - environment: - - PUID=${UID} - - PGID=${GID} - - TZ=${TZ} - volumes: - - ${DATA_PATH}/authelia/config:/config - networks: - - authelia - ports: - - 9091:9091 - restart: unless-stopped - - authelia-redis: # data structure server for authelia #https://redis.io/docs/about/ - image: redis:alpine - container_name: authelia-redis - environment: - - TZ=${TZ} - - PUID=${UID} - - PGID=${GID} - volumes: - - ${DATA_PATH}/authelia/redis:/data - networks: - - authelia - expose: - - 6379 - restart: unless-stopped - - wyoming-piper: # text to speech for home assistant https://github.com/rhasspy/wyoming-addons - image: rhasspy/wyoming-piper - container_name: wyoming-piper - networks: - docker-local: - ipv4_address: ${SUBNET_PREFIX}6 - volumes: - - ${DATA_PATH}/wyoming_piper/data:/data - ports: - - ${WYOMING_PIPER_PORT}:10200 - command: --voice en-us-libritts-high - restart: unless-stopped - - wyoming-whisper: #speech to text for home assistant https://github.com/rhasspy/wyoming-addons - image: rhasspy/wyoming-whisper - container_name: wyoming_whisper - networks: - docker-local: - ipv4_address: ${SUBNET_PREFIX}7 - volumes: - - ${DATA_PATH}/wyoming_whisper/data:/data - ports: - - ${WYOMING_WHISPER_PORT}:10300 - command: --model tiny-int8 --language en - restart: unless-stopped - -# apcupsd: -# image: gregewing/apcupsd:latest -# container_name: apcupsd -# volumes: -# - /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket -# - ${DATA_PATH}/apcupsd:/etc/apcupsd -# environment: -# - UPSTYPE=net -# - DEVICE=router-netgear-r8000:3551 -# - TZ=${TZ} -# restart: always - - -# tftpd: -# image: docker.io/kalaksi/tftpd -# container_name: tftp -# environment: -# TFTPD_BIND_ADDRESS: "0.0.0.0:1069" -# TFTPD_EXTRA_ARGS: '--blocksize 1468' -# cap_drop: -# - ALL -# cap_add: -# - SETUID -# - SETGID -# - SYS_CHROOT -# volumes: -# - ${DATA_PATH}/tftp/boot:/tftpboot/boot -# - ${DATA_PATH}/tftp/config.cfg:/tftpboot/pxelinux.cfg:ro -# ports: -# - 69:1069/udp -# restart: unless-stopped diff --git a/docker-compose.yml.bak b/docker-compose.yml.bak new file mode 100644 index 0000000..b08a76b --- /dev/null +++ b/docker-compose.yml.bak @@ -0,0 +1,43 @@ +version: "3.8" + +networks: + docker-local: + driver: bridge + ipam: + driver: default + config: + - subnet: ${SUBNET_PREFIX}0/24 + +#services: + +# apcupsd: +# image: gregewing/apcupsd:latest +# container_name: apcupsd +# volumes: +# - /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket +# - ${DATA_PATH}/apcupsd:/etc/apcupsd +# environment: +# - UPSTYPE=net +# - DEVICE=hostname:3551 +# - TZ=${TZ} +# restart: always + + +# tftpd: +# image: docker.io/kalaksi/tftpd +# container_name: tftp +# environment: +# TFTPD_BIND_ADDRESS: "0.0.0.0:1069" +# TFTPD_EXTRA_ARGS: '--blocksize 1468' +# cap_drop: +# - ALL +# cap_add: +# - SETUID +# - SETGID +# - SYS_CHROOT +# volumes: +# - ${DATA_PATH}/tftp/boot:/tftpboot/boot +# - ${DATA_PATH}/tftp/config.cfg:/tftpboot/pxelinux.cfg:ro +# ports: +# - 69:1069/udp +# restart: unless-stopped diff --git a/libretranslate.yml b/libretranslate.yml new file mode 100644 index 0000000..a340b71 --- /dev/null +++ b/libretranslate.yml @@ -0,0 +1,30 @@ +version: "3.8" + +#networks: +# docker-local: +# driver: bridge +# ipam: +# driver: default +# config: +# - subnet: ${SUBNET_PREFIX}0/24 + +volumes: + libretranslate_api_keys: + libretranslate_models: + +services: + + libretranslate: + image: libretranslate/libretranslate + container_name: libretranslate + volumes: + - libretranslate_api_keys:/app/db + - libretranslate_models:/home/libretranslate/.local:rw + ports: + - "5009:5000" + environment: + - LT_API_KEYS=true + - LT_REQ_LIMIT=5 + - LT_API_KEYS_DB_PATH=/app/db/api + - LT_UPDATE_MODELS=true + restart: unless-stopped diff --git a/monitoring.yml b/monitoring.yml new file mode 100644 index 0000000..01e79cd --- /dev/null +++ b/monitoring.yml @@ -0,0 +1,52 @@ +version: "3.8" + +networks: + docker-local: + driver: bridge + ipam: + driver: default + config: + - subnet: ${MONITOR_SUBNET_PREFIX}0/24 + +volumes: + portainer_data: + name: portainer_data + +services: + + portainer: #Portainer is a web UI for managing your docker containers https://www.portainer.io/ + image: portainer/portainer-ce:latest + container_name: portainer + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - portainer_data:/data + ports: + - "8000:8000" + - "9443:9443" + restart: always + + organizr: #organizr is a server control panel https://github.com/causefx/Organizr + image: organizr/organizr + container_name: organizr + volumes: + - ${DATA_PATH}/organizr/config:/config + environment: + - PGID=${GID} + - PUID=${UID} + - TZ=${TZ} + - branch=v2-master + ports: + - ${ORGANIZR_PORT}:80 + restart: unless-stopped + + uptime-kuma: # uptime watcher, send notifications when something is down https://github.com/louislam/uptime-kuma + image: louislam/uptime-kuma:latest + container_name: uptime-kuma + networks: + docker-local: + ipv4_address: ${MONITOR_SUBNET_PREFIX}3 + volumes: + - ${DATA_PATH}/uptime-kuma/data:/app/data + ports: + - ${KUMA_PORT}:3001 + restart: unless-stopped diff --git a/networking.yml b/networking.yml new file mode 100644 index 0000000..3e0d672 --- /dev/null +++ b/networking.yml @@ -0,0 +1,44 @@ +version: "3.8" + +networks: + docker-local: + driver: bridge + ipam: + driver: default + config: + - subnet: ${NETWORKING_SUBNET_PREFIX}0/24 + +services: + + ddns-updater: # dns updater, prevents issues caused by cycling residential ip address https://hub.docker.com/r/qmcgaw/ddns-updater + image: qmcgaw/ddns-updater:latest + container_name: ddns-updater +# networks: +# docker-local: +# ipv4_address: ${SUBNET_PREFIX}2 + environment: + - LISTENING_PORT=8000 + - ROOT_URL=/ + - TZ=${TZ} + volumes: + - ${DATA_PATH}/ddns-updater/data:/updater/data + ports: + - ${DDNS_PORT}:8000/tcp + restart: unless-stopped + + nginx-proxy-manager: # web ui for managing nginx reverse proxy config https://nginxproxymanager.com/ + image: jc21/nginx-proxy-manager:latest + container_name: nginx-proxy-manager + networks: + docker-local: + ipv4_address: ${NETWORKING_SUBNET_PREFIX}5 + volumes: + - ${DATA_PATH}/nginx-proxy-manager/data:/data + - ${DATA_PATH}/nginx-proxy-manager/letsencrypt:/etc/letsencrypt + - ${DATA_PATH}/nginx-proxy-manager/static:/static + - ${DATA_PATH}/nginx-proxy-manager/snippets:/snippets:ro + ports: + - ${NGINX_HTTP_PORT}:80 + - ${NGINX_WEBUI_PORT}:81 + - ${NGINX_HTTPS_PORT}:443 + restart: unless-stopped diff --git a/smarthome.yml b/smarthome.yml new file mode 100644 index 0000000..82184ca --- /dev/null +++ b/smarthome.yml @@ -0,0 +1,50 @@ +version: "3.8" + +#networks: +# docker-local: +# driver: bridge +# ipam: +# driver: default +# config: +# - subnet: ${SUBNET_PREFIX}0/24 + +services: + + home-assistant: #home automation hub. Control lights, audio, temperature, etc. https://www.home-assistant.io/installation/linux#docker> + image: ghcr.io/home-assistant/home-assistant:stable + container_name: home-assistant + volumes: + - ${DATA_PATH}/home-assistant/config:/config + - /etc/localtime:/etc/localtime:ro + - /run/dbus:/run/dbus:ro + - ${MEDIA_PATH}:/media/Media:ro + - ${DATA_PATH}/home-assistant/persistent:/media/persistent + privileged: true + network_mode: host + restart: unless-stopped + + wyoming-piper: # text to speech for home assistant https://github.com/rhasspy/wyoming-addons + image: rhasspy/wyoming-piper + container_name: wyoming-piper +# networks: +# docker-local: +# ipv4_address: ${SUBNET_PREFIX}6 + volumes: + - ${DATA_PATH}/wyoming_piper/data:/data + ports: + - ${WYOMING_PIPER_PORT}:10200 + command: --voice en-us-libritts-high + restart: unless-stopped + + wyoming-whisper: #speech to text for home assistant https://github.com/rhasspy/wyoming-addons + image: rhasspy/wyoming-whisper + container_name: wyoming_whisper +# networks: +# docker-local: +# ipv4_address: ${SUBNET_PREFIX}7 + volumes: + - ${DATA_PATH}/wyoming_whisper/data:/data + ports: + - ${WYOMING_WHISPER_PORT}:10300 + command: --model tiny-int8 --language en + restart: unless-stopped diff --git a/startall.sh b/startall.sh new file mode 100755 index 0000000..21c4b0c --- /dev/null +++ b/startall.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +script_root="$( dirname $0 )" + +for y in "${script_root}"/*.yml;do + by="$(basename $y)" + sudo docker-compose -f "${y}" pull + sudo docker-compose -f "${y}" -p "${by}" up -d +done + +sudo docker image prune -f diff --git a/updategit.sh b/updategit.sh new file mode 100755 index 0000000..8532498 --- /dev/null +++ b/updategit.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +cp .env .env_template +sed -i 's/=.*/=/' .env_template + +git add . +git commit -m "New backup `date +'%Y-%m-%d %H:%M:%S'`" +git push