Zum Inhalt
NEXCANVAS

Selbst hosten

In ein paar Minuten dein eigenes Board.

nexcanvas läuft als ein einziger Container. Du brauchst einen Rechner mit Docker, etwa einen kleinen Heimserver oder eine NAS, 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 nexcanvas, und darin diese Datei.

    docker-compose.yml
    services:
      nexcanvas:
        image: ghcr.io/derkezorm/nexcanvas:latest
        container_name: nexcanvas
        restart: unless-stopped
        ports:
          - "8500: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:8500 im Browser. nexcanvas 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 nexcanvas in der Zeile „The setup code is …“, oder du gibst mit NEXCANVAS_SETUP_TOKEN einen eigenen vor. So übernimmt niemand dein frisches nexcanvas, nur weil er es zuerst gefunden hat. Wer das erste Konto anlegt, wird Betreiber. Das Passwort braucht mindestens zwölf Zeichen.

Cora sagtLieber aus dem Quelltext bauen? Klon das Repository, schreib build: . statt der Zeile mit image: und starte mit docker compose up -d --build. Die docker-compose.yml im Repository erklärt jede Einstellung.

Hinter einem Reverse Proxy

Sobald du nexcanvas von irgendwo anders als von deinem Schreibtisch aus benutzt, gehört es hinter einen Reverse Proxy mit TLS, zum Beispiel Caddy, Traefik oder nginx.

WebSockets durchlassen

Boards werden live über eine WebSocket-Verbindung bearbeitet, unter /api/boards/<id>/live. Der Proxy muss sie durchlassen, sonst steht oben im Board „Offline“, und Änderungen der anderen kommen nicht an. Caddy und Traefik tun das von sich aus, bei nginx braucht es die üblichen Zeilen für Upgrade und Connection.

nexcanvas vom Proxy erzählen

Mit NEXCANVAS_PUBLIC_URL nennst du die Adresse, unter der andere nexcanvas erreichen, für Einladungslinks, öffentliche Seiten und die Rückkehr von deinem Anmeldedienst. NEXCANVAS_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.

nexcanvas im Internet

nexcanvas ist dafür gebaut, von draußen erreichbar zu sein, für dich unterwegs oder für ein kleines Team. 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, nexcanvas nur über ihn

    Veröffentliche den Port als 127.0.0.1:8500:8000, wenn der Proxy auf demselben Rechner läuft, oder halte beide in einem Docker-Netz ohne veröffentlichten Port. Lass WebSockets durch und schick HSTS vom Proxy aus.

  3. Proxy und Adresse nennen

    NEXCANVAS_PUBLIC_URL, NEXCANVAS_TRUSTED_PROXIES und NEXCANVAS_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 nexcanvas den zweiten Faktor von allen.

  5. Zu lassen, was du nicht brauchst

    Öffentliche Seiten und API-Token sind ab Werk aus. Schalte sie nur ein, wenn du sie brauchst.

  6. Betreiber-Einstellungen zu Hause lassen

    Mit NEXCANVAS_OPERATOR_NETWORKS: "192.168.0.0/16" nimmt nexcanvas Änderungen an den Betreiber-Einstellungen nur aus diesem Netz an, hinter einem Proxy zusammen mit NEXCANVAS_TRUSTED_PROXIES.

  7. Sicherungen woanders

    Eine Sicherung enthält alles, auch jedes Foto. 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 nexcanvas dir zum Kopieren an.

Wer authentik benutzt, hat es leichter: Adresse von authentik und ein API-Token eintragen, „Einrichten“ drücken, und nexcanvas legt 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 für Einladungen: Mit einem Mailserver verschickt nexcanvas Einladungslinks selbst. Ohne genügt der Link zum Kopieren.
Settings
Einstellungen, Server, Anmeldung mit Passwortanmeldung, zweitem Faktor, öffentlicher Adresse und OpenID Connect
Die Anmeldung unter Einstellungen, Server.

Wo alles liegt

Alles liegt in /data: die Datenbank nexcanvas.db mit Konten, Bereichen, Boards und ihren Versionen, der Ordner media/ mit Fotos und Dateien samt kleineren Vorschauen, dazu secret.key, backups/, logs/ und locales/ für eigene Sprachen.

Cora 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 nexcanvas ab Werk jede Nacht 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 nexcanvas im laufenden Betrieb sauber kopiert, mit allen Fotos und Dateien und mit dem Schlüssel.

„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 nexcanvas zuerst den aktuellen Stand und startet danach neu. Herunterladen, Zurückspielen und Löschen verlangen noch einmal dein Passwort.

Cora sagtWer ein Archiv hat, hat alles. Bewahr heruntergeladene Sicherungen so sorgfältig auf wie den Datenordner selbst, denn verschlüsselt sind sie nicht.

Settings
Einstellungen, Server, Sicherung mit Zeitplan, Anzahl und einer Sicherung 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 nexcanvas beim Start selbst, von Hand ist nichts zu tun. Vor einem großen Sprung lohnt sich trotzdem eine Sicherung. Einmal am Tag fragt nexcanvas bei GitHub nach einer neueren Fassung und zeigt sie unter „Über nexcanvas“ an. Nach einem Update erklärt es jedem Konto einmal, was neu ist und wo man es findet.

Alle Umgebungsvariablen

VariableAb WerkWofür
NEXCANVAS_DATA_DIR/dataDatenbank, Fotos und Dateien, Logs, Sicherungen, Sprachen
NEXCANVAS_MEDIA_DIR<data>/mediaFotos und Dateien der Boards
NEXCANVAS_LOCALES_DIR<data>/localesWeitere Sprachen, je eine JSON-Datei
NEXCANVAS_SECRET_KEYbeim ersten Start erzeugtSchützt Geheimnisse auf dem Server; gesetzt gewinnt er gegen secret.key
NEXCANVAS_PUBLIC_URLaus der AnfrageDie Adresse, unter der andere nexcanvas erreichen; die Einstellung in der Oberfläche gewinnt, wenn sie gesetzt ist
NEXCANVAS_TRUSTED_PROXIESkeineAdressen oder Netze von Proxys, deren X-Forwarded-For geglaubt wird
NEXCANVAS_SETUP_TOKENbeim Start erzeugtDer Code für das erste Konto
NEXCANVAS_OPERATOR_NETWORKSkeineNetze, aus denen die Betreiber-Einstellungen geändert werden dürfen
NEXCANVAS_UPLOAD_MAX_MB50Die größte Datei; der Betreiber kann den Wert in den Einstellungen senken
NEXCANVAS_SESSION_DAYS30Nach so vielen Tagen endet eine Sitzung im Browser
NEXCANVAS_LOG_LEVELEinstellungquiet, normal, detailed oder trace; überstimmt die Einstellung
NEXCANVAS_COOKIE_SECUREautoon, off oder auto
NEXCANVAS_API_DOCSfalseZeigt /api/docs und /api/openapi.json
PUID, PGID1000Wem die Dateien im Datenordner gehören