
Self-hosting ESPHome the easy way
Yulei ChenESPHome is the open-source way to control ESP32 and ESP8266 microcontrollers with simple YAML configs. The project itself is free, but to keep the dashboard online 24/7 you normally need a Raspberry Pi, a NAS, or a Home Assistant box sitting in your closet. Not everyone wants another device to maintain.
Sliplane is a managed container platform that makes self-hosting painless. With one-click deployment, you can get the ESPHome dashboard up and running in minutes, accessible from anywhere, with persistent storage for your device configs and no local hardware to babysit.
The ESPHome dashboard on Sliplane is perfect for editing configs, compiling firmware, and flashing devices over-the-air (OTA). USB flashing needs a local machine because the container has no access to physical USB ports: flash the first time locally, then manage everything remotely.
Prerequisites
Before deploying, ensure you have a Sliplane account (free trial available).
Quick start
Sliplane provides one-click deployment with presets.
- Click the deploy button above
- Select a project
- Select a server. If you just signed up you get a 48-hour free trial server
- Click Deploy!
About the preset
The one-click deploy above uses Sliplane's ESPHome preset. It's built for a clean, stable dashboard setup:
- Official
ghcr.io/esphome/esphomeimage - Specific version tag for stability (check the ESPHome GitHub releases for the latest stable version)
- Persistent storage mounted at
/configso your device configs survive restarts and redeploys - Basic auth enabled by default with a generated password
- Dashboard exposed on port
6052(the ESPHome default)
Next steps
Once ESPHome is running on Sliplane, access the dashboard using the domain Sliplane provided (e.g. esphome-xxxx.sliplane.app).
Default credentials
The preset generates a random password at deploy time. Check your service's environment variables in the Sliplane dashboard:
- Username:
admin - Password: auto-generated (copy it from
PASSWORDin your env vars)
Change these right after your first login by updating the env vars and redeploying.
Adding your first device
ESPHome works by generating firmware from a YAML config, then flashing it to your ESP32 or ESP8266. The typical flow on a cloud-hosted dashboard looks like this:
- Click New Device in the dashboard and give it a name
- Enter your Wi-Fi credentials so the device can connect once flashed
- The dashboard will compile a firmware binary you can download
- Flash that binary once via USB from your local machine (using ESPHome Web or the
esphomeCLI) - After the first flash, future updates go over-the-air (OTA): just hit Install in the dashboard
Any device on the internet that can reach your Sliplane URL can be managed remotely, no VPN needed.
Environment variables
A few env vars you might want to tweak in your Sliplane service settings:
| Setting | Description |
|---|---|
USERNAME | Dashboard login username |
PASSWORD | Dashboard login password |
ESPHOME_DASHBOARD_USE_PING | Set to true to show device online status via ping |
ESPHOME_DASHBOARD_RELATIVE_URL | Set a sub-path if you want to reverse-proxy the dashboard |
See the ESPHome dashboard docs for the full list.
Logging
Docker container logs go to STDOUT by default, which works out of the box with Sliplane's built-in log viewer. When you compile firmware, the build output streams into the container logs too, so you can watch the whole process live. For a quick primer on reading these logs, see our post on how to use Docker logs.
Troubleshooting
If the dashboard loads but shows all your devices as offline, make sure ESPHOME_DASHBOARD_USE_PING is set to true. The default uses mDNS, which doesn't work across networks: ping falls back to TCP port checks, which Sliplane can do reliably.
If OTA updates fail, double-check that your device's ota password in its YAML matches what the dashboard expects. You can find this in the generated config.
Cost comparison
Of course you can also self-host ESPHome with other cloud providers. Here is a pricing comparison for the most common ones:
| Provider | vCPU Cores | RAM | Disk | Estimated Monthly Cost | Notes |
|---|---|---|---|---|---|
| Sliplane | 2 | 2 GB | 40 GB | €9 | charge per server |
| Render | 1 | 2 GB | 40 GB | ~$35–$45 | VM Small |
| Fly.io | 2 | 2 GB | 40 GB | ~$20–$25 | VM + volume |
| Railway | 2 | 2 GB | 40 GB | ~$15–$66 | Usage-based |
FAQ
Can I flash devices over USB from a cloud-hosted ESPHome dashboard?
No: the container has no access to USB ports on your local machine. Do the first flash locally using ESPHome Web or the esphome CLI, then use OTA updates from the cloud dashboard for every change after that. This is how most people run ESPHome in production anyway.
How do I back up my device configs?
Your YAML configs live in the /config volume. You can pull them via the Sliplane file browser, or use git from inside the container shell to sync to a private repo. For a general approach to volume backups, see 4 easy ways to backup Docker volumes.
How do I update ESPHome?
Change the image tag in your service settings and redeploy. Check ESPHome's GitHub releases for the latest stable version. The dashboard also warns you when a new ESPHome version is available.
Are there alternatives to ESPHome?
Yes: Tasmota is a popular flash-and-forget firmware, WLED focuses on LED strips, and OpenMQTTGateway is great for bridging BLE and IR devices to MQTT. ESPHome is usually the easiest entry point if you're already using Home Assistant.
Does this integrate with Home Assistant?
Yes. Devices flashed via the Sliplane-hosted ESPHome dashboard expose the standard ESPHome API, which Home Assistant auto-discovers over your local network. The dashboard and your Home Assistant instance don't have to run on the same machine, they just both need to reach your devices.