Трудно определить аудиторию для кого эта статья. Профессионалы работы в Linux системах наверное просто засмеют, а кто вообще ничего не слышал про Linux возможно вообще ничего не поймет.
Я ее пишу для тех кто немного слышал про Linux и уже знает что такое виртуальный сервер но знаний пока не хватает. А еще возможно как памятку для себя.
На написание статьи меня натолкнула одна проблема, я запустил на своем сервере скрипт который должен был мне собрать данные с одного ресурса. И возникла проблема что IP адрес моего сервера был заблокирован, надеюсь что провайдер сменит мне выделенный IP.
И что бы не сталкиваться с проблемой блокировки выделенного IP адреса и походами к провайдеру с просьбой сменить IP, я решил создать личный прокси для запросов и главное что бы это было недорого.
Есть конечно решение проблемы, а именно использование VPN на сервере. Но тут есть проблема, на сервере работают несколько служб на разных портах и все висят на доменном имени привязанному к IP, а при запуске VPN все службы будут недоступны, а это недопустимо. Лучшем решением стала аренда виртуального сервера (VDS), но проблемой стало то, что многие хостеры в нагрузку добавляют панель управления сервером и конечно не бесплатно.
Ну и ближе к теме, мы не будем платить за панели администрирования, покупаем самый дешевый VDS с выделенным IP, у меня на это ушло примерно 240 рублей за месяц использования в зоне RU и чуть дороже в USA. Характеристики железа VDS слабенькие, но для запуска одного единственного PHP скрипта для анонимизации своих запросов вполне достаточно.
Купив такой виртуальный сервер вам будет выдан только IP адрес и данные для подключения по SSH. Да кстати, что такое SSH вы уже должны знать. Для подключения по SSH я рекомендую Snowflake, очень удобная и функциональная программа, но это лично мое мнение.
Ну и собственно пошаговый рецепт как запустить свой WEB сервер.
Первое что я устанавливаю это среду Miniconda Это просто. В терминале выполняем команду
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
Далее запускаем загруженный скрипт командой в терминале
bash Miniconda3-latest-Linux-x86_64.sh
И отвечаем на все вопросы которые, там будет спрашивать "yes" и нажатие на ENTER везде пишем yes и нажимаем Enter, после завершения установки закройте терминал и заново его откройте. Вы должны быть в среде (base)
Далее установим Apache для того что бы ваш сервер стал доступен в браузере
В терминале пишем:
sudo apt install apache2 -y sudo systemctl start apache2 sudo systemctl enable apache2
После этого, открыв браузер и введя выданный вам IP адрес вы увидите то что ваш сервер отвечает.

Теперь устанавливаем панель управления сервером WEBMIN (это бесплатная замена платным)
Создаем среду окружения conda, для этого в терминале пишем
conda create --name webmin
Везде отвечаем "a" и "y", После запускаем эту среду
conda activate webmin
curl -o webmin-setup-repo.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh
sudo sh webmin-setup-repo.sh
При завершении получаем предупреждение:
Webmin and Usermin can be installed with:
apt-get install --install-recommends webmin usermin
И в терминале выполняем команду
apt-get install --install-recommends webmin usermin
Ну и естественно на все вопросы отвечаем "y"
Далее, в браузере запускаете <Ваш IP>:10000, авторизируетесь с теми данными что выдал вам хостер и вы в панели управления своим виртуальным сервером.
Сначала в webmin запускаем установку PHP
А потом в терминале выполняете вот эту команду
sudo apt install php libapache2-mod-php php-mysql
Везде отвечаем "y"
Теперь у вас запущен WEB сервер на вашем IP от хостера с PHP, MySQL и бесплатной панелью управления
Но вам нужно еще установить curl для PHP, запускаем в терминале
sudo apt install php-curl
На этом этапе настройка web сервера закончена, теперь он умеет не только отдавать HTML страницы, но и выполнять PHP скрипты.

И вот простейший скрипт для анонимизации своих запросов на PHP.
<?php /** * fetch.php – простейший прокси‑скрипт. * * Принимает GET‑параметр `url` (полный URL) и, * при необходимости, POST‑данные `post_data`. * Делает запрос к переданному URL от IP вашего PHP‑сервера * и возвращает полученный ответ клиенту. * * Пример вызова: * https://MY_IP/fetch.php?url=https://testforum.ru/topic/12345/ * * Если нужен POST: * https://MY_IP/fetch.php?url=https://testforum.ru/topic/12345/&method=POST&post_data=field1=value1&field2=value2 */ header('Content-Type: text/plain; charset=utf-8'); // ----- параметры ----- $url = $_GET['url'] ?? ''; $method = strtoupper($_GET['method'] ?? 'GET'); $post_data_raw = $_GET['post_data'] ?? ''; // Простейшая валидация: URL обязателен if (empty($url)) { http_response_code(400); echo "Missing URL parameter."; exit; } // Формируем массив POST‑данных, если передано $post_fields = []; if (!empty($post_data_raw)) { parse_str($post_data_raw, $post_fields); } // ----- cURL запрос ----- $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_TIMEOUT, 15); // таймаут 15 сек curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36'); // Если нужен POST if ($method === 'POST') { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); } // Выполняем запрос $response = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); $curl_err = curl_error($ch); curl_close($ch); if ($response === false) { http_response_code(502); echo "cURL error: $curl_err"; exit; } // Передаём статус‑код от оригинального сайта и тело ответа http_response_code($http_code); echo $response; ?>
Этот скрипт нужно положить в папку которая обычно такая /var/www/html/
Загрузить скрипт вы можете через Web панель управления созданным сервером.

А так же через WEBMIN вы сможете настроить на своем в��ртуальном сервере FTP, пользователей, домены, но это уже тема отдельной статьи.
Теперь, вы можете безопасно для своего реального IP адреса получать данные к нужных вам ресурсам, не боясь блокировки реального IP.
PS. Статья носит ознакомительный характер и не призывает к незаконным действиям в сети.
nhlj