Remark42 unter Ubuntu 22.04 installieren: Ein Open-Source-Kommentarsystem für Websites und Anwendungen
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
- ein Server mit Ubuntu 22.04.
- SSH für den Zugriff auf den Server.
- ein Nicht-Root-Benutzer mit sudo-Rechten, siehe “Wie deaktiviere ich das root login unter Ubuntu”.
- UFW ist aktiviert und läuft, siehe “Einrichtung der ufw unter Ubuntu - effektiver Schutz für deine Server”
- ein FQDN, der auf den Server verweist, z. B. comments.yourdomain.com.
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 3: Docker installieren
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
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>