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

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

• 7 min read • DevOps • Обновлено 17 Nov 2025
Установка Wiki.js v1 на CentOS 7
Установка Wiki.js v1 на CentOS 7

Важное: команды в статьях выполняйте под своей учетной записью с sudo-привилегиями. Замените example.com и your_user на ваши реальные значения.

Логотип Wiki.js и окружение установки

Wiki.js — современное и мощное OpenSource-приложение для вики на базе Node.js, Git и Markdown. Оно работает на высокопроизводительном движке Node.js и оптимизировано для экономного использования CPU. Ключевые особенности Wiki.js:

  • Редактирование в Markdown с поддержкой Git
  • Легковесность и высокая функциональность
  • Современный дизайн для веба
  • Встроенный контроль доступа
  • Удобное управление ресурсами (Assets)
  • Встроенный поисковый движок

В этом руководстве подробно показан процесс установки Wiki.js v1 на CentOS 7 с NGINX (reverse proxy), MongoDB и PM2. Опционально описан способ добавить SSL с помощью клиента acme.sh и Let’s Encrypt.

Основные требования

Требования для запуска Wiki.js:

  • Node.js 6.11.1 — 10.x (мы используем ветку 10.x)
  • MongoDB 3.2 или выше
  • Git 2.7.4 или выше
  • Веб-сервер (NGINX, Apache, Caddy и т. п.)
  • Пустой Git-репозиторий (опционально)
  • Минимум 512 МБ оперативной памяти, рекомендуется 1 ГБ
  • Около 300 МБ свободного дискового пространства
  • Домен с A/AAAA записями в DNS

Предварительная подготовка

  • Сервер с CentOS 7
  • Нерутовая учетная запись с sudo-привилегиями

Первичные шаги

Проверьте версию CentOS:

cat /etc/centos-release  

Установите часовой пояс:

timedatectl list-timezones  
sudo timedatectl set-timezone 'Region/City'

Обновите пакеты операционной системы:

sudo yum update -y

Установите необходимые утилиты для администрирования:

sudo yum install -y curl wget vim unzip socat epel-release

Git: на CentOS в репозитории часто старая версия. Для Wiki.js требуется Git ≥ 2.7.4 — ниже пример быстрой компиляции из исходников:

# Remove existing git package if installed:  
sudo yum remove -y git  
sudo yum groupinstall -y "Development Tools"  
sudo yum install -y gettext-devel openssl-devel perl-CPAN perl-devel zlib-devel curl-devel  
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.21.0.tar.gz && tar zxvf git-2.21.0.tar.gz  
rm git-2.21.0.tar.gz  
cd git-2.21.0  
make configure  
./configure make prefix=/usr/local all  
sudo make prefix=/usr/local install  
cd ~  
which git  
git --version

Совет: можно собрать более свежую версию или использовать заранее подготовленный RPM, если вы не хотите компилировать.

Шаг 1 — Установка Node.js и npm

Wiki.js работает на Node.js. Здесь используем рекомендованную на момент написания версию 10.x. Удобнее установить Node.js через репозиторий NodeSource:

`curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash -  
sudo yum install -y nodejs `

Примечание: npm поставляется вместе с Node.js.

Проверьте версии:

`node -v && npm -v  
# v10.15.1  
# 6.4.1  
`

Обновите npm до последней стабильной версии:

sudo npm install -g npm@latest

Проверьте версию npm:

npm -v  
# 6.8.0  

Шаг 2 — Установка MongoDB

Wiki.js v1 использует MongoDB. Добавьте репозиторий и установите mongodb-org 4.0:

Создайте файл /etc/yum.repos.d/mongodb-org-4.0.repo:

sudo vim /etc/yum.repos.d/mongodb-org-4.0.repo  

Вставьте конфигурацию:

