MAATRIX / Блог / Как установить и настроить DokuWiki на VPS

Как установить и настроить DokuWiki на VPS

MAATRIX

Если команде нужна база знаний или внутренняя документация, первая мысль обычно — поставить MediaWiki или Confluence, а потом администрировать ещё и MySQL: бэкапы базы, миграции, восстановление после сбоя. DokuWiki решает ту же задачу проще: страницы хранятся обычными текстовыми файлами на диске, база данных вообще не нужна. Это делает установку короче, а бэкап — тривиальным. Разберём установку DokuWiki на VPS с нуля: от подготовки сервера до прав доступа и SSL.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что такое DokuWiki и зачем вики без базы данных

DokuWiki — движок вики на PHP, который принципиально не использует СУБД. Каждая страница — это файл в простом текстовом формате (по сути, разметка вроде markdown, только своя) в каталоге data/pages. История правок хранится тут же, в data/attic, версии страниц — обычные файлы с временными метками в имени. Это не игрушечное упрощение: на DokuWiki работают документации крупных open-source проектов именно из-за надёжности и простоты обслуживания такой схемы.

Плюсы отсутствия базы данных практичны и ощущаются сразу. Бэкап — это tar каталога data, а не mysqldump с последующей проверкой целостности дампа. Перенос на другой сервер — скопировать каталог и всё. Не нужно следить за отдельным сервисом СУБД, его потреблением памяти и обновлениями безопасности. Поиск по вики работает через встроенный полнотекстовый индекс на файлах, без плагинов и без настройки движка поиска. Минус тоже есть: на очень больших вики (десятки тысяч страниц) файловая система работает медленнее, чем индексированная СУБД, но для типичной корпоративной или проектной документации это не проблема — DokuWiki спокойно тянет тысячи страниц.

Для установки хватит скромного VPS: 1 ГБ RAM и 1 vCPU достаточно для вики с умеренной посещаемостью, поскольку PHP-процесс лёгкий и постоянно работающих фоновых служб (кроме веб-сервера) нет.

Подготовка сервера и веб-стека

Возьмём Ubuntu 24.04 или Debian 12 — команды для обоих дистрибутивов совпадают. Обновите систему:

apt update && apt -y upgrade

DokuWiki требует только PHP и веб-сервер — базы данных в списке зависимостей нет. Поставим Nginx и PHP-FPM с расширениями, которые реально использует движок:

apt -y install nginx php-fpm php-xml php-mbstring php-gd php-intl php-zip php-curl unzip

php-xml нужен для экспорта и части плагинов, php-mbstring — для корректной работы с кириллицей и другими не-ASCII текстами, php-gd — для генерации миниатюр изображений, php-zip — для установки плагинов и шаблонов через встроенный менеджер, php-curl — для проверки обновлений и части интеграций. Запустите и включите сервисы:

systemctl enable --now nginx php8.3-fpm

Имя сервиса PHP-FPM зависит от версии PHP в дистрибутиве (например, php8.3-fpm на Ubuntu 24.04, php8.2-fpm на Debian 12) — уточните точное имя командой ls /etc/init.d/ | grep php. Если Apache вам ближе, DokuWiki прекрасно работает и на связке Apache с mod_php — принцип настройки прав доступа ниже останется тем же, поменяется только синтаксис веб-сервера.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Установка DokuWiki на сервере

Скачайте актуальный релиз с официального сайта проекта и распакуйте его в каталог сайта:

cd /var/www
wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
mkdir dokuwiki
tar -xzf dokuwiki-stable.tgz -C dokuwiki --strip-components=1

Флаг --strip-components=1 убирает лишний вложенный каталог с версией в имени, чтобы файлы легли сразу в /var/www/dokuwiki. Назначьте владельцем пользователя веб-сервера — это критично, потому что DokuWiki сама пишет на диск и страницы, и служебные данные:

chown -R www-data:www-data /var/www/dokuwiki
find /var/www/dokuwiki -type d -exec chmod 750 {} \;
find /var/www/dokuwiki -type f -exec chmod 640 {} \;

Такие права закрывают файлы от чтения посторонними пользователями системы, но оставляют веб-серверу полный доступ на чтение и запись. Обратите внимание на структуру каталогов, с которой предстоит работать: data/ — сами страницы и медиафайлы, conf/ — конфигурация вики, lib/plugins/ и lib/tpl/ — плагины и шаблоны, bin/ — консольные утилиты для обслуживания. Именно каталог data/ вы будете бэкапить и именно его защитим от прямого доступа из браузера на следующем шаге.

Настройка Nginx и защита служебных каталогов

Раз DokuWiki хранит всё в файлах внутри веб-корня, ключевая задача конфигурации — не дать браузеру напрямую скачать содержимое data/, conf/ или bin/, минуя PHP-обработчик. Без этой защиты страницы вики и её настройки можно просто скачать по прямой ссылке. Создайте конфиг /etc/nginx/sites-available/wiki.vashdomen.ru:

server {
    listen 80;
    server_name wiki.vashdomen.ru;
    root /var/www/dokuwiki;
    index doku.php;

    location ~ /(data|conf|bin|inc|vendor)/ {
        deny all;
    }
    location ~ /\.ht {
        deny all;
    }

    location / {
        try_files $uri $uri/ @dokuwiki;
    }
    location @dokuwiki {
        rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
        rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
        rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
        rewrite ^/(.*) /doku.php?id=$1&$args last;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }
}

