Установка Wiki.js · 6 min read · Sep 22, 2025
Как установить Wiki.js - Вики-программное обеспечение на основе NodeJS на Debian 9

Wiki.js - это современное и мощное приложение вики с открытым исходным кодом, основанное на Node.js, Git и Markdown. Wiki.js работает на очень быстром движке Node.js и оптимизирован для экономии ресурсов ЦП. Некоторые из функций Wiki.js, которые стоит упомянуть:
- Редактирование Markdown с поддержкой Git
- Легковесный, но при этом чрезвычайно мощный
- Красиво оформлен для современного веба
- Интегрированный контроль доступа
- Интуитивное управление активами
- Встроенный поисковый движок
В этом руководстве мы проведем вас через процесс установки версии Wiki.js 1 на операционной системе Debian 9, используя NGINX в качестве обратного прокси-сервера, MongoDB в качестве сервера базы данных, PM2 в качестве менеджера процессов, и при желании вы можете обеспечить защиту транспортного уровня, используя клиент acme.sh и удостоверяющий центр Let’s Encrypt для добавления поддержки SSL.
Требования
Требования для запуска Wiki.js следующие:
- Необходим Node.js версии
6.11.1до10.x. - Версия MongoDB
3.2или новее. - Версия Git
2.7.4или новее. - Программное обеспечение веб-сервера, такое как NGINX, Apache, Caddy, H2O…
- Пустой репозиторий Git (необязательно).
- Минимум 512 МБ ОЗУ. Рекомендуется 1 ГБ ОЗУ.
- Около 300 МБ дискового пространства.
- Доменное имя с установленными записями A/AAAA DNS.
Предварительные условия
- Операционная система Debian 9.
- Пользователь без прав root с привилегиями
sudo.
Начальные шаги
Проверьте версию вашей системы Debian:
lsb_release -ds
# Debian GNU/Linux 9.8 (stretch)Настройте часовой пояс:
dpkg-reconfigure tzdataОбновите пакеты вашей операционной системы (программное обеспечение). Это важный первый шаг, так как он гарантирует, что у вас есть последние обновления и исправления безопасности для стандартных пакетов программного обеспечения вашей операционной системы:
apt update && apt upgrade -yУстановите некоторые необходимые пакеты, которые необходимы для базового администрирования операционной системы Debian:
apt install -y curl wget vim git unzip socat sudo bash-completion apt-transport-https build-essential dirmngrШаг 1 - Установите Node.js и npm
Wiki.js построен на Node.js. Мы собираемся установить последнюю рекомендованную версию для Wiki.js, которая на момент написания является версией 10 . На Linux у вас есть несколько вариантов установки Node.js: бинарные файлы Linux (x86/x64), исходный код или через менеджеры пакетов. Мы будем использовать вариант управления пакетами, который упрощает установку и обновление Node.js.
Скачайте и установите последнюю рекомендованную версию Node.js из репозитория NodeSource:
`curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs `ПРИМЕЧАНИЕ: npm распространяется вместе с Node.js - это означает, что когда вы загружаете Node.js, вы автоматически получаете установленный npm на вашей системе.
Проверьте версию Node.js и npm:
`node -v && npm -v
# v10.15.1
# 6.4.1
`Npm является отдельным проектом от Node.js и, как правило, обновляется чаще. В результате, даже если вы только что загрузили Node.js (а значит, и npm), вам, вероятно, нужно будет обновить ваш npm. К счастью, npm знает, как обновить себя! Чтобы обновить ваш npm, введите это в вашем терминале:
sudo npm install -g npm@latestЭта команда обновит npm до последней стабильной версии.
Проверьте версию npm снова:
npm -v
# 6.8.0 И она должна вернуть номер последней версии.
Шаг 2 - Установите базу данных MongoDB
Wiki.js нуждается в базе данных для хранения своих данных, и текущая стабильная версия Wiki.js поддерживает только движок базы данных MongoDB. Исходя из этого, нам нужно будет установить базу данных MongoDB.
Скачайте и установите базу данных MongoDB:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org Проверьте версию MongoDB:
mongo --version | head -n 1 && mongod --version | head -n 1 Запустите и включите ( установите его для автоматического запуска при перезагрузке) службу MongoDB, если она еще не запущена и не включена:
sudo systemctl start mongod.service
sudo systemctl enable mongod.service Шаг 3 - Установите клиент acme.sh и получите сертификат Let’s Encrypt ( необязательно)
Защита вашего веб-сайта с помощью HTTPS не является обязательной, но это хорошая практика для защиты трафика вашего сайта. Чтобы получить SSL-сертификат от Let’s Encrypt, мы будем использовать клиент acme.sh. Acme.sh - это чистое программное обеспечение UNIX shell для получения SSL-сертификатов от 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:
acme.sh --version
# v2.8.1Получите RSA и ECC/ECDSA сертификаты для вашего домена/имени хоста:
# 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, но это может быть что угодно, что вы предпочитаете для хранения SSL-сертификатов.
mkdir -p /etc/letsencrypt/example.com
mkdir -p /etc/letsencrypt/example.com_eccУстановите/скопируйте сертификаты в каталог /etc/letsencrypt.
# 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/ECDSA: /etc/letsencrypt
/example.com_eccдиректории.
Все сертификаты будут автоматически обновляться каждые 60 дней.
После получения сертификатов выйдите из пользователя root и вернитесь к обычному пользователю с правами sudo:
exitШаг 4 - Установите и настройте NGINX
Wiki.js (или любое HTTP-приложение Node.js) может работать без какого-либо реального веб-сервера (например, NGINX или Apache). Однако настоятельно рекомендуется установить стандартный веб-сервер перед Wiki.js. Это гарантирует, что вы сможете использовать такие функции, как SSL, несколько веб-сайтов, кэширование и т. д. В этом руководстве мы будем использовать NGINX, но подойдет любой другой сервер, вам просто нужно правильно его настроить.
Скачайте и установите NGINX из официального репозитория NGINX, выполнив следующие команды:
wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
rm nginx_signing.key
sudo -s
printf "deb https://nginx.org/packages/mainline/debian/ $(lsb_release -sc) nginx\ndeb-src https://nginx.org/packages/mainline/debian/ $(lsb_release -sc) nginx\n" >> /etc/apt/sources.list.d/nginx_mainline.list
exit
sudo apt update
sudo apt install -y nginxПроверьте версию NGINX:
sudo nginx -v
# nginx version: nginx/1.15.8Включите и запустите службу NGINX:
sudo systemctl enable nginx.service
sudo systemctl start nginx.serviceЗапустите sudo vim /etc/nginx/conf.d/wiki.js.conf и настройте NGINX как HTTPS обратный прокси.
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, и потенциально директива proxy_pass, если вы решите настроить что-то другое, кроме порта 3000. Wiki.js по умолчанию использует порт 3000.
Проверьте конфигурацию NGINX:
sudo nginx -t Наконец, чтобы изменения вступили в силу, нам нужно перезагрузить NGINX:
sudo systemctl reload nginx.serviceШаг 5 - Установите и настройте Wiki.js
Создайте каталог корня документа, где должна находиться Wiki.js:
sudo mkdir -p /var/www/wiki.jsПерейдите в каталог корня документа:
cd /var/www/wiki.jsИзмените владельца каталога /var/www/wiki.js на вашего пользователя:
sudo chown -R [your_user]:[your_user] /var/www/wiki.jsПРИМЕЧАНИЕ: Замените your_user в приведенной выше команде на вашего пользователя без прав root, которого вы должны были создать в качестве предварительного условия для этого руководства *.
Из каталога /var/www/wiki.js выполните следующую команду, чтобы получить и установить последнее приложение Wiki.js:
curl -sSo- https://wiki.js.org/install.sh | bashПосле завершения установки вы можете выполнить следующую команду, чтобы просмотреть текущую установленную версию Wiki.js:
node wiki --version
# 1.0.117После завершения установки вам будет предложено запустить мастер настройки.
Итак, начните мастер настройки, выполнив:
node wiki configureИспользуя ваш веб-браузер, перейдите по адресу http://example.com и следуйте инструкциям на экране. Все настройки, введенные во время мастера настройки, сохраняются в файле config.yml. Мастер настройки автоматически запустит Wiki.js для вас.
Сначала вы увидите приветственное сообщение. Нажмите на кнопку
Get new posts in your inbox
No spam. Unsubscribe anytime.