neue Readme

This commit is contained in:
Erik Thiele
2026-04-17 14:13:53 +02:00
parent 97f047497a
commit 6faf207246

221
README.md
View File

@@ -1,122 +1,185 @@
📺 CANCOM Simple Signage
CANCOM Simple Signage ist ein leichtgewichtiges, browserbasiertes DigitalSignageSystem auf Basis von Python + Flask.
Ziel ist eine einfache, robuste und wartbare Lösung für interne InfoScreens, ohne die Komplexität klassischer DigitalSignagePlattformen.
# 📺 CANCOM Simple Signage
✨ Features
**CANCOM Simple Signage** ist ein leichtgewichtiges, browserbasiertes Digital-Signage-System auf Basis von **Python + Flask**.
✅ Browserbasierter Player (kein nativer Client erforderlich)
✅ Bilder & Videos (MP4, H.264)
✅ Pro Screen eine eigene Playlist
✅ Drag&DropReihenfolge im AdminPortal
✅ Automatischer PlayerReload bei Änderungen
✅ Upload & Löschen von Medien
✅ ScreenStatus (aktiv / leer)
✅ CIkonformes AdminUI (CANCOM)
✅ Läuft lokal, in VMs oder auf Proxmox
Ziel ist eine **einfache, robuste und wartbare Lösung** für interne Info-Screens, ohne die Komplexität klassischer Digital-Signage-Plattformen.
---
🧱 Architektur
CSSBrowser (Player) │ ▼Flask App (Server)├── Admin UI├── Player UI├── config.json└── media/ └── <screen-name>/ ├── bild.jpg └── video.mp4Weitere Zeilen anzeigen
## ✨ Features
Server: Python 3 + Flask
Player: Jeder moderne Browser (Chrome, Edge, Firefox, KioskMode)
State: config.json + Dateisystem
Frontend: Tabler + SortableJS (CDN)
- ✅ Browser-basierter Player (kein nativer Client erforderlich)
- ✅ Bilder & Videos (MP4, H.264)
- ✅ Pro Screen eine eigene Playlist
- ✅ Drag-&-Drop-Reihenfolge im Admin-Portal
- ✅ Automatischer Player-Reload bei Änderungen
- ✅ Upload & Löschen von Medien
- ✅ Screen-Status (aktiv / leer)
- ✅ CI-konformes Admin-UI (CANCOM)
- ✅ Läuft lokal, in VMs oder auf Proxmox
---
📂 Projektstruktur
CSSsignage/├── app.py # Flask Application├── config.json # Konfiguration (Screens, Playlists, Intervalle)├── media/ # Medien pro Screen│ ├── lobby/│ └── meetingroom/├── templates/│ ├── admin.html # Admin UI│ ├── player.html # Player UI│ └── login.html # Login Page├── static/ # (optional) eigene Assets└── README.md``Weitere Zeilen anzeigen
## 🧱 Architektur
🚀 Installation
Voraussetzungen
```
Browser (Player)
Flask App (Server)
├── Admin UI
├── Player UI
├── config.json
└── media/
└── <screen-name>/
├── bild.jpg
└── video.mp4
```
Python ≥ 3.9
pip
ffmpeg (für VideoKonvertierung empfehlenswert)
- **Server:** Python 3 + Flask
- **Player:** Jeder moderne Browser (Chrome, Edge, Firefox, Kiosk-Modus)
- **State:** `config.json` + Dateisystem
- **Frontend:** Tabler + SortableJS (CDN)
CSSsudo apt install python3 python3-pip ffmpegWeitere Zeilen anzeigen
---
Setup
Shellgit clone <repository-url>cd signagepip install flask flask-login werkzeugWeitere Zeilen anzeigen
## 📂 Projektstruktur
Starten
Shellpython app.pyWeitere Zeilen anzeigen
Server läuft standardmäßig auf:
```
signage/
├── app.py
├── config.json
├── media/
│ ├── lobby/
│ └── meetingroom/
├── templates/
│ ├── admin.html
│ ├── player.html
│ └── login.html
├── static/
└── README.md
```
---
## 🚀 Installation
### Voraussetzungen
- Python ≥ 3.9
- pip
- ffmpeg
```bash
sudo apt install python3 python3-pip ffmpeg
```
### Setup
```bash
git clone <repository-url>
cd signage
pip install flask flask-login werkzeug
```
### Starten
```bash
python app.py
```
Server läuft auf:
```
http://localhost:5000
```
---
🛠️ Betrieb
AdminPortal
## 🛠️ Betrieb
### Admin-Portal
```
/admin
```
Funktionen:
- Screens konfigurieren
- Medien hochladen / löschen
- Playlist per Drag & Drop sortieren
Screens konfigurieren
Medien hochladen / löschen
Playlist per Drag & Drop sortieren
### Player-URLs
PlayerURLs
```
/player/<screen-name>
```
Beispiel:
```
http://server:5000/player/lobby
```
Empfehlung:
---
Browser im KioskModus
Autostart beim Login
## 🔄 Automatischer Reload
Der Player aktualisiert sich selbst, wenn:
🔄 Automatischer Reload
Der Player prüft regelmäßig, ob sich die Playlist geändert hat:
- Medien hinzugefügt oder gelöscht werden
- Playlist-Reihenfolge geändert wird
- Screen-Einstellungen angepasst werden
Datei hinzugefügt
Datei gelöscht
Reihenfolge geändert
Einstellungen geändert
---
➡️ Bei Änderung lädt sich der Player automatisch neu.
## ⚠️ Git & Medien
⚠️ Wichtig: Git & Medien
👉 Dieses Repository ist für Code gedacht, nicht für Inhalte.
Empfohlene Praxis:
Plain Textmedia/*.mp4*.jpg*.pngWeitere Zeilen anzeigen
in .gitignore aufnehmen.
Medien werden:
> **Dieses Repository ist für Code gedacht, nicht für Medien.**
per AdminUpload
oder via Samba / Fileshare
bereitgestellt.
Empfohlene `.gitignore`:
```gitignore
media/
*.mp4
*.mov
*.jpg
*.jpeg
*.png
```
🎞️ VideoEmpfehlungen
---
Format: MP4
Codec: H.264
Audio: optional, Autoplay ist standardmäßig ohne Ton
Auflösung: max. FullHD (1920×1080)
## 🎞️ Video-Empfehlungen
BeispielKonvertierung:
Shellffmpeg -i input.mov -c:v libx264 -pix_fmt yuv420p -movflags +faststart output.mp4Weitere Zeilen anzeigen
- Format: MP4
- Codec: H.264
- Auflösung: max. 1920x1080
🔐 Sicherheit
```bash
ffmpeg -i input.mov -c:v libx264 -pix_fmt yuv420p -movflags +faststart output.mp4
```
AdminBereich per Login geschützt
Keine anonyme Administration
PlayerSeiten öffentlich (ReadOnly)
Für externe Zugriffe: Reverse Proxy + TLS (z.B. Nginx Proxy Manager)
---
## 🔐 Sicherheit
🧭 Roadmap (optional)
- Admin-Bereich per Login geschützt
- Player-Seiten Read-Only
- Externe Nutzung via Reverse Proxy + TLS empfohlen
⏰ Zeitsteuerung pro PlaylistEintrag
👁 Vorschau im AdminPortal
👥 Mehrere AdminUser / Rollen
🗄️ Migration von config.json → SQLite
🐳 DockerComposeSetup
---
## 🧭 Roadmap
👤 Maintainer
CANCOM Simple Signage
- Zeitsteuerung pro Playlist-Eintrag
- Vorschau im Admin-Portal
- Mehrere Admin-User
- SQLite statt config.json
- Docker-Compose Setup
---
## 👤 Maintainer
**CANCOM Simple Signage**
Interne Lösung nicht für externe Weitergabe bestimmt.