Commit 5c764514 authored by Andreas Düren's avatar Andreas Düren
Browse files

Fix NGINX read-only filesystem and database connection issues

parent 23c9581f
Loading
Loading
Loading
Loading
+40 −7
Original line number Diff line number Diff line
@@ -445,12 +445,27 @@ else
    echo "==> Port $API_PORT is available for API server"
fi

# Create necessary NGINX temp directories
mkdir -p /app/data/nginx/client_body_temp
mkdir -p /app/data/nginx/proxy_temp
mkdir -p /app/data/nginx/fastcgi_temp
mkdir -p /app/data/nginx/uwsgi_temp
mkdir -p /app/data/nginx/scgi_temp
mkdir -p /app/data/logs/nginx

# Create the NGINX config
cat > /app/data/nginx/nginx.conf <<EOT
worker_processes 1;
error_log /app/data/logs/nginx/error.log warn;
pid /app/data/nginx/nginx.pid;

# Important: Configure temp paths in writable directories
client_body_temp_path /app/data/nginx/client_body_temp;
proxy_temp_path /app/data/nginx/proxy_temp;
fastcgi_temp_path /app/data/nginx/fastcgi_temp;
uwsgi_temp_path /app/data/nginx/uwsgi_temp;
scgi_temp_path /app/data/nginx/scgi_temp;

events {
    worker_connections 1024;
}
@@ -572,7 +587,6 @@ EOT
echo "==> Created NGINX config at /app/data/nginx/nginx.conf"

# Start NGINX
echo "==> Starting NGINX on port $NGINX_PORT"
nginx -c /app/data/nginx/nginx.conf -p /app/data/nginx &
NGINX_PID=$!
echo "==> NGINX started with PID $NGINX_PID"
@@ -686,7 +700,7 @@ if [ -d "$SERVER_DIR/cmd/museum" ]; then
    # Execute as the cloudron user but use a proper script instead of env cd
    cat > /tmp/run_migration.sh <<EOF
#!/bin/bash
cd "$SERVER_DIR" && ENTE_PG_DSN="postgres://${MUSEUM_DB_USER}:${MUSEUM_DB_PASSWORD}@${MUSEUM_DB_HOST}:${MUSEUM_DB_PORT}/${MUSEUM_DB_NAME}?sslmode=disable" go run cmd/museum/main.go db force 25
cd "$SERVER_DIR" && ENTE_PG_HOST="${MUSEUM_DB_HOST}" ENTE_PG_PORT="${MUSEUM_DB_PORT}" ENTE_PG_USER="${MUSEUM_DB_USER}" ENTE_PG_PASSWORD="${MUSEUM_DB_PASSWORD}" ENTE_PG_DATABASE="${MUSEUM_DB_NAME}" ENTE_PG_DSN="postgres://${MUSEUM_DB_USER}:${MUSEUM_DB_PASSWORD}@${MUSEUM_DB_HOST}:${MUSEUM_DB_PORT}/${MUSEUM_DB_NAME}?sslmode=disable" go run cmd/museum/main.go db force 25
EOF
    chmod +x /tmp/run_migration.sh
    
@@ -725,7 +739,7 @@ elif [ -d "$SERVER_DIR/cmd/museum" ]; then
    # Create a startup script
    cat > /tmp/run_server.sh <<EOF
#!/bin/bash
cd "$SERVER_DIR" && ENTE_PG_DSN="postgres://${MUSEUM_DB_USER}:${MUSEUM_DB_PASSWORD}@${MUSEUM_DB_HOST}:${MUSEUM_DB_PORT}/${MUSEUM_DB_NAME}?sslmode=disable" go run cmd/museum/main.go serve
cd "$SERVER_DIR" && ENTE_PG_HOST="${MUSEUM_DB_HOST}" ENTE_PG_PORT="${MUSEUM_DB_PORT}" ENTE_PG_USER="${MUSEUM_DB_USER}" ENTE_PG_PASSWORD="${MUSEUM_DB_PASSWORD}" ENTE_PG_DATABASE="${MUSEUM_DB_NAME}" ENTE_PG_DSN="postgres://${MUSEUM_DB_USER}:${MUSEUM_DB_PASSWORD}@${MUSEUM_DB_HOST}:${MUSEUM_DB_PORT}/${MUSEUM_DB_NAME}?sslmode=disable" go run cmd/museum/main.go serve
EOF
    chmod +x /tmp/run_server.sh
    
@@ -757,23 +771,35 @@ import (
    "fmt"
    "log"
    "net/http"
    "os"
    "time"
)

func main() {
    // Log environment variables
    log.Println("Starting mock API server with environment variables:")
    log.Println("MUSEUM_DB_HOST:", os.Getenv("MUSEUM_DB_HOST"))
    log.Println("MUSEUM_DB_PORT:", os.Getenv("MUSEUM_DB_PORT"))
    log.Println("MUSEUM_DB_USER:", os.Getenv("MUSEUM_DB_USER"))
    log.Println("ENTE_PG_HOST:", os.Getenv("ENTE_PG_HOST"))
    log.Println("ENTE_PG_DSN:", os.Getenv("ENTE_PG_DSN"))
    
    // Add a health endpoint
    http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Content-Type", "application/json")
        fmt.Fprint(w, `{"status":"ok","message":"Mock server running"}`)
        fmt.Fprint(w, `{"status":"ok","message":"Mock server running","time":"` + time.Now().String() + `"}`)
    })
    
    // Handle all other requests
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        log.Printf("Received request for %s via %s", r.URL.Path, r.Method)
        w.Header().Set("Content-Type", "application/json")
        fmt.Fprintf(w, `{"status":"mock","endpoint":"%s","method":"%s"}`, r.URL.Path, r.Method)
        fmt.Fprintf(w, `{"status":"mock","endpoint":"%s","method":"%s","time":"%s"}`, 
            r.URL.Path, r.Method, time.Now().String())
    })
    
    // Start the server
    log.Printf("Starting mock server on port %d\n", 8080)
    log.Printf("Starting mock server on port 8080\n")
    
    if err := http.ListenAndServe(":8080", nil); err != nil {
        log.Fatalf("Failed to start server: %v", err)
@@ -781,8 +807,15 @@ func main() {
}
EOT
    
    # Run the mock server
    # Run the mock server with environment variables
    cd /tmp/mock-server
    export ENTE_PG_HOST="${MUSEUM_DB_HOST}"
    export ENTE_PG_PORT="${MUSEUM_DB_PORT}"
    export ENTE_PG_USER="${MUSEUM_DB_USER}"
    export ENTE_PG_PASSWORD="${MUSEUM_DB_PASSWORD}"
    export ENTE_PG_DATABASE="${MUSEUM_DB_NAME}"
    export ENTE_PG_DSN="postgres://${MUSEUM_DB_USER}:${MUSEUM_DB_PASSWORD}@${MUSEUM_DB_HOST}:${MUSEUM_DB_PORT}/${MUSEUM_DB_NAME}?sslmode=disable"
    
    go run main.go > /app/data/logs/museum.log 2>&1 &
    SERVER_PID=$!