Compare commits
8 commits
40670b8953
...
547ab91972
| Author | SHA1 | Date | |
|---|---|---|---|
| 547ab91972 | |||
| 2b05fc7363 | |||
| 12e48b17b7 | |||
| 30f068fd7a | |||
| 5d69d45b97 | |||
| 38ca54a027 | |||
| 208cecd5ef | |||
| 8137b68676 |
9 changed files with 115 additions and 4 deletions
|
|
@ -8,6 +8,8 @@ arrstack_lidarr_subdomain: "{{ arrstack_protocol }}lidarr.{{ domain | default('e
|
||||||
arrstack_readarr_subdomain: "{{ arrstack_protocol }}readarr.{{ domain | default('example.org') }}"
|
arrstack_readarr_subdomain: "{{ arrstack_protocol }}readarr.{{ domain | default('example.org') }}"
|
||||||
arrstack_prowlarr_subdomain: "{{ arrstack_protocol }}prowlarr.{{ domain | default('example.org') }}"
|
arrstack_prowlarr_subdomain: "{{ arrstack_protocol }}prowlarr.{{ domain | default('example.org') }}"
|
||||||
arrstack_beets_subdomain: "{{ arrstack_protocol }}beets.{{ domain | default('example.org') }}"
|
arrstack_beets_subdomain: "{{ arrstack_protocol }}beets.{{ domain | default('example.org') }}"
|
||||||
|
arrstack_tdarr_subdomain: "{{ arrstack_protocol }}tdarr.{{ domain | default('example.org') }}"
|
||||||
|
arrstack_bazarr_subdomain: "{{ arrstack_protocol }}bazarr.{{ domain | default('example.org') }}"
|
||||||
arrstack_sabnzbd_subdomain: "{{ arrstack_protocol }}usenet.{{ domain | default('example.org') }}"
|
arrstack_sabnzbd_subdomain: "{{ arrstack_protocol }}usenet.{{ domain | default('example.org') }}"
|
||||||
arrstack_qbit_subdomain: "{{ arrstack_protocol }}torrent.{{ domain | default('example.org') }}"
|
arrstack_qbit_subdomain: "{{ arrstack_protocol }}torrent.{{ domain | default('example.org') }}"
|
||||||
arrstack_jellyseerr_subdomain: "{{ arrstack_protocol }}get.{{ domain | default('example.org') }}"
|
arrstack_jellyseerr_subdomain: "{{ arrstack_protocol }}get.{{ domain | default('example.org') }}"
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
loop:
|
loop:
|
||||||
- ""
|
- ""
|
||||||
- files
|
- files
|
||||||
- files/torrents
|
- files/torrent
|
||||||
- files/usenet
|
- files/usenet
|
||||||
- media
|
- media
|
||||||
- media/tv
|
- media/tv
|
||||||
|
|
|
||||||
|
|
@ -122,6 +122,60 @@ services:
|
||||||
caddy: "{{ arrstack_beets_subdomain }}"
|
caddy: "{{ arrstack_beets_subdomain }}"
|
||||||
caddy.reverse_proxy: "{{ '{{' }}upstreams 8337{{ '}}'}}"
|
caddy.reverse_proxy: "{{ '{{' }}upstreams 8337{{ '}}'}}"
|
||||||
|
|
||||||
|
tdarr:
|
||||||
|
image: ghcr.io/haveagitgat/tdarr
|
||||||
|
container_name: tdarr
|
||||||
|
networks:
|
||||||
|
- caddy
|
||||||
|
group_add:
|
||||||
|
- video # video
|
||||||
|
# - render # render NOTE: Would have to be added for e.g. Ubuntu 20+ afaik
|
||||||
|
environment:
|
||||||
|
- PUID={{ arrstack_puid }}
|
||||||
|
- PGID={{ arrstack_pgid }}
|
||||||
|
- TZ={{ arrstack_tz }}
|
||||||
|
- UMASK_SET={{ arrstack_umask_set }}
|
||||||
|
- serverIP=0.0.0.0
|
||||||
|
- serverPort=8266
|
||||||
|
- webUIPort=8265
|
||||||
|
- internalNode=true
|
||||||
|
- inContainer=true
|
||||||
|
- ffmpegVersion=7
|
||||||
|
- auth=false
|
||||||
|
- maxLogSizeMB=10
|
||||||
|
volumes:
|
||||||
|
- "{{ arrstack_env_dir }}/config/tdarr:/app/configs"
|
||||||
|
- "{{ arrstack_env_dir }}/data/tdarr:/app/server"
|
||||||
|
- "{{ arrstack_serve_dir }}/media/tv:/media/tv"
|
||||||
|
- "/mnt/ext/data/media/movies:/media/movies" # FIXME: To be changed?
|
||||||
|
- "/transcodes:/transcodes" # TODO: Implement dynamic form with variable?
|
||||||
|
restart: unless-stopped
|
||||||
|
devices:
|
||||||
|
- /dev/dri:/dev/dri
|
||||||
|
labels:
|
||||||
|
caddy: "{{ arrstack_tdarr_subdomain }}"
|
||||||
|
caddy.reverse_proxy: "{{ '{{' }}upstreams 8265{{ '}}'}}"
|
||||||
|
|
||||||
|
bazarr:
|
||||||
|
image: lscr.io/linuxserver/bazarr:latest
|
||||||
|
container_name: bazarr
|
||||||
|
networks:
|
||||||
|
- caddy
|
||||||
|
environment:
|
||||||
|
- PUID={{ arrstack_puid }}
|
||||||
|
- PGID={{ arrstack_pgid }}
|
||||||
|
- TZ={{ arrstack_tz }}
|
||||||
|
volumes:
|
||||||
|
- "{{ arrstack_env_dir }}/config/sabnzbd:/config"
|
||||||
|
- "{{ arrstack_serve_dir }}/media/tv:/data/media/tv"
|
||||||
|
- "/mnt/ext/data/media/movies:/data/media/movies" # FIXME: To be changed?
|
||||||
|
ports:
|
||||||
|
- 6767:6767
|
||||||
|
restart: unless-stopped
|
||||||
|
labels:
|
||||||
|
caddy: "{{ arrstack_bazarr_subdomain }}"
|
||||||
|
caddy.reverse_proxy: "{{ '{{' }}upstreams 6767{{ '}}'}}"
|
||||||
|
|
||||||
sabnzbd:
|
sabnzbd:
|
||||||
container_name: sabnzbd
|
container_name: sabnzbd
|
||||||
image: lscr.io/linuxserver/sabnzbd:latest
|
image: lscr.io/linuxserver/sabnzbd:latest
|
||||||
|
|
@ -156,7 +210,9 @@ services:
|
||||||
- VPN_SERVICE_PROVIDER={{ arrstack_vpn_provider }}
|
- VPN_SERVICE_PROVIDER={{ arrstack_vpn_provider }}
|
||||||
- OPENVPN_USER={{ arrstack_vpn_user }}
|
- OPENVPN_USER={{ arrstack_vpn_user }}
|
||||||
- OPENVPN_PASSWORD={{ arrstack_vpn_pass }}
|
- OPENVPN_PASSWORD={{ arrstack_vpn_pass }}
|
||||||
|
- UPDATER_PERIOD=48h
|
||||||
- SERVER_REGIONS={{ arrstack_vpn_regions }}
|
- SERVER_REGIONS={{ arrstack_vpn_regions }}
|
||||||
|
- DNS_ADDRESS=9.9.9.9 # TODO: implement variable
|
||||||
- PORT_FORWARD_ONLY=true
|
- PORT_FORWARD_ONLY=true
|
||||||
- VPN_PORT_FORWARDING=on
|
- VPN_PORT_FORWARDING=on
|
||||||
- VPN_PORT_FORWARDING_PROVIDER={{ arrstack_vpn_provider }}
|
- VPN_PORT_FORWARDING_PROVIDER={{ arrstack_vpn_provider }}
|
||||||
|
|
@ -253,6 +309,9 @@ services:
|
||||||
- PGID={{ arrstack_pgid }}
|
- PGID={{ arrstack_pgid }}
|
||||||
- TZ={{ arrstack_tz }}
|
- TZ={{ arrstack_tz }}
|
||||||
- UMASK_SET={{ arrstack_umask_set }}
|
- UMASK_SET={{ arrstack_umask_set }}
|
||||||
|
group_add:
|
||||||
|
- video # video
|
||||||
|
# - render # render
|
||||||
devices:
|
devices:
|
||||||
- /dev/dri:/dev/dri
|
- /dev/dri:/dev/dri
|
||||||
#environment:
|
#environment:
|
||||||
|
|
@ -283,8 +342,8 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ arrstack_env_dir }}/data/gonic:/data"
|
- "{{ arrstack_env_dir }}/data/gonic:/data"
|
||||||
- "{{ arrstack_env_dir }}/data/gonic_playlists:/playlists"
|
- "{{ arrstack_env_dir }}/data/gonic_playlists:/playlists"
|
||||||
- "/srv/media/music:/music:ro"
|
- "{{ arrstack_serve_dir }}/media/music:/music:ro"
|
||||||
- "/srv/media/podcasts:/podcasts"
|
- "{{ arrstack_serve_dir }}/media/podcasts:/podcasts"
|
||||||
#- /path/to/cache:/cache # transcode / covers / etc cache dir
|
#- /path/to/cache:/cache # transcode / covers / etc cache dir
|
||||||
labels:
|
labels:
|
||||||
caddy: "{{ arrstack_gonic_subdomain }}"
|
caddy: "{{ arrstack_gonic_subdomain }}"
|
||||||
|
|
|
||||||
5
roles/nfs/defaults/main.yaml
Normal file
5
roles/nfs/defaults/main.yaml
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
nfs_export_lines:
|
||||||
|
- "/srv/media 192.168.0.0/24(rw,async,nosuid,no_subtree_check)"
|
||||||
|
- "/srv/files 192.168.0.0/24(rw,async,nosuid,no_subtree_check)"
|
||||||
7
roles/nfs/handlers/main.yaml
Normal file
7
roles/nfs/handlers/main.yaml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
---
|
||||||
|
- name: Reload nfs service
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: nfs-server.service
|
||||||
|
daemon_reload: true
|
||||||
|
state: restarted
|
||||||
|
become: true
|
||||||
30
roles/nfs/tasks/main.yaml
Normal file
30
roles/nfs/tasks/main.yaml
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
---
|
||||||
|
- name: Install nfs kernel package
|
||||||
|
ansible.builtin.package:
|
||||||
|
name: nfs-kernel-server
|
||||||
|
state: present
|
||||||
|
become: true
|
||||||
|
notify: Reload nfs service
|
||||||
|
|
||||||
|
- name: Create exports conf file
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: exports.jinja
|
||||||
|
dest: /etc/exports
|
||||||
|
mode: '0644'
|
||||||
|
become: true
|
||||||
|
notify: Reload nfs service
|
||||||
|
|
||||||
|
- name: Ensure share directories exist
|
||||||
|
ansible.builtin.file:
|
||||||
|
state: directory
|
||||||
|
# nfs conf lines start with the shared dir
|
||||||
|
path: "{{ item.split(' ')[0] }}"
|
||||||
|
become: true
|
||||||
|
loop: "{{ nfs_export_lines }}"
|
||||||
|
|
||||||
|
- name: Enable nfs server unit
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
enabled: true
|
||||||
|
name: nfs-server.service
|
||||||
|
state: started
|
||||||
|
become: true
|
||||||
3
roles/nfs/templates/exports.jinja
Normal file
3
roles/nfs/templates/exports.jinja
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
{% for line in nfs_export_lines %}
|
||||||
|
{{ line }}
|
||||||
|
{% endfor %}
|
||||||
|
|
@ -24,5 +24,5 @@ if ! stat -t out*.png >/dev/null 2>&1; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
magick out*.png out.pdf
|
magick out*.png out.pdf
|
||||||
mv out.pdf "$HOME/documents/consume/$(date +'%Y-%m-%dT%H-%M')_scan.pdf"
|
mv out.pdf "$HOME/Nextcloud/Apps/paperless_consume/$(date +'%Y-%m-%dT%H-%M')_scan.pdf"
|
||||||
rm out*.png
|
rm out*.png
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,11 @@
|
||||||
name: system
|
name: system
|
||||||
tags: system
|
tags: system
|
||||||
|
|
||||||
|
- name: Set up nfs shares
|
||||||
|
ansible.builtin.import_role:
|
||||||
|
name: nfs
|
||||||
|
tags: nfs
|
||||||
|
|
||||||
# FIXME: Role needs much fixup before it can run
|
# FIXME: Role needs much fixup before it can run
|
||||||
# - name: Prepare incus
|
# - name: Prepare incus
|
||||||
# ansible.builtin.import_role:
|
# ansible.builtin.import_role:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue