I made a new logo, I like it a lot. It's simpler.

I have basically all of the features for the next update with fully automatic TLS certs using a built in acme client.

The main thing stopping me from releasing it is I need to write some comprehensive tests, there are a lot of configuration options now; old modes I kept as I made new features. So far I have usually just tested it "in prod" on my own home setup, but this time I rewrote some important parts of the code.

View full feed

daemon

a web server system made of separate processes focused on a reverse proxy server that is configured automatically over RPC (or one line of config for pre-existing servers). It also has a launcher program that can run your (go) servers in a minimal chroot under a separated user.

It's especially good if you want to write go servers and share one URL between them easily with automatic TLS support.

Features

  • 🔀 Run many backend web servers and securely share a single TLS protected domain name (via reverse proxy)
  • 🧑‍💻 Read the logs of each server streaming real time to the dashboard which also lets you reload the config file and restart servers
  • 🔛 Launch backend servers isolated in a minimal chroot as unprivileged users, configured in a simple textproto file
  • 🤖 Backends automatically register their paths on the domain via gRPC (there's also support for servers that can't send the RPCs) and receive a port assignment and get their TLS certificate signed by the portal Certificate Authority
  • 📚 There's a client library to do all this in one function call, and a tools library full of helpful functions for writing a go webserver
  • 👾 Install as one binary that runs each server, or as individual binaries

Quick Start

Make sure you have go installed then

  1. Install it with go install ask.systems/daemon@latest
    • This will leave the binary at ~/go/bin/daemon by default
    • I like to configure my $GOPATH/bin to be in my $PATH
  2. Run daemon spawn (or use ~/go/bin/daemon if it isn't in your $PATH)
    • This will run spawn which will print logs and write an example config.pbtxt in the current directory
    • It will run portal and the dashboard, prompt for a dashboard login password, and then print the address of the dashboard at the end.
    • Note: since this doesn't include getting an officially recognized TLS certificate, portal will generate a new self-signed certificate which you will have to accept warnings about in your browser.

You can then edit the config file which has comments about how it works. You can add an instance of host to try out hosting a static website (there's an example in the file commented out).

More Info

Check out the Github README this page is a cropped version of it.

The go documentation has more info about the tools library and client API if you want to make your own go servers that automatically register with the reverse proxy.