plcholder

plcholder

I discovered Elixir six years ago, and it’s been one of my favorite languages since. It feels like cheating — fun, easy to write, and easy to reason about. I’ve spent more time and money on Elixir/BEAM content than any other language.

Elixir is often marketed as a tool for everyone — from solo devs to large teams — and I believe that, especially with tools like Phoenix, LiveView, Nerves, and Nx. With Phoenix, I can build full-featured web apps on my own with far less effort than in Go, JavaScript, or Rust.

But that’s where the smooth experience ends. Deployment feels clunky and inconsistent, especially compared to the elegance of writing Elixir or the convenience of modern serverless platforms. I don’t mind spinning up a VPS and throwing a container on it, but it feels primitive compared to what other ecosystems offer.

Serverless feels almost too good to ignore. Sure, there are concerns about vendor lock-in or surprise bills, but with open-source options and better billing safeguards, those risks are becoming manageable.

Last weekend, I was building something and wanted to use Phoenix — it would’ve been 10x easier and more enjoyable — but deployment made me hesitate. I ended up using Rust with Cloudflare Workers instead.

So here’s my question: is the Elixir core team or community working on simpler deployment solutions for solo devs — something like Kamal2, but for the BEAM? I get that orchestrating BEAM nodes is powerful and part of the magic, but for many solo devs, deployment feels like muddy plumbing compared to writing Elixir. And while BEAM might offer better performance-per-dollar on a VPS, that often misses the point — solo devs would rather save time and ship faster using platforms like Vercel or CF Workers.

TL;DR: Is anyone working on a Kamal2-style deployment tool for Elixir/BEAM to help solo devs harness its full power without the deployment headaches?

Showing Posts 1 to 10

plcholder

plcholder OP

wow thank you so much, this is the first time seeing this project. From reading the desc, it seems like everything i want, i will give the beam talk a watch now

LostKobrakai

LostKobrakai

Did you try hosting phoenix on fly? If you’re fine with vendor lock in I don’t see that option be any more difficult than other serverless platforms.

This concern comes up quite often, but I don’t really understand why we need a elixir specific tool here. Especially once you’re in docker deployment land there’s absolutely no difference in deploying elixir to any other common alternative you’d use. And even if you don’t use docker for deployment I still don’t see how elixir would be any more complex than say deploying rails. You can even stick to the “install the language on the server” pattern if you want by installing erlang on your server and building a release without embedding erts. Then you don’t need to care where you build the release – no matching target triple needed between build machine and the server, but you just copy the release where you want to run it and start it there.

Once you get into NIFs things get more tricky, though in my experience this is kind of a mess no matter where you have to deal with ffi.

plcholder

plcholder OP

I honestly havent kept up with fly.io since their initial launch and subsequent outages , i did not really have much fate in them after so many outages, i understand they are new and ironing out issues. so ill give them another look

Yeah, I agree that spinning up a Docker container is the way to go. But for me, it’s really about the ergonomics. I feel like deployment is more involved and tedious than people often admit. I haven’t used Rails or Laravel, but if I weren’t using Elixir, I’d probably just go with JavaScript, Go, or Rust—mainly because deployment tends to be much simpler, and each language usually has a smooth onboarding experience.

With Elixir, though, the BEAM feels unique, and I want to make sure I’m using it the right way. I couldn’t replicate the same setup I’d have with Go or Rust because of the BEAM VM. Maybe I’m wrong, but I think there’s real value in properly orchestrating Elixir nodes during deployment, that sort of power is what serverless tries to mimic and as of now the latter is way more simpler for a solo dev, i just want similar ramp for BEAM

Edit: I also think elixir popularity would shoot, if such a simple ramp was available. As in the ability to deploy an elixir application like a pro with ease, work with multiple nodes etc it doesn’t matter if its opinionated

LostKobrakai

LostKobrakai

I don’t doubt this. I just doubt that this is a truely elixir specific problem that requires an elixir specific solution. Maybe once you get into wanting to do hot code updates, but I’d argue at that point you’re likely in “custom solution” territory anyways, because knowning if you can do a hot code update and/or doing those safely is a quite application specific problem.

plcholder

plcholder OP

you’re right, but the ambiguity is still there. I understand its a cart before the horse sort of problem that most people in the community dont face, but I sit at a crossroad were elixir is my fav language to write, dx is nice and smooth , but then i have to step outside that comfort zone , when it comes to deployment land versus using a language i do not really like, but deployment strategy is like drag and drop

its not an urgent issue , since its clearly a skill issue. but i wish there was a specific opinionated solution that covered most grounds of BEAM capability

f0rest8

f0rest8

I wanted to chime in to say that fly has made deployment for me with Mosslet super easy, all things considered. I’m a solo dev and workign aroudn also being a stay-at-home parent so I often feel pressed for time and headspace, and I’ve been able to run a distributed setup in production with fly and using existing tooling/packaging.

With fly there is some manual managing you have to do, but my experience with it has been really great. I’ll often have documentation opened up whenever I need to update things because I’ll forget a particular command or something. But I’ve found it’s really easy to quickly find the information you need. They’re also working on a managed postgres offering so that could be another plus for solo devs and small teams.

It might be worth revisiting fly for you — anyway didn’t mean to be such an ad for them, just thought I’d share they’re part of the stack that I feel makes it possible for me to be a solo dev.

plcholder

plcholder OP

Thanks for the response, i will give fly another look/shot. I just stopped taking it seriously after seeing negative press on hn and weird outages

D4no0

D4no0

Truth to be told, the only hard part about deploying with docker is building the images. I usually do it using gitlab runners and the config for doing that is 20-30 lines (which you can copy-paste). I am not sure what are the free tier limits on gitlab, but you can setup a 5$ hetzner VPS as a custom runner in 10 minutes.

As for deploying, if you are not doing abominations like distributed deploys, a simple docker-compose file with all your services is more than enough to get you going. My usual setup for compose is: server, postgres, nginx(or lately nginx-proxy-manager).

AndyL

AndyL

You can deploy Elixir apps with Kamal.

Fly is also great.

Where Next? Top

Trending in Discussions Top

AstonJ
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
2977 91898 914
New
AstonJ
The obligatory hello world thread! Who are you and where are you from? :stuck_out_tongue:
4616 55835 594
New
byu
@chrismccord : I just saw the Extract AGENTS.md from Phoenix.new into phx.new generator commit to the phoenix project. My initial shotgu...
New
arcanemachine
I was working on an Ecto migration and I needed a timestamp. So, for the nth time, I looked up the different data types for timestamps, a...
New
alexslade
Fly’s CEO posted this recently - Turn And Face The Strange · The Fly Blog It says that Fly is going all-in on sprites, which is a worry ...
New
Herve37
We’re evaluating API mocking tools for OpenAPI-based projects and would love to hear what other teams are using. We’re particularly inte...
New
matt-savvy
Is there a word for the ~> symbol used in Version strings? Do you also just call it a Squiggle Arrow™ ?!
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
ausimian
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews