init commit

This commit is contained in:
2025-07-28 23:52:33 -04:00
parent e59ad8ad7f
commit eff0d2fee2
27 changed files with 1041 additions and 0 deletions

25
tasks/codeserver.yml Normal file
View File

@@ -0,0 +1,25 @@
---
- name: Create folder structure
file:
path: "{{ item }}"
state: directory
with_items:
- "{{ data_dir }}/code-server"
- name: Create Code Server Docker Container
docker_container:
name: codeserver
image: lscr.io/linuxserver/code-server:latest
restart_policy: unless-stopped
recreate: true
networks:
- name: homelab
volumes:
- "{{ data_dir }}/code-server:/config"
- "/storage-pool/iac/containers:/config/workspace/docker"
env:
PROXY_DOMAIN: "{{ CODE_PROXY_DOMAIN }}"
DEFAULT_WORKSPACE: "{{ CODE_DEFAULT_WORKSPACE }}"
TZ: "{{ TZ }}"
PUID: "{{ PUID }}"
PGID: "{{ PGID }}"

12
tasks/cup.yml Normal file
View File

@@ -0,0 +1,12 @@
---
- name: Create Cup Docker Container
docker_container:
name: Cup
image: ghcr.io/sergi0g/cup
command: serve
restart_policy: unless-stopped
recreate: true
networks:
- name: homelab
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"

11
tasks/dashdot.yml Normal file
View File

@@ -0,0 +1,11 @@
---
- name: Create Dashdot Docker Container
docker_container:
name: dashdot
image: mauricenino/dashdot
restart_policy: unless-stopped
recreate: true
networks:
- name: homelab
volumes:
- "/:/mnt/host:ro"

14
tasks/dozzle.yml Normal file
View File

@@ -0,0 +1,14 @@
---
- name: Create Dozzle Docker Container
docker_container:
name: dozzle
image: amir20/dozzle:latest
restart_policy: unless-stopped
recreate: true
networks:
- name: homelab
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
env:
DOZZLE_ENABLE_ACTIONS: "{{ DOZZLE_ACTIONS }}"
DOZZLE_ENABLE_SHELL: "{{ DOZZLE_SHELL }}"

9
tasks/excalidraw.yml Normal file
View File

@@ -0,0 +1,9 @@
---
- name: Create Excalidraw Docker Container
docker_container:
name: excalidraw
image: excalidraw/excalidraw
restart_policy: unless-stopped
recreate: true
networks:
- name: homelab

27
tasks/glance.yml Normal file
View File

@@ -0,0 +1,27 @@
---
- name: Create folder structure
file:
path: "{{ item }}"
state: directory
with_items:
- "{{ data_dir }}/glance"
- "{{ data_dir }}/glance/config"
- "{{ data_dir }}/glance/assets"
- name: Create Glance Docker Container
docker_container:
name: glance
image: glanceapp/glance
restart_policy: unless-stopped
recreate: true
networks:
- name: homelab
env:
PIHOLE_TOKEN: "{{ GLANCE_PIHOLE_TOKEN }}"
VIDEO_MACHINE: "{{ GLANCE_VIDEO_MACHINE }}"
JELLYFIN_URL: "{{ GLANCE_JELLYFIN_URL }}"
JELLYFIN_TOKEN: "{{ GLANCE_JELLYFIN_TOKEN }}"
volumes:
- "{{ data_dir }}/glance/config:/app/config"
- "{{ data_dir }}/glance/assets:/app/assets"
- "/var/run/docker.sock:/var/run/docker.sock:ro"

17
tasks/homebridge.yml Normal file
View File

@@ -0,0 +1,17 @@
---
- name: Create Folder structure
file:
path: "{{ item }}"
state: directory
with_items:
- "{{ data_dir }}/homebridge"
- name: Create Homebridge Docker Container
docker_container:
name: homebridge
image: homebridge/homebridge:latest
restart_policy: unless-stopped
network_mode: host
recreate: true
volumes:
- "{{ data_dir }}/homebridge:/homebridge"

61
tasks/immich.yml Normal file
View File

