Гид по технологиям

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

• 8 min read • DevOps • Обновлено 24 Nov 2025
Установка Wiki.js на Fedora 29
Установка Wiki.js на Fedora 29

Введение

Превью страницы установки Wiki.js

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-специалистам, отвечающим за документацию и совместную работу в организации.

Что будет сделано (кратко)

  1. Обновление Fedora и установка базовых утилит.
  2. Установка Node.js и npm.
  3. Установка MongoDB и запуск сервиса.
  4. (Опционально) Получение SSL с помощью acme.sh.
  5. Установка и конфигурация NGINX как обратного прокси для Wiki.js.
  6. Установка 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 installer

Проверка системы перед установкой

Ввод общей информации о вики

Важные замечания перед продолжением

Подключение к базе данных

Подключение к базе успешно

Настройка путей для хранения данных

Настройка удалённого репозитория GIT (опционально)

Продолжить установку

Создание аккаунта администратора

Запуск Wiki.js

Домашняя страница Wiki.js после установки

Приветственная страница 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 следуйте процедурам отката: сохраните текущие файлы, остановите сервис, установите новую версию и проверьте совместимость конфига.

Критерии приёмки

  1. Сервис Wiki.js доступен по заданному доменному имени через HTTPS (если настроено).
  2. Страница установки и мастер конфигурации завершаются успешно.
  3. Wiki.js слушает внутренний порт (по умолчанию 3000) и NGINX корректно проксирует запросы.
  4. MongoDB подключена и сохраняет данные; проверяется записью/чтением тестовой страницы.
  5. 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).

Мини‑методология развертывания в продуктиве

  1. Подготовить тестовую среду (stage) идентичную продакшну.
  2. Протестировать установку и обновление на stage.
  3. Настроить мониторинг (uptime, логи, метрики PM2).
  4. Настроить автоматические бэкапы MongoDB.
  5. Провести rolling‑обновление с откатом и тестами приёмки.

Тесты и критерии приёмки (простая проверочная прога)

  • Доступность главной страницы по HTTP/HTTPS: ответ 200.
  • Создание и чтение страницы в интерфейсе: сохраняется в MongoDB.
  • Проверка SSL: сертификат действителен и соответствует домену.
  • Проверка автостарта: перезагрузить систему и убедиться, что PM2 и Wiki.js запущены.

Безопасность и соответствие (коротко)

  • Ограничьте доступ к MongoDB через firewall и используйте аутентификацию.
  • Храните приватные ключи в защищённых каталогах; ограничьте права доступа (root или сервисный пользователь).
  • Регулярно обновляйте систему и зависимости Node.js.
  • Для персональных данных учитывайте правила локального законодательства и GDPR, если обработка данных пользователей затрагивает ЕС. В таких случаях документируйте, какие данные собираются, где они хранятся и как удаляются.

Быстрый план отката (Runbook)

  1. Отключить трафик в NGINX (вернуть страницу обслуживания).
  2. Восстановить конфигурацию и файлы из последнего бэкапа.
  3. Восстановить базу данных MongoDB из дампа.
  4. Перезапустить PM2 и проверить логи.
  5. Вернуть трафик и проверить работоспособность.

Краткий глоссарий (1‑строчные определения)

  • Node.js — среда выполнения JavaScript на сервере.
  • MongoDB — документно-ориентированная СУБД.
  • NGINX — веб-сервер и обратный прокси.
  • PM2 — менеджер процессов для Node.js.
  • acme.sh — shell-клиент для получения сертификатов от Let’s Encrypt.

Полезные советы и шаги оптимизации

  • Используйте отдельный пользовательский аккаунт (wikijs) для запуска приложения.
  • Настройте логирование и мониторинг процессов PM2.
  • При необходимости используйте систему контроля версий для контента (Git).
  • Планируйте регулярные бэкапы и тестируйте восстановление.

Ссылки


Итог: описанный набор шагов позволяет быстро развернуть рабочую инстанцию Wiki.js v1 на Fedora 29 с безопасным доступом и стабильным автозапуском. Следуйте критериям приёмки и регулярно делайте резервные копии и обновления.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро