Document reaching a proxy that lives in another container
A proxy published as 127.0.0.1:1080 is reachable from the host and nowhere else — not via host.docker.internal either, since loopback publishing never leaves the host. The fix is a shared docker network and addressing the proxy by container name, so deploy/ now carries a ready compose.override.yml example for exactly that, parameterised by PROXY_NETWORK. compose.override.yml is gitignored so a local deployment tweak cannot collide with future pulls, the way the domain edit did. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
380f7bcf31
commit
71dc3f2da8
@@ -6,3 +6,4 @@ web/node_modules/
|
|||||||
*.log
|
*.log
|
||||||
data/
|
data/
|
||||||
*.tsbuildinfo
|
*.tsbuildinfo
|
||||||
|
compose.override.yml
|
||||||
|
|||||||
@@ -244,6 +244,19 @@ YTDLP_PROXY=socks5h://127.0.0.1:1080
|
|||||||
- **`127.0.0.1` внутри контейнера — это сам контейнер.** Если Psiphon или ваш SOCKS запущен на
|
- **`127.0.0.1` внутри контейнера — это сам контейнер.** Если Psiphon или ваш SOCKS запущен на
|
||||||
хосте, укажите `socks5h://host.docker.internal:1080` (эта запись в `extra_hosts` уже есть).
|
хосте, укажите `socks5h://host.docker.internal:1080` (эта запись в `extra_hosts` уже есть).
|
||||||
Бот проверяет прокси при старте и пишет в лог понятную причину, если тот недоступен.
|
Бот проверяет прокси при старте и пишет в лог понятную причину, если тот недоступен.
|
||||||
|
- **Прокси в соседнем контейнере — подключайтесь по имени, а не через хост.** Если прокси
|
||||||
|
запущен в другом compose-проекте и публикует порт как `127.0.0.1:1080`, из контейнера бота он
|
||||||
|
недоступен вообще: публикация на loopback видна только самому хосту. Заведите общую сеть —
|
||||||
|
готовый пример в [deploy/compose.proxy.yml.example](deploy/compose.proxy.yml.example):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker network ls | grep psiphon
|
||||||
|
cp deploy/compose.proxy.yml.example compose.override.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
затем в `.env` — `YTDLP_PROXY=socks5h://psiphon:1080` (имя контейнера прокси) и, если сеть
|
||||||
|
называется иначе, `PROXY_NETWORK=<имя>`. Файл `compose.override.yml` в `.gitignore`, так что
|
||||||
|
обновления с ним не конфликтуют.
|
||||||
- **Прокси должен слушать интерфейс, видимый контейнеру.** Даже с `host.docker.internal`
|
- **Прокси должен слушать интерфейс, видимый контейнеру.** Даже с `host.docker.internal`
|
||||||
соединение упрётся в `ECONNREFUSED`, если клиент забинден только на loopback. Проверить:
|
соединение упрётся в `ECONNREFUSED`, если клиент забинден только на loopback. Проверить:
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# Подключение бота к сети контейнера с прокси (Psiphon и т.п.).
|
||||||
|
#
|
||||||
|
# Нужно, когда прокси живёт в другом compose-проекте и публикует порт только на
|
||||||
|
# loopback хоста (127.0.0.1:1080) — из других контейнеров такой порт не виден.
|
||||||
|
# В общей docker-сети контейнеры обращаются друг к другу по имени, минуя хост.
|
||||||
|
#
|
||||||
|
# Установка:
|
||||||
|
# 1. Узнайте имя сети прокси: docker network ls | grep psiphon
|
||||||
|
# 2. Скопируйте этот файл: cp deploy/compose.proxy.yml.example compose.override.yml
|
||||||
|
# 3. При необходимости укажите в .env другое имя сети:
|
||||||
|
# PROXY_NETWORK=psiphon_default
|
||||||
|
# 4. В .env пропишите адрес по имени контейнера:
|
||||||
|
# YTDLP_PROXY=socks5h://psiphon:1080
|
||||||
|
# 5. docker compose up -d
|
||||||
|
#
|
||||||
|
# compose.override.yml подхватывается автоматически и лежит в .gitignore,
|
||||||
|
# поэтому обновления репозитория с ним не конфликтуют.
|
||||||
|
services:
|
||||||
|
mbot:
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
- proxy
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external: true
|
||||||
|
name: ${PROXY_NETWORK:-psiphon_default}
|
||||||
Reference in New Issue
Block a user