149 lines
3.8 KiB
Bash
149 lines
3.8 KiB
Bash
#!/bin/bash
|
|
# Raspberry Pi Optimized Setup Script for Docker Dashboard
|
|
|
|
set -e
|
|
|
|
echo "🍓 Setting up Docker Dashboard for Raspberry Pi..."
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Detect Raspberry Pi
|
|
if [[ -f /proc/device-tree/model ]]; then
|
|
MODEL=$(tr -d '\0' < /proc/device-tree/model)
|
|
echo -e "${GREEN}Detected: $MODEL${NC}"
|
|
elif [[ -f /proc/cpuinfo ]] && grep -q "Raspberry Pi" /proc/cpuinfo; then
|
|
echo -e "${GREEN}Detected: Raspberry Pi${NC}"
|
|
else
|
|
echo -e "${YELLOW}Warning: Not running on Raspberry Pi, continuing anyway...${NC}"
|
|
fi
|
|
|
|
# Update system packages
|
|
echo -e "${YELLOW}Updating system packages...${NC}"
|
|
sudo apt update && sudo apt upgrade -y
|
|
|
|
# Install Python3 and pip if not present
|
|
echo -e "${YELLOW}Installing Python3 and pip...${NC}"
|
|
sudo apt install -y python3 python3-pip python3-venv curl wget
|
|
|
|
# Install Docker if not present
|
|
if ! command -v docker &> /dev/null; then
|
|
echo -e "${YELLOW}Installing Docker...${NC}"
|
|
curl -fsSL https://get.docker.com -o get-docker.sh
|
|
sudo sh get-docker.sh
|
|
sudo usermod -aG docker $USER
|
|
rm get-docker.sh
|
|
else
|
|
echo -e "${GREEN}Docker already installed${NC}"
|
|
fi
|
|
|
|
# Create virtual environment
|
|
echo -e "${YELLOW}Creating Python virtual environment...${NC}"
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
|
|
# Install dependencies optimized for Pi
|
|
echo -e "${YELLOW}Installing Python dependencies...${NC}"
|
|
pip install --upgrade pip
|
|
|
|
# Install packages with Pi optimizations
|
|
pip install flask==2.3.3
|
|
pip install flask-cors==4.0.0
|
|
pip install docker==6.1.3
|
|
pip install psutil==5.9.5
|
|
pip install requests==2.31.0
|
|
pip install python-dotenv==1.0.0
|
|
|
|
# Create .env file optimized for Pi
|
|
echo -e "${YELLOW}Creating Pi-optimized configuration...${NC}"
|
|
cat > .env << EOF
|
|
# Raspberry Pi Optimized Configuration
|
|
PORT=8080
|
|
HOST=0.0.0.0
|
|
DEBUG=false
|
|
REFRESH_INTERVAL=60
|
|
PI_OPTIMIZATIONS=true
|
|
|
|
# Optional: Portainer integration
|
|
# PORTAINER_URL=http://localhost:9000
|
|
# PORTAINER_USERNAME=admin
|
|
# PORTAINER_PASSWORD=yourpassword
|
|
|
|
# Docker socket path (Pi specific)
|
|
DOCKER_HOST=unix:///var/run/docker.sock
|
|
EOF
|
|
|
|
# Initialize database
|
|
echo -e "${YELLOW}Initializing database...${NC}"
|
|
python3 -c "
|
|
from database import db
|
|
db.init_database()
|
|
print('✅ Database initialized successfully')
|
|
"
|
|
|
|
# Create systemd service for auto-start
|
|
echo -e "${YELLOW}Creating systemd service...${NC}"
|
|
sudo tee /etc/systemd/system/docker-dashboard.service > /dev/null << EOF
|
|
[Unit]
|
|
Description=Docker Dashboard for Raspberry Pi
|
|
After=network.target docker.service
|
|
Requires=docker.service
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=$USER
|
|
WorkingDirectory=$(pwd)
|
|
Environment=PATH=$(pwd)/venv/bin
|
|
ExecStart=$(pwd)/venv/bin/python3 api.py
|
|
Restart=always
|
|
RestartSec=10
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
# Set permissions
|
|
sudo chmod 644 /etc/systemd/system/docker-dashboard.service
|
|
|
|
# Create logs directory
|
|
mkdir -p logs
|
|
|
|
# Create simple start/stop scripts
|
|
cat > start-pi.sh << 'EOF'
|
|
#!/bin/bash
|
|
echo "Starting Docker Dashboard on Raspberry Pi..."
|
|
sudo systemctl start docker-dashboard
|
|
sudo systemctl status docker-dashboard --no-pager -l
|
|
EOF
|
|
|
|
cat > stop-pi.sh << 'EOF'
|
|
#!/bin/bash
|
|
echo "Stopping Docker Dashboard..."
|
|
sudo systemctl stop docker-dashboard
|
|
sudo systemctl status docker-dashboard --no-pager -l
|
|
EOF
|
|
|
|
chmod +x start-pi.sh stop-pi.sh
|
|
|
|
# Enable service
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable docker-dashboard
|
|
|
|
echo -e "${GREEN}✅ Setup complete!${NC}"
|
|
echo ""
|
|
echo "Usage:"
|
|
echo " ./start-pi.sh - Start the dashboard"
|
|
echo " ./stop-pi.sh - Stop the dashboard"
|
|
echo " ./setup-pi.sh - Re-run this setup"
|
|
echo ""
|
|
echo "Access the dashboard at: http://$(hostname -I | awk '{print $1}'):8080"
|
|
echo ""
|
|
echo -e "${YELLOW}To start immediately:${NC}"
|
|
echo " sudo systemctl start docker-dashboard"
|
|
echo ""
|
|
echo -e "${YELLOW}To view logs:${NC}"
|
|
echo " sudo journalctl -u docker-dashboard -f"
|