Home > Software > How to Deploy a Squid Proxy Server with Docker Compose on Ubuntu

How to Deploy a Squid Proxy Server with Docker Compose on Ubuntu

Anastasios Antoniadis

Learn how to deploy a Squid proxy server using Docker Compose on Ubuntu with our easy-to-follow guide. Includes steps on creating a Docker Compose file, setting up a basic Squid configuration, and verifying your Squid container is running effectively.

Docker (1)

Squid is a popular caching and forwarding HTTP web proxy. It is widely used for enhancing web performance by caching repeated requests, filtering content, and accessing geo-restricted content. Deploying Squid within a Docker container offers the benefits of isolation, ease of deployment, and scalability. This article provides a step-by-step guide on how to deploy a Squid proxy server using Docker Compose on an Ubuntu system, including a basic Docker Compose example.

Prerequisites

  • Ubuntu Server: A system running Ubuntu. While the steps provided should work on most versions of Ubuntu, it’s recommended to use the latest LTS version for better support.
  • Docker: Ensure Docker is installed on your Ubuntu system. If not, you can install it by following the official Docker documentation.
  • Docker Compose: Ensure Docker Compose is installed. Instructions for installing it are in the Docker documentation.

Step 1: Prepare Your Environment

Create a directory for your Squid project. This directory will contain your Docker Compose file and Squid configuration files.

mkdir squid-docker && cd squid-docker

Step 2: Create a Docker Compose File

Create a docker-compose.yml file within the directory. This file will define the Squid service, using an Ubuntu base image and installing Squid on top of it.

version: '3'
services:
  squid:
    image: ubuntu:latest
    container_name: squid_proxy
    ports:
      - "3128:3128"
    volumes:
      - ./squid.conf:/etc/squid/squid.conf
    command: bash -c "apt-get update && apt-get install -y squid && squid -N -d 1 -f /etc/squid/squid.conf"

This configuration does the following:

  • image: Uses the latest Ubuntu image as the base.
  • container_name: Names the container squid_proxy for easier reference.
  • ports: Maps port 3128 on the host to port 3128 in the container, which is the default Squid port.
  • volumes: Mounts a custom Squid configuration file from the host to the container. You will create this file in the next step.
  • command: Updates the package lists for the Ubuntu image, installs Squid, and then runs Squid with the custom configuration file.

Step 3: Create a Squid Configuration File

Before starting the container, you need to create a squid.conf file in the same directory as your docker-compose.yml. This file will be your Squid configuration file. Here is a very basic example to get you started:

http_port 3128
cache_dir ufs /var/spool/squid 100 16 256
cache_log /var/log/squid/cache.log
access_log /var/log/squid/access.log
http_access allow all

This configuration sets up Squid to listen on port 3128, defines a cache directory, and allows HTTP access to all requests. You can customize this configuration based on your requirements.

Step 4: Start the Squid Container

With your docker-compose.yml and squid.conf files ready, you can now start the Squid container:

docker compose up -d

This command will pull the Ubuntu image, create a container according to your Docker Compose file, and start the container in detached mode.

Step 5: Verify Squid is Running

Verify that the Squid proxy is up and running by checking the logs of the container:

docker logs squid_proxy

You should see Squid’s startup logs, indicating that it is running and listening on port 3128.

Conclusion

Deploying Squid with Docker Compose on Ubuntu offers a scalable and isolated environment for your proxy needs. Following the steps outlined in this guide, you can have a Squid proxy server up and running in minutes. This setup is ideal for development, testing environments, or small deployments. Consider customizing your Squid configuration for production environments to suit your security, performance, and logging requirements.

Anastasios Antoniadis
Follow me
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x