Установка Berth в Docker
Обновлено 27 октября 2026 г.
Berth — это один контейнер, ghcr.io/joveptesg/berth, собранный для amd64 и arm64. Он работает на Linux-сервере или VPS, NAS или Raspberry Pi и хранит всё в одной папке данных. Настройка занимает несколько минут.
Что понадобится
- Docker с Compose или NAS, который умеет запускать образы контейнеров (Synology, Unraid, CasaOS).
- Машина на amd64 или arm64 — подойдёт Raspberry Pi или NAS на ARM.
- Папка на локальном диске для
./data. Не размещайте её в сетевой папке (NFS, SMB): SQLite там может повредить базу данных.
Запуск через 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 отдельно от бэкапов: без него ключи хранилищ в базе данных не прочитать.
Первая настройка в браузере
- Откройте адрес сервера в браузере:
http://<server>:8080или домен, который выдал хостинг. - Найдите код настройки в логе, в строке
server is not set up: … enter the setup code K7P2-9QXM. Он меняется при каждом перезапуске, пока настройка не завершена. - Введите код и создайте администратора. Адрес, который вы открыли, станет домашним или интернет-адресом в QR-кодах для телефонов; позже его можно изменить в разделе Настройки → Сервер.
- Загрузите первую книгу: перетащите папку или файл в админку. Berth прочитает теги, главы и обложку; проверьте их и добавьте книгу в библиотеку.
Docker без Compose, NAS и Raspberry Pi
Для обычного Docker или интерфейса NAS, который просит имя образа:
- В интерфейсе NAS (Synology Container Manager, Unraid, CasaOS): образ
ghcr.io/joveptesg/berth:1, порт8080, папка, примонтированная в/data. - На Raspberry Pi работают те же команды: образ arm64 скачивается автоматически.
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 и восстановите эту копию:
docker compose stop berthdocker compose run --rm berth admin restore /data/backups/auto-<time>.sqlitedocker 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-коды для телефонов. Приложение само переключается между домашним и интернет-адресом.
Бэкапы
- Раздел Настройки → Бэкап в админке скачивает копию базы данных и восстанавливает её — из автоматического бэкапа или из загруженного файла. Текущая база сначала сохраняется, так что восстановление можно отменить.
- С хранилищем S3 сервер может также ежедневно класть копию базы данных в бакет — подальше от диска, на котором живёт база.
- Из консоли, при остановленном сервере:
berth admin restore <file>.
Вопросы
Какой порт использует Berth?
8080 внутри контейнера. Опубликуйте его на любом порту хоста, например -p 9000:8080.
Где хранятся мои книги?
По умолчанию — в локальном хранилище внутри ./data. Позже в админке можно добавить S3-совместимое хранилище и сделать его хранилищем по умолчанию для новых книг. Подробнее: хранилище S3.
Можно ли собрать Berth из исходников?
Да: в клоне репозитория раскомментируйте build: . в docker-compose.yml и выполните docker compose up -d --build.