Запуск squid на vps
Да в продолжение темы обхода блокировок обновлений WordPress – установка и запуск прокси сервера squid используя docker на vps c ubuntu на немецком хостинге:
По умолчанию последняя версия Docker не включена в репозиторий Ubuntu по умолчанию. Поэтому вам нужно будет добавить официальный репозиторий Docker CE в APT.
Сначала установите все необходимые зависимости с помощью следующей команды:
apt install apt-transport-https ca-certificates curl software-properties-common -y
После установки всех зависимостей загрузите и добавьте ключ Docker CE GPG со следующей командой:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
Затем добавьте репозиторий Docker CE с помощью следующей команды:
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
Затем проверьте добавленный репозиторий с помощью следующей команды:
apt-cache policy docker-ce
Вы получите следующий вывод:
docker-ce:
Installed: (none)
Candidate: 5:20.10.17~3-0~ubuntu-focal
Version table:
5:20.10.17~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
5:20.10.16~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
5:20.10.15~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
5:20.10.14~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
5:20.10.13~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
5:20.10.12~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
Установите Docker и Docker Compose
Теперь установите пакет Docker, выполнив следующую команду:
apt install docker-ce -y
После установки Docker проверьте состояние Docker, используя следующую команду:
systemctl status docker
Вы получите следующий вывод:
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2022-09-04 16:04:27 UTC; 13s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 3264 (dockerd)
Tasks: 7
Memory: 29.8M
CGroup: /system.slice/docker.service
└─3264 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Sep 04 16:04:27 ubuntu2004 dockerd[3264]: time="2022-09-04T16:04:27.555173170Z" level=warning msg="Your kernel does not support CPU realtime >
Sep 04 16:04:27 ubuntu2004 dockerd[3264]: time="2022-09-04T16:04:27.555196177Z" level=warning msg="Your kernel does not support cgroup blkio >
Sep 04 16:04:27 ubuntu2004 dockerd[3264]: time="2022-09-04T16:04:27.555270124Z" level=warning msg="Your kernel does not support cgroup blkio >
Sep 04 16:04:27 ubuntu2004 dockerd[3264]: time="2022-09-04T16:04:27.555772301Z" level=info msg="Loading containers: start."
Sep 04 16:04:27 ubuntu2004 dockerd[3264]: time="2022-09-04T16:04:27.719676988Z" level=info msg="Default bridge (docker0) is assigned with an >
Sep 04 16:04:27 ubuntu2004 dockerd[3264]: time="2022-09-04T16:04:27.804973724Z" level=info msg="Loading containers: done."
Sep 04 16:04:27 ubuntu2004 dockerd[3264]: time="2022-09-04T16:04:27.834543443Z" level=info msg="Docker daemon" commit=a89b842 graphdriver(s)=>
Sep 04 16:04:27 ubuntu2004 dockerd[3264]: time="2022-09-04T16:04:27.834895532Z" level=info msg="Daemon has completed initialization"
Sep 04 16:04:27 ubuntu2004 systemd[1]: Started Docker Application Container Engine.
Sep 04 16:04:27 ubuntu2004 dockerd[3264]: time="2022-09-04T16:04:27.878373838Z" level=info msg="API listen on /run/docker.sock"
Затем проверьте информацию о версии Docker с помощью следующей команды:
docker --version
Вы должны получить следующий вывод:
Docker version 20.10.17, build 100c701
Затем установите пакет Docker Compose с помощью следующей команды:
apt install docker-compose -y
После завершения установки проверьте версию Docker Compose, используя следующую команду:
docker-compose --version
Вы должны получить следующий вывод:
docker-compose version 1.25.0, build unknown
Создайте файл Squid Docker Compose
В этом разделе мы создадим файл компоновки Docker, файл конфигурации Squid и файл паролей для развертывания Squid в контейнере Docker.
Сначала создайте каталог для хранения всех файлов конфигурации:
mkdir squid
Затем перейдите в каталог Squid и создайте docker-compose.файл yaml с помощью следующей команды:
cd squid
nano docker-compose.yaml
Добавьте следующие конфигурации:
version: "3"
services:
proxy:
image: ubuntu/squid
ports:
- "8080:3128"
volumes:
- ./squid.conf:/etc/squid/squid.conf
- ./passwords:/etc/squid/passwords
restart: always
Сохраните и закройте файл, затем создайте файл конфигурации Squid:
nano squid.conf
Добавьте следующие конфигурации:
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
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
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm my-proxy-name
acl authenticated proxy_auth REQUIRED
http_access deny !Safe_ports
# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports
# Only allow cachemgr access from localhost
http_access allow all manager
http_access deny manager
# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
http_access deny to_localhost
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# And finally deny all other access to this proxy
http_access allow authenticated
# Squid normally listens to port 3128
http_port 3128
# Uncomment and adjust the following to add a disk cache directory.
cache_dir null /tmp
#Default:
# access_log daemon:/var/log/squid/access.log squid
access_log none
# cache_log /var/log/squid/cache.log
cache_log /dev/null
# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid
# store_id_bypass on
cache deny all
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320
Сохраните и закройте файл, затем создайте файл пароля с помощью следующей команды:
nano passwords
Запустите контейнер Squid Docker
Теперь вы можете выполнить следующую команду для запуска контейнера Squid docker.
docker-compose up -d
Вы получите следующий вывод:
Creating network "root_default" with the default driver
Pulling proxy (ubuntu/squid:)...
latest: Pulling from datadog/squid
34667c7e4631: Pull complete
d18d76a881a4: Pull complete
119c7358fbfc: Pull complete
2aaf13f3eff0: Pull complete
79e968cb80d4: Pull complete
db64bf0038f3: Pull complete
1cc62688a80c: Pull complete
c02b5501b9fd: Pull complete
Digest: sha256:f7d19d5e3f4163771291d91de393ce667f2327a3e080c39b9b7ea9e19f91488f
Status: Downloaded newer image for ubuntu/squid:latest
Creating network "squid_default" with the default driver
Creating squid_proxy_1 ... done
После запуска контейнера Squid вы можете проверить его с помощью следующей команды:
docker ps
Если все в порядке, вы должны увидеть контейнер Squid running в следующем выводе:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5f9f1705ffa8 ubuntu/squid "https://вашсервер/sbin/entrypoint.sh" 56 seconds ago Up 55 seconds 0.0.0.0:8080->312
Задать логин и пароль первому пользователю:
sudo htpasswd -c passwords
Последующим sudo htpasswd passwords
В вордпресс в wp-confiig.php добавить
define(WP_PROXY_HOST, 'localhost'); // ваш адрес
define(WP_PROXY_PORT, 3128); // ваш порт
И еще две, если прокси требует авторизацию:
define(WP_PROXY_USERNAME, 'username');
define(WP_PROXY_PASSWORD, 'password');
Так же укажем обход адресов:
define('WP_PROXY_BYPASS_HOSTS', 'localhost, www.example.com');