Better Shift - Schichtplanung und Teamkalender selbst hosten

Better Shift - Schichtplanung und Teamkalender selbst hosten

Better Shift ist eine selbst gehostete Schichtplanungslösung, mit der Teams ihre Arbeitszeiten, Schichten und Abwesenheiten übersichtlich koordinieren können.

Was ist Better Shift?

Schichtpläne in Excel-Dateien oder geteilten Kalendern zu verwalten ist fehleranfällig und schwer zu pflegen. Better Shift bietet eine dedizierte Weboberfläche für die Schicht- und Personalplanung: Mitarbeiter werden angelegt, Schichten zugewiesen, Abwesenheiten eingetragen und Überstunden verfolgt. Das Tool eignet sich für kleine bis mittelgroße Teams in Gastronomie, Einzelhandel, Handwerk oder anderen schichtintensiven Branchen, die keine teure SaaS-Lösung benötigen.

Voraussetzungen

  • Docker 20.10+ / Docker Compose
  • Eine MySQL- oder PostgreSQL-Instanz (kann im selben Compose-Stack laufen)

Compose-Beispiel

services:
  better-shift:
    image: ghcr.io/bettershift/bettershift:latest
    container_name: better-shift
    restart: unless-stopped
    ports:
      - "4500:4500"
    volumes:
      - ./uploads:/app/uploads
    environment:
      - DB_HOST=db
      - DB_PORT=5432
      - DB_NAME=bettershift
      - DB_USER=bs_user
      - DB_PASSWORD=sicheres_passwort
      - TZ=Europe/Berlin
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    container_name: better-shift-db
    restart: unless-stopped
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=bettershift
      - POSTGRES_USER=bs_user
      - POSTGRES_PASSWORD=sicheres_passwort

Hinweise

  • Das uploads-Volume speichert Profilbilder und exportierte Schichtpläne — es sollte in das Backup einbezogen werden.
  • Schichtpläne können als PDF oder CSV exportiert und per E-Mail an Mitarbeiter versendet werden.
  • Regelmäßige Datenbank-Dumps (pg_dump) schützen vor Datenverlust.
  • Der Zugriff sollte durch einen Reverse-Proxy mit Authentifizierung abgesichert werden, wenn der Dienst öffentlich erreichbar ist.