diff --git a/docker/docker-proxy-container-via-shadowsocks-and-tun2socks.md b/docker/docker-proxy-container-via-shadowsocks-and-tun2socks.md index 8234c8b..95a24da 100644 --- a/docker/docker-proxy-container-via-shadowsocks-and-tun2socks.md +++ b/docker/docker-proxy-container-via-shadowsocks-and-tun2socks.md @@ -1,5 +1,7 @@ # Прозрачный прокси контейнера через Shadowsocks и tun2socks +![Static Badge](https://img.shields.io/badge/очень_полезно-99.9%-green) + У меня есть Docker-контейнер Audiobookshelf, в котором я слушаю аудиокниги и подкасты. Он сам скачивает подкасты из интернета, и это очень удобно (все нужные мне подкасты в одном месте). Работал контейнер на домашнем NAS Synology (в нем есть Docker Station с веб-интерфейсом). Книг у меня в "библиотеке" уже более тысячи, а подкастов и того больше, @@ -229,7 +231,7 @@ ls /dev/net/tun **Третьим стартует** контейнер `audiobookshelf`. В нём почти всё по-старому. Но теперь он зависит от `tun2socks`, так что гарантированно запустится после него. Кроме того, у него нет проброса портов `8000:80` (они у нас теперь в контейнере tun2socks). Вместо этого у него `network_mode: "service:tun2socks"`. В целом, `network_mode: - "service:..."` — это мощная, но специфичная функция Docker, которая 'склеивает' сетевые стеки контейнеров в один, + "service:..."` — это мощная, но специфичная функция Docker, которая «склеивает» сетевые стеки контейнеров в один, а это значит, что контейнер `audiobookshelf` будет использовать сетевой стек контейнера `tun2socks` и в результате весь трафик будет идти через TUN-интерфейс. Дальше уже сам `tun2socks` определит, что с ним делать. Если трафик пришел снаружи, с порта 8000, то он попадёт в Audiobookshelf, как и раньше, а если же сам Audiobookshelf начнет что-то скачивать, то запрос уйдет через TUN-интерфейс, попадет в `tun2socks`, который перенаправит его через SOCKS5-прокси @@ -237,8 +239,8 @@ ls /dev/net/tun ## Запуск и проверка -Конечно, первым делом нужно проверить в интерфейсе Docker Station, что проект "зелененький" и все контейнеры тоже -"зелененькие". Ну или выполнить: +Конечно, первым делом нужно проверить в интерфейсе Docker Station, что проект «зелененький» и все контейнеры тоже +«зелененькие». Ну или выполнить: ```bash sudo docker ps ``` @@ -260,9 +262,9 @@ Audiobookshelf работает на Node.js, а внутри контейнер заковыристый js-скрипт для проверки скачивания файла. В результате мы получим `test.mp3` в папке `/podcasts/` (а она у нас снаружи контейнера -в `/volume1/music/_podcasts`). Это выпуск №1074 подкаста "Аэростат" с альбомом Аквариума "Странные Новости с - Далёкой Звезды" (2024 год, очень рекомендую послушать). Этот подкаст размещен на DigitalOcean, так что если - он скачался, значит туннель работает и обход блокировок провайдера сработал. +в `/volume1/music/_podcasts`). Это выпуск №1074 подкаста «Аэростат» с альбомом Аквариума «Странные Новости + с Далёкой Звезды» (2026 год, очень рекомендую послушать). Этот подкаст размещен на DigitalOcean, так что если + он скачался, значит туннель работает и обход блокировок провайдера сработал. Проверить, что метаданные из iTunes тоже подгружаются, можно, только настроив автообновление подкастов в интерфейсе Audiobookshelf (например, через пять минут). Но получение метаданных происходит "под капотом",