Zwei Dateien, ein Befehl.

Kendoshi Team läuft als Docker-Image auf einem Linux-Server oder NAS.
Diese Seite führt von der leeren Maschine bis zum ersten Login.
Ohne Lizenz arbeitet genau ein Benutzer, ohne Frist.
Die Lizenzzeile aus der Kauf-Mail schaltet das Team frei.

Image: ghcr.io/nicowski2000/kendoshi-team · Version 2.14.0 · amd64 und arm64 · Das Admin-Handbuch ist auf Englisch, eine HTML-Datei, die sich auch in Zimezumi ziehen lässt

01 · Voraussetzungen

Was du brauchst.

Ein kleiner Server reicht. Ein Raspberry Pi 4, ein NAS mit Docker oder der kleinste Tarif eines Hosters.

Docker

Linux-Server oder NAS mit Docker und Docker Compose Version 2. Prüfen mit docker compose version.

Domain

Eine Sub-Domain, deren A-Record auf den Server zeigt, zum Beispiel kendoshi.deine-domain.de. Das HTTPS-Zertifikat holt der Server selbst.

Ports

80 und 443 offen, auch in der Firewall des Anbieters.

Architektur

amd64 oder arm64: Intel- und AMD-Server, ARM-NAS, Raspberry Pi 4 oder neuer.

02 · Installation

Vier Schritte bis zum Login.

Jeden Block in ein Terminal auf dem Server kopieren. Die zwei Dateien liegen hier auf posthopeproduction.com.

1 · Ordner anlegen und die zwei Dateien holen

Die Compose-Datei beschreibt die Dienste, die .env trägt deine Werte.

mkdir -p ~/kendoshi && cd ~/kendoshi
curl -fsSL https://posthopeproduction.com/kendoshi/docker-compose.release.yml -o docker-compose.yml
curl -fsSL https://posthopeproduction.com/kendoshi/env.example -o .env

2 · .env ausfüllen

Zwei Werte sind Pflicht: DOMAIN und AUTH_SECRET. Den Rest leer lassen.

openssl rand -hex 32        # Ausgabe als AUTH_SECRET eintragen
nano .env                   # DOMAIN und AUTH_SECRET setzen

3 · Starten

Beim ersten Start holt Caddy das HTTPS-Zertifikat für deine Domain, die App legt die Datenbank an.

docker compose up -d

4 · Setup-Token und Admin-Konto

Im Browser https://deine-domain öffnen. Die Seite verlangt beim ersten Mal ein Setup-Token, damit nicht der erste beliebige Besucher Admin wird. Es steht im Log. Token eingeben, Name, E-Mail und Passwort wählen. Das ist das Admin-Konto.

docker compose logs app | grep Setup-Token

Wer das Token selbst bestimmen will, trägt vor dem Start BOARDIST_SETUP_TOKEN in die .env ein

03 · Lizenz

Ein Benutzer frei, das Team mit Lizenz.

Ohne Lizenz arbeitet ein Benutzer, ohne Frist. Sobald ein zweiter eingeladen werden soll, verlangt der Server die Lizenz. Sie ist eine Zeile Text aus der Kauf-Mail und beginnt mit PHP1.

Weg eins: in der Oberfläche unter Einstellungen, Bereich Lizenz, die Zeile einfügen und auf Lizenz einspielen klicken. Die Seite zeigt danach, für wen sie ausgestellt ist. Weg zwei: in der .env als KENDOSHI_LICENSE eintragen und docker compose up -d ausführen. Dann gewinnt die Umgebungsvariable und das Feld in der Oberfläche ist schreibgeschützt.

Die Prüfung läuft offline gegen einen eingebauten Schlüssel. Kein Netz, keine Aktivierung, keine Gerätebindung. Bestehende Benutzer und Daten sind von der Lizenz nie betroffen.

Kendoshi Team im Store →

Ein Preis pro Server, kein Abo · Die Lizenz kommt per E-Mail nach dem Kauf, in der Regel am selben Tag

04 · Betrieb

Backup, Update, Wiederherstellen.

