Installazione¶
Questa guida copre l'installazione su un sistema Linux/macOS/WSL con Python 3.10+. Per il deploy in produzione vedi VPS o Ultra.cc.
Prerequisiti¶
| Requisito | Note |
|---|---|
| Python 3.10+ | 3.11 consigliato. 3.13 funziona ma ha problemi con _sqlite3 su pyenv — non bloccante perché il progetto usa JSON. |
| libmediainfo | Libreria di sistema richiesta da pymediainfo. Su Debian/Ubuntu: sudo apt install libmediainfo0v5. Su macOS: brew install mediainfo. |
unit3dup nel PATH |
Uploader ufficiale. Installabile con pip install unit3dup. |
| TMDB API key | Crea un account su https://www.themoviedb.org/ e richiedi una chiave v3 dalle impostazioni. |
| Filesystem condiviso | La sorgente dei media e la cartella ~/seedings/ devono stare sullo stesso filesystem per consentire gli hardlink. |
| Node.js | Solo se vuoi ricompilare il frontend. Il pacchetto include già la build. |
1 — Clona e installa¶
L'installazione editabile ti permette di fare git pull e ricevere gli aggiornamenti senza reinstallare. Entry points registrati:
unit3dprep→ CLI interattivaunit3dprep-web→ server Web UI
2 — Genera hash password e secret¶
Ti chiede una password (doppia conferma) e stampa le righe da esportare:
export U3DP_PASSWORD_HASH="$2b$12$..."
export U3DP_SECRET="..."
export TMDB_API_KEY="<la_tua_chiave_tmdb>"
export U3DP_PORT="8765"
export U3DP_HTTPS_ONLY="1"
Copiale in ~/.bashrc (o ~/.profile / ~/.zshrc) e ricarica con source ~/.bashrc.
Secret obbligatori
Senza U3DP_PASSWORD_HASH e U3DP_SECRET la Web UI non parte. Il secret firma i cookie di sessione: non condividerlo mai e non committarlo.
3 — Prepara le cartelle¶
Struttura di default attesa:
~/
├── media/
│ ├── movies/
│ │ └── <titolo film>/file.mkv
│ ├── series/
│ │ └── <titolo serie>/Season 01/S01E01.mkv
│ └── anime/
└── seedings/ # deve stare sullo stesso FS di ~/media
Le categorie vengono auto-scoperte come sottocartelle di ~/media/. Puoi chiamarle come vuoi (movies, film, anime, documentari, ...) e aggiungerne di nuove senza toccare il codice.
Verifica filesystem condiviso¶
Gli hardlink funzionano solo all'interno dello stesso filesystem. Controlla:
Entrambi i path devono elencare lo stesso device. Se differiscono, sposta ~/seedings/ su un altro punto dell'FS dei media oppure usa U3DP_SEEDINGS_DIR per puntarlo altrove (vedi Configurazione).
L'endpoint GET /api/settings/fs-check fa lo stesso controllo via Web UI.
4 — (Opzionale) Ricompila il frontend¶
Il frontend React è pre-buildato in unit3dprep/web/dist/ e committato nel repo. Ricostruiscilo solo se hai modificato il codice in frontend/:
La build popola unit3dprep/web/dist/. MANIFEST.in include quella cartella nel wheel, quindi chi installa via pip non ha bisogno di Node.
5 — Avvia¶
Apri http://127.0.0.1:8765. Login con la password scelta in generate_hash.py.
Per la CLI:
Vedi Uso › CLI e Uso › Web UI.
Problemi comuni¶
ModuleNotFoundError: No module named 'pymediainfo'→pip install -e .non è andato a buon fine, riprova.pymediainfoinstallato ma errori di libreria → mancalibmediainfo. Installa il pacchetto di sistema.unit3dup: command not found→ non è nel PATH. Verifica conwhich unit3dup; se necessario aggiungi~/.local/binal PATH.- Tutte le operazioni di hardlink falliscono → filesystem diverso tra media e seedings. Vedi Troubleshooting.