Zum Inhalt
NEXBRAND

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.

  1. Die Compose-Datei anlegen

    Leg einen Ordner an, etwa nexbrand, und darin diese Datei.

    docker-compose.yml
    services:
      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
  1. Starten
    Shell
    docker compose up -d
  2. Das erste Konto anlegen

    Öffne http://dein-server:8540 im 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 mit docker logs nexbrand, oder du gibst mit NEXBRAND_SETUP_TOKEN einen 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.

  1. 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.

  2. 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.

  3. Proxy und Adresse nennen

    NEXBRAND_PUBLIC_URL, NEXBRAND_TRUSTED_PROXIES und NEXBRAND_COOKIE_SECURE: "on".

  4. 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.

  5. 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.

  6. 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 mit NEXBRAND_TRUSTED_PROXIES.

  7. 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.

  8. Eine Fassung festhalten

    Nimm statt latest eine feste Fassung wie 0.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.
Settings
Einstellungen, Server, Anmeldung mit Passwortanmeldung, zweitem Faktor, öffentlicher Adresse und authentik in einem Schritt
Die Anmeldung unter Einstellungen, Server.

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.

Settings
Einstellungen, Server, Sicherung mit Zeitplan, Anzahl, den Knöpfen Sicherung hochladen und Jetzt sichern und Sicherungen in der Liste
Zeitplan, wie viele bleiben, und jede Sicherung mit „Prüfen“.

Updaten

Shell
docker compose pull
docker compose up -d

Was 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

VariableAb WerkWofür
NEXBRAND_DATA_DIR/dataDatenbank, Dateien, Logs, Sicherungen, Sprachen
NEXBRAND_MEDIA_DIR<data>/mediaLogos, Schriften und Beispiele
NEXBRAND_LOCALES_DIR<data>/localesWeitere Sprachen, je eine JSON-Datei
NEXBRAND_SECRET_KEYbeim ersten Start erzeugtSchützt Geheimnisse auf dem Server wie das Passwort des Mailservers und die Schlüssel der KI-Dienste
NEXBRAND_PUBLIC_URLaus der AnfrageDie Adresse, unter der andere nexbrand erreichen; die Einstellung in der Oberfläche gewinnt, wenn sie gesetzt ist
NEXBRAND_TRUSTED_PROXIESkeineAdressen oder Netze von Proxys, deren X-Forwarded-For geglaubt wird
NEXBRAND_SETUP_TOKENbeim Start erzeugtDer Code für das erste Konto
NEXBRAND_OPERATOR_NETWORKSkeineNetze, aus denen die Betreiber-Einstellungen geändert werden dürfen
NEXBRAND_UPLOAD_MAX_MB50Die größte Datei; der Betreiber kann den Wert in den Einstellungen senken
NEXBRAND_SESSION_DAYS30Nach so vielen Tagen endet eine Sitzung im Browser
NEXBRAND_LOG_LEVELEinstellungquiet, normal, detailed oder trace; überstimmt die Einstellung
NEXBRAND_COOKIE_SECUREautoon, off oder auto
NEXBRAND_COOKIE_SUFFIXkeinerEin Anhang an die Namen der Cookies, wenn zwei nexbrand auf demselben Rechner laufen
NEXBRAND_PORT8000Der Port im Container, nur nötig im Netz des Rechners
NEXBRAND_API_DOCSfalseZeigt /api/docs und /api/openapi.json
PUID, PGID1000Wem die Dateien im Datenordner gehören; 0 ist nicht erlaubt
TZEurope/BerlinDie Zeitzone; sie bestimmt, welcher Tag „heute“ ist, wenn eine Fassung ab heute gilt