Lightweight Docker container for Nicotine+ with noVNC web interface and Firefox ESR browser. Features: - noVNC web interface with dynamic resize support - Firefox ESR for testing ports and browsing - TigerVNC with AcceptSetDesktopSize enabled - Supervisor for process management - Configurable user/group permissions 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
232 lines
4.8 KiB
Markdown
232 lines
4.8 KiB
Markdown
# Nicotine-Less
|
|
|
|
Container Docker leggero per Nicotine+ (client Soulseek) con interfaccia web tramite noVNC e Firefox ESR integrato.
|
|
|
|
## Caratteristiche
|
|
|
|
- Interfaccia web accessibile da browser (noVNC)
|
|
- Firefox ESR integrato per testare porte e navigare
|
|
- Ridimensionamento dinamico della finestra VNC
|
|
- Supporto SSH X forwarding
|
|
- Gestione permessi user/group personalizzabili
|
|
- Volumi persistenti per configurazione e download
|
|
- Ottimizzato per architettura ARM64
|
|
- Nessuna porta VNC esposta esternamente (solo web)
|
|
|
|
## Requisiti
|
|
|
|
- Docker e Docker Compose installati
|
|
- Raspberry Pi con architettura ARM64
|
|
- Porte disponibili: 6080 (web), 2234 (TCP), 2235 (UDP)
|
|
|
|
## Installazione
|
|
|
|
### 1. Clona o crea la directory del progetto
|
|
|
|
```bash
|
|
git clone https://git.nicola.sh/public/nicotine-less.git
|
|
cd nicotine-less
|
|
```
|
|
|
|
### 2. Crea le directory per i volumi
|
|
|
|
```bash
|
|
mkdir -p data/config data/downloads data/incomplete
|
|
```
|
|
|
|
### 3. Configura le variabili d'ambiente (opzionale)
|
|
|
|
Modifica `docker-compose.yml` se necessario:
|
|
|
|
```yaml
|
|
environment:
|
|
- PUID=1000 # Cambia con il tuo user ID (comando: id -u)
|
|
- PGID=1000 # Cambia con il tuo group ID (comando: id -g)
|
|
- TZ=Europe/Rome # Cambia il tuo timezone
|
|
- VNC_RESOLUTION=1280x720 # Risoluzione desktop
|
|
- VNC_PASSWORD=nicotine # Password per VNC
|
|
```
|
|
|
|
### 4. Build dell'immagine
|
|
|
|
```bash
|
|
docker-compose build
|
|
```
|
|
|
|
### 5. Avvia il container
|
|
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
## Utilizzo
|
|
|
|
### Accesso Web (noVNC)
|
|
|
|
Apri il browser e vai a:
|
|
|
|
```
|
|
http://localhost:6080
|
|
```
|
|
|
|
O da un altro dispositivo nella stessa rete:
|
|
|
|
```
|
|
http://INDIRIZZO_IP_RASPBERRY:6080
|
|
```
|
|
|
|
### Accesso via SSH X Forwarding
|
|
|
|
```bash
|
|
ssh -X user@raspberry_ip
|
|
docker exec -it nicotine-less nicotine
|
|
```
|
|
|
|
### Gestione del container
|
|
|
|
```bash
|
|
# Visualizza i log
|
|
docker-compose logs -f
|
|
|
|
# Ferma il container
|
|
docker-compose down
|
|
|
|
# Riavvia il container
|
|
docker-compose restart
|
|
|
|
# Aggiorna e ricostruisci
|
|
docker-compose down
|
|
docker-compose build --no-cache
|
|
docker-compose up -d
|
|
```
|
|
|
|
## Struttura dei volumi
|
|
|
|
```
|
|
./data/
|
|
├── config/ # Configurazione Nicotine+ (database, impostazioni)
|
|
├── downloads/ # File scaricati completati
|
|
└── incomplete/ # Download in corso
|
|
```
|
|
|
|
### Aggiungere cartelle condivise
|
|
|
|
Per condividere cartelle con altri utenti Soulseek, modifica `docker-compose.yml`:
|
|
|
|
```yaml
|
|
volumes:
|
|
- ./data/config:/config
|
|
- ./data/downloads:/downloads
|
|
- ./data/incomplete:/incomplete
|
|
- /percorso/musica:/shares/music:ro # Aggiungi questa riga
|
|
- /percorso/video:/shares/video:ro # E questa
|
|
```
|
|
|
|
Poi riavvia il container e configura le condivisioni dentro Nicotine+.
|
|
|
|
## Configurazione Nicotine+
|
|
|
|
Al primo avvio:
|
|
|
|
1. Apri l'interfaccia web (http://localhost:6080)
|
|
2. Configura username e password Soulseek
|
|
3. Vai in Preferenze → Shares per impostare le cartelle condivise
|
|
4. Vai in Preferenze → Network per verificare le porte (2234/2235)
|
|
5. Configurazione consigliata per Raspberry Pi:
|
|
- Max upload slots: 2-4
|
|
- Max download slots: 2-4
|
|
- Limite banda in base alla tua connessione
|
|
|
|
## Porte utilizzate
|
|
|
|
| Porta | Tipo | Descrizione |
|
|
|-------|------|-------------|
|
|
| 6080 | TCP | Interfaccia web noVNC |
|
|
| 2234 | TCP | Connessioni Soulseek |
|
|
| 2235 | UDP | Ricerca Soulseek |
|
|
|
|
## Risoluzione problemi
|
|
|
|
### L'interfaccia web non si carica
|
|
|
|
```bash
|
|
docker-compose logs
|
|
# Verifica che tutti i servizi siano attivi
|
|
```
|
|
|
|
### Permessi negati sui file
|
|
|
|
Verifica PUID e PGID nel docker-compose.yml:
|
|
|
|
```bash
|
|
id -u # User ID
|
|
id -g # Group ID
|
|
```
|
|
|
|
### Performance su Raspberry Pi
|
|
|
|
Modifica i limiti risorse in `docker-compose.yml`:
|
|
|
|
```yaml
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 512M # Riduci se necessario
|
|
cpus: '1' # Riduci se necessario
|
|
```
|
|
|
|
### Download lenti
|
|
|
|
- Verifica la connettività di rete del container
|
|
- Controlla le impostazioni di banda in Nicotine+
|
|
- Assicurati che le porte 2234/2235 siano aperte nel router
|
|
|
|
## Backup
|
|
|
|
Per fare backup della configurazione:
|
|
|
|
```bash
|
|
tar -czf nicotine-backup-$(date +%Y%m%d).tar.gz data/
|
|
```
|
|
|
|
Per ripristinare:
|
|
|
|
```bash
|
|
tar -xzf nicotine-backup-YYYYMMDD.tar.gz
|
|
```
|
|
|
|
## Aggiornamenti
|
|
|
|
Per aggiornare Nicotine+ all'ultima versione:
|
|
|
|
```bash
|
|
docker-compose down
|
|
docker-compose build --no-cache
|
|
docker-compose up -d
|
|
```
|
|
|
|
## Sicurezza
|
|
|
|
- Cambia la password VNC predefinita in `docker-compose.yml`
|
|
- Considera l'uso di un reverse proxy (nginx/traefik) con HTTPS
|
|
- Non esporre la porta 6080 su Internet senza protezione
|
|
- Usa VPN o SSH tunneling per accesso remoto sicuro
|
|
|
|
## Accesso remoto sicuro (SSH tunnel)
|
|
|
|
```bash
|
|
ssh -L 6080:localhost:6080 user@raspberry_ip
|
|
```
|
|
|
|
Poi apri `http://localhost:6080` sul tuo computer locale.
|
|
|
|
## Licenza
|
|
|
|
Questo progetto è fornito "as-is" senza garanzie.
|
|
|
|
## Link utili
|
|
|
|
- [Nicotine+ GitHub](https://github.com/nicotine-plus/nicotine-plus)
|
|
- [Documentazione Nicotine+](https://nicotine-plus.org)
|
|
- [noVNC GitHub](https://github.com/novnc/noVNC)
|