Уже достаточно давно в репозиториях Ubuntu / Debian не содержится обновленных пакетов прокси-сервера Tinyproxy. Последняя версия, доступная для установки — 1.8.4, датируется 2016 годом. В то время как в версии 1.10 произошли существенные изменения — переработана система тредов и поддержки соединений, а также появилась поддержка Basic аутентификации (к сожалению, только для 1 пользователя), появилась поддержка socks5 upstream.

Последнюю актуальную версию 1.11 от 2022 года можно установить только из исходников на GIthub. Для упрощения этой задачи и возможности менеджмента tinyproxy как сервиса, я предлагаю скрипт установки. Он не универсальный, но отлично отражает суть процесса установки и конфигурации.

Прилагаемый мной скрипт протестирован на CentOS Linux 7 и Ubuntu 18.04 с небольшим отличием в группе, используемой для задания прав группе и используемых пакетах.

Обратите внимание на комментарии к коде — по ним вы сможете изменить необходимое под себя.

#!/bin/bash
if [ -f /etc/os-release ]; then
    . /etc/os-release
    if [ "$ID" = "centos" ]; then
        echo "CentOS detected"
		OS="centos"
    elif [ "$ID" = "ubuntu" ]; then
        echo "Ubuntu detected"
		OS="ubuntu"
	else
        echo "Not supported OS"
    fi
fi

if [ "$OS" = "ubuntu" ]; then
	apt-get install -y build-essential autoconf gcc make
	GROUP="nogroup"
elif [ "$OS" = "centos" ]; then
	yum install -y gcc-c++ autoconf make wget
	GROUP="nobody"
fi

wget https://github.com/tinyproxy/tinyproxy/releases/download/1.11.1/tinyproxy-1.11.1.tar.gz
tar -xvzf tinyproxy-1.11.1.tar.gz
pushd tinyproxy-1.11.1/
./configure
make
make install
mkdir -p '/usr/local/bin'
install -c tinyproxy '/usr/local/bin'
popd

pushd tinyproxy-1.11.1/etc
mkdir -p '/usr/local/etc/tinyproxy'
install -c -m 644 tinyproxy.conf '/usr/local/etc/tinyproxy'
popd 

pushd tinyproxy-1.11.1/data/templates/
mkdir -p '/usr/local/share/tinyproxy'
install -c -m 644 debug.html default.html stats.html '/usr/local/share/tinyproxy'
popd

pushd tinyproxy-1.11.1/docs/
mkdir -p '/usr/local/share/man/man5'
install -c -m 644 man5/tinyproxy.conf.5 '/usr/local/share/man/man5'
mkdir -p '/usr/local/share/man/man8'
install -c -m 644 man8/tinyproxy.8 '/usr/local/share/man/man8'
popd

ln -s /usr/local/etc/tinyproxy /etc/
popd

cat > /lib/systemd/system/tinyproxy.service << EOL
[Unit]
Description=tinyproxy service
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=nobody
Group=$GROUP
ExecStart=/usr/local/bin/tinyproxy -d -c /etc/tinyproxy/tinyproxy.conf

[Install]
WantedBy=multi-user.target
EOL

mkdir -p /var/run/tinyproxy/
mkdir -p /var/log/tinyproxy/
chown -R nobody:$GROUP /var/run/tinyproxy/
chown -R nobody:$GROUP /var/log/tinyproxy/

# Включаем запись лога в файл. Если не требуется - закомментировать
sed -i 's/#LogFile "\/usr\/local\/var\/log\/tinyproxy\/tinyproxy.log"/LogFile "\/var\/log\/tinyproxy\/tinyproxy.log"/' /etc/tinyproxy/tinyproxy.conf
sed -i 's/#PidFile "\/usr\/local\/var\/run\/tinyproxy\/tinyproxy.log"/LogFile "\/var\/run\/tinyproxy\/tinyproxy.pid"/' /etc/tinyproxy/tinyproxy.conf
# Ставим уровень логирования, который показывает только соединения и ошибки.
sed -i 's/LogLevel Info/LogLevel Connect/' /etc/tinyproxy/tinyproxy.conf
# Разрешаем доступ с любого IP. По умолчанию - только с хоста самого прокси. Добавьте Allow IP или ваш Subnet, если требуется
sed -i 's/Allow 127.0.0.1/#Allow 127.0.0.1/' /etc/tinyproxy/tinyproxy.conf
sed -i 's/Allow ::1/#Allow ::1/' /etc/tinyproxy/tinyproxy.conf
# Меняем порт на 7878, как менее часто используемый для совместимости
sed -i 's/Port 8888/Port 7878/' /etc/tinyproxy/tinyproxy.conf

systemctl enable tinyproxy.service
systemctl start tinyproxy.service
systemctl status tinyproxy.service
netstat -tulpn | grep 7878
echo "Tinyproxy installed and service started"

Был ли наш пост полезен?

Нажмите на звезду, чтобы оценить мои труды!

Средний рейтинг: 0 / 5. Количество голосов: 0

Пока голосов нет. Проголосуй первым!

Мне жаль, что пост вам не помог 🙁

Позвольте мне исправиться.

Поделитесь, что можно улучшить?

Похожие посты