[HN Gopher] Dokku - Free Heroku Alternative
___________________________________________________________________
Dokku - Free Heroku Alternative
Author : punnerud
Score : 215 points
Date : 2022-05-14 09:12 UTC (13 hours ago)
(HTM) web link (dokku.com)
(TXT) w3m dump (dokku.com)
| nasmorn wrote:
| I have used it quite a bit. What I hate about it is that it runs
| on my single machine and the underlying system updates feel a bit
| dangerous to do. Also at one point it would endlessly crash after
| adding another worker to a project and there is no way to debug
| it easily. I moved almost all the projects to DO Kubernetes now.
| I had written my own dockerfiles anyways since it means faster
| deploys. The fact that deployment goes through CI is more of a
| bonus. The Setup is more involved though
| juanse wrote:
| I think with moderns and dedicated VPsS this can work for a very
| long way.
|
| Hetzner offers 48 dedicated vcores/192 GB RAM in a single machine
| for less than 500EUR/month. I can totally see many business
| working for years within these boundaries. Also, not every
| company need Google-grade high availability.
| dgb23 wrote:
| When it says free heroku alternative that runs on a single
| host/vps, then I assume the file system stays durable (as opposed
| to ephemeral). Is that correct?
| dzogchen wrote:
| Yes that is correct. You can mount directories like normal
| Docker.
| bullen wrote:
| The smallest PaaS you have ever seen is one order of magnitude
| larger than mine: https://github.com/tinspin/rupy
|
| And I bet you the same goes for performance, mine can share data
| between cores atomically.
| joshstrange wrote:
| Dokku is nice and I used it for a while but recently I've been
| using CapRover [0] and been pretty happy with it. I only use it
| on 1 host but it supports multiple. It also has 1-click installs
| for the usual suspects (drupal/wordpress/etc) and things like
| spinning up a DB is easy. You can also define a docker file in
| your repo that you instruct it to build and use. HTTPS is a
| button click and it automatically sets up virtual hosts for you
| `<your app name>.<base url you configured>`. It's great for quick
| prototyping and to get a personal project online.
|
| [0] https://caprover.com/
| conradfr wrote:
| I use it and am globally happy with it, the biggest downside
| being the non-zero downtime deployment.
|
| They say it's because it uses Docker Swarm, I don't know if
| that's true.
| 999900000999 wrote:
| Absolutely love Caprover, used it when it was CapDuckDuck.
|
| I basically just lost interest, Firebase does everything I need
| ultimately. But I'd still argue it's the easiest way to deploy
| a side project!
| sureglymop wrote:
| Tried both and like Dokku more. Might make a nice web interface
| for it for myself.
| tough wrote:
| Checkout ledokku, I still prefer caprover seems more robust
| at this point. But dokku+ledokku are cool too for self-
| hosting needs
| hippich wrote:
| Nice find! What is your impression on reliability? I ended up
| using dokku in production, but I really like what caprover
| offers.
| joshstrange wrote:
| It's been pretty reliable for me but I've never used it in
| production. It's more of a testing grounds-type tool for me
| or a way to see my work online at a stable URL (which helps
| motivate me to continue working on something). That's not to
| say it can't handle production (the multiple hosts aspect
| certainly indicates it means to support that use-case), just
| that I can't speak on it.
|
| On thing that's cool (to me) is that I once borked an update
| of the CapRover admin and while I couldn't get into the
| dashboard all my projects kept humming along without a care
| in the world because they were all in their own docker
| containers. I thought that was pretty neat (all of CapRover
| runs inside of containers as well and seems to be independent
| of apps it manages/monitors.
| sbecker wrote:
| Caprover is nice and convenient but security wise, only a
| single password field is required on the admin console. (See
| demo here: https://captain.server.demo.caprover.com/#/login)
| Given this it would be nice to at least make the web admin
| console only accessible via an IP whitelist, but last time I
| used it I did not find an easy way to do that.
| jtsiskin wrote:
| Make a 256 bit password. Problem solved?
| indigodaddy wrote:
| Can you not firewall the relevant admin webui port?
| wilsonfiifi wrote:
| The admin webui runs on the _captain_ sub-domain so i 'm
| not too sure if that can be firewalled.
| indigodaddy wrote:
| How does any of that matter? Firewall the relevant port
| so that it only allows your connecting IP.
| pvsukale3 wrote:
| Self plug. Some other open source/ proprietary projects like
| Heroku
|
| https://ossdatabase.com/projects/heroku
| RileyJames wrote:
| Been using it a year or so now. As my B server. $40~ on DO, that
| I ram all my side projects onto.
|
| From a dev perspective, it's been awesome.
|
| I have zero monitoring on it, so I have no idea if users love it.
| But analytics look good.
|
| Either way. Impressed. And appreciate all the efforts behind the
| project.
|
| Edit: Rails, pg, sidekiq, etc.
| wilsonfiifi wrote:
| Dokku is an excellent Heroku alternative. If you have the means,
| please support the project by paying for Dokku Pro [0]
|
| [0] https://pro.dokku.com/
| chasd00 wrote:
| I didn't know this existed (probably because my dokku setip had
| been running for years and I haven't been back to the website).
| I will be throwing some bread your way:)
| tomatowurst wrote:
| Is there proper tutorial for people who have never used heroku? I
| just don't know how to use this because i dont have any
| experience with heroku.
|
| I'm interesting in self-hosted AWS api compatible solutions.
|
| Parse is also interesting. In fact I discovered that there is a
| whole new world outside AWS and DO. It no longer makes sense for
| me to run weekend projects on AWS outright, thats really for
| large enterprise applications.
|
| What I would love is to be able to deploy my docker images on my
| "own"cloud running on a dozen droplets/VPS around the world and
| bill my users at the same rate that AWS is charging. I figure I
| would be able to undercut AWS significantly with this method.
|
| Storing 2TB on AWS was price shock for me, makes no sense when
| there are dedicated servers with a ton of storage and bandwidth
| that I could just use instead of being "serverless".
|
| However, I find it to be a hall of mirrors, wondering if anybody
| on HN has been in my shoes and how they are handling it. I guess
| my biggest concerns:
|
| - uptime availability (can I promise close to AWS?)
|
| - security (how do i harden my box/selfcloud and have peace of
| mind?)
|
| - IAM type of roles/permissions (how do i emulate something like
| IAM for my team?)
|
| Like the billing from AWS is getting to a point where I feel like
| we can use bunch of droplets behind some "selfcloud" that manages
| all these things for me. I'm sure a solution exists, I just often
| have trouble recalling their names. Dokku makes it easy to
| remember because it sorta rhymes with Heroku.
| nickstinemates wrote:
| Just use railway.app - free tier just works and you can deploy
| a sample app on a free account in seconds. It will give you a
| general idea of how Heroku works.
|
| > It no longer makes sense for me to run weekend projects on
| AWS outright, thats really for large enterprise applications.
|
| depending on the type of site, cf workers is ridiculous value.
| single button availability of your content in every corner of
| the world and you wont pay a dime
| tomatowurst wrote:
| not sure I quite understand railway, what are they offering?
| Another AWS on Digitalocean? Would be nice to see exactly
| what the cpu core/memory/price is.
|
| aren't cf workers very constrained? like your call has to
| finish within a second or two for it to make sense and I
| think AWS Lambda matched their price? I could be confused
| here.
| mardix wrote:
| Similar to Heroku deploy flow, checkout Sailor, a tiny PaaS to
| install on your servers/VPS that uses git push to deploy micro-
| apps, micro-services, sites with SSL, on your own servers or VPS.
|
| https://github.com/mardix/sailor
| skyfaller wrote:
| I see it's a fork of piku, but I don't see an explanation of
| why they bothered to fork. Do you know what the difference is?
| https://github.com/piku/piku
| vanilla wrote:
| We have been using it for our internal dev and test environment.
|
| I was very disappointed that it did not have tcp/udp proxy
| support. Fortunately the plug-in system allowed us to extend this
| functionality in a day.
|
| Dokku is very nice for this use-case. No need to have a
| complicated kubernetes setup.
| sameOld88 wrote:
| > No need to have a complicated kubernetes setup.
|
| I'll never understand why one stacks config syntax and
| semantics is seen as complicated while another stack of gigs
| and gigs of state is not.
|
| A Linux host that pulls down a web server via its package
| manager is gigs of special state too. Where's the simplicity?
| It's no less complicated, maybe more familiar.
|
| There's way too much romantic and poetic day dreaming about
| what it is we do in IT.
| sureglymop wrote:
| You're right. But it is a little harder to get kubernetes up
| and running with a load balancer and your own domain.
| Obviously not for people who are already familiar with it..
| greysonp wrote:
| Can't recommend Dokku enough. I've been using it for years on a
| $20 DigitalOcean box. I have a lot of random web projects/tools,
| most of which I'm the only user, and it's great to have a super
| simple way to get them online. Enabling HTTPS and assigning a
| domain are each just a single command.
| zwarag wrote:
| How does it differ from portainer?
| wilsonfiifi wrote:
| Portainer is more of a UI for docker and docker containers.
| But dokku is and actual platform similar to heroku that helps
| you deploy your apps.
| toomuchtodo wrote:
| Would portainer be a good fit for adhoc manual execution of
| Docker containers on a remote host if a UI would be
| helpful?
| dopamean wrote:
| Last I used dokku my understanding was that it used
| Heroku's open source build packs. So it was very much your
| own hosted heroku. This was at least 7 years ago though.
| Nextgrid wrote:
| That's correct and it is still the case.
| punnerud wrote:
| The same here, and that I can host multiple projects on the
| same server without any additional cost. If I get enough
| traffic I can always move it to a new server and redirect the
| DNS (cloudflair)
| thebiglebrewski wrote:
| lol are you me?! exactly the same setup over here
| yebyen wrote:
| There's also Deis Workflow (Hephy Workflow)
|
| https://web.teamhephy.com
|
| For those worried about a Single Point of Failure, you can't have
| your cake and eat it too. Docker and Dokku is a single point of
| failure when you build directly on it, I guess. Kubernetes
| mitigates that.
|
| We're still here, keeping the tires on. I haven't personally
| tested K8s 1.24 with Workflow yet, but we are actively seeking
| maintainers on all of the cloud vendors.
|
| If you find that something is broken and want to see it fixed,
| talk to me on Slack. I'm aware of at least Azure that has broken
| their Bucket Storage API since Workflow was originally published
| by Deis, and it hasn't been quite fixed yet.
|
| Documented support for Google Cloud and AWS are both extant as
| well, although I've heard one person call into question whether
| Google Cloud storage will work out of the box, or if it still
| needs upgrades. We'd like to add DigitalOcean support as well, I
| already know it basically works, we just need to add
| documentation and probably also give it a quick spit-shine and
| polish.
|
| Dokku on the other hand is less heavyweight and does not require
| as much work for maintenance, since it does not have to be
| decentralized or protect against any SPOF. It's a wonder that
| more people do not want to use this. I've heard of at least one
| more Deis Workflow fork in the wild, possibly in better or worse
| states of maintenance than Team Hephy, but if you are looking to
| get off of Heroku then you could certainly do much worse.
|
| We do need volunteers as we do not have time to maintain
| everything by ourselves, (come talk to us on the Slack if you're
| interested in joining the fun!)
| evoxmusic wrote:
| Does dokku supports preview environments like Qovery?
| emehex wrote:
| I've been running https://scrape.world on dokku + DigitalOcean
| for two years, zero issues!
| thomasfedb wrote:
| Have been using Dokku in (small scale) production for years and
| absolutely love it. Was also recently pleasantly surprised to see
| that Dokku supports ARM... so looking forward to trying it out on
| my RPi4 next week.
| block_dagger wrote:
| I've run high-ish traffic production sites on Dokku for years. If
| you need just one server, it's a dream for Rails/PG/Redis setup.
| Amazing what reliability it provides. Almost completely written
| in bash!
| juanse wrote:
| Could you share more, please? I use the very same stack and I
| think with the biggest VPS available right now I will have more
| than enough. It is basically a simple CRUD application.
|
| Could you share how big the VPS yo used is (cores/Ram) and what
| traffic you got to manage with that?
|
| Thanks.
| your_username wrote:
| chasd00 wrote:
| Not the parent but to me dokku shines when putting multiple
| apps on a single server and the fact that deploying is a git
| push. Letsencrypt and other plugins are icing on the cake.
|
| If you have one app then dedicate a server to it and run it
| right on the operating system. Maybe have 2 and a load
| balancer so you can do prod deployments with no downtime. The
| point is get dokku, docker, and all that abstraction between
| the network card and your app out of the way.
| RileyJames wrote:
| Awesome. I've always worried what it can handle, and therefore
| only run projects on it until they were more serious. But in
| that context, I've never had a problem (and run them longer
| than that anyway). To around the 50-100k user per month. Mostly
| reads tho.
|
| Keen to hear what you're running.
| chasd00 wrote:
| I've been dokku for a long time. I think before there were any
| plugins. Works just fine for me, but I'm not doing anything out
| of the ordinary. I run all my hobby and side projects with it on
| linode.
| VWWHFSfQ wrote:
| Did they ever figure out the scaling problem or is it still just
| "one web dyno and that's it"?
| bigfudge wrote:
| It's still single machine l, but afaik you can run multiple
| dynos, and can certainly let run multiple apps and separate
| web/worker dynos.
| chasd00 wrote:
| Can't you just put a load balancer in front of N vps running
| dokku? Although, I haven't done infrastructure since before
| docker was invented so a little behind the times.
| sscarduzio wrote:
| Any pointers to documentation on this topic?
| bigfudge wrote:
| https://dokku.com/docs/processes/process-management/
| freen wrote:
| You can put dokku in front of different schedulers, kubernetes
| being one of them.
| AndrewOMartin wrote:
| I came to the comments first to answer "what's the catch?". There
| were no comments at the time so I went to the website. This line
| near the top seems particularly fair and believable.
|
| > _Own your own PAAS. Infrastructure at a fraction of the cost.
| Powered by Docker, you can install Dokku on any hardware. Use it
| on inexpensive cloud providers. Use the extra cash to buy a pony
| or feed kittens. You 'll save tens of dollars a year on your dog
| photo sharing website._
| viraptor wrote:
| I've used it on and off. It's ok and I was happy. But it's a
| fairly thin layer and a leaky abstraction, so I ended up
| looking at docker logs and firewall rules more times than
| needed. Unfortunately when things were down, noting the context
| was not a priority, so I don't have specific issues raised to
| show.
| mdasen wrote:
| For me, one of the big catches is that you have a single point
| of failure. Dokku doesn't run over multiple VMs you have. It's
| on a VM. If that VM goes down, you're down.
|
| I think one of the selling points of Heroku is that if the box
| you're running on goes down, your service will just be started
| on another box and traffic will be routed there and you don't
| need to do anything.
| ukoki wrote:
| If you want a much more highly available open source Heroku,
| there is Cloud Foundry which is used as the basis for a few
| public PaaS like IBM Bluemix and SAP Cloud Platform. The
| smallest HA set up is about 50 VMs though, and it's
| complicated to deploy so not really worth it if you have
| fewer than 1,000 or so developers to support.
| Bombthecat wrote:
| Super complicated, tried it several times over the years.
|
| One would think it will get better in newer versions.
|
| But nope..
|
| Didn't try it the last 2 or 3 years though
| zrail wrote:
| Dokku has official support for k8s and Nomad if you want
| multiple-host support. The caveat, of course, is that you
| have to run the cluster.
| mr_luc wrote:
| Oh, hey! I used Dokku back in the ... I want to say
| 2012-2013 ? and missed multi-node stuff a bit (nothing that
| couldn't be scripted around) so this looks cool.
|
| I _do_ see that it shouts 'EXPERIMENTAL!', so I guess it's
| 'experimental, but official'.
| vagrantJin wrote:
| Redundancy is kinda your responsibility...
|
| I may have read your comment wrong but it would be wholly
| unfair to expect Dokku to provide everything and the kitchen
| sink gratis.
| drusepth wrote:
| If a service is marketed as an "alternative" to any
| competitor, I think it's generally reasonable to assume
| that service covers most of the basic features offered by
| that competitor.
|
| I've seen tons of "Heroku alternatives" pop up over the
| past couple months, but they all seem to have (rather
| large, IMO) downsides of "it does A and B like Heroku, but
| not X, Y, and Z" (where again, IMO, X, Y, and Z are
| typically rather core features like redundancy/failover). I
| know everyone uses services for different reasons, but the
| general appeal of Heroku that I've seen has been the
| basically-zero-devops-ever-necessary-for-anything approach
| they've taken.
| wilsonfiifi wrote:
| One way to overcome that might be to use ansible to automate:
| 1. Dokku setup on a new server 2. Deploy your
| app from a git repository 3. Restore your database
| from backup
|
| If you aren't comfortable with ansible you can use Fabric [0]
| or Sup [1]. I think there's even an ansible guide for Dokku
| deployment on their blog [2].
|
| [0] https://www.fabfile.org/
|
| [1] https://github.com/pressly/sup
|
| [2] https://dokku.github.io/general/automating-dokku-setup
| jeremyjh wrote:
| If the box you are running in is a VM, the VM host is already
| providing hardware redundancy. It's not full redundancy but
| in practice it's sufficient for dog photo sharing sites.
| judge2020 wrote:
| As far as I know only Google Cloud does 'hardware
| redundancy'[0]. I've had single-instance outages in AWS and
| they don't seem to really care if something goes wrong with
| your instance, although maybe they have more maintenance
| events than they let on and they might happen transparently
| to the user thanks to some form of live migration.
|
| 0: https://cloud.google.com/compute/docs/instances/live-
| migrati...
| jeremyjh wrote:
| I'm not talking about live migration - the instance will
| go down and there will be a brief outage while the
| instance restarts on another hypervisor. The same is true
| of a single dyno Heroku app.
| electroly wrote:
| For AWS, nothing involved there is automatic; _you_ have
| to stop it* and then restart it. It will just stay broken
| until you restart it yourself. "Brief outage" suggests
| it might be automatic but in AWS it's not.
|
| * Possibly multiple times. Instances on degraded hosts
| have a tendency to get stuck and you have to stop, and
| then stop again to _force_ stop it, and then sometimes
| even that doesn 't work and you have to just wait.
|
| Source: have received lots of "EC2 Instance Retirement"
| emails
| mnd999 wrote:
| This is what autoscaling groups are for, right? If set
| the autoscaler to keep one instance running it will spin
| another one when they retire the one you're using.
| dijit wrote:
| "Weeks of reading AWS documentation will save you hours
| of learning about infrastructure"
|
| the topic is here is ease of use.
|
| Comparing Heroku to VMs and correctly configured ASGs is
| fine for me as a sysadmin, but they're not targeting the
| same simplicity.
| znep wrote:
| Not any more. https://aws.amazon.com/about-aws/whats-
| new/2022/03/amazon-ec... In theory. But yes, sometimes
| detaching resources can take a long time on a degraded
| host.
| evoxmusic wrote:
| If you are looking for a HA alternative, Qovery is the one.
| It's a Heroku like platform running on AWS built for running
| production workload. It's multi AZ by design.
|
| (I am co-founder)
| Nextgrid wrote:
| Can it be licensed and run on bare-metal?
| Gys wrote:
| Yes, I love Dokku and like to use it as an alternative for some
| of my Heroku apps. However, the thing I miss most is Heroku
| including a nice dashboard showing several metrics for my Golang
| apps (memory usage, go-routines, etc) over time. Heroku has that
| out of the box and that makes it very convenient.
| claudiug wrote:
| how difficult will be to build a basic tool for this case?
| Gys wrote:
| A golang app exposes several metrics by default already. A
| common way is using Prometheus to collect the data and use
| Grafana to create a graphic dashboard. But it takes some
| configuration and needs those services running somewhere. Not
| something I want to spend much time on.
| viraptor wrote:
| Not connected to dokku, but you can construct this from:
|
| telegraf - report the host / process metrics
|
| opentracing - instrument the application itself with tracing,
| with some pre-built libs like https://github.com/opentracing-
| contrib/go-stdlib
|
| tempo - collect the traces
|
| Loki - collect the logs
|
| influxdb - collect the metrics
|
| grafana - display it all
|
| It's not too hard once you set it up... but as you see
| there's a lot of elements to it.
| yebyen wrote:
| Congratulations, you all just suggested re-inventing Deis
| workflow (with a few additional pieces) :)
|
| There are a lot of elements indeed,
| https://docs.teamhephy.com/understanding-
| workflow/components...
|
| This is classic literature:
| https://docs.teamhephy.com/understanding-
| workflow/architectu...
|
| It is much easier to just use it than to try and re-invent
| your own: https://docs.teamhephy.com/quickstart/
|
| I cannot guarantee the cloud provider bits all work, I
| don't use them so I don't maintain them, but if you have
| Kubernetes with persistent disk provided, which any managed
| Kubernetes can most certainly do, it's easy enough to hook
| up generic Minio (which has the added benefit of working
| just as well on bare metal hosts), and I'm certain that
| does work as I use it.
| viraptor wrote:
| > It is much easier to just use it than to try and re-
| invent your own
|
| Now listen buddy... That CV is not gonna pad itself, ok?
|
| Seriously though, if you have time and curiosity, I'd
| recommend putting together a monitoring stack by hand
| once. There's a lot to learn from that experience.
| yebyen wrote:
| My go-to stack is Prometheus and Grafana with kube-
| prometheus-stack Helm chart for Kubernetes.
|
| I'm sure I'm not configuring it well.
|
| There are too many leaps I couldn't follow directly in
| how to make the config, and there's something about how
| arrays merge in YAML that makes it harder to write a
| config like this in Helm... so there is a lot of what
| I've written here that shouldn't need to be in my own
| config, because they are the standard default alerts, but
| I wound up having to include them to make my one extra
| alert join the rest (and this is my excuse for why it is
| several hundred lines long, when in reality it's mostly
| stock.)
|
| This config goes so far as making alerts to Slack with
| Alertmanager that work out of the box!
|
| https://github.com/kingdonb/flux2/blob/monitoring/manifes
| ts/...
|
| :sunglasses:
| striking wrote:
| The Pro version appears to offer, or may eventually offer (?),
| this set of features https://pro.dokku.com/
| sureglymop wrote:
| I just deployed netdata also in Dokku.
| pixelmonkey wrote:
| Also check out piku, especially if you are hosting Python or Node
| apps:
|
| https://github.com/piku/webapp-tutorial/blob/master/README.m...
|
| It is a way to get the same sort of developer experience benefit
| as dokku, but without dockers and containers, using plain UNIXy
| tools on a single Linux node. The above link explains how it
| works.
| nanope wrote:
| Why would I use this over say minikube + ingress or just plain
| Docker + Caddy?
| squiffsquiff wrote:
| They're just begging for it to be called 'Dooku' when it breaks,
| aren't they?
___________________________________________________________________
(page generated 2022-05-14 23:01 UTC)