Skip to main content
Scraper API

How to Make Proxies with Linode: A Complete Technical Guide [2026]

8 min read

Making Proxies with Linode: A Deep Dive into VPS Proxy Networks

Creating your own proxy network using a Virtual Private Server (VPS) provider like Linode is one of the most cost-effective ways to generate datacenter proxies. Unlike "shared" proxies sold by many providers, building your own ensures you are the sole user of the IP address, resulting in better performance, security, and anonymity. In 2025, Linode (now part of Akamai) remains a top choice for this due to its competitive pricing, robust API, and global data center presence.

Why Build Your Own Proxies?

Before diving into the technical implementation, it is crucial to understand *why* this approach is superior for many use cases.

1. Cost Efficiency: A Linode Nanode ($5/month) can often be cheaper than purchasing private proxies from a vendor, especially if you need bulk IPs. 2. IP Hygiene: You are the first person to use the IP address. Commercial proxies are often "burned" (blacklisted) because they have been sold and resold to thousands of users. 3. Control: You have root access. You can configure authentication, logging, and encryption exactly how you need it.

Risks and Limitations

It is important to distinguish between Datacenter Proxies (what you create on Linode) and Residential Proxies. Linode IPs are registered to Akamai/Linode data centers. Sophisticated websites (like sneaker sites or banks) often flag or block datacenter IPs immediately.

---

Phase 1: Initial Server Deployment

The foundation of a good proxy is a stable server. Follow these steps to set up the environment.

1. Server Selection

  • OS: Ubuntu 22.04 LTS is recommended for stability and package compatibility.
  • Plan: A "Nanode" (1GB RAM, 1 CPU) is sufficient for basic proxying. If you require intense encryption or heavy logging, consider upgrading to 2GB or 4GB.
  • Location: Select a region geographically close to your target (e.g., London for UK targets, Tokyo for Asian targets).

2. Initial Security Setup

Once your Linode is running, SSH into the root account. The first step is always to secure the VPS.

Update the system:

apt update && apt upgrade -y

Install a utility (optional but recommended):

apt install -y ufw fail2ban

---

Phase 2: Installing Squid Proxy Server

Squid is the industry standard for caching and proxying web traffic. It is robust, highly configurable, and open-source.

Install Squid:

apt install squid -y

Once installed, the main configuration file is located at /etc/squid/squid.conf. Before editing, always create a backup.

cp /etc/squid/squid.conf /etc/squid/squid.conf.backup

Configuring squid.conf

Open the file using a text editor like nano or vim.

nano /etc/squid/squid.conf

There are three main changes we need to make:

1. Define the Access Control List (ACL)

By default, Squid denies all access. We need to allow connections. You can restrict this by specific IP (safer) or allow all (risky, only if using authentication).

*To allow your specific local IP (replace x.x.x.x with your public IP):*

acl localnet src x.x.x.x

http_access allow localnet

2. Set the Port

Ensure the http_port directive is set. Default is 3128.

http_port 3128

3. Disable Via Header (Optional Anonymity)

To make your proxy slightly more anonymous, you can disable the Via header which indicates the request went through a proxy.

via off

forwarded_for delete

Save and exit the editor. Restart Squid to apply changes.

systemctl restart squid

---

Phase 3: Authentication (Crucial for Security)

An open proxy (one without a password) on the public internet is a disaster waiting to happen. It will be hijacked by spammers within hours, and your Linode account will likely be flagged for abuse. Always enable authentication.

We will use HTTP Basic Authentication.

1. Install the helper:

    apt install apache2-utils -y

2. Create a password file: Create a user (e.g., proxy_user). You will be prompted to enter a password.

    htpasswd -c /etc/squid/passwd proxy_user

3. Configure Squid to use the file: Open /etc/squid/squid.conf again. Add the following lines near the top of the auth section:

    auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd

auth_param basic realm Proxy Authentication Required acl authenticated proxy_auth REQUIRED http_access allow authenticated

Important: Ensure http_access deny all is the last line in your access section. Restart Squid again:

systemctl restart squid

---

Phase 4: Firewall Configuration

You must open the port in the Linode firewall to allow traffic.

ufw allow 3128/tcp

