sawa-control-panel/backend/recipes/pgadmin/install.sh

46 lines
1.4 KiB
Bash

#!/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 <<EOF > 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."