init commit
This commit is contained in:
25
tasks/codeserver.yml
Normal file
25
tasks/codeserver.yml
Normal 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
12
tasks/cup.yml
Normal 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
11
tasks/dashdot.yml
Normal 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
14
tasks/dozzle.yml
Normal 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
9
tasks/excalidraw.yml
Normal 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
27
tasks/glance.yml
Normal 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
17
tasks/homebridge.yml
Normal 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
61
tasks/immich.yml
Normal 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
38
tasks/nextcloud.yml
Normal 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
25
tasks/ntfy.yml
Normal 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
25
tasks/nzbget.yml
Normal 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
24
tasks/pihole.yml
Normal 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
18
tasks/pocketid.yml
Normal 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
63
tasks/romm.yml
Normal 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
49
tasks/servarr.yml
Normal 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
22
tasks/tautulli.yml
Normal 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
23
tasks/tinyauth.yml
Normal 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
20
tasks/vaultwarden.yml
Normal 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 }}"
|
Reference in New Issue
Block a user