уж если пишите на нетехнический форум, где 99% пользователей не имеет итишного образования, то пишите проще, иначе те-же 99% в ужасе разбежиться уже после прочтения первых 10 строчек инструкции.
Вот скрипт, который надобно запустить и который делает всю работу.
В твоей инструкции есть неточности (не спецам не интересно), которые я исправил.
Написано мной, правлено АИ
К сожалению тега кода нет, поэтому придется как есть. Копируем код снизу и копируем в файл на вахсем расбери, например setup_tor.sh
Затем запустим его вот так:
Затем переходим в браузер. Все описанное выше запустило нам прокси тор, можно ставить прокси в браузер и далее по инструкции из первоисточника...
Если есть комментарии - пишите.
П.С. @BannedMi. Не возражаю, чтобы ты добавил скрипт в свой GitHub.
# =============================================================
# TOR SOCKS5 Proxy + obfs4 Setup для Raspberry Pi
# Debian Bullseye / Bookworm (armhf / arm64)
# =============================================================
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'
BOLD='\033[1m'; NC='\033[0m'
info() { echo -e "${GREEN}[INFO]${NC} $*"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
error() { echo -e "${RED}[ERROR]${NC} $*"; exit 1; }
[[ $EUID -eq 0 ]] || error "Запустите от root: sudo bash $0"
# --- Определяем codename и архитектуру ---
CODENAME=$(lsb_release -cs)
ARCH=$(dpkg --print-architecture)
info "Дистрибутив: ${BOLD}${CODENAME}${NC} | Архитектура: ${BOLD}${ARCH}${NC}"
# --- Проверка поддерживаемого codename ---
bullseye|bookworm|buster) ;;
*) warn "Codename '$CODENAME' не проверялся. Продолжаем, но возможны проблемы." ;;
# --- Определяем локальный IP ---
LOCAL_IP=$(hostname -I | awk '{print $1}')
info "Обнаружен IP Raspberry Pi: ${BOLD}${LOCAL_IP}${NC}"
read -rp "Использовать этот IP для SOCKSPort? [Y/n]: " ans
if [[ "${ans,,}" == "n" ]]; then
read -rp "Введите IP Raspberry Pi в локальной сети: " LOCAL_IP
# --- Подсеть (автоматически /24) ---
SUBNET=$(echo "$LOCAL_IP" | cut -d. -f1-3).0/24
info "Подсеть для SOCKSPolicy: ${BOLD}${SUBNET}${NC}"
read -rp "Порт SOCKS5 [по умолчанию ${SOCKS_PORT}]: " port_input
[[ -n "$port_input" ]] && SOCKS_PORT="$port_input"
read -rp "Установить временную зону Europe/Moscow? [Y/n]: " tz_ans
[[ "${tz_ans,,}" != "n" ]] && timedatectl set-timezone Europe/Moscow && info "Таймзона: Europe/Moscow"
# =============================================================
# =============================================================
info "Добавление официального репозитория Tor..."
cat > /etc/apt/sources.list.d/tor.list << EOF
deb [arch=${ARCH} signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main
deb-src [arch=${ARCH} signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main
info "Загрузка GPG ключа Tor Project..."
| tee /usr/share/keyrings/tor-archive-keyring.gpg > /dev/null
info "GPG ключ сохранён."
# =============================================================
# 2. Обновление и установка пакетов
# =============================================================
info "Обновление системы..."
info "Установка пакетов: apt-transport-https, obfs4proxy, nyx, tor..."
# =============================================================
# 3. Systemd drop-in (НЕ правим /lib/systemd)
# =============================================================
info "Настройка автозапуска Tor после сети..."
mkdir -p /etc/systemd/system/tor.service.d/
cat > /etc/systemd/system/tor.service.d/override.conf << 'EOF'
# =============================================================
# =============================================================
echo -e "${BOLD}${YELLOW}=== ПОЛУЧЕНИЕ obfs4 BRIDGES ===${NC}"
echo "Получите бриджи одним из способов:"
echo "Вставляйте строки по одной (без префикса 'Bridge' — скрипт добавит сам)."
echo "Для завершения введите пустую строку."
read -rp "Bridge> " bridge_line
[[ -z "$bridge_line" ]] && break
# Убираем случайный префикс Bridge/bridge если есть
bridge_line=$(echo "$bridge_line" | sed 's/^[Bb]ridge[[:space:]]*//')
BRIDGES_BLOCK="${BRIDGES_BLOCK}Bridge ${bridge_line}\n"
[[ -z "$BRIDGES_BLOCK" ]] && warn "Бриджи не введены! Tor может не подключиться."
# =============================================================
# 5. Запись /etc/tor/torrc
# =============================================================
BACKUP="/etc/tor/torrc.backup.$(date +%Y%m%d_%H%M%S)"
info "Резервная копия старого torrc: ${BACKUP}"
cp /etc/tor/torrc "$BACKUP"
info "Запись /etc/tor/torrc..."
cat > /etc/tor/torrc << EOF
## === TOR SOCKS5 Proxy ===========================================
SOCKSPort ${LOCAL_IP}:${SOCKS_PORT}
SOCKSPolicy accept ${SUBNET}
DataDirectory /var/lib/tor
## === obfs4 Bridges ==============================================
ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy
## Исключаем RU, UA, BY, AM, KG из выходных и промежуточных нод
ExcludeExitNodes {RU},{UA},{AM},{KG},{BY}
ExcludeNodes {RU},{UA},{AM},{KG},{BY}
## Вставлены автоматически:
$(printf "%b" "$BRIDGES_BLOCK")
# =============================================================
# =============================================================
info "Включение и перезапуск Tor..."
echo -e "${BOLD}${GREEN}=== ГОТОВО ===${NC}"
echo -e "Ваш SOCKS5 прокси: ${BOLD}${LOCAL_IP}:${SOCKS_PORT}${NC}"
systemctl status tor --no-pager -l || true
echo -e "${YELLOW}Следить за подключением (ищите 'Bootstrapped 100%'):${NC}"
echo " journalctl -u tor@default.service -f"
echo -e "${YELLOW}Мониторинг (NYX):${NC}"