Zum Hauptinhalt springen Skip to page footer

Remark42 unter Ubuntu 22.04 installieren: Ein Open-Source-Kommentarsystem für Websites und Anwendungen

| Tutorial | Remark42 Docker Ubuntu Linux

Remark42 ist ein Open-Source-Kommentarsystem, das für die Integration in Websites und Anwendungen entwickelt wurde. Es bietet eine dezentralisierte Datenbank, eine bessere Kontrolle über die Daten und einen besseren Schutz der Privatsphäre der Benutzer. In diesem Tutorial erfahren Sie, wie Sie Remark42 auf einem Ubuntu 22.04 Server installieren, die notwendigen Voraussetzungen konfigurieren und das System in Ihre Website integrieren.

Was ist Remark42?

Remark42 ist ein Open-Source-Kommentarsystem, das für die Integration in Websites und Anwendungen entwickelt wurde. Es bietet eine Plattform für Besucher, um Kommentare zu veröffentlichen, Diskussionen zu führen und Feedback zu Inhalten zu geben.

Das Besondere an Remark42 ist, dass es als dezentrales Kommentarsystem konzipiert ist. Das bedeutet, dass die Kommentardatenbank auf der eigenen Website oder Anwendung gehostet wird und nicht auf einem zentralen Server. Dies ermöglicht eine bessere Kontrolle über die Daten und schützt die Privatsphäre der Nutzer, da ihre Kommentare nicht auf Servern Dritter gespeichert werden.

Remark42 bietet verschiedene Funktionen, darunter Benachrichtigungen bei neuen Kommentaren, die Möglichkeit, Kommentare zu moderieren, die Integration von Markdown zur Formatierung von Kommentaren und die Möglichkeit, Kommentare über soziale Netzwerke zu teilen. Es unterstützt auch Authentifizierungsdienste wie Google, Facebook und Twitter, um Benutzern das Einloggen und Kommentieren zu erleichtern.

Da es sich um ein Open-Source-Projekt handelt, kann Remark42 von Entwicklern angepasst und erweitert werden, um den spezifischen Anforderungen einer Website oder Anwendung gerecht zu werden. Es ist in verschiedenen Programmiersprachen, einschließlich Go, verfügbar und steht unter der MIT-Lizenz, was bedeutet, dass es kostenlos verwendet werden kann.

Bitte beachten Sie, dass sich meine Informationen auf den Stand von September 2021 beziehen und dass es seitdem Aktualisierungen oder neue Funktionen von Remark42 gegeben haben kann.

Voraussetzungen

Schritt 1: System aktualisieren

Aktualisieren Sie den apt-Paketindex und bringen Sie alle Pakete auf den neuesten Stand:
sudo apt update && sudo apt upgrade -y

Schritt 2: Kontrollieren der Firewall

Kontrollieren Sie, ob in der Firewall http- (Port 80) und https- (Port 443) Verbindungen erlaubt sind
sudo ufw status
Ausgabe:
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
Sollten die Verbindungen zu den Ports 80 und 443 nicht freigegeben sein, können Sie sie mit folgenden Befehlen freigeben:
sudo ufw allow http
sudo ufw allow https

Schritt 4: Nginx installieren

Ubuntu 22.04 wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, müssen Sie das offizielle Nginx-Repository herunterladen.

Importieren Sie den Nginx-Signierschlüssel:
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Ausgabe:
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1561  100  1561    0     0  17079      0 --:--:-- --:--:-- --:--:-- 17153
Fügen Sie das Repository für die stabile Version von Nginx hinzu:
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Ausgabe:
deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] http://nginx.org/packages/ubuntu jammy nginx
Aktualisieren Sie erneut der Repositories:
sudo apt update
Installieren Sie Nginx:
sudo apt install nginx
Prüfen Sie die Installation:
nginx -v
Ausgabe:
nginx version: nginx/1.24.0

Schritt 5: Certbot und SSL installieren

Siehe “Certbot unter Ubuntu 22.04 installieren

Wenn Sie Certbot installiert haben führen Sie den folgenden Befehl aus, um ein SSL-Zertifikat zu erzeugen:
sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m youralias@yourdomain.com -d comments.yourdomain.com
Ausgabe:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Account registered.
Requesting a certificate for comments.yourdomain.com

Successfully received certificate.
Certificat comments.yourdomain.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/comments.yourdomain.com/privkey.pem
This certificate expires on 2023-10-06.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Wenn Sie Certbot installiert haben führen Sie den folgenden Befehl aus, um ein SSL-Zertifikat zu erzeugen:
sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m youralias@yourdomain.com -d comments.yourdomain.com
Ausgabe:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for comments.yourdomain.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/comments.yourdomain.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/comments.yourdomain.com/privkey.pem
This certificate expires on 2023-10-06.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Der obige Befehl erzeugt ein Zertifikat und legt dieses im Verzeichnis /etc/letsencrypt/live/comments.yourdomain.com  ab.

