How to Integrate with IPRoyal Pawns Using Email and Password in InternetIncome

To integrate IPRoyal Pawns with InternetIncome, set your credentials in properties.conf and run internetIncome.sh, which automatically pulls the iproyal/pawns-cli Docker image and launches a container with your email and password.

InternetIncome orchestrates bandwidth-sharing services through isolated Docker containers. The IPRoyal Pawns integration authenticates using standard email and password credentials defined in the configuration file, enabling automated device registration and bandwidth sharing without manual CLI intervention.

Configuration Prerequisites

Before starting, you need an active IPRoyal Pawns account. The system reads authentication details from the central configuration file properties.conf located in the repository root.

The script expects two specific variables:

  • IPROYALS_EMAIL – Your registered IPRoyal account email address
  • IPROYALS_PASSWORD – Your account password

Both values must be wrapped in single quotes to prevent shell interpretation of special characters.

How the Integration Works

The integration follows a conditional containerization pattern implemented in internetIncome.sh. When you execute the start command, the script performs the following operations:

  1. Sources configuration – Loads variables from properties.conf (lines 25–28)
  2. Validates credentials – Checks if IPROYALS_EMAIL and IPROYALS_PASSWORD are non-empty (lines 33–41)
  3. Pulls image – Downloads iproyal/pawns-cli:latest if not present locally
  4. Launches container – Executes the CLI with your credentials and device parameters
  5. Accepts terms – Automatically passes the -accept-tos flag to bypass manual agreement

The container naming convention follows the pattern pawns${UNIQUE_ID}${i}, allowing multiple instances if configured.

Setting Up Your Credentials

Edit properties.conf to add your authentication details:


# IPRoyal Pawns credentials (lines 25-28)

IPROYALS_EMAIL='your.email@example.com'
IPROYALS_PASSWORD='YourSecurePassword123!'

Ensure you also configure the device identifier:


# Device name appears in your IPRoyal dashboard

DEVICE_NAME='ubuntu-server-01'

This DEVICE_NAME value populates both the -device-name and -device-id flags in the container startup command.

Launching the Service

Start the integration by running the main orchestration script:

sudo bash internetIncome.sh --start

Upon successful initialization, you will see output confirming the container creation:

Starting IPRoyals container..
Container pawns12345 started successfully.

The script automatically applies networking configurations including $NETWORK_TUN, $LOGS_PARAM, and $DNS_VOLUME to ensure compatibility with proxy setups and DNS-over-HTTPS settings.

Understanding the Container Startup Logic

According to the source code in internetIncome.sh (lines 33–41), the initialization block performs a conditional check:

if [[ $IPROYALS_EMAIL && $IPROYALS_PASSWORD ]]; then
    # Pull and run logic executes here

fi

If credentials are missing, the script outputs a warning message and skips IPRoyal initialization. When credentials are present, the Docker command constructs the following execution:

docker run --name "pawns${UNIQUE_ID}${i}" \
  ${NETWORK_TUN} ${LOGS_PARAM} ${DNS_VOLUME} \
  iproyal/pawns-cli:latest \
  -email=$IPROYALS_EMAIL \
  -password=$IPROYALS_PASSWORD \
  -device-name=$DEVICE_NAME$i \
  -device-id=$DEVICE_NAME$i \
  -accept-tos

This command authenticates your session, registers the device under your specified name, and immediately begins bandwidth sharing.

Manual Docker Execution (Optional)

For testing or debugging outside the main script, you can run the IPRoyal CLI directly:

docker run --rm \
  iproyal/pawns-cli:latest \
  -email='your.email@example.com' \
  -password='YourSecurePassword123!' \
  -device-name='test-device' \
  -device-id='test-device' \
  -accept-tos

Note that this manual approach bypasses the proxy and logging configurations managed by internetIncome.sh.

Summary

  • Configuration location: Set IPROYALS_EMAIL and IPROYALS_PASSWORD in properties.conf using single quotes
  • Image source: The script pulls iproyal/pawns-cli:latest automatically
  • Device identification: Uses the DEVICE_NAME variable for both device name and ID
  • Automation: The script handles image pulling, container naming, and Terms of Service acceptance
  • Proxy support: Inherits networking settings from the global $NETWORK_TUN and $DNS_VOLUME variables

Frequently Asked Questions

What happens if I leave the credentials empty in properties.conf?

The script checks for non-empty values in IPROYALS_EMAIL and IPROYALS_PASSWORD at lines 33–41 of internetIncome.sh. If either variable is empty, the script prints a warning message and skips the IPRoyal container initialization entirely, continuing with other configured services.

Can I use special characters in my IPRoyal password?

Yes, but you must wrap the password in single quotes within properties.conf. This prevents the shell from interpreting special characters like $, !, or * during variable expansion. For example: IPROYALS_PASSWORD='MyP@ss$word!'.

How does InternetIncome handle multiple IPRoyal Pawns instances?

The script supports multiple instances through the ${i} index variable in the container name pattern pawns${UNIQUE_ID}${i}. Each instance receives a unique device identifier by appending the index to your base DEVICE_NAME, allowing you to run several containers simultaneously while maintaining distinct device entries in your IPRoyal dashboard.

Where can I view the logs for the IPRoyal container?

Logging is controlled by the global ENABLE_LOGS flag in properties.conf. When enabled, the script passes log configuration through the $LOGS_PARAM environment variable to Docker. You can view real-time logs using docker logs pawns<UNIQUE_ID>0 (adjusting the suffix for your specific container instance).

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →