neue Readme
This commit is contained in:
221
README.md
221
README.md
@@ -1,122 +1,185 @@
|
|||||||
📺 CANCOM Simple Signage
|
# 📺 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.
|
|
||||||
|
|
||||||
✨ Features
|
**CANCOM Simple Signage** ist ein leichtgewichtiges, browserbasiertes Digital-Signage-System auf Basis von **Python + Flask**.
|
||||||
|
|
||||||
✅ Browser‑basierter Player (kein nativer Client erforderlich)
|
Ziel ist eine **einfache, robuste und wartbare Lösung** für interne Info-Screens, ohne die Komplexität klassischer Digital-Signage-Plattformen.
|
||||||
✅ 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
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
🧱 Architektur
|
## ✨ Features
|
||||||
CSSBrowser (Player) │ ▼Flask App (Server)├── Admin UI├── Player UI├── config.json└── media/ └── <screen-name>/ ├── bild.jpg └── video.mp4Weitere Zeilen anzeigen
|
|
||||||
|
|
||||||
Server: Python 3 + Flask
|
- ✅ Browser-basierter Player (kein nativer Client erforderlich)
|
||||||
Player: Jeder moderne Browser (Chrome, Edge, Firefox, Kiosk‑Mode)
|
- ✅ Bilder & Videos (MP4, H.264)
|
||||||
State: config.json + Dateisystem
|
- ✅ Pro Screen eine eigene Playlist
|
||||||
Frontend: Tabler + SortableJS (CDN)
|
- ✅ 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
|
## 🧱 Architektur
|
||||||
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
|
|
||||||
|
|
||||||
🚀 Installation
|
```
|
||||||
Voraussetzungen
|
Browser (Player)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Flask App (Server)
|
||||||
|
├── Admin UI
|
||||||
|
├── Player UI
|
||||||
|
├── config.json
|
||||||
|
└── media/
|
||||||
|
└── <screen-name>/
|
||||||
|
├── bild.jpg
|
||||||
|
└── video.mp4
|
||||||
|
```
|
||||||
|
|
||||||
Python ≥ 3.9
|
- **Server:** Python 3 + Flask
|
||||||
pip
|
- **Player:** Jeder moderne Browser (Chrome, Edge, Firefox, Kiosk-Modus)
|
||||||
ffmpeg (für Video‑Konvertierung empfehlenswert)
|
- **State:** `config.json` + Dateisystem
|
||||||
|
- **Frontend:** Tabler + SortableJS (CDN)
|
||||||
|
|
||||||
CSSsudo apt install python3 python3-pip ffmpegWeitere Zeilen anzeigen
|
---
|
||||||
|
|
||||||
Setup
|
## 📂 Projektstruktur
|
||||||
Shellgit clone <repository-url>cd signagepip install flask flask-login werkzeugWeitere Zeilen anzeigen
|
|
||||||
|
|
||||||
Starten
|
```
|
||||||
Shellpython app.pyWeitere Zeilen anzeigen
|
signage/
|
||||||
Server läuft standardmäßig auf:
|
├── 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
|
http://localhost:5000
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
🛠️ Betrieb
|
## 🛠️ Betrieb
|
||||||
Admin‑Portal
|
|
||||||
|
### Admin-Portal
|
||||||
|
|
||||||
|
```
|
||||||
/admin
|
/admin
|
||||||
|
```
|
||||||
|
|
||||||
Funktionen:
|
- Screens konfigurieren
|
||||||
|
- Medien hochladen / löschen
|
||||||
|
- Playlist per Drag & Drop sortieren
|
||||||
|
|
||||||
Screens konfigurieren
|
### Player-URLs
|
||||||
Medien hochladen / löschen
|
|
||||||
Playlist per Drag & Drop sortieren
|
|
||||||
|
|
||||||
|
```
|
||||||
Player‑URLs
|
|
||||||
/player/<screen-name>
|
/player/<screen-name>
|
||||||
|
```
|
||||||
|
|
||||||
Beispiel:
|
Beispiel:
|
||||||
|
|
||||||
|
```
|
||||||
http://server:5000/player/lobby
|
http://server:5000/player/lobby
|
||||||
|
```
|
||||||
|
|
||||||
Empfehlung:
|
---
|
||||||
|
|
||||||
Browser im Kiosk‑Modus
|
## 🔄 Automatischer Reload
|
||||||
Autostart beim Login
|
|
||||||
|
|
||||||
|
Der Player aktualisiert sich selbst, wenn:
|
||||||
|
|
||||||
🔄 Automatischer Reload
|
- Medien hinzugefügt oder gelöscht werden
|
||||||
Der Player prüft regelmäßig, ob sich die Playlist geändert hat:
|
- 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 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:
|
|
||||||
|
|
||||||
per Admin‑Upload
|
Empfohlene `.gitignore`:
|
||||||
oder via Samba / Fileshare
|
|
||||||
bereitgestellt.
|
|
||||||
|
|
||||||
|
```gitignore
|
||||||
|
media/
|
||||||
|
*.mp4
|
||||||
|
*.mov
|
||||||
|
*.jpg
|
||||||
|
*.jpeg
|
||||||
|
*.png
|
||||||
|
```
|
||||||
|
|
||||||
🎞️ Video‑Empfehlungen
|
---
|
||||||
|
|
||||||
Format: MP4
|
## 🎞️ Video-Empfehlungen
|
||||||
Codec: H.264
|
|
||||||
Audio: optional, Autoplay ist standardmäßig ohne Ton
|
|
||||||
Auflösung: max. Full‑HD (1920×1080)
|
|
||||||
|
|
||||||
Beispiel‑Konvertierung:
|
- Format: MP4
|
||||||
Shellffmpeg -i input.mov -c:v libx264 -pix_fmt yuv420p -movflags +faststart output.mp4Weitere Zeilen anzeigen
|
- 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
|
- Zeitsteuerung pro Playlist-Eintrag
|
||||||
CANCOM Simple Signage
|
- 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.
|
Interne Lösung – nicht für externe Weitergabe bestimmt.
|
||||||
Reference in New Issue
Block a user