# syntax=docker/dockerfile:1.4-labs FROM ubuntu:24.04 as base ENV DEBIAN_FRONTEND=noninteractive ARG ROOTFS=/tmp/restore ARG SSH_HOST ARG SSH_USER ARG SSH_PATH=/var/tmp/restic RUN apt update && apt install -yq wget bzip2 make time sshfs fuse3 && \ wget -qO - https://raw.githubusercontent.com/cupcakearmy/autorestic/master/install.sh | bash && \ autorestic --version && \ mkdir -p ${ROOTFS} RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan ${SSH_HOST} >> ~/.ssh/known_hosts WORKDIR /var/tmp/restic RUN --security=insecure --mount=type=ssh sshfs -v -o auto_cache,reconnect,transform_symlinks,follow_symlinks ${SSH_USER}@${SSH_HOST}:${SSH_PATH} /var/tmp/restic && \ cd /var/tmp/restic && \ ls -la && \ make restore RESTORE_DST=${ROOTFS} WORKDIR ${ROOTFS} RUN --security=insecure \ mkdir -p ${ROOTFS}/proc && \ mkdir -p ${ROOTFS}/dev && \ mkdir -p ${ROOTFS}/dev/pts && \ mkdir -p ${ROOTFS}/sys && \ mkdir -p ${ROOTFS}/run && \ mount --bind /proc ${ROOTFS}/proc && \ mount --bind /dev ${ROOTFS}/dev && \ mount --bind /sys ${ROOTFS}/sys && \ mount --bind /run ${ROOTFS}/run && \ mount -t devpts devpts ${ROOTFS}/dev/pts && \ mkdir -p ${ROOTFS}/home/eggs/.overlay && \ mount -t tmpfs tmpfs ${ROOTFS}/home/eggs/.overlay/ && \ mkdir -p ${ROOTFS}/home/eggs/.overlay/{upperdir,workdir} && \ mkdir -p ${ROOTFS}/home/eggs/.mnt/filesystem.squashfs/var && \ mkdir -p ${ROOTFS}/home/eggs/.overlay/lowerdir/var && \ mkdir -p ${ROOTFS}/home/eggs/.overlay/upperdir/var && \ mkdir -p ${ROOTFS}/home/eggs/.overlay/workdir/var && \ mount -t overlay overlay -o lowerdir=${ROOTFS}/home/eggs/.overlay/lowerdir/var,upperdir=${ROOTFS}/home/eggs/.overlay/upperdir/var,workdir=${ROOTFS}/home/eggs/.overlay/workdir/var ${ROOTFS}/home/eggs/.mnt/filesystem.squashfs/var || dmesg && \ chroot ${ROOTFS} /bin/bash -c "rm /etc/resolv.conf && \ echo nameserver 8.8.8.8 > /etc/resolv.conf && \ cp -L /boot/vmlinuz /boot/vmlinuz-$(uname -r) || true && \ cd /tmp && \ /usr/bin/git clone https://github.com/pieroproietti/get-eggs && \ cd get-eggs && \ ./get-eggs.sh && \ rm -rf /*is-merged && \ export CASPER_GENERATE_UUID=1 && \ eggs calamares -i -r -v && \ SUDO_USER=ubuntu eggs produce --max --nointeractive --noicon --excludes=static,homes -v --release" && \ for m in $(mount | awk '{print $3}' | grep "^${ROOTFS}"); do umount -lf $m; done && \ export EXCLUDE_FILE=$(find ${ROOTFS}/home/eggs -name "*.iso" -type f -printf "%T@ %p\n" | sort -n | tail -1 | cut -d' ' -f2) && \ find ${ROOTFS} -type f ! -path "${EXCLUDE_FILE}" -exec rm -rf {} + && \ mv $(find ${ROOTFS}/home/eggs -name "*.iso" -type f -printf "%T@ %p\n" | sort -n | tail -1 | cut -d' ' -f2) /tmp/distro-live.iso FROM alpine COPY --from=base /tmp/distro-live.iso /distro-live.iso