Skip to main content

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

#


Документация
по
восстановлению 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

\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

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


# Статус


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


Ошибки устранены.