42d27c85ef
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
59 lines
1.6 KiB
Bash
Executable File
59 lines
1.6 KiB
Bash
Executable File
#!/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 the invoking user is in the docker group (use SUDO_USER if available)
|
|
TARGET_USER="${SUDO_USER:-$(id -un)}"
|
|
if ! groups "$TARGET_USER" 2>/dev/null | grep -q '\bdocker\b'; then
|
|
echo " Adding $TARGET_USER to docker group..."
|
|
usermod -aG docker "$TARGET_USER"
|
|
echo " NOTE: Log out and back in (or run 'newgrp docker') for docker group to take effect."
|
|
fi
|
|
echo " [ok] docker group ($TARGET_USER)"
|
|
|
|
echo "=== All dependencies OK ==="
|