cortex_status/deploy/setup.sh
2026-03-21 17:42:45 +00:00

56 lines
1.5 KiB
Bash

#!/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"