Initial public khodo snapshot
ci / checks (push) Successful in 38m58s

This commit is contained in:
khodowany
2026-09-04 19:30:11 -05:00
commit 4f9a269f85
99 changed files with 59585 additions and 0 deletions
+75
View File
@@ -0,0 +1,75 @@
#!/usr/bin/env bash
set -euo pipefail
bundle_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
zero_dir="$bundle_dir/zero"
image_tar="$zero_dir/product-vamp-zero-linux-arm64.docker.tar"
config_dir=/etc/product-vamp
state_dir=/var/lib/product-vamp
run_dir=/run/product-vamp
share_dir=/usr/share/product-vamp
required_packages=(
docker.io
docker-cli
network-manager
sqlite3
ca-certificates
python3
)
if [ "$(id -u)" -ne 0 ]; then
echo "install-zero.sh must be run as root" >&2
exit 1
fi
if [ ! -f "$image_tar" ]; then
echo "missing Docker archive: $image_tar" >&2
exit 1
fi
missing_packages=()
for package in "${required_packages[@]}"; do
if ! dpkg-query -W -f='${Status}' "$package" 2>/dev/null | grep -qx 'install ok installed'; then
missing_packages+=("$package")
fi
done
if [ "${#missing_packages[@]}" -eq 0 ]; then
echo "Required OS packages already installed; skipping apt."
else
echo "Installing missing OS packages: ${missing_packages[*]}"
if ! apt-get update -o APT::Update::Error-Mode=any; then
echo "Failed to refresh apt package indexes." >&2
echo "Connect the Zero to upstream internet, then rerun sudo zero/install-zero.sh." >&2
exit 1
fi
if ! apt-get install -y --no-install-recommends "${missing_packages[@]}"; then
echo "Failed to install required OS packages: ${missing_packages[*]}" >&2
echo "Connect the Zero to upstream internet, then rerun sudo zero/install-zero.sh." >&2
exit 1
fi
fi
systemctl enable --now docker NetworkManager
install -d -m 0755 "$config_dir" "$state_dir" "$run_dir" "$share_dir"
cp -R "$zero_dir/share/product-vamp/." "$share_dir/"
if [ ! -f "$config_dir/vamp.json" ]; then
cp "$zero_dir/config/vamp.example.json" "$config_dir/vamp.json"
fi
docker load -i "$image_tar"
install -m 0755 "$zero_dir/start-ap.sh" /usr/local/bin/product-vamp-start-ap
install -m 0755 "$zero_dir/start-zero.sh" /usr/local/bin/product-vamp-start-zero
install -m 0644 "$zero_dir/systemd/product-vamp-ap.service" /etc/systemd/system/product-vamp-ap.service
install -m 0644 "$zero_dir/systemd/product-vamp-zero.service" /etc/systemd/system/product-vamp-zero.service
systemctl daemon-reload
systemctl disable --now getty@tty1.service >/dev/null 2>&1 || true
systemctl enable --now getty@tty2.service >/dev/null 2>&1 || true
systemctl enable --now product-vamp-ap.service
systemctl enable product-vamp-zero.service
systemctl restart product-vamp-zero.service
echo "Product Vamp Zero installed. Control AP defaults to SSID 'Vamp Control' at http://192.168.42.1:8080."