MAATRIX / Блог / DokuWiki на Ubuntu 24.04: пошаговая установка

DokuWiki на Ubuntu 24.04: пошаговая установка

MAATRIX

Если вам нужна база знаний для команды или личный архив заметок, но заводить ради этого MySQL и городить бэкапы базы данных не хочется — DokuWiki решает эту задачу элегантно. Все страницы хранятся обычными текстовыми файлами в структуре каталогов, поэтому вики можно скопировать через rsync, положить под git или просто заархивировать tar — никакого дампа SQL. Ниже — установка с нуля на Ubuntu 24.04, от подготовки сервера до первого входа в админку.

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

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

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

Что понадобится и почему без базы данных — это плюс

DokuWiki написана на PHP и вместо СУБД использует файловую систему: каждая страница — это .txt-файл в синтаксисе, близком к обычному markdown, а метаданные (история правок, права доступа) лежат рядом в служебных папках. Из этого вытекают практические следствия:

  • Резервное копирование — это копирование каталога data/, а не mysqldump по расписанию.
  • Меньше точек отказа: не нужно следить за отдельным процессом СУБД, её памятью и правами доступа.
  • История версий страниц работает из коробки на уровне файлов, без дополнительных таблиц.
  • Минимальные требования к серверу: даже 1 vCPU и 1 ГБ RAM тянут DokuWiki с запасом для небольшой команды.

Для сравнения — если бы вы ставили WordPress, MySQL был бы обязателен; про это есть отдельный разбор в статье про установку WordPress на Ubuntu 24.04. DokuWiki в этом смысле проще: меньше сущностей — меньше что может сломаться.

Понадобится сервер с Ubuntu 24.04 (подойдёт минимальный тариф VPS), домен, направленный на сервер, и доступ по SSH с правами sudo.

Подготовка сервера: обновления, пакеты, файрвол

Подключаемся по SSH и первым делом обновляем систему:

sudo apt update && sudo apt upgrade -y

Ставим Nginx как веб-сервер и PHP-FPM с нужными модулями. DokuWiki не требует много расширений PHP — достаточно базового набора:

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

Проверьте, какая версия PHP установилась (это важно для следующего шага с конфигом Nginx):

php -v

На Ubuntu 24.04 обычно ставится PHP 8.3, сокет будет /run/php/php8.3-fpm.sock — если у вас другая версия, скорректируйте путь ниже.

Настраиваем UFW, чтобы сервер сразу был закрыт от лишнего:

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable

Если раньше не работали с UFW — есть отдельная инструкция по настройке файрвола UFW на Ubuntu 24.04, там разобраны нюансы с правилами и логированием.

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

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

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

Загрузка и распаковка DokuWiki

Скачиваем актуальный релиз с официального сайта проекта (архив «stable»). На момент написания статьи актуальная ветка называется по кодовому имени релиза — проверьте на dokuwiki.org, что это последний stable-tarball, ссылка вида https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz всегда указывает на свежую версию:

cd /tmp
curl -LO https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
mkdir dokuwiki-extract
tar -xzf dokuwiki-stable.tgz -C dokuwiki-extract --strip-components=1

Переносим в рабочую директорию сайта:

sudo mkdir -p /var/www/dokuwiki
sudo cp -a /tmp/dokuwiki-extract/. /var/www/dokuwiki/

Выставляем владельца — процесс PHP-FPM на Ubuntu по умолчанию работает от пользователя www-data, и DokuWiki должна иметь право писать в свои рабочие каталоги:

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

Важный момент: DokuWiki должна иметь возможность писать в каталоги data/, conf/, lib/tpl и некоторые другие — веб-инсталлятор сам проверит права на следующем шаге и подскажет, если что-то не так.

Конфигурация Nginx

DokuWiki не даёт готового конфига под Nginx (проект исторически ориентирован на Apache с .htaccess), поэтому правила rewrite для «чистых» URL пропишем сами. Создаём файл сайта:

sudo nano /etc/nginx/sites-available/dokuwiki

Базовый рабочий конфиг с поддержкой красивых URL (doku.php?id= заменяется на /page-name):

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

    client_max_body_size 20M;

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

    location ~ /\. {
        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;
    }
}

