techthinkerorg/squid

By techthinkerorg

Updated almost 2 years ago

Squid is Ubuntu Proxy Server managed by Canonical. Ref: https://hub.docker.com/r/ubuntu/squid

Image
Networking
Developer tools
Content management system
0

639

techthinkerorg/squid repository overview

Squid

Squid is a proxy cache server.

Uses

  • Open Chromium browser with proxy
chromium --proxy-server="https=server-ip:3128;http=server-ip:3128"
  • For firefox, use proxy settings and use same http and http proxy as server-ip and port 3128.

  • Note: Login credentials will ask on Prompt in browser if required. If you need tunnel you can use ssh. ssh -L 3128:server-ip:3128 username@server-ip. Then in your new proxy host will be localhost and port will be 3128.

Available Versions:

  • edge and v1.0.0 version has very basic squid. It is not configured, So, squid.conf need to download and put in deployment. Kubernetes deployments are based on these versions.
  • v2.0.0 has pre-configured authentication setup.

Note

  • For v2.0.0 or higher you do not need to download and put squid.conf.
  • Environment variables - AUTH_REQUIRED=true/false, USERNAME and PASSWORD.

Docker-compose

version: "3"

services:
  squid:
    image: techthinkerorg/squid:v2.0.0
    container_name: squid
    ports:
      - "3128:3128"
    environment:
      - AUTH_REQUIRED=true
      - USERNAME=squid
      - PASSWORD=squid1234
    volumes:
      - data:/var/spool/squid
volumes:
  data:

Deploy with Kubernetes

Works with any Kubernetes; if you don't have one, we recommend you install MicroK8s and microk8s.enable dns storage then snap alias microk8s.kubectl kubectl.

Download squid.conf and squid-deployment.yml and set containers.squid.image in squid-deployment.yml to your chosen channel tag (e.g. ubuntu/squid:5.2-22.04_beta), then:

kubectl create configmap squid-config --from-file=squid=squid.conf
kubectl apply -f squid-deployment.yml

You can now access the squid proxy on port 3128

File: squid.conf

acl localnet src 0.0.0.1-0.255.255.255	# RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8		# RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10		# RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16 	# RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12		# RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16		# RFC 1918 local private network (LAN)
acl localnet src fc00::/7       	# RFC 4193 local private network range
acl localnet src fe80::/10      	# RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443		# https
acl Safe_ports port 70		# gopher
acl Safe_ports port 210		# wais
acl Safe_ports port 1025-65535	# unregistered ports
acl Safe_ports port 280		# http-mgmt
acl Safe_ports port 488		# gss-http
acl Safe_ports port 591		# filemaker
acl Safe_ports port 777		# multiling http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access allow localnet
http_access deny all
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern .		0	20%	4320
logfile_rotate 0

File: squid-deployment.yml

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: squid-volume-claim
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: microk8s-hostpath
  resources:
    requests:
      storage: 500M
---
apiVersion: v1
kind: Service
metadata:
  name: squid-service
  labels:
    app: squid
spec:
  ports:
  - port: 3128
  selector:
    app: squid
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: squid-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: squid
  template:
    metadata:
      labels:
        app: squid
    spec:
      containers:
      - name: squid
        image: ubuntu/squid:edge
        ports:
        - containerPort: 3128
          name: squid
          protocol: TCP
        volumeMounts:
        - name: squid-config-volume
          mountPath: /etc/squid/squid.conf
          subPath: squid.conf
        - name: squid-data
          mountPath: /var/spool/squid
      volumes:
        - name: squid-config-volume
          configMap:
            name: squid-config
            items:
            - key: squid
              path: squid.conf
        - name: squid-data
          persistentVolumeClaim:
            claimName: squid-volume-claim

Tag summary

Content type

Image

Digest

sha256:e9773874c

Size

93.8 MB

Last updated

almost 2 years ago

docker pull techthinkerorg/squid:v2.0.0