Files
doc_memo/docker/docker-proxy-container-via-shadowsocks-and-tun2socks.md

7.4 KiB
Raw Blame History

Прозрачный прокси контейнера через Shadowsocks и tun2socks

У меня есть Docker-контейнер Audiobookshelf, в котором я слушаю аудио-книги и подкасты. Он сам скачивает подкасты из интернета и это очень удобно (все нужные мне подкасты в одном месте). Работал контейнер на домашнем NAS Synology (в нем есть Docker Station с веб-интерфейсов). Книг у меня в "библиотеке" уже более тысячи, а подкастов и того больше, так что домашний NAS с доступом из интернет -- идеальное решение.

Все отлично работало и подкасты обновлялись, пока не настало DPI. Где-то в первой декаде января 2026 подкасты перестали обновляться. Проверки показали, что это из-за блокировок на уровне провайдера. Mp3-файлы файлы размещены на DigitalOcean, и заблокирован именно он. Audiobookshelf получает ссылки через RSS-фиды, видит новые эпизоды, и зависает при скачивании.

Как решить проблему DPI?

Как все работало до блокировок:

Старая схема

                                                             Интернет
                                                                ▲
                                                                │
                                                                │
┌─Docker (на Synology)──────┐     скачивание подкастов     ┌────┴─────┐
│      Audiobookshelf       ├─────────────────────────────►│  Роутер  │
└──────────────────┬────────┘                              └────▲─────┘
                   │                                            │
                   │ для прослушивания                          │
                   │ (порт 8000)                                │
                   │                                            │
┌─Host (Orange Pi)─▼────────┐     для прослушивания c SSL       │
│        Nginx Proxy        ├───────────────────────────────────┘
└───────────────────────────┘

Контейнер Audiobookshelf на Synology работает по 8000 порту. Nginx на Orange Pi 5 Plus проксирует на этот порт на IP-адресе Synology, добавляет SSL и обновляет сертификат Let's Encrypt (на самом деле у меня для этой цели используется Traefik на k3s и все еще проходдит через VIP-адрес Keepalive, но для простоты я опускаю эти детали). На роутере настройка проброс 443-порта на Orange Pi. Внешний DNS настроен на IP-адрес роутера (A- и AAAA-записи) и так я могу слушать подкасты из любой точки мира.

Скачивание подкастов внутри Audiobookshelf идет напрямую. Контейнер сразу обращается к Роутеру и пытается скачать mp3-файл. И это ему не удаётся из-за DPI.

Новая схема

К счастью, проверки показали, что у провайдеров (даже у Российских) нет блокировок DigitalOcean. А значит эпизоды подкастов можно скачать на VPS/VDS виртуалке, и нужно только настроить Audiobookshelf так, чтобы он скачивал mp3-файлы через прокси. При этом прослушивание книг и подкастов должно работать по старой схеме, без изменений.

Как-то так:

                                      Интернет                   Интернет
                                          ▲                          ▲
                                          │                          │
                                          │                          │
                   ┌─VPS/VDS (Hosting)────────────┐                  │ для прослушивания
                   │   VPN (Shadowsocks Server)   │                  │ (SSL)
                   └──────────────────────▲───────┘                  │
                                          ╚═════════════════════╗    │
                                                             ┌──▲────▲──┐
                                                             │  Роутер  │
                                                             └──▲────▲──┘
                                                                ║    │
                                                 для скачивания ║    └──────────────┐
                                                    (канал-VPN) ║                   │
···Docker Compose (на Synology)································ ║ ··············    │
:                                                               ║              :    │
:   ┌────────────────┐      ┌───────────────┐         ┌─────────▲──────────┐   :    ▲
:   │ Audiobookshelf ├─────►│   tun2socks   ├────────►│ shadowsocks/SOCKS5 │   :    │
:   └────────────────┘      └───────┬───────┘         └────────────────────┘   :    │
:                                   │ для прослушивания                        :    │
··································· │ ··········································    │
                                    │ (порт 8000)                                   ▲
                 ┌─Host (Orange Pi)─▼────────┐        для прослушивания c SSL       │
                 │        Nginx Proxy        ├──────────────────────────────────────┘
                 └───────────────────────────┘