[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

Установите MongoDB:

sudo yum install -y mongodb-org

Проверьте версии:

mongo --version | head -n 1 && mongod --version | head -n 1  
# MongoDB shell version v4.0.6  
# db version v4.0.6

Запустите и включите автозапуск MongoDB:

sudo systemctl start mongod.service  
sudo systemctl enable mongod.service  

Важно: по умолчанию MongoDB слушает 127.0.0.1. Если вы планируете подключать удалённую базу, настройте bindIp и авторизацию в /etc/mongod.conf.

Шаг 3 — Установка acme.sh и получение сертификата Let’s Encrypt (опционально)

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.8.1

Получение сертификатов RSA и ECC:

# 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"

После установки сертификатов они окажутся в:

  • RSA: /etc/letsencrypt/example.com
  • ECC: /etc/letsencrypt/example.com_ecc

acme.sh автоматически обновляет сертификаты по расписанию (обычно за 60 дней до истечения).

Завершите работу root-сессии:

exit

Примечание по безопасности: храните приватные ключи в защищённом каталоге с корректными правами доступа (обычно 600 для ключа).

Шаг 4 — Установка и настройка NGINX

Хотя Node.js-приложение может слушать порт напрямую, веб-сервер перед приложением даёт такие преимущества, как SSL, кеширование, виртуальные хосты и статическая отдача файлов.

Установка NGINX:

sudo yum install -y nginx

Проверка версии:

nginx -v  
# nginx version: nginx/1.12.2

Включите и запустите сервис:

sudo systemctl enable nginx.service  
sudo systemctl start nginx.service

Создайте конфигурацию для Wiki.js: откройте /etc/nginx/conf.d/wiki.js.conf и вставьте следующий пример. Замените server_name и при необходимости proxy_pass порт.

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;
    }
    
}

Проверьте конфигурацию NGINX и перезагрузите сервис:

sudo nginx -t  
sudo systemctl reload nginx.service

Совет: для строгой безопасности SSL дополнительно настройте ssl_protocols, ssl_ciphers и HSTS.

Шаг 5 — Установка и настройка Wiki.js

Создайте корневую директорию приложения и назначьте владельца:

sudo mkdir -p /var/www/wiki.js
cd /var/www/wiki.js
sudo chown -R [your_user]:[your_user] /var/www/wiki.js

Замените [your_user] на вашу не-root учетную запись.

Установка Wiki.js (скрипт загрузит и установит приложение):

curl -sSo- https://wiki.js.org/install.sh | bash

Проверьте установленную версию:

node wiki --version  
# 1.0.117

Запустите конфигурационный мастер:

node wiki configure

Откройте браузер и перейдите по адресу http://example.com. Мастер пошагово сохранит настройки в config.yml и автоматически запустит систему.

В процессе установки вы увидите серии экранов мастера установки (

Экран приветствия мастера установки Wiki.js

При прохождении мастера обратите внимание на страницу «System Check» — все требования должны быть зелёными. Если что-то не выполнено, исправьте и продолжите.

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

Заполните общие сведения о вики и продолжите.

Форма общих сведений о вики

Прочитайте важные замечания и нажмите Continue.

Важное уведомление перед продолжением установки

Подключите базу данных и подтвердите соединение.

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

Если подключение успешно, увидите подтверждение.

Соединение с базой успешно установлено

Укажите пути для хранения данных и продолжите.

Указание путей хранения и ресурсов

На шаге с Git-репозиторием можно указать удалённый репозиторий или пропустить (опционально, но рекомендовано для версионности).

Настройка удалённого Git-репозитория

Далее создайте административную учетную запись и продолжите.

Создание учетной записи администратора

После этого запустите Wiki.js и дождитесь редиректа на главную страницу (около 30 секунд).

Запуск Wiki.js из мастера установки

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

Поздравляем — установка завершена.

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

Шаг 6 — Настройка PM2 для автозапуска

По умолчанию приложение не будет автоматически запускаться после перезагрузки. PM2 входит в зависимости Wiki.js как локальный модуль. Настройте автозапуск:

/var/www/wiki.js/node_modules/pm2/bin/pm2 startup

Сохраните текущую конфигурацию PM2:

/var/www/wiki.js/node_modules/pm2/bin/pm2 save

После этого Wiki.js будет автоматически подниматься как фоновый процесс через PM2.

Резервирование и откат

Краткая методика отката при проблемах:

  1. Остановите PM2-процесс:
/var/www/wiki.js/node_modules/pm2/bin/pm2 stop all
  1. Восстановите конфигурационный файл config.yml из бэкапа или из Git.
  2. При повреждении базы — восстановите MongoDB из дампа:
mongorestore --drop /path/to/dump
  1. Перезапустите PM2 и проверьте логи:
/var/www/wiki.js/node_modules/pm2/bin/pm2 start all
/var/www/wiki.js/node_modules/pm2/bin/pm2 logs

Критерии успешного отката: сайт доступен, нет ошибок 5xx, все основные страницы открываются, аутентификация работает.

Безопасность и жёсткая настройка

Рекомендации по повышению безопасности:

  • Закройте доступ к MongoDB извне (bindIp в /etc/mongod.conf оставьте 127.0.0.1), включите авторизацию при необходимости.
  • Настройте файрвол (firewalld или iptables), откройте только нужные порты (80/443 для NGINX, 22 для SSH).
  • Используйте сильные пароли для админ-учётных записей и двухфакторную аутентификацию, если доступно.
  • Регулярно обновляйте Node.js, MongoDB, NGINX и сам Wiki.js.
  • Держите приватные ключи SSL с правами 600 и владельцем root.
  • Настройте ограничение размера тела запроса через client_max_body_size в NGINX.

Частые ошибки и способы их решения

  1. Приложение не стартует — проверьте логи PM2 и Node.js:
/var/www/wiki.js/node_modules/pm2/bin/pm2 logs
  1. Ошибка подключения к MongoDB — проверьте, что mongod запущен и слушает локально:
sudo systemctl status mongod.service
ss -lpnt | grep 27017
  1. Ошибки SSL после установки сертификатов — проверьте пути в конфиге NGINX и права доступа к файлам:
sudo nginx -t
sudo systemctl reload nginx.service
ls -l /etc/letsencrypt/example.com
  1. Git не найден или слишком старая версия — убедитесь, что which git указывает на /usr/local/bin/git или другой ожидаемый путь и версия ≥ 2.7.4.

Чек-листы по ролям

Администратор сервера:

  • Установить и обновить системные пакеты
  • Установить Node.js, MongoDB, NGINX
  • Настроить firewall и отключить лишние сервисы
  • Настроить резервное копирование

DevOps-инженер:

  • Настроить PM2 и автозапуск
  • Настроить CI/CD для деплоя Wiki.js и репозиториев страниц
  • Мониторинг логов и доступности

Контент-менеджер:

  • Подготовить структуру репозиториев Git
  • Настроить права пользователей в Wiki.js
  • Проверить интеграцию поиска и ассетов

Минимальные тесты приёмки

  • Сайт доступен по HTTPS и HTTP (редирект на HTTPS по желанию)
  • Админ-учётная запись может зайти в панель управления
  • Создание и сохранение страницы в Markdown успешно
  • Синхронизация с Git (если настроен) проходит без ошибок
  • Сервер автоматически поднимается после reboot

Альтернативные подходы

  • Вместо MongoDB можно использовать другие движки (в более новых версиях Wiki.js поддерживаются SQL базы). Для v1 требуется MongoDB.
  • Вместо PM2 можно использовать системный unit (systemd) для управления процессом Node.js.
  • Для SSL можно использовать Certbot вместо acme.sh, если вам привычнее.

Советы по производительности

  • Перенесите MongoDB на отдельный сервер при высокой нагрузке.
  • Включите кеширование NGINX (proxy_cache) для снижения нагрузки на Node.js.
  • Увеличьте оперативную память и swap при необходимости.

Часто задаваемые вопросы

Как обновить Wiki.js до более новой версии?

  1. Сделайте бэкап config.yml и данных (Git, базе данных).
  2. Остановите PM2-процесс.
  3. Запустите скрипт установки заново или обновите файлы приложения согласно документации проекта.
  4. Запустите приложение и проверьте работу.

Что делать, если сертификат не выдаётся?

Проверьте, что DNS пример.com указывает на ваш сервер и что порт 80/443 открыт. Для отладки используйте –staging и логи acme.sh.

Можно ли запустить Wiki.js без NGINX?

Да, можно запускать напрямую на порту Node.js (например, 3000), но вы потеряете преимущества веб-сервера: SSL-терминацию, кэширование, виртуальные хосты.

Полезные ссылки

Краткое резюме

  • Подготовьте сервер: обновите пакеты, установите необходимые утилиты.
  • Установите современные версии Git, Node.js и MongoDB.
  • При желании получите SSL через acme.sh и настройте NGINX как обратный прокси.
  • Установите Wiki.js в /var/www/wiki.js, настройте PM2 для автозапуска.
  • Проведите базовые тесты доступности, авторизации и синхронизации с Git.

Важное: храните бэкапы конфигураций и данных, тестируйте обновления на staging перед продакшеном.


Поделиться: 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 быстро