@@ -0,0 +1,61 @@
---
- name: Create folder structure
file:
path: "{{ item }}"
state: directory
with_items:
- "{{ data_dir }}/immich"
- "{{ data_dir }}/immich/model-cache"
- "{{ data_dir }}/immich/db"
- name: Create Immich Redis Docker Container
docker_container:
name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:ff21bc0f8194dc9c105b769aeabf9585fea6a8ed649c0781caeac5cb3c247884
restart_policy: unless-stopped
recreate: true
networks:
- name: immich
- name: Create Immich DB Docker Container
docker_container:
name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0
restart_policy: unless-stopped
recreate: true
volumes:
- "{{ data_dir }}/immich/db:/var/lib/postgresql/data"
env:
POSTGRES_PASSWORD: "{{ IMMICH_DB_PASSWORD }}"
POSTGRES_USER: "{{ IMMICH_DB_USERNAME }}"
POSTGRES_DB: "{{ IMMICH_DB_DATABASE_NAME }}"
POSTGRES_INITDB_ARGS: "--data-checksums"
networks:
- name: immich
- name: Create Immich ML Docker Container
docker_container:
name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:release
restart_policy: unless-stopped
recreate: true
volumes:
- "{{ data_dir }}/immich/model-cache:/cache"
networks:
- name: immich
- name: Create Immich Server Docker Container
docker_container:
name: immich_server
image: ghcr.io/immich-app/immich-server:release
restart_policy: unless-stopped
recreate: true
networks:
- name: homelab
- name: immich
volumes:
- "{{ IMMICH_UPLOAD_LOCATION }}:/usr/src/app/upload"
- "/etc/localtime:/etc/localtime:ro"
env:
DOZZLE_ENABLE_ACTIONS: "{{ DOZZLE_ACTIONS }}"
DOZZLE_ENABLE_SHELL: "{{ DOZZLE_SHELL }}"

38
tasks/nextcloud.yml Normal file
View File

@@ -0,0 +1,38 @@
---
- name: Create folder structure
file:
path: "{{ item }}"
state: directory
with_items:
- "{{ data_dir }}/nextcloud"
- "{{ data_dir }}/nextcloud/data"
- "{{ data_dir }}/nextcloud/db"
- name: Create Nextcloud DB Docker Container
docker_container:
name: nc_postgresql
image: postgres:16-alpine
restart_policy: unless-stopped
recreate: true
networks:
- name: nextcloud
volumes:
- "{{ data_dir }}/nextcloud/db:/var/lib/postgresql/data"
env:
PGDATA: /var/lib/postgresql/data/pgdata
POSTGRES_PASSWORD: "{{ NEXTCLOUD_POSTGRES_PASSWORD }}"
POSTGRES_DATABASE: "{{ NEXTCLOUD_POSTGRES_DATABASE }}"
POSTGRES_USER: "{{ NEXTCLOUD_POSTGRES_USER }}"
POSTGRES_HOST: "{{ NEXTCLOUD_POSTGRES_HOST }}"
- name: Create Nextcloud Docker Container
docker_container:
name: nextcloud
image: nextcloud
restart_policy: unless-stopped
recreate: true
networks:
- name: homelab
- name: nextcloud
volumes:
- "{{ data_dir }}/nextcloud/data:/var/www/html"

25
tasks/ntfy.yml Normal file
View File

@@ -0,0 +1,25 @@
---
- name: Create folder structure
file:
path: "{{ item }}"
state: directory
with_items:
- "{{ data_dir }}/ntfy"
- "{{ data_dir }}/ntfy/cache"
- "{{ data_dir }}/ntfy/data"
- name: Create Ntfy Docker Container
docker_container:
name: ntfy
image: binwiederhier/ntfy
command: serve
restart_policy: unless-stopped
recreate: true
networks:
- name: homelab
volumes:
- "{{ data_dir }}/ntfy/cache:/var/cache/ntfy"
- "{{ data_dir }}/ntfy/data:/etc/ntfy"
env:
UPSTREAM_BASE_URL: "{{ NTFY_UPSTREAM_BASE_URL }}"
BASE_URL: "{{ NTFY_BASE_URL }}"

25
tasks/nzbget.yml Normal file
View File

