Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make it as simple as humanly possible for non-technical people to launch a Pursuance server #222

Open
elimisteve opened this issue Jul 9, 2018 · 4 comments

Comments

@elimisteve
Copy link
Contributor

elimisteve commented Jul 9, 2018

Approaches

  1. Do what Perkeep does here, but for clouds that aren't Google-controlled: https://perkeep.org/launch/

  2. Convince DigitalOcean to create a One-click Install server image for Pursuance

  3. Let users paste in a DO API key, then use it to spin up an instance for people

  4. Work on Cloudron?

    • I hear their apps run in Docker containers, so maybe this could work?

Other Notes

  1. DNS is generally a problem, particularly enabling users to easily host a Pursuance instance using their own domain

    • Maybe users could paste in API keys for their registrar, which we use once for setup then throw away?
    • One solution is: give each user their own subdomain (which they could name?)
      • E.g., noisebridge.pursuancecommunity.org
  2. Especially in light of the DNS issue just mentioned, if a semi-technical person needs to be involved anyway, perhaps the planned easy-to-run container-based deployment flow is good enough (see Consider using Ansible + rkt + systemd for deployments #86)?

    • Seems like we should be able to do better...
@elimisteve
Copy link
Contributor Author

elimisteve commented Jul 9, 2018

Packaging a Cloudron app indeed looks easy, though they may assume a single-process backend: https://cloudron.io/developer/packaging/

If that becomes an issue, we could create one Dockerfile that spins up the Go binary, PostgREST, and maybe Postgres using a technique such as https://docs.docker.com/config/containers/multi-service_container/ .

@elimisteve
Copy link
Contributor Author

elimisteve commented Jul 27, 2018

Cloudron has addons, including Postgres 9.5.5: https://cloudron.io/developer/addons/#postgresql

We could ship a very small Pursuance Cloudron app that includes a PostgREST binary that somehow optionally gets its Postgres connection info from the Cloudron-provided environment variables (e.g., POSTGRESQL_URL), a Go binary (called pursuance), and a folder of static assets (namely the JS and CSS bundles, and a few images).

EDIT: This actually fits really well with what we may end up doing with our default, perhaps containerized server installation, where Postgres sits outside of a container but the Go and PostgREST binaries don't.

@elimisteve
Copy link
Contributor Author

elimisteve commented Aug 29, 2018

Scaleway lets users paste in cloudinit JSON. Maybe we can create a cloudinit config that spins up a Pursuance instance???

cloudinit lets one create arbitrary files (see https://cloudinit.readthedocs.io/en/latest/topics/examples.html#writing-out-arbitrary-files ) which we can perhaps have run on boot?

EDIT: Can also run chef or puppet ~recipes: https://cloudinit.readthedocs.io/en/latest/topics/examples.html#install-and-run-chef-recipes

@elimisteve
Copy link
Contributor Author

elimisteve commented Aug 30, 2018

Finally found a great solution! If we pay Scaleway ~$3/month then we can join their "developer program", which lets us push custom machine images to their ImageHub that Scaleway customers can then launch using

https://www.scaleway.com/developer/

https://www.scaleway.com/imagehub/

https://github.com/scaleway/docker-machine-driver-scaleway

https://github.com/machine-drivers/?utf8=%E2%9C%93&q=docker-machine-driver-&type=&language=

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant