v0.7.90-beta - ARR-stack opgesplitst, /data-mount, netwerkopties per container
All checks were successful
Deploy server-up (dev) / deploy (push) Successful in 2m1s
All checks were successful
Deploy server-up (dev) / deploy (push) Successful in 2m1s
- Elk *arr-onderdeel is nu ook een losse app in de store (46 nieuwe sjablonen); los en gebundeld komen uit één bron (tools/arr_sjablonen.py) met een test die bewaakt dat ze niet uiteen lopen - Alles deelt één /data-map, zodat hardlinks werken; losse /tv-, /movies- en /downloads-mounts zijn eruit, UMASK=002 erbij - Nieuwe eerste stap "Onderdelen" in het invulmenu, met kopjes per soort; de dubbele groepsschakelaar en de lege kaarten in Instellingen zijn weg - Eigen IP-adres per container in plaats van per stack; containers zonder adres houden hun poortmapping. Ook Pangolin publiceert nu per container - Huntarr vervangen door NeutArr (project offline na lekken, image bestaat niet meer), Maintainerr naar zijn nieuwe organisatie - 31 apps toegevoegd uit het *arr-ecosysteem, alle images tegen hun registry gecontroleerd - data_dir hernoemd naar appdata_dir in de hele catalogus, naast de nieuwe data_root; qBittorrent van poort 8080 naar 8097 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q9eqpADJSRs49SoGGr4NAy
This commit is contained in:
parent
ea9b1eb668
commit
58d9be1f48
283 changed files with 8163 additions and 794 deletions
56
CHANGELOG.md
56
CHANGELOG.md
|
|
@ -1,3 +1,59 @@
|
|||
# v0.7.90-beta — De ARR-stack uit elkaar, en netwerkopties per container
|
||||
|
||||
**Elk *arr-onderdeel is nu een losse app.** Wie alleen Sonarr wil, hoefde eerst
|
||||
de hele ARR-stack te nemen. Er staan nu zesenveertig losse sjablonen in de store
|
||||
— Sonarr, Radarr, Prowlarr, Bazarr, Gluetun, en alles daaromheen — en de
|
||||
gecombineerde stack blijft bestaan als "alles in één keer". Het zijn dezelfde
|
||||
containers: beide verpakkingen komen uit één bron (`tools/arr_sjablonen.py`) en
|
||||
een test draait die opnieuw en vergelijkt het resultaat, zodat ze niet stilletjes
|
||||
uit elkaar groeien. Die test vond meteen zijn eerste geval: los koppelde
|
||||
qBittorrent zijn interne poort aan de hostpoort die jij koos, wat niet meer klopt
|
||||
zodra hij achter een VPN zit.
|
||||
|
||||
**Hardlinks werkten niet, en dat was niet zichtbaar.** Elke app kreeg losse
|
||||
mounts — `/tv`, `/movies`, `/downloads`. Voor Sonarr zijn dat twee verschillende
|
||||
bestandssystemen, ook al staat alles op dezelfde schijf, dus werd élke voltooide
|
||||
download naar je bibliotheek *gekopieerd* in plaats van gelinkt: traag, tijdelijk
|
||||
alles dubbel, en je torrent stopte met seeden zodra je opruimde. De beschrijving
|
||||
waarschuwde wel voor "zet ze op hetzelfde bestandssysteem", maar de mounts maakten
|
||||
het alsnog onmogelijk. Alles deelt nu één map die als `/data` binnenkomt, met
|
||||
`UMASK=002` zodat de apps bij elkaars bestanden kunnen.
|
||||
|
||||
**Negentien lege kaarten.** De schakelaar van een onderdeel stond hard in de stap
|
||||
*Instellingen*, terwijl je hem ook in de kop van zijn eigen groep in *Basis* zag
|
||||
staan: elk onderdeel had twee schakelaars in twee schermen, en *Instellingen*
|
||||
bestond voor het grootste deel uit kaarten zonder inhoud. Er is nu een eerste
|
||||
stap **Onderdelen** waar alle schakelaars bij elkaar staan, gegroepeerd per soort
|
||||
— bij negenenveertig onderdelen scheelt dat nogal. Wat je uitzet verdwijnt uit de
|
||||
volgende stappen in plaats van als lege kaart te blijven staan.
|
||||
|
||||
**Een eigen IP-adres ging per stack, niet per container.** Bij een app met één
|
||||
container klopt dat. Bij een stack met twintig webinterfaces kreeg de eerste
|
||||
container het adres en raakten **alle andere hun poortmappings kwijt** zonder er
|
||||
iets voor terug te krijgen — daarna waren ze nergens meer te bereiken. Je wijst
|
||||
nu per container een adres toe; wie er geen krijgt, houdt gewoon zijn poort.
|
||||
Hetzelfde gold voor Pangolin, dat één URL per stack maakte op de eerste poort die
|
||||
het tegenkwam: dat gaat nu ook per container.
|
||||
|
||||
**Huntarr is eruit.** Het project werd in februari 2026 offline gehaald nadat er
|
||||
onder meer authenticatie-bypasses en API-sleutels in platte tekst waren gevonden;
|
||||
de auteur heeft de repo verwijderd. Het image dat in het sjabloon stond bestaat
|
||||
niet meer — een controle langs alle registries bevestigde dat. Vervangen door
|
||||
NeutArr, de fork van de laatste schone versie. In diezelfde ronde bleek
|
||||
Maintainerr verhuisd naar een andere organisatie.
|
||||
|
||||
**Nieuw in de catalogus:** Overseerr, Cleanuparr, Decluttarr, Janitorr,
|
||||
cross-seed, Configarr, Profilarr, Byparr, Kometa, Tautulli, Jellystat, Wizarr,
|
||||
SuggestArr, Trailarr, Lingarr, NZBHydra2, Deluge, Transmission, slskd, Soularr,
|
||||
Mylar3, Kapowarr, Pulsarr, Prefetcharr, Posterizarr, Notifiarr, Exportarr,
|
||||
Autopulse, Requestrr, Homarr en NeutArr. Alle images zijn tegen hun registry
|
||||
gecontroleerd.
|
||||
|
||||
**Twee mappen die allebei "data" heetten.** `data_dir` was de map waar een app
|
||||
zijn eigen spullen bewaart; daar kwam nu een gedeelde `/data` naast. Die heten nu
|
||||
`appdata_dir` en `data_root`, in alle sjablonen. En qBittorrent stond standaard op
|
||||
poort 8080, samen met zes andere apps; die staat nu op 8097.
|
||||
|
||||
# v0.7.80-beta — De knop Volgende, tijdzones, en netwerken per groepje
|
||||
|
||||
**De knop Volgende deed niets.** Alpine haalt een boolean-attribuut alleen weg
|
||||
|
|
|
|||
2
VERSION
2
VERSION
|
|
@ -1 +1 @@
|
|||
0.7.80-beta
|
||||
0.7.90-beta
|
||||
|
|
|
|||
|
|
@ -5,5 +5,5 @@ services:
|
|||
ports:
|
||||
- "<< port >>:5006"
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/data:/data
|
||||
- << appdata_dir >>/<< service_name >>/data:/data
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -39,9 +39,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,6 @@ services:
|
|||
- "<< port_dns >>:53/tcp"
|
||||
- "<< port_dns >>:53/udp"
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/work:/opt/adguardhome/work
|
||||
- << data_dir >>/<< service_name >>/conf:/opt/adguardhome/conf
|
||||
- << appdata_dir >>/<< service_name >>/work:/opt/adguardhome/work
|
||||
- << appdata_dir >>/<< service_name >>/conf:/opt/adguardhome/conf
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -33,9 +33,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,43 +1,29 @@
|
|||
# ARR-stack — kies per onderdeel of je het wilt.
|
||||
#
|
||||
# Aandachtspunten:
|
||||
# * Zet de download- en mediamap op hetzelfde bestandssysteem, anders kopieert
|
||||
# elke voltooide download in plaats van te verplaatsen (traag, dubbele opslag).
|
||||
# * Draai je met Gluetun, dan zitten de downloadclients in het netwerk van die
|
||||
# container en bereik je hun webinterface via de Gluetun-poorten.
|
||||
# Alles deelt één map, gekoppeld als /data. Dat is geen smaakkwestie:
|
||||
# staan je downloads en je bibliotheek op verschillende mounts, dan kan
|
||||
# Sonarr geen hardlink maken en kopieert elke voltooide download naar je
|
||||
# bibliotheek. Traag, en je hebt alles tijdelijk dubbel op de schijf.
|
||||
#
|
||||
# /data/media/{films,series,muziek,boeken} je bibliotheek
|
||||
# /data/torrents/ torrents (blijven seeden)
|
||||
# /data/usenet/ usenet-downloads
|
||||
#
|
||||
# Draai je met Gluetun, dan zitten de downloadclients in het netwerk van
|
||||
# die container en bereik je hun webinterface via de Gluetun-poorten.
|
||||
services:
|
||||
|
||||
<%- if enable_sonarr %>
|
||||
<< service_name >>-sonarr:
|
||||
image: lscr.io/linuxserver/sonarr:latest
|
||||
container_name: << service_name >>-sonarr
|
||||
<%- if enable_kapowarr %>
|
||||
<< service_name >>-kapowarr:
|
||||
image: mrcas/kapowarr:latest
|
||||
container_name: << service_name >>-kapowarr
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/sonarr:/config
|
||||
- << media_dir >>/series:/tv
|
||||
- << downloads_dir >>:/downloads
|
||||
- << appdata_dir >>/<< service_name >>/kapowarr:/app/db
|
||||
- << data_root >>:/data
|
||||
ports:
|
||||
- "<< port_sonarr >>:8989"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_radarr %>
|
||||
<< service_name >>-radarr:
|
||||
image: lscr.io/linuxserver/radarr:latest
|
||||
container_name: << service_name >>-radarr
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/radarr:/config
|
||||
- << media_dir >>/films:/movies
|
||||
- << downloads_dir >>:/downloads
|
||||
ports:
|
||||
- "<< port_radarr >>:7878"
|
||||
- "<< port_kapowarr >>:5656"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
|
|
@ -49,15 +35,49 @@ services:
|
|||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/lidarr:/config
|
||||
- << media_dir >>/muziek:/music
|
||||
- << downloads_dir >>:/downloads
|
||||
- << appdata_dir >>/<< service_name >>/lidarr:/config
|
||||
- << data_root >>:/data
|
||||
ports:
|
||||
- "<< port_lidarr >>:8686"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_mylar3 %>
|
||||
<< service_name >>-mylar3:
|
||||
image: lscr.io/linuxserver/mylar3:latest
|
||||
container_name: << service_name >>-mylar3
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/mylar3:/config
|
||||
- << data_root >>:/data
|
||||
ports:
|
||||
- "<< port_mylar3 >>:8090"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_radarr %>
|
||||
<< service_name >>-radarr:
|
||||
image: lscr.io/linuxserver/radarr:latest
|
||||
container_name: << service_name >>-radarr
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/radarr:/config
|
||||
- << data_root >>:/data
|
||||
ports:
|
||||
- "<< port_radarr >>:7878"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_readarr %>
|
||||
<< service_name >>-readarr:
|
||||
image: lscr.io/linuxserver/readarr:develop
|
||||
|
|
@ -66,15 +86,32 @@ services:
|
|||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/readarr:/config
|
||||
- << media_dir >>/boeken:/books
|
||||
- << downloads_dir >>:/downloads
|
||||
- << appdata_dir >>/<< service_name >>/readarr:/config
|
||||
- << data_root >>:/data
|
||||
ports:
|
||||
- "<< port_readarr >>:8787"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_sonarr %>
|
||||
<< service_name >>-sonarr:
|
||||
image: lscr.io/linuxserver/sonarr:latest
|
||||
container_name: << service_name >>-sonarr
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/sonarr:/config
|
||||
- << data_root >>:/data
|
||||
ports:
|
||||
- "<< port_sonarr >>:8989"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_whisparr %>
|
||||
<< service_name >>-whisparr:
|
||||
image: ghcr.io/hotio/whisparr:latest
|
||||
|
|
@ -83,27 +120,39 @@ services:
|
|||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/whisparr:/config
|
||||
- << media_dir >>/volwassen:/adult
|
||||
- << downloads_dir >>:/downloads
|
||||
- << appdata_dir >>/<< service_name >>/whisparr:/config
|
||||
- << data_root >>:/data
|
||||
ports:
|
||||
- "<< port_whisparr >>:6969"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_prowlarr %>
|
||||
<< service_name >>-prowlarr:
|
||||
image: lscr.io/linuxserver/prowlarr:latest
|
||||
container_name: << service_name >>-prowlarr
|
||||
<%- if enable_byparr %>
|
||||
<< service_name >>-byparr:
|
||||
image: ghcr.io/thephaseless/byparr:latest
|
||||
container_name: << service_name >>-byparr
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/prowlarr:/config
|
||||
- << appdata_dir >>/<< service_name >>/byparr:/config
|
||||
ports:
|
||||
- "<< port_prowlarr >>:9696"
|
||||
- "<< port_byparr >>:8191"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_flaresolverr %>
|
||||
<< service_name >>-flaresolverr:
|
||||
image: ghcr.io/flaresolverr/flaresolverr:latest
|
||||
container_name: << service_name >>-flaresolverr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- LOG_LEVEL=info
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/flaresolverr:/config
|
||||
ports:
|
||||
- "<< port_flaresolverr >>:8191"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
|
|
@ -115,88 +164,58 @@ services:
|
|||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/jackett:/config
|
||||
- << appdata_dir >>/<< service_name >>/jackett:/config
|
||||
ports:
|
||||
- "<< port_jackett >>:9117"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_bazarr %>
|
||||
<< service_name >>-bazarr:
|
||||
image: lscr.io/linuxserver/bazarr:latest
|
||||
container_name: << service_name >>-bazarr
|
||||
<%- if enable_nzbhydra2 %>
|
||||
<< service_name >>-nzbhydra2:
|
||||
image: lscr.io/linuxserver/nzbhydra2:latest
|
||||
container_name: << service_name >>-nzbhydra2
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/bazarr:/config
|
||||
- << media_dir >>/films:/movies
|
||||
- << media_dir >>/series:/tv
|
||||
- << appdata_dir >>/<< service_name >>/nzbhydra2:/config
|
||||
ports:
|
||||
- "<< port_bazarr >>:6767"
|
||||
- "<< port_nzbhydra2 >>:5076"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_flaresolverr %>
|
||||
<< service_name >>-flaresolverr:
|
||||
image: ghcr.io/flaresolverr/flaresolverr:latest
|
||||
container_name: << service_name >>-flaresolverr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- LOG_LEVEL=info
|
||||
ports:
|
||||
- "<< port_flaresolverr >>:8191"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_gluetun %>
|
||||
<< service_name >>-gluetun:
|
||||
image: qmcgaw/gluetun:latest
|
||||
container_name: << service_name >>-gluetun
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
devices:
|
||||
- /dev/net/tun:/dev/net/tun
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- VPN_SERVICE_PROVIDER=<< vpn_provider >>
|
||||
- VPN_TYPE=<< vpn_type >>
|
||||
- WIREGUARD_PRIVATE_KEY=<< wireguard_private_key >>
|
||||
- WIREGUARD_ADDRESSES=<< wireguard_addresses >>
|
||||
- OPENVPN_USER=<< openvpn_user >>
|
||||
- OPENVPN_PASSWORD=<< openvpn_password >>
|
||||
ports:
|
||||
# De downloadclients delen dit netwerk, dus hun poorten staan hier.
|
||||
<%- if enable_qbittorrent %>
|
||||
- "<< port_qbittorrent >>:8090"
|
||||
- "<< port_qbittorrent_tcp >>:6881"
|
||||
- "<< port_qbittorrent_tcp >>:6881/udp"
|
||||
<%- endif %>
|
||||
<%- if enable_sabnzbd %>
|
||||
- "<< port_sabnzbd >>:8080"
|
||||
<%- endif %>
|
||||
<%- if enable_nzbget %>
|
||||
- "<< port_nzbget >>:6789"
|
||||
<%- endif %>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/gluetun:/gluetun
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_qbittorrent %>
|
||||
<< service_name >>-qbittorrent:
|
||||
image: lscr.io/linuxserver/qbittorrent:latest
|
||||
container_name: << service_name >>-qbittorrent
|
||||
<%- if enable_prowlarr %>
|
||||
<< service_name >>-prowlarr:
|
||||
image: lscr.io/linuxserver/prowlarr:latest
|
||||
container_name: << service_name >>-prowlarr
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- WEBUI_PORT=8090
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/qbittorrent:/config
|
||||
- << downloads_dir >>:/downloads
|
||||
- << appdata_dir >>/<< service_name >>/prowlarr:/config
|
||||
ports:
|
||||
- "<< port_prowlarr >>:9696"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_deluge %>
|
||||
<< service_name >>-deluge:
|
||||
image: lscr.io/linuxserver/deluge:latest
|
||||
container_name: << service_name >>-deluge
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/deluge:/config
|
||||
- << data_root >>:/data
|
||||
<%- if enable_gluetun %>
|
||||
network_mode: "service:<< service_name >>-gluetun"
|
||||
depends_on:
|
||||
|
|
@ -204,32 +223,9 @@ services:
|
|||
<%- endif %>
|
||||
<%- if not enable_gluetun %>
|
||||
ports:
|
||||
- "<< port_qbittorrent >>:8090"
|
||||
- "<< port_qbittorrent_tcp >>:6881"
|
||||
- "<< port_qbittorrent_tcp >>:6881/udp"
|
||||
<%- endif %>
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_sabnzbd %>
|
||||
<< service_name >>-sabnzbd:
|
||||
image: lscr.io/linuxserver/sabnzbd:latest
|
||||
container_name: << service_name >>-sabnzbd
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/sabnzbd:/config
|
||||
- << downloads_dir >>:/downloads
|
||||
<%- if enable_gluetun %>
|
||||
network_mode: "service:<< service_name >>-gluetun"
|
||||
depends_on:
|
||||
- << service_name >>-gluetun
|
||||
<%- endif %>
|
||||
<%- if not enable_gluetun %>
|
||||
ports:
|
||||
- "<< port_sabnzbd >>:8080"
|
||||
- "<< port_deluge >>:8112"
|
||||
- "<< port_deluge_torrent >>:6881"
|
||||
- "<< port_deluge_torrent >>:6881/udp"
|
||||
<%- endif %>
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
|
@ -242,9 +238,10 @@ services:
|
|||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/nzbget:/config
|
||||
- << downloads_dir >>:/downloads
|
||||
- << appdata_dir >>/<< service_name >>/nzbget:/config
|
||||
- << data_root >>:/data
|
||||
<%- if enable_gluetun %>
|
||||
network_mode: "service:<< service_name >>-gluetun"
|
||||
depends_on:
|
||||
|
|
@ -257,44 +254,134 @@ services:
|
|||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_jellyseerr %>
|
||||
<< service_name >>-jellyseerr:
|
||||
image: fallenbagel/jellyseerr:latest
|
||||
container_name: << service_name >>-jellyseerr
|
||||
<%- if enable_qbittorrent %>
|
||||
<< service_name >>-qbittorrent:
|
||||
image: lscr.io/linuxserver/qbittorrent:latest
|
||||
container_name: << service_name >>-qbittorrent
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- LOG_LEVEL=info
|
||||
- UMASK=002
|
||||
- WEBUI_PORT=8090
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/jellyseerr:/app/config
|
||||
- << appdata_dir >>/<< service_name >>/qbittorrent:/config
|
||||
- << data_root >>:/data
|
||||
<%- if enable_gluetun %>
|
||||
network_mode: "service:<< service_name >>-gluetun"
|
||||
depends_on:
|
||||
- << service_name >>-gluetun
|
||||
<%- endif %>
|
||||
<%- if not enable_gluetun %>
|
||||
ports:
|
||||
- "<< port_jellyseerr >>:5055"
|
||||
- "<< port_qbittorrent >>:8090"
|
||||
- "<< port_qbittorrent_torrent >>:6881"
|
||||
- "<< port_qbittorrent_torrent >>:6881/udp"
|
||||
<%- endif %>
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_recyclarr %>
|
||||
<< service_name >>-recyclarr:
|
||||
image: ghcr.io/recyclarr/recyclarr:latest
|
||||
container_name: << service_name >>-recyclarr
|
||||
user: << puid >>:<< pgid >>
|
||||
<%- if enable_sabnzbd %>
|
||||
<< service_name >>-sabnzbd:
|
||||
image: lscr.io/linuxserver/sabnzbd:latest
|
||||
container_name: << service_name >>-sabnzbd
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/recyclarr:/config
|
||||
- << appdata_dir >>/<< service_name >>/sabnzbd:/config
|
||||
- << data_root >>:/data
|
||||
<%- if enable_gluetun %>
|
||||
network_mode: "service:<< service_name >>-gluetun"
|
||||
depends_on:
|
||||
- << service_name >>-gluetun
|
||||
<%- endif %>
|
||||
<%- if not enable_gluetun %>
|
||||
ports:
|
||||
- "<< port_sabnzbd >>:8080"
|
||||
<%- endif %>
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_unpackerr %>
|
||||
<< service_name >>-unpackerr:
|
||||
image: ghcr.io/unpackerr/unpackerr:latest
|
||||
container_name: << service_name >>-unpackerr
|
||||
user: << puid >>:<< pgid >>
|
||||
<%- if enable_slskd %>
|
||||
<< service_name >>-slskd:
|
||||
image: slskd/slskd:latest
|
||||
container_name: << service_name >>-slskd
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- UN_SONARR_0_URL=http://<< service_name >>-sonarr:8989
|
||||
- UN_RADARR_0_URL=http://<< service_name >>-radarr:7878
|
||||
- SLSKD_REMOTE_CONFIGURATION=true
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/unpackerr:/config
|
||||
- << downloads_dir >>:/downloads
|
||||
- << appdata_dir >>/<< service_name >>/slskd:/app
|
||||
- << data_root >>:/data
|
||||
<%- if enable_gluetun %>
|
||||
network_mode: "service:<< service_name >>-gluetun"
|
||||
depends_on:
|
||||
- << service_name >>-gluetun
|
||||
<%- endif %>
|
||||
<%- if not enable_gluetun %>
|
||||
ports:
|
||||
- "<< port_slskd >>:5030"
|
||||
- "<< port_slskd_listen >>:50300"
|
||||
<%- endif %>
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_transmission %>
|
||||
<< service_name >>-transmission:
|
||||
image: lscr.io/linuxserver/transmission:latest
|
||||
container_name: << service_name >>-transmission
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/transmission:/config
|
||||
- << data_root >>:/data
|
||||
<%- if enable_gluetun %>
|
||||
network_mode: "service:<< service_name >>-gluetun"
|
||||
depends_on:
|
||||
- << service_name >>-gluetun
|
||||
<%- endif %>
|
||||
<%- if not enable_gluetun %>
|
||||
ports:
|
||||
- "<< port_transmission >>:9091"
|
||||
- "<< port_transmission_torrent >>:51413"
|
||||
- "<< port_transmission_torrent >>:51413/udp"
|
||||
<%- endif %>
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_bazarr %>
|
||||
<< service_name >>-bazarr:
|
||||
image: lscr.io/linuxserver/bazarr:latest
|
||||
container_name: << service_name >>-bazarr
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/bazarr:/config
|
||||
- << data_root >>:/data
|
||||
ports:
|
||||
- "<< port_bazarr >>:6767"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_lingarr %>
|
||||
<< service_name >>-lingarr:
|
||||
image: lingarr/lingarr:latest
|
||||
container_name: << service_name >>-lingarr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/lingarr:/app/config
|
||||
- << data_root >>:/data
|
||||
ports:
|
||||
- "<< port_lingarr >>:9876"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
|
|
@ -306,57 +393,453 @@ services:
|
|||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
- serverIP=0.0.0.0
|
||||
- serverPort=8266
|
||||
- webUIPort=8265
|
||||
- internalNode=true
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/tdarr/server:/app/server
|
||||
- << data_dir >>/<< service_name >>/tdarr/configs:/app/configs
|
||||
- << media_dir >>:/media
|
||||
- << downloads_dir >>/tdarr-cache:/temp
|
||||
- << appdata_dir >>/<< service_name >>/tdarr:/app/server
|
||||
- << data_root >>:/data
|
||||
- << appdata_dir >>/<< service_name >>/tdarr-configs:/app/configs
|
||||
ports:
|
||||
- "<< port_tdarr >>:8265"
|
||||
- "<< port_tdarr_server >>:8266"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_autobrr %>
|
||||
<< service_name >>-autobrr:
|
||||
image: ghcr.io/autobrr/autobrr:latest
|
||||
container_name: << service_name >>-autobrr
|
||||
<%- if enable_unpackerr %>
|
||||
<< service_name >>-unpackerr:
|
||||
image: ghcr.io/unpackerr/unpackerr:latest
|
||||
container_name: << service_name >>-unpackerr
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UN_SONARR_0_URL=<< sonarr_url >>
|
||||
- UN_SONARR_0_API_KEY=<< sonarr_apikey >>
|
||||
- UN_RADARR_0_URL=<< radarr_url >>
|
||||
- UN_RADARR_0_API_KEY=<< radarr_apikey >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/unpackerr:/config
|
||||
- << data_root >>:/data
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_jellyseerr %>
|
||||
<< service_name >>-jellyseerr:
|
||||
image: fallenbagel/jellyseerr:latest
|
||||
container_name: << service_name >>-jellyseerr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- LOG_LEVEL=info
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/jellyseerr:/app/config
|
||||
ports:
|
||||
- "<< port_jellyseerr >>:5055"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_overseerr %>
|
||||
<< service_name >>-overseerr:
|
||||
image: sctx/overseerr:latest
|
||||
container_name: << service_name >>-overseerr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- LOG_LEVEL=info
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/overseerr:/app/config
|
||||
ports:
|
||||
- "<< port_overseerr >>:5055"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_prefetcharr %>
|
||||
<< service_name >>-prefetcharr:
|
||||
image: phueber/prefetcharr:latest
|
||||
container_name: << service_name >>-prefetcharr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/autobrr:/config
|
||||
- << appdata_dir >>/<< service_name >>/prefetcharr:/config
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_pulsarr %>
|
||||
<< service_name >>-pulsarr:
|
||||
image: lakker/pulsarr:latest
|
||||
container_name: << service_name >>-pulsarr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/pulsarr:/app/data
|
||||
ports:
|
||||
- "<< port_autobrr >>:7474"
|
||||
- "<< port_pulsarr >>:3003"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_requestrr %>
|
||||
<< service_name >>-requestrr:
|
||||
image: thomst08/requestrr:latest
|
||||
container_name: << service_name >>-requestrr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/requestrr:/root/config
|
||||
ports:
|
||||
- "<< port_requestrr >>:4545"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_suggestarr %>
|
||||
<< service_name >>-suggestarr:
|
||||
image: ciuse99/suggestarr:latest
|
||||
container_name: << service_name >>-suggestarr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/suggestarr:/app/config
|
||||
ports:
|
||||
- "<< port_suggestarr >>:5000"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_wizarr %>
|
||||
<< service_name >>-wizarr:
|
||||
image: ghcr.io/wizarrrr/wizarr:latest
|
||||
container_name: << service_name >>-wizarr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/wizarr:/data/database
|
||||
ports:
|
||||
- "<< port_wizarr >>:5690"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_cleanuparr %>
|
||||
<< service_name >>-cleanuparr:
|
||||
image: ghcr.io/cleanuparr/cleanuparr:latest
|
||||
container_name: << service_name >>-cleanuparr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/cleanuparr:/config
|
||||
- << data_root >>:/data
|
||||
ports:
|
||||
- "<< port_cleanuparr >>:11011"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_crossseed %>
|
||||
<< service_name >>-crossseed:
|
||||
image: ghcr.io/cross-seed/cross-seed:latest
|
||||
container_name: << service_name >>-crossseed
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/crossseed:/config
|
||||
- << data_root >>:/data
|
||||
command: daemon
|
||||
ports:
|
||||
- "<< port_crossseed >>:2468"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_decluttarr %>
|
||||
<< service_name >>-decluttarr:
|
||||
image: ghcr.io/manimatter/decluttarr:latest
|
||||
container_name: << service_name >>-decluttarr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- SONARR_URL=<< sonarr_url >>
|
||||
- SONARR_KEY=<< sonarr_apikey >>
|
||||
- RADARR_URL=<< radarr_url >>
|
||||
- RADARR_KEY=<< radarr_apikey >>
|
||||
- LOG_LEVEL=INFO
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/decluttarr:/config
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_janitorr %>
|
||||
<< service_name >>-janitorr:
|
||||
image: ghcr.io/schaka/janitorr:native-stable
|
||||
container_name: << service_name >>-janitorr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/janitorr:/config
|
||||
- << data_root >>:/data
|
||||
ports:
|
||||
- "<< port_janitorr >>:8978"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_maintainerr %>
|
||||
<< service_name >>-maintainerr:
|
||||
image: ghcr.io/jorenn92/maintainerr:latest
|
||||
image: ghcr.io/maintainerr/maintainerr:latest
|
||||
container_name: << service_name >>-maintainerr
|
||||
user: << puid >>:<< pgid >>
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/maintainerr:/opt/data
|
||||
- << appdata_dir >>/<< service_name >>/maintainerr:/opt/data
|
||||
ports:
|
||||
- "<< port_maintainerr >>:6246"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_huntarr %>
|
||||
<< service_name >>-huntarr:
|
||||
image: ghcr.io/plexguide/huntarr:latest
|
||||
container_name: << service_name >>-huntarr
|
||||
<%- if enable_neutarr %>
|
||||
<< service_name >>-neutarr:
|
||||
image: iampuid0/neutarr:latest
|
||||
container_name: << service_name >>-neutarr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/huntarr:/config
|
||||
- << appdata_dir >>/<< service_name >>/neutarr:/config
|
||||
ports:
|
||||
- "<< port_huntarr >>:9705"
|
||||
- "<< port_neutarr >>:9705"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_configarr %>
|
||||
<< service_name >>-configarr:
|
||||
image: ghcr.io/raydak-labs/configarr:latest
|
||||
container_name: << service_name >>-configarr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/configarr:/app/config
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_profilarr %>
|
||||
<< service_name >>-profilarr:
|
||||
image: santiagosayshey/profilarr:latest
|
||||
container_name: << service_name >>-profilarr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/profilarr:/config
|
||||
ports:
|
||||
- "<< port_profilarr >>:6868"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_recyclarr %>
|
||||
<< service_name >>-recyclarr:
|
||||
image: ghcr.io/recyclarr/recyclarr:latest
|
||||
container_name: << service_name >>-recyclarr
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/recyclarr:/config
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_kometa %>
|
||||
<< service_name >>-kometa:
|
||||
image: kometateam/kometa:latest
|
||||
container_name: << service_name >>-kometa
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- KOMETA_RUN=false
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/kometa:/config
|
||||
- << data_root >>:/data
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_posterizarr %>
|
||||
<< service_name >>-posterizarr:
|
||||
image: ghcr.io/fscorrupt/posterizarr:latest
|
||||
container_name: << service_name >>-posterizarr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- RUN_TIME=disabled
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/posterizarr:/config
|
||||
- << data_root >>:/data
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_trailarr %>
|
||||
<< service_name >>-trailarr:
|
||||
image: nandyalu/trailarr:latest
|
||||
container_name: << service_name >>-trailarr
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/trailarr:/config
|
||||
- << data_root >>:/data
|
||||
ports:
|
||||
- "<< port_trailarr >>:7889"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_autopulse %>
|
||||
<< service_name >>-autopulse:
|
||||
image: ghcr.io/dan-online/autopulse:latest
|
||||
container_name: << service_name >>-autopulse
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/autopulse:/app/config
|
||||
ports:
|
||||
- "<< port_autopulse >>:2875"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_exportarr %>
|
||||
<< service_name >>-exportarr:
|
||||
image: ghcr.io/onedr0p/exportarr:latest
|
||||
container_name: << service_name >>-exportarr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- URL=<< arr_url >>
|
||||
- APIKEY=<< arr_apikey >>
|
||||
- PORT=<< port_exportarr >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/exportarr:/config
|
||||
command: << arr_soort >>
|
||||
ports:
|
||||
- "<< port_exportarr >>:9707"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_homarr %>
|
||||
<< service_name >>-homarr:
|
||||
image: ghcr.io/homarr-labs/homarr:latest
|
||||
container_name: << service_name >>-homarr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- SECRET_ENCRYPTION_KEY=<< homarr_encryption_key >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/homarr:/appdata
|
||||
ports:
|
||||
- "<< port_homarr >>:7575"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_jellystat %>
|
||||
<< service_name >>-jellystat:
|
||||
image: cyfershepard/jellystat:latest
|
||||
container_name: << service_name >>-jellystat
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- POSTGRES_USER=jellystat
|
||||
- POSTGRES_PASSWORD=<< db_password >>
|
||||
- POSTGRES_IP=<< service_name >>-jellystat-db
|
||||
- POSTGRES_PORT=5432
|
||||
- JWT_SECRET=<< jwt_secret >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/jellystat:/app/backend/backup-data
|
||||
ports:
|
||||
- "<< port_jellystat >>:3000"
|
||||
depends_on:
|
||||
- << service_name >>-jellystat-db
|
||||
restart: unless-stopped
|
||||
<< service_name >>-jellystat-db:
|
||||
image: postgres:16-alpine
|
||||
container_name: << service_name >>-jellystat-db
|
||||
environment:
|
||||
- POSTGRES_USER=jellystat
|
||||
- POSTGRES_PASSWORD=<< db_password >>
|
||||
- POSTGRES_DB=jfstat
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>-jellystat-db:/var/lib/postgresql/data
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_notifiarr %>
|
||||
<< service_name >>-notifiarr:
|
||||
image: golift/notifiarr:latest
|
||||
container_name: << service_name >>-notifiarr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- DN_API_KEY=<< notifiarr_apikey >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/notifiarr:/config
|
||||
ports:
|
||||
- "<< port_notifiarr >>:5454"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_tautulli %>
|
||||
<< service_name >>-tautulli:
|
||||
image: lscr.io/linuxserver/tautulli:latest
|
||||
container_name: << service_name >>-tautulli
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/tautulli:/config
|
||||
ports:
|
||||
- "<< port_tautulli >>:8181"
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_soularr %>
|
||||
<< service_name >>-soularr:
|
||||
image: mrusse08/soularr:latest
|
||||
container_name: << service_name >>-soularr
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/soularr:/data
|
||||
- << data_root >>:/data
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
||||
<%- if enable_gluetun %>
|
||||
<< service_name >>-gluetun:
|
||||
image: qmcgaw/gluetun:latest
|
||||
container_name: << service_name >>-gluetun
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- VPN_SERVICE_PROVIDER=<< vpn_provider >>
|
||||
- VPN_TYPE=<< vpn_type >>
|
||||
- SERVER_COUNTRIES=<< vpn_landen >>
|
||||
- WIREGUARD_PRIVATE_KEY=<< wireguard_private_key >>
|
||||
- WIREGUARD_ADDRESSES=<< wireguard_addresses >>
|
||||
- OPENVPN_USER=<< openvpn_user >>
|
||||
- OPENVPN_PASSWORD=<< openvpn_password >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>/gluetun:/gluetun
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
devices:
|
||||
- /dev/net/tun:/dev/net/tun
|
||||
ports:
|
||||
# De downloadclients delen dit netwerk, dus hun webinterfaces
|
||||
# staan hier. Inkomende torrentpoorten niet: die regelt je
|
||||
# VPN-aanbieder met port forwarding.
|
||||
<%- if enable_deluge %>
|
||||
- "<< port_deluge >>:8112"
|
||||
<%- endif %>
|
||||
<%- if enable_nzbget %>
|
||||
- "<< port_nzbget >>:6789"
|
||||
<%- endif %>
|
||||
<%- if enable_qbittorrent %>
|
||||
- "<< port_qbittorrent >>:8090"
|
||||
<%- endif %>
|
||||
<%- if enable_sabnzbd %>
|
||||
- "<< port_sabnzbd >>:8080"
|
||||
<%- endif %>
|
||||
<%- if enable_slskd %>
|
||||
- "<< port_slskd >>:5030"
|
||||
<%- endif %>
|
||||
<%- if enable_transmission %>
|
||||
- "<< port_transmission >>:9091"
|
||||
<%- endif %>
|
||||
restart: unless-stopped
|
||||
<%- endif %>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -8,6 +8,6 @@ services:
|
|||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << media_dir >>:/audiobooks
|
||||
- << data_dir >>/<< service_name >>/config:/config
|
||||
- << data_dir >>/<< service_name >>/metadata:/metadata
|
||||
- << appdata_dir >>/<< service_name >>/config:/config
|
||||
- << appdata_dir >>/<< service_name >>/metadata:/metadata
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
|
|
@ -11,5 +11,5 @@ services:
|
|||
- AUTHELIA_STORAGE_ENCRYPTION_KEY=<< storage_key >>
|
||||
volumes:
|
||||
# Zet hier configuration.yml en users_database.yml neer voor de eerste start.
|
||||
- << data_dir >>/<< service_name >>/config:/config
|
||||
- << appdata_dir >>/<< service_name >>/config:/config
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
11
apps/autopulse/files/compose.yaml
Normal file
11
apps/autopulse/files/compose.yaml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
services:
|
||||
<< service_name >>:
|
||||
image: ghcr.io/dan-online/autopulse:latest
|
||||
container_name: << service_name >>
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>:/app/config
|
||||
ports:
|
||||
- "<< port >>:2875"
|
||||
restart: unless-stopped
|
||||
57
apps/autopulse/template.json
Normal file
57
apps/autopulse/template.json
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
{
|
||||
"kind": "compose",
|
||||
"metadata": {
|
||||
"name": "Autopulse",
|
||||
"description": "Laat Plex of Jellyfin meteen een nieuwe aflevering zien, in plaats van te wachten op de volgende scan.",
|
||||
"tags": [
|
||||
"media",
|
||||
"automatisering"
|
||||
],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "autopulse"
|
||||
},
|
||||
"version": {
|
||||
"name": "latest"
|
||||
},
|
||||
"categories": [
|
||||
"media"
|
||||
]
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Algemeen",
|
||||
"items": [
|
||||
{
|
||||
"name": "service_name",
|
||||
"type": "str",
|
||||
"title": "Servicenaam",
|
||||
"default": "autopulse",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "port",
|
||||
"type": "int",
|
||||
"title": "Poort",
|
||||
"default": 2875,
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Basismap voor de instellingen van deze app"
|
||||
},
|
||||
{
|
||||
"name": "timezone",
|
||||
"type": "str",
|
||||
"title": "Tijdzone",
|
||||
"default": "Europe/Amsterdam",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -12,5 +12,5 @@ services:
|
|||
- ALLOWED_HOSTS=<< allowed_hosts >>
|
||||
- CSRF_TRUSTED_ORIGINS=http://<< allowed_hosts >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/config:/app/data
|
||||
- << appdata_dir >>/<< service_name >>/config:/app/data
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ services:
|
|||
- PGID=<< pgid >>
|
||||
- PORT=8000
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/data:/app/data
|
||||
- << data_dir >>/<< service_name >>/logs:/app/logs
|
||||
- << appdata_dir >>/<< service_name >>/data:/app/data
|
||||
- << appdata_dir >>/<< service_name >>/logs:/app/logs
|
||||
cap_add:
|
||||
- NET_BIND_SERVICE
|
||||
stop_grace_period: 30s
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
|
|
@ -8,5 +8,5 @@ services:
|
|||
- TZ=<< timezone >>
|
||||
- BASEROW_PUBLIC_URL=<< public_url >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>:/baserow/data
|
||||
- << appdata_dir >>/<< service_name >>:/baserow/data
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -39,9 +39,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
15
apps/bazarr/files/compose.yaml
Normal file
15
apps/bazarr/files/compose.yaml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
services:
|
||||
<< service_name >>:
|
||||
image: lscr.io/linuxserver/bazarr:latest
|
||||
container_name: << service_name >>
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>:/config
|
||||
- << data_root >>:/data
|
||||
ports:
|
||||
- "<< port >>:6767"
|
||||
restart: unless-stopped
|
||||
86
apps/bazarr/template.json
Normal file
86
apps/bazarr/template.json
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
{
|
||||
"kind": "compose",
|
||||
"metadata": {
|
||||
"name": "Bazarr",
|
||||
"description": "Zoekt en downloadt ondertitels bij wat Sonarr en Radarr al hebben binnengehaald.",
|
||||
"tags": [
|
||||
"media",
|
||||
"ondertitels"
|
||||
],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "bazarr"
|
||||
},
|
||||
"version": {
|
||||
"name": "latest"
|
||||
},
|
||||
"categories": [
|
||||
"media"
|
||||
]
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Algemeen",
|
||||
"items": [
|
||||
{
|
||||
"name": "service_name",
|
||||
"type": "str",
|
||||
"title": "Servicenaam",
|
||||
"default": "bazarr",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "port",
|
||||
"type": "int",
|
||||
"title": "Webinterface",
|
||||
"default": 6767,
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Basismap voor de instellingen van deze app"
|
||||
},
|
||||
{
|
||||
"name": "data_root",
|
||||
"type": "str",
|
||||
"title": "Gedeelde datamap",
|
||||
"default": "/mnt/data",
|
||||
"required": true,
|
||||
"description": "Eén map met je media én je downloads, gekoppeld als /data",
|
||||
"help": "Media en downloads horen onder één map te staan, die als /data in elke container komt. Alleen dan kan een voltooide download met een hardlink naar je bibliotheek: geen kopie, geen dubbele opslag, en je torrent blijft seeden. Zet je ze op gescheiden paden, dan kopieert elke download opnieuw. Eronder: media/films, media/series, torrents/ en usenet/."
|
||||
},
|
||||
{
|
||||
"name": "timezone",
|
||||
"type": "str",
|
||||
"title": "Tijdzone",
|
||||
"default": "Europe/Amsterdam",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Gebruiker",
|
||||
"items": [
|
||||
{
|
||||
"name": "puid",
|
||||
"type": "int",
|
||||
"title": "Gebruikers-ID (PUID)",
|
||||
"default": 1000,
|
||||
"required": true,
|
||||
"description": "`id -u` op je server; bepaalt de eigenaar van de bestanden"
|
||||
},
|
||||
{
|
||||
"name": "pgid",
|
||||
"type": "int",
|
||||
"title": "Groeps-ID (PGID)",
|
||||
"default": 1000,
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -7,7 +7,7 @@ services:
|
|||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/data:/beszel_data
|
||||
- << appdata_dir >>/<< service_name >>/data:/beszel_data
|
||||
restart: unless-stopped
|
||||
|
||||
<< service_name >>-agent:
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ services:
|
|||
- DB_PASSWORD=<< db_password >>
|
||||
- DB_DATABASE=bookstack
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/config:/config
|
||||
- << appdata_dir >>/<< service_name >>/config:/config
|
||||
depends_on:
|
||||
- << service_name >>-db
|
||||
restart: unless-stopped
|
||||
|
|
@ -32,5 +32,5 @@ services:
|
|||
- MYSQL_USER=bookstack
|
||||
- MYSQL_PASSWORD=<< db_password >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/db:/config
|
||||
- << appdata_dir >>/<< service_name >>/db:/config
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
11
apps/byparr/files/compose.yaml
Normal file
11
apps/byparr/files/compose.yaml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
services:
|
||||
<< service_name >>:
|
||||
image: ghcr.io/thephaseless/byparr:latest
|
||||
container_name: << service_name >>
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>:/config
|
||||
ports:
|
||||
- "<< port >>:8191"
|
||||
restart: unless-stopped
|
||||
59
apps/byparr/template.json
Normal file
59
apps/byparr/template.json
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
{
|
||||
"kind": "compose",
|
||||
"metadata": {
|
||||
"name": "Byparr",
|
||||
"description": "Nieuwer alternatief voor FlareSolverr, gebouwd op SeleniumBase. Spreekt dezelfde API, dus je kunt het er zo voor in de plaats zetten.",
|
||||
"tags": [
|
||||
"indexers",
|
||||
"downloaden",
|
||||
"proxy"
|
||||
],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "byparr"
|
||||
},
|
||||
"version": {
|
||||
"name": "latest"
|
||||
},
|
||||
"categories": [
|
||||
"downloaden"
|
||||
]
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Algemeen",
|
||||
"items": [
|
||||
{
|
||||
"name": "service_name",
|
||||
"type": "str",
|
||||
"title": "Servicenaam",
|
||||
"default": "byparr",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "port",
|
||||
"type": "int",
|
||||
"title": "Poort",
|
||||
"default": 8119,
|
||||
"required": true,
|
||||
"description": "Byparr luistert intern op 8191, net als FlareSolverr"
|
||||
},
|
||||
{
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Basismap voor de instellingen van deze app"
|
||||
},
|
||||
{
|
||||
"name": "timezone",
|
||||
"type": "str",
|
||||
"title": "Tijdzone",
|
||||
"default": "Europe/Amsterdam",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -10,7 +10,7 @@ services:
|
|||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
# Zet hier je Caddyfile neer; Caddy regelt de certificaten daarna zelf.
|
||||
- << data_dir >>/<< service_name >>/Caddyfile:/etc/caddy/Caddyfile
|
||||
- << appdata_dir >>/<< service_name >>/Caddyfile:/etc/caddy/Caddyfile
|
||||
- << service_name >>_data:/data
|
||||
- << service_name >>_config:/config
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -40,9 +40,9 @@
|
|||
"help": "Caddy vraagt zelf certificaten aan bij Let's Encrypt en heeft daarvoor poort 80 nodig, ook als je alles via HTTPS aanbiedt."
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
|
|
@ -9,6 +9,6 @@ services:
|
|||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/config:/config
|
||||
- << appdata_dir >>/<< service_name >>/config:/config
|
||||
- << books_dir >>:/books
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -39,9 +39,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
|
|
@ -9,5 +9,5 @@ services:
|
|||
- CHANGEDETECTION_PASSWORD=<< password >>
|
||||
<% endif %>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/data:/datastore
|
||||
- << appdata_dir >>/<< service_name >>/data:/datastore
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -39,9 +39,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
}
|
||||
|
|
|
|||
12
apps/cleanuparr/files/compose.yaml
Normal file
12
apps/cleanuparr/files/compose.yaml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
services:
|
||||
<< service_name >>:
|
||||
image: ghcr.io/cleanuparr/cleanuparr:latest
|
||||
container_name: << service_name >>
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>:/config
|
||||
- << data_root >>:/data
|
||||
ports:
|
||||
- "<< port >>:11011"
|
||||
restart: unless-stopped
|
||||
67
apps/cleanuparr/template.json
Normal file
67
apps/cleanuparr/template.json
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
{
|
||||
"kind": "compose",
|
||||
"metadata": {
|
||||
"name": "Cleanuparr",
|
||||
"description": "Ruimt dode en kwaadaardige torrents op, en downloads waar niemand meer naar verwijst.",
|
||||
"tags": [
|
||||
"downloaden",
|
||||
"onderhoud"
|
||||
],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "cleanuparr"
|
||||
},
|
||||
"version": {
|
||||
"name": "latest"
|
||||
},
|
||||
"categories": [
|
||||
"downloaden",
|
||||
"beheer"
|
||||
]
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Algemeen",
|
||||
"items": [
|
||||
{
|
||||
"name": "service_name",
|
||||
"type": "str",
|
||||
"title": "Servicenaam",
|
||||
"default": "cleanuparr",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "port",
|
||||
"type": "int",
|
||||
"title": "Webinterface",
|
||||
"default": 11011,
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Basismap voor de instellingen van deze app"
|
||||
},
|
||||
{
|
||||
"name": "data_root",
|
||||
"type": "str",
|
||||
"title": "Gedeelde datamap",
|
||||
"default": "/mnt/data",
|
||||
"required": true,
|
||||
"description": "Eén map met je media én je downloads, gekoppeld als /data",
|
||||
"help": "Media en downloads horen onder één map te staan, die als /data in elke container komt. Alleen dan kan een voltooide download met een hardlink naar je bibliotheek: geen kopie, geen dubbele opslag, en je torrent blijft seeden. Zet je ze op gescheiden paden, dan kopieert elke download opnieuw. Eronder: media/films, media/series, torrents/ en usenet/."
|
||||
},
|
||||
{
|
||||
"name": "timezone",
|
||||
"type": "str",
|
||||
"title": "Tijdzone",
|
||||
"default": "Europe/Amsterdam",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
9
apps/configarr/files/compose.yaml
Normal file
9
apps/configarr/files/compose.yaml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
services:
|
||||
<< service_name >>:
|
||||
image: ghcr.io/raydak-labs/configarr:latest
|
||||
container_name: << service_name >>
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>:/app/config
|
||||
restart: unless-stopped
|
||||
51
apps/configarr/template.json
Normal file
51
apps/configarr/template.json
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
"kind": "compose",
|
||||
"metadata": {
|
||||
"name": "Configarr",
|
||||
"description": "Zelfde idee als Recyclarr, maar met eigen aanpassingen bovenop de TRaSH-gidsen.",
|
||||
"tags": [
|
||||
"media",
|
||||
"configuratie"
|
||||
],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "configarr"
|
||||
},
|
||||
"version": {
|
||||
"name": "latest"
|
||||
},
|
||||
"categories": [
|
||||
"media",
|
||||
"beheer"
|
||||
]
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Algemeen",
|
||||
"items": [
|
||||
{
|
||||
"name": "service_name",
|
||||
"type": "str",
|
||||
"title": "Servicenaam",
|
||||
"default": "configarr",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Basismap voor de instellingen van deze app"
|
||||
},
|
||||
{
|
||||
"name": "timezone",
|
||||
"type": "str",
|
||||
"title": "Tijdzone",
|
||||
"default": "Europe/Amsterdam",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
13
apps/cross-seed/files/compose.yaml
Normal file
13
apps/cross-seed/files/compose.yaml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
services:
|
||||
<< service_name >>:
|
||||
image: ghcr.io/cross-seed/cross-seed:latest
|
||||
container_name: << service_name >>
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>:/config
|
||||
- << data_root >>:/data
|
||||
command: daemon
|
||||
ports:
|
||||
- "<< port >>:2468"
|
||||
restart: unless-stopped
|
||||
66
apps/cross-seed/template.json
Normal file
66
apps/cross-seed/template.json
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
{
|
||||
"kind": "compose",
|
||||
"metadata": {
|
||||
"name": "cross-seed",
|
||||
"description": "Zoekt dezelfde bestanden bij andere trackers, zodat je één download op meerdere plekken kunt seeden.",
|
||||
"tags": [
|
||||
"torrents",
|
||||
"downloaden"
|
||||
],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "cross-seed"
|
||||
},
|
||||
"version": {
|
||||
"name": "latest"
|
||||
},
|
||||
"categories": [
|
||||
"downloaden"
|
||||
]
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Algemeen",
|
||||
"items": [
|
||||
{
|
||||
"name": "service_name",
|
||||
"type": "str",
|
||||
"title": "Servicenaam",
|
||||
"default": "crossseed",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "port",
|
||||
"type": "int",
|
||||
"title": "Poort",
|
||||
"default": 2468,
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Basismap voor de instellingen van deze app"
|
||||
},
|
||||
{
|
||||
"name": "data_root",
|
||||
"type": "str",
|
||||
"title": "Gedeelde datamap",
|
||||
"default": "/mnt/data",
|
||||
"required": true,
|
||||
"description": "Eén map met je media én je downloads, gekoppeld als /data",
|
||||
"help": "Media en downloads horen onder één map te staan, die als /data in elke container komt. Alleen dan kan een voltooide download met een hardlink naar je bibliotheek: geen kopie, geen dubbele opslag, en je torrent blijft seeden. Zet je ze op gescheiden paden, dan kopieert elke download opnieuw. Eronder: media/films, media/series, torrents/ en usenet/."
|
||||
},
|
||||
{
|
||||
"name": "timezone",
|
||||
"type": "str",
|
||||
"title": "Tijdzone",
|
||||
"default": "Europe/Amsterdam",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
14
apps/decluttarr/files/compose.yaml
Normal file
14
apps/decluttarr/files/compose.yaml
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
services:
|
||||
<< service_name >>:
|
||||
image: ghcr.io/manimatter/decluttarr:latest
|
||||
container_name: << service_name >>
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- SONARR_URL=<< sonarr_url >>
|
||||
- SONARR_KEY=<< sonarr_apikey >>
|
||||
- RADARR_URL=<< radarr_url >>
|
||||
- RADARR_KEY=<< radarr_apikey >>
|
||||
- LOG_LEVEL=INFO
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>:/config
|
||||
restart: unless-stopped
|
||||
100
apps/decluttarr/template.json
Normal file
100
apps/decluttarr/template.json
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
{
|
||||
"kind": "compose",
|
||||
"metadata": {
|
||||
"name": "Decluttarr",
|
||||
"description": "Houdt de downloadwachtrij schoon: gooit weg wat vastloopt of niet meer nodig is.",
|
||||
"tags": [
|
||||
"downloaden",
|
||||
"onderhoud"
|
||||
],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "decluttarr"
|
||||
},
|
||||
"version": {
|
||||
"name": "latest"
|
||||
},
|
||||
"categories": [
|
||||
"downloaden",
|
||||
"beheer"
|
||||
]
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Algemeen",
|
||||
"items": [
|
||||
{
|
||||
"name": "service_name",
|
||||
"type": "str",
|
||||
"title": "Servicenaam",
|
||||
"default": "decluttarr",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Basismap voor de instellingen van deze app"
|
||||
},
|
||||
{
|
||||
"name": "timezone",
|
||||
"type": "str",
|
||||
"title": "Tijdzone",
|
||||
"default": "Europe/Amsterdam",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Koppelingen",
|
||||
"items": [
|
||||
{
|
||||
"name": "sonarr_url",
|
||||
"type": "str",
|
||||
"title": "Sonarr",
|
||||
"default": "http://sonarr:8989",
|
||||
"required": false,
|
||||
"connect": {
|
||||
"app": "sonarr",
|
||||
"scheme": "http",
|
||||
"port": 8989
|
||||
},
|
||||
"help": "Adres van Sonarr. Laat leeg als je Sonarr niet gebruikt."
|
||||
},
|
||||
{
|
||||
"name": "sonarr_apikey",
|
||||
"type": "str",
|
||||
"title": "Sonarr API-sleutel",
|
||||
"default": "",
|
||||
"required": false,
|
||||
"secret": true,
|
||||
"description": "Te vinden in Sonarr onder Settings → General"
|
||||
},
|
||||
{
|
||||
"name": "radarr_url",
|
||||
"type": "str",
|
||||
"title": "Radarr",
|
||||
"default": "http://radarr:7878",
|
||||
"required": false,
|
||||
"connect": {
|
||||
"app": "radarr",
|
||||
"scheme": "http",
|
||||
"port": 7878
|
||||
},
|
||||
"help": "Adres van Radarr. Laat leeg als je Radarr niet gebruikt."
|
||||
},
|
||||
{
|
||||
"name": "radarr_apikey",
|
||||
"type": "str",
|
||||
"title": "Radarr API-sleutel",
|
||||
"default": "",
|
||||
"required": false,
|
||||
"secret": true,
|
||||
"description": "Te vinden in Radarr onder Settings → General"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
17
apps/deluge/files/compose.yaml
Normal file
17
apps/deluge/files/compose.yaml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
services:
|
||||
<< service_name >>:
|
||||
image: lscr.io/linuxserver/deluge:latest
|
||||
container_name: << service_name >>
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>:/config
|
||||
- << data_root >>:/data
|
||||
ports:
|
||||
- "<< port >>:8112"
|
||||
- "<< port_torrent >>:6881"
|
||||
- "<< port_torrent >>:6881/udp"
|
||||
restart: unless-stopped
|
||||
95
apps/deluge/template.json
Normal file
95
apps/deluge/template.json
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
{
|
||||
"kind": "compose",
|
||||
"metadata": {
|
||||
"name": "Deluge",
|
||||
"description": "Lichte torrentclient met webinterface en een uitgebreid plugin-systeem.",
|
||||
"tags": [
|
||||
"torrents",
|
||||
"downloaden"
|
||||
],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "deluge"
|
||||
},
|
||||
"version": {
|
||||
"name": "latest"
|
||||
},
|
||||
"categories": [
|
||||
"downloaden"
|
||||
]
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Algemeen",
|
||||
"items": [
|
||||
{
|
||||
"name": "service_name",
|
||||
"type": "str",
|
||||
"title": "Servicenaam",
|
||||
"default": "deluge",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "port",
|
||||
"type": "int",
|
||||
"title": "Webinterface",
|
||||
"default": 8113,
|
||||
"required": true,
|
||||
"description": "Standaard 8112; hier verplaatst omdat die poort al bezet is"
|
||||
},
|
||||
{
|
||||
"name": "port_torrent",
|
||||
"type": "int",
|
||||
"title": "Inkomende poort",
|
||||
"default": 6882,
|
||||
"required": true,
|
||||
"description": "Zet deze poort open in je router voor betere snelheden"
|
||||
},
|
||||
{
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Basismap voor de instellingen van deze app"
|
||||
},
|
||||
{
|
||||
"name": "data_root",
|
||||
"type": "str",
|
||||
"title": "Gedeelde datamap",
|
||||
"default": "/mnt/data",
|
||||
"required": true,
|
||||
"description": "Eén map met je media én je downloads, gekoppeld als /data",
|
||||
"help": "Media en downloads horen onder één map te staan, die als /data in elke container komt. Alleen dan kan een voltooide download met een hardlink naar je bibliotheek: geen kopie, geen dubbele opslag, en je torrent blijft seeden. Zet je ze op gescheiden paden, dan kopieert elke download opnieuw. Eronder: media/films, media/series, torrents/ en usenet/."
|
||||
},
|
||||
{
|
||||
"name": "timezone",
|
||||
"type": "str",
|
||||
"title": "Tijdzone",
|
||||
"default": "Europe/Amsterdam",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Gebruiker",
|
||||
"items": [
|
||||
{
|
||||
"name": "puid",
|
||||
"type": "int",
|
||||
"title": "Gebruikers-ID (PUID)",
|
||||
"default": 1000,
|
||||
"required": true,
|
||||
"description": "`id -u` op je server; bepaalt de eigenaar van de bestanden"
|
||||
},
|
||||
{
|
||||
"name": "pgid",
|
||||
"type": "int",
|
||||
"title": "Groeps-ID (PGID)",
|
||||
"default": 1000,
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -9,7 +9,7 @@ services:
|
|||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/config:/config
|
||||
- << appdata_dir >>/<< service_name >>/config:/config
|
||||
- << source_dir >>:/source:ro
|
||||
- << backup_dir >>:/backups
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
|
|
@ -7,6 +7,6 @@ services:
|
|||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/config:/config
|
||||
- << appdata_dir >>/<< service_name >>/config:/config
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -39,9 +39,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
15
apps/exportarr/files/compose.yaml
Normal file
15
apps/exportarr/files/compose.yaml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
services:
|
||||
<< service_name >>:
|
||||
image: ghcr.io/onedr0p/exportarr:latest
|
||||
container_name: << service_name >>
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- URL=<< arr_url >>
|
||||
- APIKEY=<< arr_apikey >>
|
||||
- PORT=<< port >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>:/config
|
||||
command: << arr_soort >>
|
||||
ports:
|
||||
- "<< port >>:9707"
|
||||
restart: unless-stopped
|
||||
101
apps/exportarr/template.json
Normal file
101
apps/exportarr/template.json
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
{
|
||||
"kind": "compose",
|
||||
"metadata": {
|
||||
"name": "Exportarr",
|
||||
"description": "Zet de cijfers van één *arr-app om in Prometheus-metrics, zodat je er in Grafana naar kunt kijken.",
|
||||
"tags": [
|
||||
"monitoring",
|
||||
"metrics"
|
||||
],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "prometheus"
|
||||
},
|
||||
"version": {
|
||||
"name": "latest"
|
||||
},
|
||||
"categories": [
|
||||
"monitoring"
|
||||
]
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Algemeen",
|
||||
"items": [
|
||||
{
|
||||
"name": "service_name",
|
||||
"type": "str",
|
||||
"title": "Servicenaam",
|
||||
"default": "exportarr",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "port",
|
||||
"type": "int",
|
||||
"title": "Metrics-poort",
|
||||
"default": 9707,
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Basismap voor de instellingen van deze app"
|
||||
},
|
||||
{
|
||||
"name": "timezone",
|
||||
"type": "str",
|
||||
"title": "Tijdzone",
|
||||
"default": "Europe/Amsterdam",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Welke app meten we?",
|
||||
"items": [
|
||||
{
|
||||
"name": "arr_soort",
|
||||
"type": "enum",
|
||||
"title": "Soort",
|
||||
"default": "sonarr",
|
||||
"required": true,
|
||||
"config": {
|
||||
"options": [
|
||||
"sonarr",
|
||||
"radarr",
|
||||
"lidarr",
|
||||
"readarr",
|
||||
"prowlarr"
|
||||
]
|
||||
},
|
||||
"description": "Eén Exportarr meet één app; draai er meerdere voor meerdere apps"
|
||||
},
|
||||
{
|
||||
"name": "arr_url",
|
||||
"type": "str",
|
||||
"title": "Adres van die app",
|
||||
"default": "http://sonarr:8989",
|
||||
"required": true,
|
||||
"connect": {
|
||||
"app": "sonarr",
|
||||
"scheme": "http",
|
||||
"port": 8989
|
||||
},
|
||||
"help": "Het adres waarop Exportarr de *arr-app kan bereiken."
|
||||
},
|
||||
{
|
||||
"name": "arr_apikey",
|
||||
"type": "str",
|
||||
"title": "API-sleutel",
|
||||
"default": "",
|
||||
"required": true,
|
||||
"secret": true,
|
||||
"description": "Te vinden in de app onder Settings → General"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -6,6 +6,6 @@ services:
|
|||
- "<< port >>:80"
|
||||
volumes:
|
||||
- << files_dir >>:/srv
|
||||
- << data_dir >>/<< service_name >>/filebrowser.db:/database/filebrowser.db
|
||||
- << data_dir >>/<< service_name >>/.filebrowser.json:/.filebrowser.json
|
||||
- << appdata_dir >>/<< service_name >>/filebrowser.db:/database/filebrowser.db
|
||||
- << appdata_dir >>/<< service_name >>/.filebrowser.json:/.filebrowser.json
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -39,9 +39,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Map voor configuratie en database"
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ services:
|
|||
- DB_USERNAME=firefly
|
||||
- DB_PASSWORD=<< db_password >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/upload:/var/www/html/storage/upload
|
||||
- << appdata_dir >>/<< service_name >>/upload:/var/www/html/storage/upload
|
||||
depends_on:
|
||||
- << service_name >>-db
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
12
apps/flaresolverr/files/compose.yaml
Normal file
12
apps/flaresolverr/files/compose.yaml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
services:
|
||||
<< service_name >>:
|
||||
image: ghcr.io/flaresolverr/flaresolverr:latest
|
||||
container_name: << service_name >>
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- LOG_LEVEL=info
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>:/config
|
||||
ports:
|
||||
- "<< port >>:8191"
|
||||
restart: unless-stopped
|
||||
58
apps/flaresolverr/template.json
Normal file
58
apps/flaresolverr/template.json
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
{
|
||||
"kind": "compose",
|
||||
"metadata": {
|
||||
"name": "FlareSolverr",
|
||||
"description": "Haalt pagina's op die achter een Cloudflare-controle zitten, zodat je indexers er alsnog bij kunnen.",
|
||||
"tags": [
|
||||
"indexers",
|
||||
"downloaden",
|
||||
"proxy"
|
||||
],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "flaresolverr"
|
||||
},
|
||||
"version": {
|
||||
"name": "latest"
|
||||
},
|
||||
"categories": [
|
||||
"downloaden"
|
||||
]
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Algemeen",
|
||||
"items": [
|
||||
{
|
||||
"name": "service_name",
|
||||
"type": "str",
|
||||
"title": "Servicenaam",
|
||||
"default": "flaresolverr",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "port",
|
||||
"type": "int",
|
||||
"title": "Poort",
|
||||
"default": 8191,
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Basismap voor de instellingen van deze app"
|
||||
},
|
||||
{
|
||||
"name": "timezone",
|
||||
"type": "str",
|
||||
"title": "Tijdzone",
|
||||
"default": "Europe/Amsterdam",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -7,5 +7,5 @@ services:
|
|||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>:/opt/focalboard/data
|
||||
- << appdata_dir >>/<< service_name >>:/opt/focalboard/data
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ services:
|
|||
- FORGEJO__server__SSH_PORT=<< port_ssh >>
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/data:/data
|
||||
- << appdata_dir >>/<< service_name >>/data:/data
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -32,9 +32,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
|
|
@ -8,6 +8,6 @@ services:
|
|||
- TZ=<< timezone >>
|
||||
- CRON_MIN=*/20
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/data:/var/www/FreshRSS/data
|
||||
- << data_dir >>/<< service_name >>/extensions:/var/www/FreshRSS/extensions
|
||||
- << appdata_dir >>/<< service_name >>/data:/var/www/FreshRSS/data
|
||||
- << appdata_dir >>/<< service_name >>/extensions:/var/www/FreshRSS/extensions
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ services:
|
|||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/config:/config
|
||||
- << data_dir >>/<< service_name >>/media:/media/frigate
|
||||
- << appdata_dir >>/<< service_name >>/config:/config
|
||||
- << appdata_dir >>/<< service_name >>/media:/media/frigate
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
# Opnamebuffer in geheugen; voorkomt slijtage van je SSD
|
||||
- type: tmpfs
|
||||
|
|
|
|||
|
|
@ -39,9 +39,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ services:
|
|||
- database__connection__password=<< db_password >>
|
||||
- database__connection__database=ghost
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/content:/var/lib/ghost/content
|
||||
- << appdata_dir >>/<< service_name >>/content:/var/lib/ghost/content
|
||||
depends_on:
|
||||
- << service_name >>-db
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -39,9 +39,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
}
|
||||
|
|
|
|||
20
apps/gluetun/files/compose.yaml
Normal file
20
apps/gluetun/files/compose.yaml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
services:
|
||||
<< service_name >>:
|
||||
image: qmcgaw/gluetun:latest
|
||||
container_name: << service_name >>
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- VPN_SERVICE_PROVIDER=<< vpn_provider >>
|
||||
- VPN_TYPE=<< vpn_type >>
|
||||
- SERVER_COUNTRIES=<< vpn_landen >>
|
||||
- WIREGUARD_PRIVATE_KEY=<< wireguard_private_key >>
|
||||
- WIREGUARD_ADDRESSES=<< wireguard_addresses >>
|
||||
- OPENVPN_USER=<< openvpn_user >>
|
||||
- OPENVPN_PASSWORD=<< openvpn_password >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>:/gluetun
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
devices:
|
||||
- /dev/net/tun:/dev/net/tun
|
||||
restart: unless-stopped
|
||||
146
apps/gluetun/template.json
Normal file
146
apps/gluetun/template.json
Normal file
|
|
@ -0,0 +1,146 @@
|
|||
{
|
||||
"kind": "compose",
|
||||
"metadata": {
|
||||
"name": "Gluetun",
|
||||
"description": "VPN-container waar je andere containers doorheen laat lopen. Zet je downloadclient erachter met `network_mode: service:gluetun`.",
|
||||
"tags": [
|
||||
"vpn",
|
||||
"netwerk",
|
||||
"privacy"
|
||||
],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "gluetun"
|
||||
},
|
||||
"version": {
|
||||
"name": "latest"
|
||||
},
|
||||
"categories": [
|
||||
"netwerk",
|
||||
"beveiliging"
|
||||
]
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Algemeen",
|
||||
"items": [
|
||||
{
|
||||
"name": "service_name",
|
||||
"type": "str",
|
||||
"title": "Servicenaam",
|
||||
"default": "gluetun",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Basismap voor de instellingen van deze app"
|
||||
},
|
||||
{
|
||||
"name": "timezone",
|
||||
"type": "str",
|
||||
"title": "Tijdzone",
|
||||
"default": "Europe/Amsterdam",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "VPN",
|
||||
"items": [
|
||||
{
|
||||
"name": "vpn_provider",
|
||||
"type": "str",
|
||||
"title": "VPN-aanbieder",
|
||||
"default": "mullvad",
|
||||
"required": true,
|
||||
"description": "Bijvoorbeeld mullvad, nordvpn, protonvpn, airvpn of surfshark"
|
||||
},
|
||||
{
|
||||
"name": "vpn_type",
|
||||
"type": "enum",
|
||||
"title": "Protocol",
|
||||
"default": "wireguard",
|
||||
"required": true,
|
||||
"config": {
|
||||
"options": [
|
||||
"wireguard",
|
||||
"openvpn"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "vpn_landen",
|
||||
"type": "str",
|
||||
"title": "Landen",
|
||||
"default": "Netherlands",
|
||||
"required": false,
|
||||
"description": "Komma-gescheiden; leeg laten kiest willekeurig"
|
||||
},
|
||||
{
|
||||
"name": "wireguard_private_key",
|
||||
"type": "str",
|
||||
"title": "WireGuard privésleutel",
|
||||
"default": "",
|
||||
"required": false,
|
||||
"secret": true,
|
||||
"needs": [
|
||||
{
|
||||
"name": "vpn_type",
|
||||
"value": "wireguard"
|
||||
}
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "alleen bij wireguard"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "wireguard_addresses",
|
||||
"type": "str",
|
||||
"title": "WireGuard adressen",
|
||||
"default": "",
|
||||
"required": false,
|
||||
"needs": [
|
||||
{
|
||||
"name": "vpn_type",
|
||||
"value": "wireguard"
|
||||
}
|
||||
],
|
||||
"config": {
|
||||
"placeholder": "10.64.0.2/32"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "openvpn_user",
|
||||
"type": "str",
|
||||
"title": "OpenVPN gebruiker",
|
||||
"default": "",
|
||||
"required": false,
|
||||
"needs": [
|
||||
{
|
||||
"name": "vpn_type",
|
||||
"value": "openvpn"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "openvpn_password",
|
||||
"type": "str",
|
||||
"title": "OpenVPN wachtwoord",
|
||||
"default": "",
|
||||
"required": false,
|
||||
"secret": true,
|
||||
"needs": [
|
||||
{
|
||||
"name": "vpn_type",
|
||||
"value": "openvpn"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -7,5 +7,5 @@ services:
|
|||
environment:
|
||||
- GOTIFY_DEFAULTUSER_PASS=<< default_password >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/data:/app/data
|
||||
- << appdata_dir >>/<< service_name >>/data:/app/data
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -39,9 +39,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,5 +8,5 @@ services:
|
|||
- GF_SECURITY_ADMIN_USER=<< admin_user >>
|
||||
- GF_SECURITY_ADMIN_PASSWORD=<< admin_password >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/data:/var/lib/grafana
|
||||
- << appdata_dir >>/<< service_name >>/data:/var/lib/grafana
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -39,9 +39,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,5 +9,5 @@ services:
|
|||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/config:/config
|
||||
- << appdata_dir >>/<< service_name >>/config:/config
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ services:
|
|||
- CMD_URL_ADDPORT=false
|
||||
- CMD_ALLOW_ANONYMOUS=false
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/uploads:/hedgedoc/public/uploads
|
||||
- << appdata_dir >>/<< service_name >>/uploads:/hedgedoc/public/uploads
|
||||
depends_on:
|
||||
- << service_name >>-db
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -39,9 +39,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
12
apps/homarr/files/compose.yaml
Normal file
12
apps/homarr/files/compose.yaml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
services:
|
||||
<< service_name >>:
|
||||
image: ghcr.io/homarr-labs/homarr:latest
|
||||
container_name: << service_name >>
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- SECRET_ENCRYPTION_KEY=<< homarr_encryption_key >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>:/appdata
|
||||
ports:
|
||||
- "<< port >>:7575"
|
||||
restart: unless-stopped
|
||||
72
apps/homarr/template.json
Normal file
72
apps/homarr/template.json
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
{
|
||||
"kind": "compose",
|
||||
"metadata": {
|
||||
"name": "Homarr",
|
||||
"description": "Startpagina die je *arr-apps, downloadclients en mediaserver op één scherm laat zien, met live cijfers per app.",
|
||||
"tags": [
|
||||
"dashboard",
|
||||
"overzicht"
|
||||
],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "homarr"
|
||||
},
|
||||
"version": {
|
||||
"name": "latest"
|
||||
},
|
||||
"categories": [
|
||||
"beheer"
|
||||
]
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Algemeen",
|
||||
"items": [
|
||||
{
|
||||
"name": "service_name",
|
||||
"type": "str",
|
||||
"title": "Servicenaam",
|
||||
"default": "homarr",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "port",
|
||||
"type": "int",
|
||||
"title": "Webinterface",
|
||||
"default": 7575,
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Basismap voor de instellingen van deze app"
|
||||
},
|
||||
{
|
||||
"name": "timezone",
|
||||
"type": "str",
|
||||
"title": "Tijdzone",
|
||||
"default": "Europe/Amsterdam",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Toegang",
|
||||
"items": [
|
||||
{
|
||||
"name": "homarr_encryption_key",
|
||||
"type": "str",
|
||||
"title": "Versleutelingssleutel",
|
||||
"default": "",
|
||||
"required": true,
|
||||
"secret": true,
|
||||
"generate": "auto",
|
||||
"description": "64 tekens; versleutelt de opgeslagen API-sleutels van je apps"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -7,5 +7,5 @@ services:
|
|||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/config:/config
|
||||
- << appdata_dir >>/<< service_name >>/config:/config
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
|
|
@ -12,5 +12,5 @@ services:
|
|||
- PORT=3000
|
||||
- NODE_ENV=production
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>:/app/data
|
||||
- << appdata_dir >>/<< service_name >>:/app/data
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -42,9 +42,9 @@
|
|||
"description": "Poort waarop de MCP-server bereikbaar is"
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,5 +9,5 @@ services:
|
|||
- TZ=<< timezone >>
|
||||
- HOMEBRIDGE_CONFIG_UI_PORT=<< port >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>:/homebridge
|
||||
- << appdata_dir >>/<< service_name >>:/homebridge
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ services:
|
|||
- TZ=<< timezone >>
|
||||
- HOMEPAGE_ALLOWED_HOSTS=<< allowed_hosts >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/config:/app/config
|
||||
- << appdata_dir >>/<< service_name >>/config:/app/config
|
||||
# Alleen-lezen socket voor de Docker-widget die containers toont
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ services:
|
|||
- REDIS_HOSTNAME=<< service_name >>-redis
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/upload:/usr/src/app/upload
|
||||
- << appdata_dir >>/<< service_name >>/upload:/usr/src/app/upload
|
||||
depends_on:
|
||||
- << service_name >>-redis
|
||||
- << service_name >>-postgres
|
||||
|
|
|
|||
|
|
@ -39,9 +39,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Upload directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Basismap voor foto-uploads en database",
|
||||
|
|
|
|||
|
|
@ -12,6 +12,6 @@ services:
|
|||
- DOCKER_INFLUXDB_INIT_ORG=<< org >>
|
||||
- DOCKER_INFLUXDB_INIT_BUCKET=<< bucket >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/data:/var/lib/influxdb2
|
||||
- << data_dir >>/<< service_name >>/config:/etc/influxdb2
|
||||
- << appdata_dir >>/<< service_name >>/data:/var/lib/influxdb2
|
||||
- << appdata_dir >>/<< service_name >>/config:/etc/influxdb2
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -39,9 +39,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
14
apps/jackett/files/compose.yaml
Normal file
14
apps/jackett/files/compose.yaml
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
services:
|
||||
<< service_name >>:
|
||||
image: lscr.io/linuxserver/jackett:latest
|
||||
container_name: << service_name >>
|
||||
environment:
|
||||
- PUID=<< puid >>
|
||||
- PGID=<< pgid >>
|
||||
- TZ=<< timezone >>
|
||||
- UMASK=002
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>:/config
|
||||
ports:
|
||||
- "<< port >>:9117"
|
||||
restart: unless-stopped
|
||||
78
apps/jackett/template.json
Normal file
78
apps/jackett/template.json
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
{
|
||||
"kind": "compose",
|
||||
"metadata": {
|
||||
"name": "Jackett",
|
||||
"description": "Vertaalt trackers naar één API voor je *arr-apps. Ouder alternatief voor Prowlarr; meestal heb je er maar één nodig.",
|
||||
"tags": [
|
||||
"media",
|
||||
"indexers",
|
||||
"downloaden"
|
||||
],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "jackett"
|
||||
},
|
||||
"version": {
|
||||
"name": "latest"
|
||||
},
|
||||
"categories": [
|
||||
"downloaden"
|
||||
]
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Algemeen",
|
||||
"items": [
|
||||
{
|
||||
"name": "service_name",
|
||||
"type": "str",
|
||||
"title": "Servicenaam",
|
||||
"default": "jackett",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "port",
|
||||
"type": "int",
|
||||
"title": "Webinterface",
|
||||
"default": 9117,
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Basismap voor de instellingen van deze app"
|
||||
},
|
||||
{
|
||||
"name": "timezone",
|
||||
"type": "str",
|
||||
"title": "Tijdzone",
|
||||
"default": "Europe/Amsterdam",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Gebruiker",
|
||||
"items": [
|
||||
{
|
||||
"name": "puid",
|
||||
"type": "int",
|
||||
"title": "Gebruikers-ID (PUID)",
|
||||
"default": 1000,
|
||||
"required": true,
|
||||
"description": "`id -u` op je server; bepaalt de eigenaar van de bestanden"
|
||||
},
|
||||
{
|
||||
"name": "pgid",
|
||||
"type": "int",
|
||||
"title": "Groeps-ID (PGID)",
|
||||
"default": 1000,
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
12
apps/janitorr/files/compose.yaml
Normal file
12
apps/janitorr/files/compose.yaml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
services:
|
||||
<< service_name >>:
|
||||
image: ghcr.io/schaka/janitorr:native-stable
|
||||
container_name: << service_name >>
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>:/config
|
||||
- << data_root >>:/data
|
||||
ports:
|
||||
- "<< port >>:8978"
|
||||
restart: unless-stopped
|
||||
68
apps/janitorr/template.json
Normal file
68
apps/janitorr/template.json
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
{
|
||||
"kind": "compose",
|
||||
"metadata": {
|
||||
"name": "Janitorr",
|
||||
"description": "Ruimt oude media op voordat je schijf volloopt, met regels per bibliotheek.",
|
||||
"tags": [
|
||||
"media",
|
||||
"opruimen",
|
||||
"opslag"
|
||||
],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "janitorr"
|
||||
},
|
||||
"version": {
|
||||
"name": "latest"
|
||||
},
|
||||
"categories": [
|
||||
"media",
|
||||
"opslag"
|
||||
]
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Algemeen",
|
||||
"items": [
|
||||
{
|
||||
"name": "service_name",
|
||||
"type": "str",
|
||||
"title": "Servicenaam",
|
||||
"default": "janitorr",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "port",
|
||||
"type": "int",
|
||||
"title": "Webinterface",
|
||||
"default": 8978,
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Basismap voor de instellingen van deze app"
|
||||
},
|
||||
{
|
||||
"name": "data_root",
|
||||
"type": "str",
|
||||
"title": "Gedeelde datamap",
|
||||
"default": "/mnt/data",
|
||||
"required": true,
|
||||
"description": "Eén map met je media én je downloads, gekoppeld als /data",
|
||||
"help": "Media en downloads horen onder één map te staan, die als /data in elke container komt. Alleen dan kan een voltooide download met een hardlink naar je bibliotheek: geen kopie, geen dubbele opslag, en je torrent blijft seeden. Zet je ze op gescheiden paden, dan kopieert elke download opnieuw. Eronder: media/films, media/series, torrents/ en usenet/."
|
||||
},
|
||||
{
|
||||
"name": "timezone",
|
||||
"type": "str",
|
||||
"title": "Tijdzone",
|
||||
"default": "Europe/Amsterdam",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -7,7 +7,9 @@ services:
|
|||
environment:
|
||||
- TZ=<< timezone >>
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/config:/config
|
||||
- << data_dir >>/<< service_name >>/cache:/cache
|
||||
- << media_dir >>:/media:ro
|
||||
- << appdata_dir >>/<< service_name >>/config:/config
|
||||
- << appdata_dir >>/<< service_name >>/cache:/cache
|
||||
# Alleen de bibliotheek, alleen-lezen: een mediaserver hoeft niet bij je
|
||||
# downloads te kunnen en hoeft er zeker niets in te schrijven.
|
||||
- << data_root >>/media:/data/media:ro
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -39,9 +39,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Basismap voor configuratie en cache"
|
||||
|
|
@ -59,12 +59,13 @@
|
|||
"title": "Media",
|
||||
"items": [
|
||||
{
|
||||
"name": "media_dir",
|
||||
"name": "data_root",
|
||||
"type": "str",
|
||||
"title": "Media directory",
|
||||
"default": "/mnt/media",
|
||||
"title": "Gedeelde datamap",
|
||||
"default": "/mnt/data",
|
||||
"required": true,
|
||||
"description": "Map met je films, series en muziek (wordt read-only gemount)"
|
||||
"description": "Je media staat onder /data/media en wordt alleen-lezen gekoppeld",
|
||||
"help": "Media en downloads horen onder één map te staan, die als /data in elke container komt. Alleen dan kan een voltooide download met een hardlink naar je bibliotheek: geen kopie, geen dubbele opslag, en je torrent blijft seeden. Zet je ze op gescheiden paden, dan kopieert elke download opnieuw. Eronder: media/films, media/series, torrents/ en usenet/."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,5 +8,5 @@ services:
|
|||
- TZ=<< timezone >>
|
||||
- LOG_LEVEL=info
|
||||
volumes:
|
||||
- << data_dir >>/<< service_name >>/config:/app/config
|
||||
- << appdata_dir >>/<< service_name >>/config:/app/config
|
||||
restart: unless-stopped
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@
|
|||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data_dir",
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Data directory",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true
|
||||
},
|
||||
|
|
|
|||
28
apps/jellystat/files/compose.yaml
Normal file
28
apps/jellystat/files/compose.yaml
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
services:
|
||||
<< service_name >>:
|
||||
image: cyfershepard/jellystat:latest
|
||||
container_name: << service_name >>
|
||||
environment:
|
||||
- TZ=<< timezone >>
|
||||
- POSTGRES_USER=jellystat
|
||||
- POSTGRES_PASSWORD=<< db_password >>
|
||||
- POSTGRES_IP=<< service_name >>-db
|
||||
- POSTGRES_PORT=5432
|
||||
- JWT_SECRET=<< jwt_secret >>
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>:/app/backend/backup-data
|
||||
ports:
|
||||
- "<< port >>:3000"
|
||||
depends_on:
|
||||
- << service_name >>-db
|
||||
restart: unless-stopped
|
||||
<< service_name >>-db:
|
||||
image: postgres:16-alpine
|
||||
container_name: << service_name >>-db
|
||||
environment:
|
||||
- POSTGRES_USER=jellystat
|
||||
- POSTGRES_PASSWORD=<< db_password >>
|
||||
- POSTGRES_DB=jfstat
|
||||
volumes:
|
||||
- << appdata_dir >>/<< service_name >>-db:/var/lib/postgresql/data
|
||||
restart: unless-stopped
|
||||
84
apps/jellystat/template.json
Normal file
84
apps/jellystat/template.json
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
{
|
||||
"kind": "compose",
|
||||
"metadata": {
|
||||
"name": "Jellystat",
|
||||
"description": "Kijkstatistieken voor Jellyfin: wie keek wat, hoe lang en hoe vaak. Brengt zijn eigen database mee.",
|
||||
"tags": [
|
||||
"media",
|
||||
"statistiek",
|
||||
"monitoring"
|
||||
],
|
||||
"icon": {
|
||||
"provider": "selfhst",
|
||||
"id": "jellystat"
|
||||
},
|
||||
"version": {
|
||||
"name": "latest"
|
||||
},
|
||||
"categories": [
|
||||
"media",
|
||||
"monitoring"
|
||||
]
|
||||
},
|
||||
"variables": [
|
||||
{
|
||||
"title": "Algemeen",
|
||||
"items": [
|
||||
{
|
||||
"name": "service_name",
|
||||
"type": "str",
|
||||
"title": "Servicenaam",
|
||||
"default": "jellystat",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "port",
|
||||
"type": "int",
|
||||
"title": "Webinterface",
|
||||
"default": 8118,
|
||||
"required": true,
|
||||
"description": "Standaard 3000; hier verplaatst omdat die poort al bezet is"
|
||||
},
|
||||
{
|
||||
"name": "appdata_dir",
|
||||
"type": "str",
|
||||
"title": "Appdata-map",
|
||||
"default": "/opt/serverup/appdata",
|
||||
"required": true,
|
||||
"description": "Basismap voor de instellingen van deze app"
|
||||
},
|
||||
{
|
||||
"name": "timezone",
|
||||
"type": "str",
|
||||
"title": "Tijdzone",
|
||||
"default": "Europe/Amsterdam",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Database",
|
||||
"items": [
|
||||
{
|
||||
"name": "db_password",
|
||||
"type": "str",
|
||||
"title": "Databasewachtwoord",
|
||||
"default": "",
|
||||
"required": true,
|
||||
"secret": true,
|
||||
"generate": "auto"
|
||||
},
|
||||
{
|
||||
"name": "jwt_secret",
|
||||
"type": "str",
|
||||
"title": "JWT-sleutel",
|
||||
"default": "",
|
||||
"required": true,
|
||||
"secret": true,
|
||||
"generate": "auto",
|
||||
"description": "Ondertekent de inlogsessies"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue