Le parti operative di questa guida sono per la maggior parte estrapolate dalla guida italiana creata dalla XMPP-IT community e dal sito ufficiale a cui si rimanda per ulteriori informazioni e casistiche differenti. Snikket si installa tramite docker, quindi assicurati di averlo installato nel tuo sistema.
installazione di Snikket su VPS
Per prima cosa devi avere un dominio che supporti i sottodomini, lo puoi acquistare su un qualunque provider. Poi devi procurarti un server virtuale (VPS) con Linux. Per fornire il servizio ad un gruppo ristretto di utenti come la propria famiglia o un’associazione di piccole dimensioni sarà sufficiente un VPS con 1Gb di RAM.
DNS
Cerca l’ip del tuo server e crea quindi un record A che lo punti con specificato il dominio (o sottodominio chat.) che vuoi dedicare a Snikket.
# Domain TTL Class Type Target
chat.example.com. 300 IN A 203.0.113.123
Aggiungi quindi questi altri 2 record DNS
# Domain TTL Class Type Target
groups.chat.example.com 300 IN CNAME chat.example.com.
share.chat.example.com 300 IN CNAME chat.example.com.
Nota: Nel pannello di controllo di alcuni fornitori i TTL sono espressi in minuti, 300 = 5 min.
Ora connettiti col terminale utilizzando il comando
ssh root@il.tuo.ip
e alla richiesta Are you sure you want to continue connecting (yes/no/[fingerprint])? rispondi Yes e incolla la pwd, che non si vedrà. Sei entrato come amministratore, aggiorna il server con
sudo apt update
e
sudo apt upgrade
snikket
Bene, ora crea la cartella di configurazione:
sudo mkdir /etc/snikket
entraci:
cd /etc/snikket
e scarica il file:
sudo curl -o docker-compose.yml https://snikket.org/service/resources/dockercompose.beta.yml
Sempre qui crea il file di configurazione usando vim o nano (come nell’esempio):
sudo nano /etc/snikket/snikket.conf
e copiaci dentro questi valori:
# The primary domain of your Snikket instance
SNIKKET_DOMAIN=chat.example.com
# An email address where the admin can be contacted
# (also used to register your Let's Encrypt account to obtain certificates)
SNIKKET_ADMIN_EMAIL=you@example.com
ovviamente modificando con i tuoi valori e salva il file. Dai poi questo comando:
sudo docker-compose up -d
Hai fatto!
Ora devi creare il tuo profilo amministrativo con cui puoi entrare da browser nel tuo chat.dominio.tld con la parola d’ordine che ti viene suggerita. Il comando per crearlo è
sudo docker exec snikket create-invite --admin --group default
Ti viene generato un link utilizzabile una sola volta. Tutti gli altri utenti li puoi creare dal tuo pannello di controllo una volta eseguito l’accesso.
porte
Perché Snikket funzioni devi aprire le porte del server virtuale descritte qui
supporto
Se vuoi maggiori informazioni puoi iniziare creando prima un account xmpp su uno dei server pubblici e poi unirti a dei gruppi (MUC, Multi User Chat in terminologia XMPP) specifici.
Se hai bisogno di supporto su Snikket c’è il gruppo ufficiale (in inglese): general
Se preferisci un gruppo italiano qui troverai degli appassionati: xmpp-it
reverse proxy
Se come me devi gestire più servizi nello stesso server, ti serve un reverse proxy. Io uso Caddy1, la configurazione per Snikket è molto semplice e la trovi a questo link. Per prima cosa devi dire a Snikket di usare porte diverse per le connessioni verso l’esterno, quindi modifica il file di configurazione in /etc/snikket/snikket.conf con queste stringhe
SNIKKET_TWEAK_HTTP_PORT=5080
SNIKKET_TWEAK_HTTPS_PORT=5443
Sempre all’interno della cartella /etc/snikket rilancia il container per aggiornare le modifiche al file di configurazione con
sudo docker-compose up -d
Dopo di che devi configurare Caddy, inserisci nel Caddyfile le stringhe riportate
http://chat.example.com,
http://groups.chat.example.com,
http://share.chat.example.com {
reverse_proxy localhost:5080
}
chat.example.com,
groups.chat.example.com,
share.chat.example.com {
reverse_proxy https://localhost:5443 {
transport http {
tls_insecure_skip_verify
}
}
}
e rilancialo con
sudo systemctl reload caddy
per sistemare il tutto.
this is the way
Se hai seguito la guida ed installato la tua istanza Snikket, complimenti! Buon divertimento e buone comunicazioni libere!