Anleitung für Commento hinter Traefik
Selbst-gehostetes Kommentarsystem Commento++ mit Traefik als Reverse-Proxy.
Inhaltsverzeichnis
Ich möchte gerne Kommentare in meinem Blog ermöglichen. Disqus kostet Geld, wenn man keine Werbung haben möchte und die Nutzer werden getrackt. Deshalb muss eine selbst gehostete Lösung her: Commento.
Commento is a fast, privacy-focused commenting platform
Es ist möglich für $ 10 / Monat Commento hosten zu lassen. In dieser Anleitung geht es aber darum, wie man Commento selbst hostet mit Traefik als reverse Proxy. Der Server sollte ungefähr so wie hier beschrieben eingerichtet sein.
Commento benötigt zum Laufen eine Datenbank, wir nutzen Postgres. Zunächst brauchen wir einen neuen Ordner.
cd ~/docker
touch docker-compose-commento.yml
mkdir appdata/commento/db -p
nano docker-compose-commento.yml
version: "3.7"
### NETWORKS ###
networks:
web:
external:
name: web
internal:
external: false
default:
driver: bridge
### SERVICEs ###
services:
commento-server:
container_name: commento
image: registry.gitlab.com/commento/commento
restart: unless-stopped
networks:
- internal
- web
security_opt:
- no-new-privileges:true
environment:
- COMMENTO_ORIGIN=https://commento.einedomain.de
- COMMENTO_PORT=8080
- COMMENTO_POSTGRES=postgres://postgres:passwort@commento-db:5432/commento?sslmode=disable
labels:
- "traefik.enable=true"
- "traefik.http.routers.commento-rtr.entrypoints=https"
- "traefik.http.routers.commento-rtr.rule=Host(`commento.$DOMAINNAME`)"
- "traefik.http.routers.commento-rtr.tls=true"
- "traefik.http.routers.commento-rtr.service=commento-svc"
- "traefik.http.services.commento-svc.loadbalancer.server.port=8080"
- "traefik.http.routers.commento-rtr.middlewares=chain-no-auth@file"
depends_on:
- commento-db
commento-db:
container_name: commento-db
image: postgres
restart: unless-stopped
networks:
- internal
security_opt:
- no-new-privileges:true
environment:
- POSTGRES_DB=commento
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=passwort
volumes:
- $DOCKERDIR/appdata/commento/db:/var/lib/postgresql/data
labels:
- "traefik.enable=false"
Was geändert werden muss ist die Domain und das Passwort. Das war’s auch schon, docker-compose -f docker-compose-commento up -d
startet den Container. Jetzt rufen wir die Domain auf unter der Commento läuft und erstellen einen Account. Wenn der Account erstellt ist und wir uns im Dashboard befinden, geben wir wieder den Befehl docker-compose -f docker-compose-commento down
ein.
Wir passen die Einstellungen an.
version: "3.7"
### NETWORKS ###
networks:
web:
external:
name: web
internal:
external: false
default:
driver: bridge
### SERVICEs ###
services:
commento-server:
container_name: commento
image: registry.gitlab.com/commento/commento
restart: unless-stopped
networks:
- internal
- web
security_opt:
- no-new-privileges:true
environment:
- COMMENTO_ORIGIN=https://commento.einedomain.de
- COMMENTO_PORT=8080
- COMMENTO_POSTGRES=postgres://postgres:passwort@commento-db:5432/commento?sslmode=disable
- COMMENTO_FORBID_NEW_OWNERS=true
labels:
- "traefik.enable=true"
- "traefik.http.routers.commento-rtr.entrypoints=https"
- "traefik.http.routers.commento-rtr.rule=Host(`commento.$DOMAINNAME`)"
- "traefik.http.routers.commento-rtr.tls=true"
- "traefik.http.routers.commento-rtr.service=commento-svc"
- "traefik.http.services.commento-svc.loadbalancer.server.port=8080"
- "traefik.http.routers.commento-rtr.middlewares=chain-no-auth@file"
depends_on:
- commento-db
commento-db:
container_name: commento-db
image: postgres
restart: unless-stopped
networks:
- internal
security_opt:
- no-new-privileges:true
environment:
- POSTGRES_DB=commento
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=passwort
volumes:
- $DOCKERDIR/appdata/commento/db:/var/lib/postgresql/data
labels:
- "traefik.enable=false"
Das Environment vom Commento-Server ist um einen Eintrag erweitert.
docker-compose -f docker-compose-commento up -d
Nun sollte es nicht mehr möglich sein einen neuen Account bei Commento anzulegen.
Warum werden dann unten keine Kommentare angezeigt? Weil die DSGVO es ohne Einschränkungen nicht zulässt. In Commento ist bisher keine Möglichkeit für die Nutzer integriert, ihren Account selbst zu löschen. Anonyme Kommentierer haben keine Möglichkeit einen Namen einzugeben (also heißen dann alle gleich). Jeder kann sich mit jeder E-Mail Adresse registrieren, man muss keine Bestätigungsmail akzeptieren.
Dies führt dazu, dass ich mich zum jetzigen Zeitpunkt dazu entschieden habe, keine Kommentarfunktion einzufügen. 😢
Update:
Nach einiger Suche habe ich das Repository von souramoo mit Commento++ gefunden. Sein Fork von Commento erlaubt es zumindest anonymen Nutzern einen Namen zu wählen, wodurch der Einsatz von Fake-Mail-Adressen nicht mehr nötig ist.
Er hat auch innerhalb weniger Minuten auf meine Anfrage reagiert, ob die Implementierung einer Funktion möglich wäre, die es Nutzern erlaubt, ihren Account wieder zu löschen. Diese wurde bereits umgesetzt und ist ab Version 1.8.6 verfügbar.
Es wird jedenfalls Zeit das Docker-Image zu ändern.
cd ~/docker
docker-compose -f docker-compose-commento.yml down
nano docker-compose-commento.yml
version: "3.7"
### NETWORKS ###
networks:
web:
external:
name: web
internal:
external: false
default:
driver: bridge
### SERVICEs ###
services:
commento-server:
container_name: commento
image: caroga/commentoplusplus
restart: unless-stopped
networks:
- internal
- web
security_opt:
- no-new-privileges:true
environment:
- COMMENTO_ORIGIN=https://commento.einedomain.de
- COMMENTO_PORT=8080
- COMMENTO_POSTGRES=postgres://postgres:IrerenrBeAsdf@commento-db:5432/commento?sslmode=disable
- COMMENTO_FORBID_NEW_OWNERS=true
- COMMENTO_GZIP_STATIC=true
labels:
- "traefik.enable=true"
- "traefik.http.routers.commento-rtr.entrypoints=https"
- "traefik.http.routers.commento-rtr.rule=Host(`commento.$DOMAINNAME`)"
- "traefik.http.routers.commento-rtr.tls=true"
- "traefik.http.routers.commento-rtr.service=commento-svc"
- "traefik.http.services.commento-svc.loadbalancer.server.port=8080"
- "traefik.http.routers.commento-rtr.middlewares=chain-no-auth@file"
depends_on:
- commento-db
commento-db:
container_name: commento-db
image: postgres
restart: unless-stopped
networks:
- internal
security_opt:
- no-new-privileges:true
environment:
- POSTGRES_DB=commento
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=IrerenrBeAsdf
volumes:
- $DOCKERDIR/appdata/commento/db:/var/lib/postgresql/data
labels:
- "traefik.enable=false"
Die wichtigste Änderung ist das Image vom Commento-Server.
docker-compose -f docker-compose-commento up -d
Damit läuft der Server. Commento++ muss nur noch in die eigene Webseite eingebunden werden 🙂