====== Bridge XMPP <=> Whatsapp con slidge ====== ===== Premessa ===== Questa guida presume l'utilizzo di Debian stable, docker per installare "slidge whatsapp" e di un server XMPP Prosody, versione 0.12.x. Esistono pacchetti debian per slidge, ma personalmente ho sempre preferito installazione su docker, per cui non ho esperienza coi primi. Prosody su Debian stable può essere installato da repositoty "backports", dove è già alla versione più recente `0.12.4` ===== docker compose ===== services: slidge-whatsapp: network_mode: host container_name: whatsapp volumes: - /var/lib/slidge:/var/lib/slidge image: nicocool84/slidge-whatsapp:master command: --secret=random_string --jid=whatsapp.example.tld --user-jid-validator='.*@example.tld' --upload-service=upload.example.tld --admins=roughnecks@example.tld ''network-mode'' deve obbligatoriamente essere "host", poiché slidge dovrà connettersi a prosody, il quale gira ovviamente sull'host. il volume può essere "montato" su una dir a piacere, ovvero: ''- /path/to/slidge/whatsapp:/var/lib/slidge'' ma per semplificare consiglio di lasciare come scritto nel compose. ---- L'utente default per il container dovrebbe avere "uid" `10000` (ho disinstallato slidge da un po', quindi non sono sicuro al 100%), quindi consiglio di creare una utenza debian con tale uid e gid e come home il percorso del volume; qualcosa tipo: * gruppo slidge ''sudo groupadd -g 10000 slidge'' * utente slidge ''sudo useradd slidge -r -u 10000 -g 10000 -m -d /var/lib/slidge -s /usr/sbin/nologin'' Consultare ''man useradd'' per le varie opzioni. Il penultimo path è la directory di cui parlavo sopra, dove il volume verrà montato, quindi assicuratevi di impostare lo stesso valore sul compose di docker e per l'utente slidge. Alcuni possibili warning restituiti dal comando: **Warning: missing or non-executable shell '/usr/sbin/nologin'** Installate il pacchetto debian `login` **warning: slidge's uid 10000 is greater than SYS_UID_MAX 999** Ignorate ---- Riguardo la riga "command": * sostituite ''example.tld'' ovumque menzionato, col nome del vostro server XMPP ''--secret='' conterrà una stringa random - una password sostanzialmente, che andrà inserita anche nella configurazione di prosody, che vedremo più tardi. ''--jid='' sarà il nome del componente prosody: potete sceglierne uno qualsiasi, mantenendo naturalmente il dominio su cui è installato il server XMPP. Non necessita di record DNS, in quanto il collegamento tra componenti e server XMPP è solamente interno. ''--user-jid-validator='' lasciate come da esempio ''--upload-service='' serve per il caricamento dei media sul gateway slidge. A seconda di come è configurato il vostro server, questo valore potrebbe cambiare, ma generalmente su prosody è utilizzato il modulo https://prosody.im/doc/modules/mod_http_file_share per cui inserite il nome del componente relativo. Approfondimenti/variazioni: https://slidge.im/core/admin/attachments.html Ogni gateway slidge ha una serie di configurazioni "standard" e altre relative al particolare gateway, ma queste elencate sono sufficienti per una installazione funzionante: maggiori info su https://slidge.im/core/admin/config/index.html ===== Prosody ===== Innanzi tutto installate: https://modules.prosody.im/mod_privilege In ''/etc/prosody/prosody.cfg.lua'' aggiungete il modulo nella configurazione globale. Quindi, sotto al virtualhost "example.tld", aggiungete: privileged_entities = { ["whatsapp.example.tld"] = { roster = "both"; message = "outgoing"; iq = { ["http://jabber.org/protocol/pubsub"] = "both"; ["http://jabber.org/protocol/pubsub#owner"] = "set"; }; } } Cambiate solamente la riga col nome del componente. Sempre nello stesso file, questa volta in fondo, aggiungete: Component "whatsapp.example.com" component_secret = "random_string" modules_enabled = {"privilege"} Di nuovo, cambiate il nome del componente e aggiungete la stringa random (la password) che avete impostato nel compose precedentemente. ---- Dovrebbe essere tutto. Riavviate prosody (oppure ricaricate la conf, caricate il modulo "privilege" ed attivate il componente a mano - si può fare tutto con ''prosodyctl shell'' o con comandi ad-hoc) Avviate il container docker Usate Gajim (o Movim) per registrare la vostra utenza sul gateway, andando nel menu "Discover Services", cliccando sul componente whatsapp e poi su "commands": https://slidge.im/core/user/register.html