93 lines
2.5 KiB
Bash
Executable File
93 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# SmoothSchedule Server Initial Setup
|
|
# Run this on the production server to install dependencies
|
|
# Usage: ssh poduck@smoothschedule.com 'bash -s' < server-setup.sh
|
|
|
|
set -e
|
|
|
|
echo "==================================="
|
|
echo "SmoothSchedule Server Setup"
|
|
echo "==================================="
|
|
|
|
# Update system
|
|
echo ">>> Updating system packages..."
|
|
sudo apt-get update
|
|
sudo apt-get upgrade -y
|
|
|
|
# Install Docker
|
|
if ! command -v docker &> /dev/null; then
|
|
echo ">>> Installing Docker..."
|
|
curl -fsSL https://get.docker.com -o get-docker.sh
|
|
sudo sh get-docker.sh
|
|
sudo usermod -aG docker $USER
|
|
rm get-docker.sh
|
|
echo "Docker installed!"
|
|
else
|
|
echo "Docker already installed."
|
|
fi
|
|
|
|
# Install Docker Compose
|
|
if ! command -v docker compose &> /dev/null; then
|
|
echo ">>> Installing Docker Compose..."
|
|
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
|
sudo chmod +x /usr/local/bin/docker-compose
|
|
echo "Docker Compose installed!"
|
|
else
|
|
echo "Docker Compose already installed."
|
|
fi
|
|
|
|
# Install AWS CLI for DigitalOcean Spaces management
|
|
if ! command -v aws &> /dev/null; then
|
|
echo ">>> Installing AWS CLI..."
|
|
sudo apt-get install -y awscli
|
|
echo "AWS CLI installed!"
|
|
else
|
|
echo "AWS CLI already installed."
|
|
fi
|
|
|
|
# Install UFW firewall
|
|
if ! command -v ufw &> /dev/null; then
|
|
echo ">>> Installing UFW firewall..."
|
|
sudo apt-get install -y ufw
|
|
fi
|
|
|
|
# Configure firewall
|
|
echo ">>> Configuring firewall..."
|
|
sudo ufw --force enable
|
|
sudo ufw default deny incoming
|
|
sudo ufw default allow outgoing
|
|
sudo ufw allow ssh
|
|
sudo ufw allow 80/tcp
|
|
sudo ufw allow 443/tcp
|
|
sudo ufw allow 5555/tcp # Flower (Celery monitoring)
|
|
|
|
echo ">>> Firewall configured!"
|
|
|
|
# Install fail2ban for security
|
|
if ! command -v fail2ban-client &> /dev/null; then
|
|
echo ">>> Installing fail2ban..."
|
|
sudo apt-get install -y fail2ban
|
|
sudo systemctl enable fail2ban
|
|
sudo systemctl start fail2ban
|
|
echo "Fail2ban installed!"
|
|
else
|
|
echo "Fail2ban already installed."
|
|
fi
|
|
|
|
# Create project directory
|
|
echo ">>> Creating project directory..."
|
|
mkdir -p ~/smoothschedule
|
|
mkdir -p ~/smoothschedule-frontend
|
|
|
|
echo ""
|
|
echo "==================================="
|
|
echo "Server Setup Complete!"
|
|
echo "==================================="
|
|
echo ""
|
|
echo "Next steps:"
|
|
echo "1. Logout and login again for Docker group changes to take effect"
|
|
echo "2. Configure DigitalOcean Spaces: ./setup-spaces.sh"
|
|
echo "3. Deploy the application: ./deploy.sh"
|
|
echo ""
|
|
echo "IMPORTANT: Logout and login now!"
|