Блок location ~ /(data|conf|bin|inc|vendor)/ { deny all; } — это и есть тот самый рубеж, ради которого мы всё это разбираем: без него безопасность вики держится только на честности посетителей. Путь к сокету PHP-FPM (php8.3-fpm.sock) поправьте под установленную версию PHP. Активируйте конфиг и перезапустите Nginx:

ln -s /etc/nginx/sites-available/wiki.vashdomen.ru /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

«Красивые» URL вида /namespace:page вместо /doku.php?id=namespace:page включаются позже, в самой DokuWiki — конфиг выше уже поддерживает оба варианта через блок @dokuwiki.

Мастер установки и права доступа (ACL)

Направьте A-запись поддомена на IP сервера, дождитесь обновления DNS и откройте в браузере http://wiki.vashdomen.ru/install.php — запустится веб-мастер установки. Укажите название вики, создайте учётную запись суперпользователя (логин, пароль, email) и выберите базовую политику доступа. Мастер сам создаст файл conf/local.php с настройками и conf/users.auth.php с первым пользователем.

Сразу после завершения установки удалите или переименуйте install.php — оставленный доступным мастер установки позволяет пересоздать конфигурацию кому угодно:

rm /var/www/dokuwiki/install.php

Дальше настройте контроль доступа через встроенный ACL-менеджер: раздел «Администрирование → Управление правами доступа» в интерфейсе вики. DokuWiki по умолчанию поддерживает несколько политик — открытая вики (читать и писать может любой), вики с регистрацией (писать могут только зарегистрированные) и закрытая вики (доступ только для добавленных пользователей). Права назначаются по пространствам имён (namespace), поэтому один и тот же сервер может держать и публичный раздел документации, и закрытый внутренний с NDA-материалами — достаточно развести их по разным неймспейсам и выставить разные правила в ACL.

Если нужен не набор статических страниц, а полноценный сайт с формами и динамическим контентом — сравните эту задачу со статьёй про установку WordPress на VPS: там уже нужна база данных, и подход к бэкапам будет другим.

SSL, обновления и резервное копирование

Выпустите бесплатный сертификат Let's Encrypt через certbot — домен к этому моменту уже должен резолвиться на сервер:

apt -y install certbot python3-certbot-nginx
certbot --nginx -d wiki.vashdomen.ru

Certbot сам пропишет сертификат в конфиг Nginx и настроит редирект с HTTP на HTTPS. Продление сертификата происходит автоматически через systemd-таймер, вручную ничего запускать не нужно. О разнице между certbot и альтернативными ACME-клиентами — в отдельной статье про выбор между certbot и acme.sh.

Обновления самой DokuWiki ставятся через встроенный плагин Upgrade (раздел «Администрирование → Менеджер плагинов и обновлений») либо вручную — скачиванием новой версии и заменой файлов движка с сохранением каталога conf/ и data/. Плагины и шаблоны тоже ставятся из интерфейса через официальный репозиторий на dokuwiki.org без ручной загрузки архивов.

Бэкап здесь ощутимо проще, чем у любого движка на базе СУБД — не нужен mysqldump, не нужно беспокоиться о согласованности дампа с файлами. Достаточно упаковать каталог data/ (страницы, история версий, медиафайлы) и conf/ (настройки, права доступа):

tar -czf wiki-backup-$(date +%F).tar.gz -C /var/www/dokuwiki data conf

Для регулярного бэкапа добавьте эту команду в cron и выгружайте архив за пределы сервера. Если нужен более серьёзный подход с версионированием и дедупликацией самих бэкапов — подойдёт связка с BorgBackup на Ubuntu 24.04, настроенная на тот же каталог data/.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Можно ли перенести DokuWiki на другой сервер простым копированием?

Да, и это одно из главных преимуществ отсутствия базы данных. Скопируйте весь каталог с установкой (или минимум data/, conf/ и lib/plugins/ со сторонними плагинами) на новый сервер, настройте веб-сервер по тому же принципу — и вики заработает без экспорта-импорта дампов.

Нужна ли база данных для больших вики с тысячами страниц?

Нет, файловое хранилище DokuWiki рассчитано на такие объёмы и используется в проектах с тысячами страниц. Ощутимая просадка производительности начинается на действительно больших инсталляциях (десятки тысяч страниц с активной одновременной работой), и для этого случая есть настройки кэширования и индексации, а не переход на СУБД.

Как защитить вики от индексации поисковиками, если она внутренняя?

Проще всего закрыть доступ на уровне Nginx (Basic Auth или ограничение по IP) в дополнение к ACL самой DokuWiki, а также добавить robots.txt с запретом индексации. ACL защищает от чтения содержимого, но не мешает поисковику узнать о самом существовании страниц, если сервер публично доступен.

Чем DokuWiki отличается от MediaWiki по требованиям к серверу?

MediaWiki (движок Wikipedia) требует MySQL/MariaDB и заметно прожорливее по ресурсам — это оправдано на очень больших энциклопедиях с миллионами статей. Для внутренней документации команды или проекта DokuWiki экономнее и проще в обслуживании именно за счёт отказа от СУБД.

Работает ли DokuWiki без прав записи в свой каталог?

Нет, это принципиально важно: движку нужны права на запись в data/, conf/ и несколько служебных подкаталогов, иначе не сохранятся ни правки страниц, ни настройки. Именно поэтому владельцем файлов должен быть пользователь веб-сервера (www-data в примерах выше), а не root.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →