RackView

RackView

Docker app from alexanderschubert's Repository

Overview

RackView documents server racks and home networks: devices in rack units with front and rear view, devices outside the rack, port-to-port connections, network map, IP and VLAN overview, power strips and UPS outlets, warranty dates and printable QR labels. Everything runs in this single container - web UI, API and a built-in PostgreSQL database. The user interface is in German.

RackView dokumentiert Serverschraenke und Heimnetz: Geraete in Hoeheneinheiten, Vorder- und Rueckansicht, Geraete ausserhalb der Racks, Netzwerkverbindungen zwischen Ports, IP- und VLAN-Uebersicht, Steckdosenleisten, Garantiedaten sowie QR-Etiketten zum Ausdrucken.

Alles steckt in diesem einen Container - Oberflaeche, Schnittstelle und die PostgreSQL-Datenbank. Es muss nichts weiter installiert werden.

Beim ersten Aufruf legt man sich ein Konto an; jedes Konto hat seinen eigenen, getrennten Bereich. Wer moechte, schaltet dort auch die Zwei-Faktor-Anmeldung ein.

Alle Daten liegen im Datenpfad (/config): Datenbank, Geraetebilder, naechtliche Sicherungen und der Anwendungsschluessel.

RackView

Dokumentation für Serverschrank und Heimnetz – selbst gehostet, in einem Container.

Image Lizenz: MIT Projektseite

English: RackView documents server racks and home networks: devices in rack units with front and rear view, ports and cable connections, network map, IPs and VLANs, power outlets, warranty dates and QR labels. It ships as a single Docker image with a built-in PostgreSQL database. The user interface is currently German only. Quick start: see Installation below – the commands are the same in any language. Built by Alexander Schubert with the help of Claude, an AI assistant – see Über das Projekt.

RackView

Funktionen

  • Racks mit Vorder- und Rückansicht, beliebiger Höhe und Geräten, die nur vorne oder nur hinten sitzen – etwa Patchpanel vorne, Steckdosenleiste hinten
  • Gerätefronten, die aussehen wie das Gerät: RJ45- und SFP-Buchsen, belegte Ports farbig, Steckdosenleisten mit ihren Schukodosen
  • Standorte für alles, was nicht im Rack steht: Access Points, Modem, Kameras
  • Ports und Verbindungen zwischen Geräten, mit Kabeltyp und Länge, PoE je Port
  • Netzwerkplan, der sich aus den Verbindungen selbst zeichnet
  • IP-Adressen und VLANs mit Übersicht, wer welche Adresse belegt
  • Steckplätze an Steckdosenleiste und USV: welches Gerät hängt wo
  • Kaufdatum und Garantie mit Warnung, bevor die Garantie ausläuft
  • QR-Etiketten für A4-Bögen oder Etikettendrucker – Scannen öffnet das Gerät
  • Export als CSV, PDF und JSON – die JSON-Datei ist eine vollständige Sicherung und lässt sich wieder einlesen
  • Konten mit getrennten Bereichen, Zwei-Faktor-Anmeldung und optional Anmeldung über Authentik oder einen anderen OIDC-Anbieter
  • Helle und dunkle Ansicht
  • Nächtliche Sicherung der Datenbank
Rack mit Vorder- und Rückansicht Geräteliste
Port-Übersicht mit RJ45 und SFP+ Netzwerkplan
Steckplätze der Steckdosenleiste QR-Etiketten

Installation

Im Image steckt alles: Oberfläche, Schnittstelle und PostgreSQL. Ein Port, ein Datenpfad – mehr braucht es nicht.

Unraid

RackView steht im App-Katalog: Apps → nach RackView suchen → Install. Port und Datenpfad prüfen, Apply.

Bald verfügbar: RackView ist für den App-Katalog freigegeben und erscheint dort mit dessen nächster Aktualisierung. Findest du es noch nicht, nimm so lange den Weg über die Vorlage.

Ohne App-Katalog geht es über die Vorlage (Konsole von Unraid, oben rechts >_):

wget -O /boot/config/plugins/dockerMan/templates-user/my-RackView.xml \
  https://raw.githubusercontent.com/alexanderschubert/rackview/main/templates/rackview.xml

Dann Docker → Add Container, oben unter User templates RackView wählen. Ausführlich, mit Updates und Fehlersuche: unraid/README.md

Docker

docker run -d --name rackview \
  --restart unless-stopped \
  -p 8080:80 \
  -v /pfad/zu/rackview:/config \
  -e TZ=Europe/Berlin \
  ghcr.io/alexanderschubert/rackview:latest

Docker Compose

services:
  rackview:
    image: ghcr.io/alexanderschubert/rackview:latest
    container_name: rackview
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - ./rackview:/config
    environment:
      TZ: Europe/Berlin

Erster Start

Der erste Start dauert etwas länger – die Datenbank wird angelegt. Danach http://<server>:8080 aufrufen und ein Konto anlegen. Das erste Konto wird Administrator.

Ist RackView aus dem Internet erreichbar, danach die Selbstregistrierung abschalten (RACKVIEW_REGISTRATION=false). Weitere Konten legt der Administrator dann in den Einstellungen an.

Was im Datenpfad liegt

/config/db              Datenbank (PostgreSQL)
/config/uploads         hochgeladene Gerätebilder
/config/backups         nächtliche Sicherungen der Datenbank
/config/app.key         Anwendungsschlüssel
/config/db-passwort     Passwort der eingebauten Datenbank

app.key gut aufheben. Mit ihm sind die Zwei-Faktor-Geheimnisse verschlüsselt. Wer den Datenpfad sichert, hat ihn automatisch dabei.

Updates

docker pull ghcr.io/alexanderschubert/rackview:latest
docker rm -f rackview   # danach den run-Befehl von oben erneut ausführen

Mit Compose: docker compose pull && docker compose up -d. Auf Unraid genügt Check for Updates in der Docker-Übersicht.

Die Datenbank wird beim Start automatisch angepasst, die Daten im Datenpfad bleiben unberührt. Wer eine bestimmte Fassung festhalten will, nimmt statt latest eine Versionsnummer, etwa ghcr.io/alexanderschubert/rackview:1.0.0 – alle Fassungen stehen unter Packages.

Einstellungen

Alle Einstellungen sind Umgebungsvariablen und optional. Die wichtigsten:

Variable Standard Bedeutung
TZ Europe/Berlin Zeitzone für Protokolle und Sicherung
RACKVIEW_REGISTRATION true Selbstregistrierung auf der Anmeldeseite
APP_URL nur hinter einem Reverse-Proxy nötig, z. B. https://rack.example.de
BACKUP_SCHEDULE 0 3 * * * Zeitpunkt der Sicherung (Cron); leer schaltet sie ab
RETENTION_DAYS 14 Aufbewahrung der Sicherungen in Tagen
DB_HOST leer = eingebaute Datenbank; gesetzt = eigene PostgreSQL-Datenbank
OIDC_ENABLED false Anmeldung über Authentik o. ä. freischalten

Die vollständige Liste, externe Datenbank und die Einrichtung von OIDC stehen in unraid/README.md – sie gelten für jede Docker-Installation, nicht nur für Unraid.

Hilfe und Mitmachen

Gebaut mit Laravel, Vue 3 und PostgreSQL.

Über das Projekt

RackView ist aus meinem eigenen Homelab entstanden. Ideen, Aufbau und Entscheidungen stammen von mir, getestet wird im eigenen Rack auf Unraid. Den Code schreibe ich zum großen Teil zusammen mit Claude, einem KI-Assistenten von Anthropic – deshalb steht Claude in den Commits als Co-Autor.

Lizenz

MIT

Media gallery

1 / 7

Install RackView on Unraid in a few clicks.

Find RackView in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for RackView Review the template variables and paths Click Install

Related apps

Details

Repository
ghcr.io/alexanderschubert/rackview:latest
Last Updated2026-09-23
First Seen2026-09-23

Runtime arguments

Web UI
http://[IP]:[PORT:80]/
Network
bridge
Shell
bash
Privileged
false

Template configuration

WeboberflaechePorttcp