Also, ensure the Linode Cloud Firewall (in the Linode dashboard GUI) allows Inbound traffic on TCP port 3128.

---

Phase 5: Automating Proxy Creation with Python

Manually setting up servers is tedious. As a scraping expert, you should automate the deployment of proxies. Linode provides a robust Python SDK (linode-api4).

Prerequisites

pip install linode-api4

Python Script for Auto-Deployment

This script initializes a new Linode, installs Squid, and configures authentication automatically using cloud-init.

import os

from linode_api4 import LinodeClient, Instance

1. Authenticate

token = os.getenv('LINODE_TOKEN') client = LinodeClient(token)

2. Configuration

REGION = 'us-east' PLAN = 'g6-nanode-1' # 1GB RAM LABEL = 'proxy-server-1'

3. Cloud-Init Script (Runs on first boot)

This handles the entire Squid setup automatically

user_data = '''#cloud-config package_update: true package_upgrade: true runcmd: - apt install squid apache2-utils -y - echo 'auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd' >> /etc/squid/squid.conf - echo 'auth_param basic realm Proxy' >> /etc/squid/squid.conf - echo 'acl authenticated proxy_auth REQUIRED' >> /etc/squid/squid.conf - echo 'http_access allow authenticated' >> /etc/squid/squid.conf - echo 'http_access deny all' >> /etc/squid/squid.conf - htpasswd -bc /etc/squid/passwd admin mysecretpassword - ufw allow 3128/tcp - systemctl restart squid '''

4. Create the Instance

print(f"Deploying {LABEL}...") instance = client.instance_create( ltype=PLAN, region=REGION, image='linode/ubuntu22.04', root_pass='ComplexRootPass123!', label=LABEL, user_data=user_data )

print(f"Instance created. IP: {instance.ipv4}") print("Waiting for boot and cloud-init (approx 3 mins)...")

This script eliminates 90% of the manual work required in Phase 2 and 3.

---

Phase 6: Building a Rotating Proxy Pool

A static IP gets blocked easily. For web scraping, you need a Rotating Proxy. This is where Linode shines because of its API speed.

Strategy

1. Deploy 10+ Linodes in different regions using the Python script above. 2. Gather the list of IP addresses. 3. Use a "Proxy Rotator" middleware (written in Python) to sit between your scraper and the Linodes.

Simple Rotator Logic in Python

import random

import requests

Your list of Linode IPs with authentication

proxy_list = [ 'http://admin:mysecretpassword@139.144.10.1:3128', 'http://admin:mysecretpassword@104.200.22.5:3128', 'http://admin:mysecretpassword@172.105.180.2:3128', # ... add more IPs ]

def get_random_proxy(): return random.choice(proxy_list)

def fetch_url(url): proxy = get_random_proxy() proxies = { 'http': proxy, 'https': proxy } try: response = requests.get(url, proxies=proxies, timeout=10) print(f"Success via {proxy} - Status: {response.status_code}") return response.text except Exception as e: print(f"Failed with {proxy} - Error: {e}") return None

fetch_url('http://httpbin.org/ip')

Advanced Optimization: 3Proxy vs Squid

While Squid is the standard, 3proxy is a lighter alternative often preferred by proxy sellers.

| Feature | Squid | 3Proxy | | :--- | :--- | :--- | | Resource Usage | Moderate | Very Low | | Configuration | Complex (File-based) | Simple (Chain syntax) | | Performance | High | Very High | | Rotation | External (Scripts) | Built-in support possible |

If you intend to run hundreds of proxies on a single large instance (dedicated server), 3proxy is generally the better choice. For individual Linode VPS instances, Squid is perfectly adequate and easier to secure.

Summary Checklist for 2025

1. [ ] Create Linode Account & Generate API Token. 2. [ ] Deploy Ubuntu 22.04 instance. 3. [ ] Run apt install squid apache2-utils -y. 4. [ ] Create user with htpasswd. 5. [ ] Configure squid.conf for auth_required. 6. [ ] Open Port 3128 via UFW and Cloud Firewall. 7. [ ] Test connection locally or via Python script.

By following this methodology, you transition from a passive consumer of proxy services to an active architect of your own infrastructure, reducing costs and increasing the reliability of your data extraction projects.

Share: