Working version
This commit is contained in:
commit
4ebf8a33fc
|
@ -0,0 +1,5 @@
|
||||||
|
FROM alpine
|
||||||
|
RUN apk update
|
||||||
|
RUN apk add alpine-conf doas runit openssh-server
|
||||||
|
COPY etc/ /etc/
|
||||||
|
CMD [ "/sbin/runit" ]
|
|
@ -0,0 +1,65 @@
|
||||||
|
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.
|
||||||
|
|
||||||
|
|
||||||
|
Why This Exists
|
||||||
|
---------------
|
||||||
|
|
||||||
|
I run my 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.
|
||||||
|
|
||||||
|
However, I also like my creature comforts.
|
||||||
|
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!
|
|
@ -0,0 +1,5 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
image=git.woozle.org/neale/toolbox
|
||||||
|
podman build --tag $image .
|
||||||
|
podman push $image
|
|
@ -0,0 +1,16 @@
|
||||||
|
# what cipher to use with -e option
|
||||||
|
DEFAULT_CIPHER=aes-256-cbc
|
||||||
|
|
||||||
|
# Uncomment the row below to encrypt config by default
|
||||||
|
# ENCRYPTION=$DEFAULT_CIPHER
|
||||||
|
|
||||||
|
# Uncomment below to avoid <media> option to 'lbu commit'
|
||||||
|
# Can also be set to 'floppy'
|
||||||
|
# LBU_MEDIA=mmcblk0p1
|
||||||
|
|
||||||
|
# Set the LBU_BACKUPDIR variable in case you prefer to save the apkovls
|
||||||
|
# in a normal directory instead of mounting an external media.
|
||||||
|
LBU_BACKUPDIR=/mnt/toolbox/backups
|
||||||
|
|
||||||
|
# Uncomment below to let lbu make up to 3 backups
|
||||||
|
# BACKUP_LIMIT=3
|
|
@ -0,0 +1,20 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
error () {
|
||||||
|
printf '\033[31mFLAGRANT SYSTEM ERROR\033[0m - %s' "$*" >> /etc/motd
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "*** Setting up directories"
|
||||||
|
[ -d /mnt/toolbox ] && mkdir -p /mnt/toolbox/lbu /mnt/toolbox/apk
|
||||||
|
[ -d /etc/apk/cache ] || ln -s /mnt/toolbox/apk /etc/apk/cache
|
||||||
|
|
||||||
|
echo "*** Restoring system from backup"
|
||||||
|
apkovl=/mnt/toolbox/lbu/$(hostname).apkovl.tar.gz
|
||||||
|
if [ -f $apkovl ]; then
|
||||||
|
tar xf $apkovl || error "restoring system: untar $apkovl failed"
|
||||||
|
else
|
||||||
|
echo "$apkovl missing, skipping restore"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "*** Updating packages"
|
||||||
|
apk fix
|
|
@ -0,0 +1,3 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
exec /sbin/runsvdir /etc/service
|
|
@ -0,0 +1,3 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
echo "*** Goodbye."
|
|
@ -0,0 +1,4 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
ssh-keygen -A
|
||||||
|
/usr/sbin/sshd -D
|
Loading…
Reference in New Issue