Initial commit
This commit is contained in:
commit
ee1d292475
159 changed files with 4867 additions and 0 deletions
182
content/notizen/2024-03-15-mollysocket-installation.md
Normal file
182
content/notizen/2024-03-15-mollysocket-installation.md
Normal file
|
@ -0,0 +1,182 @@
|
|||
---
|
||||
author: "Norbert Tretkowski"
|
||||
title: "MollySocket Installation"
|
||||
date: "2024-03-15"
|
||||
tags: ['Android', 'Conversations', 'Docker', 'Messenger', 'Molly', 'MollySocket', 'Ntfy', 'Signal', 'UnifiedPush', 'XMPP']
|
||||
cover: "/uploads/2024/mollysocket.jpg"
|
||||
---
|
||||
Der Messenger [Signal](https://signal.org/) kann auch auf Android-Geräten ohne Google Play Services verwendet werden, dabei zieht die App aber ganz massiv am Akku. Das Problem ist beim Hersteller [seit Jahren bekannt](https://github.com/signalapp/Signal-Android/issues/9729), es scheint aber leider keine Motivation zu geben, es zu beheben.
|
||||
|
||||
In diese Bresche springt seit einiger Zeit [Molly](https://molly.im), ein inoffizieller Fork von Signal, welcher eine Version anbietet, die [UnifiedPush](https://unifiedpush.org/) implementiert.
|
||||
|
||||
Zur Nutzung ist ein weiter Dienst namens [MollySocket](https://github.com/mollyim/mollysocket) nötig, dessen Installation ich hier beschreibe.
|
||||
|
||||
## Docker Setup
|
||||
|
||||
Das Setup via Docker ist recht einfach, Voraussetzung ist ein Linux-System (in meinem Fall ist das Debian 12) mit Docker. Auf die [Installation von Docker](https://docs.docker.com/engine/install/debian/) selbst gehe ich hier nicht ein.
|
||||
|
||||
Folgende beiden Dateien auf dem System ablegen:
|
||||
|
||||
### nginx.conf
|
||||
```nginx
|
||||
worker_processes 1;
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
|
||||
server_name molly.inittab.de;
|
||||
|
||||
location / {
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
|
||||
server_name molly.inittab.de;
|
||||
|
||||
ssl_certificate /etc/letsencrypt/live/molly.inittab.de/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/molly.inittab.de/privkey.pem;
|
||||
|
||||
location / {
|
||||
proxy_set_header X-Forwarded-For $remote_addr;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_pass http://mollysocket:8020;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
Quelle: [Codeberg](https://codeberg.org/tretkowski/mollysocket/raw/branch/main/nginx.conf)
|
||||
|
||||
### docker-compose.yml
|
||||
```Dockerfile
|
||||
services:
|
||||
certbot:
|
||||
restart: "no"
|
||||
image: certbot/certbot:v3.2.0
|
||||
command: certonly --standalone --noninteractive --email norbert@tretkowski.de --agree-tos --domains molly.inittab.de
|
||||
volumes:
|
||||
- $PWD/certs:/etc/letsencrypt
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
networks:
|
||||
- external
|
||||
- internal
|
||||
|
||||
nginx:
|
||||
image: nginx:1.27.4-alpine-slim
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- mollysocket
|
||||
volumes:
|
||||
- $PWD/certs:/etc/letsencrypt:ro
|
||||
- $PWD/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
networks:
|
||||
- external
|
||||
- internal
|
||||
|
||||
mollysocket:
|
||||
image: ghcr.io/mollyim/mollysocket:1.6.0-alpine
|
||||
container_name: mollysocket
|
||||
restart: always
|
||||
volumes:
|
||||
- ./data:/data
|
||||
working_dir: /data
|
||||
command: server
|
||||
environment:
|
||||
- MOLLY_DB="/data/mollysocket.db"
|
||||
- MOLLY_ALLOWED_ENDPOINTS=["https://up.conversations.im/","https://ntfy.sh/"]
|
||||
#- MOLLY_ALLOWED_UUIDS=["7d6ffb3e-6a0d-4335-8e6e-7acee0d20d34"]
|
||||
#- MOLLY_VAPID_PRIVKEY="paste output of `docker compose run mollysocket vapid gen` here"
|
||||
- MOLLY_HOST=0.0.0.0
|
||||
- MOLLY_PORT=8020
|
||||
- RUST_LOG=info
|
||||
ports:
|
||||
- "127.0.0.1:8020:8020"
|
||||
networks:
|
||||
- external
|
||||
- internal
|
||||
|
||||
networks:
|
||||
external:
|
||||
internal:
|
||||
internal: true
|
||||
```
|
||||
Quelle: [Codeberg](https://codeberg.org/tretkowski/mollysocket/raw/branch/main/docker-compose.yml)
|
||||
|
||||
In der Datei `nginx.conf` noch den Hostnamen und in der Datei `docker-compose.yml` den Hostnamen und die E-Mail-Adresse anpassen und dann den `certbot` Container starten:
|
||||
```bash
|
||||
# docker compose up certbot -d
|
||||
[+] Running 1/1
|
||||
✔ Container root-certbot-1 Started 0.3s
|
||||
```
|
||||
|
||||
Der Container beendet sich nach erfolgreich erstelltem SSL Zertifikat direkt wieder und es können dann die beiden für MollySocket nötigen Container `mollysocket` und `nginx` gestartet werden:
|
||||
```bash
|
||||
# docker compose up nginx mollysocket -d
|
||||
[+] Running 2/2
|
||||
✔ Container mollysocket Started 0.3s
|
||||
✔ Container root-nginx-1 Started 0.6s
|
||||
```
|
||||
|
||||
Für die Aktualisierung der SSL Zertifikate sollte der Let's Encrypt Container regelmäßig gestartet werden, da die Zertifikate nur drei Monate gültig sind.
|
||||
|
||||
## Molly für UnifiedPush
|
||||
|
||||
In F-Droid muss dann das [Molly F-Droid Repo](https://molly.im/fdroid/foss/repo/) eingebunden und daraufhin die Molly (UnifiedPush) App installiert werden.
|
||||
|
||||

|
||||
|
||||
Neben Molly ist auch noch [ntfy](https://ntfy.sh/) oder [Conversations](https://conversations.im/) nötig, beide können ebenfalls über den F-Droid Store installiert werden. Für Conversations muss auch noch ein XMPP Account vorhanden sein, daher konzentrieren wir uns hier auf die Nutzung von ntfy. Diese App muss nach der Installation einmalig gestartet werden.
|
||||
|
||||
Nach der initialen Einrichtung von Molly muss noch in den Einstellungen unter Benachrichtigungen beim Punkt "Push Strategy" von "WebSocket" auf UnifiedPush umgestellt und die Server URL eingetragen werden:
|
||||
|
||||

|
||||
|
||||
Im Logfile des MollySocket Containers taucht dann die neue Verbindung auf:
|
||||
```bash
|
||||
# docker logs mollysocket -f
|
||||
[...]
|
||||
[2024-05-25T10:32:17Z INFO rocket::server] POST / application/json:
|
||||
[2024-05-25T10:32:17Z INFO rocket::server::_] Matched: (register) POST / application/json
|
||||
[2024-05-25T10:32:17Z INFO rocket::server::_] Outcome: Success(200 OK)
|
||||
[2024-05-25T10:32:17Z INFO mollysocket::server::connections] Starting connection for 7d6ffb3e-6a0d-4335-8e6e-7acee0d20d34
|
||||
[2024-05-25T10:32:17Z INFO rocket::server::_] Response succeeded.
|
||||
[2024-05-25T10:32:18Z INFO mollysocket::ws::websocket_connection] WebSocket handshake has been successfully completed
|
||||
```
|
||||
|
||||
Wenn der MollySocket Server nur für die eigenen Molly Installationen genutzt werden soll, können die erlaubten UUIDs in der `docker-compose.yml` unter `services.mollysocket.environment` noch explizit aufgeführt werden:
|
||||
```Dockerfile
|
||||
services:
|
||||
mollysocket:
|
||||
environment:
|
||||
- MOLLY_ALLOWED_UUIDS=["7d6ffb3e-6a0d-4335-8e6e-7acee0d20d34"]
|
||||
```
|
||||
|
||||
Für ntfy muss dann noch die Batterieoptimierung deaktiviert werden, die App weist beim nächsten Start darauf hin und listet auch die UnifiedPush Verbindung für Molly:
|
||||
|
||||

|
||||
|
||||
Zum Testen der Verbindung kann nach der Einrichtung ein `ping` abgesetzt werden:
|
||||
```bash
|
||||
# docker exec mollysocket mollysocket connection ping 7d6ffb3e-6a0d-4335-8e6e-7acee0d20d34
|
||||
[2024-05-25T10:57:54Z INFO mollysocket::config] No config file supplied
|
||||
```
|
||||
|
||||
Dies sollte auf dem Smartphone zu einer Benachrichtigung führen:
|
||||
|
||||

|
||||
|
||||
Und weil Molly die Möglichkeit zur Spende an Signal aus der App entfernt hat sei noch der Hinweis erlaubt, dass man Signal auch über deren Webseite [Spenden](https://signal.org/de/donate/) zukommen lassen kann...
|
Loading…
Add table
Add a link
Reference in a new issue