Convos: Client IRC Self-hosted e Persistente

Published at December 18, 2020 – 8 min read

Convos IRC Client

Nel 2020, soprattutto a causa della recente pandemia, molte persone hanno incominciato a prendere confidenza con strumenti di comunicazione interna.

Microsoft Teams, Slack, Telegram, Mattermost e molti altri sono gli strumenti più utilizzati in assoluto ma c’è ancora qualcuno che utilizza IRC (Internet Relay Chat), uno dei primi servizi di “messaggistica” online. Molti degli attuali client si sono ispirati a IRC che sta andando via via in disuso per via delle nuove caratteristiche delle applicazioni di messaggistica.

Seppur IRC sia considerato “arcaico”, oggi più che mai viene utilizzato come ritrovo di moltissime comunità online. Ad esempio software open-source e moltissimi nostalgici fanno di IRC un luogo di discussione, dove non è l’identità a definire chi sei, bensì il contenuto.

Ho deciso di scrivere questo articolo per illustrare cosa sia IRC e per condividere un buon prodotto che migliora di molto il protocollo IRC, aggiungendo caratteristiche comuni alle moderne applicazioni. Se hai bisogno di una soluzione comoda e self-hosted per connetterti ad IRC, allora questo articolo fa per te.

Nei seguenti paragrafi, andremo ad esaminare:

  • cosa è il protocollo di comunicazione di IRC;
  • ottenere una chat persistente su IRC;
  • Convos, un alternativa a IRCCloud e le sue caratteristiche;
  • l’installazione di Convos su Debian/Ubuntu;
  • la configurazione di Convos;

Il protocollo di comunicazione IRC

Internet Relay Chat è un servizio che agevola la comunicazione online tramite messaggi di testo basandosi sul modello “client-server”. In modo più tecnico e preciso, IRC può essere considerato un protocollo di rete (a livello applicativo) che sfrutta una rete composta di server per inviare con facilità messaggi di testo ai partecipanti della rete.

IRC è stato sviluppato alla fine degli anni 80 del 20° secolo da Jarkko Oikkarinen, uno studente finlandese che voleva sviluppare un sistema di comunicazione per la sua rete. Ben presto questo sistema di comunicazione si estese a tal punto che più di 200,000 utenti erano connessi ogni giorno.

Per iniziare a scambiarsi messaggi di testo, l’utente si connette alla rete IRC tramite un client (ad esempio, Pidgin, mIRC ) che si connette al server più vicino all’utente in modo da garantire prestazioni ad altà velocità. Vi sono diverse reti come Freenode, Swift IRC, IRCNet, QuakeNet. [TODO: Aggiungi più reti.]

All’interno di IRC, si accede con un nickname (ASCII) che permette di essere riconosciuti all’interno della stessa rete. Per iniziare a chattare vi sono due diverse modalità: iniziare una chat privata con un altro utente (query), oppure connettersi ad un canale. Un canale è un posto dedicato per chattare con molteplici utenti, senza scrivere ad ognuno separatamente. Potrebbe suonare strano, ma stiamo parlando di una “rivoluzione” negli anni ‘90. Un canale può essere amministrato da utenti con privilegi speciali chiamati operatori che hanno il potere di allontanare e invitare le persone, rendere il canale privato (invisibile alla rete), impostare una password e molto altro ancora.

Dal punto di vista tecnico, una rete IRC, attualmente descritta dallo standard RFC 1459, è composta da diversi nodi mantenuti da un entità centralizzata. Quando utente con un apposito client si connette ad uno dei server, tutta la rete deve essere informata sulla presenza di questo client, replicando in tutti i server: il nickname, il nome dell’host dal quale il client ha accesso ad internet ed il nome del server a cui tale host è collegato.

Riguardo al nickname, potresti pensare che qualsiasi persona potrebbe personificare il tuo nickname. La soluzione è quella di registrare il proprio nickname con una password[^1], successivamente il server ti chiederà di identificarti con la password. Leggi anche di Come Registrare il proprio Nickname su Freenode.

Dal punto di vista storico, IRC rappresenta un protocollo di comunicazione consolidato, utilizzato tutt’oggi come ambiente di discussione per community legate all’ambiente open-source. È stato talmente apprezzato che moltissime applicazioni di messaggistica - se non tutte - sono state sviluppate ispirandosi al modo semplice di IRC: i gruppi sono i canali, le query sono le chat private, gli operatori sono gli amministratori.

Se vuoi scoprire tutti i comandi per gestire al meglio un tuo canale, ti suggerisco di leggere la lista dei comandi disponibili su IRC.

Da molto tempo, IRC è luogo di ritrovo di moltissime comunità, tra cui Firefox, Bitcoin, Gnome [todo: aggiungere più comunità che utilizzano]. IRC è stata anche luogo di moltissimi storici “jokes”; a titolo d’onore come non menzionare Hunter2, il tizio che ha perso un dispositivo nel suo appartamento e l’intramontabile “qualcuno parla python qui?".

IRC non morirà mai

Il maggior svantaggio di IRC è dato dal fatto di non poter essere sempre connessi ad uno specifico server, se non lasciando il client sempre acceso. A differenza dei normali client di messaggistica non ti arriveranno i messaggi se non sei presente sulla rete IRC. Il server infatti non memorizza alcun messaggio!

Una delle soluzioni adottate per questo problema è comprare una VPS e gestire la connessione a IRC tramite un client testuale con interfaccia a riga di comando. Questo tuttavia può risultare scomodo su dispositivi mobili, ma anche per una persona poco pratica di riga di comando. Per ovviare al problema, esiste un’alternativa gratuita self-hosted chiamata Convos che permette di connettersi tramite interfaccia web a IRC, ma non solo!