Schritt 6: Reark42 installieren

Kopieren Sie die Datei docker-compose.yml aus dem offiziellen Leitfaden und passen Sie sie an Ihre Bedürfnisse an. Sie können zuerst einen Ordner erstellen und die docker-compose.yml in diesen Ordner einfügen.

docker-compose.yml aus offiziellen Leitfaden
version: "2"

services:
  remark:
    # remove the next line in case you want to use this docker-compose separately
    # as otherwise it would complain for absence of Dockerfile
    build: .
    image: umputun/remark42:latest
    container_name: "remark42"
    hostname: "remark42"
    restart: always

    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "5"

    # uncomment to expose directly (no proxy)
    #ports:
    #  - "80:8080"
    #  - "443:8443"

    environment:
      - REMARK_URL
      - SECRET
      - DEBUG=true
      - AUTH_GOOGLE_CID
      - AUTH_GOOGLE_CSEC
      - AUTH_GITHUB_CID
      - AUTH_GITHUB_CSEC
      - AUTH_FACEBOOK_CID
      - AUTH_FACEBOOK_CSEC
      - AUTH_DISQUS_CID
      - AUTH_DISQUS_CSEC
      # Enable it only for the initial comment import or for manual backups.
      # Do not leave the server running with the ADMIN_PASSWD set if you don't have an intention
      # to keep creating backups manually!
      # - ADMIN_PASSWD=<your secret password>
    volumes:
      - ./var:/srv/var
Beispielkonfiguration docker-compose.yml
version: '3'

services:
    remark:
        build: .
        image: umputun/remark42:latest
        container_name: "remark42"
        restart: always

        logging:
            driver: json-file
            options:
                max-size: "10m"
                max-file: "5"

        ports:
          - "8081:8080"

        environment:
            - REMARK_URL=http://comments.yourdomain.com
            - SITE=remark
            - SECRET=********  # Sollte das root-Passwort des Servers sein
            - SMTP_HOST=smtp.yourmaildomain.de
            - SMTP_PORT=465
            - SMTP_TLS=true
            - SMTP_USERNAME=notify@yourdomain.com
            - SMTP_PASSWORD=yourPassword
            - AUTH_EMAIL_ENABLE=true
            - AUTH_EMAIL_FROM=notify@yourdomain.com
            - AUTH_EMAIL_SUBJ="Kommentar-Bestätigung"
            - PROXY_CORS=false
            - NOTIFY_USERS=email
            - NOTIFY_ADMINS=email
            - NOTIFY_EMAIL_FROM=notify@yourdomain.com
            - NOTIFY_EMAIL_VERIFICATION_SUBJ="E-Mail Überprüfung"
            - ADMIN_SHARED_EMAIL=webmaster@yourdomain.com
            - ADMIN_SHARED_ID=email_86f268a5a1e9387d40d5d172b35fb2d5a8e4a2e0a
            - STORE_BOLT_PATH=/srv/var/db
            - BACKUP_PATH=/srv/var/backup
        volumes:
            - ./var:/srv/var

Speichern Sie die Datei.

In der Beispielskonfiguration wird nur das Authentifizierungsverfahren per E-Mail konfiguriert. Bei diesem Verfahren müssen die Nutzer bei jeder Anmeldung Benutzername und E-Mail angeben und erhalten per E-Mail einen One-Time Freischaltcode.

Schritt 7 – Nginx konfigurieren

sudo nano /etc/nginx/conf.d/comments.yourdomain.conf
Fügen Sie den folgenden Code ein:
server {
    listen      443;
    server_name comments.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/comments.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/comments.yourdomain.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/comments.yourdomain.com/chain.pem;
    ssl_session_timeout 1d;

    # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
    ssl_protocols TLSv1.2 TLSv1.3;

    # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
    # prevent replay attacks.
    #
    # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
    ssl_early_data on;

    gzip on;
    gzip_types text/plain application/json text/css application/javascript application/x-javascript text/javascript text/xml application/xml application/rss+xml application/atom+xml>
    gzip_min_length 1000;
    gzip_proxied any;


    location ~ /\.git {
        deny all;
    }

    location /index.html {
         proxy_redirect          off;
         proxy_set_header        X-Real-IP $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header        Host $http_host;
         proxy_pass              http://127.0.0.1:8081/web/index.html;
     }

    location / {
         proxy_redirect          off;
         proxy_set_header        X-Real-IP $remote_addr;
         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header        Host $http_host;
         proxy_pass              http://127.0.0.1:8081/;
    }

    access_log   /var/log/nginx/comments.yourdomain.com.log;

}

