Установка Wiki.js v1 на CentOS 7 с NGINX, MongoDB и PM2
Важное: команды в статьях выполняйте под своей учетной записью с sudo-привилегиями. Замените example.com и your_user на ваши реальные значения.

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-releaseGit: на 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 и автоматически запустит систему.
В процессе установки вы увидите серии экранов мастера установки (

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

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

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

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

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

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

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

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

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


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

Шаг 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.
Резервирование и откат
Краткая методика отката при проблемах:
- Остановите PM2-процесс:
/var/www/wiki.js/node_modules/pm2/bin/pm2 stop all- Восстановите конфигурационный файл config.yml из бэкапа или из Git.
- При повреждении базы — восстановите MongoDB из дампа:
mongorestore --drop /path/to/dump- Перезапустите 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.
Частые ошибки и способы их решения
- Приложение не стартует — проверьте логи PM2 и Node.js:
/var/www/wiki.js/node_modules/pm2/bin/pm2 logs- Ошибка подключения к MongoDB — проверьте, что mongod запущен и слушает локально:
sudo systemctl status mongod.service
ss -lpnt | grep 27017- Ошибки SSL после установки сертификатов — проверьте пути в конфиге NGINX и права доступа к файлам:
sudo nginx -t
sudo systemctl reload nginx.service
ls -l /etc/letsencrypt/example.com- 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 до более новой версии?
- Сделайте бэкап config.yml и данных (Git, базе данных).
- Остановите PM2-процесс.
- Запустите скрипт установки заново или обновите файлы приложения согласно документации проекта.
- Запустите приложение и проверьте работу.
Что делать, если сертификат не выдаётся?
Проверьте, что 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 перед продакшеном.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента