
This add-on is operated by Express Nodes
High-Quality Dedicated IPs (HTTPs/SOCKS5) | Unlimited Bandwidth for $300
Express Nodes Dedicated IP
Last updated April 21, 2025
This is a draft article - the text and URL may change in the future. This article is unlisted. Only those with the link can access it.
The Express Nodes Dedicated IP add-on is currently in beta.
Table of Contents
Express Nodes Dedicated IP is an add-on that empowers your Heroku applications with two static, dedicated IP addresses for outbound traffic. With both IPs equal in quality and performance, you have the flexibility to balance your requests or use one as a fallback.
Whether you choose the Test plan with 10GB of bandwidth and shared static IPs, or the Unlimited plan with unlimited bandwidth and fully dedicated static IPs, your app always benefits from high-quality, fresh, and cooled-down IPs. In addition, the IPs supports HTTP/HTTPs and SOCKSv5 protocols, making it compatible with virtually any language or framework.
Key Features
- Two IPs per plan: Ensure redundancy and failover.
- High-quality IPs: Corporate level IPs - Fresh, cooled-down IPs.
- Protocol support: HTTP and SOCKS5.
Provisioning the Add-on
To get started, add Express Nodes Dedicated IP to your Heroku application using the CLI.
For the Unlimited plan (2 dedicated static IPs, unlimited bandwidth), run:
heroku addons:create dedicatedip:unlimited --app example-app-name
For the Test plan (2 shared static IPs, 1GB bandwidth), run:
heroku addons:create dedicatedip:test --app example-app-name
After successful provisioning, this message displays:
IPs Provisioned Successfully
Created dedicatedip as DEDICATED_IP_HTTP_PROXY_1, DEDICATED_IP_HTTP_PROXY_2, DEDICATED_IP_SOCKS_PROXY_1, DEDICATED_IP_SOCKS_PROXY_2
After installing the add-on, the application is fully integrated with the add-on.
View Assigned IPs
Run this command to view the details of IPs provisioned to your app:
heroku config
Test Your IP Connection
Run the following command to test the connection:
curl -x "$DEDICATED_IP_HTTP_PROXY_1" https://ipinfo.io
Dashboard Overview
We provide an easy to use dashboard so you can mange your services and IPs. Here’s how you can log into the dashboard:
heroku addons:open dedicatedip --app example-app-name
We use Heroku’s SSO which automatically logs you into our dashboard.
Local Setup
To ensure your development environment accurately mirrors production, replicate the Express Nodes Dedicated IP configuration locally. Environment parity enables you to test your app against our proxy service without needing to deploy every change.
Environment Setup
Express Nodes Dedicated IP adds several config variables to your Heroku app, as noted in the message shown after provisioning. These variables include:
DEDICATED_IP_HTTP_PROXY_1
DEDICATED_IP_SOCKS_PROXY_1
DEDICATED_IP_HTTP_PROXY_2
DEDICATED_IP_SOCKS_PROXY_2
You can use the Heroku Local command-line tool to set up your development environment. Heroku Local reads configuration variables from a .env
file, so you should replicate the necessary variables locally. Run the following commands to append each variable to your .env
file:
heroku config:get --app example-app-name DEDICATED_IP_HTTP_PROXY_1 -s >> .env
heroku config:get --app example-app-name DEDICATED_IP_SOCKS_PROXY_1 -s >> .env
heroku config:get --app example-app-name DEDICATED_IP_HTTP_PROXY_2 -s >> .env
heroku config:get --app example-app-name DEDICATED_IP_SOCKS_PROXY_2 -s >> .env
Never commit credentials and other sensitive configuration values to source control. To prevent accidental commits, add the .env
file to your .gitignore
file:
echo .env >> .gitignore
Use With Ruby
Here’s a simple example using Ruby’s built-in Net::HTTP library, no additional gems required. This snippet demonstrates how to route your outbound requests via Express Nodes Dedicated IP using the HTTP proxy.
require 'net/http'
require 'uri'
# Parse the proxy URL from the environment variable.
proxy_uri = URI.parse(ENV['DEDICATED_IP_HTTP_PROXY_1'])
# Create an HTTP object that uses the proxy.
http = Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port, proxy_uri.user, proxy_uri.password)
# Specify the target URL.
uri = URI.parse('http://ipinfo.io/ip')
# Send the GET request via the proxy.
response = http.get(uri)
puts "Your IP is: #{response.body.strip}"
Set the appropriate environment variable, DEDICATED_IP_HTTP_PROXY_1
, in your Heroku app configuration or local environment, and you’re ready to go. This minimal setup ensures that your Ruby application can reliably route its requests through our static IPs without any extra dependencies.
Use with Python
Express Nodes Dedicated IP works seamlessly with Python’s popular HTTP libraries. Here are a few examples to help you get started without any extra dependencies.
Using the Requests Library
You can specify the proxy URLs directly using a proxy dictionary:
import os
import requests
# Create a proxy dictionary using the environment variables.
proxies = {
"http": os.getenv('DEDICATED_IP_HTTP_PROXY_1')
}
# Make a request through the proxy.
response = requests.get("http://ipinfo.io/ip", proxies=proxies)
print("Your IP is:", response.text.strip())
Alternatively, set the proxy globally so all requests automatically use it:
import os
import requests
# Set global proxy environment variables.
os.environ['http_proxy'] = os.getenv('DEDICATED_IP_HTTP_PROXY_1')
# Any subsequent requests use the defined proxies.
response = requests.get("http://ipinfo.io/ip")
print("Your IP is:", response.text.strip())
Use with PHP
Express Nodes Dedicated IP integrates with PHP using cURL. Here are examples for both HTTP and SOCKS5 proxies.
HTTP Proxy with PHP cURL
Use the following PHP code to send a request via our HTTP proxy:
<?php
function proxyRequest() {
// Get the HTTP proxy URL from the environment variable.
$proxy = getenv("DEDICATED_IP_HTTP_PROXY_1");
// Initialize cURL with the target URL.
$ch = curl_init("https://ipinfo.io/ip");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Set the proxy for the cURL request.
curl_setopt($ch, CURLOPT_PROXY, $proxy);
// Execute the request.
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
$response = proxyRequest();
print($response);
?>
Migrating Between Plans
You can upgrade or downgrade your Express Nodes Dedicated IP plan by passing the plan name with the Heroku CLI. For example:
To upgrade to the Unlimited plan:
If you upgrade your plan from Test to other plans, you get new dedicated IPs as the Test plan has shared IPs. Your IPs remain unchanged when migrating between paid plans.
heroku addons:upgrade dedicatedip:unlimited --app example-app-name
To downgrade to Test plan:
If you downgrade from a paid plan to the Test plan, you lose your dedicated IPs and your app gets assigned shared IPs. The Test plan is only meant for testing the add-on.
heroku addons:upgrade dedicatedip:test --app example-app-name
You can only subscribe to the Test plan once per application to avoid any abuse of our service.
Removing The Add-on
Run this command to remove the add-on.
When you remove the add-on, the IPs provisioned to your app terminate, which can affect your application if you configured proxies for use in scripts or outbound requests.
heroku addons:destroy dedicatedip --app example-app-name
FAQs
Can I access external databases like MySQL or Postgres?
Yes, you can connect to external databases using the proxy.
Can I allowlist my IP elsewhere?
Absolutely, if you’re on a paid plan. Since paid plans have static IPs dedicated to you, it’s perfect for firewall allowlisting, database access, API restrictions, and more. It’s ideal to allowlist both IPs simultaneously so if there’s a need to change one IP, you’re not locked out. It’s not recommended to allowlist IPs if you’re on the Test plan.
Support
You’re covered with premium support. If you have any issues related to the service, or if you want to understand more about the IPs and services, Express Nodes’ award-winning support team is always there to help. Reach out to hello@expressnodes.com.