Running a Replit deployment? Your app is a container, so every run and redeploy hands it a fresh outbound IP. That breaks IP whitelists, rate limits, and payment keys. Drop a proxy into Replit Secrets for two fixed static EU IPs.
# In Replit, open Tools > Secrets
HTTPS_PROXY=https://user:pass@eu-01.outboundgateway.com:8443
# main.py
import requests
r = requests.get(
"https://discord.com/api/webhooks/..",
json={"content": "deploy ok"}
)
# leaves through the static EU IP
The thing people hit on Replit isn't a missing feature in their code. It's that the network identity under their app won't sit still, and there's no switch on the platform to fix it.
Replit doesn't offer a reserved outbound IP for Deployments or Always-on tasks. If your script talks to an API that only allows specific addresses, there is no platform toggle that hands you one. You either remove the restriction or proxy the traffic.
Each deployment run spins up a fresh container with a fresh egress IP. Whitelists go stale, Discord or Slack webhooks start returning 401 or 403, and the only clue is that your bot quietly stopped posting overnight.
A lot of the APIs people call from Replit (scraping targets, social platforms, free-tier services) throttle or challenge by IP. A rotating address reads as a bot, so you collect CAPTCHAs and HTTP 429s instead of data.
When a Replit prototype grows into something that charges real money, the payment provider usually wants the requests to come from a fixed address. Replit's moving egress makes that hard to promise, which blocks the move out of "demo" mode.
"My Replit bot worked at midnight and was blocked by morning, because it redeployed onto a new IP."
What you actually want is an address that doesn't care how often the container restarts.
Your Replit app
HTTPS Proxy
(Static EU IP)
External API
Whatever API your Replit app calls, the request now leaves from the same pair of EU addresses every time. Two IPs back the account, and if one is briefly down the other takes over.
requests, fetch, axios, aiohttp) honour HTTPS_PROXY without code changes.
Running Discord and Slack bots, scrapers, and automations on Replit that keep getting blocked because the source IP changed under them.
Shipping MVPs fast on Replit that talk to gated APIs, and who can't afford to spend a day wiring up infrastructure just to get a stable address.
Hosting projects on Replit that call region- or IP-restricted services, and who need their requests to come from one predictable EU address.
Accountable for where their Replit-hosted services send data, who want a documented, stable EU egress instead of an ever-changing address.
Add the proxy as a Replit Secret. Your outbound requests then leave through your fixed EU IP, and your app code stays as-is.
In Replit, open Tools > Secrets and add HTTPS_PROXY. The requests library reads it automatically, so a normal request like this Discord webhook post already goes out through your static IP.
# Replit Secret
HTTPS_PROXY=https://user:pass@eu-01.outboundgateway.com:8443
WEBHOOK_URL=https://discord.com/api/webhooks/123/abc
import os
import requests
# requests honours HTTPS_PROXY from the environment automatically
r = requests.post(
os.environ["WEBHOOK_URL"],
json={"content": "Deploy finished OK"},
)
print(r.status_code) # 204 on success
Node's fetch doesn't read the env var on its own, so pass the proxy explicitly with https-proxy-agent. Same Secret, wired into the agent.
// Replit Secrets
HTTPS_PROXY=https://user:pass@eu-01.outboundgateway.com:8443
WEBHOOK_URL=https://discord.com/api/webhooks/123/abc
const { HttpsProxyAgent } = require('https-proxy-agent');
const agent = new HttpsProxyAgent(process.env.HTTPS_PROXY);
// This POST leaves through your static EU IP
const res = await fetch(process.env.WEBHOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ content: 'Deploy finished OK' }),
agent,
});
console.log(res.status); // 204
Two IPs, so one bad box doesn't take your bot down
Your account comes with two static IP addresses (for example 51.xx.xx.10 and 51.xx.xx.11). Whitelist both wherever you register a source IP. If one proxy node is briefly unavailable, traffic shifts to the other, so an overnight redeploy isn't the thing that knocks your Replit app offline.
📖 Want the longer version? Worked examples, error handling, and other languages are in the Python SSL Proxy Guide, Node.js Guide, and the rest of the docs.
If your Replit app sends data anywhere, it helps to control where that traffic leaves from. EU-hosted egress keeps the outbound path predictable.
The proxy runs in EU data centres, so your Replit app's outbound traffic leaves from European infrastructure rather than wherever the container happens to be scheduled.
Because TLS passes straight through, the proxy never decodes your webhook URLs, API tokens, or request bodies. It forwards encrypted bytes; it doesn't read them.
Traffic doesn't bounce through US infrastructure on its way out, which removes a common wrinkle from GDPR data-transfer reviews.
When someone asks where your Replit app sends data from, the answer is two fixed EU addresses, not a list that changes every release. The failover pair covers maintenance windows.
Two addresses to register, with automatic failover between them, so your outbound traffic isn't riding on a single point of failure.
Add one Secret and your existing requests, fetch, or axios code starts routing through the proxy. The rest of the repl is untouched.
European data centres and a GDPR-conscious setup, so the outbound side of your Replit app leaves from a predictable EU address.
The address stays constant across restarts, autoscaling, and Always-on wake-ups, so whitelists and webhook trust keep working.
TLS passthrough means the proxy can't read your traffic. Tokens, webhook URLs, and scraped payloads stay private the whole way.
Starting from €29/month. Flexible plans for every scale. Cancel anytime.
Stop letting container restarts choose which IP your app calls from. Add one Secret and every outbound request leaves from a stable, GDPR-conscious address.
€29/month starter plan • 7-day refund policy • Direct founder support
No. Replit runs your app in a container, and that container's egress address can change between runs and redeployments. There is no platform switch that reserves a fixed outbound IP for a Deployment or Always-on task, which is why teams add a proxy in Secrets to supply one.
Add it as a Replit Secret under Tools, using the key HTTPS_PROXY and the proxy URL as the value. HTTP clients like requests pick that up automatically. For Node's fetch, pass the same Secret into an https-proxy-agent. Keep the proxy URL in Secrets so it isn't committed to your code.
Often, yes. Those services commonly throttle or flag requests by source IP, and Replit's rotating addresses can read as bot activity. A consistent IP that makes steady, identifiable requests is less likely to trip rate limits or CAPTCHAs than a stream of brand-new addresses. It won't bypass a legitimate block on your account, but it removes IP churn as a cause.
Happy to talk through how a two-IP egress fits your specific Replit setup, whether it's a Discord bot, a scraper, or a payment prototype.
Contact Our Founders →