Convos.chat: la soluzione per essere sempre connessi

Convos è un client open-source self-hosted per connettersi a IRC, mantenuto da Jan Henning Thorsen e Marcus. Il backend è stato sviluppato con Mojolicious, un framework per Perl, mentre per la parte front-end si è utilizzato il framework Javascript Svelte.

Sviluppato dall’inizio del 2014, Convos si è rivelato un progetto molto interessante, seppur sia mantenuto da una sola persona. Tra le sue caratteristiche principali, troviamo la connessione a IRC persistente: non c’è più il rischio di perdersi qualche importante discussione! L’utente è connesso fin tanto che il daemon di Convos è attivo e ogni messaggio è memorizzato in un log accessibile solo al proprietario del server.

Iniziare a chattare non è mai stato così semplice grazie alla web chat. Un’interfaccia semplice permette di inviare messaggi su IRC da qualsiasi dispositivo, che sia uno smartphone o un frigo, basta avere un browser. È possibile inoltre scegliere un tema tra quelli disponibili o scrivere il proprio. Un altro vantaggio di Convos è la sua natura self-hosted. Non esiste un server centralizzato di terze parti - come IRCCloud - che memorizza i tuoi messaggi; nessuno oltre a te vedrà i messaggi e i log di IRC.

Screenshot di Convos

Se hai bisogno di uploadare un file ma non vorresti condividerlo con terze parti, Convos permette di caricare sul tuo server un file di qualsiasi estensione. Trascina il file e Convos farà il resto, creando un link univoco da condividere per poter accedere al file. Vuoi cancellarlo? Potrai farlo senza problemi :)

Drag and Drop per Convos Per i file di testo è ancora meglio! Tutti i messaggi che avranno più di 4 “Line Break” verranno caricati in una sorta di pastebin personale.

Nel 2020 è d’obbligo avere le Emoji! Basta scrivere :nome_emoji per visualizzare la lista dell’emoji disponibili su Convos! Nota che anche tutti i caratteri Unicode sono compatibili, quindi da smartphone non ci saranno problemi. È possibile inoltre aggiungere dei link, mettere in grassetto e in italico i tuoi messaggi con Markdown.

In definitiva, Convos rappresenta la migliore alternativa gratuita a IRCCloud, un servizio con le stesse caratteristiche ma costoso e centralizzato. Recentemente l’infrastruttura di IRCCloud ha sofferto di molti down che hanno impattato una buona percentuale di utenti. A differenza poi di IRCCloud, le spese di un server privato sono molto limitate specialmente se confrontate a quanto si paga per molti utenti con IRCCLoud (dato che IRCCloud fa pagare ad utente).

Come iniziare a chattare con Convos

L’installazione e la configurazione di Convos è molto semplice e non richiede particolari conoscenze di shell scripting. Gli sviluppatori hanno preparato uno script molto comodo da avviare per poter installare il Web client in un minuto.

[email protected]#: curl https://convos.chat/install.sh | sh -

Codice dello script se si vuole visionarlo. Se lo script non ha evidenziato alcun problema, procediamo all’avvio del demone di Convos:

[email protected]#: ./convos/script/convos daemon

Avvia il tuo browser e inserisci http://localhost:3000 per iniziare a chattare! Non ci sono altri passaggi aggiuntivi!

Puoi modificare la porta o l’indirizzo IP d’ascolto tramite la flag --listen, anche se è caldamente consigliato eseguire Convos dietro un server proxy.

Dato che sarai il primo utente, di default verrai impostato come amministratore di Convos. Questo ti permetterà di gestire gli utenti, ripristinando la password in caso di bisogno o creandone dei nuovi, e impostare alcune variabili di ambiente globali come la connessione di default di Convos.

In aggiunta, se desideri eseguire Convos tramite un server proxy, ti consiglio di leggere la guida “How to Run Convos Behind Your Favourite Server”. Un reverse proxy è un particolare applicativo che funge da intermediario – in questo caso – tra il client (l’utente) e il daemon Convos: è utile se si vogliono avere caratteristiche come SSL management, load balancing, compressione e caching di risorse statiche.

Consiglio personalmente di impostarlo sotto NGINX o Apache con un certificato Let’s Encrypt in modo da comunicare con il server attraverso una connessione sicura.

Utilizzo Convos da più di un anno e non ho mai avuto disservizi di alcun tipo. Rispetto ai suoi concorrenti, quali TheLounge sviluppato in Node.JS, Convos è molto più veloce. Le caratteristiche del client tra cui la minima configurazione richiesta e la semplicità di utilizzo rendono IRC ancora un buon mezzo di comunicazione nel 2020. I log interni di tutte le chat e la comoda funzione di ricerca mi permettono di essere sempre aggiornato sulle discussioni che seguo (sì, mi sto riferendo a #monero).

Vuoi saperne di più riguardo il progetto Convos? Unisciti alla discussione sul canale #convos su Freenode IRC, o scrivimi per farmi sapere la tua opinione!

Ultimo aggiornamento il February 4, 2021

About

I am a security researcher, a writer, and contributor to the Monero project, a cryptocurrency focused on preserving privacy for transactions data. My publication Mastering Monero has became one of the best rated resources to learn about Monero. More about me

Follow me on Twitter or send me an email. I also appreciate donations, they allow me to continue doing my work and writing.

Mastering Monero book