Μετάβαση στο περιεχόμενο

Εγκατάσταση

Για αρχάριους

Τρέξε το HolyArrs στο Docker και άνοιξέ το στο πρόγραμμα περιήγησης. Θέλει λίγα λεπτά.

  • Έναν υπολογιστή με Docker και Docker Compose.
  • Τους φακέλους των πολυμέσων σου, ή ένα μέρος να τους φτιάξεις. Διάβασε πρώτα τους Φακέλους αν θέλεις άμεσες μετακινήσεις αντί για αντίγραφα.
  • Σε NAS, Unraid ή Synology, δες το NAS, Synology και Unraid. Χωρίς Docker, δες τα Φορητά αρχεία.
  1. Φτιάξε έναν φάκελο ρυθμίσεων σε τοπικό δίσκο, για παράδειγμα /srv/holyarrs/config. Όχι σε κοινόχρηστο φάκελο δικτύου. Στο Docker Desktop χρησιμοποίησε αντί γι’ αυτό ένα volume με όνομα. Δες το Docker Desktop.

  2. Βρες τον χρήστη και την ομάδα που έχουν στην ιδιοκτησία τους τους φακέλους των πολυμέσων σου:

    Terminal window
    id youruser
    # uid=1000(youruser) gid=1000(youruser)

    Χρησιμοποίησε το uid ως PUID και το gid ως PGID.

  3. Αποθήκευσε αυτό ως docker-compose.yml και άλλαξε τις διαδρομές:

    name: holyarrs
    services:
    holyarrs:
    image: holyarrs/holyarrs:latest
    container_name: holyarrs
    environment:
    - PUID=1000
    - PGID=1000
    - TZ=Etc/UTC
    volumes:
    - /srv/holyarrs/config:/config
    - /path/to/movies:/movies #optional
    - /path/to/tv:/tv #optional
    - /path/to/music:/music #optional
    - /path/to/downloads:/downloads #optional
    ports:
    - 6262:6262
    restart: unless-stopped
  4. Ξεκίνα το:

    Terminal window
    docker compose up -d
    docker compose ps

    Το container εμφανίζεται ως healthy μόλις το HolyArrs αρχίσει να απαντά.

  5. Άνοιξε το http://your-server:6262 και φτιάξε αμέσως τον λογαριασμό του ιδιοκτήτη. Δεν υπάρχει προεπιλεγμένος κωδικός πρόσβασης. Μέχρι να τον φτιάξεις, όποιος ανοίξει πρώτος το HolyArrs γίνεται ο ιδιοκτήτης.

  6. Ακολούθησε τη ρύθμιση που ανοίγει μετά. Δες την Πρώτη εκκίνηση.

Αν προτιμάς το docker run:

Terminal window
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:latest
Tag Τι παίρνεις
latest Την πιο πρόσφατη έκδοση
1.0.0 (οποιαδήποτε έκδοση) Ακριβώς αυτή την έκδοση, δεν αλλάζει ποτέ
Ρύθμιση Τι κάνει
-p 6262:6262 Η διαδικτυακή εφαρμογή.
-v /config Βάσεις δεδομένων, ρυθμίσεις, το κύριο κλειδί, αντίγραφα ασφαλείας και αρχεία καταγραφής. Μόνο τοπικός δίσκος.
-v /movies Προαιρετικό. Ένας φάκελος της Βιβλιοθήκης για ταινίες.
-v /tv Προαιρετικό. Ένας φάκελος της Βιβλιοθήκης για σειρές.
-v /music Προαιρετικό. Ένας φάκελος της Βιβλιοθήκης για μουσική.
-v /downloads Προαιρετικό. Ο φάκελος λήψεων του προγράμματος λήψεων. Δες τους Φακέλους πολυμέσων.
--read-only=true Προαιρετικό. Δες το Σύστημα αρχείων root μόνο για ανάγνωση.
--user=1000:1000 Προαιρετικό. Δες το Εκκίνηση με σταθερό χρήστη.
Μεταβλητή Τι κάνει
PUID, PGID Ο χρήστης και η ομάδα με τους οποίους τρέχει το HolyArrs. 1000 και 1000 αν τις παραλείψεις.
TZ Ζώνη ώρας, για παράδειγμα Europe/Amsterdam.
UMASK Προαιρετικό. Ποια bits δικαιωμάτων δεν παίρνουν τα νέα αρχεία, για παράδειγμα 022 ή 002.
HOLYARRS_SAVE_PATH Προαιρετικό. Ο φάκελος αποθήκευσης του προγράμματος λήψεων, όπως τον βλέπει το ίδιο το πρόγραμμα λήψεων.
HOLYARRS_ALLOWED_HOSTS Προαιρετικό. Επιπλέον ονόματα host με τα οποία οι άνθρωποι φτάνουν στο HolyArrs, χωρισμένα με κόμμα.
HOLYARRS_TRUSTED_PROXIES Προαιρετικό. Η διεύθυνση ή το δίκτυο του reverse proxy σου.
HOLYARRS_URL_BASE Προαιρετικό. Σερβίρει το HolyArrs κάτω από μια διαδρομή. Δες το URL base και reverse proxies.
HOLYARRS_MASTER_KEY_FILE Προαιρετικό. Διαβάζει το κύριο κλειδί από δικό του αρχείο.

