Skip to main content

Документация по восстановлению BookStack + MariaDB (Production)



## Назначение документа

Данный документ описывает полный процесс восстановления
продакшн-инстанса BookStack, развернутого в Docker с отдельным
контейнером MariaDB.

Документ предназначен для быстрого восстановления системы в случае: -
смены домена - удаления контейнера БД - ошибки APP_KEY - ошибки 500
Internal Server Error - проблем с Docker-сетями - ошибок подключения к
базе данных

------------------------------------------------------------------------

# Архитектура

## Компоненты

-   BookStack: lscr.io/linuxserver/bookstack
-   MariaDB: lscr.io/linuxserver/mariadb
-   Сеть: user-defined docker network (bookstack-net)
-   Хранение данных: bind mount

## Пути хранения

BookStack config: /home/med1f/docker/bookstack/data

MariaDB data: /home/med1f/docker/bookstack/data/databases

------------------------------------------------------------------------

# Типовые проблемы и решения

------------------------------------------------------------------------

# 1. Контейнер MariaDB удалён

## Проверка наличия данных

Проверить наличие файлов БД:

ls -la /home/med1f/docker/bookstack/data/databases

Критически важные файлы: - ibdata1 - ib_logfile0 - aria_log\* - папка
mysql/ - папка bookstack/

Если файлы присутствуют --- данные НЕ потеряны.

## Восстановление контейнера MariaDB

docker run -d --name sweet_tanthep-main_app-1 -e
MYSQL_ROOT_PASSWORD=ROOT_PASSWORD -v
/home/med1f/docker/bookstack/data/databases:/var/lib/mysql -p 3306:3306
--restart unless-stopped lscr.io/linuxserver/mariadb:latest

------------------------------------------------------------------------

# 2. Ошибка: APP_KEY is missing

Причина: linuxserver/bookstack требует APP_KEY в ENV.

## Генерация ключа

docker run -it --rm --entrypoint /bin/bash
lscr.io/linuxserver/bookstack:latest appkey

Скопировать сгенерированный ключ формата: base64:XXXXXXXXXXXXXXXX

------------------------------------------------------------------------

# 3. Ошибка 500 Internal Server Error

Чаще всего причина --- неправильные параметры БД.

## Проверка файла .env

Файл расположен:

/home/med1f/docker/bookstack/data/www/.env

Проверить блок БД:

DB_HOST=sweet_tanthep-main_app-1 DB_DATABASE=bookstack
DB_USERNAME=bookstack DB_PASSWORD=Passwd55

Важно: В .env используется DB_USERNAME, а НЕ DB_USER.

После изменений:

docker restart bookstack

------------------------------------------------------------------------

# 4. Ошибка: Name does not resolve

Причина: Контейнеры находятся в default bridge сети. Default bridge НЕ
поддерживает DNS по именам контейнеров.

## Решение --- создать user-defined сеть

docker network create bookstack-net

Подключить MariaDB:

docker network connect bookstack-net sweet_tanthep-main_app-1

Запускать BookStack в этой сети:

--network bookstack-net

------------------------------------------------------------------------

# 5. Ошибка: Access denied for user

Причина: Пользователь БД создан только для localhost или пароль не
совпадает.

Проверка:

docker exec -it sweet_tanthep-main_app-1 mysql -u root -p

SELECT user, host FROM mysql.user;

Если нет bookstack@%:

CREATE USER 'bookstack'@'%' IDENTIFIED BY 'Passwd55'; GRANT ALL
PRIVILEGES ON bookstack.\* TO 'bookstack'@'%'; FLUSH PRIVILEGES;

------------------------------------------------------------------------

# Финальная рабочая команда запуска BookStack

docker run -d --name bookstack --network bookstack-net -e
APP_URL=https://wiki.anonix.org -e APP_KEY='base64:YOUR_KEY' -e
PUID=1000 -e PGID=1000 -v /home/med1f/docker/bookstack/data:/config -p
6875:80 --restart unless-stopped lscr.io/linuxserver/bookstack:latest

------------------------------------------------------------------------

# Рекомендации для Production

1.  Использовать docker-compose.
2.  Использовать отдельную user-defined сеть.
3.  Регулярно делать бэкап БД.
4.  Делать бэкап папки /config.
5.  Не использовать default bridge для production.

------------------------------------------------------------------------

# Бэкап

## Бэкап базы

docker exec sweet_tanthep-main_app-1 mysqldump -u bookstack -p bookstack
\> bookstack_backup.sql

## Бэкап config

tar -czf bookstack_config_backup.tar.gz
/home/med1f/docker/bookstack/data

------------------------------------------------------------------------

# Статус

Система полностью восстановлена. Данные сохранены. Сеть корректна.
Ошибки устранены.