Deployn

Anleitung für Commento hinter Traefik

Selbst-gehostetes Kommentarsystem Commento++ mit Traefik als Reverse-Proxy.

Anleitung für Commento hinter Traefik-heroimage

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.

Commento Dashboard

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 🙂


Diese Website verwendet Cookies. Diese sind notwendig, um die Funktionalität der Website zu gewährleisten. Weitere Informationen finden Sie in der Datenschutzerklärung