Created
October 2, 2025 15:02
-
-
Save include/0f12a37751e80595379cf5665b6c1e8d to your computer and use it in GitHub Desktop.
nginx proxy manager fix admin - migrate ALL things from past admins to the new active admin
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # NPM Ownership Transfer Script | |
| # Transfers all Nginx Proxy Manager resources from deleted users to active admin | |
| DB_PATH="${1:-database.sqlite}" | |
| if [ ! -f "$DB_PATH" ]; then | |
| echo "Error: Database file not found: $DB_PATH" | |
| exit 1 | |
| fi | |
| # Get the active (non-deleted) admin user ID | |
| ACTIVE_ADMIN=$(sqlite3 "$DB_PATH" "SELECT id FROM user WHERE is_deleted=0 ORDER BY id LIMIT 1;") | |
| if [ -z "$ACTIVE_ADMIN" ]; then | |
| echo "Error: No active admin user found" | |
| exit 1 | |
| fi | |
| echo "Active admin user ID: $ACTIVE_ADMIN" | |
| echo "Transferring ownership of all resources..." | |
| # Transfer ownership of all resource types | |
| sqlite3 "$DB_PATH" <<EOF | |
| UPDATE proxy_host SET owner_user_id=$ACTIVE_ADMIN WHERE owner_user_id IN (SELECT id FROM user WHERE is_deleted=1) AND is_deleted=0; | |
| UPDATE certificate SET owner_user_id=$ACTIVE_ADMIN WHERE owner_user_id IN (SELECT id FROM user WHERE is_deleted=1) AND is_deleted=0; | |
| UPDATE redirection_host SET owner_user_id=$ACTIVE_ADMIN WHERE owner_user_id IN (SELECT id FROM user WHERE is_deleted=1) AND is_deleted=0; | |
| UPDATE dead_host SET owner_user_id=$ACTIVE_ADMIN WHERE owner_user_id IN (SELECT id FROM user WHERE is_deleted=1) AND is_deleted=0; | |
| UPDATE stream SET owner_user_id=$ACTIVE_ADMIN WHERE owner_user_id IN (SELECT id FROM user WHERE is_deleted=1) AND is_deleted=0; | |
| UPDATE access_list SET owner_user_id=$ACTIVE_ADMIN WHERE owner_user_id IN (SELECT id FROM user WHERE is_deleted=1) AND is_deleted=0; | |
| EOF | |
| echo "" | |
| echo "Ownership transfer complete. Summary:" | |
| echo "----------------------------------------" | |
| sqlite3 "$DB_PATH" <<EOF | |
| .mode column | |
| SELECT 'Proxy Hosts' as Resource, COUNT(*) as Count FROM proxy_host WHERE owner_user_id=$ACTIVE_ADMIN AND is_deleted=0 | |
| UNION ALL | |
| SELECT 'Certificates', COUNT(*) FROM certificate WHERE owner_user_id=$ACTIVE_ADMIN AND is_deleted=0 | |
| UNION ALL | |
| SELECT 'Redirections', COUNT(*) FROM redirection_host WHERE owner_user_id=$ACTIVE_ADMIN AND is_deleted=0 | |
| UNION ALL | |
| SELECT 'Dead Hosts', COUNT(*) FROM dead_host WHERE owner_user_id=$ACTIVE_ADMIN AND is_deleted=0 | |
| UNION ALL | |
| SELECT 'Streams', COUNT(*) FROM stream WHERE owner_user_id=$ACTIVE_ADMIN AND is_deleted=0 | |
| UNION ALL | |
| SELECT 'Access Lists', COUNT(*) FROM access_list WHERE owner_user_id=$ACTIVE_ADMIN AND is_deleted=0; | |
| EOF | |
| echo "" | |
| echo "All resources now owned by user ID: $ACTIVE_ADMIN" | |
| Usage: ./transfer_npm_ownership.sh [path/to/database.sqlite] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment