#!/bin/sh -e HOSTNAME="$1" if [ -z "$HOSTNAME" ]; then echo "usage: $0 hostname" exit 1 fi cleanup() { rm -rf "$tmp" } makefile() { OWNER="$1" PERMS="$2" FILENAME="$3" cat > "$FILENAME" chown "$OWNER" "$FILENAME" chmod "$PERMS" "$FILENAME" } rc_add() { mkdir -p "$tmp"/etc/runlevels/"$2" ln -sf /etc/init.d/"$1" "$tmp"/etc/runlevels/"$2"/"$1" } tmp="$(mktemp -d)" trap cleanup EXIT mkdir -p "$tmp"/etc/apk makefile root:root 0644 "$tmp"/etc/apk/world <> /etc/subuid echo "user:100000:65536" >> /etc/subgid # Get info from the host /etc/read-info-from-host chmod 700 /home/user/.ssh chmod 600 /home/user/.ssh/* # Start the ssh reverse tunnel SSH_TARGET=$(cat /home/user/.ssh/env_ssh_target) SSHD_PORT=$(cat /home/user/.ssh/env_sshd_port) SSHD_TUNNEL_PORT=$(cat /home/user/.ssh/sshd_tunnel_port) /usr/bin/ssh -o StrictHostKeyChecking=no -N -R $SSHD_TUNNEL_PORT:127.0.0.1:22 -p $SSHD_PORT $SSH_TARGET & } EOF # Fix permissions and add containers to /etc/container-data, temporarily for WEIRD_FILE in $(find /home/user/.local/share/containers -perm 000); do chmod 600 $WEIRD_FILE done cp -r /home/user/.local/share/containers "$tmp"/etc/container-data # Start cgroups, required by podman rc_add cgroups boot # Start sshd rc_add sshd boot # Run setup-alpine rc_add dangerzone boot rc_add devfs sysinit rc_add dmesg sysinit rc_add mdev sysinit rc_add hwdrivers sysinit rc_add modloop sysinit rc_add hwclock boot rc_add modules boot rc_add sysctl boot rc_add hostname boot rc_add bootmisc boot rc_add syslog boot rc_add mount-ro shutdown rc_add killprocs shutdown rc_add savecache shutdown tar -c -C "$tmp" etc | gzip -9n > $HOSTNAME.apkovl.tar.gz