
Ask HN: How do you handle server install of a web app for customers? - open-source-ux
If you provide a web app to customers that they can host themselves, how do you ensure they can easily install your app on a server? (By server, I&#x27;m referring to either an internal company server, or a server provided by a hosting provider, including shared hosting options.)<p>Have you managed to make the deployment process easy enough that your users can install the app by themselves?<p>Or do you handle the server installation on behalf of your customers?<p>I&#x27;m particularly interested in your experience of letting users install a web app by themselves. Do you have to provide copious amounts of documentation?<p>My impression is that server installation is needlessly complicated. It&#x27;s no wonder SaaS solutions are so popular.<p>I&#x27;m learning Python at the moment, but PHP seems to be the only language where installation (even on shared hosting plans) is as simple as uploading files to a folder and that&#x27;s it.<p>Is it possible for web apps written in other languages to be installed as simply as this? PHP&#x27;s huge advantage is that you can shop around for hosting from hundreds of hosting providers. For a customer, that equals lots of choice in where to install your app if you don&#x27;t have your own server.<p>I&#x27;m aware of sandstorm.io, but it&#x27;s more of a hub or container for other apps, and installation is not something an end-user could do.<p>If you&#x27;re a developer who doesn&#x27;t want to provide a SaaS service (or wants to provide a self-hosting solution in addition to a SaaS one), a simple installation process for your customers should be a big win. But the needlessly complicated process of server install makes this difficult to impossible.<p>Thoughts?
======
brudgers
Containers and virtual machines are common ways to address the deployment of
software _environments_ at the _systems_ level by providing a standard
interface. These have the advantage of being language agnostic (particularly
for products that are written using heterogeneous languages). Another
advantage is that container and virtual machine technologies are largely
commoditized, relatively inexpensive, and have somewhat standardized
interfaces across implementations.

Another way to handle it is to ship the software already installed on hardware
provided by the vendor: call this 'The Appliance Strategy'. In this case it's
all provided as a black box. Network hardware such as routers and switches are
examples of software commonly distributed as an appliance.

Good luck.

------
simplehuman
[https://cloudron.io](https://cloudron.io) ?

------
paktek123
Depends how you want to distribute it. You can provide the web application via
a package manager (apt, yum, pip etc). If its infrastructure related maybe
provide a puppet, chef or ansible module. Documentation is always good as
complementary to the above. Hope this helps.

~~~
open-source-ux
Thanks for the suggestions. I was thinking of options for less technical users
e.g. here is a zip file and install script. Upload these to a folder on your
web server and then open this URL in your browser (e.g. /install.html or
/install.php) to start the installation. Even this would probably be too
complicated for some users.

Are such types of installs simply unrealistic for many languages? Or, rather
is it unrealistic to expect non-technical users to install web apps even if
step-by-step instructions are provided?

~~~
paktek123
I'd say depends on what operating system is being targeted. If its windows
then creating an installer will be good enough. On Linux using package
managers is the norm. It doesn't matter about the language as such, python is
only preferable simply because it is widely available on Linux (although
that's changing now).

I'd personally never trust a zip file from the internet that tries to install
something with /install.html or /install.php unless I know its from a trusted
source.

