Alpine Toolbox ============== This is a little Alpine container I run to provide SSH logins with a bunch of tools. Persistence ---------- If `/mnt/toolbox` exists, toolbox will persist installed packages and system changes by using methods that already exist in arch. * [Alpine Local Backup](https://wiki.alpinelinux.org/wiki/Alpine_local_backup) is pre-configured to use `/mnt/toolbox/lbu`. * [Local APK cache](https://wiki.alpinelinux.org/wiki/Local_APK_cache) is pre-configured to use `/mnt/toolbox/apk`. It's important to `lbu` that your machine have a hostname. If you change hostnames, you will need to rename files in `/mnt/toolbox/lbu`. ``` podman run \ --hostname toolbox \ --volume /path/to/toolbox:/mnt/toolbox \ git.woozle.org/neale/toolbox ``` First Run --------- You may want to `podman exec` into the container, in order to edit `/etc/doas.conf` set up user accounts, and/or install ssh `authorized_keys`. Once set up, you should be able to ssh in for most of your needs. Startup scripts --------------- The system uses [runit](http://smarden.org/runit/). If you drop an executable in `/etc/service/*/run`, runit will run it. Be sure to `lbu commit` if you're making startup scripts. Podman vs Docker ---------------- On my diskless Raspberry Pi, Podman takes half as much space on the RAM disk as Docker. So I use Podman. You do you. If you like docker better, just type `docker` instead of `podman`. Why This Exists --------------- I run my home server in Alpine's "diskless mode". The Raspberry Pi uses a MicroSD card, which will "wear out" after many writes. This means my system runs entirely in RAM. Once my home server is up, it mounts a 12TB btrfs array. So I run a bunch of containers backed by the disk. Running a more robust installation in a container allows me to use my magnetic storage for the larger system, and install and remove packages when I like, without worrying about wearing out the MicroSD card. Shout Out --------- Alpine Linux is cool. It provides all the difficult parts of this, I just had to set up some config files. The really cool part is that my container works the same way as the host it runs on!