Deploy Tesserae
E-ink dashboard server: compose, render, and HTTP-pull panels
tesserae
Just deployed
/app/data
Deploy and Host self hosted Tesserae on Railway
Tesserae is a self-hosted e-ink dashboard server: compose dashboards in a browser and let HTTP-pulling panels show the rendered frames.
About Hosting Tesserae open-source software on Railway (self hosted Tesserae template)
Running Tesserae on Railway gives you your own copy of the server, with your dashboards, settings, schedules and render cache kept on a volume attached to the service at /app/data.
Why Deploy Tesserae, the self-hosted e-ink dashboard server on Railway
A Raspberry Pi on your desk ties the dashboard to one room and your home network staying up. Hosting Tesserae on Railway gives you an always-on HTTPS URL that panels can pull frames from.
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying Tesserae on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Railway vs Other Hosting Providers and VPS for Tesserae self hosting
Tesserae runs as one container with a data volume, so the hosting choice is about how much server work you want to manage.
| Provider | What You Get with Railway | What You Get with the Other Provider |
|---|---|---|
| DigitalOcean | A managed deploy with a public HTTPS domain, a volume at /app/data, and a /healthz health check. | A Droplet you administer: Docker, reverse proxy, TLS, updates and volume backups are yours. |
| AWS | One service and volume wired together, with no VPC or load balancer to design first. | Broad control over networking and scaling, with more setup for a small always-on server. |
| Hetzner | Usage-based hosting where the platform handles domains and TLS. | Low-cost servers with full root access, running Tesserae under your own Docker or systemd setup. |
Railway suits people who want the dashboard server running quickly, while a VPS suits people who want full control.
Common Use Cases for hosted Tesserae
- Composing a household dashboard in the browser: Lay out tiles for weather, calendar, and home sensor readings in the Tesserae editor, then preview the exact frame before any panel ever shows it.
- Rendering frames server-side with headless Chromium: Tesserae screenshots each composition at the panel's native resolution, so the image a panel receives matches what you saw in the editor.
- Serving frames to HTTP-pulling e-ink panels: Battery-powered clients fetch the rendered frame from your Railway HTTPS URL on a schedule, so no always-on device needs to sit beside the panel.
- Running one dashboard server for several rooms: Point multiple panels at the same public domain, each with its own dashboard and refresh interval, without maintaining a Pi per room.
- Keeping the server away from your desk: Because the public URL is always on, you can update dashboards from anywhere and let the panels keep pulling without a local machine staying awake.
Dependencies for Tesserae Docker hosted on Railway
This template runs one container from the unmodified upstream Tesserae image with one persistent volume. Keep one replica, because the volume holds your settings and schedules.
Deployment Dependencies for Managed Tesserae Service (one container with a data volume)
The service listens on port 8080 behind Railway's public domain and mounts one volume at /app/data for settings, pages, schedules and backups. Health checks run against /healthz.
Implementation Details for Tesserae (unmodified Tesserae 0.511.0 image plus a Railway start script that seeds the admin password)
The image is the unmodified upstream Tesserae 0.511.0 image plus a start script. It never overwrites an existing password, then hands off to the upstream entrypoint.
There are two generated variables and no inputs from you. Keep TESSERAE_SECRET_KEY unchanged after deploy.
How does Tesserae compare against other tools
Tesserae vs a Raspberry Pi on your desk (Raspberry Pi Alternative)
- Always-on hosting: Tesserae runs as a container on Railway with a public HTTPS URL, so panels can fetch frames without a machine at home. A Pi wins if you want everything on your LAN.
- Panel delivery: Panels here pull frames over HTTP or HTTPS. The built-in MQTT broker and Visionect listener are not reachable on Railway, so those setups need a LAN host.
- Setup effort: The admin password is pre-set on first boot, so there is no first-visitor setup page. You sign in with the Railway variable.
Tesserae vs a hosted e-ink dashboard service (Hosted E-Ink Dashboard Alternative)
- Ownership: This is independent community packaging of the open-source dmellok/tesserae v0.511.0 under AGPL-3.0. You run the server yourself and can read its source.
- Hosted convenience: A hosted service removes the server from your concerns. Upstream's Tesserae Cloud is a separate product this template does not deploy.
- Panel compatibility: Only panels that pull over HTTP or HTTPS work on Railway.
Tesserae with Docker vs Railway (Docker Alternative)
- Docker on your own host: Running the unmodified upstream image gives full control of ports, LAN access, and listeners, but you manage the host, updates, and HTTPS.
- Railway: The template gives you one service, a public domain on port 8080, a volume at /app/data, and a health check at /healthz. Keep one replica.
- Resources: Give the service about 1 GB of RAM because rendering uses headless Chromium.
Tesserae vs Railway hosting alone (Railway Alternative)
- Managed deployment: Railway handles the container, domain, and volume, so you skip maintaining a Docker host.
- Your own host: A VPS gives more control over networking and listeners, at the cost of doing setup and upkeep yourself.
How to use Tesserae on Railway?
Follow these steps on your first day after the deploy finishes.
- Open the public domain from your Railway service. You will be sent to /login.
- Sign in with the password stored in the TESSERAE_ADMIN_PASSWORD variable, which you can read from the Variables tab. There is no first-visitor password setup page, because the password is pre-set on first boot.
- Follow the onboarding wizard to create your first dashboard and connect a panel.
- Only panels that pull frames over HTTP or HTTPS will work on Railway. The built-in MQTT broker on port 1883 and the Visionect listener on port 11113 are not reachable from outside the platform, and mDNS discovery does not apply to a cloud host.
- Give the service about 1 GB of RAM, because rendering runs headless Chromium.
- Keep the service at one replica, since the data volume holds your settings, pages and render cache.
- Check that the app is healthy by requesting the health endpoint:
GET /healthz
How to self host Tesserae on other VPS Services (Tesserae self hosting guide)
Tesserae ships upstream as a container image with a data directory. Any VPS with Docker can run it, and the MQTT and Visionect listeners can be published on a host that exposes those ports.
Clone the Repository
Fetch the upstream source to read the README and compose file.
git clone https://github.com/dmellok/tesserae.git
cd tesserae
Install Dependencies
You need Docker and the Compose plugin. Rendering uses headless Chromium, so allow about 1 GB of RAM.
docker --version
docker compose version
Configure Environment Variables
Mount a persistent data directory and keep a stable secret key so stored secrets stay readable. You can pre-seed an admin password; otherwise the first request sets one.
export TESSERAE_SECRET_KEY="your-long-random-secret"
Start the Tesserae Application
Bring the stack up, then open your-domain. Check the upstream README for the current compose file and listener ports.
docker compose up -d
Railway handles the public HTTPS domain, the persistent volume, and restarts for you, which the VPS flow leaves to you.
Pricing and License of Tesserae (Tesserae pricing)
Tesserae is open-source software released under the AGPL-3.0 license, which means you can self-host it for free and modify it as long as you share those changes under the same terms.
Tesserae hosted vs self hosted comparison (Pricing, features, costs, and more)
Tesserae is free AGPL-3.0 software, so the real choice is where it runs.
Monthly cost of self hosting Tesserae on Railway
Railway billing is usage-based and depends on the RAM, CPU, volume size and services you run. Tesserae runs as one replica because its data lives on a single volume.
System Requirements for Hosting Tesserae on a VPS
Plan for about 1 GB of RAM, because rendering uses headless Chromium, plus enough disk for the /app/data volume and a public HTTPS address so panels can fetch frames.
Frequently Asked Questions (FAQs)
How do I sign in to my Tesserae deployment?
Open your Railway domain, which sends you to the login page, and sign in with the TESSERAE_ADMIN_PASSWORD value from the Variables tab. The password is pre-set on first boot, so there is no first-visitor setup page to race.
Can I use MQTT or Visionect panels on Railway?
No. Use panels that pull frames over HTTP or HTTPS, or point Tesserae at an external MQTT broker.
How much RAM does Tesserae need on Railway?
Give the service about 1 GB of RAM, because rendering uses headless Chromium. Smaller allocations may be unreliable for rendering.
Does changing TESSERAE_ADMIN_PASSWORD later reset my login?
No. The variable is only written on first boot. To change the password later, go to Settings, System, Authentication inside Tesserae.
What should I back up?
Back up the /app/data volume, which holds your settings, pages, schedules, render cache and gallery photos.
Template Content
