#!/bin/sh set -e # pgAdmin installation helper for Sawa Panel # Context: Runs inside /opt/pgadmin via sh as root echo "Configuring pgAdmin environment..." # 1. Install pgadmin4 via pip echo "Installing pgadmin4 via pip..." pip install pgadmin4 --break-system-packages --root-user-action=ignore # 2. Locate the pgAdmin4.py script dynamically PGADMIN_PATH=$(find /usr -name "pgAdmin4.py" 2>/dev/null | head -1) if [ -z "$PGADMIN_PATH" ]; then echo "ERROR: pgAdmin4.py not found after install" exit 1 fi echo "PGADMIN_PATH=$PGADMIN_PATH" > /opt/pgadmin/pgadmin.env # 3. Setup directory structure mkdir -p data/sessions data/storage # 4. Generate config_local.py echo "Writing config_local.py configuration..." cat < config_local.py SERVER_MODE = True DATA_DIR = '/opt/pgadmin/data' LOG_FILE = '/opt/pgadmin/data/pgadmin4.log' SQLITE_PATH = '/opt/pgadmin/data/pgadmin4.db' SESSION_DB_PATH = '/opt/pgadmin/data/sessions' STORAGE_PATH = '/opt/pgadmin/data/storage' DEFAULT_SERVER = '127.0.0.1' EOF # 5. Create pgadmin system user PGADMIN_GROUP=$(id -gn pgadmin 2>/dev/null || echo nogroup) if ! id "pgadmin" >/dev/null 2>&1; then echo "Creating pgadmin system user..." adduser -S -D -H -h /opt/pgadmin -s /sbin/nologin pgadmin || true PGADMIN_GROUP=$(id -gn pgadmin 2>/dev/null || echo nogroup) fi # 6. Set appropriate ownership chown -R pgadmin:$PGADMIN_GROUP . echo "pgAdmin installation script completed successfully."