Docker or Git Deploy
Push your code or a pre-built Docker image. We handle the build and deployment process automatically.
Run your Mix release as a long-lived container on a managed Docker platform. Managed PostgreSQL, Redis and persistent volumes attach to it. LiveView and Channels work over the standard ingress.
# docker-compose.yml
services:
app:
image: my-phoenix-app
environment:
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
- DATABASE_URL=${DATABASE_URL}
- PHX_HOST=my-app.hostim.app
db:
image: postgres:15
volumes:
- db_data:/var/lib/postgresql/dataHosting Phoenix is different from hosting PHP or Python because of the Erlang BEAM VM. It's built for long-running, stateful connections (like LiveView websockets) rather than just request-response cycles.
Phoenix applications run on the BEAM virtual machine, which excels at handling massive concurrency. To leverage this, your hosting environment needs to support long-lived processes and not aggressively kill idle connections, which is critical for LiveView and Channels.
Modern Elixir deployment relies on Mix Releases. This bundles your code and the Erlang runtime into a self-contained directory. When wrapped in Docker, you get an immutable artifact that starts instantly and runs exactly the same in production as it does in staging.
Production Phoenix setups follow a standard container-based architecture:
config/runtime.exs, reading from environment variables at startup rather than build time.We provide a managed platform that maps directly to the standard Elixir architecture.
Push your code or a pre-built Docker image. We handle the build and deployment process automatically.
Spin up managed PostgreSQL, MySQL, or Redis instances alongside your app with a single click or line in your compose file.
Mount volumes for your uploads or local data. Data persists across deployments and restarts.
All data and workloads are hosted in Germany (Falkenstein), ensuring low latency for European users and GDPR compliance.
A LiveView page holds a websocket open for as long as the tab is open. That is the part of Phoenix hosting most platforms get wrong, so it is worth being specific about what happens on Hostim.
/live/websocket works over the same hostname and certificate as the rest of the app.heartbeatIntervalMs in app.js), which is what keeps a proxy from treating an open LiveView socket as idle. If you raised that interval to save traffic, put it back.PHX_HOST to your real domain. Phoenix validates the websocket origin against it, and a mismatch shows up as a page that renders once and then never updates.Distributed Erlang is the one thing that does not come for free. A single node needs no setup; multi-node clustering requires libcluster with a strategy that fits the platform, and Phoenix PubSub across nodes is simplest over a managed Redis instance.
"Free" hosting usually comes with significant caveats, which are particularly painful for Phoenix apps:
Free tiers are excellent for learning, but for a responsive LiveView application, you need a stable environment that doesn't sleep. Hostim.dev offers a preview tier for testing, but our focus is on reliable, paid production hosting.
You might see terms like "web hosting" and "app hosting" used interchangeably, but they refer to different paradigms.
Traditional Web Hosting (Shared): Designed for PHP/WordPress. It rarely supports long-running processes or custom ports, making it unsuitable for Phoenix.
App Hosting (PaaS): Designed for modern applications like Phoenix. Provides the necessary environment for the BEAM VM, Docker containers, and service orchestration. This is what Hostim.dev provides.
The practical workflow on a container-based platform.
mix phx.gen.release --docker to generate a production-ready Dockerfile. This sets up a multi-stage build automatically.SECRET_KEY_BASE, DATABASE_URL, andPHX_HOST in the dashboard. These are read by config/runtime.exs.Get your Phoenix application running in minutes.
Phoenix on Hostim: long-lived containers, so websockets and channels stay open.
€2.50/month
Small production stack
One app plan (sa-1-1) plus a free-tier managed database. The database only starts costing money at 1 GB (€1/month).
0.48 ms
App to database round trip
TCP round trip to port 5432 inside the region. SELECT 1 took about 0.29 ms.
€0
Managed database free tier
PostgreSQL 256 MB, MySQL 256 MB, Redis 128 MB, volume 1 GB. No cap on how many free instances you create.
1 today (Falkenstein, Germany)
Regions
Bare metal, EU only, with more regions planned. No AWS, GCP or Azure underneath.
“Peace of mind from prototype to production”
— Phoenix Framework
Install the CLI, log in, deploy. The same three lines work from a CI job.
curl -fsSL https://raw.githubusercontent.com/hostimdev/cli/main/install.sh | sh
hostim login
hostim deploy app --git <your repository URL> \
--branch main --plan sa-1-1 --port 4000The app builds the Dockerfile in the repository and gets an HTTPS address on *.eu-center.hostim.dev for €2.50 a month. Databases, Redis and volumes are added with the same CLI, or as a template in one command. Deploy your app has the full set of commands, with an image, a repository, a Compose file or a template.
Yes. Build a Dockerfile around an Elixir release (mix release) and Hostim runs it as a long-lived container behind HTTPS. Phoenix LiveView and channels work because the ingress proxies websockets.
Single-node Phoenix works without configuration. For multi-node clustering, use libcluster with a strategy that fits container DNS — the same approach used on other Kubernetes-backed PaaS.
A typical Phoenix deployment on Hostim is one app container plus one managed database. The app starts at €2.50/month and the database is free on the included tier, so a small production stack runs from €2.50/month.
Managed PostgreSQL with automated backups (the standard Ecto target), plus MySQL and Redis if needed. DATABASE_URL is injected automatically.
In Germany. Hostim apps and databases run on bare-metal servers in Falkenstein, with no AWS, GCP or Azure dependency — so data stays in the EU and GDPR compliance stays simple.