# APT Packages Checklist **Last Updated:** 2026-02-05 **Document Version:** 1.1 **Status:** Active Documentation --- Complete checklist of all apt packages required for each service type. --- ## Automation / jump host / scripts runner (recommended) Install on the machine that runs `scripts/push-templates-to-proxmox.sh`, verification scripts, and automation that SSHs to Proxmox hosts. These are **optional** but recommended; many scripts work with only `bash curl jq openssl ssh` (see `scripts/verify/check-dependencies.sh`). ```bash # One-line install (Debian/Ubuntu) sudo apt install -y sshpass rsync dnsutils iproute2 screen tmux htop shellcheck parallel ``` | Package | Purpose | |---------|---------| | **sshpass** | Non-interactive SSH with password (storage-monitor, set-container-password, restart-and-verify-services, Blockscout/update scripts). Prefer SSH keys; use sshpass only when needed. | | **rsync** | Efficient sync for push-templates and file copies (optional; script falls back to scp). | | **dnsutils** | `dig`, `nslookup` for DNS checks in verification. | | **iproute2** | `ss` for socket checks (optional). | | **screen** / **tmux** | Long-running sessions (deployments, downloads). | | **htop** | Interactive process view on hosts. | | **shellcheck** | Static analysis for shell scripts (`scripts/verify/run-shellcheck.sh`). | | **parallel** | GNU parallel for batch SSH/commands (optional). | **macOS (Homebrew):** `brew install sshpass rsync bind screen tmux htop shellcheck parallel` (sshpass may need `brew install hudochenkov/sshpass/sshpass` or use SSH keys). --- ## Besu Nodes ### Common Packages (All Besu Node Types) ```bash openjdk-17-jdk # Java 17 Runtime (Required for Besu) wget # Download Besu binary curl # HTTP client utilities jq # JSON processing netcat-openbsd # Network utilities (nc command) iproute2 # Network routing utilities (ip command) iptables # Firewall management ca-certificates # SSL certificate store gnupg # GPG for package verification lsb-release # LSB release information ``` ### Note: nginx for RPC Nodes **nginx is NOT installed on RPC nodes**. Instead, **VMID 105 (nginx-proxy-manager)** is used as a centralized reverse proxy and load balancer for all RPC endpoints. This provides: - Centralized management via web UI - Load balancing across RPC nodes (2500-2502) - SSL termination - High availability with automatic failover See `docs/NGINX_ARCHITECTURE_RPC.md` for details. **Install Scripts**: - `install/besu-validator-install.sh` - `install/besu-sentry-install.sh` - `install/besu-rpc-install.sh` --- ## Blockscout Explorer ```bash docker.io # Docker runtime docker-compose # Docker Compose orchestration curl wget jq ca-certificates gnupg lsb-release ``` **Install Script**: `install/blockscout-install.sh` --- ## Hyperledger Fabric ```bash docker.io docker-compose curl wget jq ca-certificates gnupg lsb-release python3 python3-pip build-essential # C/C++ compiler and build tools ``` **Install Script**: `install/fabric-install.sh` --- ## Hyperledger Firefly ```bash docker.io docker-compose curl wget jq ca-certificates gnupg lsb-release ``` **Install Script**: `install/firefly-install.sh` --- ## Hyperledger Indy ```bash docker.io docker-compose curl wget jq ca-certificates gnupg lsb-release python3 python3-pip python3-dev # Python development headers libssl-dev # OpenSSL development libraries libffi-dev # Foreign Function Interface library build-essential # C/C++ compiler and build tools pkg-config # Package configuration tool libzmq5 # ZeroMQ library (runtime) libzmq3-dev # ZeroMQ library (development) ``` **Install Script**: `install/indy-install.sh` --- ## Hyperledger Cacti ```bash docker.io docker-compose curl wget jq ca-certificates gnupg lsb-release ``` **Install Script**: `install/cacti-install.sh` --- ## Chainlink CCIP Monitor ```bash python3 python3-pip python3-venv # Python virtual environment curl wget jq ca-certificates ``` **Install Script**: `install/ccip-monitor-install.sh` --- ## Oracle Publisher ```bash docker.io docker-compose curl wget jq ca-certificates gnupg lsb-release python3 python3-pip ``` **Install Script**: `install/oracle-publisher-install.sh` --- ## Keeper ```bash docker.io docker-compose curl wget jq ca-certificates gnupg lsb-release ``` **Install Script**: `install/keeper-install.sh` --- ## Financial Tokenization ```bash docker.io docker-compose curl wget jq ca-certificates gnupg lsb-release python3 python3-pip ``` **Install Script**: `install/financial-tokenization-install.sh` --- ## Monitoring Stack ```bash docker.io docker-compose curl wget jq ca-certificates gnupg lsb-release ``` **Install Script**: `install/monitoring-stack-install.sh` --- ## Package Summary by Category ### Essential System Packages (Most Services) - `curl`, `wget`, `jq`, `ca-certificates`, `gnupg`, `lsb-release` ### Docker Services - `docker.io`, `docker-compose` ### Python Services - `python3`, `python3-pip` - Optional: `python3-dev`, `python3-venv`, `build-essential` ### Java Services (Besu) - `openjdk-17-jdk` ### Network Utilities - `netcat-openbsd`, `iproute2`, `iptables` ### Development Tools - `build-essential` (includes gcc, g++, make, etc.) - `pkg-config` ### Libraries - `libssl-dev`, `libffi-dev`, `libzmq5`, `libzmq3-dev` --- ## Verification Commands After deployment, verify packages are installed: ```bash # Check Java (Besu nodes) pct exec -- java -version # Check Docker (Docker-based services) pct exec -- docker --version pct exec -- docker-compose --version # Check Python (Python services) pct exec -- python3 --version pct exec -- pip3 --version # Check specific packages pct exec -- dpkg -l | grep -E "openjdk-17|docker|python3" ``` --- ## Package Installation Notes ### Automatic Installation All packages are automatically installed by their respective install scripts during container deployment. ### Installation Order 1. Container created with Ubuntu 22.04 template 2. Container started 3. Install script pushed to container 4. Install script executed (installs all apt packages) 5. Application software installed/downloaded 6. Services configured ### APT Update All install scripts run `apt-get update` before installing packages. ### Non-Interactive Mode All install scripts use `export DEBIAN_FRONTEND=noninteractive` to prevent interactive prompts. --- ## Troubleshooting ### Package Installation Fails **Error**: `E: Unable to locate package ` **Solution**: ```bash # Update package lists pct exec -- apt-get update # Check if package exists pct exec -- apt-cache search # Check Ubuntu version pct exec -- lsb_release -a ``` ### Insufficient Disk Space **Error**: `E: Write error - write (28: No space left on device)` **Solution**: ```bash # Check disk usage pct exec -- df -h # Clean apt cache pct exec -- apt-get clean ``` ### Network Connectivity Issues **Error**: `E: Failed to fetch ... Connection timed out` **Solution**: ```bash # Test network connectivity pct exec -- ping -c 3 8.8.8.8 # Check DNS resolution pct exec -- nslookup archive.ubuntu.com ```