How to Configure the Titan Network Identity Hash in InternetIncome

Set the TITAN_HASH variable in properties.conf with your Titan Network identity hash, then execute internetIncome.sh to automatically register your device and launch the edge node.

The InternetIncome repository by engageub automates passive income generation by orchestrating Docker containers for various decentralized networks, including Titan Network. To activate this integration, you must supply a unique identity hash that binds your physical device to your Titan account, enabling the script to pull the nezha123/titan-edge image and execute the required binding API call.

Obtaining Your Titan Network Identity Hash

Before editing configuration files, generate your identity hash through Titan Network's registration flow.

  • Visit the Titan Network registration page at https://test1.titannet.io/intiveRegister?code=ILOgrq.
  • Complete the account creation process.
  • Copy the displayed hash (a long alphanumeric string) that uniquely identifies your device.

This hash acts as your authentication credential for the Titan Network edge node.

Configuring TITAN_HASH in properties.conf

The script reads your identity hash from the TITAN_HASH variable defined in properties.conf at lines 62–64.

Open the configuration file and locate the section labeled "Titan Network Identity Code". Set the variable using single quotes to prevent shell interpretation errors:


# Titan Network Identity Code

TITAN_HASH='your-obtained-hash-here'

Alternatively, use sed to programmatically update the value:

sed -i "s/^TITAN_HASH=.*/TITAN_HASH='abc123def456ghi789'/" properties.conf

As implemented in engageub/internetincome, the script sources this file during startup and validates the presence of TITAN_HASH before attempting any Docker operations.

Running the Script to Bind Your Device

Once configured, start InternetIncome to trigger the automated binding sequence:

sudo bash internetIncome.sh --start

During execution, the script performs the following actions defined in internetIncome.sh (lines 1028–1050):

  • Detects that TITAN_HASH is populated.
  • Pulls the nezha123/titan-edge Docker image.
  • Creates a persistent volume at $PWD/$titan_data_folder/data$i with 777 permissions.
  • Launches the container with the volume mounted to /root/.titanedge.
  • Executes the binding command:
sudo docker run --rm -it $titan_volume nezha123/titan-edge bind --hash=$TITAN_HASH https://api-test1.container1.titannet.io/api/v2/device/binding

If the hash is missing, the script outputs: "Titan Network Hash is not configured. Ignoring Titan Network."

Technical Implementation Details

The Titan Network integration follows a specific orchestration pattern in internetIncome.sh. The script stores container state in a bind-mounted volume located at $PWD/$titan_data_folder/data$i, ensuring persistence across restarts.

Key implementation characteristics include:

  • Image: nezha123/titan-edge (pulled only if container_pulled is false).
  • Volume mount: --mount type=bind,source=$PWD/$titan_data_folder/data$i,target=/root/.titanedge.
  • API endpoint: https://api-test1.container1.titannet.io/api/v2/device/binding.
  • Container naming: titan$UNIQUE_ID$i with restart-always policy.

The binding API call uses a temporary container (--rm) that exits immediately after registering the device hash with Titan's servers.

Single-Device Limitations and Constraints

The current implementation enforces strict single-device support per script instance.

If you attempt to run multiple Titan nodes, the script prints a reminder at line 1044: "The current script is designed to support only a single device for the Titan Network." To operate multiple devices, you must:

  • Duplicate the entire InternetIncome script folder.
  • Configure a different TITAN_HASH in each copy's properties.conf.
  • Run each instance separately.

Additionally, do not delete the $PWD/$titan_data_folder/data$i directory unless you intend to reset the device binding and lose accumulated state.

Summary

  • Obtain your identity hash from the Titan Network registration portal.
  • Configure the TITAN_HASH variable in properties.conf (lines 62–64) using single quotes.
  • Execute sudo bash internetIncome.sh --start to automatically pull the Docker image and bind your device via the API endpoint.
  • Limit deployments to one device per script instance; duplicate the folder for additional nodes.
  • Preserve the data folder at $PWD/$titan_data_folder/data$i to maintain device state and avoid re-binding.

Frequently Asked Questions

What happens if I don't set TITAN_HASH?

If the TITAN_HASH variable is empty or undefined in properties.conf, the script skips Titan Network initialization entirely. According to lines 1046–1049 in internetIncome.sh, the script outputs "Titan Network Hash is not configured. Ignoring Titan Network.." and continues with other enabled services.

Can I run multiple Titan Network nodes with one InternetIncome installation?

No. As explicitly coded in internetIncome.sh at line 1044, the script supports only a single Titan device per instance. To run multiple nodes, create separate copies of the InternetIncome folder, configure unique hashes in each properties.conf, and execute them independently.

Where is my Titan node data stored?

The script creates a bind-mounted volume at $PWD/$titan_data_folder/data$i (where $i represents the instance index). This directory maps to /root/.titanedge inside the container and stores your node's identity and state. Deleting this folder requires re-binding the device with Titan Network.

How do I update my Titan identity hash after initial configuration?

Edit properties.conf to replace the existing TITAN_HASH value, then restart the script. However, if the node has already been bound, you may need to stop and remove the existing container (docker stop titan$UNIQUE_ID$i && docker rm titan$UNIQUE_ID$i) and delete the data folder to force a fresh registration with the new hash.

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 →