L’accès à internet est devenu une partie intégrante de notre vie quotidienne, que ce soit pour le travail, les loisirs ou la communication. Cependant, la rapidité de navigation sur le Web peut être entravée par divers facteurs, tels que la bande passante limitée, le trafic réseau dense et les temps de latence élevés. C’est là que les solutions de mise en cache, comme Squid Cache, entrent en jeu pour améliorer considérablement l’expérience utilisateur en optimisant le processus de récupération de contenu en ligne.
Cet article a donc pour but de vous permettre de mettre en place Squid Cache comme un proxy cache HTTP et HTTPS !
Introduction
Squid Cache est un serveur proxy et un logiciel de mise en cache open source qui agit comme un intermédiaire entre les utilisateurs et les serveurs Web. Il fonctionne en stockant temporairement les données web souvent utilisées sur un serveur local, permettant ainsi aux utilisateurs de récupérer rapidement ces données sans avoir à accéder à nouveau au serveur d’origine. En d’autres termes, Squid Cache agit comme un gardien de contenu qui stocke localement les pages web, les images, les vidéos et d’autres ressources fréquemment demandées.
Lorsqu’un utilisateur accède à une ressource en ligne pour la première fois, Squid Cache vérifie si cette ressource est déjà stockée dans sa mémoire cache locale. Si c’est le cas, il la renvoie directement à l’utilisateur, ce qui accélère considérablement le temps de chargement. Si la ressource n’est pas présente dans la cache, Squid Cache la récupère depuis le serveur d’origine, la stocke localement et la renvoie à l’utilisateur. Les futures demandes de cette même ressource seront satisfaites à partir de la mémoire cache, réduisant ainsi le trafic sur le réseau et les temps de latence.
Fonctionnalités
Amélioration des performances : Squid Cache réduit les délais de chargement en fournissant des ressources stockées localement, ce qui permet aux utilisateurs d’accéder rapidement aux pages web et aux médias.
Réduction du trafic réseau : En stockant et en fournissant des ressources en cache, Squid Cache diminue le trafic entre les utilisateurs et les serveurs d’origine, allégeant ainsi la charge des serveurs et améliorant la bande passante globale.
Économie de bande passante : Les fournisseurs de services internet et les entreprises peuvent économiser de la bande passante en utilisant Squid Cache, car les ressources sont récupérées localement plutôt qu’à partir de serveurs distants.
Contrôle d’accès : Squid Cache permet également de mettre en place des politiques de contrôle d’accès pour restreindre l’accès à certains contenus, garantissant ainsi une utilisation appropriée du réseau.
Gestion du trafic : Les administrateurs réseau peuvent configurer Squid Cache pour distribuer intelligemment la charge du trafic sur plusieurs serveurs d’origine, optimisant ainsi les performances et la disponibilité.
Fichiers requis
docker-compose.yml
[Fichier]
version: "3.0"
#
# updated: 2023-08-10
# stack: squid
#
x-logging: &x-logging
logging:
driver: loki
options:
loki-url: "http://loki:3100/loki/api/v1/push"
loki-retries: "5"
loki-batch-size: "400"
keep-file: "false"
max-size: "100m"
max-file: "1"
x-environment: &x-environment
TZ: "Europe/Paris"
PUID: 1000
PGID: 1000
x-common: &x-common
<<: *x-logging
restart: "no"
stop_grace_period: 5s
stdin_open: true
tty: true
privileged: false
security_opt:
- no-new-privileges=true
cap_drop:
- ALL
cap_add:
- KILL
dns:
- 1.1.1.1
- 8.8.8.8
- 1.0.0.1
- 8.8.4.4
ipc: "shareable"
extra_hosts:
- "template.home:1.2.3.4"
user: 1000:1000
environment:
*x-environment
labels:
com.centurylinklabs.watchtower.enable: true
logging: "promtail"
com.stack.name: "common"
com.stack.service.name: "common"
devices:
- /dev/kmsg:/dev/kmsg
deploy:
resources:
limits:
cpus: "0.50"
memory: 64M
ulimits:
nproc: 65535
nofile:
soft: 20000
hard: 40000
tmpfs:
- /tmp:rw,noexec,nosuid,size=64k
sysctls:
net.core.somaxconn: 1024
net.ipv4.tcp_syncookies: 0
x-volume-timezone: &x-volume-timezone "/etc/timezone:/etc/timezone:ro"
x-volume-localtime: &x-volume-localtime "/etc/localtime:/etc/localtime:ro"
x-volume-docker-socket: &x-volume-docker-socket "/var/run/docker.sock:/var/run/docker.sock:rw"
x-volume-cgroups: &x-volume-cgroups "/proc/cgroups:/cgroup:rw"
x-volume-ssl: &x-volume-ssl "/opt/docker/ssl:/ssl:ro"
services:
squid:
<<: *x-common
user: 0:0
privileged: true
cap_add:
- DAC_OVERRIDE
- DAC_READ_SEARCH
- CHOWN
- FOWNER
- FSETID
- SETGID
- SETUID
- MKNOD
- SYS_ADMIN
- BPF
- SETFCAP
- SETPCAP
- SYS_CHROOT
- SYS_RAWIO
- IPC_LOCK
- IPC_OWNER
- NET_BIND_SERVICE
- NET_ADMIN
- NET_RAW
- NET_BROADCAST
container_name: squid
hostname: squid
image: distahl/squid:latest
restart: always
ports:
- "3128:3128"
- "3129:3129"
expose:
- "3128"
- "3129"
healthcheck:
test: [ "CMD", "squid", "--version" ]
interval: 30s
timeout: 30s
retries: 5
start_period: 30s
environment:
<<: *x-environment
PROXY_UID: 1000
PROXY_GID: 1000
labels:
com.stack.name: "squid"
com.stack.service.name: "squid"
deploy:
resources:
limits:
cpus: "4.0"
memory: 1G
tmpfs:
- /tmp:rw,noexec,nosuid,size=512M
volumes:
- *x-volume-timezone
- *x-volume-localtime
- *x-volume-cgroups
- /opt/docker/squid/conf:/etc/squid
- /opt/docker/squid/datas/logs:/var/log/squid
- type: tmpfs
target: /var/spool/squid
tmpfs:
size: 1G
mode: 01777
conf/conf.d/zhome.conf
[Fichier]
# 2023-08-10
cache_mgr hostmaster@local
visible_hostname squidcache
dns_defnames on
dns_nameservers 1.1.1.1 8.8.8.8 1.0.0.1 8.8.4.4
positive_dns_ttl 6 hours
negative_dns_ttl 1 minute
error_default_language fr
cache_dir aufs /var/spool/squid 1024 32 512 max-size=1048576
coredump_dir /var/spool/squid
#access_log daemon:/var/log/squid/access.log squid
access_log none
#cache_log /var/log/squid/cache.log
cache_log /dev/null
forwarded_for on
uri_whitespace strip
acl dynamic urlpath_regex cgi-bin \?
cache deny dynamic
redirect_children 16
memory_cache_mode always
cache_mem 1024 MB
maximum_object_size_in_memory 1 MB
memory_replacement_policy heap GDSF
cache_replacement_policy heap LFUDA
minimum_object_size 0 KB
maximum_object_size 4 MB
offline_mode off
cache_swap_low 90
cache_swap_high 95
cache allow all
request_body_max_size 0 KB
range_offset_limit 0
quick_abort_min 0 KB
quick_abort_max 0 KB
quick_abort_pct 70
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh\_pattern -i \(/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
http_access allow localhost
http_access allow localnet
Prérequis
Je pars du principe que vous utilisez Portainer, que vous savez vous servir d’un éditeur de texte et que vous connaissez vos machines.
Avant de commencer, assurez-vous d’avoir Docker installé sur votre serveur. Docker est une plateforme de virtualisation légère qui permet d’exécuter des applications dans des conteneurs isolés.
Il vous sera aussi nécessaire de créer les répertoires suivants :
- /opt/squid/conf/conf.d/
- /opt/squid/datas/logs/
Si vous choisissez de placer l’ensemble des fichiers ailleurs, il sera donc nécessaire de mettre à jour les chemins dans le docker-compose entre autre.
Ces informations doivent refléter votre propre besoin ou organisation sur votre disque.
Procédure
Par défaut, pour des raisons de sécurité, l'ensemble des répertoires que j'utilise est positionné avec les droits utilisateur 1000:1000. Ce sera donc à ajuster au besoin selon votre cas.
Lorsque c’est fait, vous créez une nouvelle stack sous Portainer et copier/coller le contenu du fichier docker-compose.yml dans l’éditeur et vous lancez sa création.
Exploitation
Lorsque Squid Cache sera lancé et plainement fonctionnel, il vous suffira de renseigner l’adresse ip du serveur hébergeant Squid et de spécifier le numéro de port3128.
Par exemple, pour Firefox celà se configure sous Paramètres /Paramètres réseaux / Paramètres comme suit :
Conclusion
Squid Cache est un outil puissant pour optimiser l’accès au contenu web, en accélérant la navigation et en améliorant l’expérience utilisateur. Son rôle de serveur proxy et de cache contribue à réduire les temps de latence, à économiser la bande passante et à alléger la charge des serveurs d’origine. Les entreprises, les fournisseurs de services internet et même les utilisateurs individuels peuvent bénéficier de l’installation et de la configuration de Squid Cache pour optimiser leurs activités en ligne. En fin de compte, Squid Cache est un élément clé de l’arsenal technologique visant à créer un Web plus rapide et plus fluide pour tous.