feat: add ArrStack and Downloaders services with deployment configurations
Some checks failed
Ansible Lint Check / check-ansible (push) Failing after 13s
Nix Format Check / check-format (push) Successful in 51s
Python Lint Check / check-python (push) Failing after 10s

This commit is contained in:
Menno van Leeuwen 2025-03-25 13:43:02 +01:00
parent 56b056252c
commit 8087eb6814
Signed by: vleeuwenmenno
SSH Key Fingerprint: SHA256:OJFmjANpakwD3F2Rsws4GLtbdz1TJ5tkQF0RZmF0TRE
8 changed files with 275 additions and 15 deletions

View File

@ -39,3 +39,7 @@
enabled: true
- name: beszel
enabled: true
- name: arr-stack
enabled: true
- name: downloaders
enabled: true

View File

@ -0,0 +1,34 @@
---
- name: Deploy ArrStack service
block:
- name: Set ArrStack directories
ansible.builtin.set_fact:
arr_stack_data_dir: "{{ ansible_env.HOME }}/services/arr-stack"
arr_stack_data_dir: "/mnt/object_storage/services/arr-stack"
- name: Create ArrStack directory
ansible.builtin.file:
path: "{{ arr_stack_data_dir }}"
state: directory
mode: "0755"
- name: Create ArrStack data directory
ansible.builtin.file:
path: "{{ arr_stack_data_dir }}"
state: directory
mode: "0755"
- name: Deploy ArrStack docker-compose.yml
ansible.builtin.template:
src: docker-compose.yml.j2
dest: "{{ arr_stack_data_dir }}/docker-compose.yml"
mode: "0644"
register: arr-stack_compose
- name: Stop ArrStack service
ansible.builtin.command: docker compose -f "{{ arr_stack_data_dir }}/docker-compose.yml" down --remove-orphans
when: arr-stack_compose.changed
- name: Start ArrStack service
ansible.builtin.command: docker compose -f "{{ arr_stack_data_dir }}/docker-compose.yml" up -d
when: arr-stack_compose.changed

View File

@ -0,0 +1,111 @@
name: arr-stack
services:
radarr:
container_name: radarr
image: lscr.io/linuxserver/radarr:latest
environment:
- PUID=1000
- PGID=100
- TZ=Europe/Amsterdam
ports:
- 7878:7878
extra_hosts:
- host.docker.internal:host-gateway
volumes:
- {{ arr_stack_data_dir }}/radarr-config:/config
- /mnt/object_storage:/storage
restart: "unless-stopped"
networks:
- arr-stack-net
sonarr:
image: linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=1000
- PGID=100
- TZ=Europe/Amsterdam
volumes:
- {{ arr_stack_data_dir }}/sonarr-config:/config
- /mnt/object_storage:/storage
ports:
- 8989:8989
extra_hosts:
- host.docker.internal:host-gateway
restart: unless-stopped
networks:
- arr-stack-net
lidarr:
image: linuxserver/lidarr:latest
environment:
- PUID=1000
- PGID=100
- TZ=Europe/Amsterdam
ports:
- 8686:8686
extra_hosts:
- host.docker.internal:host-gateway
volumes:
- {{ arr_stack_data_dir }}/lidarr-config:/config
- /mnt/object_storage:/storage
restart: unless-stopped
networks:
- arr-stack-net
prowlarr:
container_name: prowlarr
image: linuxserver/prowlarr:latest
environment:
- PUID=1000
- PGID=100
- TZ=Europe/Amsterdam
volumes:
- {{ arr_stack_data_dir }}/prowlarr-config:/config
extra_hosts:
- host.docker.internal:host-gateway
ports:
- 9696:9696
restart: unless-stopped
networks:
- arr-stack-net
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
environment:
- LOG_LEVEL=${LOG_LEVEL:-info}
- LOG_HTML=${LOG_HTML:-false}
- CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none}
- TZ=Europe/Amsterdam
ports:
- "8191:8191"
extra_hosts:
- host.docker.internal:host-gateway
restart: unless-stopped
networks:
- arr-stack-net
overseerr:
image: lscr.io/linuxserver/overseerr:latest
container_name: overseerr
environment:
- PUID=1000
- PGID=100
- TZ=Europe/Amsterdam
volumes:
- {{ arr_stack_data_dir }}/overseerr-config:/config
ports:
- 5055:5055
extra_hosts:
- host.docker.internal:host-gateway
restart: unless-stopped
networks:
- arr-stack-net
- caddy_network
networks:
arr-stack-net:
caddy_network:
external: true
name: caddy_default

View File

@ -13,11 +13,6 @@ git.vleeuwen.me git.mvl.sh {
tls {{ caddy_email }}
}
jf.vleeuwen.me jf.mvl.sh {
reverse_proxy jellyfin:8096
tls {{ caddy_email }}
}
status.vleeuwen.me status.mvl.sh {
reverse_proxy uptime-kuma:3001
tls {{ caddy_email }}
@ -52,3 +47,18 @@ df.mvl.sh {
redir / https://git.mvl.sh/vleeuwenmenno/dotfiles/raw/branch/master/setup.sh
tls {{ caddy_email }}
}
overseerr.mvl.sh {
reverse_proxy overseerr:5055
tls {{ caddy_email }}
}
jellyfin.mvl.sh jellyfin.vleeuwen.me jf.vleeuwen.me jf.mvl.sh {
reverse_proxy jellyfin:8096
tls {{ caddy_email }}
}
fladder.mvl.sh {
reverse_proxy fladder:80
tls {{ caddy_email }}
}

View File

@ -0,0 +1,62 @@
name: downloaders
services:
gluetun:
image: qmcgaw/gluetun:latest
privileged: true
cap_add:
- NET_ADMIN
networks:
- shared_network
ports:
- 6881:6881
- 6881:6881/udp
- 8085:8085
- 7788:8080
devices:
- /dev/net/tun:/dev/net/tun
volumes:
- {{ downloaders_data_dir }}/gluetun-config:/gluetun
environment:
- PUID=1000
- PGID=100
- VPN_SERVICE_PROVIDER={{ lookup('community.general.onepassword', 'qm7lxjrv2ctgzsjuwtolxpd5i4', vault='j7nmhqlsjmp2r6umly5t75hzb4', field='VPN_SERVICE_PROVIDER') }}
- OPENVPN_USER={{ lookup('community.general.onepassword', 'qm7lxjrv2ctgzsjuwtolxpd5i4', vault='j7nmhqlsjmp2r6umly5t75hzb4', field='OPENVPN_USER') }}
- OPENVPN_PASSWORD={{ lookup('community.general.onepassword', 'qm7lxjrv2ctgzsjuwtolxpd5i4', vault='j7nmhqlsjmp2r6umly5t75hzb4', field='OPENVPN_PASSWORD') }}
- SERVER_COUNTRIES={{ lookup('community.general.onepassword', 'qm7lxjrv2ctgzsjuwtolxpd5i4', vault='j7nmhqlsjmp2r6umly5t75hzb4', field='SERVER_COUNTRIES') }}
restart: always
sabnzbd:
image: lscr.io/linuxserver/sabnzbd:latest
container_name: sabnzbd
environment:
- PUID=1000
- PGID=100
- TZ=Europe/Amsterdam
volumes:
- {{ downloaders_data_dir }}/sabnzbd-config:/config
- /mnt/object_storage:/storage
restart: unless-stopped
network_mode: "service:gluetun"
depends_on:
gluetun:
condition: service_healthy
qbittorrent:
image: lscr.io/linuxserver/qbittorrent
environment:
- PUID=1000
- PGID=100
- WEBUI_PORT=8085
- TZ=Europe/Amsterdam
volumes:
- {{ downloaders_data_dir }}/qbit-config:/config
- /mnt/object_storage:/storage
restart: always
network_mode: "service:gluetun"
depends_on:
gluetun:
condition: service_healthy
networks:
shared_network:
external: true

View File

@ -0,0 +1,27 @@
---
- name: Deploy Downloaders service
block:
- name: Set Downloaders directories
ansible.builtin.set_fact:
downloaders_data_dir: "{{ ansible_env.HOME }}/services/downloaders"
- name: Create Downloaders directory
ansible.builtin.file:
path: "{{ downloaders_data_dir }}"
state: directory
mode: "0755"
- name: Deploy Downloaders docker-compose.yml
ansible.builtin.template:
src: docker-compose.yml.j2
dest: "{{ downloaders_data_dir }}/docker-compose.yml"
mode: "0644"
register: downloaders_compose
- name: Stop Downloaders service
ansible.builtin.command: docker compose -f "{{ downloaders_data_dir }}/docker-compose.yml" down --remove-orphans
when: downloaders_compose.changed
- name: Start Downloaders service
ansible.builtin.command: docker compose -f "{{ downloaders_data_dir }}/docker-compose.yml" up -d
when: downloaders_compose.changed

View File

@ -6,7 +6,7 @@ services:
- PUID=1000
- PGID=100
- TZ=Europe/Amsterdam
- JELLYFIN_PublishedServerUrl=https://jellyfin.vleeuwen.me
- JELLYFIN_PublishedServerUrl=https://jellyfin.mvl.sh
volumes:
- {{jellyfin_data_dir}}/jellyfin-config:/config
- /mnt/object_storage/movies:/movies
@ -24,6 +24,18 @@ services:
networks:
- caddy_network
fladder:
image: ghcr.io/donutware/fladder:latest
ports:
- 5423:80
environment:
- PUID=1000
- PGID=100
- TZ=Europe/Amsterdam
- BASE_URL=https://fladder.mvl.sh
networks:
- caddy_network
networks:
caddy_network:
external: true

View File

@ -7,11 +7,11 @@
]
},
"locked": {
"lastModified": 1742234739,
"narHash": "sha256-zFL6zsf/5OztR1NSNQF33dvS1fL/BzVUjabZq4qrtY4=",
"lastModified": 1742655702,
"narHash": "sha256-jbqlw4sPArFtNtA1s3kLg7/A4fzP4GLk9bGbtUJg0JQ=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "f6af7280a3390e65c2ad8fd059cdc303426cbd59",
"rev": "0948aeedc296f964140d9429223c7e4a0702a1ff",
"type": "github"
},
"original": {
@ -23,11 +23,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1742268799,
"narHash": "sha256-IhnK4LhkBlf14/F8THvUy3xi/TxSQkp9hikfDZRD4Ic=",
"lastModified": 1742751704,
"narHash": "sha256-rBfc+H1dDBUQ2mgVITMGBPI1PGuCznf9rcWX/XIULyE=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "da044451c6a70518db5b730fe277b70f494188f1",
"rev": "f0946fa5f1fb876a9dc2e1850d9d3a4e3f914092",
"type": "github"
},
"original": {
@ -39,11 +39,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1742288794,
"narHash": "sha256-Txwa5uO+qpQXrNG4eumPSD+hHzzYi/CdaM80M9XRLCo=",
"lastModified": 1742669843,
"narHash": "sha256-G5n+FOXLXcRx+3hCJ6Rt6ZQyF1zqQ0DL0sWAMn2Nk0w=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "b6eaf97c6960d97350c584de1b6dcff03c9daf42",
"rev": "1e5b653dff12029333a6546c11e108ede13052eb",
"type": "github"
},
"original": {