Открыть сервис

DokuWiki

DokuWiki — это свободное программное обеспечение для создания вики-сайтов, написанное на языке программирования PHP и распространяемое под лицензией GNU GPL. Относится к классу движков вики (wiki-движков), предназначенных для совместного создания, редактирования и хранения структурированной информации. Ключевой особенностью DokuWiki является отсутствие необходимости в реляционной базе данных: все данные хранятся в текстовых файлах (обычно в формате UTF-8), что делает систему лёгкой, портативной и не требующей сложной настройки сервера.

История

Проект DokuWiki был начат в 2004 году немецким разработчиком Андреасом Гохом (Andreas Gohr). Первая публичная версия (0.0.1) вышла в июне 2004 года. Основной мотивацией создания было желание получить вики-движок, который был бы прост в установке, не требовал базы данных (как, например, MediaWiki) и мог работать на дешёвом хостинге с поддержкой PHP. Название «DokuWiki» происходит от немецкого слова «Dokumentation» (документация), так как изначально проект позиционировался как инструмент для ведения документации разработчиками.

Ключевые вехи развития:

  • 2005 год: выход версии 2005-07-01, которая стала первой стабильной и получила широкое распространение.
  • 2006 год: появление поддержки плагинов, что кардинально расширило функциональность.
  • 2008 год: введение системы управления версиями (интеграция с Git).
  • 2010 год: версия 2010-11-07 («Angua») с улучшенным интерфейсом и поддержкой кэширования.
  • 2013 год: версия 2013-05-10 («Binky») с переработанной системой шаблонов.
  • 2018 год: версия 2018-04-22c («Greebo») с поддержкой PHP 7, улучшенной безопасностью и новым редактором.
  • 2023 год: версия 2023-04-04a («Jack Jackrum») с поддержкой PHP 8.x и обновлённым интерфейсом.

По состоянию на 2024 год DokuWiki остаётся одним из самых популярных лёгких вики-движков, особенно в среде разработчиков, системных администраторов и малых предприятий.

Архитектура и принципы работы

Хранение данных

В отличие от большинства современных вики-движков (MediaWiki, Confluence), DokuWiki не использует базу данных. Все страницы, их ревизии, медиафайлы и метаданные хранятся в файловой системе сервера в виде текстовых файлов.

  • Страницы: хранятся в каталоге pages/ в виде текстовых файлов с расширением .txt. Имя файла соответствует имени страницы (например, start.txt для главной страницы).
  • Ревизии: старые версии страниц сохраняются в каталоге attic/ с отметкой времени.
  • Медиафайлы: изображения, PDF, архивы и другие файлы хранятся в каталоге media/.
  • Метаданные: информация о правах доступа, датах изменения, ссылках хранится в каталоге meta (организация признана экстремистской, деятельность запрещена в РФ)/ в формате сериализованного PHP.

Такая архитектура делает DokuWiki чрезвычайно простой в установке и резервном копировании (достаточно скопировать файлы), но накладывает ограничения на производительность при очень больших объёмах данных (сотни тысяч страниц).

Синтаксис разметки

