Skip to content

Self Hosting RU

hcan359 edited this page Oct 21, 2026 · 3 revisions

Selfhost (веб-версия)

Запустите Tonkatsu Box в браузере на своей машине или домашнем сервере. Один Docker-контейнер отдаёт приложение и держит базу, кеш обложек и API-ключи на сервере, поэтому все устройства в сети работают с одной библиотекой.

Это то же самое приложение, а не урезанная версия: коллекции, поиск, трекер эпизодов, тир-листы, mood-сетки, статистика, импорт и экспорт работают ровно так же, как на десктопе.

Требования

  • Docker с Docker Compose

Больше ничего - веб-приложение собирается внутри контейнера, Flutter на вашей машине не нужен.

Установка и запуск

git clone https://github.com/hacan359/tonkatsu_box.git
cd tonkatsu_box
docker compose up -d --build

Первая сборка занимает несколько минут. Затем откройте:

http://<ip-сервера>:8080

Настройка (необязательно)

Скопируйте .env.example в .env рядом с docker-compose.yml и раскомментируйте то, что нужно. Без .env всё работает на значениях по умолчанию.

Переменная По умолчанию Что делает
TONKATSU_DATA_PATH ./data Папка на хосте со всеми данными сервера
TONKATSU_PORT 8080 Порт, на котором отвечает веб-интерфейс
PUID / PGID 1000 / 1000 Владелец файлов в папке данных
TONKATSU_KEY_* - API-ключи, например TONKATSU_KEY_TMDB
TONKATSU_AUTH off token заставляет веб-интерфейс спрашивать токен доступа
TONKATSU_AUTH_TOKEN генерируется Свой токен вместо сгенерированного
TONKATSU_BIND 0.0.0.0 Интерфейс хоста, на котором публикуется порт
TONKATSU_IMAGE_HOSTS любые Хосты, с которых разрешено скачивать обложки, через запятую

Ключи можно ввести и в самом приложении (Настройки → API ключи) - они хранятся на сервере в data/keys.json. Ключи из .env перекрывают keys.json.

Во внешние каталоги ходит сервер, а не ваш браузер: контейнер подставляет настоящие учётные данные и правильный user agent, поэтому ни один ключ не попадает во вкладку браузера, а CORS не мешает.

Токен доступа (необязательно)

По умолчанию у сервера нет входа: библиотекой пользуется любой, кто дотянулся до порта. Если до сервера достают другие устройства, задайте в .env TONKATSU_AUTH=token. Тогда сервер при каждом запуске печатает ссылку для входа:

docker compose logs tonkatsu | grep "Sign in"
# Sign in: http://localhost:8080/?token=…

Откройте эту ссылку, подставив адрес сервера вместо localhost: браузер сохранит токен и уберёт его из адресной строки. Браузер без токена увидит экран, куда его можно вставить, а в Настройки → API ключи его можно сменить позже. Токен хранится в data/auth_token; удалите файл и перезапустите контейнер, чтобы выпустить новый, или задайте свой через TONKATSU_AUTH_TOKEN.

TONKATSU_BIND=127.0.0.1 публикует порт только на этой машине. TONKATSU_IMAGE_HOSTS ограничивает хосты, с которых сервер скачивает обложки: список доменов через запятую, поддомены входят. Оставьте пустым, если не уверены, что это нужно: обложка с хоста вне списка покажется битой картинкой.

Файлы

Путь Что это
.env Ваша локальная конфигурация (не коммитится)
data/tonkatsu_box.db База данных
data/keys.json API-ключи, введённые в приложении
data/auth_token Токен доступа при TONKATSU_AUTH=token
data/images/ Кеш обложек
data/snapshots/ Автоматические снимки базы перед миграциями

Резервные копии

Скопируйте папку data/ при остановленном контейнере - это и есть полный бэкап. В веб-интерфейсе также есть Настройки → Резервные копии, они скачивают переносимый архив на то устройство, с которого вы зашли. См. Данные, синхронизация и копии.

Обновление

git pull
docker compose up -d --build

Незавершённые миграции базы выполняются при старте; перед этим снимок старой базы сохраняется в data/snapshots/.

HTTPS и свой домен (необязательно)

Caddy впереди даёт https://tonkatsu.box, HTTP/2 и установку как PWA:

# .env: TONKATSU_DOMAIN=tonkatsu.box (по умолчанию), TONKATSU_PORT оставьте 8080
docker compose -f docker-compose.yml -f docker-compose.caddy.yml up -d
  1. Направьте домен на сервер: запись в DNS роутера или в hosts (<ip-сервера> tonkatsu.box) на каждом устройстве.
  2. Один раз на устройство доверьтесь локальному корневому сертификату Caddy - файл data/caddy/caddy/pki/authorities/local/root.crt (в Windows: двойной клик → Установить сертификат → Доверенные корневые центры сертификации).

Обычный HTTP продолжает работать и без всего этого - Caddy это дополнение, а не требование.

Чего нет в браузере

Эти возможности требуют десктопного или Android-приложения:

  • VGMaps (нужен WebView2, только Windows)
  • Discord Rich Presence
  • Синхронизация с Kodi
  • Навигация геймпадом
  • Синхронизация между устройствами по локальной сети
  • Профили пользователей - на сервере одна библиотека
  • Своя папка данных - вместо неё TONKATSU_DATA_PATH

Всё остальное работает как в десктопном приложении.

Примечания

  • В веб-сборке нет аккаунтов; TONKATSU_AUTH=token включает один общий токен доступа. Держите её в локальной сети или за HTTPS - не выставляйте в интернет без токена.
  • В браузере вообще нет базы данных: каждое чтение и запись - это обращение к серверу, поэтому два устройства не могут разойтись.

🏠 Home


🇬🇧 English


🇷🇺 Русский


🇨🇳 中文


💬 Discord

Clone this wiki locally