Selbst hosten
In ein paar Minuten dein eigenes nexbrand.
nexbrand läuft als ein einziger Container. Du brauchst einen Rechner mit Docker, etwa einen kleinen Heimserver, eine NAS oder einen Server deiner Agentur, und eine kurze Compose-Datei. Ein Konto bei uns brauchst du nicht, und es gibt auch keins.
Starten in drei Schritten
Das Abbild gibt es für amd64 und arm64, also auch für einen Raspberry Pi oder eine NAS mit ARM-Prozessor.
- Die Compose-Datei anlegen
Leg einen Ordner an, etwa
nexbrand, und darin diese Datei.docker-compose.ymlservices: nexbrand: image: ghcr.io/derkezorm/nexbrand:latest container_name: nexbrand restart: unless-stopped ports: - "8540:8000" volumes: - ./data:/data environment: PUID: 1000 PGID: 1000 TZ: Europe/Berlin
- StartenShell
docker compose up -d - Das erste Konto anlegen
Öffne
http://dein-server:8540im Browser. nexbrand führt dich zur Einrichtung und fragt nach dem Einrichtungscode. Den schreibt es bei jedem Start in sein Log, bis es eingerichtet ist; du findest ihn mitdocker logs nexbrand, oder du gibst mitNEXBRAND_SETUP_TOKENeinen eigenen vor. So übernimmt niemand dein frisches nexbrand, nur weil er es zuerst gefunden hat. Wer das erste Konto anlegt, wird Betreiber. Das Passwort braucht mindestens zwölf Zeichen.
Pavo sagtLieber aus dem Quelltext bauen? Klon das Repository, schreib build: . statt der Zeile mit image: und starte mit docker compose up -d --build.
Hinter einem Reverse Proxy
Sobald Kunden Abstimmungen öffnen oder eine Druckerei eine öffentliche Seite liest, gehört nexbrand hinter einen Reverse Proxy mit TLS, zum Beispiel Caddy, Traefik oder nginx.
Die Adresse nennen
Mit NEXBRAND_PUBLIC_URL nennst du die Adresse, unter der andere nexbrand erreichen. Daraus baut es Einladungslinks, öffentliche Seiten, Links für Abstimmungen und die Rückkehr von deinem Anmeldedienst. Die Einstellung „Öffentliche Adresse“ in der Oberfläche gewinnt, wenn sie gesetzt ist.
Den Proxy nennen
NEXBRAND_TRUSTED_PROXIES nennt die Adresse oder das Netz des Proxys. Ohne diese Angabe scheint jede Anmeldung vom Proxy zu kommen, und die Bremse gegen das Raten von Passwörtern kann die Leute nicht auseinanderhalten. Fällt nexbrand ein unbekannter Proxy auf, steht unter Einstellungen, Server ein Hinweis.
nexbrand im Internet
Abstimmungen und öffentliche Seiten sind für Menschen draußen gedacht, also wird nexbrand oft von außen erreichbar sein. Bevor du es öffnest, geh diese Liste durch.
- Erst einrichten, dann freigeben
Leg das erste Konto aus deinem eigenen Netz an, mit dem Code aus dem Log. Erst danach leitest du einen Port weiter.
- TLS am Proxy, nexbrand nur über ihn
Veröffentliche den Port als
127.0.0.1:8540:8000, wenn der Proxy auf demselben Rechner läuft, oder halte beide in einem Docker-Netz ohne veröffentlichten Port. - Proxy und Adresse nennen
NEXBRAND_PUBLIC_URL,NEXBRAND_TRUSTED_PROXIESundNEXBRAND_COOKIE_SECURE: "on". - Ein zweiter Faktor
Richte für dein eigenes Konto unter Mein Konto, Sicherheit einen zweiten Faktor ein, oder melde dich über deinen Anbieter für OpenID Connect an. Auf Wunsch verlangt nexbrand den zweiten Faktor von allen.
- Zu lassen, was du nicht brauchst
Öffentliche Seiten und Abstimmungen, API-Token, Sammeln von Webseiten und der KI-Dienst sind ab Werk aus. Schalte nur ein, was du brauchst.
- Betreiber-Einstellungen zu Hause lassen
Mit
NEXBRAND_OPERATOR_NETWORKS: "192.168.0.0/16"nimmt nexbrand Änderungen an den Betreiber-Einstellungen nur aus diesem Netz an, hinter einem Proxy zusammen mitNEXBRAND_TRUSTED_PROXIES. - Sicherungen woanders
Eine Sicherung enthält alles, auch jedes Logo, jede Schrift und den Schlüssel. Kopier ab und zu eine vom Rechner weg, so sorgfältig wie den Datenordner, und probier das Zurückspielen mit „Prüfen“ aus.
- Eine Fassung festhalten
Nimm statt
latesteine feste Fassung wie0.1.0, aktualisiere mit Absicht und sichere vorher.
Konten und Anmeldung
Konten gibt es nur per Einladung. Wer sich lieber über einen Anmeldedienst anmeldet, bekommt das mit OpenID Connect.
authentik in einem Schritt
Unter Einstellungen, Server, Anmeldung trägst du deinen Anbieter für OpenID Connect ein: Issuer, Client-ID und Geheimnis, dazu den Namen für den Knopf auf der Anmeldeseite. Die Weiterleitungsadresse für den Anbieter zeigt nexbrand dir zum Kopieren an.
Wer authentik benutzt, hat es leichter: Adresse von authentik und ein einmaliges API-Token eintragen, „Einrichten“ drücken, und nexbrand legt Signaturschlüssel, Provider und Anwendung dort selbst an. Das Token wird nur dafür benutzt und nicht gespeichert. Alternativ lädst du eine Blueprint-Datei herunter und spielst sie in authentik ein.
- Anmeldung mit Passwort abschalten: Dann kommen Mitglieder nur noch über den Anbieter herein. Du als Betreiber kannst dein Passwort immer benutzen.
- Neue Personen: Ab Werk kommen über den Anbieter nur Eingeladene oder schon verknüpfte Konten herein. Auf Wunsch bekommt jede neue Person dort ein Konto.
- Mail: Mit einem Mailserver verschickt nexbrand Einladungen und Links für Abstimmungen selbst. Ohne genügt der Link zum Kopieren.
Wo alles liegt
Alles liegt in /data: die Datenbank nexbrand.db mit Konten, Kunden, Fassungen und Projekten, der Ordner media/ mit Logos, Schriften und Beispielen, dazu secret.key, backups/, logs/ und locales/ für eigene Sprachen. Schlüssel, Datenbank, Sicherungen und Log darf nur der Besitzer lesen.
Pavo sagtHäng den Datenordner von einer lokalen Platte ein, nie von einer SMB- oder NFS-Freigabe. SQLite sperrt über Netzwerkdateisysteme nicht zuverlässig, und dann geht im schlimmsten Fall etwas kaputt.
Sichern und zurückspielen
Unter Einstellungen, Server, Sicherung legt nexbrand ab Werk jede Nacht zwischen drei und sechs Uhr ein Archiv an und behält die letzten sieben. Statt jeder Nacht geht auch jede Woche, und mit „Jetzt sichern“ machst du eine von Hand. Ein Archiv ist eine gewöhnliche ZIP-Datei mit der Datenbank, die nexbrand im laufenden Betrieb sauber kopiert, mit allen Dateien und mit dem Schlüssel. Heruntergeladen und auf einem anderen Server mit „Sicherung hochladen“ wieder hineingelegt, ist sie auch der Weg für einen Umzug.
„Prüfen“ öffnet ein Archiv und sagt, ob es vollständig ist und was ein Zurückspielen hinzufügen und entfernen würde. Beim Zurückspielen sichert nexbrand zuerst den aktuellen Stand und startet danach neu. Herunterladen, Hochladen und Zurückspielen verlangen noch einmal dein Passwort.
Pavo sagtWer ein Archiv hat, hat alles, auch die Hausschriften deiner Kunden. Bewahr heruntergeladene Sicherungen so sorgfältig auf wie den Datenordner selbst, denn verschlüsselt sind sie nicht.
Updaten
docker compose pull
docker compose up -dWas der Datenbank fehlt, ergänzt nexbrand beim Start selbst, von Hand ist nichts zu tun. Vor einem großen Sprung lohnt sich trotzdem eine Sicherung. Einmal am Tag fragt nexbrand bei GitHub nach einer neueren Fassung und zeigt sie unter „Über nexbrand“ an; das ist die einzige Anfrage nach draußen, die es von selbst stellt, und der Betreiber kann sie abschalten. Nach einem Update erklärt nexbrand jedem Konto einmal, was neu ist.
Alle Umgebungsvariablen
| Variable | Ab Werk | Wofür |
|---|---|---|
NEXBRAND_DATA_DIR | /data | Datenbank, Dateien, Logs, Sicherungen, Sprachen |
NEXBRAND_MEDIA_DIR | <data>/media | Logos, Schriften und Beispiele |
NEXBRAND_LOCALES_DIR | <data>/locales | Weitere Sprachen, je eine JSON-Datei |
NEXBRAND_SECRET_KEY | beim ersten Start erzeugt | Schützt Geheimnisse auf dem Server wie das Passwort des Mailservers und die Schlüssel der KI-Dienste |
NEXBRAND_PUBLIC_URL | aus der Anfrage | Die Adresse, unter der andere nexbrand erreichen; die Einstellung in der Oberfläche gewinnt, wenn sie gesetzt ist |
NEXBRAND_TRUSTED_PROXIES | keine | Adressen oder Netze von Proxys, deren X-Forwarded-For geglaubt wird |
NEXBRAND_SETUP_TOKEN | beim Start erzeugt | Der Code für das erste Konto |
NEXBRAND_OPERATOR_NETWORKS | keine | Netze, aus denen die Betreiber-Einstellungen geändert werden dürfen |
NEXBRAND_UPLOAD_MAX_MB | 50 | Die größte Datei; der Betreiber kann den Wert in den Einstellungen senken |
NEXBRAND_SESSION_DAYS | 30 | Nach so vielen Tagen endet eine Sitzung im Browser |
NEXBRAND_LOG_LEVEL | Einstellung | quiet, normal, detailed oder trace; überstimmt die Einstellung |
NEXBRAND_COOKIE_SECURE | auto | on, off oder auto |
NEXBRAND_COOKIE_SUFFIX | keiner | Ein Anhang an die Namen der Cookies, wenn zwei nexbrand auf demselben Rechner laufen |
NEXBRAND_PORT | 8000 | Der Port im Container, nur nötig im Netz des Rechners |
NEXBRAND_API_DOCS | false | Zeigt /api/docs und /api/openapi.json |
PUID, PGID | 1000 | Wem die Dateien im Datenordner gehören; 0 ist nicht erlaubt |
TZ | Europe/Berlin | Die Zeitzone; sie bestimmt, welcher Tag „heute“ ist, wenn eine Fassung ab heute gilt |