Pairdrop
INTRODUZIONE
Pairdrop è un’alternativa cross-platform ad AirDrop che funziona su qualsiasi piattaforma. Permette di inviare immagini, documenti e testi tramite connessione peer-to-peer a dispositivi nella stessa rete locale Wi-Fi o a dispositivi abbinati. Non richiede configurazione né registrazione per condividere file istantaneamente.
PERCHÈ UTILIZZARLO
Vantaggi Principali
- Universale: Funziona su Windows, macOS, Linux, Android e iOS
- Sicuro: Connessioni peer-to-peer cifrate senza server intermediari
- Semplice: Nessuna installazione app, funziona direttamente dal browser
- Privato: I file non passano attraverso server esterni
- Veloce: Trasferimento diretto tra dispositivi senza limiti di dimensione
Casi d’Uso
- Home Office: Condividere file rapidamente tra dispositivi personali
- Ambiente Aziendale: Trasferimento sicuro di documenti in rete locale
- Famiglia: Condividere foto e video tra smartphone, tablet e computer
- Team di Lavoro: Collaborazione istantanea senza servizi cloud
- Rete Locale: Alternative sicura a servizi di file sharing pubblici
Funzionalità Avanzate
- Abbinamento Dispositivi: Connessioni persistenti tramite codice a 6 cifre o QR-Code
- Stanze Pubbliche: Connessioni temporanee tramite codice a 5 lettere
- NAT Traversal: Funziona anche con dispositivi fuori dalla rete locale
- Fallback WebSocket: Supporto per reti che bloccano WebRTC
- Rate Limiting: Controllo del traffico per prevenire abusi
PROCESSO DI INSTALLAZIONE
Preparazione Environment
Creare una directory per Pairdrop e il file di configurazione:
mkdir -p ~/docker/pairdrop
cd ~/docker/pairdropFile Docker Compose
Creare il file docker-compose.yml:
services:
pairdrop:
image: lscr.io/linuxserver/pairdrop:latest
container_name: pairdrop
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- RATE_LIMIT=${RATE_LIMIT}
- WS_FALLBACK=${WS_FALLBACK}
- DEBUG_MODE=${DEBUG_MODE}
ports:
- "${PAIRDROP_PORT}:3000"
restart: unless-stopped
networks:
- pairdrop-network
networks:
pairdrop-network:
driver: bridgeFile di Configurazione (.env)
Creare il file .env nella stessa directory:
# Configurazione Utente
PUID=1000
PGID=1000
TZ=Europe/Rome
# Configurazione Rete
PAIRDROP_PORT=3000
# Configurazioni Avanzate
RATE_LIMIT=false
WS_FALLBACK=false
DEBUG_MODE=false
# Configurazione RTC (opzionale)
# RTC_CONFIG=/config/rtc_config.jsonAvvio del Container
# Avviare il servizio
docker-compose up -d
# Verificare lo stato
docker-compose ps
# Visualizzare i log
docker-compose logs -f pairdrop!!! note “Accesso Web Interface”
L’interfaccia web sarà disponibile su http://INDIRIZZO_SERVER:3000
SPIEGAZIONE DEL CODICE
Analisi Docker Compose
Configurazione Container
image: lscr.io/linuxserver/pairdrop:latest
container_name: pairdropUtilizza l’immagine ufficiale LinuxServer.io per Pairdrop, che include ottimizzazioni di sicurezza e stabilità.
Gestione Permessi
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}PUID/PGID: Gestiscono i permessi file per evitare problemi di ownershipTZ: Configura il timezone per log e timestamp corretti
Configurazioni Funzionali
- RATE_LIMIT=${RATE_LIMIT}
- WS_FALLBACK=${WS_FALLBACK}
- DEBUG_MODE=${DEBUG_MODE}RATE_LIMIT: Limita le richieste a 1000 ogni 5 minuti per prevenire abusiWS_FALLBACK: Abilita fallback WebSocket se WebRTC non è disponibileDEBUG_MODE: Attiva logging dettagliato per troubleshooting
Networking
ports:
- "${PAIRDROP_PORT}:3000"
networks:
- pairdrop-networkEspone il servizio sulla porta 3000 e crea una rete isolata per sicurezza.
Variabili Environment
| Variabile | Scopo | Default | Personalizzazione |
|---|---|---|---|
PUID |
User ID per permessi file | 1000 | ID utente host |
PGID |
Group ID per permessi file | 1000 | ID gruppo host |
TZ |
Timezone sistema | Etc/UTC | Europe/Rome |
PAIRDROP_PORT |
Porta esposta container | 3000 | Porta libera |
RATE_LIMIT |
Limitazione richieste | false | true/false |
WS_FALLBACK |
Fallback WebSocket | false | true/false |
DEBUG_MODE |
Modalità debug | false | true/false |
RTC_CONFIG |
Configurazione STUN/TURN | - | Percorso file JSON |
CONFIGURAZIONI AGGIUNTIVE
Reverse Proxy con NGINX Proxy Manager
Per esporre Pairdrop pubblicamente in sicurezza:
location / {
proxy_pass http://pairdrop:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}!!! warning “Header X-Forwarded-For”
È essenziale configurare correttamente l’header X-Forwarded-For per evitare che tutti i client siano mutualmente visibili.
Configurazione STUN/TURN Personalizzata
Per dispositivi dietro NAT complessi, creare /config/rtc_config.json:
{
"sdpSemantics": "unified-plan",
"iceServers": [
{
"urls": "stun:stun.l.google.com:19302"
},
{
"urls": "turn:your-turn-server.com:3478",
"username": "username",
"credential": "password"
}
]
}Aggiungere al docker-compose.yml:
environment:
- RTC_CONFIG=/config/rtc_config.json
volumes:
- ./config:/configOttimizzazioni Performance
Abilitazione WebSocket Fallback
Per reti VPN o aziendali che bloccano WebRTC:
WS_FALLBACK=true!!! tip “Attenzione Bandwidth” Il fallback WebSocket instrada il traffico attraverso il server, utilizzando la bandwidth del server invece della connessione peer-to-peer.
Rate Limiting Avanzato
Per ambienti con molti utenti:
RATE_LIMIT=trueLimita ogni client a 1000 richieste ogni 5 minuti.
Monitoraggio e Troubleshooting
Abilitazione Debug
DEBUG_MODE=trueRegistra indirizzi IP e connessioni peer per diagnosticare problemi di rete.
Comandi Utili
# Monitoraggio log in tempo reale
docker-compose logs -f pairdrop
# Statistiche utilizzo risorse
docker stats pairdrop
# Restart del servizio
docker-compose restart pairdrop
# Aggiornamento immagine
docker-compose pull && docker-compose up -dBackup e Mantenimento
# Backup configurazione
tar -czf pairdrop-backup-$(date +%Y%m%d).tar.gz docker-compose.yml .env config/
# Pulizia log
docker-compose exec pairdrop sh -c 'truncate -s 0 /var/log/*.log'!!! tip “Sicurezza” Per installazioni pubbliche, utilizzare sempre HTTPS tramite reverse proxy e considerare l’implementazione di autenticazione aggiuntiva a livello di proxy.