Files
resources/master_sync.toml
T

927 lines
18 KiB
TOML

[[server]]
name = "Synology"
[server.config]
address = "https://172.24.3.23:8120"
enabled = true
##
[[server]]
name = "unraid"
[server.config]
external_address = "HTTP://172.24.3.12"
enabled = true
##
[[stack]]
name = "automation"
[stack.config]
server = "unraid"
auto_update = true
linked_repo = "compose-automation"
env_file_path = "n8n.env"
additional_env_files = ["n8n.env"]
##
[[stack]]
name = "changedetection_io"
tags = ["Active"]
[stack.config]
server = "unraid"
auto_update = true
linked_repo = "compose-changedetection_io"
webhook_secret = "Limb-Crease-Unelected-Squeeze1"
##
[[stack]]
name = "dashboards"
tags = ["Active"]
[stack.config]
server = "unraid"
auto_update = true
linked_repo = "compose-dashboards"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
additional_env_files = ["timezone.env"]
##
[[stack]]
name = "grimmory"
tags = ["Testing"]
[stack.config]
server = "unraid"
auto_pull = false
linked_repo = "compose-grimmory"
env_file_path = "grimmory.env"
additional_env_files = ["grimmory.env"]
environment = """
# Application
APP_USER_ID=1000
APP_GROUP_ID=1000
TZ=Etc/UTC
# Database
DATABASE_URL=jdbc:mariadb://mariadb:3306/grimmory
DB_USER=grimmory
DB_PASSWORD=ChangeMe_Grimmory_2025!
# Optional: enable API docs + export OpenAPI JSON (defaults to false)
API_DOCS_ENABLED=false
# Storage: LOCAL (default) or NETWORK (disables file operations; see Network Storage section)
DISK_TYPE=LOCAL
# MariaDB
DB_USER_ID=1000
DB_GROUP_ID=1000
MYSQL_ROOT_PASSWORD=ChangeMe_MariaDBRoot_2025!
MYSQL_DATABASE=grimmory
"""
##
[[stack]]
name = "homeassistant_io"
tags = ["Active"]
[stack.config]
server = "unraid"
poll_for_updates = true
auto_update = true
env_file_path = "HA.env"
file_contents = """
services:
homeassistant:
image: ghcr.io/home-assistant/home-assistant:stable
container_name: homeassistant
restart: unless-stopped
privileged: true
network_mode: host
volumes:
- /mnt/user/docker/homeassistant_io/ha_config:/config
- /etc/localtime:/etc/localtime:ro
depends_on:
- mosquitto
- influxdb
labels:
- traefik.enable=true
- traefik.http.routers.HomeAssistant.rule=Host(`homeassistant.andrewamason.tech`)
- traefik.http.routers.HomeAssistant.entrypoints=https,http
- traefik.http.routers.HomeAssistant.tls=true
- traefik.http.routers.HomeAssistant.tls.certresolver=letsencrypt
- traefik.http.routers.HomeAssistant.middlewares=https_redirect
- traefik.http.services.HomeAssistant.loadbalancer.healthcheck.followredirects=true
- traefik.http.services.HomeAssistant.loadbalancer.healthcheck.path=/
- traefik.http.services.HomeAssistant.loadbalancer.passhostheader=true
- traefik.http.services.HomeAssistant.loadbalancer..server.url=http://172.24.3.12:8123
- net.unraid.docker.icon=/mnt/user/docker/icons/home-assistant.png
- homepage.group=Monitoring
- homepage.name=Home Assistant
- homepage.icon=homeassistant.png
- homepage.href=http://172.24.3.12:8123
- homepage.description=homeassistant
- homepage.widget.type=changedetectionio
- homepage.widget.url=http://172.24.3.12:8123
- homepage.widget.key=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJmNDIxYzJiMGM0YjA0NGI3ODQ2ODA0NDlhZmVjNTExYSIsImlhdCI6MTc3NDc0ODQ1NywiZXhwIjoyMDkwMTA4NDU3fQ.0XPkdXD0CacyWpfQa5NB2Qtxin5taCM0LyS0kjPlKQg
mosquitto:
image: eclipse-mosquitto:latest
container_name: mosquitto
restart: unless-stopped
ports:
- "${MQTT_PORT:-1883}:1883"
- "9001:9001"
volumes:
- /mnt/user/docker/homeassistant_io/mosquitto_data:/mosquitto/data
networks:
- ha-network
labels:
- net.unraid.docker.icon=/mnt/user/docker/icons/mosquitto.png
- traefik.enable=false
influxdb:
image: influxdb:2.7
container_name: influxdb
restart: unless-stopped
ports:
- "${INFLUX_PORT:-8086}:8086"
environment:
- DOCKER_INFLUXDB_INIT_MODE=setup
- DOCKER_INFLUXDB_INIT_USERNAME=${INFLUX_USER:-admin}
- DOCKER_INFLUXDB_INIT_PASSWORD=${INFLUX_PASSWORD:-adminpassword}
- DOCKER_INFLUXDB_INIT_ORG=${INFLUX_ORG:-home}
- DOCKER_INFLUXDB_INIT_BUCKET=${INFLUX_BUCKET:-homeassistant}
volumes:
- /mnt/user/docker/homeassistant_io/influxdb_data:/var/lib/influxdb2
networks:
- ha-network
labels:
- net.unraid.docker.icon=/mnt/user/docker/icons/influxdb.png
- traefik.enable=false
networks:
ha-network:
name: Internal_Network
external: true
"""
environment = """
# Home Assistant Full Stack
MQTT_PORT=1883
INFLUX_PORT=8087
INFLUX_USER=admin
INFLUX_PASSWORD=ndfgsdfgldskfnbdfj
INFLUX_ORG=home
INFLUX_BUCKET=homeassistant
"""
##
[[stack]]
name = "homebox"
tags = ["Active"]
[stack.config]
server = "unraid"
auto_update = true
linked_repo = "compose-homebox"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
##
[[stack]]
name = "icloud_pd"
[stack.config]
server = "unraid"
auto_update = true
linked_repo = "compose-icloudpd"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
##
[[stack]]
name = "immich"
tags = ["Active"]
[stack.config]
server = "unraid"
auto_update = true
linked_repo = "compose-immich"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
additional_env_files = ["immich.env", "immich-frame.env"]
##
[[stack]]
name = "makemkv"
tags = ["As_Needed"]
[stack.config]
server = "unraid"
auto_update = true
linked_repo = "compose-makemkv"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
##
[[stack]]
name = "manyfold"
tags = ["As_Needed"]
[stack.config]
server = "unraid"
auto_update = true
linked_repo = "compose-manyfold"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
env_file_path = "manyfold.env"
##
[[stack]]
name = "mealie"
tags = ["Testing"]
[stack.config]
server = "unraid"
file_contents = """
## Add your compose file here
services:
mealie:
image: ghcr.io/mealie-recipes/mealie:v3.14.0 #
container_name: mealie
restart: always
ports:
- "9925:9000" #
deploy:
resources:
limits:
memory: 1000M #
volumes:
- mealie-data:/app/data/
environment:
# Set Backend ENV Variables Here
ALLOW_SIGNUP: "false"
PUID: 1000
PGID: 1000
TZ: America/Anchorage
BASE_URL: https://mealie.yourdomain.com
volumes:
mealie-data:
"""
##
[[stack]]
name = "media-streaming"
tags = ["Active"]
[stack.config]
server = "unraid"
auto_update = true
linked_repo = "compose-media-streaming"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
##
[[stack]]
name = "media_apps"
tags = ["Active"]
[stack.config]
server = "unraid"
project_name = "media_apps"
auto_update = true
linked_repo = "compose-Media_Apps"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
additional_env_files = ["karakeep.env"]
environment = """
# VARIABLE = value
"""
##
[[stack]]
name = "obsidian-sync"
tags = ["Active"]
[stack.config]
server = "unraid"
auto_update = true
linked_repo = "compose-obsidian-sync"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
additional_env_files = ["andrew-obsidian-vault.env"]
##
[[stack]]
name = "ossint-web-check"
tags = ["As_Needed"]
[stack.config]
server = "unraid"
poll_for_updates = true
linked_repo = "compose-OSSINT-Webcheck"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
##
[[stack]]
name = "paperless-ngx"
tags = ["As_Needed"]
[stack.config]
server = "unraid"
auto_update = true
linked_repo = "compose-paperless-ngx"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
additional_env_files = ["stack.env"]
##
[[stack]]
name = "resilio-sync"
tags = ["Active"]
[stack.config]
server = "unraid"
auto_update = true
linked_repo = "compose-resilio-sync"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
##
[[stack]]
name = "romm"
[stack.config]
server = "unraid"
auto_update = true
linked_repo = "compose-romm"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
##
[[stack]]
name = "rustdesk"
tags = ["Decom"]
[stack.config]
server = "unraid"
auto_update = true
linked_repo = "compose-rustdesk"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
##
[[stack]]
name = "servarr"
tags = ["As_Needed"]
[stack.config]
server = "unraid"
auto_update = true
linked_repo = "compose-servarr"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
additional_env_files = ["timezone.env"]
##
[[stack]]
name = "swag"
tags = ["Active"]
[stack.config]
server = "unraid"
auto_update = true
linked_repo = "compose-swag"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
##
[[stack]]
name = "traefik"
tags = ["Active"]
[stack.config]
server = "unraid"
auto_update = true
linked_repo = "compose-reverseproxy"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
env_file_path = "traefik.env"
environment = """
TZ=US/New_York
CF_API_EMAIL=andrew_amason@live.com
CLOUDFLARE_DNS_API_TOKEN=YrGr8Q2iLJ-Ui_bpSxreYJ7D6T8YJOFOj7A4eYDq
"""
##
[[stack]]
name = "uptime-kuma"
tags = ["Decom"]
[stack.config]
server = "unraid"
project_name = "uptime-kuma"
auto_update = true
linked_repo = "compose-uptime-kuma"
webhook_secret = "Spotting-Drainpipe-Freely-Outwit-Opponent7"
additional_env_files = ["uptime.env"]
ignore_services = ["signal-cli-rest-api"]
##
[[stack]]
name = "wallos"
tags = ["Active"]
[stack.config]
server = "unraid"
auto_update = true
file_contents = """
networks:
Internal:
name: Internal_Network
external: true
services:
wallos:
container_name: wallos
image: bellamy/wallos:latest
expose:
- 80
environment:
- TZ=America\New_York
- PGID=65536
- PUID=1031
volumes:
- /mnt/user/docker/wallos/db:/var/www/html/db
- /mnt/user/docker/wallos/logos:/var/www/html/images/uploads/logos
restart: unless-stopped
networks:
- Internal
labels:
- traefik.enable=false
- homepage.group=Monitoring
- homepage.name=WallOS
- net.unraid.docker.icon=/mnt/user/docker/icons/wallos.png
- homepage.icon=wallos.png
- homepage.href=https://wallos.andrewamason.tech
- homepage.description=Personal Subscription Tracker
- homepage.widget.type=wallos
- homepage.widget.url=http://wallos:80
- homepage.widget.key=2995ba5f3584b8a3e588a92de459ded93177df6d6576a6cb50fea3ee5666d97e
"""
##
[[deployment]]
name = "Technitium_2"
[deployment.config]
server = "Synology"
image.type = "Image"
image.params.image = "technitium/dns-server:latest"
poll_for_updates = true
auto_update = true
restart = "always"
volumes = """
# volume:/container/path
/volume1/docker/technitium_2/config:/etc/dns
"""
environment = """
# VARIABLE = value
TZ=America\New_York
"""
##
[[build]]
name = "audiobookshelf"
[build.config]
builder = "local"
image_registry = [
{ domain = "gitea.andrewamason.tech", account = "andrewamason", organization = "docker" }
]
##
[[build]]
name = "cloudflare-ddns"
[build.config]
builder = "local"
image_registry = [
{ domain = "gitea.andrewamason.tech", account = "andrewamason", organization = "docker" }
]
##
[[build]]
name = "dashy"
[build.config]
builder = "local"
image_registry = [
{ domain = "gitea.andrewamason.tech", account = "andrewamason", organization = "docker" }
]
##
[[build]]
name = "flaresolverr"
[build.config]
builder = "local"
image_registry = [
{ domain = "gitea.andrewamason.tech", account = "andrewamason", organization = "docker" }
]
##
[[build]]
name = "freshrss"
[build.config]
builder = "local"
dockerfile_path = "Docker/Dockerfile"
image_registry = [
{ domain = "gitea.andrewamason.tech", account = "andrewamason", organization = "docker" }
]
##
[[build]]
name = "glance"
[build.config]
builder = "local"
image_registry = [
{ domain = "gitea.andrewamason.tech", account = "andrewamason", organization = "docker" }
]
##
[[build]]
name = "heimdall"
[build.config]
builder = "local"
image_registry = [
{ domain = "gitea.andrewamason.tech", account = "andrewamason", organization = "docker" }
]
##
[[build]]
name = "homebox"
[build.config]
builder = "local"
image_registry = [
{ domain = "gitea.andrewamason.tech", account = "andrewamason", organization = "docker" }
]
##
[[build]]
name = "icloudpd"
[build.config]
builder = "local"
linked_repo = "icloudpd"
dockerfile_path = "icloudpd.dockerfile"
image_registry = [
{ domain = "gitea.andrewamason.tech", account = "andrewamason", organization = "docker" }
]
##
[[build]]
name = "swag"
[build.config]
builder = "local"
linked_repo = "swag"
image_registry = [
{ domain = "gitea.andrewamason.tech", account = "andrewamason", organization = "docker" }
]
##
[[build]]
name = "web-check"
[build.config]
builder = "local"
linked_repo = "web-check"
image_registry = [
{ domain = "gitea.andrewamason.tech", account = "andrewamason", organization = "docker" }
]
##
[[repo]]
name = "Master_Resource_Sync"
[repo.config]
server = "unraid"
git_provider = "gitea:3000"
git_https = false
git_account = "andrewamason"
repo = "andrewamason/resources"
##
[[repo]]
name = "compose-Media_Apps"
[repo.config]
server = "unraid"
git_provider = "gitea:3000"
git_https = false
git_account = "andrewamason"
repo = "HomeLab/Media_Apps"
##
[[repo]]
name = "compose-OSSINT-Webcheck"
[repo.config]
server = "unraid"
git_provider = "gitea.andrewamason.tech"
git_account = "andrewamason"
repo = "HomeLab/OSSINT-Webcheck"
##
[[repo]]
name = "compose-automation"
[repo.config]
server = "unraid"
git_provider = "gitea.andrewamason.tech"
git_account = "andrewamason"
repo = "HomeLab/automation"
##
[[repo]]
name = "compose-changedetection_io"
[repo.config]
server = "unraid"
git_provider = "gitea:3000"
git_https = false
git_account = "andrewamason"
repo = "HomeLab/changedetection_io"
##
[[repo]]
name = "compose-dashboards"
[repo.config]
server = "unraid"
git_provider = "gitea.andrewamason.tech"
git_account = "andrewamason"
repo = "HomeLab/Dashboards"
##
[[repo]]
name = "compose-grimmory"
[repo.config]
server = "unraid"
git_provider = "gitea:3000"
git_https = false
git_account = "andrewamason"
repo = "HomeLab/grimmory"
##
[[repo]]
name = "compose-homebox"
[repo.config]
server = "unraid"
git_provider = "gitea.andrewamason.tech"
git_account = "andrewamason"
repo = "HomeLab/HomeBox"
##
[[repo]]
name = "compose-icloudpd"
[repo.config]
server = "unraid"
git_provider = "gitea.andrewamason.tech"
git_account = "andrewamason"
repo = "HomeLab/iCloud_PD"
##
[[repo]]
name = "compose-immich"
[repo.config]
server = "unraid"
git_provider = "gitea.andrewamason.tech"
git_account = "andrewamason"
repo = "HomeLab/immich"
##
[[repo]]
name = "compose-makemkv"
[repo.config]
server = "unraid"
git_provider = "gitea.andrewamason.tech"
git_account = "andrewamason"
repo = "HomeLab/makemkv"
##
[[repo]]
name = "compose-manyfold"
[repo.config]
server = "unraid"
git_provider = "gitea.andrewamason.tech"
git_account = "andrewamason"
repo = "HomeLab/manyfold"
env_file_path = "manyfold.env"
##
[[repo]]
name = "compose-mealie"
[repo.config]
##
[[repo]]
name = "compose-media-streaming"
[repo.config]
server = "unraid"
git_provider = "gitea.andrewamason.tech"
git_account = "andrewamason"
repo = "HomeLab/Media-Streaming"
##
[[repo]]
name = "compose-obsidian-sync"
[repo.config]
server = "unraid"
git_provider = "gitea.andrewamason.tech"
git_account = "andrewamason"
repo = "HomeLab/obsidian-sync"
##
[[repo]]
name = "compose-paperless-ngx"
[repo.config]
server = "unraid"
git_provider = "gitea.andrewamason.tech"
git_account = "andrewamason"
repo = "HomeLab/paperless-ngx"
##
[[repo]]
name = "compose-repoflow"
[repo.config]
server = "unraid"
git_provider = "gitea.andrewamason.tech"
git_account = "andrewamason"
repo = "HomeLab/RepoFlow"
##
[[repo]]
name = "compose-resilio-sync"
[repo.config]
server = "unraid"
git_provider = "gitea:3000"
git_https = false
git_account = "andrewamason"
repo = "HomeLab/Resilio-Sync"
##
[[repo]]
name = "compose-reverseproxy"
[repo.config]
server = "unraid"
git_provider = "gitea.andrewamason.tech"
git_account = "andrewamason"
repo = "HomeLab/reverse-proxy"
##
[[repo]]
name = "compose-romm"
[repo.config]
server = "unraid"
git_provider = "gitea.andrewamason.tech"
git_account = "andrewamason"
repo = "HomeLab/Romm"
##
[[repo]]
name = "compose-rustdesk"
[repo.config]
server = "unraid"
git_provider = "gitea.andrewamason.tech"
git_account = "andrewamason"
repo = "HomeLab/RustDesk"
##
[[repo]]
name = "compose-servarr"
[repo.config]
server = "unraid"
git_provider = "gitea:3000"
git_https = false
git_account = "andrewamason"
repo = "HomeLab/servarr"
##
[[repo]]
name = "compose-swag"
[repo.config]
server = "unraid"
git_provider = "gitea:3000"
git_https = false
git_account = "andrewamason"
repo = "HomeLab/swag"
##
[[repo]]
name = "compose-uptime-kuma"
[repo.config]
server = "unraid"
git_provider = "gitea.andrewamason.tech"
git_account = "andrewamason"
repo = "HomeLab/uptime-kuma"
##
[[repo]]
name = "icloudpd"
[repo.config]
server = "unraid"
builder = "local"
git_account = "andrewamason"
repo = "boredazfcuk/docker-icloudpd"
branch = "master"
##
[[repo]]
name = "swag"
[repo.config]
server = "unraid"
builder = "local"
git_account = "andrewamason"
repo = "linuxserver/docker-swag"
branch = "master"
##
[[repo]]
name = "web-check"
[repo.config]
server = "unraid"
builder = "local"
git_account = "andrewamason"
repo = "lissy93/web-check"
branch = "master"
##
[[action]]
name = "Global Auto Update"
[action.config]
schedule = "Run every day at 2:00 AM"
schedule_timezone = "America/New_York"
file_contents = """
// Get Tag Id. The API should throw if it's not found, but we employ safety checks just in case
// Deploy all stacks, minus the excluded ones
console.log('GlobalAutoUpdate');
await komodo.execute('GlobalAutoUpdate', {server: "unraid"});
"""
##
[[builder]]
name = "local"
[builder.config]
type = "Server"
params.server_id = "unraid"
##
[[builder]]
name = "synology"
[builder.config]
type = "Server"
params.server_id = "Synology"
##
[[resource_sync]]
name = "Master Resource Sync"
[resource_sync.config]
linked_repo = "Master_Resource_Sync"
resource_path = ["master_sync.toml"]
managed = true
delete = true
[[procedure]]
name = "Backup Core Database"
description = "Triggers the Core database backup at the scheduled time."
tags = ["system"]
config.schedule = "Every day at 01:00"
[[procedure.config.stage]]
name = "Stage 1"
enabled = true
executions = [
{ execution.type = "BackupCoreDatabase", execution.params = {}, enabled = true }
]