#!/bin/bash # dokku-setup.sh.sample - Set up Dokku app for firehose # # USAGE: # 1. Copy to dokku-setup.sh: cp dokku-setup.sh.sample dokku-setup.sh # 2. Fill in any empty strings below # 3. Run on Dokku server: ./dokku-setup.sh # # Do NOT commit dokku-setup.sh (contains secrets) set -e APP="firehose" # <-- change to your desired Dokku app name / hostname DB_NAME="firehose_db" # <-- valid chars: [A-Za-z0-9_] only PHX_HOST="$APP" # <-- change to your full domain, e.g., firehose.example.com # Auto-generate secrets SECRET_KEY_BASE=$(openssl rand -base64 64 | tr -d '\n') echo "==> Creating Dokku app: $APP" dokku apps:create "$APP" || echo "App may already exist" echo "==> Creating PostgreSQL database" dokku postgres:create "${DB_NAME}" || echo "Database may already exist" dokku postgres:link "${DB_NAME}" "$APP" || echo "Database may already be linked" echo "==> Setting environment variables" dokku config:set --no-restart "$APP" \ SECRET_KEY_BASE="$SECRET_KEY_BASE" \ PHX_HOST="$PHX_HOST" \ PORT="4000" echo "" echo "==> Setup complete!" echo "" echo "DATABASE_URL was set automatically by postgres:link." echo "" echo "Next steps:" echo " 1. From your local machine, add the git remote:" echo " git remote add dokku dokku@YOUR_SERVER:$APP" echo "" echo " 2. Push to deploy:" echo " git push dokku main" echo " (migrations run automatically via app.json postdeploy)" echo "" echo " 3. Set up SSL (after first deploy):" echo " dokku letsencrypt:enable $APP"