Quellcode durchsuchen

Fix nginx showing default page after update

The update command copied the nginx config to sites-available but
never symlinked it to sites-enabled or removed the default site,
causing users to see "Welcome to nginx!" instead of Dune Weaver.

Also handle Docker-to-native migration: detect missing .venv and
automatically install system dependencies, create the venv, and
stop Docker containers before proceeding with the native update.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
tuanchris vor 4 Monaten
Ursprung
Commit
8358d1f573
1 geänderte Dateien mit 31 neuen und 0 gelöschten Zeilen
  1. 31 0
      dw

+ 31 - 0
dw

@@ -119,6 +119,34 @@ cmd_update() {
         exec /usr/local/bin/dw update --continue
     fi
 
+    # Detect Docker-to-native migration: no venv means first native run
+    if [[ ! -d "$INSTALL_DIR/.venv" ]]; then
+        echo ""
+        echo -e "${YELLOW}Migrating to native deployment (first time setup)...${NC}"
+        echo "This may take a few minutes."
+        echo ""
+
+        # Install native system dependencies (nginx, python3-venv, gcc, etc.)
+        echo "Installing system dependencies..."
+        sudo apt update
+        sudo DEBIAN_FRONTEND=noninteractive apt install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" \
+            python3-venv python3-pip python3-dev \
+            gcc g++ make swig unzip wget \
+            libjpeg-dev zlib1g-dev \
+            libgpiod-dev gpiod \
+            nginx
+
+        # Create Python venv
+        echo "Creating Python virtual environment..."
+        python3 -m venv .venv
+
+        # Stop and remove Docker containers/service if running
+        if command -v docker &> /dev/null; then
+            echo "Stopping Docker containers..."
+            sudo docker compose down 2>/dev/null || true
+        fi
+    fi
+
     echo "Updating Python dependencies..."
     source .venv/bin/activate
     pip install -r requirements.txt
@@ -127,6 +155,8 @@ cmd_update() {
     echo "Updating nginx config..."
     sudo cp "$INSTALL_DIR/nginx/dune-weaver.conf" /etc/nginx/sites-available/dune-weaver.conf
     sudo sed -i "s|INSTALL_DIR_PLACEHOLDER|$INSTALL_DIR|g" /etc/nginx/sites-available/dune-weaver.conf
+    sudo ln -sf /etc/nginx/sites-available/dune-weaver.conf /etc/nginx/sites-enabled/dune-weaver.conf
+    sudo rm -f /etc/nginx/sites-enabled/default
     sudo nginx -t && sudo systemctl restart nginx
 
     # Update systemd service
@@ -135,6 +165,7 @@ cmd_update() {
     sudo sed -i "s|USER_PLACEHOLDER|$USER|g" /etc/systemd/system/dune-weaver.service
     sudo sed -i "s|INSTALL_DIR_PLACEHOLDER|$INSTALL_DIR|g" /etc/systemd/system/dune-weaver.service
     sudo systemctl daemon-reload
+    sudo systemctl enable dune-weaver
 
     echo "Restarting service..."
     sudo systemctl restart dune-weaver