neue Readme
This commit is contained in:
223
README.md
223
README.md
@@ -1,122 +1,185 @@
|
||||
📺 CANCOM Simple Signage
|
||||
CANCOM Simple Signage ist ein leichtgewichtiges, browserbasiertes Digital‑Signage‑System auf Basis von Python + Flask.
|
||||
Ziel ist eine einfache, robuste und wartbare Lösung für interne Info‑Screens, ohne die Komplexität klassischer Digital‑Signage‑Plattformen.
|
||||
# 📺 CANCOM Simple Signage
|
||||
|
||||
✨ Features
|
||||
**CANCOM Simple Signage** ist ein leichtgewichtiges, browserbasiertes Digital-Signage-System auf Basis von **Python + Flask**.
|
||||
|
||||
✅ 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
|
||||
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, Kiosk‑Mode)
|
||||
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 Video‑Konvertierung 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
|
||||
Admin‑Portal
|
||||
## 🛠️ 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
|
||||
|
||||
|
||||
Player‑URLs
|
||||
```
|
||||
/player/<screen-name>
|
||||
```
|
||||
|
||||
Beispiel:
|
||||
|
||||
```
|
||||
http://server:5000/player/lobby
|
||||
```
|
||||
|
||||
Empfehlung:
|
||||
---
|
||||
|
||||
Browser im Kiosk‑Modus
|
||||
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 Admin‑Upload
|
||||
oder via Samba / Fileshare
|
||||
bereitgestellt.
|
||||
Empfohlene `.gitignore`:
|
||||
|
||||
```gitignore
|
||||
media/
|
||||
*.mp4
|
||||
*.mov
|
||||
*.jpg
|
||||
*.jpeg
|
||||
*.png
|
||||
```
|
||||
|
||||
🎞️ Video‑Empfehlungen
|
||||
---
|
||||
|
||||
Format: MP4
|
||||
Codec: H.264
|
||||
Audio: optional, Autoplay ist standardmäßig ohne Ton
|
||||
Auflösung: max. Full‑HD (1920×1080)
|
||||
## 🎞️ Video-Empfehlungen
|
||||
|
||||
Beispiel‑Konvertierung:
|
||||
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
|
||||
```
|
||||
|
||||
Admin‑Bereich per Login geschützt
|
||||
Keine anonyme Administration
|
||||
Player‑Seiten öffentlich (Read‑Only)
|
||||
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 Playlist‑Eintrag
|
||||
👁 Vorschau im Admin‑Portal
|
||||
👥 Mehrere Admin‑User / Rollen
|
||||
🗄️ Migration von config.json → SQLite
|
||||
🐳 Docker‑Compose‑Setup
|
||||
---
|
||||
|
||||
## 🧭 Roadmap
|
||||
|
||||
👤 Maintainer
|
||||
CANCOM Simple Signage
|
||||
Interne Lösung – nicht für externe Weitergabe bestimmt.
|
||||
- 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.
|
||||
|
||||
Reference in New Issue
Block a user