Skip to main content

Установка Psiphon (psiphon-docker) на Ubuntu

Прокси-туннель для обхода блокировок на базе psiphon-tunnel-core — swarupsengupta2007/psiphon-docker. Поднимает HTTP- и SOCKS5-прокси с выбором региона выхода.

Каждый блок кода ниже рассчитан на копирование целиком.

Предполагается, что Docker и Docker Compose plugin уже установлены (см. страницу «Установка Docker и Docker Compose на Ubuntu»).

1. Подготовка каталога

sudo mkdir -p ~/opt/psiphon/config && sudo chown -R 1000:1000 /opt/psiphon && cd ~/opt/psiphon

/opt/psiphon выбран как каталог для стороннего софта по FHS — не привязан к домашней директории конкретного пользователя. Каталог config монтируется в контейнер и хранит psiphon.config — должен быть доступен на запись пользователю с указанными ниже PUID/PGID (в примере — 1000:1000, при других значениях chown нужно поправить соответственно).

2. docker-compose.yml

nano docker-compose.yml

Содержимое:

version: "3.5"
services:
  psiphon:
    image: swarupsengupta2007/psiphon:latest
    container_name: psiphon
    environment:
      - PUID=1000
      - PGID=1000
      - HTTP_PORT=8080
      - SOCKS_PORT=1080
      - DEVICE_REGION=IN
      - EGRESS_REGION=SG
    volumes:
      - ./config:/config
    ports:
      - 127.0.0.1:1080:1080
      - 127.0.0.1:8080:8080
    restart: unless-stopped

Docker и UFW. Как отмечено на странице первоначальной настройки сервера, Docker прописывает правила ports: напрямую в iptables в обход UFW. Публикация на 127.0.0.1:... вместо 0.0.0.0 (голого порта) не даёт достучаться до прокси снаружи — открывайте наружу только если это осознанное решение.

Переменные окружения

Применяются только при первом запуске, пока в /config ещё нет psiphon.config:

Переменная Описание По умолчанию
PUID UID процесса psiphon 1000
PGID GID процесса psiphon 1000
HTTP_PORT Порт HTTP-прокси 8080
SOCKS_PORT Порт SOCKS-прокси 1080
DEVICE_REGION Регион устройства IN
EGRESS_REGION Регион выхода трафика SG

PUID/PGID текущего пользователя:

id -u && id -g

3. Запуск

docker compose up -d

4. Проверка

Статус контейнера и логи:

docker compose ps && docker logs -f psiphon

Healthcheck:

docker inspect --format='{{json .State.Health}}' psiphon

Ожидаемый статус — "Status":"healthy".

Проверка прокси:

curl -x socks5h://127.0.0.1:1080 https://ifconfig.me
curl -x http://127.0.0.1:8080 https://ifconfig.me

Вернувшийся IP должен соответствовать выбранному EGRESS_REGION.

5. Управление сервисом

docker compose restart   # перезапуск
docker compose down      # остановка и удаление контейнера
docker compose pull && docker compose up -d   # обновление образа

Что стоит сделать дополнительно

  • Не менять переменные окружения после первого запуска без ручной правки/удаления config/psiphon.config — на уже созданный конфиг они не влияют.
  • Если прокси должен быть доступен с других машин — не публиковать порт на 0.0.0.0 без дополнительного контроля доступа (файрвол/аутентификация на уровне прокси).
  • Настроить бэкап каталога config.