@@ -0,0 +1,40 @@
|
||||
---
|
||||
- name: Deploy AudioBookshelf
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: audiobookshelf_abs
|
||||
network_name: "abs"
|
||||
directories:
|
||||
- "{{ data_dir }}/audiobookshelf"
|
||||
- "{{ data_dir }}/audiobookshelf/config"
|
||||
- "{{ data_dir }}/audiobookshelf/metadata"
|
||||
image:
|
||||
name: ghcr.io/advplyr/audiobookshelf
|
||||
tag: latest
|
||||
networks:
|
||||
- name: homelab
|
||||
- name: abs
|
||||
volumes:
|
||||
- "{{ media_path }}/Books/Audiobooks:/audiobooks"
|
||||
- "{{ data_dir }}/audiobookshelf/config:/config"
|
||||
- "{{ data_dir }}/audiobookshelf/metadata:/metadata"
|
||||
env:
|
||||
TZ: "{{ TZ }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.audiobookshelf.rule: Host(`abooks.fntz.net`)
|
||||
traefik.http.routers.audiobookshelf.entrypoints: webSecure
|
||||
traefik.http.routers.audiobookshelf.tls.certresolver: letsencrypt
|
||||
traefik.http.services.audiobookshelf.loadbalancer.server.port: "80"
|
||||
|
||||
- name: Deploy abs-tract
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: audiobookshelf_abs-tract
|
||||
image:
|
||||
name: arranhs/abs-tract
|
||||
tag: latest
|
||||
networks:
|
||||
- name: "abs"
|
||||
@@ -0,0 +1,26 @@
|
||||
---
|
||||
- name: Deploy Ersatz
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: ersatztv
|
||||
directories:
|
||||
- "{{ data_dir }}/ersatz"
|
||||
image:
|
||||
name: ghcr.io/ersatztv/ersatztv
|
||||
tag: latest
|
||||
networks:
|
||||
- name: homelab
|
||||
published_ports:
|
||||
- "8409:8409"
|
||||
volumes:
|
||||
- "{{ data_dir }}/ersatz:/config"
|
||||
- "{{ media_path }}:/media"
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.iptv.rule: Host(`iptv.fntz.net`)
|
||||
traefik.http.routers.iptv.entrypoints: webSecure
|
||||
traefik.http.routers.iptv.tls.certresolver: letsencrypt
|
||||
traefik.http.services.iptv.loadbalancer.server.port: "8409"
|
||||
@@ -0,0 +1,29 @@
|
||||
---
|
||||
- name: Deploy Frigate
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: frigate
|
||||
directories:
|
||||
- "{{ data_dir }}/frigate"
|
||||
image:
|
||||
name: ghcr.io/blakeblackshear/frigate
|
||||
tag: stable
|
||||
privileged: true
|
||||
devices:
|
||||
- /dev/dri
|
||||
- /dev/kfd
|
||||
networks:
|
||||
- name: "{{ docker_network_name }}"
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- "{{ data_dir }}/frigate:/config"
|
||||
- "{{ media_path }}/Cameras:/media/frigate"
|
||||
env:
|
||||
LIBVA_DRIVER_NAME: radeonsi
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.frigate.rule: Host(`nvr.fntz.net`)
|
||||
traefik.http.routers.frigate.entrypoints: webSecure
|
||||
traefik.http.routers.frigate.tls.certresolver: letsencrypt
|
||||
traefik.http.services.frigate.loadbalancer.server.port: "5000"
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
- name: Deploy Immich DB
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: immich_postgres
|
||||
directories:
|
||||
- "{{ data_dir }}/immich"
|
||||
- "{{ data_dir }}/immich/model-cache"
|
||||
- "{{ data_dir }}/immich/db"
|
||||
image:
|
||||
name: ghcr.io/immich-app/postgres
|
||||
tag: 14-vectorchord0.4.3-pgvectors0.2.0
|
||||
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
|
||||
network_name: immich
|
||||
- name: Deploy Immich Redis
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: immich_redis
|
||||
image:
|
||||
name: docker.io/valkey/valkey
|
||||
tag: 8-bookworm
|
||||
networks:
|
||||
- name: immich
|
||||
- name: Deploy Immich Server
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: immich
|
||||
image:
|
||||
name: ghcr.io/immich-app/immich-server
|
||||
tag: v2.7.5
|
||||
networks:
|
||||
- name: homelab
|
||||
- name: immich
|
||||
volumes:
|
||||
- "{{ IMMICH_UPLOAD_LOCATION }}:/usr/src/app/upload"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
env:
|
||||
PUID: "{{ PUID }}"
|
||||
PGID: "{{ PGID }}"
|
||||
DB_HOSTNAME: "immich_postgres"
|
||||
REDIS_HOSTNAME: "immich_redis"
|
||||
DB_PASSWORD: "{{ IMMICH_DB_PASSWORD }}"
|
||||
DB_USERNAME: "{{ IMMICH_DB_USERNAME }}"
|
||||
DB_DATABASE_NAME: "{{ IMMICH_DB_DATABASE_NAME }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.img.rule: Host(`img.fntz.net`)
|
||||
traefik.http.routers.img.entrypoints: webSecure
|
||||
traefik.http.routers.img.tls.certresolver: letsencrypt
|
||||
traefik.http.services.img.loadbalancer.server.port: "2283"
|
||||
@@ -0,0 +1,29 @@
|
||||
---
|
||||
- name: Deploy NZBGet
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: nzbget
|
||||
directories:
|
||||
- "{{ data_dir }}/nzbget"
|
||||
image:
|
||||
name: lscr.io/linuxserver/nzbget
|
||||
tag: latest
|
||||
networks:
|
||||
- name: homelab
|
||||
volumes:
|
||||
- "{{ data_dir }}/nzbget:/config"
|
||||
- "{{ media_path }}/Downloads:/downloads"
|
||||
env:
|
||||
NZBGET_USER: "{{ NZBGET_USER }}"
|
||||
NZBGET_PASS: "{{ NZBGET_PASS }}"
|
||||
TZ: "{{ TZ }}"
|
||||
PUID: "1000"
|
||||
PGID: "1000"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.nzb.rule: Host(`nzb.fntz.net`)
|
||||
traefik.http.routers.nzb.entrypoints: webSecure
|
||||
traefik.http.routers.nzb.tls.certresolver: letsencrypt
|
||||
traefik.http.services.nzb.loadbalancer.server.port: "6789"
|
||||
traefik.http.routers.nzb.middlewares: tinyauth
|
||||
@@ -0,0 +1,28 @@
|
||||
---
|
||||
- name: Deploy Plex
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: plex
|
||||
image:
|
||||
name: lscr.io/linuxserver/plex
|
||||
tag: latest
|
||||
networks:
|
||||
- name: homelab
|
||||
devices:
|
||||
- /dev/dri:/dev/dri
|
||||
env:
|
||||
PUID: "1000"
|
||||
PGID: "1000"
|
||||
TZ: "{{ TZ }}"
|
||||
VERSION: "docker"
|
||||
PLEX_CLAIM: "{{ PLEX_CLAIM_TOKEN }}"
|
||||
volumes:
|
||||
- "{{ data_dir }}/plex:/config"
|
||||
- "{{ media_path }}:/media"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.plex.rule: Host(`tv.fntz.net`)
|
||||
traefik.http.routers.plex.entrypoints: webSecure
|
||||
traefik.http.routers.plex.tls.certresolver: letsencrypt
|
||||
traefik.http.services.plex.loadbalancer.server.port: "32400"
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
- name: Create folder structure
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- "{{ data_dir }}/scrobbling"
|
||||
- "{{ data_dir }}/scrobbling/koito"
|
||||
- "{{ data_dir }}/scrobbling/multi-scrobbler"
|
||||
|
||||
- name: Create Scrobbler Configuration
|
||||
template:
|
||||
src: templates/scrobbling/lastfm.json.j2
|
||||
dest: "{{ data_dir }}/scrobbling/multi-scrobbler/lastfm.json"
|
||||
|
||||
- name: Deploy Kotio
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: scrobbling_koito
|
||||
network_name: scrobbling
|
||||
networks:
|
||||
- name: scrobbling
|
||||
- name: homelab
|
||||
image:
|
||||
name: gabehf/koito
|
||||
tag: latest
|
||||
env:
|
||||
KOITO_ALLOWED_HOSTS: koito.fntz.net
|
||||
volumes:
|
||||
- "{{ data_dir }}/scrobbling/koito:/etc/koito"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.kotio.rule: Host(`koito.fntz.net`)
|
||||
traefik.http.routers.kotio.entrypoints: webSecure
|
||||
traefik.http.routers.kotio.tls.certresolver: letsencrypt
|
||||
traefik.http.services.kotio.loadbalancer.server.port: "4110"
|
||||
|
||||
- name: Deploy Multi-Scrobbler
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: scrobbling_multi-scrobbler
|
||||
image:
|
||||
name: ghcr.io/foxxmd/multi-scrobbler
|
||||
tag: latest
|
||||
networks:
|
||||
- name: scrobbling
|
||||
- name: homelab
|
||||
volumes:
|
||||
- "{{ data_dir }}/scrobbling/multi-scrobbler:/config"
|
||||
env:
|
||||
KOITO_TOKEN: "{{ SCROBBLER_KOITO_TOKEN }}"
|
||||
KOITO_USER: "{{ SCROBBLER_KOITO_USER }}"
|
||||
KOITO_URL: "{{ SCROBBLER_KOITO_URL }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.scrobbler.rule: Host(`scrobbler.fntz.net`)
|
||||
traefik.http.routers.scrobbler.entrypoints: webSecure
|
||||
traefik.http.routers.scrobbler.tls.certresolver: letsencrypt
|
||||
traefik.http.services.scrobbler.loadbalancer.server.port: "9078"
|
||||
@@ -0,0 +1,56 @@
|
||||
# need to redeploy
|
||||
---
|
||||
- name: Deploy Radarr
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: servarr_radarr
|
||||
directories:
|
||||
- "{{ data_dir }}/servarr"
|
||||
- "{{ data_dir }}/servarr/sonarr_config"
|
||||
- "{{ data_dir }}/servarr/radarr_config"
|
||||
- "{{ data_dir }}/servarr/lidarr_config"
|
||||
image:
|
||||
name: lscr.io/linuxserver/radarr
|
||||
tag: latest
|
||||
volumes:
|
||||
- "{{ data_dir }}/servarr/radarr_config:/config"
|
||||
- "{{ media_path }}:/media"
|
||||
- "{{ media_path }}/Downloads:/downloads"
|
||||
networks:
|
||||
- name: homelab
|
||||
env:
|
||||
PUID: "1000"
|
||||
PGID: "1000"
|
||||
TZ: "{{ TZ }}"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.radarr.rule: Host(`radarr.fntz.net`)
|
||||
traefik.http.routers.radarr.entrypoints: webSecure
|
||||
traefik.http.routers.radarr.tls.certresolver: letsencrypt
|
||||
traefik.http.services.radarr.loadbalancer.server.port: "7878"
|
||||
|
||||
- name: Deploy Sonarr
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: servarr_sonarr
|
||||
image:
|
||||
name: lscr.io/linuxserver/sonarr
|
||||
tag: latest
|
||||
volumes:
|
||||
- "{{ data_dir }}/servarr/sonarr_config:/config"
|
||||
- "{{ media_path }}:/data"
|
||||
- "{{ media_path }}/Downloads:/downloads"
|
||||
env:
|
||||
PUID: "1000"
|
||||
PGID: "1000"
|
||||
TZ: "{{ TZ }}"
|
||||
networks:
|
||||
- name: homelab
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.sonarr.rule: Host(`sonarr.fntz.net`)
|
||||
traefik.http.routers.sonarr.entrypoints: webSecure
|
||||
traefik.http.routers.sonarr.tls.certresolver: letsencrypt
|
||||
traefik.http.services.sonarr.loadbalancer.server.port: "8989"
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
- name: Deploy Weatherstar
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: weatherstar
|
||||
image:
|
||||
name: ghcr.io/netbymatt/ws4kp
|
||||
tag: latest
|
||||
networks:
|
||||
- name: homelab
|
||||
env:
|
||||
TZ: "{{ TZ }}"
|
||||
WSQS_latLonQuery: "Batavia, New York, USA"
|
||||
WSQS_hazards_checkbox: "true"
|
||||
WSQS_current_weather_checkbox: "true"
|
||||
WSQS_settings_mediaVolume_select: "0.75"
|
||||
WSQS_settings_scanLineMode_select: "thin"
|
||||
WSQS_settings_mediaPlaying_boolean: "true"
|
||||
WSQS_settings_wide_checkbox: "true"
|
||||
labels:
|
||||
traefik.enable: "true"
|
||||
traefik.http.routers.weatherstar.rule: Host(`weatherstar.fntz.net`)
|
||||
traefik.http.routers.weatherstar.entrypoints: webSecure
|
||||
traefik.http.routers.weatherstar.tls.certresolver: letsencrypt
|
||||
traefik.http.services.weatherstar.loadbalancer.server.port: "8080"
|
||||
|
||||
- name: Deploy WS4Channels
|
||||
include_role:
|
||||
name: docker
|
||||
vars:
|
||||
name: weatherstar_ws4channels
|
||||
image:
|
||||
name: ghcr.io/rice9797/ws4channels
|
||||
tag: latest
|
||||
networks:
|
||||
- name: homelab
|
||||
env:
|
||||
WS4KP_HOST: "weatherstar"
|
||||
WS4KP_PORT: "8080"
|
||||
ZIP_CODE: "14020"
|
||||
published_ports:
|
||||
- "9798:9798"
|
||||
Reference in New Issue
Block a user