[HN Gopher] Dokku: My favorite personal serverless platform
___________________________________________________________________
Dokku: My favorite personal serverless platform
Author : tosh
Score : 854 points
Date : 2024-08-26 15:21 UTC (1 days ago)
(HTM) web link (hamel.dev)
(TXT) w3m dump (hamel.dev)
| simplecto wrote:
| Great writeup -- I have a gist floating around somewhere with a
| similar workflow, but for bitbucket pipelines.
|
| Good solve!
| calyhre wrote:
| I really like Dokku. I recently wrote a plugin to automatically
| expose the apps I add on it on my local network as subdomains of
| the host via MDNS (https://github.com/calyhre/dokku-mdns),
| perfect for hobbyists
| josegonzalez wrote:
| I love this! Did you add this to our plugins page by any
| chance? I can't recall and not at my personal laptop to check.
|
| Disclaimer: I am the Dokku maintainer.
| calyhre wrote:
| It is yes. Thanks for such a nice tool
| cynicalsecurity wrote:
| Self-hosted solutions are the way.
|
| No one will be stealing your data as the big corps do.
|
| Less chances to overrun your budget because of how cloud
| platforms conveniently have no breaks on utilisation of
| resources.
| renegade-otter wrote:
| Or you can use something with straight-forward pricing, like
| Digital Ocean. I don't understand why AWS is default for
| everything. People need to snap out of that racket.
| johntash wrote:
| Digital Ocean is even on the expensive side these days. There
| are a lot of vps providers that offer decent pricing and
| include bundled bandwidth. Some of the hosts may not be good
| for business-use, but should be fine for personal stuff.
| turtlebits wrote:
| Because provisioning/configuring/monitoring/scanning/patching
| /grooming servers sucks.. and people are lazy.
| dewey wrote:
| > No one will be stealing your data as the big corps do.
|
| We take care of that ourselves by self-hosting and having
| faulty or unmonitored backups :)
| spankalee wrote:
| I must have missed the incident where a major cloud provider
| was stealing their customers' data. Do you have a link?
| pelagicAustral wrote:
| IMHO Dokku still outperforms all other open-source alternatives
| for deploying Rails apps. There are a few proprietary
| alternatives that still manage the job with far more simplicity,
| but those are paid... I have tried to deploy with Kamal, DHHs
| Junta preferred way, but is still not better than Dokku in it's
| management and simplicity, and top of that, if follows the
| framework's latest trend of poor-to-no documentation.
| andrewmutz wrote:
| I've been loving Kamal in production. What problems did you run
| into?
| pelagicAustral wrote:
| The documentation is a major turn-off. I havent revisited the
| situation in a few months, maybe things have changed, but
| could not deploy a single app to my traditional cloud vm's...
| I never struggled that much with Dokku, that's why the
| comparison...
| wg0 wrote:
| Ruby. Only if it were a self contained binary in go or (or
| zig) it could go places.
| tdeck wrote:
| Yes, this is what's holding Ruby back from the broad
| adoption that Zig enjoys.
| sigmonsays wrote:
| to be honest, i just heard and i'm thinking twice because
| of ruby.
|
| I really don't long for a gem breaking when i go to update
| my system. self contained binaries ftw.
| benbristow wrote:
| I've been enjoying using Dokploy recently.
|
| https://github.com/Dokploy/dokploy
|
| It's similar to Dokku but has a nice web UI, makes it easier to
| deploy Docker/Compose solutions and auto LetsEncrypt
| functionality is built-in by design (not as a separate plugin).
|
| I've also built a GitHub Actions workflow to trigger off a deploy
| to apps hosted on it (basic cURL command but works well).
| https://github.com/benbristow/dokploy-deploy-action
|
| And put together some pre-configured Compose files you can deploy
| for various apps. https://github.com/benbristow/dokploy-compose-
| templates
| _d6rd wrote:
| Nice. Why not use a github merge webhook for triggering
| deploys?
| benbristow wrote:
| I have actions on my projects to build & publish container
| images to GitHub's container registry. The deploy trigger
| from the workflow makes Dokploy get the latest image from the
| registry and run it.
| turblety wrote:
| Thanks for the recommendation. I've just given it a try and it
| looks great. I had tried coolify.io before, but the multi
| node/swarm support wasn't great, and the registry didn't work.
| Dokploy seemed to work straight out of the box.
|
| One thing I wish it had to preview deployments though. Coolify
| had that. But I can live without it.
| enumjorge wrote:
| Apologies for the very off-topic reply, but I can't help but
| find it a little funny that on a thread exalting a particular
| tool, the top comment at the time of this writing is a link to
| another, newer tool. Not that there's anything wrong with
| sharing the link, but it does seem like here at HN we have a
| bit of a grass-is-greener thing going on. I would understand it
| more if the discussion was around how bad a tool is and someone
| chimed in with an alternative. And it's not like I don't want
| people to share these other projects but personally on a thread
| about a particular topic, the comments I find the most useful
| are those from people with experience in that topic sharing
| their opinions, tips, etc. In this case, the comment our
| community found the most valuable on the topic of Dokku seems
| to be a link to Dokploy, a project that judging by the commit
| history is new as of this past April.
| rsyring wrote:
| I find it helpful to have other tools listed. I already know
| a decent amount about Dokku and clicked on these comments
| specifically to find out what other tools might be up and
| coming or otherwise mentioned in the space.
|
| I'm still waiting for something built on a rootless container
| solution and with everything defined in git (i.e. no or
| limited cli commands) so that exactly what is being deployed
| is, at all times, tracked in git.
| miroljub wrote:
| > I'm still waiting for something built on a rootless
| container solution
|
| I'm pretty sure you can run both Dokku and Dokkplay using
| podman. It's a drop-in replacement for docker that runs
| just fine rootless.
| benbristow wrote:
| I think I was respectful enough to word the original comment
| I made to the difference between Dokploy & Dokku, not just
| saying one is better than the other. I've used both
| successfully and think both are great products - just wanted
| to share my experience. There seems to be an umbrella
| recently of self-hosting tools like Coolify/Dokku/Dokploy
| etc. so wanted to contribute to the discussion in that way.
| Dokploy is also an open-source project so thought the
| exposure might be positive on a high ranking HN post.
| enumjorge wrote:
| My comment came out crankier than I intended. I do think
| comments like yours are valuable, and I agree that you were
| respectful and informative. I'm just genuinely amused that
| the top comment is for a completely different tool. That's
| more an observation about how we vote as a community, not
| about your post. I include myself in that group though as I
| have in the past been drawn to the new and shiny over the
| already known.
| collingreen wrote:
| I personally appreciate it - I really like going to the
| comments to see other approaches and alternatives
| whenever something is on here. I don't think it's an
| insult nor do I think it's out of place if done
| correctly. HN is one of the only places left on the
| internet where I expect good value in the comments
| section and this is one of the reasons.
| tonyoconnell wrote:
| I came here for the comments actually. I know Dokku and
| was wondering if someone would post a better alternative.
| ofrzeta wrote:
| Same here. Actually I regularly revisit threads about
| Dokku, Coolify and CapRover because I know that there are
| references to other projects that I might have missed.
| panarky wrote:
| If the topic is "favorite personal serverless platform" then
| discussion of other offerings is absolutely on-topic.
|
| _> Apologies for the very off-topic reply ... it does seem
| like here at HN ..._
|
| There's nothing more HN than filling the first page of
| comments with discussion of everything except the linked
| article.
| franciscop wrote:
| > it does seem like here at HN we have a bit of a grass-is-
| greener thing
|
| Since it's Hacker News, not Old-But-Stable-Project-News, that
| seems expected? The other way it also happens, and has been
| happening forever, I published a new OSS project of mine ~10
| years ago, went to the front-page, and 8 of 10 comments were
| recommending other pre-existing tools.
| gosub100 wrote:
| My theory for this, at least in this case when the featured
| article is about a software program, aka a tool, then it
| really becomes a discussion about the tools that serve the
| purpose of that in TFA.
|
| Here's an analogy from the physical realm: "presenting
| shovel, a customizable tool for removing dirt".
|
| - doesn't work well for rocky terrain, but I'm working on
| DigBar, which can outperform Shovel in many high performance
| workloads.
|
| - it's a lot slower than Hoe, if you're only going down 4" of
| topsoil
|
| - I wrote a custom frontend for Shovel call Flatend, it
| carries more volume for loose loads
|
| - theres a paid product called posthole that is worth buying
| if you build fences, uses shovel under GPLv3
| fastball wrote:
| Looks nice, but this is quite the security issue:
|
| https://github.com/Dokploy/dokploy/releases/tag/v0.7.2
| elAhmo wrote:
| One alternative to this alternative is to use a webui for dokku
| itself. Such as https://github.com/ledokku/ledokku
| hebrox wrote:
| I see that the last commit was 2 years ago. Do you know any
| other alternatives?
| Traubenfuchs wrote:
| Thank you -that looks significantly less involved than setting
| up dokku.
| kevinob11 wrote:
| For a while dokku was selling a pro version with a web ui and
| json api. I don't really mind the CLI so while we bought it I
| don't really use it. I see there hasn't been much activity on
| pro, I wonder if it is still a focus.
| oezi wrote:
| My major gripe with dokku is that there is no way to define the
| configuration in a file rather than executing the commands
| manually.
|
| Otherwise: totally agree, great tool for self hosting.
| JonAtkinson wrote:
| You can configure almost everything using an app.json file.
|
| https://dokku.com/docs/deployment/deployment-tasks/
| dewey wrote:
| I believe they are talking about the Dokku commands that are
| needed to set up a new Dokku app.
|
| For example for a static site that would be the following:
| dokku apps:create dewey.at dokku domains:set dewey.at
| dewey.at www.dewey.at dokku letsencrypt:enable
| dewey.at
|
| That's also one of my wishes to get improved, currently I
| just have a long text file where I store them so that if I
| move servers I can just re-run them if needed.
| mdasen wrote:
| Could you put them in a .sh file and then just run `sh
| setup_dewey.sh`? Maybe put `&&` between them so that if one
| fails, it won't keep running through the script?
| dewey wrote:
| Yep, in theory I think that should work nicely. So the
| recovery procedure after a server died would be to
| restore the dokku data directory from backup and then re-
| run all the commands. I haven't tested that but I think
| that should do the job.
|
| Right now I keep the list of commands more as a reference
| to look up things like how I mounted a volume or my
| naming scheme for data directories.
| chuckadams wrote:
| > Maybe put `&&` between them so that if one fails, it
| won't keep running through the script?
|
| Or just add `set -o errexit` at the top of the script. Or
| use make.
| oezi wrote:
| Exactely, I was really surprised that dokku isn't all based
| on storing these commands in a config/script which gets
| executed every time you change something.
| imemyself wrote:
| It doesn't cover everything - but I've had great success with
| terraform and this module.
| https://github.com/aaronstillwell/terraform-provider-dokku
| josegonzalez wrote:
| We have ansible modules (https://github.com/dokku/ansible-
| dokku) that cover the majority of app management if thats what
| you want. The reason I am hesitant to do it in something like
| `app.json` is purely because one might expose Dokku to users
| who only have push access and some of those commands can be
| fairly destructive.
|
| Disclaimer: I am the Dokku maintainer.
| oezi wrote:
| Thank you! I was hoping for something less intimidating than
| going full ansible/terraform.
|
| Essentially something that captures all dokku invocations and
| could be transferred to another machine. Is app.json this?
| 0xblinq wrote:
| I'd love this feature too. Why not add it as an optional
| thing to enable and let users decide? Maybe just put a big
| warning in the docs and make it opt-in?
| josegonzalez wrote:
| I really hate adding knobs - it increases the amount of
| work I need to do to maintain and support the project.
|
| Long term, I'd like to port the ansible modules over to
| being maintained internally by the dokku/omakase project,
| and then maybe that could be a plugin that folks could run
| from within their deploy.
| andrewmutz wrote:
| I've been using a different tool that provides great developer UX
| for managing containerized web apps on your own servers. Its dead
| simple and does things like zero-downtime deploys and remote
| builds.
|
| https://kamal-deploy.org/
|
| I use it with rails but it works with any containerized web apps.
| dewey wrote:
| I've looked into this too, but it always felt like it's best
| suited for a "one app per server" model, and not really like
| Dokku which makes it easy to run many workloads on a single
| server.
|
| Did I misunderstand something there?
| tebbers wrote:
| I'm pretty sure multiple apps is on their public roadmap, I'm
| sure I read it somewhere.
| rtcoms wrote:
| Recently DHH posted on twitter that Kama v2 will have
| support for multiple apps on a server.
| andrewmutz wrote:
| I've never tried the many-apps-per-server use case and I
| don't think it's supported. We use it in production where its
| more common to have many-servers-per-app.
| adriand wrote:
| I've got two apps running on two servers (ie both on both)
| using Kamal and Traefik and it works great. I didn't set it
| up but I deploy with it almost every day.
| nasir wrote:
| I already run multiple apps on a single server with Kamal and
| it works _fairly_ good. Sometimes there are some issues
| especially if you use similar resources across system such as
| redis. But overall it is stable and works good.
| hobo_mark wrote:
| Can I not do all of these things with docker-compose already?
| dewey wrote:
| No. With Dokku you can just push to git remote and it'll build,
| deploy the image, set up LE certificates, roll out the app with
| zero downtime (if you want). To get this running you'd have to
| do some manual stuff with git commit hooks, but that's just one
| small part of Dokku.
| hobo_mark wrote:
| I have gitlab-runner on my VPS, all it does is `docker
| compose up`, that already includes a traefik setup with LE
| certificates.
|
| Zero-downtime does sound interesting though, and is probably
| better than `traefik.http.middlewares.test-retry.retry`.
| justinsaccount wrote:
| dokku does a lot of things that docker-compose does not. One of
| the bigger ones is zero downtime deploys:
|
| https://dokku.com/docs/deployment/zero-downtime-deploys/
|
| This has the added benefit of warming up the app before traffic
| ever hits it, something I was always surprised that even heroku
| didn't do (at least, the last time I used it ~6 years ago)
| josegonzalez wrote:
| I see compose in production all the time - especially from
| folks that want compose support _in_ Dokku. I bought this up
| with the compose project manager a few months back. It seems
| like an interesting use case but it didn't seem like the
| Docker folks were... aware that this was how folks used
| docker compose? There is a project out there - Wowu/docker-
| rollout - that sort of provides this but it has some rough
| edges.
|
| Disclaimer: I am the Dokku maintainer.
| hobo_mark wrote:
| Interesting, how is compose meant to be used then? Just for
| building images and running local dev environments?
| josegonzalez wrote:
| My understanding is that they are focused on the local
| development loop at the moment, especially with the
| acquisition of Tilt. That said, I don't work there so
| take this all with a grain of salt.
| amelius wrote:
| Let me guess ... it's called serverless but it still has a server
| somewhere in the equation?
| efilife wrote:
| > Dokku is an open-source Platform as a Service (PaaS) that
| runs on a single server of your choice
|
| Lol
| johntash wrote:
| This is the part that gets me every time. It sounds pretty
| neat, but.. if it only works on one server - what's the
| point?
|
| What about things like scaling, or even just what if your one
| server runs out of resources to fit more apps on?
| 3np wrote:
| You can still solve for that just fine in a multi-Dokku
| setup. It's just that Dokku won't do the coordination for
| you. Sometimes you do want something more integrated like
| k8s/openshift/nomad instead; sometimes not.
| josegonzalez wrote:
| Dokku's multi-server offering is based on k3s. We
| interact with k3s but offload any actual clustering to
| k3s itself as it does the job better than Dokku could :)
| You can also just tie Dokku into an existing K8s cluster
| on your favorite cloud provider instead.
|
| Disclaimer: I am the Dokku maintainer.
| 3np wrote:
| This sounds like a great approach! Thank you for keeping
| it up and on!
| dewey wrote:
| > What about things like scaling
|
| Premature optimization for 99% of people's projects. Once
| you run into "scaling" issues you can always run it on a
| more powerful server.
|
| Related: https://twitter.com/dhh/status/1827322640685506895
| mitjam wrote:
| It's a tradeoff: a real PaaS is more managed, fault
| tolerant, and scalable, Dokku is much less expensive,
| especially with multiple projects.
|
| One server scales vertically and can serve a good number of
| projects and users. Huge spikes eg. due to attacks, lead to
| outages instead of runaway bills.
| PKop wrote:
| >what's the point
|
| To get started in a simpler way, and in a way that solves
| 80% of use cases. Once you need to scale, then you can
| scale. Why worry about that upfront with all the complexity
| it entails?
|
| >what if your one server runs out of resources to fit more
| apps on
|
| There's vertical scaling. Rent a bigger server.
| josegonzalez wrote:
| We've supported multiple servers for a few years and have
| had official k3s support since the beginning of the year,
| so not just one server anymore. We even support managing
| the servers associated in a k3s-based cluster.
|
| Disclaimer: I am the Dokku maintainer.
| johntash wrote:
| Ohhh, I stand corrected. I don't think that was an option
| the last time I looked at Dokku. I see the schedulers
| section in the docs now, thanks for pointing it out!
|
| Does the k3s scheduler work with existing non-k3s k8s
| clusters as well?
| josegonzalez wrote:
| Yep, you can set a single property for the kubeconfig and
| it'll respect that.
| dewey wrote:
| Dokku doesn't mention "serverless" anywhere, it's just this
| persons blog post that uses this word wrongly.
| abadpoli wrote:
| Can we not do this? Everyone knows that "serverless" doesn't
| actually mean there are no servers. It's not productive to do
| this "haha gotcha!" trope every time someone uses the
| serverless term.
|
| Serverless refers to the fact that you can launch individual
| workloads on the platform while abstracting away the underlying
| infrastructure. Yes, to set up dokku you still need to
| provision a server. But to deploy an application onto dokku
| after it's been set up, you do that without worrying about
| provisioning new infra for your app. That's what is
| "serverless" about it, and it's a perfectly acceptable use of
| the term.
| turtlebits wrote:
| "Serverless" means 1- pay for what you use. 2- No infra
| setup, ever. Dokku requires a server that you have to manage.
| It is not serverless. You should never hit a scaling wall.
| rahkiin wrote:
| Azure Functions are serverless to us, but for the team
| developing and deploying that feature they are not
| serverless. Dokku provides a tool so that once you deploy
| projects they can be 'serverless'.
| joseda-hg wrote:
| 1- That would throw out serverless with (free) unlimited
| use (A la PocketHost)
|
| 2- Then getting a third party to set up Dokku and then
| using that would qualify (Because it'd be the same as
| getting AWS to setup their server abstraction) The platform
| is serverless, you hosting it probably not, maybe server-
| light, as you setup the abstraction and use that for many
| apps
| bigstrat2003 wrote:
| > Can we not do this? Everyone knows that "serverless"
| doesn't actually mean there are no servers.
|
| Then maybe people shouldn't use a term that means "there are
| no servers". One doesn't get to complain if they use a word
| to mean something the opposite of its _actual_ meaning, and
| then people don 't like it.
| IshKebab wrote:
| Are you the sort of person that says "ackshewelly people in
| orbit aren't weightless" or complains that wireless
| headphones technically contain wires, or that motionless
| rocks are actually moving really fast because the Earth is
| moving through space...
|
| It's just annoying.
| hashmush wrote:
| The actual meaning of words is defined by how people use
| them. Serverless has a very specific, well-defined meaning
| despite its seemingly contradictory etymology.
| viccis wrote:
| Most of the time I see "serverless" used these days, it's
| referring to the fact that server specifics are abstracted away
| from the application itself's deployment artifacts. Instead it
| just runs on a platform of some kind without worrying about
| having to be built for this version of this OS, etc.
|
| While it is being used a bit recklessly here, taking it
| literally is about as insightful and constructive to discussion
| as pointing out that "cloud" servers are located on the ground.
|
| I would even defend its usage here by pointing out that it's
| entirely possible to use this at a company in which the
| _servers_ are managed by one person or team, and the developers
| building applications simply interact with the _service_ and
| never touch a server themselves. Neither team has to touch each
| others scope, making it indistinguishable from conventional
| "serverless" approaches in which the decoupling occurs across
| company rather than across team within one company.
| amelius wrote:
| > without worrying about having to be built for this version
| of this OS, etc.
|
| Maybe call it "server-agnostic" or "OS-agnostic" then.
| viccis wrote:
| I honestly don't see the need to change it. The first use
| of "serverless" is from this article:
|
| https://readwrite.com/why-the-future-of-software-and-apps-
| is...
|
| In it, he points out:
|
| >The phrase "serverless" doesn't mean servers are no longer
| involved. It simply means that developers no longer have to
| think that much about them.
|
| I don't know how anyone could interpret "serverless" as
| meaning there's no server involved at any point in the
| application's execution, and if they did, I'm not sure what
| harm it causes? It seems like the only objection here is a
| pedantic urge to be more correct.
| wnolens wrote:
| Feel free to point us to the computing paradigm that doesn't
| require execution on _some_ host
| ebiester wrote:
| It is, but "We provide a programmatic interface for deployment
| that allows deploying docker containers on a VPS or server that
| you control" doesn't have a good buzzword.
| paxys wrote:
| Looks neat, but what exactly makes it "serverless"? It's
| literally an application that you have to run on your server.
|
| Edit: turns out (thankfully) that it's only the author of the
| article using that term. The project site (https://dokku.com/) is
| very descriptive.
| efilife wrote:
| Same question
|
| > Dokku is an open-source Platform as a Service (PaaS) that
| runs on a single server of your choice
|
| This is the first paragraph in the article
| stavros wrote:
| What makes anything "serverless", when it has to run on a
| server?
| SushiHippie wrote:
| I always understood "serverless" as, your main application
| isn't running all the time, but once you make a request to
| it, another process starts your main application and then
| your request gets forwarded to the "main" application.
|
| But I never really got it, so I may be completely wrong.
| stavros wrote:
| Practically, it's always running, as otherwise you'll get a
| cold start delay, but that's close enough. It doesn't mean
| there's no server, so the "lol how is it serverless if you
| have a server" meme is tiring.
| paxys wrote:
| Kinda, but you are describing an implementation detail.
| More broadly, here's how it works:
|
| Infrastructure as a Service (IaaS) - you rent a VM with a
| publicly accessible IP address. Everything else -
| patching/updating the OS, deploying your application code
| or binaries, process lifecycle management, logs, TLS certs,
| load balancing multiple servers and more - is your
| responsibility. Example: EC2.
|
| Platform as a Service (PaaS) - the provider also manages
| the OS for your VM, including deploying and running your
| code on it, restarts, a logging pipeline, providing a HTTPS
| URL, scaling to multiple servers and more. All you have to
| do is write your application code to start a web server and
| listen for web requests on a particular port. Example:
| Heroku.
|
| Functions as a Service (FaaS) - this goes one step further,
| and the concepts of web servers, ports and HTTP
| requests/responses are also abstracted out from your
| application code (hence "serverless"). You write a function
| with a set of inputs and outputs, and it's up to the
| platform to execute this function whenever demanded. The
| request can be sent via HTTP or a message queue or
| something else entirely. Your code itself doesn't have to
| care. Example: AWS Lambda
| IshKebab wrote:
| It means it doesn't run on specific servers that you manage.
| efilife wrote:
| So every website I do not own is serverless?
| IshKebab wrote:
| Yeah something like GitHub pages is serverless.
| Lockal wrote:
| But the article starts with "I run a Dokku server on a
| $7/month VPS", so author meant something else (probably
| just wrong usage). Maybe Dokku has 2 modes, where you can
| launch it on classic server (fixed price per month) or
| deploy on pay-as-you-use platform
| (https://www.cloudflare.com/learning/serverless/what-is-
| serve...). Calling something serverless without trying it
| first is deceiving.
| dewey wrote:
| I was looking at many of these "selfhosted Heroku" type of
| solutions recently and read many HN discussions about the
| different options (coolify.io, ploi, ...) as I migrated to a new
| server and always copying, adapting nginx configs got a bit old.
|
| I've landed on Dokku in the end as it's the one with the least
| amount of "magic" involved and even if I stopped using it I could
| just uninstall it and have everything still running. Can highly
| recommend it!
|
| The developer is also super responsive and I even managed to
| build a custom plugin without knowing too much about it with some
| assistance. Documented this on my blog too:
| https://blog.notmyhostna.me/posts/deploying-docker-images-wi...
| Balladeer wrote:
| How long did it take you to go from "making a new server /
| copying configs is fine" to "this is tedious enough I'd like to
| abstract it?"
|
| Like, was it a years-long journey or is this the type of thing
| that becomes immediately obvious once you start working w/ N
| servers or something?
|
| I'm trying to learn the space between "physical machines in my
| apartment" and "cloud-native everything" and that's led me to
| the point where I'm happily using cloud-init to configure
| servers and running fun little docker compose systems on them.
| abra0 wrote:
| That's where I am too right now for personal projects, and I
| ended up reimplementing parts of Dokuploy for that, but I
| don't feel much of a need to move from "fun little docker
| compose" for some reason
| duckmysick wrote:
| For homelab (but not only) you can install Proxmox Virtual
| Environment on your physical machine. You end up with a way
| to create VMs and containers with a web UI. It supports
| cloud-init too. If you have a spare machine it's excellent
| for experimenting and learning.
|
| https://www.proxmox.com/en/proxmox-virtual-
| environment/overv...
|
| https://proxmox-helper-scripts.vercel.app/
| dewey wrote:
| I wanted to self-host more of my Rails projects and Dokku
| comes with nice Buildpack support so I can just push a
| generic Rails app and it'll run out of the box. That plus
| that I had to set up a new server after many years made me
| look into that more.
| imtringued wrote:
| cloud-init is good, but it assumes that you treat your VMs
| like containers and that means you will need a lot more VMs
| that you constantly create and destroy and you will have to
| deal with block storage for persistence.
|
| If all you do is ssh into a system with docker compose
| installed, you will hardly benefit from cloud-init beyond the
| first boot.
| lfkdev wrote:
| What you are actually searching for is called ansible
| dewey wrote:
| That's pretty much the opposite of what I'm searching for.
| Getting a static site running with https on Dokku on a fresh
| server is done in under 2 minutes if you type quickly.
|
| 1) Run curl command to install Dokku
|
| 2) Set up domain to point to my server
|
| 3) Run 3 Dokku commands
| (https://news.ycombinator.com/item?id=41358578)
|
| 4) Add remote git url to my repository
|
| 5) Git push to that remote
|
| 6) Done
| Sammi wrote:
| I downvoted because you didn't qualify your statement.
| hk__2 wrote:
| That's orthogonal; you can use Ansible with Dokku.
| notpushkin wrote:
| Dokku is really neat! I've been using it before moving to
| building my own Docker images and deploying with Swarm. It was
| also (partly) the motivation behind my own take on self-hosted
| PaaS, Lunni (shameless plug): https://lunni.dev/
|
| In general, I really love the idea of running all your stuff on a
| server you own as opposed to e.g. Heroku or AWS. Simple
| predictable monthly bill really gives you peace of mind.
| mdasen wrote:
| Do you mind if I ask why you chose Docker Swarm? I don't know
| that much about Swarm and I'd love to know what you think about
| it compared to K8s (in terms of ease, nice things, things
| missing, etc.)
| notpushkin wrote:
| The main reason probably was the fact that I was already
| familiar with Docker and Docker Compose. Kubernetes
| introduces a whole lot of concepts that I didn't feel like
| studying up, plus there was a 3-node minimum requirement. I
| just wanted to be able to start with a single node and be
| able to scale up if needed, so Swarm just felt like a natural
| match here.
|
| I'm looking into K8s and other orchestrators like Nomad and
| perhaps will add support in Lunni at some point, but for now
| I believe Swarm is the sweet spot for smaller deployments
| (from single server up to maybe a couple hundred nodes).
| raphinou wrote:
| How's Lunni going? Is swarm working well? I remember an
| announcement of it some time ago :-)
| notpushkin wrote:
| Not too bad, except I have no idea how many users we have
| :')
|
| Swarm still works pretty smoothly for me, although I'm
| worried about the Mirantis situation, too. I'm currently
| working on a new backend, which will also enable us to
| plug in other orchestrators if need arises.
| ownagefool wrote:
| There isn't actually ( nor was there ever ) a 3 node
| requirement for k8s.
|
| Etcd requires 3 boxes for HA, but nothing stops you running
| a single node etcd.
|
| I personally run single master clusters, because if the
| master goes down, you lose management as opposed to actual
| service availability, so mostly I don't care.
|
| Now that there's anything wrong with your preference.
| notpushkin wrote:
| I might be misremembering it, huh! Yeah, it's pretty much
| the same as Swarm then (any odd number of manager nodes
| is valid, and if more than a half go down you only lose
| the management ability and everything else stays up).
| chuckadams wrote:
| There are several k8s implementations that are fine with a
| single node: k3s in particular is worth a look. But Swarm
| is still quite legit in my book.
| notpushkin wrote:
| I'll look into it, thank you so much! Way back then there
| wasn't a lot of choice though. I think I've played with
| Minikube but that was not recommended for production, and
| all the other distributions were huge (or at least I
| thought so!).
| raphinou wrote:
| Not lunni's dev, but a Swarm fan :-)
|
| I'm a swarm user, but using single node swarms. It's the best
| solution I found for deploying apps. A lot of projects
| publish docker compose files, and those are easily usable
| with Swarm after some small modifications. I'm using the
| setup described at dockerswarm.rocks [1] and it's smooth
| sailing.
|
| It's a real pitty, and still surprises me, Swarm is not more
| popular. It's still maintained [2] but few people still
| recommend it (even dockerswarm.rocks doesn't anymore). I've
| switched to it in 2022 [2] thinking I didn't take a lot of
| risk as starting with it is a really a low investment, and
| I'm still satisfied with it. I've deployed a new server with
| it recently.
|
| 1: https://dockerswarm.rocks/traefik/ 2:
| https://www.yvesdennels.com/posts/docker-swarm-in-2022/
| jjnoakes wrote:
| > In general, I really love the idea of running all your stuff
| on a server you own as opposed to e.g. Heroku or AWS. Simple
| predictable monthly bill really gives you peace of mind.
|
| Have you found hosting you like with bandwidth expense caps?
| I'm looking for something like this but I don't want surprise
| network bills if I misconfigure something.
| diggan wrote:
| > Have you found hosting you like with bandwidth expense
| caps?
|
| Not exactly what you're looking for, but solves the same
| problem in a different way:
|
| I've been quite happy with using Hetzner's dedicated servers
| which come with 1 GBit unmetered connection (unlimited
| bandwidth), so no surprise network charges :)
| notpushkin wrote:
| Yeah, I think plenty of VPS providers do unmetered traffic
| too. Mine has a limit but it's something like 8 TB/mo, so
| I'm not particularly worried either.
| apitman wrote:
| Note that if you saturate that 1Gbps link they will almost
| certainly ask you to stop. Lots of VPS offer "unlimited"
| but it's really not. It's only unlimited within their "fair
| use" restrictions, ie only as long as they think it's
| reasonable.
|
| Would love to be shown a counterexample provider.
| devjab wrote:
| It's not really unlimited as they will charge you $1/TB
| for what they call "overusage".
| Aeolun wrote:
| 5-10x cheaper than AWS still.
| asmor wrote:
| That's cloud, non-standard NICs, load balancers or
| vSwitches. Their standard 1 Gbps link does not charge
| usage fees. The one person that reported it did it on
| several servers, over 3+ months - and they weren't
| charged, just asked to slow down or upgrade to a
| dedicated link.
| asmor wrote:
| This happened once (?) in the history of LowEndTalk and
| Hetzner, and that was someone who was using several
| servers, 27/7, over several months at 100% link
| utilization to shovel raw footage around.
|
| You are very unlikely to replicate this running any type
| of personal infrastructure. Or anything that's not
| specifically this.
| 1oooqooq wrote:
| that's fine. if you're on that level either you're doing
| something wrong and should stop or you are making lots of
| money and should upgrade.
|
| aws will just charge you regardless.
| thelittleone wrote:
| Perhaps Hetzner or OVH?
| emacsen wrote:
| I'm curious as to your thoughts around Swarm.
|
| My concern around Swarm is around the Docker corporation, which
| appears to be struggling.
|
| As a competitor, we have Nomad, but with the recent IBM
| acquisition, I'm concerned about Nomad's future.
| notpushkin wrote:
| I do have some concerns about Docker Inc. and Mirantis (which
| now owns Docker Swarm I believe), yeah. Swarm is pretty
| mature though, and while I don't think it's going anywhere
| soon, I don't think we'll get any more core features anytime
| soon.
|
| For Lunni, my plan is to add support for another orchestrator
| while keeping the developer experience of just working with
| docker-compose.yml. I really didn't want to do K8s, but given
| it's essentially an open standard now, it should be a safer
| bet than Nomad. I guess we'll see when I can get to it!
| ForHackernews wrote:
| IBM bought Nomad? That's disappointing to hear.
|
| Nomad was always much better than k8s, sad that it never got
| the same kind of traction or mindshare.
| imtringued wrote:
| My gripe with nomad was that it didn't have init
| containers. You were basically forced to either have an
| endlessly growing job specification file or put consul-
| template in every single container image.
| realty_geek wrote:
| Delighted to see dokku on here. It's an amazing product and the
| founder is super humble and helpful. I can't afford to throw much
| money at it now but it would be great if more people supported it
| financially
| conradludgate wrote:
| My experience with dokku was pretty poor. It was quick to start
| with but on my VPS crashing and restarting, my apps would not
| relaunch. I'd have to re-run the dokku commands again. Perhaps I
| did something wrong but I inevitably switched to a single-node
| k8s setup as it ended up being more reliable
| josegonzalez wrote:
| Dokku maintainer here. If you have more detailed feedback, I'd
| love to hear it! Happy you've found something that works for
| you though :)
| goodbytes wrote:
| This comment to me is another upvote to use dokku. Been a
| happy user for years myself. If you do need help, the discord
| is pretty responsive and always helpful.
| mixmastamyk wrote:
| systemctl enable foo
| throwaway77385 wrote:
| One more upvote for Dokku. Been using it for as long as I can
| remember hosting things on servers. It is such an incredible
| piece of software. And open source to boot. If any of my projects
| ever make money, Dokku will be the first project I'm funding.
| daitangio wrote:
| If you search a simpler solution I suggest
|
| https://github.com/daitangio/misterio
|
| I created it for managing my homelab, it works great and it is a
| thin layer over docker compose
| dewey wrote:
| Sometimes the slighly more complicated (Dokku is still a very
| thing bash wrapper around running git, ssh and docker commands)
| is simpler just because they have a great documentation and
| other people using it.
| pawurb wrote:
| I love dokku! I've been running my SAAS seamlessly with it for 5+
| years now. It's awesome to see it actively maintained.
| mdasen wrote:
| Dokku is great, but historically it didn't really handle
| resilience. It looks like there's now a K3s scheduler (added
| earlier this year) which would mean I could have use a Kubernetes
| operator for a replicated database as well as have the app
| running on multiple boxes (in case one fails). It looks like
| it'll even setup K3s for you. The docs don't seem to go into it,
| but hopefully the ingress can also be setup on multiple boxes (I
| wonder if it uses a NodePort or the host network).
|
| I was sad when Flynn died (https://github.com/flynn/flynn), but
| it's great to see Dokku doing well.
| davidsgk wrote:
| > Dokku is great, but historically it didn't really handle
| resilience.
|
| Would you mind elaborating a bit on this? I'm exploring some
| serverless options right now and this would be useful info. Do
| you mean it's not really designed out of the box for
| resilience, or that it fails certain assumptions?
| ffsm8 wrote:
| I'm not the person you're responding to, but I believe I can
| answer that question as well.
|
| Dokku essentially just started a container. If your server
| goes down, so did this container because it's just a single
| process, basically.
|
| Other PaaS providers usually combine it with some sort of
| clustering like k3s or docker-swarm, this provides them with
| fail over and scaling capabilities (which dokku historically
| lacked). Haven't tried this k3s integration either myself, so
| can't talk about how it is nowadays.
| davidsgk wrote:
| Ah gotcha, thanks for the insight!
| mdasen wrote:
| Yea, this. Dokku was basically a single-server thing. If
| that box dies, your site goes down until you launch it on a
| new box. That might not be a huge deal for smaller sites.
| If my blog is down for a day, it's not a big deal.
|
| With a cluster, if a server goes down, it can reschedule
| your apps on one of the other servers in the cluster
| (assuming that there's RAM/CPU available on another
| server). If you have a cluster of 3 or 5 boxes, maybe you
| lose one and your capacity is slightly diminished, but your
| apps still run. If your database is replicated between
| servers, another box in the cluster can be promoted to the
| primary and another box can spin up a new replica instance.
|
| Dokku without a cluster makes deploys easy, but it doesn't
| help you handle the failure of a box.
| josegonzalez wrote:
| Yeah the k3s scheduler is basically "we integrate with k3s
| or BYO kubernetes and then deploy to that". It was
| sponsored by a user that was migrating away from Heroku
| actually. If you've used k3s/k8s, you basically get the
| same workflow as Dokku has always provided but now with
| added resilience.
|
| Note: I am the Dokku maintainer.
| mentalgear wrote:
| Has anyone a made or has a link to a recent, detailed comparison
| between all these self-host-platform projects?
| slig wrote:
| Any suggestion for a simple FaaS platform that isn't OpenFaaS? Fn
| Project looked promising, but their repo looks abandoned (more
| than one year without commits).
| eeue56 wrote:
| Currently using Convox a lot, but miss the simplicity of Heroku.
| Anyone know if there's a good comparison breakdown of all the
| PaaS options out there?
| ksajadi wrote:
| This is not fully up to date but is a good start
| https://www.herokualternatives.com/
| ofrzeta wrote:
| At least Coolify and CapRover are missing. Also, I don't
| think Kubernetes qualifies as PaaS.
| eeue56 wrote:
| Sadly missing Convox - particularly I'm looking for examples
| of things each excel at against each other.
| zoomzoom wrote:
| We wrote up this guide (withcoherence.com, we're somewhere in
| the PaaS space and I'm a cofounder)
| https://www.withcoherence.com/post/the-2024-web-hosting-
| repo.... Hope it's helpful!
| Animats wrote:
| "Serverless platform" is an oxymoron.
|
| But it worked for Salesforce, which is a software company whose
| slogan is "no software".
| paxys wrote:
| Salesforce's "no software" slogan dates back to a time when
| software was sold in boxes on store shelves. They were one of
| the first (possibly _the_ first) cloud-based business app. The
| slogan only looks weird in hindsight because the term
| "software" now includes SaaS apps.
| password4321 wrote:
| How well does Dokku support running on ARM?
| josegonzalez wrote:
| I dropped armhf (32 bit arm) a few releases ago. It was painful
| to maintain and the few users of that were older Raspberry PI
| installs. I think there are other tools out there that better
| support low-powered platforms (piku comes to mind).
|
| ARM64 should be fine, with some caveats:
|
| - Dockerfile/nixpacks support is great! Just make sure your
| base images and your Dockerfile supports ARM64 building -
| Herokuish _works_ but not really. Most Heroku v2a buildpacks
| target AMD64. This is slowly changing, but out of the box it
| probably won't build as you expect. - CNB Buildpacks largely
| don't support ARM64 yet. Heroku _just_ added ARM64 support in
| heroku-24 (our next release switches to this) but again, there
| is work on the buildpacks to get things running.
|
| I run Dokku on ARM64 locally (a few raspberry pis running
| things under k3s) and develop Dokku on my M1 Macbook, so I
| think if there are any issues, I'd love to hear about them.
|
| Disclaimer: I am the Dokku maintainer.
| password4321 wrote:
| Thank you for taking the time to provide this summary, and
| thanks for all your work on Dokku!
| Svoka wrote:
| While ago I couldn't get LetsEncrypt working properly, was
| very frustrating. I think I just gave up at some point
| bjornsing wrote:
| Why does the title say "serverless" though? AFAIK Dokku is very
| much a "server platform".
| chuckadams wrote:
| It's the backend that implements serverless architecture. A
| serverless server, I guess. Roll your eyes if you like, but
| "serverless" is still a snappier term than "declarative on-
| demand server provisioning, configuration, and scaling" and
| most people are into that whole brevity thing.
| Terretta wrote:
| > _snappier term than "declarative on-demand server
| provisioning, configuration, and scaling"_
|
| Quoth the raven, "servermore"...
| tdeck wrote:
| Except Dokku doesn't do those things. Dokku doesn't scale
| your app automatically and it doesn't shut it off when it's
| not being used. It runs your web server process continuously,
| handles some 12 factor config, and does some nginx stuff for
| you. Until this year it didn't support managing a cluster _at
| all_ and was entirely focused on single box deploys. The
| scale command just runs more processes on the same machine
| which if you 're not using Node is probably not even a good
| idea to do.
| AtlasBarfed wrote:
| Here's a better question. For people that roll their eyes at
| the mere mention of "serverless" (like me), what is the value
| proposition of Dokku over VMs and your own dockers?
|
| Don't convince me it is like AWS serverless. Convince me to
| give up VMs and docker images.
| cheema33 wrote:
| > Convince me to give up VMs and docker images.
|
| I am in the same boat. Using VMs and docker images and not
| sure how this would benefit me.
|
| I have looked AWS serverless stuff. They appears to solve
| problems I don't have.
| spiralpolitik wrote:
| Exactly.
|
| Dokku looks great but what is the value of using it over "run
| your container" platforms like Google Cloud Run, Digital
| Ocean App Platform, or Fargate.
| hmaxdml wrote:
| In terms of money it might end up cheaper for the infra
| itself (especially if it runs in your garage)
|
| In term of your personal time, well, you'll not grow a
| business on it without hiring people to maintain it or
| spend a lot of time doing devops
| pastorhudson wrote:
| One benefit for me was that a vps with 2vcors and 2-4gig of
| ram is about the same price as one of these app engine
| services. So I can run 3 or 4 dokku apps including
| Postgres, redis, memcache connected to them on my own vps
| and still have margin when inspiration strikes. I moved a
| production app from heroku to dokku and saved hundreds a
| month and still got tons and tons more compute.
| hmaxdml wrote:
| Well its problem is that you still have to... install the
| entire thing. Whatever serverless means, it should allow
| programmers to focus on their code, not on the platform.
| Like, at all.
| HL33tibCe7 wrote:
| > It's often desirable to have HTTPS for your site. Dokku makes
| this easy with the Let's Encrypt Plugin, which will even auto-
| renew for you. I don't use this, because I'm letting Cloudflare
| handle this with its proxy.
|
| Hopefully you do use TLS between Cloudflare and your Dokku (even
| with a self-signed cert or something), otherwise your personal
| sites (which are apparently sensitive enough to put behind basic
| auth) are being transited over the internet in plaintext.
| drpossum wrote:
| From my understanding Cloudflare can generate origin certs for
| exactly this purpose and you can add certs to dokku with `dokku
| certs:add myapp`
| throwitaway1123 wrote:
| Agreed. It also can't hurt to setup a firewall or EC2 Security
| Group that only allows ingress from Cloudflare IPs:
| https://www.cloudflare.com/ips/
|
| Alternatively, you can use Cloudflare Tunnel, and then block
| all incoming connections.
| fideloper wrote:
| they also provide certs for mTLS between cloudflare and your
| origin, which you can layer in along with IP restrictions
|
| (the term they use is "authenticated origin pull")
| viraptor wrote:
| You have to limit the traffic to that pool to prevent people
| accessing your server directly. But that's not enough on its
| own, because other people can use CloudFlare's IPs to scan
| you too, so you need some kind of auth on top or use the
| tunnel.
| throwitaway1123 wrote:
| Yes, this is correct. If you're using IP address allowlists
| then you also have to check the Host HTTP header
| (Cloudflare won't allow their other customers to forge that
| header). Or, you can use mTLS (as another commenter pointed
| out), or tunnels (as I pointed out):
| https://news.ycombinator.com/item?id=26690388
| chazeon wrote:
| Typically my servers is behind NAT and it has no public
| address, one can only reached the service through the CF
| tunnel and my access is through VPN, this should be safe,
| right?
| andybak wrote:
| Genuinely curious what the threat model is here?
| aftbit wrote:
| One might be avoid mass traffic interception due to malicious
| or corrupt BGP rules, either by accident or on purpose by a
| nation-state or telco. Another might be avoiding interception
| by your own ISP for various purposes.
| yunohn wrote:
| You can avoid both of those easily using Cloudflare
| Tunnels, which seamlessly works with their proxying CDN.
| umit-cakmak wrote:
| Can you issue wildcard certificates with Dokku? It seems like
| you need to have a proxy domain to register the TXT records,
| since you do not know the domain of the user in advance.
| password4321 wrote:
| Related discussion on the front page today: "Coolify's rise to
| fame, and why it could be a big deal"
| https://news.ycombinator.com/item?id=41356239
|
| > _Coolify can enable organizations of any size to host an
| arbitrary number of free, self-hosted software easier than ever._
|
| https://github.com/coollabsio/coolify
|
| > _An open-source & self-hostable Heroku / Netlify / Vercel
| alternative._
| wirelesspotat wrote:
| Does anyone have experience using dokku-postgres?
|
| The GitHub readme is well documented but hard to know how that
| translates into the dev exp, like with scaling or upgrades and if
| its features are comparable to managed Postgres providers (I'd
| assume no but happy to be proven wrong!)
|
| [0] https://github.com/dokku/dokku-postgres
| IgorPartola wrote:
| I used to use it but what got me was letting my Dokku install
| get stale and then upgrading a whole bunch of versions in a
| row. The old plugin broke, the new one wasn't compatible, there
| were version issues.
|
| Nowadays I just run Postgres directly on my Debian box and just
| create a new user/DB for ever application, then set an env
| variable for the Dokku app to connect. Postgres is so solid to
| begin with that it requires no babysitting unless you have very
| intense workloads (at which point either use a hosted solution
| or start thinking about how you'll do your own DBA).
| hmaxdml wrote:
| I liked Dokku when I was still happy using docker, but since I
| started working on https://www.dbos.dev/, I value microVMs way
| more.
|
| The problem with Dokku is that, while its easy to use if you have
| experience in devops, well.. you still need to know devops!
| That's not what I call serverless...
| heofizzy wrote:
| Don't you need to run everything in bare metal to effectively
| leverage microVMs? AFAIK, unlike containers, you can't
| efficiently run microVMs on cloud VM instances.
| hmaxdml wrote:
| You need nested virtualization, which many VMs support -- it
| is architecture dependent. But, yes, to maximize the benefits
| you'll want to run on baremetal.
|
| From the standpoint of a cloud user, the kind that likes
| Dokku, the experience is cheaper/faster/more secure if the
| infra uses uVMs vs containers.
| canadiantim wrote:
| Will it ever be possible to use DBOS with other providers
| asides from aws? Some part of me concerned about the vendor
| lock-in
| hmaxdml wrote:
| The SDKs -- which do most of the heavy lifting of managing
| state for you -- are open source. For example the TS SDK
| (https://github.com/dbos-inc/dbos-transact) runs on node and
| you can run node anywhere (k8s, VMs, etc.)
|
| With respect to AWS, where we currently host DBOS Cloud, we
| rent baremetal machines and built the entire hosting layer
| using Firecracker, Postgres, and other well known frameworks
| that we can bring to other metal providers
| (https://www.dbos.dev/blog/anatomy-of-dbos-cloud).
| shepherdjerred wrote:
| Is there any advantage of Dokku over using Kubernetes (I already
| have a person single-node cluster).
|
| I initially setup Dokku on K8s, but since it would just deploy to
| that same server it makes more sense IMO to just use K8s
| davepeck wrote:
| If you've already got k8s set up and you're comfortable with
| it, I'm not sure that Dokku offers much?
|
| But... wow. For my single non-k8s server at home, Dokku makes
| getting stuff running behind HTTPS about as simple as I could
| hope for!
| andybak wrote:
| I mean "not having to learn Kubernetes" is surely a factor?
| 0xblinq wrote:
| It's like two orders of magnitude easier to setup and use.
| shepherdjerred wrote:
| Some took my comment to mean "why would anyone use Dokku"?
|
| This project looks great, and is obviously far less complex
| than Kubernetes. I was asking for advice about my particular
| situation. I wasn't saying that someone should choose
| Kubernetes over Dokku.
|
| Though, I do see many advantages of Kubernetes for a homelab
| environment, mainly that you get experience using K8s which can
| transfer to a professional context.
| windowshopping wrote:
| I have a heroku app that I'd love to try migrating. It's a pretty
| simple express.js single page app running on heroku's lowest
| level, uses firebase and has no database or other backend
| dependencies. The domain is on godaddy and it uses Cloudflare for
| DNS. Heroku's "Automated Certificate Management" takes care of
| the SSL cert.
|
| The main issue is that it's for playing a game, and the game is
| held in-memory, and once a day heroku restarts their servers, so
| everyone gets kicked out of the game they're in when it restarts
| with cleared process memory. I need to fix this by migrating and
| I don't have time.
|
| If anyone feels like this migration would be something that they
| have relevant experience for and which they could do confidently,
| please get in touch. Email in profile.
| jamil7 wrote:
| Your server will likely occasionally have to restart regardless
| of whether you migrate or not. Maybe you could look at using
| Redis to store your game state. I think Heroku has a free add
| on.
| fpauser wrote:
| Or simply use traefik + app containers via standard podman +
| systemd integration:
|
| https://docs.podman.io/en/latest/markdown/podman-systemd.uni...
|
| https://traefik.io/traefik/
| simonw wrote:
| The word "simply" is doing a bit too much heavy lifting there -
| I'd love to see an article about that solution that's as
| detailed as Hamel's Dokku one
| https://hamel.dev/blog/posts/dokku/
| Kiro wrote:
| That's the opposite of simple.
| ledgerdev wrote:
| I love this idea, simple reliable pieces.
|
| edit: looking into traefik docs and perhaps not what I would
| call simple, probably would use caddy as reverse proxy instead.
| coreyburnsdev wrote:
| that's what I do and its easier to setup and understand than
| dokku that's for sure. tried using dokku multiple times and ran
| into so many issues with it. with traefik you literally just
| have to copy and past few lines in a compose file and push to
| docker hub and traefik will pick it up.
| yunohn wrote:
| Dokku handles a significantly larger scope than the setup you
| describe, including a plugin ecosystem:
| https://dokku.com/docs/community/plugins/
| trallnag wrote:
| For personal stuff I always come back to Ansible and, if I want
| it containerized, Kubernetes
| aledalgrande wrote:
| Curious: for this type of infra, what do people use for
| file/object storage? Using something like AWS would negate all
| the savings with egress costs.
| tdeck wrote:
| If your capacity needs aren't very high you can just store data
| on your web server in a directory
|
| https://dokku.com/docs/advanced-usage/persistent-storage/
| ilovebabyyoda wrote:
| minIO can also be self hosted as an s3 alternative. Or host a
| database. Likely just depends on the type of storage you are
| looking for
| XCSme wrote:
| Total Annual Price > $48,000 $20.00/TiB/month
|
| That doesn't sound cheap...
| apitman wrote:
| I would guess GP was referring to self-hosting minio.
| apitman wrote:
| If you want hosted S3-compatible storage, you should be able to
| combine Backblaze B2, Wasabi, or Cloudflare R2 with any VPS
| provider from the bandwidth alliance:
|
| https://www.cloudflare.com/bandwidth-alliance/
|
| That should alleviate egress costs. Bonus that storage is also
| way cheaper.
| throwaway77385 wrote:
| Pocketbase (also in a Dokku-powered container) on a Hetzner
| Cloud VPS with attached storage. Stupidly cheap, very reliable.
| bpicolo wrote:
| Good ol local disk
| chasd00 wrote:
| A linode vm + dokku has supported my personal projects (for
| profit and otherwise) for years.
| b_shulha wrote:
| Dokku is great, but have you tried https://ptah.sh ? ;)
|
| (sorry)
|
| This is the service I have been working for the lasts months
| alongside my 9-5. Heavily inspired by Coolify, but it is based
| solely on Docker Swarm to save the development efforts on other
| features.
|
| Also, it is a bit opinionated to adjust the UX to what I need
| myself, so there are slight deviations from the way how others
| work with Swarm.
|
| I have a short vid which I have recorded today on how one could
| easily deploy WordPress to any VPS: https://youtu.be/k34Zdwcsm6I
|
| It covers usage of the 1-Click apps templates which speed up
| everything "a little bit".
| xrd wrote:
| I love dokku. And josegonzalez is always a huge help.
|
| I pay a monthly support to dokku. You should too. Jose will help
| you either way, but I feel slightly less guilty when I ask
| questions and he immediately resolves them for me in the slack
| channel. Don't you want to use this incredible piece of software
| guilt free?
| Pxtl wrote:
| I'm going to confess something: I still do it oldschool. A single
| box with a SQL server and a webserver running on it. I've taken
| courses in Docker and whatnot but never applied them.
|
| When you're hosting a single-node cluster, what value do these
| docker-based tools offer? Is it the fact that you can use a
| dockerfile to declare your OS-level dependencies consistently?
| mixmastamyk wrote:
| Yes, cattle not pets, and portability.
| ThinkBeat wrote:
| Looking at the examples in the post above, and looking at the
| Dokku site and documentation
|
| Is it the case that there is no visual in the free version? Just
| hacking around some files? That is not that user friendly and
| certainly does not really remind me of Heroku.
|
| The GUI you get with the Pro version looks good. and only a bit
| more than $800 for life.
| LAC-Tech wrote:
| I'm outing myself as a bit ignorant here, but the author:
|
| - used a VPS - made a docker file
|
| So what does doku actually do?
| ttarr wrote:
| Same here,
|
| All I do on top of what you said is use Traefik for reverse
| proxy and let's encrypt.
| scottydelta wrote:
| Looks promising, I have been self hosting a lot of apps, this can
| make things easier.
| mike31fr wrote:
| How does it compare to Coolify? https://coolify.io
| cdubzzz wrote:
| I started out with Dokku and it was fine, but ultimately
| switched to Coolify solely because it has a web UI. Dokku Pro
| has one as well, but my use case was primarily just for hosting
| a demo and spinning up instances from GitHub PRs so didn't feel
| worth spending money on.
| wtcactus wrote:
| I do have a hard time understanding how is this different from
| setting up a VM with docker running on it.
|
| I don't see any added benefits in therms of the extent of
| configuration I need to deploy. What is the new thing Dokku and
| other similar services bring to the table? What is the extra
| configuration I don't have to do if I go with it?
| interstice wrote:
| I have found over the years that trying new software risks
| immediately running into a road block in real use. There will be
| some detail or complexity or bug on a semi-basic requirement that
| goes directly to an issue in github.
|
| Dokku is not one of those, it does what it does well and aside
| from a couple of cli argument ordering quirks it's been great for
| my light usage. If I was using it more I'd probably want to
| configure entire architectures with declarative config files, I
| have no idea if it can do that though.
| Lord_Zero wrote:
| And then those GitHub issues get closed by stalebot a month
| later and the repo looks like it doesn't have many issues.
| kmarc wrote:
| Whenever a new tool / library / plugin / whatever is
| evaluated by myself or my team, I spend some time on
| gathering some github issue / PR stats. I think this is now
| part of my "software engineering toolset" / best practices.
|
| If there are too many open PRs, or unresolved tickets, OR
| there are too many _new_ ones, I would rather start searching
| for something else
| klabb3 wrote:
| Same. I do a lot of research and try to get a sense of the
| person/team behind it and their values, vision, dedication,
| if they accept outside contributions, etc.
|
| A few years ago it became popular to document the project
| processes, but it all turned into generic code of conduct
| garbage and abstract governance pillars, as if they were
| writing a constitution. So looking at GitHub issues and
| commit history is still the best way. And very well
| invested time.
| dewey wrote:
| Dokku is actually the opposite of that. Super responsive,
| helpful and nice maintainer (Already mentioned by a few other
| people in this thread).
|
| I was so positively surprised that I got help so quickly
| after asking that I started to sponsor it via GitHub
| immediately.
| 0xblinq wrote:
| Dokku is AMAZING. I've been using it for about 6 years, never had
| a single problem with it and I host a lot of apps on a single
| instance server. Can't recommend it enough
| gvkhna wrote:
| Is anyone running truenas scale for this kind of purpose. I
| haven't used it but its architecture around k8s seems extremely
| promising. For most use cases a simple docker container is all
| you need but sometimes running other apps like grafana with a k8
| manifest is easier to manage in one vps and gives you the
| flexibility of a cluster. Just curious.
| ravxx wrote:
| just get good with docker and make a shell script to instantly
| create/update pre-existing docker images. you wont regret it.
| timetraveller26 wrote:
| I feel like a caveman doing this with a git bare repository and a
| hook, one of this days I am going to give Dokku a try!
| hedgehog wrote:
| Are there plugins or anything that will allow Dokku to run queues
| of batch jobs? Skimming the docs there is clear support for
| Heroku-style apps and one-offs that can be launched via cron, not
| so much for batch although it would be quite useful.
| josegonzalez wrote:
| Dokku maintainer here.
|
| You may wish to look into a message processing system in your
| language of choice and run that as a daemon in Dokku. We have
| plugins for various datastores, and commonly I see folks just
| connect their worker processes to that. It's much lighter
| weight than spawning new containers for each workload.
| hedgehog wrote:
| In my case spawn overhead is negligible relative to the jobs
| themselves, my existing experience with AWS Batch has been
| pretty good. I took another look at the Dokku documentation
| and extending `run:detached` would work well enough, though
| maybe it's time for me to revisit Airflow or something in
| that direction.
| gslepak wrote:
| Can someone explain what this is for someone who doesn't know
| what Heroku is, and why it's called serverless when it clearly
| requires a server?
| notatoad wrote:
| heroku is (was?) a platform for hosting web apps with a lot of
| nice ergonomics, to let you run commands like "heroku up" to
| get your app running on the web with minimal fuss.
|
| this appears to be a project to give you the niceities of a
| PAAS, without actually providing the platform.
| dangus wrote:
| Heroku still exists, it just sucks. Owned by Salesforce.
| bulatb wrote:
| "Serverless" means there's no stateful application server in
| your architecture. No instance, just callable code. Shell
| script, not daemon.
|
| You write narrow business-level functions that take inputs, do
| their business, and give you the output. They're called, they
| run, they terminate and carry nothing forward. You deploy them
| to a hosting platform which will handle making them available,
| routing requests, and all the other stuff that's incidental to
| doing the work. The only thing that's your concern is the logic
| that turns inputs into outputs. At least that's the pitch.
|
| Technically a PHP script that you run as CGI through Nginx is
| "serverless" that way, though of course it's hosted with a
| software server running on a hardware server. It's serverless
| because you write a PHP script and it doesn't care what runs it
| or what's going on around it. It doesn't need to work within
| the context of an application server like an endpoint in a
| Django or a Rails app would.
|
| Someone else could own a bunch of servers running Nginx, you'd
| give them prettyprint.php, and it would pretty-print your JSON
| or whatever at the URL they'd give you.
|
| Services that do this are called serverless platforms. The
| hosting model is called "functions as a service" (FaaS). If you
| like the architecture but you don't want FaaS from Amazon,
| Heroku, or some other third party, you can host yourself a mini
| FaaS with something like Dokku.
| progrium wrote:
| Damn, who wrote this amazing piece of software
| josegonzalez wrote:
| What a genius the original maintainer of this software is
| est wrote:
| I am wondering why php wasn't _more_ popular? Think php as a
| serverless platform:
|
| 1. 10 minute to learn, simple syntax, rich functions
|
| 2. deploy with standard tools like ftp
|
| 3. easy scaling with php-fpm.
|
| 4. not exactly docker, but vhost works in most cases. And vhost
| can be containerized.
|
| 5. insta hot-reload
|
| 6. dirt cheap cost. Hi dreamhost
|
| 7. no vendor lock-in bullshit, supported by everyone everywhere
|
| well, at least it was the case used to be
| fastball wrote:
| Does PHP run your database? Your caching layer? Handle SSL? Can
| you run a queue with PHP? Would you? If your answer to any of
| those things is "no", then PHP isn't a serverless platform. It
| is a language that you use to build web applications. That
| makes it very different from Dokku, Kubernetes, etc.
|
| But yes, you're right that PHP is still a great choice for
| building the "web application" portion of your infrastructure.
| est wrote:
| To be fair, serverless platforms doesn't always provide queue
| or database. Usually they come alone with some sqlite or KV
| store for the convenience.
|
| SSL was provided by the php-fpm part, with either Apache or
| nginx, like most "platforms" do. Modern platforms may choose
| less-popular fronts like Caddy, and Caddy does support
| php_fastcgi.
| fastball wrote:
| The purpose of serverless is easily deploy applications
| without worrying about / managing infra at all. The only
| reason you don't need to run your own infra with PHP is
| because it doesn't do anything except the web application.
| As you noted, it doesn't even do the web-serving. Most
| serverless application platforms are then paired with
| hosted databases, hosted queues, etc, so that you don't
| need to manage those either. But yes, only some of those
| additional pieces can be described as "serverless", e.g.
| AWS Aurora is an actual serverless database, vs
| DigitalOcean's hosted Postgres, which does not scale in a
| "serverless" way. Regardless, minimal management of the
| database is required on these platforms.
|
| Dokku in turn is a replacement for those platforms and
| makes it easy to host your own [insert some part of your
| platform stack here]. That is the purpose of a PaaS, which
| is what Dokku is and what PHP certainly is not. Yes, the OP
| maybe should've said "My favorite personal PaaS", but that
| is less catchy, and I think calling it a "serverless
| platform" is close enough to the truth and gets the point
| across.
| est wrote:
| > Most serverless application platforms are then paired
| with hosted databases
|
| > Dokku in turn is a replacement for those platforms and
| makes it easy to host your own
|
| I tried to search
|
| database site:dokku.com/docs/
|
| or
|
| queue site:dokku.com/docs/
|
| But failed to find anything relevant. Am I doing this
| wrong? Where does Dokku as a "replacement platform"
| provide the database or queue capability?
|
| > purpose of serverless is to provide scaleable infra
| which you don't need to manage
|
| > Dokku is an extensible, open source Platform as a
| Service that runs on a single server (from
| https://dokku.com/docs/)
|
| and how does Dokku on a single server solve the "scaling"
| problem exactly?
|
| > As you noted, it doesn't even do the web-serving
|
| Technically speaking, php can.
| https://github.com/swoole/swoole-
| docs/blob/master/modules/sw...
|
| it's just not widely used.
|
| Dont get me wrong, Dokku is a fine project of its own,
| but it doesn't seem to tackle the problems you mentioned
| either. On the other hand, if php is not enough, the LAMP
| can do everything.
| fastball wrote:
| I'd recommend reading more thoroughly about Dokku (or
| PaaS in general) since it is somewhat clear you don't
| understand the value prop. Just grepping for certain
| terms isn't gonna get you very far.
|
| Dokku is Docker + Buildpacks + Orchestration. You give it
| a buildpack (developed/popularized by Heroku) to specify
| your application, which is the main "serverless" part.
| Then you tell Dokku that you want datastores or queues or
| whatever, via plugins[1]. Dokku handles pulling the
| relevant docker images, running them, and linking it all
| together. In other words, Dokku is open-source Heroku,
| where you can add databases and such with a single
| command, specify your app with a buildpack, and you're
| off to the races.
|
| If Dokku only did the application via buildpack part,
| people would not find it nearly as useful and PHP on a
| webhost somewhere would indeed be a good alternative.
|
| But Dokku is not that, it is a PaaS, so it can _also_ run
| your PHP application just as easily. And if you 're self-
| hosting Postgres and RabbitMQ via Dokku, why would you
| run your PHP on Dreamhost? You probably wouldn't, you'd
| throw a PHP buildpack up there and call it a day.
|
| [1] https://dokku.com/docs/community/plugins/?h=plugins#o
| fficial...
| est wrote:
| ok, but "pulling the relevant docker images" does not
| scale, bro. There's a gazillion of parameters to fine
| tune a Postgres alone, and trust me, running db inside a
| container is bad, as stateful containers are terrible in
| general.
|
| And I really do hope scaling should be as easy as
| "pulling docker images"
| zo1 wrote:
| So, how is PHP + queue library different than Dokku(or
| PAAS as you call it) + queue plugin? Other than the fact
| that you write it all in yaml/json/gui instead of code?
|
| > "I'd recommend reading more thoroughly about Dokku (or
| PaaS in general) since it is somewhat clear you don't
| understand the value prop."
|
| My cynical and uncharitable translation of this and the
| rest of your post for the GP: We've invented platform or
| PAAS or devops so that we can carve-away work from devs
| that used to traditionally do this kind of stuff in
| partnership with infrastructure, and you're just not
| understanding it because you're coming from a dev
| perspective.
|
| It's all just evangelism/marketing-push to gather the
| online webosphere mindshare and capture the development
| process so that all that's left for the downstream
| individuals (developers) is nothing but
| config/yaml/plugin-ecosystem and even that stuff only the
| ordained priests of DevOps understand (or are allowed to
| touch), again leaving developers with even less, making
| them glorified code-monkeys that need to spit out CRUD
| screens. It's either that, or put "DevOps" on your resume
| or title, almost like a mafia-style shake-down.
|
| It works, sure, provides immense value sometimes and gets
| you to market quickly sometimes, sure, etc. But damn is
| it toxic and detrimental for our community in the long
| run. In an alternate universe or timeline we could have
| gone some other direction, but this is what we have for
| now, so we have to live with it. DevOps and UX will many
| years from now be known as two very bad paths that we
| allowed our industry to be dragged down into.
| hmaxdml wrote:
| But that's the reason why serverless has mostly failed so
| far -- because it is not stateful. And that is only because
| most existing offering don't have the correct primitives.
|
| By that I mean that if the programming model has a way to
| automatically capture state, an implementation framework
| can manage it automatically on behalf of the application,
| while the user (person writing the app logic) doesn't have
| to care about the state.
| dangus wrote:
| I mean, it's not like PHP is _un_ popular.
|
| According to the first thing I googled, it's more popular than
| Go, and even higher up the list if you remove languages like
| C/C++ that aren't typically used for web.
|
| https://www.hackerrank.com/blog/most-popular-languages-2023/
| husarcik wrote:
| For the web, PHP remains #1. It's super fast, especially when
| using FrankenPHP or Swoole. Laravel has the fastest
| development velocity out of any framework available.
| v3ss0n wrote:
| All of those are easier in Python or Ruby or Javascript. And
| all of those languages have done thing properly to make you
| code lesser , better with lesser errors and better performance.
| Thats why PHP become a dinosaur.
|
| > not exactly docker, but vhost works in most cases
|
| You are understanding Docker and Vhost wrong then..
| dangus wrote:
| What's funny is before I read this I thought Dokku was just used
| as a convenient driver for kitchen testing and stuff like that. I
| never really thought of it as a PaaS!
| pollux01 wrote:
| I have a video on how to setup Dokku via Docker, so you can
| launch it in any server like aws or digital ocean without paying
| extra for other services.
|
| https://youtu.be/O_-KxC9FjuA
| rcarmo wrote:
| Obligatory mention of Piku as a Dockerless alternative:
| http://piku.github.io/
| mjcurl wrote:
| I've been using dokku for years. Constant useful updates over
| time and the developer was super helpful with a niche case using
| old documentation.
| Mackser wrote:
| I've been using Dokku for many years. It's remarkably stable and
| easy to use. I wrote an extensive tutorial on how to deploy
| various apps and websites with Dokku in 2018 [1] and I'm sure
| that following the same steps still works 6 years later.
|
| 1: https://maxschmitt.me/posts/tutorial-deploy-apps-websites-
| do...
| byrnedo wrote:
| Striking while the iron is hot: I love dokku and I've used it for
| many years. That said, I thought I'd do something similar but
| with the goal of supporting k8s manifests
|
| https://github.com/skateco/skate
|
| It's daemonless, multi-host with multi-host networking, service
| discovery and like I said, allows you to create deployments,
| cronjobs, and route traffic via ingress resources.
|
| Comes with letsencrypt out of the box.
| progforlyfe wrote:
| Dokku looks great, I have not tried it yet myself. I've been
| using CapRover (similar thing) for years and have no complaints!
| LetsEncrypt support built in, has a web interface and CLI utility
| to deploy (can also use github triggers).
| m3kw9 wrote:
| I feel like this is similar to trying out Docker to use for small
| side projects for the first time, lots of gotchas that is hidden
___________________________________________________________________
(page generated 2024-08-27 23:01 UTC)