Heimåt Cloud Infrastructure
# Install updates
$ apt update
$ apt upgrade
$ apt install git
# Docker - https://docs.docker.com/engine/install/debian/
$ for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do apt-get remove $pkg; done
$ apt-get install ca-certificates curl
$ install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
$ chmod a+r /etc/apt/keyrings/docker.asc
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ apt-get update
$ apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Allow non-root binding to privileged ports
$ echo 'net.ipv4.ip_unprivileged_port_start=0' >> /etc/sysctl.conf
$ sysctl --system
# Create passwordless 'app' user and switch to it
$ adduser app
$ passwd -d app
$ usermod -aG docker app
$ su app
$ cd
$ git clone https://git.heim.ax/patrik/infrastructure.git .
$ git submodule update --init --recursive
$ touch traefik/acme.json && chmod 600 traefik/acme.json
$ docker compose up --detach
$ git submodule update --recursive --remote
$ git pull origin main
ssh -i ~/.ssh/id_rsa root@heim.ax
su app
cd
# Pull fresh images
docker image prune --force
docker images | grep -v REPOSITORY | awk '{print $1}' | xargs -L1 docker pull
# Create new & restart old services
docker compose up --detach
# Update workspace
git pull origin main
git submodule update --init --recursive --remote