backend setup script and service sample

This commit is contained in:
Mikkeli Matlock
2026-01-26 11:41:04 +09:00
parent 60a1c1811e
commit 2a379ede20
2 changed files with 83 additions and 6 deletions

View File

@@ -0,0 +1,77 @@
#!/bin/bash
# One-time setup script for Smart Serow Backend on Raspberry Pi
# Run this ON the Pi itself
set -e
echo "=== Smart Serow Backend Setup ==="
PI_USER="${USER:-$(whoami)}"
echo "Setting up for user: $PI_USER"
BACKEND_DIR="/opt/smartserow-backend"
SERVICE_FILE="/etc/systemd/system/smartserow-backend.service"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Create backend directory
echo "Creating backend directory: $BACKEND_DIR"
sudo mkdir -p "$BACKEND_DIR"
sudo chown -R "$PI_USER:$PI_USER" "$BACKEND_DIR"
# Install uv if not present
if ! command -v uv &> /dev/null; then
echo "Installing uv..."
curl -LsSf https://astral.sh/uv/install.sh | sh
echo " → Restart your shell or run: source ~/.bashrc"
else
echo "uv already installed: $(uv --version)"
fi
# Install gpsd
echo "Installing gpsd..."
sudo apt-get update
sudo apt-get install -y gpsd gpsd-clients
# Configure gpsd (user needs to edit DEVICES)
GPSD_CONFIG="/etc/default/gpsd"
echo ""
echo "gpsd installed. Configure your GPS device:"
echo " sudo nano $GPSD_CONFIG"
echo " Set DEVICES=\"/dev/ttyUSB0\" (or your GPS serial port)"
echo " Set GPSD_OPTIONS=\"-n\""
echo " Then: sudo systemctl restart gpsd"
echo ""
# Install systemd service
echo "Installing systemd service..."
if [ -f "$SCRIPT_DIR/smartserow-backend.service" ]; then
sed -e "s/User=.*/User=$PI_USER/" \
-e "s/Group=.*/Group=$PI_USER/" \
-e "s|/home/pi|/home/$PI_USER|g" \
"$SCRIPT_DIR/smartserow-backend.service" | sudo tee "$SERVICE_FILE" > /dev/null
echo " → Installed to $SERVICE_FILE"
else
echo "WARNING: Service template not found at $SCRIPT_DIR/smartserow-backend.service"
echo "Copy it manually to $SERVICE_FILE"
fi
# Enable service (but don't start - no code deployed yet)
echo "Enabling service..."
sudo systemctl daemon-reload
sudo systemctl enable smartserow-backend
echo ""
echo "=== Setup Complete ==="
echo ""
echo "Next steps:"
echo "1. Configure gpsd: sudo nano /etc/default/gpsd"
echo "2. Deploy backend: python3 scripts/deploy_backend.py (from dev machine)"
echo "3. On Pi, install deps: cd $BACKEND_DIR && uv sync"
echo "4. Start service: sudo systemctl start smartserow-backend"
echo ""
echo "Useful commands:"
echo " systemctl status smartserow-backend"
echo " journalctl -u smartserow-backend -f"
echo " curl http://localhost:5000/health"
echo " gpsmon # test gpsd directly"
echo ""