Ask HN: Do you pay someone to install self-hosted apps?

6 points by xsoul ↗ HN
Last week I set up a self-hosted private analytics app following the project's Github readme, it took me more than 2 hours to get it working properly. I'm not really into devops. I thought it took too long, and maybe I could have hired someone to do it for me.

Do you set up all of your self-hosted apps? Do you know if there's a place to hire people to set things up for you? Would you pay for somebody to do that? Is there any security concern?

15 comments

[ 4.4 ms ] story [ 46.2 ms ] thread
I am actually building a self-hosted application and this is a really big question/problem. In a perfect world, you could go to any hosting platform and with one click you should be able to install any software you want (as you do on mobile with apps).

I am trying to find a solution for this, but so far most of my clients have at least some technical knowledge, the rest are a bit afraid, as you mentioned, to waste too much time on trying to install something.

I also talked to some folks at DigitalOcean to ask on an easier way for a developer to install the software for the clients, on the clients own DO account. Unforunately all the solutions they provided were either really complicated or involved access to the clients account, thus imposing a high security risk. I told them it would be really cool if I could send a link to the client that automatically create the server with all the configuration needed, without them having to press any other buttons or run any commands.

Slightly off-topic: What self-hosted analytics app did you install? You could also check out the one I built[0], I focused a lot on making installation as easy as possible.

[0]: https://www.usertrack.net

Hi, I have built a platform that performs all the deployment related tasks from provisioning the server, to configuring the basic firewall, installing the DB etc.

Would love to learn about your challenges and see if our platform can solve your deployment related issues. email: hello at deploybob dot com

My main problem is that the clients themselves should be able to self-host their product, without my intervention, and without them having any technical knowledge.

I am now doing this by teaching the clients how to use DigitalOcean + cloud-init to create a new server that automatically installs the software required: https://docs.usertrack.net/dedicated-usertrack-server

In a perfect world, all those steps mentioned in the link above (create droplet, copy userTrack cloud-init code, add domain, generate certificate) would be done through a single button click by the client, on any hosting platform they would chose.

All the steps listed on the url you shared can be automated and the platform can already do this. However, there are two issues: 1) Automated service is only available for DigitalOcean (DO) right now, so your client will have to choose DO as their infra provider. 2) DO does not offer granular OAuth permissions. In order to provision the droplet and modify the DNS records in the DO panel, the client has to authorize 'write' access. We do not persist the oauth token but for clients who are using their DO account for other purposes it can be a deal breaker.

Also, is it possible for your app 'usertrack' to read the license key from the environment variable?

Let me know if you would like to test this out. The service is in private beta at the moment.

-- The client will have to use the DO oauth to login, provide their ssh public key and the domain name. Everything else will be take care of by the app. It takes roughly 8-12 minutes to complete the deployment.

I talked to people at DO, and there seems to be no current way to fully automate this process, because, as you said, the client needs to give access to create a droplet on his account.

From what they said, the only way to do that is if they create a DigitalOcean account, go to their settings and create an API token that they can share with me.

It would have been awesome if it was possible for me to send them a link with all the details needed (marketplace image to be used, cloud-init script, etc.), and when they click that link they get sent to a DO registration page, when they create the DO account they would also instantly have that droplet created for them.

As I mentioned before, I already provide a semi-automate way to deploy using cloud-init, the main drawback is that the user still has to manually copy that cloud-init script, which is not too complicated, but it's an extra step.

> provide their ssh public key A non-techincal unforunately user has no idea what a SSH key is. Does it also work with password login?

About your service, I don't understand exactly what it provides and how it would help with my use-case. I checked out your site ( https://deploybob.com/ ), but it doesn't say much.

All the features listed seem to be the same as the DO droplet creation using a marketplace image or cloud-init.

I've asked about installing server apps for non-technical users before on Hacker News - each time hoping there might be some progress on this problem, but unfortunately not.

There are solutions like Bitnami which provide one-click installs for popular apps like WordPress. As you've found out, for a VPS you still need to set-up the VPS first before you can do the 'one-click' install (so not really a 'one-click' solution after all).

The choice of server language also affects the ease of deployment. PHP is the easiest among dynamic languages. For some hosting providers, installation of a server app can be as "simple" as uploading scripts to a folder on a server (for example, using a secure FTP client).

Imagine if installing a web server app was as easy as installing a desktop app. It would unlock countless opportunities for developers. My impression is that developers think it's a non-issue or have simply never thought about it.

If I wanted to be really cynical, I might even suggest that some developers prefer things remain complicated because it makes SaaS solutions much more attractive to customers when the self-hosted alternative is so much more complicated. Unfair?

Some previous Ask HNs:

How do you handle server install of a web app for customers?

https://news.ycombinator.com/item?id=13514025

Let customers self-install your server product. Why it so difficult?

https://news.ycombinator.com/item?id=14781420

I think it's a bit more complicated because we want to be able to install any app on any hosting. This means that there should be a common one-click-app ecosystem agreed upon by all hosting providers.

Currently each one has its own marketplace (DigitalOcean marketplace, AWS marketplace, etc). A partial solution could be containers, such as Docker, but there still has to be a way to purchase a docker image/container and publish it on any server (currently the Docker container is only public, which makes it harder to deploy private apps).

I think the solution would be to decide on an OS (Ubuntu probably) and create a public container image that could be provided by all hosting provider, which installs:

1) The OS 2) A web-app with a GUI that contains a (public) marketplace and the user can then browse through all the apps on the marketplace and install them in one click on that specific machine.

So, you would go to, let's say, DigitalOcean, you select "New App Server", it provisions a new Ubuntu machine and then you can access the machine in the browser machine-1.myuser.do.com where you see a list of applications that can be installed (which are not DigitalOcean specific, but from a public repository).

> I might even suggest that some developers prefer things remain complicated

I think this is true in many cases, I've seen a lot of "free software" that you can host yourself, but it is way too complicated to set it up yourself, so you end up using their SaaS. I am trying to find better ways to make my application easier to host, but I keep stumpling upon different problems.

If you're using a bare droplet or packaged container they offer, couldn't you just just set up an ansible script? Although, I might be over simplifying your uses.
Don't forget that most Unix-like operating systems and Linux distributions use package managers, typically one installs the package then configures some number of config files to get the thing up and running. Some are working right after the install. The problem with packaging web applications is that most don't take into consideration things like File System Hierarchies and are very difficult to package. If you have any sort of application and want it to be easy to install, make it easy to package (even closed source apps can benefit.) or package it yourself.

Anytime I have to install some software (AWS' agents such as inspector and cloudwatch are particularly bad about this) and I have to extract some tarball or curl into `sh` I cringe. RPM/Apt/etc is right there, ready for you to use! Signature verification, config file handling, etc!

I was both paying and getting paid to install self-hosted apps. Some of them at best are time consuming to install. Also you might run into compatibility issues of all kinds
did you check if it had a docker install? there are lots of self-hosted apps you can just install with containers.