📺 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
- ✅ 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
🧱 Architektur
Browser (Player)
│
▼
Flask App (Server)
├── Admin UI
├── Player UI
├── config.json
└── media/
└── <screen-name>/
├── bild.jpg
└── video.mp4
- Server: Python 3 + Flask
- Player: Jeder moderne Browser (Chrome, Edge, Firefox, Kiosk-Modus)
- State:
config.json+ Dateisystem - Frontend: Tabler + SortableJS (CDN)
📂 Projektstruktur
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
sudo apt install python3 python3-pip ffmpeg
Setup
git clone <repository-url>
cd signage
pip install flask flask-login werkzeug
Starten
python app.py
Server läuft auf:
http://localhost:5005
🛠️ Betrieb
Admin-Portal
/admin
- Screens konfigurieren
- Medien hochladen / löschen
- Playlist per Drag & Drop sortieren
Player-URLs
/player/<screen-name>
Beispiel:
http://server:5000/player/lobby
🔄 Automatischer Reload
Der Player aktualisiert sich selbst, wenn:
- Medien hinzugefügt oder gelöscht werden
- Playlist-Reihenfolge geändert wird
- Screen-Einstellungen angepasst werden
⚠️ Git & Medien
Dieses Repository ist für Code gedacht, nicht für Medien.
Empfohlene .gitignore:
media/
*.mp4
*.mov
*.jpg
*.jpeg
*.png
🎞️ Video-Empfehlungen
- Format: MP4
- Codec: H.264
- Auflösung: max. 1920x1080
ffmpeg -i input.mov -c:v libx264 -pix_fmt yuv420p -movflags +faststart output.mp4
🔐 Sicherheit
- Admin-Bereich per Login geschützt
- Player-Seiten Read-Only
- Externe Nutzung via Reverse Proxy + TLS empfohlen
🧭 Roadmap
- 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.
Description
Languages
HTML
50.1%
Python
49.2%
Shell
0.5%
Dockerfile
0.2%