A fancy self-hosted digital signage tool. Free, simple and working.
| .github/workflows | ||
| data | ||
| docs | ||
| lang | ||
| plugins | ||
| src | ||
| system | ||
| var/run | ||
| views | ||
| .dockerignore | ||
| .env.dist | ||
| .gitignore | ||
| docker-compose.dev.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| LICENSE | ||
| obscreen.py | ||
| README.md | ||
| requirements.txt | ||
| version.txt | ||
Obscreen
🧑🎄 Open to feature request and pull request
About
Use a RaspberryPi to show a full-screen slideshow (Kiosk-mode)
Features:
- Dead simple chromium webview
- Clear GUI
- Fleet view to manage many devices easily
- Very few dependencies
- JSON database files
- Plugin system
- No stupid pricing plan
- No cloud
- No telemetry
Installation and configuration (docker)
git clone https://github.com/jr-k/obscreen.git
cd obscreen
cp .env.dist .env
# be sure to have a valid file path for AUTOCONFIGURE_LX_FILE variable
# you should use ./var/run/dummy if you don't care about monitor and just want to test
nano .env
# run
docker compose up
Installation (manual)
sudo apt-get update
sudo apt-get install -y git chromium-browser unclutter
git clone https://github.com/jr-k/obscreen.git
cd obscreen && pip3 install -r requirements.txt && cp data/db/slideshow.json.dist data/db/slideshow.json && cp .env.dist .env
Configure
- Server configuration is available in
.envfile. - Application configuration is available in
http://localhost:5000/settingspage.
Run
Cli mode
./obscreen.py
Forever with systemctl
sudo ln -s "$(pwd)/system/obscreen.service" /etc/systemd/system/obscreen.service
sudo systemctl daemon-reload
sudo systemctl enable obscreen.service
sudo systemctl start obscreen.service
To troubleshoot you can check logs
sudo journalctl -u obscreen -f
Usage
- Hostname will be http://localhost:5000 or http://localhost with nginx or http://[SERVER_IP]:[PORT]
- Page which plays slideshow is reachable at
http://localhost:5000 - Slideshow manager is reachable at
http://localhost:5000/manage
You are done now :)
- If everything is set up correctly, the RaspberryPi shall start chromium in fullscreen directly after boot screen and after some seconds of showing the date & time (
views/player/default.jinja.html) your slideshow shall start and loop endlessly. - Be sure that
AUTOCONFIGURE_LX_FILEis writeable !
Additional
A. Hardware checks
-
Basic Setup For basic RaspberryPi setup you can use most of the available guides, for example this one: https://gist.github.com/blackjid/dfde6bedef148253f987
-
HDMI Mode You may need to set the HDMI Mode on the raspi to ensure the hdmi resolution matches your screen exactly. Here is the official documentation: https://www.raspberrypi.org/documentation/configuration/config-txt/video.md
However, I used this one: (2,82) = 1920x1080 60Hz 1080p
B. Nginx server to serve pages (useful for gzip compression for instance)
- Install
sudo apt install -y nginx
sudo rm /etc/nginx/sites-enabled/default 2>/dev/null
sudo ln -s "$(pwd)/system/nginx-obscreen" /etc/nginx/sites-enabled
sudo systemctl reload nginx
- Set
autoconfigure_reverse_proxy_modetotruein.envfile
