Установка Wiki.js v1 на Fedora 29 с NGINX, MongoDB и PM2
Введение

Wiki.js — это открытое, современное и функциональное wiki-приложение на базе Node.js, Git и Markdown. Приложение оптимизировано для экономного расхода CPU и удобно для совместной работы. Ключевые возможности:
- Редактирование в Markdown с поддержкой Git
- Лёгкость и высокая производительность
- Современный дизайн
- Встроенный контроль доступа
- Интуитивная работа с ресурсами (Assets)
- Встроенный поисковый движок
В этом руководстве показан разверт Wiki.js версии 1 на Fedora 29 с использованием NGINX в качестве обратного прокси, MongoDB как СУБД и PM2 как менеджера процессов. Опционально показан процесс получения и установки SSL-сертификатов с помощью acme.sh и Let’s Encrypt.
Кому это полезно
- Системным администраторам, которым нужно развернуть внутреннюю или внешнюю вики-инфраструктуру.
- Девопс-инженерам, настраивающим Node.js-приложения за обратным прокси.
- IT-специалистам, отвечающим за документацию и совместную работу в организации.
Что будет сделано (кратко)
- Обновление Fedora и установка базовых утилит.
- Установка Node.js и npm.
- Установка MongoDB и запуск сервиса.
- (Опционально) Получение SSL с помощью acme.sh.
- Установка и конфигурация NGINX как обратного прокси для Wiki.js.
- Установка Wiki.js, запуск конфигурационного мастера и настройка PM2 для автозапуска.
Требования
Минимальные и рекомендуемые требования для запуска Wiki.js:
- Node.js: версия 6.11.1 — 10.x (для v1 рекомендуется Node.js 10.x)
- MongoDB: версия 3.2 или новее
- Git: версия 2.7.4 или новее
- Веб-сервер (NGINX, Apache, Caddy и т. п.)
- Пустой репозиторий Git (опционально)
- Минимум 512 МБ оперативной памяти; рекомендуется 1 ГБ
- Около 300 МБ свободного дискового пространства
- Доменное имя с A/AAAA записями в DNS
Important: На продуктиве используйте минимум 1 ГБ ОЗУ и отдельный бэкап для MongoDB.
Предварительные условия
- Fedora 29
- Непривилегированный пользователь с sudo-привилегиями
Шаг 0 — Начальные проверки и подготовка
Проверьте версию Fedora:
cat /etc/fedora-release
# Fedora release 29 (Twenty Nine)Настройте временную зону (пример — заменить ‘Region/City’ на актуальную):
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'Обновите систему и установите базовые утилиты:
sudo dnf check-upgrade || sudo dnf upgrade -y
sudo dnf install -y curl wget vim git unzip socat bash-completionПояснение: первый шаг гарантирует, что пакеты актуальны и установлены исправления безопасности.
Шаг 1 — Установка Node.js и npm
Wiki.js v1 работает на Node.js. В руководстве используется версия Node.js из репозитория Fedora (LTS, обычно 10.x на момент написания).
Установите Node.js:
sudo dnf -y install nodejsДля компиляции нативных модулей может понадобиться набор сборки:
sudo dnf install -y gcc-c++ make
# или
# sudo dnf groupinstall -y 'Development Tools'npm поставляется вместе с Node.js, но рекомендуется обновить клиент npm до актуальной версии:
node -v && npm -v
# v10.x
# x.x.x
sudo npm install -g npm@latest
npm -v
# покажет обновлённую версиюСоветы:
- Если у вас специфические требования к версии Node.js (например, точный мажор/минор), используйте nvm или официальный бинарный репозиторий NodeSource.
- На серверах обычно предпочтительнее системная установка через пакетный менеджер для простоты обновлений.
Шаг 2 — Установка MongoDB
Wiki.js v1 использует MongoDB как движок базы данных. Установим пакет из репозитория Fedora:
sudo dnf install -y mongodb mongodb-serverПроверьте версии MongoDB:
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.x
# db version v4.0.xЗапустите и включите автозапуск сервиса MongoDB:
sudo systemctl start mongodb.service
sudo systemctl enable mongodb.serviceПроверка состояния:
sudo systemctl status mongodb.serviceСоветы по надёжности:
- Настройте резервное копирование данных MongoDB (mongodump / репликация) для продуктивных систем.
- Рассмотрите настройку аутентификации MongoDB и ограничение сетевого доступа (firewall).
Шаг 3 — acme.sh и получение SSL (опционально)
HTTPS не обязателен, но настоятельно рекомендуется для внешних сервисов. Мы используем acme.sh — простой shell-клиент для Let’s Encrypt.
Установка acme.sh:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~Проверьте версию:
acme.sh --version
# v2.x.xПолучение сертификатов (пример для домена example.com):
# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256Для тестирования используйте флаг –staging.
Список выданных сертификатов:
acme.sh --listСоздайте папки для хранения сертификатов (в примере используется /etc/letsencrypt):
mkdir -p /etc/letsencrypt/example.com
mkdir -p /etc/letsencrypt/example.com_eccУстановка/копирование сертификатов в каталог:
# RSA
acme.sh --install-cert -d example.com \
--cert-file /etc/letsencrypt/example.com/cert.pem \
--key-file /etc/letsencrypt/example.com/private.key \
--fullchain-file /etc/letsencrypt/example.com/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc \
--cert-file /etc/letsencrypt/example.com_ecc/cert.pem \
--key-file /etc/letsencrypt/example.com_ecc/private.key \
--fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"После установки сертификатов файлы появятся в указанных папках. acme.sh по умолчанию настраивает автоматическое обновление сертификатов (обычно за 60 дней до окончания срока).
Завершение работы под root:
exitЗамечания по безопасности:
- Храните приватные ключи в защищённых каталогах с корректными правами доступа (chmod 600).
- Автоматическое перезагружение NGINX при обновлении сертификатов позволяет поддерживать HTTPS без ручного вмешательства.
Шаг 4 — Установка и конфигурация NGINX
Рекомендуется использовать веб-сервер перед Node.js-приложением для поддержки HTTPS, кеширования, статических ресурсов и других функций.
Установка NGINX:
sudo dnf install -y nginxПроверка версии:
nginx -v
# например 1.14.1Запуск и включение автозапуска:
sudo systemctl start nginx.service
sudo systemctl enable nginx.serviceСоздайте файл конфигурации: /etc/nginx/conf.d/wiki.js.conf
sudo vim /etc/nginx/conf.d/wiki.js.confПример конфигурации HTTPS-реверс-прокси (замените example.com и пути к сертификатам):
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
listen [::]:80;
listen 80;
server_name example.com;
charset utf-8;
client_max_body_size 50M;
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_next_upstream error timeout http_502 http_503 http_504;
}
}Пояснения:
- Замените server_name на ваш домен.
- Проверьте пути до сертификатов: если вы использовали другой каталог — скорректируйте их.
- По умолчанию Wiki.js слушает порт 3000; измените proxy_pass при необходимости.
Проверьте конфигурацию и перезагрузите NGINX:
sudo nginx -t
sudo systemctl reload nginx.serviceРекомендации:
- Для дополнительной безопасности включите HTTP->HTTPS редирект и HSTS (только после тестирования).
- Ограничьте размер тела запросов (client_max_body_size) в зависимости от потребностей.
Шаг 5 — Установка Wiki.js
Создайте директорию для Wiki.js и пользователя:
sudo mkdir -p /var/www/wiki.js
cd /var/www/wiki.js
sudo useradd -d /var/www/wiki.js wikijs
sudo chown -R wikijs:wikijs /var/www/wiki.jsПереключитесь на пользователя wikijs и запустите установку:
cd /var/www/wiki.js
sudo su wikijs
curl -sSo- https://wiki.js.org/install.sh | bashПосле установки проверьте текущую версию:
node wiki --version
# 1.0.xxxЗапустите конфигурационный мастер:
node wiki configureОткройте в браузере http://example.com и следуйте шагам мастера установки. Все параметры сохраняются в файле config.yml. Мастер автоматически запустит Wiki.js после завершения.
Интерактивные экраны мастера (пример):













