Instalare
Nou aici
Rulează HolyArrs în Docker și deschide-l în browser. Durează câteva minute.
Înainte să începi
Link către Înainte să începi- Un aparat cu Docker și Docker Compose.
- Dosarele tale media sau un loc unde să le creezi. Citește mai întâi Dosare dacă vrei mutări instantanee în loc de copii.
- Pe un NAS, Unraid sau Synology, vezi NAS, Synology și Unraid. Fără Docker, vezi Versiunea portabilă.
Pași
Link către Pași-
Creează un dosar pentru configurare pe un disc local, de exemplu
/srv/holyarrs/config. Nu un dosar partajat în rețea. În Docker Desktop, folosește în schimb un volum cu nume. Vezi Docker Desktop. -
Află utilizatorul și grupul care dețin dosarele tale media:
Terminal window id youruser# uid=1000(youruser) gid=1000(youruser)Folosește
uidcaPUIDșigidcaPGID. -
Salvează asta ca
docker-compose.ymlși schimbă căile:name: holyarrsservices:holyarrs:image: holyarrs/holyarrs:latestcontainer_name: holyarrsenvironment:- PUID=1000- PGID=1000- TZ=Etc/UTCvolumes:- /srv/holyarrs/config:/config- /path/to/movies:/movies #optional- /path/to/tv:/tv #optional- /path/to/music:/music #optional- /path/to/downloads:/downloads #optionalports:- 6262:6262restart: unless-stopped -
Pornește-l:
Terminal window docker compose up -ddocker compose psContainerul apare ca healthy (sănătos) imediat ce HolyArrs răspunde.
-
Deschide
http://your-server:6262și creează imediat contul proprietarului. Nu există nicio parolă implicită. Până îl creezi, cine deschide primul HolyArrs devine proprietar. -
Urmează configurarea care se deschide apoi. Vezi Prima pornire.
Dacă preferi docker run:
docker run -d \ --name=holyarrs \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Etc/UTC \ -p 6262:6262 \ -v /srv/holyarrs/config:/config \ -v /path/to/movies:/movies `#optional` -v /path/to/tv:/tv `#optional` -v /path/to/music:/music `#optional` -v /path/to/downloads:/downloads `#optional` \ --restart unless-stopped \ holyarrs/holyarrs:latestEticheta imaginii
Link către Eticheta imaginii| Etichetă | Ce primești |
|---|---|
latest |
Cea mai nouă versiune |
1.0.0 (orice versiune) |
Exact acea versiune, nu se schimbă niciodată |
Setările explicate
Link către Setările explicatePorturi și dosare
Link către Porturi și dosare| Setare | Ce face |
|---|---|
-p 6262:6262 |
Aplicația web. |
-v /config |
Bazele de date, setările, cheia principală, copiile de rezervă și jurnalele. Doar disc local. |
-v /movies |
Opțional. Un dosar al Bibliotecii pentru filme. |
-v /tv |
Opțional. Un dosar al Bibliotecii pentru seriale. |
-v /music |
Opțional. Un dosar al Bibliotecii pentru muzică. |
-v /downloads |
Opțional. Dosarul de descărcare al programului de descărcare. Vezi Dosare media. |
--read-only=true |
Opțional. Vezi Sistem de fișiere root doar în citire. |
--user=1000:1000 |
Opțional. Vezi Pornire cu un utilizator fix. |
Variabile de mediu
Link către Variabile de mediu| Variabilă | Ce face |
|---|---|
PUID, PGID |
Utilizatorul și grupul cu care rulează HolyArrs. 1000 și 1000 dacă le omiți. |
TZ |
Fus orar, de exemplu Europe/Amsterdam. |
UMASK |
Opțional. Ce biți de permisiune lasă deoparte fișierele noi, de exemplu 022 sau 002. |
HOLYARRS_SAVE_PATH |
Opțional. Dosarul în care salvează programul de descărcare, așa cum îl vede el. |
HOLYARRS_ALLOWED_HOSTS |
Opțional. Nume de gazdă în plus cu care oamenii ajung la HolyArrs, separate prin virgulă. |
HOLYARRS_TRUSTED_PROXIES |
Opțional. Adresa sau rețeaua proxy-ului tău invers. |
HOLYARRS_URL_BASE |
Opțional. Servește HolyArrs sub o cale. Vezi Proxy invers și URL base. |
HOLYARRS_MASTER_KEY_FILE |
Opțional. Citește cheia principală dintr-un fișier separat. |
Orice variabilă poate veni dintr-un fișier. Pune FILE__ în fața numelui și dă
calea fișierului ca valoare:
environment: - FILE__HOLYARRS_ALLOWED_HOSTS=/run/secrets/holyarrs_hostsSe elimină o singură linie nouă de la sfârșitul fișierului. Merge și pentru PUID, PGID,
UMASK și TZ. Dacă fișierul lipsește, HolyArrs se oprește și numește
variabila în jurnal (log). Nu afișează niciodată valoarea.
Imaginea
Link către ImagineaImaginea conține HolyArrs și foarte puțin altceva. Nu are shell, deci nu poți
face docker exec în ea ca să te uiți prin ea. Citește în schimb jurnalul cu
docker logs holyarrs sau deschide logs/holyarrs.log din dosarul de configurare.
Comenzile proprii ale HolyArrs merg în continuare prin docker exec:
docker exec holyarrs /holyarrs doctordocker exec -i holyarrs /holyarrs reset-ownerdocker exec holyarrs /holyarrs restore --pre-updateImaginile sunt construite pentru amd64, ARM pe 64 de biți și ARM pe 32 de biți. Pe un aparat cu cam 2.5 GiB de memorie sau mai puțin, HolyArrs pornește singur modul cu memorie puțină. Prima linie din jurnal spune asta.
Utilizator și grup
Link către Utilizator și grupContainerul pornește ca root doar ca să se configureze. Dă dosarul de
configurare lui PUID:PGID când e nevoie, apoi trece definitiv la acel utilizator. Prima
linie din jurnal arată utilizatorul, grupul și umask-ul.
HolyArrs nu schimbă niciodată proprietarul dosarelor tale media sau de descărcare. Dă
tu utilizatorului PUID permisiune de scriere în ele. Accesul de citire nu
ajunge, pentru că HolyArrs creează dosare și mută fișiere.
Unele tipuri de stocare nu pot schimba proprietarii, cum ar fi NFS cu root squash, SMB sau o
montare doar în citire. HolyArrs scrie atunci un avertisment și merge mai departe. Dă manual drept de scriere pe dosarul de configurare pentru PUID:PGID.
Schimbarea utilizatorului cere capabilitățile CHOWN, DAC_OVERRIDE, SETUID și SETGID.
Docker le dă implicit. Dacă le elimini, HolyArrs se oprește
cu un mesaj. Nu revine la root. Ca să rulezi cu adevărat ca root, setează
PUID=0 și PGID=0.
Grupurile în plus din group_add: se păstrează când HolyArrs schimbă utilizatorul.
UMASK afectează doar fișierele noi. Omite-l ca să păstrezi 022, unde scrii tu, iar
ceilalți citesc. Folosește 002 când și un grup trebuie să scrie.
Dosare media
Link către Dosare mediaMontează doar dosarele pe care le folosești: /movies, /tv și /music ca dosare ale
Bibliotecii și /downloads ca dosar de descărcare.
Sfat pentru hardlink-uri (legături fizice): fiecare dosar montat separat este o montare distinctă în interiorul containerului, iar un fișier nu poate fi legat fizic între montări, așa că importurile devin copii complete. Dacă vrei hardlink-uri, poți monta în schimb un singur dosar părinte comun (cu dosarele de descărcări și ale Bibliotecii înăuntru) în locul celor patru montări opționale și să dai programului de descărcare aceeași montare pe aceeași cale. Dosarul părinte trebuie să fie și un singur sistem de fișiere. Dosarele partajate sau dataset-urile NAS separate din el tot se copiază. Settings (Setări) > Library folders (dosarele Bibliotecii) te avertizează când HolyArrs trebuie să copieze.
HOLYARRS_SAVE_PATH se trimite programului de descărcare la fiecare descărcare, deci schimbă
și locul unde salvează acesta. Omite-l ca să păstrezi setarea proprie a programului de descărcare. Dacă îl omiți, adaugă dosarul de descărcări la
Settings > Library folders > Extra import folders, ca să poți importa manual
din el.
Păstrează cheia principală
Link către Păstrează cheia principalăHolyArrs criptează parolele, cheile și token-urile salvate cu o cheie principală. La
prima pornire creează /config/holyarrs.key.
Copiile de rezervă nu conțin niciodată această cheie. Păstrează o copie în altă parte. Varianta ușoară: ca
proprietar, deschide Settings > Backups și alege Download key kit (descarcă pachetul cu cheia). Ca s-o
readuci, numește fișierul holyarrs.key și pune-l în dosarul de configurare cât timp
HolyArrs este oprit. O restaurare cu altă cheie este refuzată. Cu un volum cu nume
nu există un dosar de deschis: copiază-o înăuntru cu
docker cp holyarrs.key hx:/config/, ca în
Docker Desktop. Te muți pe un aparat nou? Readu
mai întâi cheia, apoi restaurează copia de rezervă. Vezi
Copii de rezervă.
Poți păstra cheia și într-un fișier separat, doar în citire:
environment: - HOLYARRS_MASTER_KEY_FILE=/keys/holyarrs.keyvolumes: - /srv/holyarrs/keys:/keys:roFișierul trebuie să existe și să conțină 32 de octeți bruți, 64 de cifre hex sau base64 pentru 32
de octeți. Utilizatorul PUID trebuie să-l poată citi.
Repornire și restaurare
Link către Repornire și restaurarePăstrează o politică de repornire. O restaurare este verificată și pregătită, apoi HolyArrs iese
cu codul 75, ca Docker să-l pornească din nou și să o aplice. unless-stopped
se ocupă de asta.
Ca să actualizezi o versiune construită local, reconstruiește și recreează fără să atingi montările:
docker build --file deploy/Dockerfile --tag holyarrs:local .docker compose up -d --force-recreateNu șterge niciodată /config în timpul unei actualizări. Vezi Actualizări
și Copii de rezervă.
Nume de gazdă și proxy-uri inverse
Link către Nume de gazdă și proxy-uri inverseAdresele IP și localhost merg direct. Un nume de acasă, cum ar fi
tower.local, pe care îl folosești la prima configurare, este salvat pentru tine. Adaugă alte
nume la Allowed host names (nume de gazdă permise) în Settings > Sign-in and security, sau în
HOLYARRS_ALLOWED_HOSTS.
Când un proxy invers adaugă X-Forwarded-For, pune în HOLYARRS_TRUSTED_PROXIES doar adresa sau
rețeaua proxy-ului. Fără asta, autentificarea unică (SSO), adresele reale ale clienților
și cookie-ul Secure nu funcționează, iar toți cei din spatele proxy-ului
împart o singură limită de conectare. Jurnalul spune ce adresă de proxy să adaugi. Dacă în față mai e
un proxy, cum ar fi Cloudflare, adaugă și intervalele lui.
Cu nginx, trimite ambele antete:
proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;Dacă cele două nu se potrivesc, HolyArrs tratează vizitatorul ca fiind din afara rețelei tale.
Bazele securității
Link către Bazele securității- Nu redirecționa portul 6262 pe router. Folosește un VPN, cum ar fi Tailscale, sau un proxy invers cu HTTPS.
- Creează contul proprietarului imediat după prima pornire.
- Păstrează o copie a cheii principale departe de dosarul de configurare.
- Ține imaginea la zi.
Configurări speciale
Link către Configurări specialeDocker Desktop (Windows și Mac)
Link către Docker Desktop (Windows și Mac)Docker Desktop partajează dosarele gazdei printr-un strat în care blocările de fișiere ale bazelor de date
nu sunt sigure. HolyArrs refuză un /config de acolo și arată soluția pe portul
6262. Folosește un volum cu nume pentru /config. Dosarele media pot rămâne dosare ale gazdei.
name: holyarrsservices: holyarrs: image: holyarrs/holyarrs:latest container_name: holyarrs environment: - TZ=Etc/UTC volumes: - holyarrs-config:/config - C:/Media/movies:/movies ports: - 6262:6262 restart: unless-stopped
volumes: holyarrs-config:Ca să muți un dosar de configurare vechi în volum, oprește HolyArrs și rulează:
docker create --name hx -v holyarrs-config:/config holyarrs/holyarrs:latestdocker cp C:\old\config\. hx:/config/docker rm hxCa să scoți copiile de rezervă: docker cp holyarrs:/config/backups .
Pe un Mac, dacă ai verificat că blocările de fișiere merg în dosarul tău, setează
HOLYARRS_ALLOW_DESKTOP_FOLDER=1 ca să pornească oricum. HolyArrs te avertizează la fiecare
pornire. Asta nu ridică niciodată refuzul pentru dosarele partajate în rețea.
Sistem de fișiere root doar în citire
Link către Sistem de fișiere root doar în citireDoar /config și /tmp trebuie să permită scrierea:
services: holyarrs: read_only: true tmpfs: - /tmpPUID, PGID și UMASK merg în continuare.
Pornire cu un utilizator fix
Link către Pornire cu un utilizator fixservices: holyarrs: user: "1000:1000"HolyArrs nu mai schimbă atunci niciun proprietar, deci dosarul de configurare trebuie să fie deja
cu drept de scriere pentru acel utilizator. PUID și PGID sunt ignorate, iar jurnalul spune asta.
Asta acoperă și runAsUser din Kubernetes.
Docker rootless și Podman
Link către Docker rootless și PodmanÎn modul rootless, root-ul din container este propriul tău utilizator, iar celelalte id-uri
se mapează la numere mari pe gazdă. Cu PUID=1000, dosarul de configurare ajunge
să aparțină unui străin pe gazdă.
| Ce rulezi | docker info sau podman info arată |
Folosește |
|---|---|---|
| Docker normal | fără rootless |
PUID și PGID ca de obicei |
| Docker rootless | rootless la Security Options |
Opțiunea 1 |
| Podman rootless | rootless: true |
Opțiunea 1 sau 2 |
Opțiunea 1. Setează PUID=0 și PGID=0. E sigur doar în modul rootless.
Nu face asta niciodată cu Docker normal sau pe un NAS.
Opțiunea 2. Podman cu keep-id, ca Quadlet în
~/.config/containers/systemd/holyarrs.container:
[Container]Image=holyarrs/holyarrs:latestUserNS=keep-idUser=%U:%GVolume=%h/holyarrs/config:/config:ZPublishPort=6262:6262HealthCmd=["/holyarrs","-healthcheck"]HealthInterval=30s
[Service]Restart=always
[Install]WantedBy=default.targetSau ca o singură comandă:
podman run -d --name holyarrs --userns=keep-id --user "$(id -u):$(id -g)" -v ~/holyarrs/config:/config:Z -p 6262:6262 --health-cmd '["/holyarrs","-healthcheck"]' --health-interval 30s --restart always holyarrs/holyarrs:latest:Zeste pentru sistemele cu SELinux. Folosește:zpe dosarele pe care le împarte programul de descărcare. Nu folosi niciunul pe un dosar partajat în rețea (NFS sau SMB): nu poate fi reetichetat, iar containerul nu ar porni.- Dă verificarea de sănătate ca listă. Imaginea nu are shell.
- Păstrează politica de repornire
always. Serviciul Podman de pornire după repornire pornește doar containerelealways. - Ca să pornească după o repornire fără să te conectezi, rulează o dată
loginctl enable-linger $USER. Apoi folosește fișierul Quadlet sau, pentrupodman run, ruleazăsystemctl --user enable podman-restart.service.
Dacă dosarul aparține deja unui id mare, oprește mai întâi containerul, apoi:
- Podman rootless:
podman unshare chown -R 0:0 ~/holyarrs/config(Opțiunea 1) saupodman unshare chown -R 1000:1000 ~/holyarrs/config. - Docker rootless:
rootlesskit chown -R 0:0 ~/holyarrs/config, rulat prinnsenterîn daemonul rootless (nsenter -U --preserve-credentials -n -m -t $(cat $XDG_RUNTIME_DIR/docker.pid)).
Construiește-ți propria imagine
Link către Construiește-ți propria imagineDin checkout-ul HolyArrs:
docker build --file deploy/Dockerfile --tag holyarrs:local .Apoi folosește holyarrs:local ca imagine.
Depanare
Link către DepanareRulează mai întâi doctor. Verifică configurarea, dosarele, rețeaua și ceasul și îți spune cum să rezolvi fiecare problemă.
- Container pornit:
docker exec holyarrs /holyarrs doctor - Containerul repornește mereu:
docker compose run --rm holyarrs doctor
Vezi Depanare pentru jurnal și pachetul de suport.
| Vezi | Fă asta |
|---|---|
| Config folder is on a shared or network folder (dosarul de configurare e pe un dosar partajat sau de rețea) | Folosește un disc local sau un volum cu nume în Docker Desktop. Pe Unraid folosește /mnt/<pool>/appdata/holyarrs. |
| Config folder is in memory (dosarul de configurare e în memorie) | Pune /config pe un disc. Pe Unraid, verifică dacă există calea pool-ului. Pentru un aparat de test, HOLYARRS_CONFIG_IN_MEMORY=yes o permite. |
| Config folder cannot be written (în dosarul de configurare nu se poate scrie) | Elimină :ro și verifică dacă PUID:PGID dețin dosarul. |
| Disk is full (discul e plin) | Eliberează spațiu pe discul care conține /config, apoi repornește. |
/config is not mapped (nu e mapat) |
Vezi mai jos. |
| Cannot switch user (nu se poate schimba utilizatorul) | Adaugă la loc cele patru capabilități sau folosește user: "<uid>:<gid>". |
| PUID/PGID does not exist inside this container (PUID/PGID nu există în acest container) | Id-urile sunt în afara intervalului mapat. Vezi Docker rootless și Podman. |
O variabilă FILE__ nu poate fi citită |
Verifică calea și dacă fișierul este montat. |
| Permission denied (permisiune refuzată) | Verifică PUID, PGID și permisiunea de scriere pe toate dosarele. |
| Unknown host name (nume de gazdă necunoscut) | Deschide HolyArrs după IP și adaugă numele la Allowed host names. |
| Importurile sunt copiate | Montează un singur dosar comun. Vezi Dosare media. |
| Master key does not match (cheia principală nu se potrivește) | Readu cheia care aparține acelor baze de date. |
| Restore staged but the app stays down (restaurare pregătită, dar aplicația rămâne oprită) | Adaugă o politică de repornire și pornește containerul. |
Ai uitat să mapezi /config?
Link către Ai uitat să mapezi /config?HolyArrs tot pornește, dar avertizează peste tot. Totul se pierde când containerul este șters. Salvează mai întâi:
docker stop holyarrsdocker cp holyarrs:/config ./holyarrs-configApoi mapează ./holyarrs-config:/config (sau un volum cu nume) și recreează
containerul. În Docker Desktop (Windows și Mac), folosește un volum cu nume, nu un dosar
al gazdei, și copiază datele înăuntru cum se arată în
Docker Desktop. O configurare mai veche poate fi încă
într-un volum fără nume. Le listezi cu docker volume ls.
Vezi și
Link către Vezi șiHolyArrs este gratuit. Dacă ți-a economisit timp, dă-i o stea pe GitHub, sponsorizează-l sau cumpără-mi o cafea.