Установка 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.