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

Развертывание wiki.homevault.su

Полное руководство: настройка гостевого доступа в BookStack, получение SSL Certbot и конфигурирование внешнего Nginx

Данный документ содержит пошаговый план настройки домашней базы знаний на домене wiki.homevault.su. Руководство включает в себя как внутреннюю конфигурацию контейнера BookStack (для работы без пароля), так и внешнюю обвязку безопасности на хост-системе Debian.

1. Архитектура каталогов BookStack

Данные BookStack в Docker разделены на две ключевые директории на хосте:

  • db_data — база данных (MySQL/MariaDB). Напрямую не редактируется.
  • app_data — файлы приложения. Конфигурация находится по пути app_data/www/.env.
app_data/
├── backups/
├── keys/
├── log/
├── nginx/
├── php/
└── www/  <-- Папка веб-приложения
    └── .env  <-- Главный файл настроек (скрытый)

2. Активация гостевого доступа (без пароля)

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

  1. Перейдите в папку с файлом конфигурации:
    cd app_data/www/
  2. Откройте скрытый файл .env:
    nano .env
  3. Найдите (или добавьте в конец) строку, разрешающую публичный просмотр:
    ALLOW_PUBLIC_VIEWING=true
  4. Измените основной URL приложения на защищенный HTTPS-адрес:
    APP_URL=https://wiki.homevault.su
  5. Сохраните файл (Ctrl+O, затем Enter) и выйдите (Ctrl+X).
  6. Перезапустите Docker-контейнеры, чтобы изменения применились.

3. Получение SSL-сертификата Certbot

Выпуск бесплатного сертификата Let's Encrypt выполняется на хост-системе Debian через Certbot:

  1. Убедитесь, что Certbot и плагин Nginx установлены на хосте:
    sudo apt update && sudo apt install certbot python3-certbot-nginx -y
  2. Запустите мастер автоматического получения сертификата:
    sudo certbot --nginx -d wiki.homevault.su

После успешного завершения ваши ключи сохранятся в директории: /etc/letsencrypt/live/wiki.homevault.su/

4. Настройка обратного прокси Nginx на хосте

Для перенаправления внешнего зашифрованного трафика внутрь Docker-контейнера создается виртуальный хост Nginx.

  1. Создайте конфигурационный файл:
    sudo nano /etc/nginx/sites-available/wiki.homevault.su
  2. Вставьте следующую конфигурацию (при необходимости скорректируйте порт контейнера, по умолчанию указан 8080):
# Редирект HTTP -> HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name wiki.homevault.su;
    return 301 https://$host$request_uri;
}

# HTTPS Сервер
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name wiki.homevault.su;

    # SSL сертификаты от Certbot
    ssl_certificate /etc/letsencrypt/live/wiki.homevault.su/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/wiki.homevault.su/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;

    access_log /var/log/nginx/bookstack_access.log;
    error_log /var/log/nginx/bookstack_error.log;

    client_max_body_size 50M; # Лимит загрузки картинок

    location / {
        proxy_pass http://127.0.0.1:8080; # Локальный порт контейнера BookStack
        
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_redirect off;
        proxy_buffering off;
    }
}
  1. Активируйте конфигурацию, создав символическую ссылку:
    sudo ln -s /etc/nginx/sites-available/wiki.homevault.su /etc/nginx/sites-enabled/
  2. Убедитесь в отсутствии ошибок в синтаксисе конфигурационных файлов:
    sudo nginx -t
  3. Примените конфигурацию:
    sudo systemctl reload nginx

5. Управление гостевыми ролями в интерфейсе

После включения ALLOW_PUBLIC_VIEWING незарегистрированные пользователи привязаны к роли Public (Общедоступный) в панели управления BookStack:

Варианты настройки прав доступа:

А. Открытая база знаний: В Настройки -> Роли -> Public выставите глобальные галочки на "Просмотр" (View) для всех книг и страниц.

Б. Выборочные статьи: Оставьте настройки роли Public пустыми. Перейдите к нужной книге/странице, нажмите кнопку "Права" (Permissions), включите собственные разрешения и в строке роли Public отметьте "Просмотр".

Обратите внимание:

При точечном (выборочном) доступе гостевые пользователи увидят пустую главную страницу. Чтобы они нашли нужные статьи, делитесь с ними прямыми ссылками или настройте структуру так, чтобы они могли пользоваться поисковой строкой на сайте.