Перейти к содержимому
Berth

Установка Berth в Docker

Обновлено 27 октября 2026 г.

Berth — это один контейнер, ghcr.io/joveptesg/berth, собранный для amd64 и arm64. Он работает на Linux-сервере или VPS, NAS или Raspberry Pi и хранит всё в одной папке данных. Настройка занимает несколько минут.

Что понадобится

Запуск через Docker Compose

В ./data лежат база данных, её бэкапы, локальное хранилище и secret.key.

mkdir berth && cd berth
curl -fsSLO https://raw.githubusercontent.com/joveptesg/berth/main/docker-compose.yml
docker compose up -d              # http://localhost:8080, данные в ./data
docker compose logs berth         # код настройки — в логе

Храните копию secret.key отдельно от бэкапов: без него ключи хранилищ в базе данных не прочитать.

Первая настройка в браузере

  1. Откройте адрес сервера в браузере: http://<server>:8080 или домен, который выдал хостинг.
  2. Найдите код настройки в логе, в строке server is not set up: … enter the setup code K7P2-9QXM. Он меняется при каждом перезапуске, пока настройка не завершена.
  3. Введите код и создайте администратора. Адрес, который вы открыли, станет домашним или интернет-адресом в QR-кодах для телефонов; позже его можно изменить в разделе Настройки → Сервер.
  4. Загрузите первую книгу: перетащите папку или файл в админку. Berth прочитает теги, главы и обложку; проверьте их и добавьте книгу в библиотеку.

Docker без Compose, NAS и Raspberry Pi

Для обычного Docker или интерфейса NAS, который просит имя образа:

docker run -d --name berth --restart unless-stopped \
  -p 8080:8080 -v "$PWD/data:/data" ghcr.io/joveptesg/berth:1
docker logs berth                 # код настройки — в логе

Обновление и откат

Тег 1 следует за всеми релизами 1.x; 1.0 — за исправлениями 1.0, а точный тег вроде 1.0.1 никогда не меняется. Не используйте latest с автообновлялками вроде Watchtower: он следует и за новыми мажорными версиями.

Прежде чем новая версия изменит схему базы данных, она сохраняет копию в ./data/backups (хранятся последние 3). Чтобы откатиться, зафиксируйте предыдущую версию в docker-compose.yml и восстановите эту копию:

  1. docker compose stop berth
  2. docker compose run --rm berth admin restore /data/backups/auto-<time>.sqlite
  3. docker compose up -d
docker compose pull && docker compose up -d

Доступ из интернета

Berth отдаёт обычный HTTP, и дома этого достаточно. Для доступа снаружи поставьте перед ним обратный прокси с HTTPS, например Caddy:

books.example.com {
	reverse_proxy localhost:8080
}

Затем укажите https://books.example.com в админке в разделе Настройки → Адрес в интернете, чтобы он попал в QR-коды для телефонов. Приложение само переключается между домашним и интернет-адресом.

Бэкапы

Вопросы

Какой порт использует Berth?

8080 внутри контейнера. Опубликуйте его на любом порту хоста, например -p 9000:8080.

Где хранятся мои книги?

По умолчанию — в локальном хранилище внутри ./data. Позже в админке можно добавить S3-совместимое хранилище и сделать его хранилищем по умолчанию для новых книг. Подробнее: хранилище S3.

Можно ли собрать Berth из исходников?

Да: в клоне репозитория раскомментируйте build: . в docker-compose.yml и выполните docker compose up -d --build.