This is a Flask app for managing your apps on your Tronbyt (flashed Tidbyt). This project is designed to run your Tronbyt/Tidbyt completely locally without relying on the backend servers operated by Tidbyt.
Compared to the stock firmware, Tronbyt provides the following advantages:
- A web UI with much better discoverability. You'd be surprised how many community apps could never be found in the Tidbyt app.
- Everything runs locally without a cloud dependency. If Tidbyt's servers go offline, your Tronbyt will keep working indefinitely.
- Fresher community apps (because the Tidbyt community repository is stale).
- When running locally, some APIs start working again whereas Tidbyt's servers were blocked (for example the Surfline apps).
- Community support.
Of course, there are also some drawbacks:
- There is no mobile app yet (that would be a nice project for you!).
- Notifications have a slightly higher latency (because the device waits for the next poll instead of getting a push via MQTT).
- Some built-in apps are not available (a shrinking number, thanks to community members who recreate them).
- Tools which use
pixlet push
to push images to a Tidbyt are incompatible (they need to be changed to accept different URLs).
Some community projects like TidbytAssistant have already been updated to work with Tronbyt.
If you've been invited to use my public instance of this server login there and skip to the quickstart guide.
- Docker
- Docker Compose (optional, but recommended)
It is possible to just start the server on the default ports in the background with a one-liner:
docker run -d -e SERVER_HOSTNAME=<YOUR_SETTING_HERE> -e SERVER_PORT=8000 -e PIXLET_RENDER_PORT1=5100 -e PRODUCTION=1 -p 8000:8000 -p 5100:5100 -p 5101:5101 ghcr.io/tavdog/tronbyt-server
That said, the recommended installation method uses Docker Compose with a configuration file for your settings:
-
Download the Compose project (or use the contents to add a service to an existing project).
-
Copy the example environment file and modify it as needed:
curl https://raw.githubusercontent.com/tavdog/tronbyt-server/refs/heads/master/.env.example > .env
-
Set the
SERVER_HOSTNAME_OR_IP
value in the.env
file. IP addresses will work too.
-
Build and start the Docker containers:
docker compose up -d
-
Access the web app at http://localhost:8000 (or your configured domain or IP) with the default login credentials:
- Username:
admin
- Password:
password
- Username:
- Access the web app at http://localhost:8000 (or your configured domain) with the default login credentials:
admin/password
. - Add your Tronbyt as a device in the manager. The default installation will already have a device named "Tronbyt 1".
- Click on the "Firmware" button and enter your WiFi credentials. The image URL should be prefilled.
- Click "Generate Firmware" and download your firmware file.
- Download the ESPHome firmware flasher from this link and use it to flash your Tidbyt into a Tronbyt.
- Add an app and configure it via the built-in Pixlet interface.
- Click "Save" and you'll see the app preview on the app listing page.
- The web app is exposed on port
8000
. - Additional ports
5100
and5101
are also exposed.
- Username:
admin
- Password:
password
- Ensure that the
SERVER_HOSTNAME_OR_IP
value is set in the.env
file if you are not running the application locally. An IP address will also work here.
-
Clone the repository:
git clone https://github.com/tavdog/tronbyt-server.git cd tronbyt-server
-
Build and run the image using the local copy:
docker compose -f docker-compose.dev.yaml up -d --build
If you'd like to serve tronbyt-server and pixlet over HTTPS, you can do so by fronting the services with a reverse proxy.
The docker-compose.https.yaml
file contains an example using Caddy as a lightweight reverse proxy which provides TLS termination. The default configuration uses Local HTTPS, for which Caddy generates its own certificate authority (CA) and uses it to sign certificates. The certificates are stored in the certs
directory at pki/authorities/local
.
If you want to make tronbyt-server accessible using a public DNS name, adjust Caddyfile
to match your domain name and use one of the supporte ACME challenges (HTTP, TLS-ALPN, or DNS).