#!/usr/bin/env bash # One-command crew coordinator installer. # # curl -fsSL https://git.skate-spots.org/skatespots/SkateSpots/raw/branch/main/deploy/cordn/install.sh | bash # # Creates a persistent Cordn coordinator with SQLite storage, starts it, and # prints the nprofile/add link when the server announces itself. The coordinator # connects OUT to ContextVM relays; it needs no inbound port or TLS domain. set -euo pipefail cd "$(dirname "$0")" 2>/dev/null || true umask 077 need() { command -v "$1" >/dev/null || { echo "missing: $1" >&2; exit 1; }; } need docker need openssl docker compose version >/dev/null 2>&1 || { echo "Docker Compose v2 is required (docker compose)." >&2; exit 1; } if [ ! -f docker-compose.yml ]; then cat > docker-compose.yml <<'YAML' name: cordn services: cordn: image: ghcr.io/cordn-msg/cordn:latest container_name: cordn restart: unless-stopped env_file: - .env environment: CORDN_STORAGE_BACKEND: sqlite CORDN_SQLITE_PATH: /data/cordn.sqlite volumes: - cordn-data:/data volumes: cordn-data: YAML fi if [ ! -f .env ]; then NAME="${CORDN_SERVER_NAME:-skatespots-crew}" RELAYS="${CORDN_RELAY_URLS:-wss://relay.contextvm.org,wss://relay2.contextvm.org}" KEY="$(openssl rand -hex 32)" cat > .env <&2 echo "Inspect: docker compose logs --no-color" >&2 exit 1