#!/bin/bash # First-time setup for Cortex Status Dashboard on cortex.hydrascale.net set -euo pipefail echo "==> Installing Erlang & Elixir..." # Add Erlang Solutions repo for latest OTP apt-get update -qq apt-get install -y -qq software-properties-common apt-transport-https wget -q https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb dpkg -i erlang-solutions_2.0_all.deb rm erlang-solutions_2.0_all.deb apt-get update -qq apt-get install -y -qq esl-erlang elixir echo "==> Installing hex and rebar..." mix local.hex --force mix local.rebar --force echo "==> Setting up project directory..." APP_DIR="/data/cortex_status" mkdir -p "$APP_DIR" echo "==> Generating secret key..." SECRET=$(mix phx.gen.secret) cat > "$APP_DIR/.env" << EOF SECRET_KEY_BASE=$SECRET PHX_HOST=status.hydrascale.net PORT=4000 EOF chmod 600 "$APP_DIR/.env" echo "==> Installing systemd service..." cp "$APP_DIR/deploy/cortex-status.service" /etc/systemd/system/ systemctl daemon-reload systemctl enable cortex-status echo "==> Adding Caddy config..." echo "" echo "Add this block to /etc/caddy/Caddyfile:" echo "" cat << 'CADDY' status.hydrascale.net { reverse_proxy localhost:4000 encode gzip } CADDY echo "" echo "Then run: caddy validate --config /etc/caddy/Caddyfile && systemctl reload caddy" echo "" echo "==> Setup complete!" echo "Next steps:" echo " 1. Copy project files to $APP_DIR" echo " 2. Update Caddyfile (see above)" echo " 3. Run: cd $APP_DIR && bash deploy/deploy.sh"