Задумался я над разворачиванием у себя системы для создания, хранения и совместной работы с документацией. И выбор пал на BookStack.

Есть опыт разворачивания двух систем:

  • Atlassian Confluence — огромное количество настроек, потребляет большое количество системных ресурсов. Работает медленно, если не «залить» системными ресурсами.
  • Gitea — система хранения кода, однако имеет и встроенную Wiki. Каждый репозиторий имеет свою отдельную Wiki. Хочешь вести документацию без привязки к разрабатываемому коду? Всё равно надо создать репозиторий. Wiki здесь проста и не настраивается, группировки страниц нет. Для простых задач подходит, но не для меня.

Изучил что есть в этой сфере и выбрал для себя BookStack. Система простая, удобная и работает очень шустро. Но с установкой придётся повозиться, если заходите руками каждый пакет устанавливать и настраивать.

Установка

В документации BookStack есть ссылки на статьи по установке на различные системы (https://www.bookstackapp.com/docs/). В одной из статей я нашёл скрипт для установки на RHEL и CentOS 8. Слегка поправив скрип мне удалось установить BookStack на CentOS 9. Теперь опишем установку с помощью готового скрипта.

Скрипт предназначен для установки на чистую систему. Если у вас на сервере установлена MariaDB, PHP, Nginx, то вам, скорее всего, необходимо будет править скрипт. Пробуйте и экспериментируйте.

Скачайте скрипт для автоматической установки.

Если ходите установить на CentOS 8, то измените в скрипте строку 17 заменив remi-release-9.rpm на remi-release-8.rpm. Далее следуйте инструкции из статьи.

Определим какая версия PHP будет установлена после запуска скрипта:

yum info php

Видим версию PHP:

Версия PHP

Пропишем данную версию в скрипте в строках 50, 63, 66. В моём конкретном случае я изменю на 8.0 (не нужно указывать в версии третье число после второй точки):

строка 50: dnf -y module enable php:remi-8.0
строка 63: dnf --enablerepo=remi install -y php80-php-tidy php80-php-json php80-php-pecl-zip
строка 66: ln -s /opt/remi/php80/root/usr/lib64/php/modules/tidy.so /usr/lib64/php/modules/tidy.so

По умолчанию в скрипте прописана версия 7.4. На момент установки в репозитории CentOS, скорее всего, устанавливаемая версия PHP уже отличается от прописанной в скрипте.

Поместите скачанный файл bookstack-install.sh в каталог /tmp. Сделайте файл исполняемым:

sudo chmod +x /tmp/bookstack-install.sh

Запустите скрипт:

sudo /tmp/bookstack-install.sh

Дожидаемся полной установки. После установки скрипт выведет в терминал логин и пароль от базы данных MariaDB, а также логин и пароль для входа в систему BookStack (запомните/запишите их). Логин и пароль от базы данных MariaDB также будут в файле /tmp/DB_ROOT.delete.

Удалите файлы:

sudo rm -f /tmp/DB_ROOT.delete
sudo rm -f /tmp/bookstack-install.sh

Перейдите по адресу http://{IP-BookStack}. Логин и пароль администратора стандартные admin@admin.com:password

Приятной работы с BookStack.

Смена порта

После установки BookStack будет открываться на 80 порту. Если вы хотите изменить порт, то вам необходимо указать порт в файле /var/www/BookStack/.env в строке:

APP_URL=http://192.168.1.50:8090

Изменить порт в файле /etc/nginx/conf.d/bookstack.conf:

server {
    listen 8090;

Перезагрузить nginx:

systemctl restart nginx.service

Откройте требуемый порт в системе:

firewall-cmd --zone=public --add-port=8090/tcp --permanent
firewall-cmd --reload

Если у вас уже ведётся документация в системе, то надо перегенерировать ссылки в базе данных на существующие документы, для этого выполнить команды:

cd /var/www/BookStack/
php artisan bookstack:update-url http://192.168.1.50 http://192.168.1.50:8090

Теперь переходите по адресу http://{IP-BookStack}:{ПОРТ}. Пример: http://192.168.1.50:8090

P.S. На момент написания статьи устанавливался BookStack 23.01.1 Если вы данную статью читаете через десятилетия и нужна именно эта версия, то скачайте BookStack 23.01.1. В остальных случаях используйте самую последнюю версию, которую скрипт скачает автоматически.