Alle Daten liegen in einer einzigen SQLite-Datei im Docker-Volume boardist-data. Backup heißt: diese eine Datei kopieren.

Backup von Hand

Der Server legt außerdem bei jedem Start ein datiertes Backup unter /data/backups/ an und behält die letzten sieben. Die Kopie gehört an einen zweiten Ort.

docker compose exec app cp /data/boardist.db /data/backups/boardist-manuell.db
docker cp "$(docker compose ps -q app)":/data/backups/boardist-manuell.db ./kendoshi-backup-$(date +%Y-%m-%d).db

Tägliches Backup per Cron

Eine Zeile in crontab -e, hier für drei Uhr nachts.

0 3 * * * cd ~/kendoshi && docker compose exec -T app cp /data/boardist.db /data/backups/boardist-cron.db && docker cp "$(docker compose ps -q app)":/data/backups/boardist-cron.db ~/kendoshi-backup-$(date +\%Y\%m\%d).db

Update

Vor jeder Schema-Änderung legt der Container eine Kopie boardist.pre-push.db an und wendet die Änderung selbst an. Die Versionsnummer in der Compose-Datei bei Bedarf anpassen oder latest eintragen.

cd ~/kendoshi
docker compose pull
docker compose up -d

Wiederherstellen

Container stoppen, Datei kopieren, starten. Der Dateiname ist dein Backup.

cd ~/kendoshi
docker compose stop app
docker cp ./kendoshi-backup-2026-09-18.db "$(docker compose ps -q -a app)":/data/boardist.db
docker compose start app
05 · Fehlerhilfe

Wenn etwas hakt.

Der erste Aufruf sagt: Setup-Token fehlt.

Gewollt. docker compose logs app | grep Setup-Token zeigt es.

HTTPS funktioniert nicht.

DNS prüfen: ping deine-domain muss die Server-IP zeigen. Ports 80 und 443 müssen von außen erreichbar sein. Log: docker compose logs caddy.

Der Container startet nicht, das Log sagt: AUTH_SECRET fehlt.

In der .env fehlt der Wert. openssl rand -hex 32 ausführen, eintragen, dann docker compose up -d.

Attempt to write a readonly database.

Das Volume gehört nicht dem Nutzer node (UID 1000), zum Beispiel nach einem Umzug. Einmalig: docker compose stop app && docker run --rm -v kendoshi_boardist-data:/data alpine chown -R 1000:1000 /data && docker compose start app. Den Volume-Namen zeigt docker volume ls.

Die Einladung sagt: Ohne Lizenz arbeitet genau ein Benutzer.

Lizenz einspielen, siehe Abschnitt 03. Der Einladungs-Link bleibt gültig.

Diese Lizenz gehört nicht zu Kendoshi Team.

Das ist eine Lizenz für ein anderes Post-Hope-Produkt, Zimezumi oder Switchy. Die Kendoshi-Team-Zeile aus der Kauf-Mail einfügen.

Der Schlüssel scheint unvollständig kopiert zu sein.

Die ganze Zeile kopieren, von PHP1. bis zum letzten Zeichen. Zeilenumbrüche aus dem Mailprogramm stören nicht.

Alle Benutzer sind plötzlich abgemeldet.

AUTH_SECRET wurde geändert. Das ist beim Wechsel des Werts normal, alle melden sich neu an.

Wie verbinde ich die App auf Mac, iPhone und iPad?

In der App Mit Team verbinden wählen, Server-Adresse https://deine-domain und den persönlichen API-Token aus Einstellungen, Bereich API-Token, eintragen.

Wo ist der KI-Assistent?

Nicht Teil des Server-Pakets. Es ist kein API-Key nötig.

Serverbetrieb liegt in deiner Verantwortung: Erreichbarkeit, Updates, Sicherung, Datenschutz gegenüber deinem Team · Fragen an help@posthopeproduction.com

Der Server gehört dir.

Kein gehosteter Dienst, kein Konto beim Entwickler. Wer den Server betreibt, hat die Daten. Das Admin-Handbuch (Englisch) erklärt dieselben Schritte ausführlicher, mit fertigen Prompts für eine KI, die die Einrichtung für dich übernimmt.