Κάθε μεταβλητή μπορεί να έρθει από αρχείο. Βάλε FILE__ μπροστά από το όνομα και δώσε ως τιμή τη διαδρομή του αρχείου:

environment:
- FILE__HOLYARRS_ALLOWED_HOSTS=/run/secrets/holyarrs_hosts

Η μία αλλαγή γραμμής στο τέλος του αρχείου αφαιρείται. Αυτό δουλεύει και για τα PUID, PGID, UMASK και TZ. Αν λείπει το αρχείο, το HolyArrs σταματά και γράφει το όνομα της μεταβλητής στο αρχείο καταγραφής (log). Δεν τυπώνει ποτέ την τιμή.

Η image περιέχει το HolyArrs και σχεδόν τίποτα άλλο. Δεν έχει shell, άρα δεν μπορείς να κάνεις docker exec μέσα της για να ψάξεις. Διάβασε αντί γι’ αυτό το αρχείο καταγραφής με docker logs holyarrs, ή άνοιξε το logs/holyarrs.log στον φάκελο ρυθμίσεων.

Οι δικές εντολές του HolyArrs δουλεύουν κανονικά μέσω docker exec:

Terminal window
docker exec holyarrs /holyarrs doctor
docker exec -i holyarrs /holyarrs reset-owner
docker exec holyarrs /holyarrs restore --pre-update

Οι images φτιάχνονται για amd64, 64-bit ARM και 32-bit ARM. Σε υπολογιστή με περίπου 2.5 GiB μνήμης ή λιγότερη, το HolyArrs ενεργοποιεί μόνο του τη λειτουργία χαμηλής μνήμης. Το λέει η πρώτη γραμμή του αρχείου καταγραφής.

Το container ξεκινά ως root μόνο για να ρυθμίσει τον εαυτό του. Δίνει τον φάκελο ρυθμίσεων στον PUID:PGID όταν χρειάζεται και μετά περνά οριστικά σε αυτόν τον χρήστη. Η πρώτη γραμμή του αρχείου καταγραφής δείχνει τον χρήστη, την ομάδα και το umask.

Το HolyArrs δεν αλλάζει ποτέ τον ιδιοκτήτη των φακέλων πολυμέσων ή λήψεων. Δώσε στον χρήστη PUID δικαίωμα εγγραφής σε αυτούς εσύ. Το δικαίωμα ανάγνωσης δεν αρκεί, γιατί το HolyArrs φτιάχνει φακέλους και μετακινεί αρχεία.

Κάποιος χώρος αποθήκευσης δεν μπορεί να αλλάξει ιδιοκτήτες, όπως το NFS με root squash, το SMB ή μια σύνδεση μόνο για ανάγνωση. Τότε το HolyArrs γράφει μια προειδοποίηση και συνεχίζει. Κάνε τον φάκελο ρυθμίσεων εγγράψιμο για τον PUID:PGID με το χέρι.

Η αλλαγή χρήστη χρειάζεται τα capabilities CHOWN, DAC_OVERRIDE, SETUID και SETGID. Το Docker τα δίνει από προεπιλογή. Αν τα αφαιρέσεις, το HolyArrs σταματά με μήνυμα. Δεν γυρνά σε root. Για να τρέξει πραγματικά ως root, βάλε PUID=0 και PGID=0.

Οι επιπλέον ομάδες από το group_add: διατηρούνται όταν το HolyArrs αλλάζει χρήστη.

Το UMASK επηρεάζει μόνο τα νέα αρχεία. Παράλειψέ το για να μείνει το 022, όπου εσύ γράφεις και οι άλλοι διαβάζουν. Χρησιμοποίησε το 002 όταν πρέπει να γράφει και μια ομάδα.

Σύνδεσε (mount) μόνο τους φακέλους που χρησιμοποιείς: τα /movies, /tv και /music ως φακέλους της Βιβλιοθήκης και το /downloads ως φάκελο λήψεων.

Συμβουλή για hardlinks (σκληρούς συνδέσμους): κάθε φάκελος που συνδέεις μόνος του είναι ξεχωριστό mount μέσα στο container, και ένα αρχείο δεν μπορεί να γίνει hardlink ανάμεσα σε mounts, οπότε οι εισαγωγές γίνονται πλήρη αντίγραφα. Αν θέλεις hardlinks, μπορείς αντί γι’ αυτό να συνδέσεις έναν κοινό γονικό φάκελο (με τις λήψεις και τους φακέλους της Βιβλιοθήκης μέσα του) στη θέση των τεσσάρων προαιρετικών mounts, και να δώσεις στο πρόγραμμα λήψεων το ίδιο mount στην ίδια διαδρομή. Ο γονικός φάκελος πρέπει να βρίσκεται επίσης σε ένα σύστημα αρχείων. Ξεχωριστοί κοινόχρηστοι φάκελοι NAS ή datasets μέσα σε αυτόν συνεχίζουν να αντιγράφουν. Το Settings > Library folders (Ρυθμίσεις > φάκελοι της Βιβλιοθήκης) σε προειδοποιεί όταν το HolyArrs πρέπει να αντιγράψει.

Το HOLYARRS_SAVE_PATH στέλνεται στο πρόγραμμα λήψεων με κάθε λήψη, άρα αλλάζει και το πού αποθηκεύει το πρόγραμμα λήψεων. Παράλειψέ το για να μείνει η δική του ρύθμιση. Αν το παραλείψεις, πρόσθεσε τον φάκελο λήψεων στο Settings > Library folders > Extra import folders (επιπλέον φάκελοι εισαγωγής), για να εισάγεις με το χέρι από αυτόν.

Το HolyArrs κρυπτογραφεί τους αποθηκευμένους κωδικούς, τα κλειδιά και τα tokens με ένα κύριο κλειδί. Η πρώτη εκκίνηση φτιάχνει το /config/holyarrs.key.

Τα αντίγραφα ασφαλείας δεν περιέχουν ποτέ αυτό το κλειδί. Κράτα ένα αντίγραφο αλλού. Ο εύκολος τρόπος: ως ιδιοκτήτης, άνοιξε Settings > Backups (Ρυθμίσεις > Αντίγραφα ασφαλείας) και διάλεξε Download key kit (λήψη του κιτ κλειδιού). Για να το επαναφέρεις, ονόμασε το αρχείο holyarrs.key και βάλε το στον φάκελο ρυθμίσεων όσο το HolyArrs είναι σταματημένο. Επαναφορά με διαφορετικό κλειδί απορρίπτεται. Με volume με όνομα δεν υπάρχει φάκελος να ανοίξεις: αντίγραψέ το μέσα με docker cp holyarrs.key hx:/config/ όπως στο Docker Desktop. Μεταφέρεις σε νέο υπολογιστή; Επανάφερε πρώτα το κλειδί και μετά το αντίγραφο ασφαλείας. Δες τα Αντίγραφα ασφαλείας.