Port, unter dem RackView im Browser erreichbar ist.

Target
80
Default
8080
Value
8080
DatenpfadPathrw

Hier liegen Datenbank, Geraetebilder, Sicherungen und der Anwendungsschluessel. Dieser Pfad muss erhalten bleiben - und er darf nicht auf den Projektordner mit dem Quelltext zeigen.

Target
/config
Default
/mnt/user/appdata/rackview-app
Value
/mnt/user/appdata/rackview-app
ZeitzoneVariable

Zeitzone fuer die Protokolle und den Zeitpunkt der naechtlichen Sicherung.

Target
TZ
Default
Europe/Berlin
Value
Europe/Berlin
SelbstregistrierungVariable

true = auf der Anmeldeseite kann sich jeder ein Konto anlegen. Nach dem Anlegen des eigenen Kontos besser auf false setzen, vor allem wenn RackView aus dem Internet erreichbar ist. Weitere Konten legt dann der Admin in den Einstellungen an.

Target
RACKVIEW_REGISTRATION
Default
true
Value
true
Sicherung: ZeitplanVariable

Cron-Ausdruck fuer die Sicherung der Datenbank nach /config/backups. Leer lassen schaltet die Sicherung ab.

Target
BACKUP_SCHEDULE
Default
0 3 * * *
Value
0 3 * * *
Sicherung: Aufbewahrung (Tage)Variable

Aeltere Sicherungen werden geloescht.

Target
RETENTION_DAYS
Default
14
Value
14
Adresse der AnwendungVariable

Nur noetig, wenn RackView hinter einem Reverse-Proxy unter einem festen Namen laeuft, z.B. https://rack.example.de

Target
APP_URL
AnwendungsschluesselVariable

Leer lassen. Beim ersten Start wird ein Schluessel erzeugt und in /config/app.key abgelegt. Nur setzen, wenn ein vorhandener Stand uebernommen wird - der Schluessel muss dann genau der alte sein.

Target
APP_KEY
Migrationen automatischVariable

true = nach einem Update wird die Datenbank automatisch angepasst. Nur zur Fehlersuche abschalten.

Target
AUTO_MIGRATE
Default
true
Value
true
Anmeldedienst (OIDC): aktivVariable

true schaltet die Anmeldung über einen OIDC-Anbieter frei, z.B. Authentik. Die Anmeldung mit Passwort bleibt daneben bestehen. Im Anbieter als Redirect URI eintragen: http://adresse/api/auth/oidc/callback

Target
OIDC_ENABLED
Default
false
Value
false
Anmeldedienst: IssuerVariable

Adresse des Anbieters, z.B. https://auth.example.de/application/o/rackview/ - dort liegt auch /.well-known/openid-configuration.

Target
OIDC_ISSUER
Anmeldedienst: Client-IDVariable

Client-ID der Application im Anbieter.

Target
OIDC_CLIENT_ID
Anmeldedienst: SecretVariable

Client-Secret der Application im Anbieter.

Target
OIDC_CLIENT_SECRET
Anmeldedienst: AufschriftVariable

Beschriftung des Knopfes auf der Anmeldeseite.

Target
OIDC_LABEL
Default
Mit Authentik anmelden
Value
Mit Authentik anmelden
Externe Datenbank: HostVariable

Leer lassen, dann laeuft PostgreSQL im Container. Nur ausfuellen, wenn eine eigene PostgreSQL-Datenbank benutzt werden soll - dann sind auch Name, Benutzer und Passwort noetig.

Target
DB_HOST
Externe Datenbank: PortVariable

Port der externen Datenbank.

Target
DB_PORT
Default
5432
Value
5432
Externe Datenbank: NameVariable

Name der Datenbank.

Target
DB_DATABASE
Default
rackview
Value
rackview
Externe Datenbank: BenutzerVariable

Benutzer der Datenbank.

Target
DB_USERNAME
Default
rackview
Value
rackview
Externe Datenbank: PasswortVariable

Nur bei externer Datenbank noetig. Die eingebaute Datenbank vergibt sich ihr Passwort selbst (/config/db-passwort).

Target
DB_PASSWORD