Restyaboard auf CentOS 7 installieren — Self‑hosted Trello‑Alternative
Restyaboard ist eine kostenlose, Open‑Source‑Kanban‑Anwendung, die sich gut als selbst gehostete Alternative zu Trello eignet. Dieses Tutorial führt Sie schrittweise durch die Installation auf einem CentOS 7 Server: Nginx, PHP‑FPM (PHP 7.0), PostgreSQL 9.6, Restyaboard‑Dateien, Nginx‑Konfiguration, Dateiberechtigungen und Cron‑Jobs. Am Ende finden Sie zusätzliche Abschnitte zu Sicherheit, Backup, Fehlerbehebung, Akzeptanzkriterien und Checklisten für Administratoren.
Wichtig: Verwenden Sie sichere Passwörter und setzen Sie produktive Installationen nicht ohne TLS/HTTPS in Produktion ein.
Einleitung
Restyaboard ist eine freie und quelloffene Kanban‑Board‑Applikation, geschrieben in PHP und mit PostgreSQL als Datenbank. Diese Anleitung zeigt eine komplette Installation auf CentOS 7 mit Nginx und PHP‑FPM, optimiert für Stabilität und Wartbarkeit.
Kurzdefinition: Kanban‑Board — visuelle Darstellung von Aufgaben in Spalten (z. B. To‑Do, Doing, Done).
Voraussetzungen
- Minimal installiertes CentOS 7 (x86_64)
- Root‑Zugriff oder ein Benutzer mit sudo‑Rechten
- Offen für Port 80 / 443 und lokale PostgreSQL‑Verbindung
Hinweis: TLS/HTTPS ist für produktive Systeme Pflicht. Diese Anleitung konfiguriert zunächst HTTP; erweitern Sie das Setup anschließend um ein Zertifikat (Let’s Encrypt oder kommerziell).
Inhaltsübersicht
- Schritt 1: Nginx installieren
- Schritt 2: PHP‑FPM (PHP 7.0) mit mbstring und GeoIP
- Schritt 3: PostgreSQL 9.6 installieren und konfigurieren
- Schritt 4: Restyaboard herunterladen und Daten importieren
- Schritt 5: Nginx Server Block anpassen, Rechte setzen, Cron‑Jobs
- Zusätzliche Kapitel: Sicherheit, Backup, Troubleshooting, Wartungschecklisten, Akzeptanzkriterien, Glossar
Schritt 1 - Nginx installieren
Vor der Installation empfiehlt es sich, alle Pakete und Repositories zu aktualisieren:
yum -y updateNginx ist nicht im Standard‑CentOS‑YUM‑Repository enthalten. Installieren Sie zunächst EPEL:
yum -y install epel-releaseDann Nginx installieren:
yum -y install nginxStarten und aktivieren Sie Nginx für den Systemstart:
systemctl start nginx systemctl enable nginxNginx sollte nun laufen. Prüfen Sie den Dienststatus bei Bedarf mit systemctl status nginx.
Schritt 2 - PHP‑FPM (PHP 7.0) mit Mbstring konfigurieren
Restyaboard unterstützt PHP 7.0. Auf CentOS 7 installieren wir PHP 7.0 über das Webtatic‑Repository.
Installieren Sie Webtatic:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpmInstallieren Sie PHP 7.0, FPM und die benötigten Module:
yum -y install php70w php70w-fpm php70w-devel php70w-cli php70w-curl php70w-pgsql php70w-mbstring php70w-ldap php70w-pear php70w-imap php70w-xml php70w-pecl-imagick ImageMagickAnpassung von PHP‑FPM (Standardkonfiguration ändert Apache‑User auf nginx):
Öffnen Sie die Konfigurationsdatei:
nano /etc/php-fpm.d/www.confSuchen Sie die Zeilen und stellen Sie sicher, dass user/group auf nginx gesetzt sind:
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginxStatt eines Listen‑Ports verwenden wir einen Unix‑Socket. Ändern Sie:
listen = 127.0.0.1:9000zu
listen = /run/php-fpm/php7.0-fpm.sockSetzen Sie Besitzer, Gruppe und Rechte des Sockets:
;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0660zu
listen.owner = nginx
listen.group = nginx
listen.mode = 0660Weitere PHP‑Einstellungen:
nano /etc/php.iniSetzen Sie die Zeitzone passend für Ihre Region, z. B.:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/BerlinUnd deaktivieren Sie cgi.fix_pathinfo:
cgi.fix_pathinfo=0Installieren und aktivieren Sie GeoIP (optional, aber empfohlen für Feature‑Support):
yum -y install GeoIP-develFügen Sie ans Ende von /etc/php.ini hinzu:
extension=geoip.soStarten und aktivieren Sie PHP‑FPM:
systemctl start php-fpm systemctl enable php-fpmStarten Sie Nginx neu:
systemctl restart nginxHinweis: Prüfen Sie bei Problemen die Logs /var/log/nginx/error.log und /var/log/php-fpm/error.log.
Schritt 3 - PostgreSQL 9.6 installieren und konfigurieren
PostgreSQL ist die von Restyaboard verwendete Datenbank. Das Paket kommt aus dem offiziellen PostgreSQL‑Repository.
Repository hinzufügen:
rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpmPostgreSQL installieren:
yum -y install postgresql96-server postgresql96-contribInitialisieren der Datenbank:
/usr/pgsql-9.6/bin/postgresql96-setup initdbÄndern Sie die Authentifizierung in pg_hba.conf, um MD5‑Passwortauthentifizierung für lokale TCP/IP‑Verbindungen zu verwenden:
nano /var/lib/pgsql/9.6/data/pg_hba.confPassen Sie die Zeilen an:
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5Starten und aktivieren Sie den Dienst:
systemctl start postgresql-9.6 systemctl enable postgresql-9.6Setzen Sie das Root‑/Systemkennwort des postgres‑Linux‑Benutzers (nicht die DB‑Passwörter):
passwd postgresWechseln Sie zum postgres‑User und legen Sie DB‑User und DB an:
su - postgres
createuser rb_user
psql
ALTER USER rb_user WITH ENCRYPTED password 'StrongPassword';
CREATE DATABASE rb_data OWNER rb_user ENCODING 'UTF8' TEMPLATE template0;
\q
exitWichtig: Ersetzen Sie ‘StrongPassword’ durch ein sicheres Passwort Ihrer Wahl. Merken Sie sich Benutzername und Passwort für die Restyaboard‑Konfiguration.
Schritt 4 - Restyaboard herunterladen und SQL importieren
Wechseln Sie in das Web‑Root und laden Sie das Release‑Archiv herunter:
cd /usr/share/nginx/html wget https://github.com/RestyaPlatform/board/releases/download/v0.4.2/board-v0.4.2.zipExtrahieren:
unzip board-v0.4.2.zip -d boardImportieren Sie das SQL‑Schema in die zuvor erstellte Datenbank:
psql -d rb_data -f "/usr/share/nginx/html/board/sql/restyaboard_with_empty_data.sql" -U rb_userKonfigurieren Sie die Datenbankzugänge in Restyaboard:
nano /usr/share/nginx/html/board/server/php/config.inc.phpÄndern Sie die Werte auf Ihre DB‑Daten:
define('R_DB_HOST', 'localhost');
define('R_DB_USER', 'rb_user');
define('R_DB_PASSWORD', 'StrongPassword');
define('R_DB_NAME', 'rb_data');
define('R_DB_PORT', 5432);Schritt 5 - Nginx Server Block konfigurieren und Dateirechte setzen
Restyaboard liefert eine Nginx‑Konfiguration im Zip‑Archiv. Kopieren Sie die Datei nach /etc/nginx/conf.d:
cp /usr/share/nginx/html/board/restyaboard.conf /etc/nginx/conf.d
nano /etc/nginx/conf.d/restyaboard.confPassen Sie in der Server‑Definition server_name und root‑Pfad an:
server {
listen 80;
server_name board.ihredomain.de;
root /usr/share/nginx/html/board;
location / {
root /usr/share/nginx/html/board/client;
}
root /usr/share/nginx/html/board/client;
fastcgi_pass unix:/run/php-fpm/php7.0-fpm.sock;
}Ersetzen Sie board.ihredomain.de mit Ihrer Domain.
Setzen Sie Besitzer und Berechtigungen:
chown -R nginx:nginx /usr/share/nginx/html/board/
chmod -R go+w "/usr/share/nginx/html/board/media"
chmod -R go+w "/usr/share/nginx/html/board/client/img"
chmod -R go+w "/usr/share/nginx/html/board/tmp/cache"
chmod -R 0755 /usr/share/nginx/html/board/server/php/shell/*.shFügen Sie Cron‑Jobs hinzu, damit periodische Aufgaben ausgeführt werden:
echo "*/5 * * * * /usr/share/nginx/html/board/server/php/shell/instant_email_notification.sh" >> /var/spool/cron/root
echo "0 * * * * /usr/share/nginx/html/board/server/php/shell/periodic_email_notification.sh" >> /var/spool/cron/root
echo "*/30 * * * * /usr/share/nginx/html/board/server/php/shell/imap.sh" >> /var/spool/cron/root
echo "*/5 * * * * /usr/share/nginx/html/board/server/php/shell/webhook.sh" >> /var/spool/cron/root
echo "*/5 * * * * /usr/share/nginx/html/board/server/php/shell/card_due_notification.sh" >> /var/spool/cron/rootWichtig: Cron‑Jobs unter /var/spool/cron/root werden als root ausgeführt. Stellen Sie sicher, dass die Shell‑Skripte die richtigen Rechte besitzen und sicher programmiert sind.
SELinux‑Hinweis
In vielen Anleitungen wird SELinux deaktiviert, weil Proxy/Socket‑Konfigurationen ohne Anpassung der Richtlinien fehlschlagen. Temporär können Sie SELinux ohne Neustart deaktivieren:
setenforce 0Für dauerhafte Deaktivierung bearbeiten Sie:
nano /etc/selinux/configÄndern Sie:
SELINUX=disabledWichtig: Deaktivieren von SELinux reduziert die Systemsicherheit. Besser ist es, die passenden SELinux‑Kontexte und Booleans zu setzen oder eine policy zu erstellen. Falls möglich, konfigurieren Sie SELinux korrekt statt es vollständig zu deaktivieren.
Starten Sie Nginx neu und öffnen Sie Ihre Domain im Browser:
systemctl restart nginxZugriff:
http://board.ihredomain.deSie sollten zunächst den Login‑Bildschirm sehen. Standard‑Login (nur für erste Anmeldung testen): Benutzer admin, Passwort restya.