Μπορείς επίσης να κρατήσεις το κλειδί στο δικό του αρχείο μόνο για ανάγνωση:

environment:
- HOLYARRS_MASTER_KEY_FILE=/keys/holyarrs.key
volumes:
- /srv/holyarrs/keys:/keys:ro

Το αρχείο πρέπει να υπάρχει και να περιέχει 32 ακατέργαστα bytes, 64 δεκαεξαδικά ψηφία ή base64 για 32 bytes. Ο χρήστης PUID πρέπει να μπορεί να το διαβάσει.

Κράτα μια πολιτική επανεκκίνησης. Μια επαναφορά ελέγχεται και ετοιμάζεται, και μετά το HolyArrs βγαίνει με κατάσταση 75, ώστε το Docker να το ξεκινήσει ξανά και να την εφαρμόσει. Το unless-stopped το καλύπτει.

Για να ενημερώσεις ένα τοπικό build, ξαναχτίσε και ξαναδημιούργησε χωρίς να πειράξεις τα mounts:

Terminal window
docker build --file deploy/Dockerfile --tag holyarrs:local .
docker compose up -d --force-recreate

Μην αφαιρείς ποτέ το /config κατά τη διάρκεια μιας ενημέρωσης. Δες τις Ενημερώσεις και τα Αντίγραφα ασφαλείας.

Οι διευθύνσεις IP και το localhost δουλεύουν χωρίς καμία ρύθμιση. Ένα οικιακό όνομα όπως το tower.local που χρησιμοποιείς στην πρώτη ρύθμιση αποθηκεύεται για σένα. Πρόσθεσε άλλα ονόματα στο Allowed host names (επιτρεπόμενα ονόματα host) στο Settings > Sign-in and security, ή στο HOLYARRS_ALLOWED_HOSTS.

Όταν ένας reverse proxy προσθέτει το X-Forwarded-For, βάλε στο HOLYARRS_TRUSTED_PROXIES μόνο τη διεύθυνση ή το δίκτυο του proxy. Χωρίς αυτό, η ενιαία σύνδεση (SSO), οι πραγματικές διευθύνσεις των πελατών και το cookie Secure δεν δουλεύουν, και όλοι πίσω από τον proxy μοιράζονται ένα όριο συνδέσεων. Το αρχείο καταγραφής λέει ποια διεύθυνση proxy να προσθέσεις. Αν μπροστά υπάρχει κι άλλος proxy, όπως το Cloudflare, πρόσθεσε και τις περιοχές διευθύνσεών του.

Με nginx, στείλε και τις δύο κεφαλίδες:

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Αν οι δύο δεν συμφωνούν, το HolyArrs θεωρεί τον επισκέπτη εκτός του δικτύου σου.

  • Μην προωθείς τη θύρα 6262 στον router σου. Χρησιμοποίησε ένα VPN όπως το Tailscale, ή έναν reverse proxy με HTTPS.
  • Φτιάξε τον λογαριασμό του ιδιοκτήτη αμέσως μετά την πρώτη εκκίνηση.
  • Κράτα ένα αντίγραφο του κύριου κλειδιού μακριά από τον φάκελο ρυθμίσεων.
  • Κράτα την image ενημερωμένη.

Το Docker Desktop μοιράζει τους φακέλους του host μέσα από ένα επίπεδο όπου τα κλειδώματα αρχείων της βάσης δεδομένων δεν είναι ασφαλή. Το HolyArrs αρνείται ένα /config εκεί και δείχνει τη λύση στη θύρα 6262. Χρησιμοποίησε ένα volume με όνομα για το /config. Οι φάκελοι πολυμέσων μπορούν να μείνουν φάκελοι του host.

name: holyarrs
services:
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:

Για να μεταφέρεις έναν παλιό φάκελο ρυθμίσεων μέσα στο volume, σταμάτα το HolyArrs και τρέξε:

Terminal window
docker create --name hx -v holyarrs-config:/config holyarrs/holyarrs:latest
docker cp C:\old\config\. hx:/config/
docker rm hx

