#######################################
# 1) Update system & install prerequisites
#######################################
sudo apt update && sudo apt upgrade
sudo apt install -y \
curl wget git build-essential \
apt-transport-https ca-certificates gnupg lsb-release \
libssl-dev zlib1g-dev libreadline-dev \
autoconf libyaml-dev libffi-dev libgmp-dev rustc
#######################################
# 2) Install Docker Engine & grant ubuntu access
#######################################
# uninstall all conflicting packages
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# sudo install -m 0755 -d /etc/apt/keyrings
# sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
# sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list >/dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Add ubuntu to docker group so it can run docker commands without sudo
sudo usermod -aG docker ubuntu
# Install mise (Ruby version manager) for this user
curl https://mise.run/bash | sh
# Ensure mise is on PATH in this shell
source ~/.bashrc
# Install & activate Ruby 3.4.3
mise install ruby@3.4.3
mise use --global ruby@3.4.3
# Install the Kamal gem for deployments
gem install kamal