Hacker News new | ask | show | jobs
by gavinray 2085 days ago
This looks incredible! Has some serious offerings against the current Self-Hosted PaaS scene, hope I can check it out over the weekend.

I have used Dokku[0] in production, and played with CapRover[1] on hobby projects. Flynn was like a better Dokku, before development died.[2]

CapRover is a great experience, and it's not a toy IMO. It nails the role of "I want to press a button and have a self-hosted Heroku, with a nice dashboard, auto-provisioned HTTPS domains, and be able to deploy a bunch of Docker images or Buildpack apps." A single-node $10 box can run a good number of services.

This looks well-positioned and closer to something like Nomad, but going through the readme I had a few questions:

  "Apollo requires a manager- or control-node. We call this manager-0. This node runs the entire controlplane and monitoring stack for a cluster and should be sized appropriately (8GB Memory, 2-4 vCPUs)."
Is there a way to run this single-node and disable some of the peripherals for cheap/play $5-10 instances (disregarding best-practices)? An 8GB mem + 4vCPU DO droplet is $40/mo. Not an arm and a leg, but if you have to add at least a secondary server, seems like minimum would be ~$50/mo?

  "Your space has been created. Now let's cd to its directory: cd $HOME/.apollo/.spaces/demo-1.space"
Are the Apollo Spaces not meant to be checked in to version control and used for infra + shared between people on your team?

And final question (sorry if this is dumb):

  Automated infrastructure (currently only DigitalOcean and HETZNER Cloud supported)
Does this mean I can still deploy to AWS/GCP, I just need to do it manually, or are these infrastructure templates required?

[0] https://github.com/dokku/dokku

[1] https://github.com/caprover/caprover

[2] https://github.com/flynn/flynn

4 comments

Hey,

author of apollo here. Thanks for the feedback and questions, I'll try my best to shed a little light here.

- Yes, you can run apollo even on nodes with only 512MB RAM and 1 core. There's no programmatically imposed limit - it's just an advice to bring beefy infrastructure to production setups as metric-collection/logging consumes quite a lot of memory. You can just use apollo with a 2GB HETZNER node (2,98€/m) and you're good to go. Additionally, you can switch of metrics, logs and analytics in your Spacefile.yml - these are the main memory-hogs. Without them, you still have a nice docker swarm or k3s.

- apollo spaces are totally meant to be checked into version control for collaboration and CI/CD. Once created, just enter you space directory and hook it up to any git-repo like you would to with any other code (`git init` etc). We're planning to implement this workflow into the CLI for 2.1.0 to improve UX, but basically apollo config lives in a directory which you can do with as you please in terms of git.

- The infrastructure templates aren't required. As my company is not using other providers than hcloud/digitalocean, we have no ready-made templates for them. But you can provide your own Terraform code to spin up infrastructure. You only need to work in the `output.tf` code that saves a special formatted Nodesfile.yml as an artifact of your TF code. Additionally, you can of course write up your Nodesfile.yml manually.

Hope this helps :)

Thank you, that does answer everything! I also see now after going through the readme again "Single-node clusters are possible and can be scaled up", so apologies for that question.
Dokku user and now CapRover user. I have to say it's my favorite for spinning up a new project. I don't know if I'd use CapRover for anything production just yet but I love it for development. For me it's the perfect "stick this server, client, DB combo on a server, add HTTPS, and don't make me think about it".

I feel confident that anything I throw on CapRover I could move to "more production-level" setup easily if I wanted; using managed db's, containers, block storage etc on AWS/Google/etc. Like, if I can get it working in CapRover I know I can run it anywhere and CapRover makes it super easy to get my idea hosted and running "in the cloud" quickly. I don't know why but seeing my project run full-time, verses just when I'm developing locally, is a huge motivator for me so CapRover is perfect for me in the same way I use Caddy for my local services. I want fast, safe, and easy with the knowledge I can scale up with some work in the future but I don't need it for day 1.

Agreed with all of this. The other option I would mention, although it has a wonky pricing structure is Cloudron [1].

I use CapRover on a spare droplet and it’s a really good solution. This looks like a compelling option too.

[1]: https://www.cloudron.io/

Author of apollo here. Using multiple Cloudron instances for production stuff and am still heavily inspired by the operational stability and ease of app-onboarding the Cloudron team has managed to maintain. apollo strives to deliver a Cloudron-like experience (in terms of stability) over time.
This is awesome to here! I’m really looking forward to testing Apollo out!
How would you compare Caprover to Dokku? I use dokku a lot, and really love some of the plugins (like postgres with the automatic backups and such).

Is there any reason why you wouldn't use Caprover in production? (other than you haven't needed to)

I was kind of forced into using Dokku in production. I inherited a 4-year old Rails codebase previously running on AWS EC2 and that was how the infra was set up.

But given the timeline, I think it was probably the best available option at the time. Flynn, CapRover, etc weren't really a thing, so Dokku was innovative in this space.

I would say that there's absolutely nothing wrong with Dokku, but experience-wise CapRover is miles ahead.

> Is there any reason why you wouldn't use Caprover in production? (other than you haven't needed to)

If you use the Docker Swarm setup multi-node, I feel like it's a solid choice for a small company. If you get big/complex enough, you'll probably eventually wind up needing k8s/Nomad but as far as tradeoffs for development velocity vs stability, I feel good with CapRover.

Going to try Apollo out soon though. It appears to address things like multiple environments better than CapRover. And as mentioned, the docker-compose.yaml integration is a huge one for me.