diff --git a/master_sync.toml b/master_sync.toml index 276f980..8cf59b3 100644 --- a/master_sync.toml +++ b/master_sync.toml @@ -89,14 +89,6 @@ DUPLICATI_LICENSE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJvaWQiOiJkOTMzMjRiZ ## -[[stack]] -name = "filestash" -[stack.config] -server = "Unraid" -linked_repo = "compose-filestash" - -## - [[stack]] name = "glance" tags = ["Active"] @@ -146,6 +138,7 @@ INFLUX_USER=admin INFLUX_PASSWORD=ndfgsdfgldskfnbdfj INFLUX_ORG=home INFLUX_BUCKET=homeassistant +GRAFANA_ADMIN_PASSWORD=UvxikNBndldic27gpmicVzK """ ## @@ -300,6 +293,33 @@ webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7" ## +[[stack]] +name = "metrics" +[stack.config] +server = "Unraid" +poll_for_updates = true +linked_repo = "compose-metrics" +environment = """ +# metrics stack +TZ=America/New_York +GRAFANA_ADMIN_PASSWORD=UvxikNBndldic27gpmicVzK +INFLUX_TELEGRAF_TOKEN=nVgWIqKyVgLvQixVoirh1v107kGN5eETi6yNICzNUmZigcIBWWcQlDClYELVixrIG_4axiDrY3cz7LL_8JnKng== +SONARR_API_KEY=4a392773bb664d4491f1475acf961afe +RADARR_API_KEY=40a3b3ae2f174385b41a10aed360947e +QBIT_API_KEY=qbt_fvYsuRSBtSsz73qVhBC9mryTScvA +PROWLARR_API_KEY=c8803bd24f78428db897d0bbe57c5863 +TDARR_API_KEY=tapi_x-ZrhTpZh +TAUTULLI_API_KEY=jU1eV9NTbH9Fw0Ohh-X3zHdAWr-PTHw_ +JELLYFIN_API_KEY=4e510aa82a9d4048a293e7c5f6a2b867 +UNPOLLER_INFLUX_TOKEN=0cXQdFl5Jt2RiVSBGqOVzNuCOPcFPDWLFcIUwOHr3ED7OStR3JOZ2A5SsM5poxrVz0fVpZQphof-gHnqjJBaOA== +UNIFI_USER=homeassistant_net +UNIFI_PASS=mh2609!LM!@123 +UPTIME_KUMA_API_KEY=uk1_Imp3ddbsKtagWF_I5NYd3JGccecynG5jCLioy5km +NTFY_TOKEN_GRAFANA=tk_p6079bgpqn7yv52z5p7r81skyjbvx +""" + +## + [[stack]] name = "notify" [stack.config] @@ -346,10 +366,137 @@ additional_env_files = [ name = "osiris" [stack.config] server = "Unraid" +auto_pull = false poll_for_updates = true auto_update = true -linked_repo = "osiris" -file_paths = ["docker-compose.yml"] +webhook_enabled = false +file_contents = """ +name: osiris +# Self-contained deploy of https://github.com/simplifaisoul/osiris (upstream is +# not ours, so nothing is committed there). The web app uses the prebuilt GHCR +# image, osiris-intel builds straight from the upstream git repo, and the nginx +# tile cache config is inlined below (copied from upstream nginx/nginx.conf). +# LAN access is https://osiris.andrewamason.tech via SWAG (osiris.subdomain.conf), +# which proxies to osiris-cache:8080 on Internal_Network. The cache gzips the +# large JSON APIs and caches map tiles. No host ports are published. +services: + osiris: + image: ghcr.io/simplifaisoul/osiris:latest + container_name: osiris + env_file: + - path: .env + required: false + environment: + - NODE_OPTIONS=--dns-result-order=ipv4first + - NODE_ENV=production + - PORT=3000 + - HOSTNAME=0.0.0.0 + - INTEL_URL=http://osiris-intel:4000 + extra_hosts: + - "host.docker.internal:host-gateway" + depends_on: + - osiris-intel + restart: unless-stopped + labels: + net.unraid.docker.icon: file:///mnt/user/docker/icons/global-threat-map.png + net.unraid.docker.webui: https://osiris.andrewamason.tech/ + + osiris-cache: + image: nginx:alpine + container_name: osiris-cache + networks: + - default + - Internal_Network + configs: + - source: nginx_conf + target: /etc/nginx/nginx.conf + volumes: + - /mnt/user/docker/osiris/nginx-cache:/var/cache/nginx + depends_on: + - osiris + restart: unless-stopped + labels: + net.unraid.docker.icon: file:///mnt/user/docker/icons/global-threat-map.png + + osiris-intel: + build: + context: https://github.com/simplifaisoul/osiris.git#master:intel + image: osiris-intel:local + container_name: osiris-intel + # Upstream's check hits "localhost", which resolves to ::1 while the server + # listens on IPv4 only, so it never passes. + healthcheck: + test: ["CMD", "wget", "-qO-", "http://127.0.0.1:4000/health"] + interval: 30s + timeout: 5s + start_period: 60s + restart: unless-stopped + labels: + net.unraid.docker.icon: file:///mnt/user/docker/icons/global-threat-map.png + +networks: + Internal_Network: + external: true + +configs: + nginx_conf: + content: | + worker_processes auto; + events { worker_connections 1024; } + http { + gzip on; + gzip_vary on; + gzip_comp_level 5; + gzip_min_length 1024; + gzip_proxied any; + gzip_types application/json application/javascript application/xml + application/geo+json text/plain text/css text/javascript image/svg+xml; + + proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=tile_cache:100m + max_size=10g inactive=365d use_temp_path=off; + resolver 1.1.1.1 8.8.8.8 valid=300s; + + server { + listen 8080; + + # Map tiles from CARTO, cached for a year + location ~ ^/proxy/tiles/(?(?:[a-d]\.)?basemaps\.cartocdn\.com)/(?.*)$$ { + proxy_pass https://$$target_domain/$$target_path$$is_args$$args; + proxy_set_header Host $$target_domain; + proxy_ssl_server_name on; + proxy_ssl_protocols TLSv1.2 TLSv1.3; + proxy_hide_header Set-Cookie; + proxy_ignore_headers Set-Cookie; + proxy_cache tile_cache; + proxy_cache_valid 200 304 365d; + proxy_cache_valid any 1m; + proxy_cache_lock on; + add_header Cache-Control "public, max-age=31536000, immutable"; + add_header X-Cache-Status $$upstream_cache_status; + } + location ~ ^/proxy/tiles/ { return 403; } + + # Everything else goes to the app + location / { + proxy_pass http://osiris:3000; + proxy_set_header Host $$host; + proxy_set_header X-Real-IP $$remote_addr; + proxy_set_header X-Forwarded-For $$proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $$scheme; + proxy_connect_timeout 30s; + proxy_read_timeout 120s; + proxy_send_timeout 120s; + proxy_buffering on; + proxy_buffer_size 16k; + proxy_buffers 32 64k; + proxy_busy_buffers_size 128k; + proxy_http_version 1.1; + proxy_set_header Upgrade $$http_upgrade; + proxy_set_header Connection "upgrade"; + } + } + } +""" environment = """ # ═══════════════════════════════════════════════════════════════════════════ # OSIRIS — Environment Template @@ -610,39 +757,6 @@ webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7" ## -[[stack]] -name = "wealthfolio" -[stack.config] -server = "Unraid" -file_contents = """ -services: - wealthfolio: - image: ghcr.io/wealthfolio/wealthfolio:latest - container_name: wealthfolio - restart: unless-stopped - ports: - - "8088:8088" - volumes: - - /mnt/user/docker/wealthfolio:/data - environment: - WF_LISTEN_ADDR: "0.0.0.0:8088" - WF_DB_PATH: "/data/wealthfolio.db" - WF_SECRET_KEY: 'pBBFl/PpySty6frAd+5q/QGIQm25WUmjGxxieSoCPL8=' - WF_AUTH_PASSWORD_HASH: '$$argon2i$$v=19$$m=16,t=2,p=1$$cU53T0E1ZEdKblRldjZ3OA$$ZCXkrZrN92z48SZbz0sf1Q' - WF_CORS_ALLOW_ORIGINS: 'http://172.24.3.12:8088' - healthcheck: - test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://127.0.0.1:8088/api/v1/healthz"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 15s -""" -environment = """ - -""" - -## - [[deployment]] name = "Technitium_2" [deployment.config] @@ -949,6 +1063,17 @@ repo = "HomeLab/Mealie" ## +[[repo]] +name = "compose-metrics" +[repo.config] +server = "Unraid" +git_provider = "gitea:3000" +git_https = false +git_account = "andrewamason" +repo = "HomeLab/metrics" + +## + [[repo]] name = "compose-notify" [repo.config]