Ansible deployment for AR.IO Gateway nodes.
-
Clone the repository
git clone <repo-url> cd fluence-ar.io-deployment
-
Create and activate venv
uv venv source .venv/bin/activate
-
Install dependencies
uv sync
-
Configure Fluence Cloud API Create
fluence-vm.yml
with your API credentials:api_key: "your-fluence-api-key" ssh_key_name: "your-ssh-public-key"
-
Create VMs via Fluence Cloud
make create-vm VM_NAME=ar-io-node-1 # Creates VM and adds to inventory make create-vm VM_NAME=ar-io-node-2 # Create additional VMs as needed make list-vms # Verify VMs are created
-
Configure vault Create
group_vars/ar_io_nodes/vault.yml
with your wallet addressesvault_ar_io_wallet: "your-arweave-wallet-address-43-characters-long" vault_observer_wallet: "observer-wallet-address-43-characters-long"
-
Deploy AR.IO Gateway
make test # Test connectivity to created VMs make deploy-ar-io # Deploy the gateway to all VMs
-
Test your gateway
curl -k --tlsv1.2 https://VM-IP/info
playbooks/
- AR.IO deployment playbooksinventory/
- Server inventoriesgroup_vars/
- Group variables and vault filesroles/
- Reusable Ansible rolessecrets/
- Sensitive data (git-ignored)
make help # Show available commands
make create-vm VM_NAME=ar-io-node-X # Create new VM
make delete-vm # Delete VM (interactive selection)
make list-vms # List all VMs
make test # Test server connectivity
make deploy-ar-io [HOST=hostname] # Deploy AR.IO gateway
make cleanup-ar-io [HOST=hostname] # Remove AR.IO installation
Edit fluence-vm.yml
:
api_key
: Your Fluence Cloud API keyssh_key_name
: SSH key name registered in your Fluence account
Edit group_vars/ar_io_nodes/vault.yml
:
vault_domain_name
: Your server IP or domainvault_ar_io_wallet
: Your Arweave wallet addressvault_observer_wallet
: Observer wallet address (can be same as above)
If you have a domain with wildcard DNS setup:
- Uncomment
ARNS_ROOT_HOST
in the deployed.env
file - Set it to your domain name
- Restart the containers
- Gateway serves content directly without ARNS redirects by default
- Self-signed SSL certificates are generated automatically
- Check container logs:
sudo docker-compose logs -f
in/opt/ar-io-node