@@ -0,0 +1,25 @@
---
- name: Create folder structure
file:
path: "{{ item }}"
state: directory
with_items:
- "{{ data_dir }}/nzbget"
- name: Create NZBGet Docker Container
docker_container:
name: nzbget
image: lscr.io/linuxserver/nzbget:latest
restart_policy: unless-stopped
recreate: true
networks:
- name: homelab
volumes:
- "{{ data_dir }}/nzbget:/config"
- "{{ NZBGET_DOWNLOADS_PATH }}:/downloads"
env:
NZBGET_USER: "{{ NZBGET_USER }}"
NZBGET_PASS: "{{ NZBGET_PASS }}"
TZ: "{{ TZ }}"
PUID: "{{ PUID }}"
PGID: "{{ PGID }}"

24
tasks/pihole.yml Normal file
View File

@@ -0,0 +1,24 @@
---
- name: Create folder structure
file:
path: "{{ item }}"
state: directory
with_items:
- "{{ data_dir }}/pihole"
- name: Create PiHole Docker Container
docker_container:
name: pihole
image: pihole/pihole:latest
restart_policy: unless-stopped
recreate: true
networks:
- name: homelab
published_ports:
- "{{ CADDY_HOST_IP }}:53:53/tcp"
- "{{ CADDY_HOST_IP }}:53:53/udp"
volumes:
- "{{ data_dir }}/pihole:/etc/pihole"
env:
FTLCONF_webserver_api_password: "{{ PIHOLE_FTLCONF_WEBSERVER_API_PASSWORD }}"
TZ: "{{ TZ }}"

18
tasks/pocketid.yml Normal file
View File

@@ -0,0 +1,18 @@
---
- name: Create Folder structure
file:
path: "{{ item }}"
state: directory
with_items:
- "{{ data_dir }}/pocketid"
- name: Create PocketID Docker Container
docker_container:
name: pocketid
image: ghcr.io/pocket-id/pocket-id:v1
restart_policy: unless-stopped
recreate: true
networks:
- name: homelab
volumes:
- "{{ data_dir }}/pocketid:/app/data"

63
tasks/romm.yml Normal file
View File

@@ -0,0 +1,63 @@
---
- name: Create folder structure
file:
path: "{{ item }}"
state: directory
with_items:
- "{{ data_dir }}/romm"
- "{{ data_dir }}/romm/igdb"
- "{{ data_dir }}/romm/assets"
- "{{ data_dir }}/romm/config"
- "{{ data_dir }}/romm/db"
- name: Create Romm DB Docker Container
docker_container:
name: romm-db
image: mariadb:latest
restart_policy: unless-stopped
recreate: true
networks:
- name: romm
volumes:
- "{{ data_dir }}/romm/db:/var/lib/mysql"
env:
MARIADB_ROOT_PASSWORD: romm
MARIADB_DATABASE: romm
MARIADB_USER: romm-user
MARIADB_PASSWORD: romm
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
start_period: 30s
interval: 10s
timeout: 5s
retries: 5
- name: Create Romm Docker Container
docker_container:
name: romm
image: rommapp/romm:latest
restart_policy: unless-stopped
recreate: true
networks:
- name: homelab
- name: romm
volumes:
- "{{ data_dir }}/romm/igdb:/romm/resources"
- "{{ data_dir }}/romm/redis:/redis-data"
- "{{ data_dir }}/romm/assets:/romm/assets"
- "{{ data_dir }}/romm/config:/romm/config"
- "{{ ROMM_LIBRARY_PATH }}:/romm/library"
env:
DB_HOST: romm-db
DB_NAME: romm
DB_USER: romm-user
DB_PASSWD: romm
AUTH_SECRET_KEY: "{{ ROMM_AUTH_SECRET_KEY }}"
IGDB_CLIENT_ID: "{{ ROMM_IGDB_CLIENT_ID }}"
IGDB_CLIENT_SECRET: "{{ ROMM_IGDB_CLIENT_SECRET }}"
OIDC_ENABLED: "{{ ROMM_OIDC_ENABLED }}"
OIDC_PROVIDER: "{{ ROMM_OIDC_PROVIDER }}"
OIDC_CLIENT_ID: "{{ ROMM_OIDC_CLIENT_ID }}"
OIDC_CLIENT_SECRET: "{{ ROMM_OIDC_CLIENT_SECRET }}"
OIDC_REDIRECT_URL: "{{ ROMM_OIDC_REDIRECT_URL }}"
SERVER_APPLICATION_URL: "{{ ROMM_SERVER_APPLICATION_URL }}"

49
tasks/servarr.yml Normal file
View File

@@ -0,0 +1,49 @@
---
- name: Create folder structure
file:
path: "{{ item }}"
state: directory
with_items:
- "{{ data_dir }}/servarr"
- "{{ data_dir }}/servarr/sonarr_config"
- "{{ data_dir }}/servarr/radarr_config"
- "{{ data_dir }}/servarr/lidarr_config"
- name: Deploy Radarr Container
docker_container:
name: radarr
image: ghcr.io/hotio/radarr
restart_policy: unless-stopped
recreate: true
volumes:
- "{{ data_dir }}/servarr/radarr_config:/config"
- "{{ SERVARR_MEDIA_PATH }}:/media"
- "{{ NZBGET_DOWNLOADS_PATH }}:/downloads"
networks:
- name: homelab
- name: Deploy Sonarr Container
docker_container:
name: sonarr
image: lscr.io/linuxserver/sonarr:latest
restart_policy: unless-stopped
recreate: true
volumes:
- "{{ data_dir }}/servarr/sonarr_config:/config"
- "{{ SERVARR_MEDIA_PATH }}:/media"
- "{{ NZBGET_DOWNLOADS_PATH }}:/downloads"
networks:
- name: homelab
- name: Deploy Lidarr Container
docker_container:
name: lidarr
image: ghcr.io/hotio/lidarr
restart_policy: unless-stopped
recreate: true
volumes:
- "{{ data_dir }}/servarr/lidarr_config:/config"
- "{{ SERVARR_MEDIA_PATH }}:/media"
- "{{ NZBGET_DOWNLOADS_PATH }}:/downloads"
networks:
- name: homelab

22
tasks/tautulli.yml Normal file
View File

@@ -0,0 +1,22 @@
---
- name: Create folder structure
file:
path: "{{ item }}"
state: directory
with_items:
- "{{ data_dir }}/tautulli"
- name: Create Tautulli Docker Container
docker_container:
name: tautulli
image: ghcr.io/tautulli/tautulli
restart_policy: unless-stopped
recreate: true
networks:
- name: homelab
volumes:
- "{{ data_dir }}/tautulli:/config"
env:
PUID: "{{ PUID }}"
PGID: "{{ PGID }}"
TZ: "{{ TZ }}"

23
tasks/tinyauth.yml Normal file
View File

@@ -0,0 +1,23 @@
---
- name: Create Tinyauth Docker Container
docker_container:
name: tinyauth
image: ghcr.io/steveiliop56/tinyauth:v3
restart_policy: unless-stopped
recreate: true
networks:
- name: homelab
env:
USERS: "{{ TINYAUTH_USERS }}"
SECRET: "{{ TINYAUTH_SECRET }}"
APP_URL: "{{ TINYAUTH_APP_URL }}"
GENERIC_CLIENT_ID: "{{ TINYAUTH_GENERIC_CLIENT_ID }}"
GENERIC_CLIENT_SECRET: "{{ TINYAUTH_GENERIC_CLIENT_SECRET }}"
GENERIC_AUTH_URL: "{{ TINYAUTH_GENERIC_AUTH_URL }}"
GENERIC_TOKEN_URL: "{{ TINYAUTH_GENERIC_TOKEN_URL }}"
GENERIC_USER_URL: "{{ TINYAUTH_GENERIC_USER_URL }}"
GENERIC_SCOPES: "{{ TINYAUTH_GENERIC_SCOPES }}"
GENERIC_NAME: "{{ TINYAUTH_GENERIC_NAME }}"
OAUTH_WHITELIST: "{{ TINYAUTH_OAUTH_WHITELIST }}"
APP_TITLE: "{{ TINYAUTH_APP_TITLE }}"
BACKGROUND_IMAGE: "{{ TINYAUTH_BACKGROUND_IMAGE }}"

20
tasks/vaultwarden.yml Normal file
View File

@@ -0,0 +1,20 @@
---
- name: Create folder structure
file:
path: "{{ item }}"
state: directory
with_items:
- "{{ data_dir }}/vaultwarden"
- name: Create Vaultwarden Docker Container
docker_container:
name: vaultwarden
image: vaultwarden/server:latest
restart_policy: unless-stopped
recreate: true
networks:
- name: homelab
volumes:
- "{{ data_dir }}/vaultwarden:/data"
env:
DOMAIN: "{{ VAULTWARDEN_DOMAIN }}"