Mein Plan stand ja fest, die Redis Datenbank auf einen anderen Server zu legen um beim Updaten von NodeBB nicht mehr so ein großes Risiko einzugehen, die DB mal aus versehen mit einem alten Stand, so wie letztens, zu überschreiben
Ich nutze zwei NodeBB-Foren, das andere Forum dient mir eigentlich nur zum Testen, da hatte ich die DB schon ausgelagert. Heute war dieses Forum hier an der Reihe.
Es hat etwas gedauert, bis ich eine funktionierende Konfiguration für den SystemD-Dienst gefunden hatte. Da gab es so einiges im Netz, was nicht funktionierte Interessanterweise braucht man sich die Arbeit gar nicht machen, das Redis Team hat das schon erledigt. Wenn man das Paket runterlädt und entpackt, findet man im Verzeichnis utils/ Vorlagen
Die Vorlage heißt systemd-redis_multiple_servers@.service Ich habe den Namen angepasst.
/etc/systemd/system/forum.service
# example systemd template service unit file for multiple redis-servers
#
# You can use this file as a blueprint for your actual template service unit
# file, if you intend to run multiple independent redis-server instances in
# parallel using systemd's "template unit files" feature. If you do, you will
# want to choose a better basename for your service unit by renaming this file
# when copying it.
#
# Please take a look at the provided "systemd-redis_server.service" example
# service unit file, too, if you choose to use this approach at managing
# multiple redis-server instances via systemd.
[Unit]
Description=Redis data structure server - instance %i
Documentation=https://redis.io/documentation
# This template unit assumes your redis-server configuration file(s)
# to live at /etc/redis/redis_server_<INSTANCE_NAME>.conf
AssertPathExists=/etc/redis/redis_server_6380.conf
#Before=your_application.service another_example_application.service
#AssertPathExists=/var/lib/redis_forum
PIDFile=/run/redis/redis-forum.pid
ReadWritePaths=-/var/lib/redis_forum
[Service]
ExecStart=/usr/bin/redis-server /etc/redis/redis_server_6380.conf --supervised systemd --daemonize no
Restart=always
LimitNOFILE=10032
NoNewPrivileges=yes
#OOMScoreAdjust=-900
#PrivateTmp=yes
Type=notify
TimeoutStartSec=infinity
TimeoutStopSec=infinity
UMask=0077
User=redis
Group=redis
[Install]
WantedBy=multi-user.target
Damit ließ sich eine zweite Redis Datenbank starten. In der entsprechenden Konfigurationsdatei von Redis stand dann folgendes.
/redis_server_6380.conf
bind 10.10.1.100
port 6380
Die erste Redisdatenbank läuft auf
bind 10.10.1.100
port 6379
Denkt bitte immer daran, die Redis Datenbank möglichst nicht ins Internet zu stellen! Passwort nicht vergessen! Möglichst private Adressen nutzen oder entsprechende Tunnel!
Damit war der Teil erledigt. Noch die Firewall einstellen und gut. Das könnt ihr hier nachlesen.
Im NodeBB-Forum dann die entsprechende Konfiguration anpassen.
{
"url": "https://DOMAIN",
"port": "4567",
"secret": "SECRET",
"database": "redis",
"redis": {
"host": "10.10.1.100",
"port": "6380",
"password": "Passwort",
"database": "0"
}
}
Das NodeBB-Forum neustarten und fertig! Yeah!
Meine beiden Foren laufen jetzt mit externen Redis-Datenbanken und zwar unabhängig. Jedes Forum hat seine eigen Datenbank! Nun kann ich auch mal ohne Datenverlust mal einen Snapshot zurück installieren, oder auch ein etwas älteres Backup, wenn es mal wieder klemmt.