ref: a3ba218efef2773e5826b94d9ca3c096795b3ddc negativefour/docs/initial-spec.md -rw-r--r-- 2.0 KiB
a3ba218eZeke Medley Fix race condition between apache restart and status check 8 months ago

#Static site hosting for hidden services and the clearnet

Hosting a tor hidden service is not terribly challenging. Given a running web server it can be done programatically as well using Stem.

I suspect then that the most challenging parts of a project like this will be:

  1. Clearnet websites will need to be served over HTTPS. This will require that we automatically configure SSL certs for all of the webpages that we serve.
  2. There will be a bunch of configuration nonsense that will need to happen automatically. As we saw with rsyslog with the discord notifier that is not always the easiest process.

I would like to break the process of creating this up into phases which I will outline in this document.

#Phase 1.

Goal: Noah and my websites should be hosted on the service.


  • Point system towards git repo and clone / place it in filesystem.
  • name.negativefour.com points towards hosted website.
  • A .union address is created.

#Phase 2.

Goal: Noah and my websites can be configured via a web interface.


  • negativefour.com has a website on it.
  • Accounts can be created and logged into.
  • Users can point to a git repo and it will be deployed.
  • Users can specify what branch to use for deploys.
  • Users can trigger manual deploys.

#Phase 3.

Goal: Automatic deploys on commits.


  • GitHub and Sourcehut projects deploy automatically on commits to the main / master branch.
  • This deployment is configured automatically via some oauth2 system.

#Phase 4.

Goal: Custom domains, SSL, and Union Location.


  • Users can use their own domains.
  • All webpages are served over https.
  • Union Location is enabled.

#Phase 5.

Goal: Scalability. This will be hard and awesome.

  • Webpages can be hosted across multiple machines in multiple locations.

#Phase 6.

Goal: Public beta.

  • File size limits are enforced.
  • Users can make $2 a month payments for service.

#Phase 7

Goal: Public release.

  • Payment becomes non-optional