DokuWiki использует собственный упрощённый язык разметки, который значительно проще HTML и похож на разметку других вики-систем. Основные элементы:

  • Заголовки: ====== Заголовок ====== (уровень 1), ===== Заголовок ===== (уровень 2) и т.д.
  • Жирный текст: текст
  • Курсив: //текст//
  • Ссылки: [[имя_страницы]] (внутренние), [[http://example.com|текст]]` (внешние)
  • Списки: * для маркированных, - для нумерованных
  • Таблицы: | ячейка1 | ячейка2 |
  • Изображения: {{:путь_к_файлу.png}}

Синтаксис поддерживает также вложенные разделы, примечания, сноски, математические формулы (через плагин) и другие элементы.

Плагины и шаблоны

Ключевым преимуществом DokuWiki является модульная архитектура. Функциональность расширяется через плагины, которые могут добавлять:

  • Новые синтаксические конструкции (например, диаграммы, графики, формулы LaTeX).
  • Интеграцию с внешними сервисами (GitHub, Slack, LDAP).
  • Улучшенные редакторы (WYSIWYG, Markdown).
  • Дополнительные инструменты безопасности (двухфакторная аутентификация).
  • Расширенные средства поиска и навигации.

Официальный репозиторий плагинов содержит более 1000 расширений. Шаблоны (темы оформления) позволяют полностью изменить внешний вид вики. Наиболее популярные шаблоны: «Arctic», «Bootstrap3», «Dokuwiki Template».

Основные возможности

Совместная работа

DokuWiki поддерживает все стандартные функции вики-систем:

  • Редактирование страниц: любой авторизованный пользователь может редактировать содержимое.
  • История изменений: каждая правка сохраняется, доступна для просмотра и отката.
  • Дискуссии: к каждой странице можно прикрепить страницу обсуждения.
  • Уведомления: система может отправлять email-уведомления об изменениях.

Управление доступом

DokuWiki имеет встроенную систему управления доступом (ACL — Access Control Lists), которая позволяет гибко настраивать права для пользователей и групп:

  • Чтение, редактирование, создание, удаление страниц.
  • Загрузка и удаление медиафайлов.
  • Управление пользователями и группами.

Права могут быть назначены как на отдельные страницы, так и на целые пространства имён (категории).

Поиск и навигация

  • Полнотекстовый поиск: поиск по содержимому всех страниц (без базы данных выполняется через индексацию файлов).
  • Дерево страниц: автоматическое построение иерархии на основе пространств имён.
  • Индексы: страницы могут быть помечены тегами (через плагин) для облегчения навигации.
  • Карта сайта: генерируется автоматически.

Экспорт и интероперабельность

DokuWiki поддерживает экспорт содержимого в различные форматы:

  • HTML: статическая копия сайта.
  • PDF: через плагин «dw2pdf» (с использованием библиотеки mPDF).
  • Plain Text: чистый текст без разметки.
  • XML: для интеграции с другими системами.

Также возможен импорт из других вики-систем (MediaWiki, PmWiki) с помощью специализированных плагинов.

Применение

DokuWiki используется в различных сферах благодаря своей простоте и гибкости:

  • Корпоративная документация: малые и средние компании часто используют DokuWiki для ведения внутренней документации, баз знаний, инструкций.
  • Образовательные проекты: школы, университеты и онлайн-курсы для создания учебных материалов.
  • Личные проекты: ведение заметок, дневников, личных баз знаний.
  • Разработка ПО: команды разработчиков используют DokuWiki для документирования API, архитектуры, процессов.
  • Научные исследования: для коллективного написания статей, ведения лабораторных журналов.

Примеры известных проектов, использующих DokuWiki: документация к некоторым дистрибутивам Linux (например, OpenWrt), вики-сайты сообществ (например, вики по настольным играм), внутренние порталы компаний.

Преимущества и недостатки

Преимущества

  • Простота установки: не требуется база данных, достаточно PHP и веб-сервера.
  • Портативность: можно запустить с USB-накопителя или на дешёвом хостинге.
  • Безопасность: файловая система менее уязвима для SQL-инъекций.
  • Гибкость: тысячи плагинов и шаблонов.
  • Совместимость: работает на всех основных веб-серверах (Apache, Nginx, IIS) и операционных системах (Linux, Windows, macOS).
  • Низкие требования: минимальные системные ресурсы.

Недостатки

  • Производительность: при большом количестве страниц (более 10 000) поиск и загрузка могут замедляться.
  • Отсутствие WYSIWYG по умолчанию: встроенный редактор — текстовый, что может быть неудобно для неопытных пользователей (хотя есть плагины, добавляющие визуальный редактор).
  • Ограниченная мультимедиа: встроенная поддержка только базовых форматов изображений и файлов.
  • Сложность масштабирования: для крупных проектов (сотни тысяч страниц) требуется оптимизация сервера и кэширования.

Сравнение с аналогами

ПараметрDokuWikiMediaWikiConfluence (проприетарный)
База данныхНет (файлы)MySQL/MariaDBPostgreSQL/MySQL
Сложность установкиНизкаяСредняяВысокая
ПроизводительностьСредняя (до 10 000 стр.)ВысокаяВысокая
РасширяемостьПлагиныРасширенияПлагины (платные)
ЛицензияGNU GPLGNU GPLПроприетарная
Основное применениеМалые/средние проектыКрупные энциклопедииКорпоративные базы знаний

Безопасность

DokuWiki имеет встроенные механизмы защиты:

  • Защита от CSRF: использование токенов в формах.
  • Защита от XSS: экранирование HTML-тегов в пользовательском вводе.
  • Управление сессиями: поддержка HTTP-only cookies.
  • Аудит прав: ACL-система предотвращает несанкционированный доступ.

Однако, как и любое PHP-приложение, DokuWiki требует своевременного обновления для закрытия уязвимостей. Разработчики регулярно выпускают патчи безопасности.

Интересные факты

  • Название «DokuWiki» происходит от немецкого «Dokumentation», а не от «Doku» как сокращения от «документация» в английском.
  • DokuWiki поддерживает интервики (связи между разными вики-сайтами) по умолчанию.
  • В состав DokuWiki входит встроенный кэш страниц, который ускоряет загрузку для анонимных пользователей.
  • Система может работать на PHP версии 5.6 и выше, включая PHP 8.x.
  • DokuWiki имеет встроенную поддержку UTF-8, что делает её пригодной для многоязычных проектов.

Источники

  • Официальный сайт DokuWiki: dokuwiki.org
  • Документация DokuWiki: «DokuWiki Manual»
  • Репозиторий плагинов: «DokuWiki Plugin Repository»
  • Статья «DokuWiki» в Википедии (английская версия)
  • Книга «The DokuWiki Cookbook» (Andreas Gohr, 2010)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →