dev-setup.sh

41 lines
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
#!/bin/bash
# Congo Dev — host setup script (runs before container start)
# Called by `congo launch` via infra.json service setup.
# Data directories are created by the container itself (coder.go).
set -euo pipefail

echo "=== Congo Dev host setup ==="

mkdir -p /opt/congo-dev

# Auth secret (generate once)
if [ ! -f /opt/congo-dev/auth-secret ]; then
    openssl rand -hex 32 > /opt/congo-dev/auth-secret
    echo "Generated auth secret"
fi

# Setup token (generate once, deleted after first account creation)
if [ ! -f /opt/congo-dev-setup-token ]; then
    openssl rand -hex 16 > /opt/congo-dev-setup-token
    echo "Setup token: $(cat /opt/congo-dev-setup-token)"
fi

# SSH keypair (generate once for connecting to/from this server)
if [ ! -f /root/.ssh/id_ed25519 ]; then
    ssh-keygen -t ed25519 -f /root/.ssh/id_ed25519 -N "" -C "congo-dev"
    cat /root/.ssh/id_ed25519.pub >> /root/.ssh/authorized_keys
    echo "Generated SSH keypair and authorized locally"
fi

# Docker network for code-server and user-deployed services
# (the "internal" network is also created by congo launch for infra containers,
# but we ensure it here so code-server can start immediately)
docker network create internal 2>/dev/null || true

# Pull code-server image if not present
if ! docker image inspect codercom/code-server:4.111.0 >/dev/null 2>&1; then
    echo "Pulling code-server image..."
    docker pull codercom/code-server:4.111.0
fi

echo "=== Congo Dev host setup complete ==="