Table of Contents

Infrastructure

My personal computing cloud. As many components as possible should be available to me regardless of my current location — my life is far too mobile to be reliant on local access.

Check out awesome-selfhosted for more ideas.

Active machines

sinensis

My primary workhorse. Serves Jupyter, Gotify, this DokuWiki PKB, and probably some test software I forgot to uninstall.

Inactive machines

solanum

Probably right where we left it and still running, just inaccessible. No idea what to do about that.

Hosted (hosting?) a Gitea instance.

Future ideas

Migrate this section to sketchpad?

NextCloud instance

Initial tests have been very satisfying. It will likely meet my stated need for a unified storage solution. In keeping with the above plan to Dockerize my services, I would like to build it around this image. Enable files, calendar, contacts, Talk (video conferencing), and Deck (kanban). Offer access to the sibs.

The current plan is to install the instance on a Raspberry Pi, which will allow me to have full hands-on access to the storage media. This may complicate global access, as I have little control over port forwarding at my current residence. See “5G Hotspots and Tinc” in 38:1 of 2600 for a possible solution to this exact problem.

Currently installed on the Raspberry Pi and the reverse proxy is functional. Note that some finagling will be necessary to get CalDAV to work; see here for NGINX instructions. This expected finagling seems to have been unnecessary, as bidirectional calendar sync is working just fine without it. The next step is to prepare the hard drive that will back the data store, mount it at /srv/nextcloud, and point the containers at it.

I'm not thrilled by the speeds I've seen thus far, but it's hard to tell where the bottleneck is. Ping times through the VPN from my laptop to the Pi average ~350 ms, and with NextCloud configured for reverse proxy, it's impossible to test its local performance (even navigating to its internal IP redirects to sinensis). The problem could simply be CPU usage at the node itself. It's not that big a deal, but it does warrant notice.

Airflow

A DAG-based automation tool. Think cron, but with task designations arranged in Python and built as graphs. What I'd like to do is migrate my JQL monitoring script to Airflow and have it dynamically generate the notification tasks. The same general outline can be applied to other watch tasks (e.g. watching product sites to tell me when they're available). During my quick experimentation session, I developed a custom Gotify operator for Airflow that I can leverage for future work.

The problem is that Airflow seems to be fairly CPU-intensive. The basic docker-compose config easily maxed out my laptop's processor all on its own, so it will absolutely murder sinensis. A Raspberry Pi (with large RAM) might do the trick—I'll just need to tunnel the webserver for roaming access.

Glances instance

Glances is a system monitor with a variety of export modes. It also features a web interface and client/server mode (where the server pushes stats to the client). It can be run in Docker, and it can monitor Docker containers.

Emulated machine terrarium

Set up a number of emulated historic systems (ITS, MULTICS, maybe some Research Unix) for my own pleasure and play. Make sure they can be remotely accessed.

croc

May not be necessary with NextCloud, but I would like to try it out. There's even a Docker image!

Minecraft server

Unfortunately, this will not be able to run on sinensis, at least not without some hardware upgrades. Maybe I can run this in Docker as well?

tinc combined with an nginx reverse proxy has proven to be successful for making the server public. Adding the following snippet to nginx.conf will suffice:

stream {
    server {
        listen ADDR;
        proxy_pass minecraft;
    }
    
    upstream minecraft {
        server ADDR:PORT;
    }
}

Mininet

A small Raspberry Pi cluster for hosting my experiments into distributed computing.

Owncast

Not exactly an active plan, but I have needed an RTMP destination once or twice. Owncast might be a handy tool for that purpose should the need arise again.