Building a multi-tenant Phoenix app and don't want the headache of SSL for every tenant? Potions makes it easy: tenant subdomains share one wildcard certificate, and custom domains get their own automatically.
potions.io/blog/phoenix-mult…
#ElixirLang
Happy Halloween! 🎃 On the BEAM, crashed processes come back from the dead when their supervisor restarts them. And every potion needs an antidote: if a deploy goes bad, roll back to a previous release in one click.
potions.io/docs/rollbacks
#ElixirLang
Playing with HTTP/3 in Phoenix? Potions servers and load balancers accept UDP 443, so browsers can talk HTTP/3 to Caddy. Want it all the way to your app? A per-app custom proxy can do that, and it sticks around through deploys.
potions.io/docs/custom-proxy
#ElixirLang
Already happy with Supabase, Neon, Amazon RDS or DigitalOcean Managed Databases? Keep it! Point your Potions app at it and we'll check your server can reach it before the app is created. The docs walk through TLS and poolers too.
potions.io/docs/external-dat…
#ElixirLang
Don't let a bad migration or stray Repo.delete_all ruin your day. With SQLite on Potions, Litestream streams every change to your own bucket, so you can rewind to just before it, anywhere in the last 7 days.
potions.io/blog/sqlite-and-l…
#ElixirLang
Fun fact: Potions is priced per server, not per app. Starter is $5 a month for one server, and you can run as many Phoenix apps on it as will fit, each with its own Postgres database. Your server bill goes straight to your provider.
potions.io/pricing
#ElixirLang
Something I care a lot about: ownership. Your servers live in your own DigitalOcean or Hetzner account, your apps are standard Mix releases, and your databases are plain PostgreSQL. Need to cancel Potions? Your apps keep running.
potions.io/docs/how-it-works
#ElixirLang
Got a few minutes this weekend? LiveView 1.2 lets you move a surprising amount of client-side code back into Elixir. Here's a walkthrough of JS commands, colocated CSS and colocated hooks.
potions.io/blog/colocating-l…
#ElixirLang
Quick releases tip, since it trips up a lot of us: Mix isn't in your release, so Mix tasks won't run in prod. Reach for bin/app rpc to talk to the running node, eval for a fresh VM, or remote for a live IEx shell.
potions.io/blog/running-task…
#ElixirLang
Ever wondered what actually happens during a zero-downtime deploy? On Potions, your new release boots in an idle slot, migrations run while the old one keeps serving, and traffic only moves over once the health check passes.
Learn more: potions.io/docs/zero-downtim…
#ElixirLang
Code BEAM Europe kicks off today. Cheering on everyone in Haarlem! The BEAM taught us to let it crash, and Potions brings that idea to servers: one Phoenix app across several servers, deploying node by node.
potions.io/blog/clusters
#ElixirLang
For years I kept hearing "Elixir is great, but I can't deploy my app." That shouldn't be the reason anyone gives up on Elixir, so I built Potions: push your Phoenix app to GitHub and it deploys to a server you own.
potions.io/blog/why-i-built-…
#ElixirLang
SQLite is now a first-class database on Potions.
One file, no database server. Litestream runs beside your app and streams every change to your own bucket within seconds. Bad deploy? Rewind to any point in the last 7 days.
potions.io/blog/sqlite-and-l…
#MyElixirStatus #Elixir
Not every failed job deserves a retry.
In part 2 we broadcast Oban job results with PubSub, add the Oban Web dashboard, and teach the worker which failures are worth retrying.
potions.io/blog/background-j…
#MyElixirStatus
Slow work shouldn't freeze your LiveView.
In the latest blog post we take a blocking HTTP fetch out of a handle_event and running it as an Oban job. Part 1 of 2.
potions.io/blog/background-j…
#MyElixirStatus
When your app needs a cluster, it should be simple.
We just launched clustering on Potions. Push a button, and one app runs behind a load balancer on as many servers as you need.
potions.io/blog/clusters
#MyElixirStatus
New post + screencast: running tasks in production with Elixir releases.
Mix isn't there when you deploy a release. So what do bin/my_app rpc, eval, and remote actually do, and when do you use each?
potions.io/blog/running-task…
#MyElixirStatus
Potions now supports multi-tenant Phoenix apps.
Every tenant gets their own hostname with automatic HTTPS: wildcard subdomains, custom domains via on-demand TLS, and the one endpoint your app needs.
Here's how it works:
potions.io/blog/phoenix-mult…
#MyElixirStatus