Если установка прошла успешно, вы увидите домашнюю страницу Wiki.js и можете продолжить настройку (шаблоны, темы, интеграции).
Советы по отладке:
- Логи приложения: проверьте файл журнала в рабочей директории или через PM2 (см. следующий шаг).
- Если мастер не стартует, убедитесь, что порт 3000 свободен и MongoDB доступна.
Шаг 6 — Настройка PM2 для автозапуска
PM2 идёт как локальный npm-модуль в составе Wiki.js. Для настройки автозапуска выполните:
/var/www/wiki.js/node_modules/pm2/bin/pm2 startup
/var/www/wiki.js/node_modules/pm2/bin/pm2 saveЭти команды создадут системный сервис, который будет запускать PM2 и восстановит процессы при перезагрузке. После этого Wiki.js будет работать в фоновом режиме под управлением PM2.
Проверка процессов PM2 (под пользователем wikijs):
/var/www/wiki.js/node_modules/pm2/bin/pm2 listСоветы:
- Если вы обновляете приложение, используйте pm2 restart
для минимального простоя. - Для логов используйте pm2 logs
.
Резервные копии и обновления
- Бэкап config.yml и базы данных MongoDB обязателен перед обновлением.
- При обновлении Wiki.js следуйте процедурам отката: сохраните текущие файлы, остановите сервис, установите новую версию и проверьте совместимость конфига.
Критерии приёмки
- Сервис Wiki.js доступен по заданному доменному имени через HTTPS (если настроено).
- Страница установки и мастер конфигурации завершаются успешно.
- Wiki.js слушает внутренний порт (по умолчанию 3000) и NGINX корректно проксирует запросы.
- MongoDB подключена и сохраняет данные; проверяется записью/чтением тестовой страницы.
- PM2 запускается автоматически при перезагрузке и восстанавливает процессы.
Роль‑ориентированные контрольные списки
Администратор системы:
- Проверить версию Fedora и обновления.
- Установить Node.js, MongoDB, NGINX.
- Настроить firewall (firewalld) и SELinux, если требуется.
- Настроить SSL и права доступа к ключам.
DevOps-инженер:
- Настроить PM2 и автозапуск.
- Настроить мониторинг (процессы, доступность порта).
- Обеспечить резервное копирование MongoDB.
Dev/Content-менеджер:
- Завершить мастер настройки в браузере.
- Настроить репозиторий Git для хранения страниц (опционально).
- Протестировать создание/редактирование страниц.
Когда этот подход не подходит (примеры)
- Если нужна поддержка SQL (Postgres/MySQL), то версия Wiki.js v1 не поддерживает их: рассмотрите миграцию на другую версию/форк.
- Для очень больших нагрузок (> сотен одновременных пользователей) возможна необходимость горизонтального масштабирования и выделенной MongoDB-кластеризации.
- Если в организации запрещён внешний доступ к ACME/Let’s Encrypt, потребуется корпоративный CA и ручная установка сертификатов.
Альтернативные подходы
- Вместо systemного Node.js использовать контейнеры Docker — удобно для изоляции и быстрой деплоя.
- Вместо acme.sh пользоваться Certbot (официальный клиент Let’s Encrypt) или интеграцией с облачным LB.
- Использовать Caddy как веб-сервер (автоматически получает и обновляет TLS).
Мини‑методология развертывания в продуктиве
- Подготовить тестовую среду (stage) идентичную продакшну.
- Протестировать установку и обновление на stage.
- Настроить мониторинг (uptime, логи, метрики PM2).
- Настроить автоматические бэкапы MongoDB.
- Провести rolling‑обновление с откатом и тестами приёмки.
Тесты и критерии приёмки (простая проверочная прога)
- Доступность главной страницы по HTTP/HTTPS: ответ 200.
- Создание и чтение страницы в интерфейсе: сохраняется в MongoDB.
- Проверка SSL: сертификат действителен и соответствует домену.
- Проверка автостарта: перезагрузить систему и убедиться, что PM2 и Wiki.js запущены.
Безопасность и соответствие (коротко)
- Ограничьте доступ к MongoDB через firewall и используйте аутентификацию.
- Храните приватные ключи в защищённых каталогах; ограничьте права доступа (root или сервисный пользователь).
- Регулярно обновляйте систему и зависимости Node.js.
- Для персональных данных учитывайте правила локального законодательства и GDPR, если обработка данных пользователей затрагивает ЕС. В таких случаях документируйте, какие данные собираются, где они хранятся и как удаляются.
Быстрый план отката (Runbook)
- Отключить трафик в NGINX (вернуть страницу обслуживания).
- Восстановить конфигурацию и файлы из последнего бэкапа.
- Восстановить базу данных MongoDB из дампа.
- Перезапустить PM2 и проверить логи.
- Вернуть трафик и проверить работоспособность.
Краткий глоссарий (1‑строчные определения)
- Node.js — среда выполнения JavaScript на сервере.
- MongoDB — документно-ориентированная СУБД.
- NGINX — веб-сервер и обратный прокси.
- PM2 — менеджер процессов для Node.js.
- acme.sh — shell-клиент для получения сертификатов от Let’s Encrypt.
Полезные советы и шаги оптимизации
- Используйте отдельный пользовательский аккаунт (wikijs) для запуска приложения.
- Настройте логирование и мониторинг процессов PM2.
- При необходимости используйте систему контроля версий для контента (Git).
- Планируйте регулярные бэкапы и тестируйте восстановление.
Ссылки
Итог: описанный набор шагов позволяет быстро развернуть рабочую инстанцию Wiki.js v1 на Fedora 29 с безопасным доступом и стабильным автозапуском. Следуйте критериям приёмки и регулярно делайте резервные копии и обновления.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента