2.1 KiB
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
is pre-configured to use
/mnt/toolbox/lbu
. - 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.
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!