Για να βγάλεις τα αντίγραφα ασφαλείας έξω: docker cp holyarrs:/config/backups .

Σε Mac, αν έχεις ελέγξει ότι τα κλειδώματα αρχείων δουλεύουν στον φάκελό σου, βάλε HOLYARRS_ALLOW_DESKTOP_FOLDER=1 για να ξεκινήσει παρ’ όλα αυτά. Το HolyArrs προειδοποιεί σε κάθε εκκίνηση. Αυτό δεν άρει ποτέ την άρνηση για κοινόχρηστους φακέλους δικτύου.

Σύστημα αρχείων root μόνο για ανάγνωση

Σύνδεσμος προς Σύστημα αρχείων root μόνο για ανάγνωση

Μόνο τα /config και /tmp χρειάζεται να είναι εγγράψιμα:

services:
holyarrs:
read_only: true
tmpfs:
- /tmp

Τα PUID, PGID και UMASK συνεχίζουν να δουλεύουν.

services:
holyarrs:
user: "1000:1000"

Τότε το HolyArrs δεν αλλάζει κανέναν ιδιοκτήτη, άρα ο φάκελος ρυθμίσεων πρέπει να είναι ήδη εγγράψιμος από αυτόν τον χρήστη. Τα PUID και PGID αγνοούνται και το αρχείο καταγραφής το λέει. Αυτό καλύπτει και το runAsUser του Kubernetes.

Σε λειτουργία rootless, το root μέσα στο container είναι ο δικός σου χρήστης, και τα άλλα ids αντιστοιχίζονται σε υψηλούς αριθμούς στον host. Με PUID=1000, ο φάκελος ρυθμίσεων καταλήγει να ανήκει σε έναν άγνωστο στον host.

Τι τρέχεις Τι δείχνει το docker info ή podman info Χρησιμοποίησε
Κανονικό Docker κανένα rootless PUID και PGID όπως συνήθως
Rootless Docker rootless στις Security Options Επιλογή 1
Rootless Podman rootless: true Επιλογή 1 ή 2

Επιλογή 1. Βάλε PUID=0 και PGID=0. Είναι ασφαλές μόνο σε λειτουργία rootless. Μην το κάνεις ποτέ με κανονικό Docker ή σε NAS.

Επιλογή 2. Podman με keep-id, ως Quadlet στο ~/.config/containers/systemd/holyarrs.container:

[Container]
Image=holyarrs/holyarrs:latest
UserNS=keep-id
User=%U:%G
Volume=%h/holyarrs/config:/config:Z
PublishPort=6262:6262
HealthCmd=["/holyarrs","-healthcheck"]
HealthInterval=30s
[Service]
Restart=always
[Install]
WantedBy=default.target

Ή ως μία εντολή:

Terminal window
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
  • Το :Z είναι για συστήματα με SELinux. Χρησιμοποίησε το :z σε φακέλους που μοιράζεται το πρόγραμμα λήψεων. Μην βάλεις κανένα από τα δύο σε κοινόχρηστο φάκελο δικτύου (NFS ή SMB): δεν μπορεί να γίνει relabel και το container δεν θα ξεκινήσει.
  • Δώσε τον έλεγχο υγείας ως λίστα. Η image δεν έχει shell.
  • Κράτα την πολιτική επανεκκίνησης always. Η υπηρεσία του Podman για εκκίνηση μετά από επανεκκίνηση ξεκινά μόνο containers με always.
  • Για να ξεκινά μετά από επανεκκίνηση χωρίς να συνδεθείς, τρέξε μία φορά loginctl enable-linger $USER. Μετά χρησιμοποίησε το αρχείο Quadlet, ή για podman run τρέξε systemctl --user enable podman-restart.service.

Αν ο φάκελος ανήκει ήδη σε υψηλό id, σταμάτα πρώτα το container και μετά:

  • Rootless Podman: podman unshare chown -R 0:0 ~/holyarrs/config (Επιλογή 1) ή podman unshare chown -R 1000:1000 ~/holyarrs/config.
  • Rootless Docker: rootlesskit chown -R 0:0 ~/holyarrs/config, τρέχοντάς το μέσω nsenter στο rootless daemon (nsenter -U --preserve-credentials -n -m -t $(cat $XDG_RUNTIME_DIR/docker.pid)).