server {
  listen 80;
  server_name comments.yourdomain.com;
  return      301 https://comments.yourdomain.com$request_uri;
}

Speichern Sie die Datei.

Prüfen Sie zuerst Ihre Nginx-Konfiguration:
sudo nginx -t
Starten Sie den Nginx-Server neu:
sudo systemctl restart nginx

Schritt 8: Remark42 ausführen

Wechseln Sie in das Remark42-Verzeichnis:
cd ~/remark42
Sie das Image umputun/remark42:latest aus dem DockerHub und starten Sie den Docker-Container:
docker compose pull && docker compose up -d
Ausgabe:
[+] Pulling 17/17
 ✔ remark 16 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                                                                    5.3s
   ✔ df9b9388f04a Pull complete                                                                                                                                                  0.5s
   ✔ 80281ee1cce0 Pull complete                                                                                                                                                  0.5s
   ✔ 4284f0472299 Pull complete                                                                                                                                                  0.5s
   ✔ fe2316b89113 Pull complete                                                                                                                                                  0.7s
   ✔ fd716e73f5b6 Pull complete                                                                                                                                                  0.9s
   ✔ 38541ddeb174 Pull complete                                                                                                                                                  1.2s
   ✔ 4f4fb700ef54 Pull complete                                                                                                                                                  1.2s
   ✔ 8bdf05407705 Pull complete                                                                                                                                                  1.3s
   ✔ f7dba120ed0b Pull complete                                                                                                                                                  1.5s
   ✔ f8ccd1d4a0b4 Pull complete                                                                                                                                                  1.6s
   ✔ 1494ef9b644c Pull complete                                                                                                                                                  2.0s
   ✔ 722764f6a31b Pull complete                                                                                                                                                  2.0s
   ✔ 7a64e59eaa78 Pull complete                                                                                                                                                  2.6s
   ✔ a1f777d5aaba Pull complete                                                                                                                                                  2.6s
   ✔ 632b254bdf0f Pull complete                                                                                                                                                  3.6s
   ✔ 29c62d38300a Pull complete                                                                                                                                                  3.6s
[+] Running 2/2
 ✔ Network remark42_default  Created                                                                                                                                             0.1s
 ✔ Container remark42        Started                                                                                                                                             0.5s
Prüfen Sie den Status des Containers:
docker compose ps
Ausgabe:
NAME                IMAGE                     COMMAND                  SERVICE             CREATED             STATUS                   PORTS
remark42            umputun/remark42:latest   "/init.sh /srv/remar…"   remark              6 minutes ago       Up 6 minutes (healthy)   0.0.0.0:8081->8080/tcp, :::8081->8080/tcp

Prüfen Sie, ob Ihre Remark42-Instanz erreichbar ist. Rufen Sie dazu im Browser die Url comments.yourdomain.com/web/ auf. Sie sollten folgenden Bildschirm sehen:

Schritt 9: Remark42 in die Website einbinden

Fügen Sie die Konfiguration für Remark auf einer Seite Ihrer Website hinzu:

  • REMARK_URL - die URL, unter der die Remark42-Instanz betrieben wird, wird als REMARK_URL an das Backend übergeben.
  • YOUR_SITE_ID - die SITE, die Sie der Remark42-Instanz beim Start übergeben haben, standardmäßig remark.
<script>
  var remark_config = {
    host: 'REMARK_URL',
    site_id: 'YOUR_SITE_ID',
  }
</script>
Beispiel:
<script>
  var remark_config = {
    host: 'https://demo.remark42.com',
    site_id: 'remark',
  }
</script>
Danach wird direkt der nächste Codeschnipsel eingefügt:
<script>!function(e,n){for(var o=0;o<e.length;o++){var r=n.createElement("script"),c=".js",d=n.head||n.body;"noModule"in r?(r.type="module",c=".mjs"):r.async=!0,r.defer=!0,r.src=remark_config.host+"/web/"+e[o]+c,d.appendChild(r)}}(remark_config.components||["embed"],document);</script>

Hinweis:

Sie können die Konfiguration mit dem Snippet an einer beliebigen Stelle des HTML-Codes Ihrer Website platzieren. Wenn sie sich näher am Anfang des HTML-Codes befindet (z. B. in <head>), wird sie schneller geladen und die Kommentare werden schneller angezeigt.

Fügen Sie das folgende Codeschnipsel auf einer Seite Ihrer Website ein, auf der Sie Kommentare haben möchten:
<div id="remark42"></div>
Danach wird das Widget innerhalb dieses Knotens gerendert.