Context: I maintain a fairly straightforward piece of forum software. It was originally only intended to host the little community I wrote it for, but over the years it’s become more mature and folks have asked about running their own instances for other purposes. It’s always a bit of an awkward situation because it has to start with “well, how familiar are you with server provisioning?”, and the answer is usually “not at all”. It’s not complicated software by professional standards, but the way I’ve hosted it was to rent out some VPSs, install a DB, nginx, uwsgi, and point these things to each other, install the tools for the build pipeline manually, and have a shell script that can rebuild and bounce servers. And there’s a bunch of small but important details that have nothing to do with the application around setting up iptables and directory perms and which user each process runs as and so on and so forth. If you’ve done this before it probably takes 30 minutes, but generally people asking haven’t and I can’t realistically expect them to figure it out having probably never used SSH before. Given that I’d love to hear what folks to do make their self-hostable software user friendly for hosting. The holy grail in my mind would have the following:
Host agnostic (e.g. takes in hosts and SSH keys and provisions as necessary, or at least lets users choose between a few “cloud providers”) Dependency free, that is someone can provision an instance with installing any special tooling on their machine (a web interface would probably be ideal, but something that runs with bash/python/other things you can reasonable expect to already be on a desktop linux/OSX machine would be pretty good) Allow a reasonable level of guided customization before/during provisioning (in my case I’d like to create a superuser, misc site policies, and set up subforums during the setup process. Almost everything I’ve ever hosted has had a “go edit some config file somewhere” step and that’s a pretty big ask for someone who doesn’t look at config files often/ever) Provides the same basic programming metaphor as a dedicated server/VPS hosting, e.g. a filesystem, processes that can live beyond the request/response cycle Allows provisioning/coordinating multiple servers in one shot
What do you do to help people who aren’t highly technical self-host your software?
More like this (3)
Automating Rails Server Provisioning and Deployment with Ansible and Capistrano
Proxyjump, The SSH Option You Probably Never Heard of — Even if you have, this is...Proxyjump, The SSH Option You Probably Never Heard of — Even if you have, this is a nice, little primer.