tipidee
Software
skarnet.org

A tipidee quickstart guide

Preparation

  1. Make sure you have s6 and s6-networking installed alongside tipidee.
  2. Prepare your document root for every virtual domain you aim to serve. For instance, if your documents are in /home/www/docs and you need to serve the example.com and example.org domains, create /home/www/docs/example.com and /home/www/docs/example.org directories, they will be the document roots for the example.com and example.org virtual sites respectively.
  3. Symlink these canonical directories to all the host:port combinations you want them to be available on. If you want example.com and example.org to be both available on ports 80 and 443, then symlink example.com to example.com:80 and example.com:443 in the /home/www/docs directory, and do the same with example.org.
  4. Compile a default configuration for tipidee: :> /etc/tipidee.conf && tipidee-config.

Running the server

tipidee service templates

The tipidee source distribution comes with an examples/ subdirectory containing service files to run tipidee under various service managers.

Frequently asked questions

I want my web server to listen to more than one address. Do I need to do all that for every address I have?

Not necessarily: you could listen to 0.0.0.0 for IPv4, and :: for IPv6. But if you don't want your server to listen to all the addresses on your machine, then yes, you will have to run one process per address:port tuple.

It's okay though: every listening process is very small. The skarnet.org server has two network cards and runs a web server on both of them, on IPv4 and IPv6, over HTTP and HTTPS, which makes 8 services. Plus one s6-log logger process for each of these services. Plus a supervisor for every service and every logger — for a whooping total of 64 long-running processes just for its web server functionality; and it's still not even noticeable, the amount of resources it consumes is negligible. So, don't worry about it; all your resources are still available for the serving itself.

Note that this allows you to run different instances of tipideed, on different sockets, with different configurations, if you need it. Use the -f option to specify a different config file in your instances.