124 lines
3.8 KiB
Bash
124 lines
3.8 KiB
Bash
#!/bin/bash
|
|
# bus-manager-lxc-setup.sh
|
|
# Run this on the Proxmox host (HAL-HOST) to create and fully configure
|
|
# a privileged Debian 12 LXC for running Docker + Bus Manager.
|
|
|
|
set -e
|
|
|
|
# ─── CONFIG ───────────────────────────────────────────────────────────────────
|
|
CTID=130
|
|
HOSTNAME="Bus-Manager"
|
|
IP="10.0.0.228/24"
|
|
GW="10.0.0.254"
|
|
BRIDGE="vmbr0"
|
|
STORAGE="local-lvm"
|
|
DISK_SIZE="32"
|
|
RAM="4096"
|
|
SWAP="2048"
|
|
CORES="2"
|
|
DNS="10.0.0.224"
|
|
TEMPLATE="debian-12-standard_12.7-1_amd64.tar.zst"
|
|
TEMPLATE_STORAGE="local"
|
|
# ──────────────────────────────────────────────────────────────────────────────
|
|
|
|
echo "==> Checking for Debian 12 template..."
|
|
if ! pveam list $TEMPLATE_STORAGE | grep -q "$TEMPLATE"; then
|
|
echo " Downloading Debian 12 template..."
|
|
pveam update
|
|
pveam download $TEMPLATE_STORAGE $TEMPLATE
|
|
else
|
|
echo " Template already present."
|
|
fi
|
|
|
|
echo "==> Destroying existing CT $CTID if present..."
|
|
if pct status $CTID &>/dev/null; then
|
|
pct stop $CTID 2>/dev/null || true
|
|
sleep 2
|
|
pct destroy $CTID
|
|
echo " CT $CTID destroyed."
|
|
fi
|
|
|
|
echo "==> Creating privileged LXC CT $CTID..."
|
|
pct create $CTID \
|
|
${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE} \
|
|
--hostname $HOSTNAME \
|
|
--ostype debian \
|
|
--unprivileged 0 \
|
|
--features nesting=1,keyctl=1 \
|
|
--cores $CORES \
|
|
--memory $RAM \
|
|
--swap $SWAP \
|
|
--rootfs ${STORAGE}:${DISK_SIZE} \
|
|
--net0 name=eth0,bridge=${BRIDGE},firewall=1,ip=${IP},gw=${GW},type=veth \
|
|
--nameserver $DNS \
|
|
--searchdomain local \
|
|
--onboot 1
|
|
|
|
echo "==> Starting CT..."
|
|
pct start $CTID
|
|
sleep 5
|
|
|
|
echo "==> Setting root password..."
|
|
echo " Please enter a root password for the container:"
|
|
pct exec $CTID -- passwd root
|
|
|
|
echo "==> Installing base packages..."
|
|
pct exec $CTID -- bash -c "
|
|
apt-get update -qq
|
|
apt-get install -y --no-install-recommends \
|
|
curl \
|
|
ca-certificates \
|
|
git \
|
|
openssh-server \
|
|
nano
|
|
"
|
|
|
|
echo "==> Enabling SSH root login..."
|
|
pct exec $CTID -- bash -c "
|
|
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
|
|
grep -q 'PermitRootLogin yes' /etc/ssh/sshd_config || echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
|
|
systemctl enable ssh
|
|
systemctl restart ssh
|
|
"
|
|
|
|
echo "==> Installing Docker..."
|
|
pct exec $CTID -- bash -c "
|
|
curl -fsSL https://get.docker.com | sh
|
|
systemctl enable docker
|
|
systemctl start docker
|
|
"
|
|
|
|
echo "==> Configuring Docker daemon..."
|
|
pct exec $CTID -- bash -c "
|
|
mkdir -p /etc/docker
|
|
cat > /etc/docker/daemon.json << 'DOCKEREOF'
|
|
{
|
|
\"dns\": [\"10.0.0.224\", \"1.1.1.1\"],
|
|
\"log-driver\": \"json-file\",
|
|
\"log-opts\": {
|
|
\"max-size\": \"10m\",
|
|
\"max-file\": \"3\"
|
|
}
|
|
}
|
|
DOCKEREOF
|
|
systemctl restart docker
|
|
"
|
|
|
|
echo "==> Cloning Bus Manager repo..."
|
|
pct exec $CTID -- bash -c "
|
|
cd /root
|
|
git clone https://gitea.hideawaygaming.com.au/jessikitty/bus-manager.git
|
|
"
|
|
|
|
echo ""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo " CT $CTID ($HOSTNAME) is ready!"
|
|
echo " IP: ${IP%/*} | SSH: ssh root@${IP%/*}"
|
|
echo ""
|
|
echo " Next steps:"
|
|
echo " 1. ssh root@${IP%/*}"
|
|
echo " 2. cd /root/bus-manager"
|
|
echo " 3. cp .env.example .env && nano .env"
|
|
echo " 4. docker compose up -d --build"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|