#!/bin/sh # Install all host dependencies required by Personal Internet Cell. # Uses apt-get (Debian/Ubuntu). Must be run with sudo or as root. set -e APT_UPDATED=0 apt_install() { PKG="$1" if ! dpkg -s "$PKG" >/dev/null 2>&1; then echo " Installing $PKG..." if [ "$APT_UPDATED" = "0" ]; then apt-get update -qq APT_UPDATED=1 fi apt-get install -y -qq "$PKG" else echo " [ok] $PKG" fi } echo "=== Checking system dependencies ===" # Core tools apt_install git apt_install curl apt_install openssl apt_install python3 apt_install python3-cryptography # Docker if ! command -v docker >/dev/null 2>&1; then echo " Installing docker..." if [ "$APT_UPDATED" = "0" ]; then apt-get update -qq APT_UPDATED=1 fi apt-get install -y -qq docker.io fi echo " [ok] docker" # Docker Compose (v2 plugin preferred, v1 fallback) if ! docker compose version >/dev/null 2>&1 && ! command -v docker-compose >/dev/null 2>&1; then echo " Installing docker-compose..." apt-get install -y -qq docker-compose fi echo " [ok] docker-compose" # Ensure current user is in docker group if ! id | grep -q '(docker)'; then echo " Adding $(id -un) to docker group..." usermod -aG docker "$(id -un)" echo " NOTE: Log out and back in (or run 'newgrp docker') for docker group to take effect." fi echo "=== All dependencies OK ==="