[HN Gopher] CapRover: Build your own PaaS
       ___________________________________________________________________
        
       CapRover: Build your own PaaS
        
       Author : vincent_s
       Score  : 382 points
       Date   : 2020-06-09 09:28 UTC (13 hours ago)
        
 (HTM) web link (caprover.com)
 (TXT) w3m dump (caprover.com)
        
       | bovermyer wrote:
       | I like the idea, but I will not support the use of nginx.
        
         | jchook wrote:
         | Care to elaborate on this? Which http server do you use?
        
           | CSMastermind wrote:
           | HAProxy is what we switched over to at work. I'm not informed
           | enough to give you the pros and cons of each.
        
           | bovermyer wrote:
           | See my other comment for my reasoning.
           | 
           | On the second point, I vary between Caddy and Traefik,
           | depending on the use case.
        
         | naavis wrote:
         | Is there something wrong with nginx?
        
           | bovermyer wrote:
           | I can't trust something that may now be under the control of
           | the Russian state.
        
             | goliatone wrote:
             | Would you mind to elaborate? I haven't heard anything about
             | Nginx being "compromised" before
        
             | dubcanada wrote:
             | But you're fine with Caddy or traefik "that may now be
             | under the control of the United States"?
             | 
             | All 3 of these are open source on github with widely used
             | code bases that are free to view and read as you want.
        
               | bovermyer wrote:
               | The US government hasn't raided the homes of the primary
               | developers of those, though.
               | 
               | I'll admit that the open source nature limits the damage
               | a state actor can do, though.
        
               | dubcanada wrote:
               | That you know of ;)
               | 
               | If you are going to go full paranoid, you can't pretend
               | that the media is 100% trueful at every aspect,
               | especially when it comes to internal US affairs.
        
               | bovermyer wrote:
               | Which is why I'm only 1/8th paranoid, not full paranoid.
               | =P
               | 
               | Also, while every media source is biased, if you review
               | enough angles on a given story, you can arrive at some
               | semblance of a true account.
        
               | ellimilial wrote:
               | Yeah, the difference is at least some of the media can at
               | least attempt to be truthful with limited chances of
               | accidental novichok exposure, falling through the window
               | or accidentally falling on a knife multiple times. etc.
        
             | unixhero wrote:
             | The code is open, and is being analyzed by the entire
             | world. This seems paranoid.
        
       | wiradikusuma wrote:
       | Can I say it's a poor man's Kubernetes?
        
         | zerubeus wrote:
         | Sort of yes, for personal projects and small business I would
         | go for something like this or dokku and try to split services
         | as much as I can, rather than managing k8s in my own
        
           | wiradikusuma wrote:
           | But if the K8s cluster is managed by cloud (e.g. AWS, Google,
           | even DO), is this/Dokku still worth it (easier)?
        
             | zerubeus wrote:
             | Yes dokku still worth it
             | https://news.ycombinator.com/item?id=23460066 and most
             | importantly much easier
        
         | harpratap wrote:
         | K8s does not deal with CI/CD of your source code, nor can it
         | automagically package your code out of the box. You need to
         | compile your source and bundle it in the form of a docker
         | image, host it and provide access to K8s to pull it. K8s is
         | like Linux kernel, it's not usable for most people unless you
         | package it with GNU utilies and other components people expect
         | out of a distro.
        
       | Nextgrid wrote:
       | Curious as to how this compares to Dokku
       | (http://dokku.viewdocs.io/dokku/)?
        
         | vincent_s wrote:
         | Dokku is best if you only need a single repo support, caprover
         | if you will have multiple apps, and or multiple servers.
        
           | dblock wrote:
           | How so? I use dokku on A DigitalOcean server for a dozen
           | apps. AFAIK cluster support is different (it exists). What
           | else?
        
         | coffeeri wrote:
         | There is someone working recently on swarmlet
         | (https://github.com/swarmlet/swarmlet) - a Dokku inspired
         | Docker swarm solution.
         | 
         | Swarmlet seems to be very young and not production ready.
         | Still, I am exited to see how this project will evolve with
         | time.
        
         | MrCheese wrote:
         | CapRover has support for multi-server deployments using Docker
         | Swarm. It also has a nice dashboard with built-in monitoring
         | and such. There is a marketplace of sorts with single-click
         | deployment for certain applications.
         | 
         | Dokku on the other hand has support for buildpack deployment as
         | well as Procfile support for running multiple processes.
         | 
         | I prefer Dokku. The main reason is that I only need a single
         | server for my apps and running Docker Swarm adds complexity.
         | 
         | I wrote about some other differences in my blog:
         | https://www.mskog.com/posts/heroku-vs-self-hosted-paas/
        
           | sequoia wrote:
           | Fantastic write-up, thanks!!
        
           | josegonzalez wrote:
           | Dokku supports multi-server deployment via Nomad and
           | Kubernetes as well.
           | 
           | - https://github.com/dokku/dokku-scheduler-kubernetes
           | 
           | - https://github.com/dokku/dokku-scheduler-nomad
        
             | StavrosK wrote:
             | Do these work well? I've never heard of either.
        
         | dgb23 wrote:
         | Their copy writing is funny and honest, I like it!
         | 
         | When it comes to operations I often feel overwhelmed, even
         | though I've done DevOps and automation work in the past.
         | 
         | Most of the things I'm working on professionally don't need the
         | "scale" part, but the "robustness" and especially "ergonomics"
         | parts. When I look at most infrastructure solutions, then I
         | often get a combination of "this is too complex" and "I don't
         | need this".
         | 
         | So I was drawn to solutions like Heroku at some point, but
         | there you cannot even do the most basic thing: persistently
         | writing to the filesystem. So you are forced to introduce
         | system level complexity and coordination for such a fundamental
         | feature.
         | 
         | Naturally I tend to prefer simple tools that enable things
         | rather than constrain them.
         | 
         | Side note: I think when the "code has to run on some computer"
         | problem is finally solved, then we likely see an explosion in
         | productivity in our industry.
        
       | vincent_s wrote:
       | Background info: https://www.freecodecamp.org/news/how-i-cut-my-
       | heroku-cost-b...
        
       | omk wrote:
       | Looks solid. I am all set for the wave of fully controlled PaaS
       | solutions coming our way. Most of the innovation has stayed
       | locked behind closed rooms at AWS, Microsoft or one of the major
       | cloud companies. This brings in more control and an extra
       | dimension to optimize.
        
       | peterwwillis wrote:
       | Can some developers explain to me why they don't want to set
       | things up themselves? If you already know how to do it, it's not
       | very time consuming. If you don't yet know how to do it, learning
       | how it all works only benefits your understanding of the service
       | you're providing, and empowers you to fix it. It's almost like
       | learning a new trade, and can give you a new perspective how your
       | code runs.
       | 
       | Maybe it's because there's so much arduous research required to
       | finally figure out what magic commands to run to get something to
       | work. Would having a set of HOWTOs that just explain the steps to
       | set up each component work as well for you as a turn-key
       | solution? (It would be great if we could start a trend of people
       | writing a _HOWTO.md_ after writing their _README.md_ )
        
         | thrownaway954 wrote:
         | it isn't about how time consuming it is, it's about consistency
         | with the deploys and consistency with the environments. you
         | want your development and production environments to match.
        
       | gnud wrote:
       | CapRover was mentioned in the thread about the coinbase stack [1]
       | - I guess that's why it's popping up here now.
       | 
       | As I said in that thread - this looks interesting, but the
       | installation instructions put me off a bit. Open a port on your
       | server, and don't change the default password `captain42` - then
       | run a cli tool from your dev machine.
       | 
       | 1: https://news.ycombinator.com/item?id=23460066
        
       | greaber wrote:
       | How does CapRover work with databases? Does it replace something
       | like RDS?
        
       | zerubeus wrote:
       | ahaha I like how this comes after the thread about k8S
       | https://news.ycombinator.com/item?id=23460066
        
       | monkeydust wrote:
       | (non dev) looking to run my own installation of
       | https://github.com/excalidraw/excalidraw for team. Could I use
       | this app? Straightforward to do? How would I estimate the costs?
        
         | lapnitnelav wrote:
         | As long as you have a (sub) domain you can use and a bit of
         | free time, you could go to your favourite cheap 'cloud'
         | provider, i.e. Digital Ocean, Scaleway, ...
         | 
         | Spin up a cheap instance (DO has a preconfigured image ready to
         | go), git pull and caprover deploy to test. I am pretty sure
         | even the cheapest ones will be able to run that.
        
       | netmonk wrote:
       | I find it surprising that they choose nginx as routing/reverse
       | proxy while Traefik does the job very seamless in a matter of
       | minute with benefit of docker container tag for live
       | configuration. and with full integration of letsencrypt.
        
       | Smerity wrote:
       | I have been using CapRover and love it. I donate to their
       | OpenCollective[1].
       | 
       | For those noting "why don't you just use Linux / k8s / ...", that
       | feels close to the original complaints re: Dropbox on Hacker
       | News[2]. I've run clusters hundreds of nodes in size myself but
       | CapRover gives me the pleasure of not having to sweat the small
       | details. You can get this from other platforms but usually
       | there's a dollar cost tied to each option. When I'm experimenting
       | I don't want to have a dollar cost attached.
       | 
       | Deploys are trivial. The default nginx setup is most of what I'd
       | want to do. LetsEncrypt is a single button click. Monitoring is
       | included by default. If I need to scale up, everything I'm
       | pushing is Docker containers. If I want to experiment, there's
       | great fun in looking at the included "One click apps / databases"
       | and just playing around.
       | 
       | CapRover is just a lovely freeing experience that will do what
       | you need :)
       | 
       | [1]: https://opencollective.com/caprover
       | 
       | [2]: https://news.ycombinator.com/item?id=8863
        
         | GordonS wrote:
         | Have you used Dokku before, or did you look at it before
         | settling on CapRover? (I'm just starting to look at both)
        
           | StavrosK wrote:
           | I'm a very happy Dokku user, I've been using it for years
           | with no problems, though CapRover seems very interesting.
        
       | xu6ahb8E wrote:
       | For those who have even simpler needs (like side projects, or 1
       | dev projects), I found using simply docker and git to be plenty
       | enough.
       | 
       | Basically, you can create a bare git repository on your server
       | (`git init --bare`), and put a `hooks/post-receive` script within
       | it that will clone sources in a temporary directory, build the
       | docker image and rotate containers. That way, you can `git push`
       | to build and deploy, and it's easy to migrate server.
       | 
       | The added bonus is that you now have a central git repos that can
       | act as backup, so you don't need github or gitlab.
       | 
       | The main painpoint, which I find dokku interesting for (and I
       | assume caprover too) is zero-downtime deployment. But well, if
       | this is critical, you probably need something more extensive.
        
         | mcdoh wrote:
         | Similar to this?
         | https://www.digitalocean.com/community/tutorials/how-to-use-...
        
         | xu6ahb8E wrote:
         | Here is an example of post-receive script I use for that:
         | #!/usr/bin/env bash              export APP=appname
         | export DOCKER_OPTS=""         unset GIT_DIR              rm -rf
         | /home/username/apps/$APP         cd /home/username/apps && \
         | git clone /home/username/git/$APP && \         cd $APP && \
         | echo building image && \         docker build -t $APP .
         | if [[ "$?" != "0" ]]; then           echo "error while building
         | image."           exit 1         fi              echo "Stopping
         | previous container..."         docker stop $APP
         | echo "Starting new container..."         sleep 1         docker
         | run -d --name $APP --rm $APP
        
           | [deleted]
        
           | dugmartin wrote:
           | FYI, you can avoid the $APP directory removal and clone by
           | doing:
           | GIT_WORK_TREE=/home/username/apps/$APP git checkout master
        
             | xu6ahb8E wrote:
             | Yes, that's true, thanks for mentioning it. It comes from a
             | time when I did not use docker so I wanted to get rid of
             | build artifacts, but building within docker, this is not a
             | problem anymore.
        
               | c17r wrote:
               | If you need to use your "old way" for something else, you
               | can use 'git clean -fdx' which will remove all files and
               | directories that git does not track.
        
           | phaemon wrote:
           | You should at least use `set -u` in this script, otherwise,
           | at some point, you'll fail to set $APP and end up running:
           | rm -rf /home/username/apps/
           | 
           | Guess how I learned this lesson? :)
        
             | Operyl wrote:
             | Ooooh, I need to start documenting my war stories. They'll
             | make for a fun read at some point years down the line.
        
         | antoniomika wrote:
         | I actually developed a system similar to this but used docker
         | compose as an alternative to Procfiles and nginx+le to handle
         | dynamic virtual hosting. It's actually a golang app that will
         | automatically provision git repos with the necessary hooks and
         | also allow you to exec into a container directly over SSH. I
         | had the thought of using docker stack to achieve zero downtime
         | but haven't had a chance to try that out. Happy to open source
         | it if anyone is interested in using it.
        
           | njsubedi wrote:
           | Please open source it
        
           | dzolvd wrote:
           | Would love to see it!
        
           | jensneuse wrote:
           | please do!
        
         | babaganoosh89 wrote:
         | Caprover doesn't do zero-downtime deployment currently fyi
        
         | rcarmo wrote:
         | That is what Piku (https://github.com/piku) is all about. You
         | can easily deploy containers through it as well.
        
       | Legogris wrote:
       | I can not not read this as CA Prover and thinking it has
       | something to do with PKI.
        
       | rcarmo wrote:
       | Shameless plug: If you don't want to use containers or are using
       | resource-constrained Linux boxes, have a go at
       | https://github.com/piku :)
        
       | onion2k wrote:
       | Slightly nitpicky, but is something a PaaS if you run it
       | yourself? _Anything_ as a Service isn 't a service if you're
       | running it yourself. It's just ... infrastructure.
        
         | bomdo wrote:
         | Not nitpicky at all - this is an important distinction to
         | highlight for pointy-haired decision makers.
         | 
         | This product is undoubtedly the P in PaaS, but there is no
         | service behind it. If your company uses this as an alternative
         | to a real Heroku/AWS/xyz PaaS, you must have engineers at hand
         | for 24/7 ops, scaling servers and fixing bugs. In my opinion,
         | this is quite risky for anything running in production and
         | should not survive a cost-benefit analysis.
        
           | 1337shadow wrote:
           | > should not survive a cost-benefit analysis
           | 
           | I completely disagree, the difference of price between
           | dedicated servers and even EC2 instances is completely
           | amazing.
           | 
           | This is what you get for less than $200/month with a
           | dedicated server:
           | 
           | 1x AMD EPYC 7281 CPU - 16C/32T - 2.1 GHz, 2 x 1 To NVMe, 96
           | Go DDR4 ECC, unmetered 750 Mbps
           | 
           | In one of my companies the AWS bill is just completely
           | insane, we have like half that hardware, with a really small
           | bandwidth, which is metered, for more than $800/month, which
           | is fine while we're on free credits.
           | 
           | I love working for cloud companies, it's a lot of fun, but
           | when it comes to my money then I never go for anything but a
           | dedicated server.
        
             | zeveb wrote:
             | Yes, hardware as a service will always be much more
             | expensive than hardware you own. But it may be less
             | expensive than the team you will require to run that
             | hardware at an acceptable service level. It very likely
             | will be less expensive than the opportunity cost of running
             | your own hardware.
             | 
             | As an example of the latter bit, if you are running your
             | own hardware and need to add another host and you do not
             | have a spare lying around, then you need to order one. It
             | has to be shipped. Someone has to unpack it. Someone has to
             | make sure that the data centre has sufficient power.
             | Someone has to install it, its power and its network
             | cables. Each of these steps takes time, but also each step
             | is an opportunity for friction.
             | 
             | By contrast, with a service, you would just add a new host.
             | Five minutes later you are up and running. That gives you
             | an operational nimbleness that you wouldn't otherwise have
             | had.
        
               | parliament32 wrote:
               | I love how there's this myth that servers and services
               | just blow up every 10 minutes 24/7 and unless you have a
               | legion of ops personnel you're going to get hours of
               | downtime each year.
               | 
               | Servers, for the most part, just work. In DC climate-
               | controlled environments, hardware failures is
               | _exceedingly_ rare. Apart from harddrives, most hardware
               | will happily tick along for a decade, if not longer.
               | 
               | Sane production-grade OSes (read: not Ubuntu) will also
               | happily run for literal years with zero human
               | intervention. For obvious reasons, it's a bad idea to not
               | patch your systems, but things will continue to "just
               | work" pretty much forever unless you're running really
               | shitty code.
               | 
               | For renting vs buying servers, there's upsides and
               | downsides. Buying gear is far far cheaper if you plan to
               | be around for more than a year, but renting dedicated
               | servers gives you a lot more flexibility -- to provision
               | a new server, you hit a button in their online panel,
               | wait 15 minutes, then let your deployment strategy take
               | care of the rest.
               | 
               | I find it almost mind-boggling that AWS and friends have
               | convinced people that it's normal to spend ridiculous
               | amounts of money for fairly "meh" service specs in what's
               | essentially VMs.
        
               | mm89 wrote:
               | The points you make are fine but I think the experience
               | becomes more painful linearly with the number of servers
               | you manage, since you're N times more likely to see
               | something happen that takes down a server. It just
               | happens more frequently. At some point that becomes often
               | enough that you don't want to deal with it anymore.
        
               | parliament32 wrote:
               | I don't think you understand the sheer scale you need to
               | be experiencing a failure more often than once a month.
               | By my anecdotal experience you'd need at least 1k servers
               | for that to happen... and if your company is big enough
               | for $2MM capex for servers alone you can handle $100
               | remote hands and 30 minutes of engineer time.
               | 
               | Not to mention that at that scale you have plenty of
               | redundancy and, if your ops team knows what they're
               | doing, automagic failover / HA. Anything that happens can
               | easily "wait till Monday", no need for 24/7 anything.
        
               | pathseeker wrote:
               | If it's often enough to be noticeable, your scale is
               | large enough to pay someone to be ops full time.
        
               | sweeneyrod wrote:
               | Certainly hardly anyone should be physically managing
               | their servers. The relevant comparison is between getting
               | 1GB RAM in the form of a $50/month Heroku dyno and
               | getting it with a $2/month VPS (actually with Hetzner
               | that will get you 2GB, they don't go below 1GB).
        
               | ricardobeat wrote:
               | That example is not realistic. You rent dedicated servers
               | from a provider that will always have extra hardware at
               | hand, and handle all of those steps; you don't rent
               | hardware yourself and run it in your basement :)
        
               | zeveb wrote:
               | What you just described is a kind of hardware service!
        
               | vidarh wrote:
               | Or you rent managed servers or colo space from one of the
               | many hosting providers that also offers cloud services,
               | and pick and choose. That lets you migrate your base load
               | to colo or managed servers over time, while you still
               | have the nimbleness of being able to scale up and down
               | dynamically if you want or need to.
               | 
               | And my experience from providing devops services to
               | clients on a contract basis is that the clients who use
               | cloud services tends to need more, not less, devops
               | assistance.
        
             | raphaelj wrote:
             | All these things are relative.
             | 
             | When you got applications that don't require high
             | availability while needing a very low cost per CPU,
             | dedicated servers just make sense. We are running a cluster
             | of a few high-CPU dedicated servers for our data-science
             | team, and it just makes sense: we don't need 99.99%+
             | availability, and the servers we rent are cheaper than the
             | equivalent AWS storage cost alone ... The op cost of
             | managing these is exactly the same as managing equivalent
             | EC2 instances. We don't need backups either.
             | 
             | On the other side, we got some low-CPU web services that
             | require high availability, redundancy and reliable backups.
             | For these I just use Heroku. It's extremely reliable and
             | easy to operate, while only costing about $100/month (a few
             | hobby dynos + a fully managed PgSQL DB). Sure it's probably
             | 5x more expensive than a dedicated server with 10x the
             | performance, but I don't have to worry about backups,
             | availability and scalability. And these apps just don't
             | need this 10x faster CPUs anyway.
        
               | pathseeker wrote:
               | >web services that require high availability, redundancy
               | and reliable backups. For these I just use Heroku.
               | 
               | How do you handle Heroku outages then?
        
               | raphaelj wrote:
               | Heroku outrage free was 99.9999%+ over the past 60
               | days[1], I'd have a hard time achieving this with a
               | single dedicated server.
               | 
               | [1] https://status.heroku.com/
        
         | c17r wrote:
         | PaaSS - Platform as a Self Service
        
         | 1337shadow wrote:
         | Nope, you have IaaS (Infrastructure as a Service) like
         | OpenStack, and PaaS (Platform as a Service) like OpenShift,
         | KelProject, CapRover ...
         | 
         | The idea is that you ask OpenStack a VM and it will give it to
         | you, dealing with the lower level details for you.
         | 
         | PaaS means that you ask it to deploy a service and it will
         | deploy it for you, dealing with lower level details for you.
        
           | ghaff wrote:
           | Neither you nor the parent are wrong but I'd argue that you
           | don't really see IaaS or PaaS used all that much for on-prem
           | platforms these days. (And the definition of PaaS was always
           | a bit fuzzy--something like an abstraction that is in between
           | IaaS and SaaS.
           | 
           | You're probably more likely to see OpenStack called a private
           | cloud or on-prem cloud than "IaaS" these days. And OpenShift
           | is usually called a Container Platform rather than a PaaS.
        
             | 1337shadow wrote:
             | The definitions have always been pretty clear to me, but
             | all right then, thanks for the heads up, I guess CapRover
             | people and I are also what we call "old school devops"
             | these days.
             | 
             | "Container platform" seems pretty vague to me, PaaS means
             | something I know right away.
             | 
             | I mean, k8s is a container platform too isn't it ? But
             | you'll need to build what we called a PaaS on top of it
             | yourself (or use something like Kelproject, OpenShift ...)
        
               | ghaff wrote:
               | Yeah, the terminology isn't always super-clear. Yes, k8s
               | is a container platform. OpenShift, depending upon how
               | you use it, can span a range from being an integrated k8s
               | distribution to something a lot more like what was
               | commonly called a PaaS with developer tools, CI/CD
               | pipeline, registry, etc.
               | 
               | PaaS isn't a verboten term or anything like that. But it
               | turns some people off because it was most associated with
               | services/products/projects that mostly focused on a
               | simplified developer experience at the cost of
               | flexibility.
        
               | 1337shadow wrote:
               | Well, for me PaaS is a software built uppon bricks like
               | an image registry (also present in IaaS), authentication
               | registry (also present in IaaS), developers tools ie. to
               | log into a system (also present in IaaS). But, with the
               | IaaS you get an infrastructure of bare virtual systems,
               | emulating a physical world, and with PaaS you get
               | deployments of code. A PaaS works on a IaaS, but can also
               | run on baremetal, it doesn't matter for the PaaS in
               | general. With PaaS, you don't need to define bare system
               | provisioning, PaaS does it for you, many IaaS teams ended
               | up implementing their own PaaS one way or another, back
               | in the days you are refering to I guess.
               | 
               | k8s for me is a framework, OpenShit, Rancher, KelProject
               | would be "distributions" of k8s, just like Linux kernel
               | and distributions including it.
               | 
               | As a person who writes technical requirements and
               | implementation document, it strikes to me when I'm asked
               | to document implementation of a "SaaS" that there will be
               | paid accounts and billing.
               | 
               | Maybe CapRover will provide paid accounts on managed
               | servers in which case they would be creating a SaaS with
               | their PaaS solution.
               | 
               | But again I'm not talking from a "managerial" perspective
               | of the definitions, rather from a technical one. I
               | suppose at this stage CapRover is trying to attract
               | technical users rather than managerial ones (unless they
               | have something to sell for cash but I didn't see it on
               | their site or just missed it)
        
         | ashnehete wrote:
         | I was just thinking the same thing - maybe we can call it self-
         | hosted PaaS.
        
         | baq wrote:
         | maybe you want to decouple sysadmins from devops? sufficiently
         | large orgs with sufficiently large on-prem infra have these
         | kinds of problems.
        
         | jordanbeiber wrote:
         | "Service" to me is just "delivery of something with a specific
         | scope and a defined contract", not so much about who delivers
         | said "service".
         | 
         | Many IT depts would do themselves a massive favor to deliver
         | actual services instead of "just infra and some stuff thrown on
         | top" and call it service delivery.
         | 
         | Tools like in this link can help, but a big part is simply
         | about automation and delegation/self provisioning.
        
           | dubcanada wrote:
           | You can't just decide that words mean different things to
           | "you".
           | 
           | Platform as a Service or anything "as a Service" means
           | someone else provides it as a service (ie subscription). The
           | Platform part is all this is offering. So it is not a
           | Platform as a Service.
        
             | jordanbeiber wrote:
             | Yes, "someone else" - be it delivered internally from one
             | team to others or b2b.
             | 
             | It is not necessarily hard tied to a business model, but of
             | course I understand that this is the common usage.
             | 
             | It's really about abstractions and consumability.
             | 
             | This is my interpretation of the NIST meaning of aaS.
        
         | cbetti wrote:
         | The distinction you are drawing sounds to me like the
         | difference between "managed" and "unmanaged."
         | 
         | My read on whether something is a service or not is, can I make
         | a request of the thing in simple terms, and have the thing
         | carry out all the messy details on my behalf?
        
         | idoby wrote:
         | I just read it as short for "cloud infra project with controls
         | modeled after popular PaaS products"
        
         | vincent_s wrote:
         | Yeah, it's more like a PaaS alternative
        
       | fullito wrote:
       | I can recommend in getting in k8s with something like microk8s
       | from ubuntu:
       | 
       | You will learn k8s and you will get the same thing as they do but
       | with open components, industry standards and a whole industry
       | moving in this direction.
       | 
       | I have already microk8s running at home with argocd. I have never
       | had IaC that quick and that simple setup.
       | 
       | With traefik you can have your domains as well. Then just go to
       | gitlab (or now to github, haven't checked out yet if i wanna
       | migrate back) and register your microk8s cluster as a
       | buildrunner.
       | 
       | Thats it you are set. Quite future proof setup, modern, stable,
       | easy to use.
        
         | MrCheese wrote:
         | How does the deployment process differ from CapRover/Dokku?
         | 
         | Deploying a simple app with a database with Dokku is something
         | like: 1. Run command to create a database of your
         | choice(Postgres, MySQL, Redis etc) 2. Run command to create
         | application 3. Run command to link the database to the
         | application 4. Push to the Dokku repo to deploy the
         | application.
        
           | battery423 wrote:
           | Both can solve the same issue and both are similiar as they
           | orchestrate your platform.
           | 
           | Kubernetes is just the future, used by much more people and
           | you have the additional benefit of learning kubernetes which
           | might help you in your job/day to day business etc.
           | 
           | If you are already thinking of operating CapRover/Dokku, i
           | would strongly considering using kubernetes instead.
        
           | zerubeus wrote:
           | Don't bother k8s is like the lvl of the dragon in front of
           | something like dokku, If you don't really look for auto
           | scaling, or you are running a business alone, don't go for
           | k8s
        
       | hardwaresofton wrote:
       | Another great alternative in this space is dokku[0]. Haven't
       | tried CapRover recently but it looks fantastic.
       | 
       | [0]: https://github.com/dokku/dokku
        
         | Longwelwind wrote:
         | I've been using Dokku for a side-project, and it's a really
         | nice tool! My only gripe with it is that it's not easy to
         | deploy an existing docker image. You have to pull it, then
         | transmit it over ssh with "docker save" and "docker load".[1]
         | 
         | Migrating the docker image building from the dokku server to a
         | CI would be easier to do without this. On top of that,
         | deploying an existing software into your machine would be
         | easier.
         | 
         | [1]
         | http://dokku.viewdocs.io/dokku/deployment/methods/images/#de...
        
           | xu6ahb8E wrote:
           | dokku is also meant to build a custom image on deploy :
           | rather than using heroku's buildpacks, you can put a
           | Dockerfile at the root of your project and it will be used
           | instead.
           | 
           | So basically, you could put a Dockerfile file container just
           | FROM and MAINTAINER, referring the image you want to use in
           | the FROM, and dokku will download and execute it on `git
           | push` (provided it can access to the image repository).
        
         | viraptor wrote:
         | I've recently learned about exoframe as well, but haven't tried
         | it yet. https://github.com/exoframejs/exoframe
        
         | chasd00 wrote:
         | i used dokku a couple years ago for a side project. It worked
         | really well ( especially the newer versions ). It was super
         | nice when the letsencrypt plugin came out, SSL support with
         | trusted CA signed certs built right in!
        
       | explodingcamera wrote:
       | Does Caprover support multiple "ingresses"? In that I can have an
       | external load balancer balancing between my clusters servers? I
       | can't seem to find any info on that in their docs.
        
         | mromanuk wrote:
         | Should be possible it uses Docker Swarm, which can handle
         | multiple ingress. https://docs.docker.com/engine/swarm/ingress/
         | 
         | You can expose some ports on different nodes and point your
         | external LB (for ex. cloudflare)
        
       | wilsonfiifi wrote:
       | Caprover is a great tool to have in one's kit but coming from
       | Dokku [0] i think it lacks a certain flexibility when deploying
       | applications with worker processes. You can get around this by
       | creating multiple "captain-definition" files in your project but
       | i prefer Dokku's adherence to Heroku's "Procfile" approach.
       | However Caprover's web admin/dashboard and docker swarm features
       | are a nice touch.                 [0]
       | https://github.com/dokku/dokku
        
       | sandGorgon wrote:
       | this makes me so happy - to see a PAAS on Docker Swarm!
       | 
       | However, I wish the caprover had built this experience on top of
       | kubernetes (or k3s) instead of Swarm. The future of Swarm is
       | really unknown and the ecosystem is undoubtedly behind k8s.
        
         | mromanuk wrote:
         | but swarm is much more simpler, I'm concerned about future too.
        
       | Aeolun wrote:
       | Since someone was happy with this before, I'd like to recommend
       | https://github.com/exoframejs/exoframe again for a more console
       | oriented way of doing this same thing.
        
       | risyachka wrote:
       | Can I deploy apps on different machines with this? E.g. can I run
       | my app on 3 servers with a load balancer?
        
         | mromanuk wrote:
         | Yes, that is easy and work right out of the box. You should
         | deploy it with 3 nodes and lat the manager work as the LB (is a
         | single point of failure, though). A more complex solution would
         | be deploying it with an external LB EDIT: Rephrased
        
       | chris_st wrote:
       | I'd be interested to know how people who use this kind of thing
       | (or Dokku, etc.) keep their OS, database, applications, etc. up
       | to date, for security reasons if nothing else.
        
         | progx wrote:
         | You update your image, stop the container, start the container
         | (with the new image). That's all.
         | 
         | You can create complex containers that could update with
         | security fixes without restarting. But it is easier to update
         | an image e.g. once per week/day and auto restart the
         | containers.
        
           | chris_st wrote:
           | Cool, thanks for the info!
           | 
           | I wonder about the underlying instance's OS, though... in the
           | past, for home servers, I've set up cron jobs to get OS
           | updates and reboot, but that seems wrong for a web server I'd
           | like to be always up.
           | 
           | Maybe create a new instance, update the OS, install the app,
           | switchover? Is there automation for this kind of thing?
        
           | mikepurvis wrote:
           | I've been using portainer for managing a handful of basic
           | containers on my home server (zoneminder, deluge, jellyfin,
           | unifi controller). Overall I really like it, but some kind of
           | feature to do this is probably the #1 thing I'm missing. It
           | even lets you launch "stacks" from a compose file in a git
           | repo, but doesn't have any facility to remember that info or
           | do a redeploy, so you're basically starting from scratch
           | every time:
           | 
           | https://github.com/portainer/portainer/issues/1753
        
       | unixhero wrote:
       | Looks like an open, free, very very early re-implementation of a
       | solution such as Cloudron.io .
       | 
       | Very cool!
        
       | ev0xmusic wrote:
       | Give a try to Qovery (qovery.com) for a very simple Container as
       | a Service platform for developers
        
       | shuringai wrote:
       | how is this any different than setting up grapahana, nginx-proxy
       | with letsencrypt companion etc with docker-compose and just
       | replace my app image?
        
       | lessname wrote:
       | I wonder what happens if something (like mysql) crashes for some
       | reason or something like that happens, would something like that
       | be easier to handle?
        
         | julianwachholz wrote:
         | it will restart the container if the docker healthchecks fail
        
       | ryanmarsh wrote:
       | A friend often tells me "you're only ever one CloudFormation
       | template away from your ideal PaaS".
        
       | danr4 wrote:
       | I'm using CapRover on a personal server of mine and it's pretty
       | awesome. I use it for side projects and tinkering and tooling
       | (analytics, bitwarden). it's very stable with lots of "one click
       | app deploys" of popular open source software.
       | 
       | Combined with portainer (which u can install with caprover) I'm
       | improving my docker knowledge. I'd recommend it for someone
       | starting out with containers and "home labs".
        
       | pinfisher wrote:
       | Is there anything like this for non web based applications?
       | Looking for hosting for some Python apps pre-procssing data
       | before delivery to clients.
        
         | mromanuk wrote:
         | Caprover can run non-web too, from databases to apps
        
         | rcarmo wrote:
         | Have a look at piku (https://github.com/piku). I built it
         | especially for that kind of thing.
        
         | julianwachholz wrote:
         | The web-app integration is completely optional and you can
         | disable it for each app individually.
         | 
         | E.g. your database can be an app that doesn't have any web
         | frontend.
        
         | dabeeeenster wrote:
         | You could probably use something like this or dokku? They don't
         | only host web based apps.
        
       | [deleted]
        
       | dan_can_code wrote:
       | This tool looks really cool. The section where it listed reasons
       | for using it really struck a chord with me. I am not the most
       | comfortable using all the Linux tools when it comes to setting up
       | servers / system administration. This product looks to be a
       | really good bridge between devs who dev primarily, and those with
       | skills in deployment. Super cool. Thanks for sharing, I will be
       | using this!
        
         | esquire_900 wrote:
         | Isn't that a setup waiting for disaster to happen? Everything
         | is happily running up to a serious production problem, at which
         | point you miss the experience to debug and fix it.
        
           | dan_can_code wrote:
           | Then I will have to learn then. I feel most productive and
           | comfortable working on a hobby project if I don't need to
           | spend all of my time dotting the i's and crossing the t's
           | with cli and configuration files. I just want to build. I
           | don't see the value investing my time learning the ins and
           | outs of tooling that I will use maybe a few times when it
           | makes minimal impact, as it comes with an opportunity cost
           | for me elsewhere. That's just me though, I have no gripes
           | with people who love to tinker with their set ups. It just
           | isn't my thing.
        
             | esquire_900 wrote:
             | And that's the problem; by then it's too late (i.e. never
             | took the time to backup the db). It's about finding the
             | balance, writing a PHP app shouldn't involve studying C
             | compilers and CPU design. But I think these tools
             | (whichever you decide to use) are such an essential part of
             | what you're building that "outsourcing" them as much as
             | possible might be a bit ignorant.
             | 
             | That being said, as long as it works, it works. And if your
             | app is small enough never to get into the grey waters, all
             | the better.
        
               | dan_can_code wrote:
               | I absolutely agree, were it something commercial these
               | things would need to be considered.
               | 
               | Are there any tools you recommend looking into, were I to
               | take the next step? I don't plan on depending on CapRover
               | to fill gaps in my knowledge for too long, but for now
               | this product really is a good start for me.
        
               | esquire_900 wrote:
               | No problem in depending on CapRover, as long as you are
               | at least somewhat familiar with the tools it sets up for
               | you. Combine that with some crude generic UNIX skills
               | (quickly analyze cpu/ram/disk usage, search in logs,
               | transfer files, modify configs etc.) and you're way
               | better prepared.
               | 
               | Ironically it's best learned "on the job" (for me at
               | least); just try to deploy your app from scratch. Play
               | around with nginx/apache, letsencrypt, your db stack,
               | packages installation etc. and get a working product.
               | 
               | I'm no expert by far in any of this, but think that
               | knowing "just enough" about these tools really helped
               | along the way. Up to the point where I can now use
               | CapRover like tools with some degree of confidence,
               | closing the full circle ;)
        
           | JackFr wrote:
           | Well, I wouldn't say I miss it ....
        
           | Nextgrid wrote:
           | There's also the issue of security. How do you know there's
           | not a big security hole and it's just a matter of time before
           | your data gets stolen or your server becomes part of a botnet
           | or starts serving illegal content?
           | 
           | The same thing applies with these turnkey admin panels like
           | cPanel or Plesk and which is why I don't recommend getting
           | anywhere near those.
        
             | [deleted]
        
       | [deleted]
        
       | jaggs wrote:
       | I can see exactly why this exists. It won't suit hard core roll
       | your own developers - any more than WordPress theme generators
       | suit DIY web developers - but for those who may be light on
       | skills and time, this could be a superb way to get an MVP going
       | really quickly and easily. Very nice tool to fill a gap.
        
       | appleflaxen wrote:
       | this is a bit like sandstorm.io, which is also an open source
       | platform for web applications. I've used it for a couple of
       | years, and love it. It's cool to see other people exploring the
       | same software space.
        
       | 97-109-107 wrote:
       | Quick tip on messaging on the homepage - replace _a developer
       | who..._ with the feature highlighted (ie simplicity, batteries
       | included, etc)
        
       | julianwachholz wrote:
       | I have been using CapRover for about half a year now on my
       | personal server running multiple projects. It does what you'd
       | expect and the configuration format is pretty easy to use, using
       | any docker image directly works without any extra steps, just
       | enter the image name and it'll do the rest. I'm pretty happy with
       | it and will probably stay with it for the time being.
       | 
       | It's not the best for hosting many static pages, as you'll need a
       | HTTP server for each site anyway.
       | 
       | But my main gripe is that there is only single factor
       | authentication and you can't easily secure it more other than
       | using a strong password and a hidden subdomain. (because of
       | webhooks, acme, etc. I guess)
        
         | liotier wrote:
         | How does it handle upgrades ?
        
           | mromanuk wrote:
           | for me it was seamlessly and I needed to jump a few minor
           | versions.
        
         | sneak wrote:
         | Single factor is more than fine in the case where you know the
         | admin (yourself) is going to use a 30 char random password and
         | use a password manager that won't autofill it on phishing
         | domains.
        
         | 867-5309 wrote:
         | > you'll need a HTTP server for each site
         | 
         | isn't that what virtualhosts are for?
        
           | znpy wrote:
           | he's still in the early 90s
        
         | babaganoosh89 wrote:
         | If you have a vpn, you can edit the nginx config for the admin
         | panel and make it only accept connections from your vpn ip
         | address.
        
       | yig wrote:
       | What does PaaS stand for? The website doesn't say. Platform?
       | Product?
        
         | chasd00 wrote:
         | Platform as a service. It's like a step up in abstraction from
         | IAS, infrastructure as a service. The lines begin to blur near
         | the edges though, it's a marketing thing really. Just like
         | "cloud" means many different things to many different people
         | but it's a simple one syllable word perfect for brochures.
        
         | [deleted]
        
         | [deleted]
        
       ___________________________________________________________________
       (page generated 2020-06-09 23:00 UTC)