Замените wiki.example.com на ваш домен и php8.3-fpm.sock — на актуальную версию из вывода php -v. Блок location ~ /(data|conf|bin|inc|vendor)/ критически важен: без него любой посетитель сможет напрямую скачать файлы страниц через браузер, минуя приложение.

Активируем конфиг и проверяем синтаксис:

sudo ln -s /etc/nginx/sites-available/dokuwiki /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Если Nginx откажется стартовать после правки — частые причины разобраны в статье Nginx не стартует после правки конфига.

HTTPS через Let's Encrypt

Открытая по HTTP вики — плохая идея, особенно если внутри рабочие заметки или пароли к внутренним сервисам. Ставим certbot и получаем сертификат:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d wiki.example.com

Certbot сам пропишет редирект с HTTP на HTTPS в конфиге Nginx и настроит автопродление через systemd-таймер. Проверить, что таймер активен, можно так:

systemctl list-timers | grep certbot

Если в будущем сертификат перестанет обновляться — типичные причины и решения собраны в статье SSL-сертификат не обновился. Как альтернативу certbot иногда рассматривают acme.sh — разница подходов разобрана в сравнении certbot или acme.sh: что выбрать для сервера.

Веб-установщик и первичная настройка

Открываем в браузере https://wiki.example.com/install.php. DokuWiki запустит пошаговый мастер:

  1. Проверка окружения — установщик покажет, все ли права на запись выставлены корректно. Если что-то красное — вернитесь и перепроверьте chown/chmod из шага выше.
  2. Название вики — заголовок, который увидят пользователи.
  3. ACL (контроль доступа) — здесь стоит сразу выбрать вариант «Открытая вики, требуется вход для правки» или «Закрытая вики» в зависимости от назначения. Для внутренней базы знаний команды обычно выбирают закрытый режим.
  4. Суперпользователь — создайте учётную запись администратора с сильным паролем.

После завершения мастера обязательно удалите install.php — оставленный установщик на проде это классическая дыра:

sudo rm /var/www/dokuwiki/install.php

Дальнейшая тонкая настройка — через /doku.php?do=admin&page=config в интерфейсе администратора: язык интерфейса, лицензия контента, шаблон оформления, плагины аутентификации (LDAP, Active Directory — если нужна интеграция с корпоративной инфраструктурой).

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

Главное преимущество файловой архитектуры — бэкап тривиален. Резервируйте два каталога: data/ (сами страницы, медиа, история версий) и conf/ (настройки, права доступа):

tar -czf dokuwiki-backup-$(date +%Y%m%d).tar.gz -C /var/www/dokuwiki data conf

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

Обновление DokuWiki делается через встроенный менеджер расширений (Extension Manager) в админке — он же умеет ставить плагины и шаблоны из официального каталога — либо вручную: скачиваете новый tarball, распаковываете поверх, не затрагивая conf/ и data/. Перед обновлением на проде всегда снимайте бэкап — откат в случае проблем сведётся к возврату архива.

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

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

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

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

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

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

Нужна ли DokuWiki база данных вообще?

Нет, это принципиальная особенность движка — все данные хранятся в файловой системе. При желании можно подключить внешние плагины для кеширования или поиска, но для базовой работы СУБД не требуется.

Выдержит ли DokuWiki большую вики на тысячи страниц?

Да, файловая архитектура масштабируется вполне прилично для внутренних баз знаний — узкое место обычно не в движке, а в дисковых операциях при полнотекстовом поиске по очень большому объёму; для этого есть настройка индекса поиска.

Как перенести DokuWiki на другой сервер?

Скопируйте data/, conf/, lib/plugins (если ставили сторонние плагины) и lib/tpl (кастомные шаблоны) через rsync, разверните тот же конфиг Nginx на новом сервере и поменяйте DNS-запись домена.

Можно ли использовать DokuWiki как внутреннюю документацию с ограничением по IP?

Да, добавьте в блок location / конфига Nginx директиву allow для нужных подсетей и deny all; — это дополнительный уровень защиты поверх ACL самой DokuWiki.

Чем DokuWiki отличается от MediaWiki?

MediaWiki (движок Википедии) требует MySQL/MariaDB и тяжелее по ресурсам, зато лучше подходит для очень крупных публичных проектов с большой нагрузкой; DokuWiki — выбор для команд и личных баз знаний, где важны простота обслуживания и лёгкий бэкап.

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

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

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