Alt‑Text: Restyaboard Anmeldebildschirm mit Formularfeldern für Benutzername und Passwort

Alt‑Text: Restyaboard Dashboard mit Kanban‑Boards und Seitenleistenmenü

Alt‑Text: Dialog zur Erstellung eines neuen Boards mit Optionen für Name und Vorlage

Alt‑Text: Auswahl einer Vorlage für das neue Board in Restyaboard

Alt‑Text: Neues Kanban‑Board in Restyaboard mit mehreren Spalten und Karten

Alt‑Text: Zugriff auf das Admin‑Panel in Restyaboard über Einstellungen im Benutzerinterface
Fehlerbehebung (Troubleshooting)
- Nginx 502 Bad Gateway → Prüfen Sie, ob PHP‑FPM läuft und ob der Socketpfad in Nginx mit /etc/php-fpm.d/www.conf übereinstimmt. Beispiel prüfen:
systemctl status php-fpm
ss -x | grep php- Verbindungsfehler zur DB → Prüfen Sie pg_hba.conf, firewall, und DB‑Credentials in config.inc.php. Versuchen Sie lokale Verbindung:
psql -h localhost -U rb_user -d rb_dataRechteprobleme bei Medien‑Uploads → Stellen Sie sicher, dass /usr/share/nginx/html/board/media Schreibrechte für nginx hat.
Cron‑Jobs laufen nicht → Prüfen Sie /var/log/cron und führen Sie die Skripte manuell aus, um Fehler zu sehen.
Sicherheits‑Härtungsempfehlungen
- TLS/HTTPS: Konfigurieren Sie ein gültiges Zertifikat (z. B. Let’s Encrypt Certbot) und erzwingen Sie HTTPS mit HSTS.
- Firewall: Öffnen Sie nur notwendige Ports (80, 443). Blockieren Sie externe PostgreSQL‑Zugriffe.
- Remove Default Credentials: Ändern Sie das Admin‑Passwort sofort nach der ersten Anmeldung.
- Updates: Planen Sie regelmäßige OS‑ und PHP/DB‑Updates. Testen Sie Updates in einer Staging‑Umgebung.
- Backup & Recovery: Erstellen Sie regelmäßige Dumps der PostgreSQL‑Datenbank und sichern Sie Konfigurationsdateien.
- Minimale Rechte: Webserver und PHP‑FPM sollten in einem eingeschränkten Benutzerkontext laufen (nginx), keine Root‑Berechtigungen für Webverzeichnisse.
Backup und Wiederherstellung
Empfohlene Backup‑Strategie (minimal):
- Täglicher Dump der PostgreSQL‑Datenbank:
PGPASSWORD='StrongPassword' pg_dump -U rb_user -F c rb_data > /var/backups/rb_data-$(date +%F).dump- Wöchentliche Archivierung des Web‑Verzeichnisses (Konfiguration, benutzerdefinierte Anhänge):
tar -czf /var/backups/rb_www-$(date +%F).tar.gz /usr/share/nginx/html/boardTesten Sie Recovery regelmäßig: Stellen Sie Dumps in einer Testumgebung wieder her, um die Integrität sicherzustellen.
Wartungs‑ und Betriebscheckliste (für Admins)
Tägliche Aufgaben:
- Prüfen, ob Nginx, PHP‑FPM und PostgreSQL laufen
- Cron‑Log und Systemlogs auf Fehler prüfen
Wöchentliche Aufgaben:
- DB‑Backups validieren
- Updates für Sicherheitspatches prüfen
Monatliche Aufgaben:
- Testrestores durchführen
- Review von Nutzerkonten und Berechtigungen
Rollen‑basierte Kurzübersicht:
- Systemadministrator: Betriebssystem‑Updates, Firewall, Backups
- Web‑Administrator: Nginx‑Konfiguration, TLS‑Zertifikate
- Datenbankadministrator: PostgreSQL‑Backup, Replikation, Performance‑Tuning
- Applikationsadministrator: Restyaboard‑Versionen, Plugin‑/Vorlagenpflege
Akzeptanzkriterien (Kriterien bei Übergabe an Betrieb)
- Webseite erreichbar via HTTPS und gültiges Zertifikat installiert
- Login funktioniert mit Admin‑Account; Passwort geändert
- Beispiel‑Board anlegen, Karte erstellen, Dateianhang hochladen
- Cron‑Jobs laufen ohne Fehler (Überprüfung in /var/log/cron)
- Täglicher DB‑Dump erfolgreich und Wiederherstellungstest bestanden
Aktualisierung und Upgrade‑Kurzleitfaden
- Erstellen Sie ein vollständiges Backup (DB + Webverzeichnis).
- Testen Sie das Upgrade in einer Staging‑Instanz.
- Bei Erfolg: Wartungsfenster planen, Benutzer informieren, produktives System in Wartungsmodus setzen.
- Dateien ersetzen, DB‑Migrationsskripte ausführen (falls nötig), Konfiguration anpassen.
- Tests durchführen (Login, Board‑Operationen, Uploads).
- Wartungsmodus beenden.
Kurzes Glossar
- PHP‑FPM: FastCGI Process Manager für PHP
- Nginx: Webserver / Reverse Proxy
- pg_hba.conf: PostgreSQL Datei zur Zugriffssteuerung
- Socket: Unix Domain Socket für lokale Kommunikation (besser als TCP für localhost)
Entscheidungshilfe: Wann eignet sich Restyaboard nicht?
- Wenn Sie eine vollständig gehostete SaaS‑Lösung mit eingebauter Hochverfügbarkeit benötigen, sind gehostete Produktvarianten (z. B. Trello Cloud) oft passender.
- Große Unternehmen mit strengen Compliance‑Anforderungen sollten die Plattform vor Aufnahme in die Produktion auf Audit‑Fähigkeit prüfen.
Zusammenfassung
Restyaboard lässt sich auf CentOS 7 stabil mit Nginx, PHP‑FPM und PostgreSQL betreiben. Dieses Tutorial deckt Installation, Konfiguration, Rechte, Cron‑Jobs sowie wichtige Aspekte zur Sicherheit, Backups und Wartung ab. Für Produktionssysteme sind TLS, regelmäßige Backups, sicheres Passwortmanagement und vorsichtige SELinux‑Konfigurationen zwingend empfohlen.
Extras: Setzen Sie in Produktionsumgebungen zusätzlich Monitoring (z. B. Prometheus + Grafana oder einfache Nagios‑Checks) ein, um Verfügbarkeit und Ressourcennutzung zu überwachen.
Viel Erfolg bei der Installation und beim Betrieb Ihres selbst gehosteten Kanban‑Systems.
Ähnliche Materialien
Podman auf Debian 11 installieren und nutzen
Apt-Pinning: Kurze Einführung für Debian
FSR 4 in jedem Spiel mit OptiScaler
DansGuardian + Squid (NTLM) auf Debian Etch installieren
App-Installationsfehler auf SD-Karte (Error -18) beheben