#!/bin/bash set -eEuo pipefail trap 'echo "Error detected: aborting installation"' ERR echo "Attempting to autodetect distro ..." distro=$(lsb_release -is) release=$(lsb_release -rs) if [[ $distro == "Debian" ]]; then echo "Detected distro: Debian" if [[ $release =~ ^[0-9]+$ ]]; then echo "Detected release: $release" elif [[ $release == "testing" ]]; then echo "Detected release: testing" release=Testing else echo "Error: failed to detect release" exit 1 fi echo "Installing podman ..." sudo apt install -y gnupg curl echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_${release:?}/ /" | sudo tee /etc/apt/sources.list.d/podman.list curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_${release:?}/Release.key | sudo apt-key add - sudo apt update -y sudo apt install -y fuse-overlayfs slirp4netns podman else echo "Error: failed to detect distro." exit 1 fi echo "Copying scripts to /usr/local/bin ..." # copy bin files to /usr/local/bin sudo cp .install/bin/* /usr/local/bin/ echo "Installing containers startup service ..." # install systemd startup service sudo cp .install/containers-startup.service /etc/systemd/system/ sudo systemctl enable containers-startup.service # create startup.d if it doesn't exist sudo mkdir -p /etc/containers/startup.d # configure containers user name=containers uid=5000 subrange="1000000-1000000000" if [[ ! $(getent group $name) ]]; then echo "Creating group '$name' ..." sudo groupadd -r -g $uid $name fi if [[ ! $(getent passwd $name) ]]; then echo "Creating user '$name' ..." sudo useradd -r -u $uid -p '*'-s /sbin/nologin -d /srv/vol -g $name $name fi echo "Configuring user '$name' ..." sudo groupmod -g $uid $name sudo usermod -u $uid -p '*' -s /sbin/nologin -d /srv/vol/ -G '' -v $subrange -w $subrange -g $name $name echo "Install finished successfully."