BYOS (Build Your Own Server)

Buy a TRMNL device, then point it at your own server.

Why

TRMNL intends to ensure that every device is un-brickable and can run with zero external dependencies. BYOS is one aspect of making this possible for you.

Quick Start

  1. Purchase a TRMNL from our storearrow-up-right.

  2. Choose a BYOS implementation for your stack (see below). Our flagship implementation is Terminusarrow-up-right, so we recommended you get started there.

Audience

This page is primarily for BYOS maintainers but might also be helpful for anyone wanting to get a highly level over of what each implementation can do before spinning up on your own network.

Implementations

We support multiple implementations developed by us and the community at large. The goal isn't for BYOS to match parity with our hosted solution but to provide enough of a pleasant solution for your own customized experience. There are trade offs either way but we've got you covered for whatever path you wish to travel.

Legend

Use this legend to understand the matrix of features below.

  • 🟒 Supported.

  • 🟑 Partially supported.

  • πŸ”΄ Not supported or not implemented.

  • βšͺ️ Unknown.

Matrix

Below is a list of all implementations in various languages/frameworks you can use to self-host and manage your devices with:

Implementation
Stack
Dashboard
Auto-Provisioning
Devices
JSON Data API
Image Previews
Playlists
Plugins
Recipes
Sensors
Docker
Test Suite
Maintained
Semantic Versioning

Ruby/Hanami

🟒

🟒

🟒

🟒

🟒

🟒

🟒

🟒

🟒

🟒

🟒

🟒

🟒

PHP/Laravel

🟒

🟒

🟒

🟒

🟒

🟒

🟒

🟒

πŸ”΄

🟒

🟒

🟒

πŸ”΄

JavaScript

🟒

🟒

🟒

🟒

🟒

🟒

🟒

🟒

πŸ”΄

🟒

🟒

🟒

βšͺ️

JavaScript/Next.js

🟒

🟒

🟒

🟒

🟒

🟒

πŸ”΄

🟒

πŸ”΄

🟒

πŸ”΄

🟒

🟒

Python/FastAPI

🟒

βšͺ️

🟒

πŸ”΄

🟒

🟒

🟒

βšͺ️

πŸ”΄

πŸ”΄

πŸ”΄

πŸ”΄

βšͺ️

Python/Django

πŸ”΄

πŸ”΄

🟒

🟒

🟒

πŸ”΄

πŸ”΄

πŸ”΄

πŸ”΄

🟒

πŸ”΄

πŸ”΄

βšͺ️

Elixir/Phoenix

πŸ”΄

πŸ”΄

🟒

🟒

🟒

🟒

πŸ”΄

πŸ”΄

πŸ”΄

πŸ”΄

πŸ”΄

πŸ”΄

βšͺ️

The following provides a detailed breakdown of each of the above features:

  • Dashboard: Provides a high level overview of information mostly in terms of quick links, statistics, charts, graphs, system health, etc.

  • Auto-Provisioning: Devices can be automatically provisioned once added to your network. This includes the automatic provisioning of new and existing devices.

  • Devices: Provides device management in terms of updating each device, viewing current image, viewing logs, and more.

  • JSON Data API: Provides full API support using a JSON Data API for device management, image generation, logging, and more.

  • Image Previews: Provides a UI for quickly, and dynamically, generating new device screens.

  • Playlists: Supports playlist configuration and management in terms of timing, order, and display of screens on devices. This can also include proxying to our Core server.

  • Plugins: Supports installation and hosting of custom plugins. This can also include proxying to our Core server.

  • Recipes: Supports installation and hosting of custom plugins. This can also include proxying to our Core server.

  • Sensors: Supports sensors connected via Qwiic Cablesarrow-up-right either to the server (via Raspberry Pi) or via a TRMNL compatible device. Please see the TRMNL Sensor Scannerarrow-up-right project for further details.

  • Docker: Supports Docker for both local development and production deployment.

  • Test Suite: Has a test suite with near 100% test coverage, is fully runnable locally, and is wired up with automatic Continuous Integration (CI) builds.

  • Maintained: Project is maintained and kept up-to-date on a weekly (or monthly) basis in terms of dependencies, firmware updates, and keeping up-to-date with any/all Core changes.

  • Semantic Versioning: Supports strict semantic versioningarrow-up-right.

API

At a minimum, the following API endpoints should be supported for all BYOS implementations:

Setup

Display

Logs

πŸ’‘ For a detailed breakdown of all API endpoints and what they can do, please refer to the Terminus API Documentationarrow-up-right or the TRMNL APIarrow-up-right gem which provides a Ruby API client for talking to our servers.

Last updated