46 lines
1.4 KiB
Bash
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."
|