Από το checkout του HolyArrs:

Terminal window
docker build --file deploy/Dockerfile --tag holyarrs:local .

Μετά χρησιμοποίησε το holyarrs:local ως image.

Τρέξε πρώτα το doctor. Ελέγχει τις ρυθμίσεις, τους φακέλους, το δίκτυο και το ρολόι, και σου λέει πώς να διορθώσεις κάθε πρόβλημα.

  • Το container τρέχει: docker exec holyarrs /holyarrs doctor
  • Το container επανεκκινείται συνεχώς: docker compose run --rm holyarrs doctor

Δες την Επίλυση προβλημάτων για το αρχείο καταγραφής και το πακέτο υποστήριξης.

Βλέπεις Κάνε αυτό
Config folder is on a shared or network folder Χρησιμοποίησε τοπικό δίσκο, ή ένα volume με όνομα στο Docker Desktop. Στο Unraid χρησιμοποίησε το /mnt/<pool>/appdata/holyarrs.
Config folder is in memory Βάλε το /config σε δίσκο. Στο Unraid, έλεγξε ότι υπάρχει η διαδρομή του pool. Για ένα μηχάνημα δοκιμών, το HOLYARRS_CONFIG_IN_MEMORY=yes το επιτρέπει.
Config folder cannot be written Αφαίρεσε το :ro και έλεγξε ότι οι PUID:PGID έχουν στην ιδιοκτησία τους τον φάκελο.
Disk is full Άδειασε χώρο στον δίσκο που κρατά το /config και μετά κάνε επανεκκίνηση.
/config is not mapped Δες παρακάτω.
Cannot switch user Πρόσθεσε πίσω τα τέσσερα capabilities, ή χρησιμοποίησε user: "<uid>:<gid>".
PUID/PGID does not exist inside this container Τα ids είναι εκτός του εύρους που έχει αντιστοιχιστεί. Δες το Rootless Docker και Podman.
A FILE__ variable cannot be read Έλεγξε τη διαδρομή και ότι το αρχείο είναι συνδεδεμένο (mounted).
Permission denied Έλεγξε τα PUID, PGID και το δικαίωμα εγγραφής σε όλους τους φακέλους.
Unknown host name Άνοιξε το HolyArrs με IP και πρόσθεσε το όνομα στο Allowed host names.
Imports are copied Σύνδεσε έναν κοινό φάκελο. Δες τους Φακέλους πολυμέσων.
Master key does not match Επανάφερε το κλειδί που ανήκει σε αυτές τις βάσεις δεδομένων.
Restore staged but the app stays down Πρόσθεσε πολιτική επανεκκίνησης και ξεκίνα το container.

Ξέχασες να αντιστοιχίσεις το /config;

Σύνδεσμος προς Ξέχασες να αντιστοιχίσεις το /config;

Το HolyArrs ξεκινά κανονικά, αλλά προειδοποιεί παντού. Όλα χάνονται όταν το container αφαιρεθεί. Σώσε τα πρώτα:

Terminal window
docker stop holyarrs
docker cp holyarrs:/config ./holyarrs-config

Μετά αντιστοίχισε το ./holyarrs-config:/config (ή ένα volume με όνομα) και ξαναδημιούργησε το container. Στο Docker Desktop (Windows και Mac), χρησιμοποίησε volume με όνομα, όχι φάκελο του host, και αντίγραψε τα δεδομένα μέσα όπως φαίνεται στο Docker Desktop. Μια παλαιότερη εγκατάσταση μπορεί να βρίσκεται ακόμα σε volume χωρίς όνομα. Δες τα με docker volume ls.

Το HolyArrs είναι δωρεάν. Αν σου γλίτωσε χρόνο, βάλε του αστέρι στο GitHub, γίνε χορηγός ή κέρασέ με έναν καφέ.