114 lines
2.9 KiB
Bash
Executable File
114 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
# Dealspace Installation Script
|
|
# Run as root on Shannon (82.24.174.112)
|
|
|
|
set -e
|
|
|
|
INSTALL_DIR=/opt/dealspace
|
|
SERVICE_USER=johan
|
|
|
|
echo "=== Dealspace Installation ==="
|
|
|
|
# Create user if missing
|
|
if ! id "$SERVICE_USER" &>/dev/null; then
|
|
echo "Creating user $SERVICE_USER..."
|
|
useradd -r -s /bin/bash -d /home/$SERVICE_USER -m $SERVICE_USER
|
|
fi
|
|
|
|
# Create directory structure
|
|
echo "Creating directories..."
|
|
mkdir -p $INSTALL_DIR/{bin,data,store,logs,backups,migrations}
|
|
|
|
# Generate MASTER_KEY if .env doesn't exist
|
|
if [ ! -f "$INSTALL_DIR/.env" ]; then
|
|
echo "Creating .env with new MASTER_KEY..."
|
|
MASTER_KEY=$(openssl rand -hex 32)
|
|
cat > $INSTALL_DIR/.env <<ENVEOF
|
|
# Core
|
|
MASTER_KEY=$MASTER_KEY
|
|
DB_PATH=$INSTALL_DIR/data/dealspace.db
|
|
STORE_PATH=$INSTALL_DIR/store
|
|
PORT=8080
|
|
ENV=production
|
|
|
|
# Auth
|
|
SESSION_TTL_HOURS=1
|
|
REFRESH_TTL_DAYS=7
|
|
|
|
# Seeding (set to true on first run only, then remove)
|
|
SEED_DEMO=false
|
|
|
|
# Email (Stalwart SMTP at mail.jongsma.me)
|
|
SMTP_HOST=mail.jongsma.me
|
|
SMTP_PORT=587
|
|
SMTP_USER=
|
|
SMTP_PASS=
|
|
SMTP_FROM=noreply@muskepo.com
|
|
|
|
# AI (Fireworks — zero retention)
|
|
FIREWORKS_API_KEY=
|
|
|
|
# Monitoring
|
|
NTFY_URL=https://ntfy.inou.com/inou-alerts
|
|
NTFY_TOKEN=tk_k120jegay3lugeqbr9fmpuxdqmzx5
|
|
ENVEOF
|
|
chmod 600 $INSTALL_DIR/.env
|
|
echo "⚠️ MASTER_KEY generated. Back it up securely. NEVER CHANGE after data is written."
|
|
else
|
|
echo ".env already exists, skipping..."
|
|
fi
|
|
|
|
# Set permissions
|
|
echo "Setting permissions..."
|
|
chown -R $SERVICE_USER:$SERVICE_USER $INSTALL_DIR
|
|
chmod 755 $INSTALL_DIR
|
|
chmod 700 $INSTALL_DIR/data $INSTALL_DIR/store $INSTALL_DIR/backups
|
|
chmod 755 $INSTALL_DIR/bin $INSTALL_DIR/logs
|
|
|
|
# Install systemd service
|
|
echo "Installing systemd service..."
|
|
cp "$(dirname "$0")/dealspace.service" /etc/systemd/system/dealspace.service
|
|
systemctl daemon-reload
|
|
systemctl enable dealspace
|
|
|
|
# Install backup script
|
|
echo "Installing backup script..."
|
|
cp "$(dirname "$0")/backup.sh" $INSTALL_DIR/backup.sh
|
|
chmod +x $INSTALL_DIR/backup.sh
|
|
|
|
# Install healthcheck script
|
|
echo "Installing healthcheck script..."
|
|
cp "$(dirname "$0")/healthcheck.sh" $INSTALL_DIR/healthcheck.sh
|
|
chmod +x $INSTALL_DIR/healthcheck.sh
|
|
|
|
# Install cron jobs
|
|
echo "Installing cron jobs..."
|
|
CRON_TMP=$(mktemp)
|
|
|
|
# Backup: daily at 3 AM
|
|
# Healthcheck: every 5 minutes
|
|
cat > $CRON_TMP <<CRONEOF
|
|
# Dealspace backup - daily at 3 AM
|
|
0 3 * * * $INSTALL_DIR/backup.sh >> $INSTALL_DIR/logs/backup.log 2>&1
|
|
|
|
# Dealspace healthcheck - every 5 minutes
|
|
*/5 * * * * $INSTALL_DIR/healthcheck.sh
|
|
CRONEOF
|
|
|
|
crontab -u $SERVICE_USER $CRON_TMP
|
|
rm $CRON_TMP
|
|
|
|
echo ""
|
|
echo "=== Installation Complete ==="
|
|
echo ""
|
|
echo "Next steps:"
|
|
echo " 1. Edit $INSTALL_DIR/.env with SMTP and Fireworks credentials"
|
|
echo " 2. Deploy the binary: make deploy"
|
|
echo " 3. Start the service: systemctl start dealspace"
|
|
echo " 4. Check status: systemctl status dealspace"
|
|
echo " 5. View logs: journalctl -u dealspace -f"
|
|
echo ""
|
|
echo "Cron jobs installed:"
|
|
echo " - Daily backup at 3 AM"
|
|
echo " - Healthcheck every 5 minutes"
|