Перейти к основному контенту

Глава 5: Изоляция — Запуск BookStack в Docker

Теперь, когда сетевая инфраструктура настроена, мы переходим непосредственно к серверу Debian. Мы развернем BookStack внутри изолированного Docker-контейнера. Это избавит нас от необходимости вручную устанавливать в систему PHP, веб-сервер Apache и модули, а также гарантирует, что приложение не будет конфликтовать с другим софтом на сервере.


1. Подготовка директорий для данных

Для того чтобы все ваши статьи, настройки и загруженные картинки не пропали при обновлении или перезапуске Docker-контейнеров, нам нужно вынести их на жесткий диск хост-машины (в вашу домашнюю папку, которую потом легко бэкапить).

Подключитесь к серверу по SSH и создайте структуру папок для проекта:

mkdir -p ~/bookstack/app && mkdir -p ~/bookstack/db && cd ~/bookstack

2. Создание файла конфигурации Docker Compose

Мы будем использовать Docker Compose для одновременного запуска двух контейнеров: самого BookStack и базы данных MariaDB. Создайте файл манифеста:

nano docker-compose.yml

Вставьте в него следующий конфигурационный код (используются надежные и регулярно обновляемые образы от сообщества linuxserver.io):

version: '2'

services:

  bookstack-db:

    image: lscr.io/linuxserver/mariadb:latest

    container_name: bookstack_db

    environment:

      - PID=1000

      - PGID=1000

      - TZ=Europe/Moscow

      - MYSQL_ROOT_PASSWORD=your_super_secret_root_password

      - MYSQL_DATABASE=bookstackapp

      - MYSQL_USER=bookstackuser

      - MYSQL_PASSWORD=your_secure_db_password

    volumes:

      - ./db:/config

    restart: unless-stopped




  bookstack:

    image: lscr.io/linuxserver/bookstack:latest

    container_name: bookstack

    environment:

      - PUID=1000

      - PGID=1000

      - TZ=Europe/Moscow

      - APP_URL=https://wiki.myserver.ru

      - DB_HOST=bookstack-db

      - DB_USER=bookstackuser

      - DB_PASS=your_secure_db_password

      - DB_DATABASE=bookstackapp

    volumes:

      - ./app:/config

    ports:

      - "6875:80"

    restart: unless-stopped

3. Важные параметры, которые нужно изменить:

  •    
  • TZ=Europe/Moscow — укажите ваш актуальный часовой пояс.
  •    
  • MYSQL_ROOT_PASSWORD — придумайте сложный пароль для главного администратора базы данных.
  •    
  • MYSQL_PASSWORD и DB_PASS — придумайте и пропишите одинаковый надежный пароль для пользователя базы данных (эти поля должны строго совпадать в обоих блоках!).
  •    
  • APP_URL — укажите ваш будущий защищенный адрес с https:// (например, https://wiki.myserver.ru). BookStack жестко привязывается к этому URL для генерации внутренних ссылок и стилей.
  •    
  • Порты (ports): Обратите внимание на строку - "6875:80". Контейнер BookStack внутри себя слушает стандартный 80-й порт, но мы "пробрасываем" его наружу на свободный порт сервера 6875. Именно на этот порт в следующей главе мы натравим Nginx.

Сохраните файл (в nano: Нажмите Ctrl+O, затем Enter, для выхода — Ctrl+X).


4. Запуск контейнеров

Запустите сборку и старт контейнеров в фоновом режиме (демоне):

sudo docker compose up -d

Проверьте статус запущенных контейнеров:

sudo docker ps

Оба контейнера (bookstack и bookstack_db) должны иметь статус Up (healthy) или просто Up.


5. Промежуточная проверка

Сейчас BookStack уже работает внутри вашего сервера. Вы можете временно проверить это, открыв браузер на рабочем компьютере в локальной сети и перейдя по адресу:
http://192.168.1.100:6875 (где вместо 192.168.1.100 укажите локальный IP вашего сервера).

Примечание: На данном этапе сайт может отображаться некорректно (без картинок или стилей) или выдавать ошибку перенаправления. Это абсолютно нормально! Приложение ждет, когда к нему обратятся по протоколу HTTPS через доменное имя, которое мы прописали в APP_URL.

Итог главы: Движок BookStack запущен и крутится внутри Docker, изолированно сохраняя свои данные в папки на сервере. В следующей главе мы настроим Nginx, который примет на себя роль диспетчера на входе в сервер.