Mollysocket: notifiche di Signal tramite UnifiedPush

2024-12-08

MollySocket consente di ricevere notifiche tramite UnifiedPush, un insieme di specifiche e strumenti che permette agli utenti di scegliere come gestire la consegna delle notifiche push. Questo sistema è completamente gratuito e open source, garantendo così trasparenza e accessibilità.

Quando MollySocket riceve un evento crittografato dal server di Signal, invia immediatamente una notifica al cellulare. Questo processo assicura che tu sia sempre aggiornato sulle comunicazioni importanti, senza dover dipendere da servizi centralizzati.

Il distributore più semplice da configurare per utilizzare MollySocket è ntfy.

Nel caso in cui non si abbiano le competenze o la voglia di self-hostarsi il servizio, o per semplice testing, chiunque può provare quanto descritto nell’articolo scaricando ntfy e Molly-FOSS, seguendo la semplice procedura di configurazione

Setup

  • Per utilizzare UnifiedPush è necessario utilizzare Molly-FOSS, un fork completamente libero di Signal
  • Un’applicazione distributore, come ntfy

Installazione

Creare l’utente dedicato

Creare l’utente mollysocket

sudo useradd mollysocket -m -d /opt/mollysocket

in particolare:

  • -m opzione che specifica di creare una home directory per l’utente
  • -d /opt/mollysocket opzione che specifica la posizione della home directory dell’utente

Infine, diventare utente mollysocket, spostandosi nella sua home directory:

sudo su - mollysocket

Scaricare il binario

ln -s /opt/mollysocket/mollysocket-amd64-1.5.4 /opt/mollysocket/ms

Questo il risultato:

 > ll /opt/mollysocket/

Permissions Size User        Date Modified Name
.rwxr--r--  4,9M mollysocket  4 dic  2023  mollysocket-amd64-1.5.4
.rw-r-----   12k mollysocket 23 mar 17:12  mollysocket.db
lrwxrwxrwx    40 mollysocket 23 mar 16:17  ms -> /opt/mollysocket/mollysocket-amd64-1.5.4
.rw-r--r--   141 mollysocket 23 mar 17:03  prod.toml

File di configurazione

  • Scaricare il file di configurazione col comando:
wget -O /opt/mollysocket/prod.toml https://github.com/mollyim/mollysocket/raw/main/config-sample.toml

Un esempio:

 > cat /opt/mollysocket/prod.toml

db = '/opt/mollysocket/mollysocket.db'
allowed_endpoints = ['https://ntfy.domain.com']
allowed_uuids = ['*']
webserver = true
port = 8020

Servizio systemd

  • Scaricare la unit di esempio:
wget -O /etc/systemd/system/mollysocket.service https://raw.githubusercontent.com/mollyim/mollysocket/main/mollysocket.service
  • Quindi avviare il servizio:
systemctl enable --now mollysocket

Aggiungere una VAPID key

La VAPID key è utilizzata per autorizzare il server di MollySocket a inviare richieste al tuo server push (es. ntfy), a condizione che quest’ultimo supporti il protocollo VAPID. Questa chiave è fondamentale per garantire che solo i server autorizzati possano inviare notifiche push agli utenti.

  • Per generare una nuova chiave VAPID, eseguire il comando:
/opt/mollysocket/ms vapid gen | systemd-creds encrypt --name=ms_vapid -p - -
  • Modificare il servizio aggiungendo le seguenti righe nel file /etc/systemd/system/mollysocket.service:
[Service]
SetCredentialEncrypted=ms_vapid: \
        k6iUCUh0RJCQyvL8k8q1UyAAAAABAAAADAAAABAAAAC1lFmbWAqWZ8dCCQkAAAAAgAAAA \
        AAAAAALACMA0AAAACAAAAAAfgAg9uNpGmj8LL2nHE0ixcycvM3XkpOCaf+9rwGscwmqRJ \
        cAEO24kB08FMtd/hfkZBX8PqoHd/yPTzRxJQBoBsvo9VqolKdy9Wkvih0HQnQ6NkTKEdP \
        HQ08+x8sv5sr+Mkv4ubp3YT1Jvv7CIPCbNhFtag1n5y9J7bTOKt2SQwBOAAgACwAAABIA \
        ID8H3RbsT7rIBH02CIgm/Gv1ukSXO3DMHmVQkDG0wEciABAAII6LvrmL60uEZcp5qnEkx \
        SuhUjsDoXrJs0rfSWX4QAx5PwfdFuxPusgE==
Environment=MOLLY_VAPID_KEY_FILE=%d/ms_vapid

Infine:

systemctl daemon-reload

systemctl restart mollysocket.service

Configurazione di Caddy proxy server

  • Inserire le seguenti righe nel Caddyfile
 > cat /etc/caddy/Caddyfile

https://molly.domain.com {
    reverse_proxy / localhost:8020
}

Configurazione ntfy

  • Installare sul proprio cellulare ntfy
  • Nelle impostazioni dell’applicazione, impostare il server ntfy di default, altrimenti lasciare quello standard
  • In Molly, nelle Impostazioni>Notifiche>Servizio di consegna, selezionare UnifiedPush e quindi scansionare il codice QR disponibile sul sito web indicato nel Caddyfile, per esempio: https://molly.ilnostropianetaselvaggio.it/

qr_code_molly

Troubleshooting

Per testare che tutto funzioni correttamente:

su mollysocket

# Replace the UUID with your account Id
# L'account Id si trova In Molly, nelle Impostazioni>Notifiche>UnifiedPush

/opt/mollysocket/ms connection ping c8d44128-5c99-4810-a7d3-71c079891c27

Oppure direttamente dall’applicazione, sempre in Impostazioni>Notifiche>Configure UnifiedPush, cliccando Test configuration. Dovrebbe apparire una notifica push

Update

  • Collegarsi al server e diventare utente mollysocket, spostandosi nella sua home directory:
sudo su - mollysocket
chmod 744 mollysocket-amd64-2.0.1
  • Eliminare il vecchio link simbolico e crearne uno nuovo:
rm -rf ms
ln -s /opt/mollysocket/mollysocket-amd64-2.0.1 /opt/mollysocket/ms
  • Riavviare il servizio, come utente root
systemctl restart mollysocket.service

Riferimenti