Wiki.js – система управления знаниями с открытым исходным кодом, предназначенная для создания корпоративных баз знаний, документации и внутренних порталов. Решение ориентировано на удобство администрирования и высокую производительность. Основой Wiki.js является платформа Node.js, что обеспечивает высокую скорость работы и хорошую масштабируемость. В качестве системы хранения данных поддерживаются популярные СУБД, такие как PostgreSQL, MySQL, MariaDB и SQLite.
В статье разберём, как установить Wiki.js с использованием PostgreSQL на виртуальном сервере под управлением Ubuntu и Debian.
Как установить Wiki.js с использованием PostgreSQL на Ubuntu и Debian
Предварительная установка софта
Поскольку основой Wiki.js является Node.js, то необходимо, во-первых, установить на сервер данную платформу. В нашем справочнике есть руководства по установке Node.js как для Ubuntu, так и для Debian.
Обратите внимание, что Wiki.js корректно работает на Node.js версий 20, 22 и 24. Версии с нечётными номерами, то есть 19, 21, 23, 25, официально не поддерживаются.
В качестве системы управления базами данных разработчики рекомендуют использовать PostgreSQL, хотя Wiki.js также может работать с MySQL, MariaDB и SQLite. В настоящем руководстве мы будем придерживаться рекомендаций, поэтому также важно, чтобы на сервере был установлен PostgreSQL.
Подготовка к настройке доступа по HTTPS
Поскольку установка Wiki.js в нашем случае выполняется на VPS, то для защиты передаваемых данных между пользователем и сервером, включая учётные записи, пароли и содержимое страниц, необходимо настроить работу сервиса с использованием защищённого протокола HTTPS. Как правило, это реализуется через подключение веб-сервера, например Nginx, который выступает в роли обратного прокси. В такой конфигурации пользователь устанавливает HTTPS-соединение с Nginx, после чего тот расшифровывает трафик и передаёт его по внутреннему HTTP-соединению в Wiki.js, а затем шифрует ответ и отправляет его обратно пользователю.
Для настройки HTTPS-доступа необходимо применение TLS-сертификата от доверенного центра сертификации. Наиболее целесообразно в данном случае использовать бесплатный центр сертификации Let’s Encrypt, который позволяет получить доверенный SSL/TLS-сертификат без дополнительных затрат. Let’s Encrypt автоматически выпускает и продлевает сертификаты. Это упрощает администрирование и исключает необходимость ручного контроля срока их действия. При этом сертификаты от Let’s Encrypt обеспечивают совместимость с большинством современных браузеров и клиентов.
Следует, однако, иметь в виду, что сертификаты Let’s Encrypt выдаются только для сайтов, доступных по своим доменным именам, поскольку центр сертификации должен будет подтвердить, что вы действительно владеете этим доменом. Это означает, что к IP-адресу вашего сервера должно быть привязано имя домена, с использованием которого будет осуществляться подключение к вашему порталу Wiki.js. Данная настройка делается с применением A-записи – специальной DNS-записи – и осуществляется на сайте-регистраторе домена, либо во вкладке Домены личного кабинета RUVDS.

Настройка PostgreSQL
После того, как вы установили Node.js и PostgreSQL, подключитесь к серверу и запустите консольный клиент PostgreSQL от имени пользователя postgres:
$ sudo -u postgres psql
В терминале СУБД создайте пользователя PostgreSQL, например, с именем wikijs_user. При этом укажите для создаваемого пользователя пароль достаточной сложности:
CREATE USER wikijs_user WITH PASSWORD 'YourVeryStrongPassword';
Следующей командой задайте кодировку клиента по умолчанию:
ALTER ROLE wikijs_user SET client_encoding TO 'utf8';
Установите дефолтный уровень изоляции транзакций:
ALTER ROLE wikijs_user SET default_transaction_isolation TO 'read committed';
Задайте для пользователя часовой пояс:
ALTER ROLE wikijs_user SET timezone TO 'UTC+3';
Далее создайте базу данных с именем, например, wikijs_db, назначив пользователя wikijs_user её владельцем:
$ CREATE DATABASE wikijs_db OWNER wikijs_user;
Затем переключите текущую сессию на созданную базу данных:
\c wikijs_db
Предоставьте пользователю wikijs_user привилегии USAGE и CREATE на схему public:
GRANT USAGE, CREATE ON SCHEMA public TO wikijs_user;
Назначьте пользователя wikijs_user владельцем схемы public:
ALTER SCHEMA public OWNER TO wikijs_user;
После чего закройте командную оболочку PostgreSQL:
\q
Установка, настройка и проверка работоспособности Wiki.js
На следующем шаге создайте каталог, в котором будут располагаться файлы Wiki.js:
$ sudo mkdir -p /opt/wikijs
Затем перейдите в созданный каталог:
$ cd /opt/wikijs
Все дальнейшие работы будут производиться в директории /opt/wikijs. Сюда, во-первых, загрузите архив дистрибутива Wiki.js с его страницы на GitHub:
$ sudo wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
Затем распакуйте полученный архив в текущую директорию:
$ sudo tar -xvzf wiki-js.tar.gz
Далее создайте из шаблона файл конфигурации:
$ sudo mv config.sample.yml config.yml
Если ваш сервер защищён брандмауэром UFW, то на данном этапе необходимо открыть доступ для следующих портов и протоколов:
3000/tcp– потребуется для проверки работоспособности веб-приложения сразу после установки;http– для доступности веб-приложения по протоколу HTTP и проверки владения доменом при запросе TLS-сертификата;https– для доступности веб-приложения по протоколу HTTPS.
Чтобы это сделать, запустите на выполнение следующие команды:
$ sudo ufw allow 3000/tcp
$ sudo ufw allow http
$ sudo ufw allow https
Затем откройте конфигурационный файл Wiki.js:
$ sudo nano config.yml
Приведите его содержимое в соответствие с вашими настройками. В частности, укажите имя пользователя, пароль и название базы, которые вы использовали при создании в PostgreSQL:
# PostgreSQL / MySQL / MariaDB / MS SQL Server only:
host: localhost
port: 5432
user: wikijs-user
pass: YourVeryStrongPassword
db: wikijs-db
ssl: false
Закройте файл с сохранением изменений, после чего при помощи Node.js запустите веб-приложение Wiki.js:
$ node server
Данный запуск является тестовым и выполняется для проверки работоспособности Wiki.js. Чтобы убедиться в работоспособности приложения, откройте браузер и перейдите на X.X.X.X:3000, где вместо X.X.X.X укажите IP-адрес сервера.

Затем вернитесь в терминал и остановите приложение, используя комбинация клавиш Ctrl C.
Запуск Wiki.js в качестве системного сервиса
На следующем этапе необходимо настроить работу веб-приложения в качестве системного сервиса. Это делается для того, чтобы Wiki.js функционировал постоянно и в фоновом режиме. Для этого создайте юнит-файл для новой службы:
$ sudo nano /etc/systemd/system/wikijs.service
Вставьте в файл следующее содержимое:
[Unit]
Description=Wiki.js
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/wikijs
ExecStart=/usr/bin/node server
Restart=always
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
Закройте файл, сохранив внесённые изменения, после чего выполните перечитывание конфигурации менеджера systemd:
$ sudo systemctl daemon-reload
Установите созданную службу в автозагрузку:
$ sudo systemctl enable wikijs
Затем запустите службу:
$ sudo systemctl start wikijs
Чтобы убедиться в том, что сервис функционирует корректно, выведите на экран его текущее состояние:
$ systemctl status wikijs
Вывод команды не должен содержать сообщений о каких-либо ошибках.

Настройка обратного прокси
Для настройки обратного прокси проинсталлируйте в систему веб-сервер Nginx:
$ sudo apt install nginx
Проверьте текущее состояние службы веб-сервера, созданной в процессе установки:
$ systemctl status nginx
Результат выполнения команды не должен включать каких-либо сообщений об ошибках.

Затем откройте для редактирования конфигурационный файл Wiki.js:
$ sudo nano config.yml
В конфигурации измените параметр bindIP, определяющий IP-адрес, на котором приложение принимает входящие соединения. А именно, установите для параметра значение 127.0.0.1, которое будет ограничивать доступ к Wiki.js только локальным хостом, что используется при работе через обратный прокси.
bindIP: 127.0.0.1
Далее создайте файл конфигурации виртуального хоста Nginx:
$ sudo nano /etc/nginx/sites-available/wikijs
Вставьте в файл следующие строки, где вместо wiki.your-domain-name.ru укажите доменное имя, по которому будет доступен портал Wiki.js:
server {
listen 80;
listen [::]:80;
server_name wiki.your-domain-name.ru;
client_max_body_size 100m;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Сохраните изменения в файле, закройте его, после чего активируйте сайт в Nginx, создав символическую ссылку на конфигурационный файл:
$ sudo ln -s /etc/nginx/sites-available/wikijs /etc/nginx/sites-enabled/wikijs
Проверьте корректность синтаксиса Nginx:
$ sudo nginx -t
Вывод команды должен выглядеть следующим образом:

Если проверка синтаксиса не показала ошибок, перезапустите конфигурацию Nginx:
$ sudo systemctl reload nginx
Чтобы веб-приложение могло корректно работать, измените владельца каталога и установите права доступа, необходимые для функционирования Wiki.js:
$ sudo chown -R www-data:www-data /opt/wikijs
$ sudo chmod -R 755 /opt/wikijs
Затем откройте браузер и перейдите на страницу веб-приложения, используя его доменное имя.

Настройка HTTPS-доступа
Для автоматического получения и управления TLS-сертификатами от Let’s Encrypt для Nginx используется утилита Certbot. Данная утилита позволяет получить бесплатный сертификат для домена, подтвердить владение доменом, настроить HTTPS и регулярно продлевать установленные сертификаты.
Следующей командой проинсталлируйте в систему Certbot и плагин для автоматической настройки TLS-сертификатов в Nginx:
$ sudo apt install certbot python3-certbot-nginx
По окончании установки запустите команду, в которой замените wiki.your-domain-name.ru на доменное имя, предназначенное для доступа к веб-приложению:
$ sudo certbot --nginx -d wiki.your-domain-name.ru
В ходе выполнения команды утилита получит TLS-сертификат, проверит владение доменом и в случае успешной проверки настроит HTTPS в конфигурации Nginx.

После завершения работы утилиты Certbot откройте браузер и проверьте доступность веб-интерфейса Wiki.js с использованием HTTPS.

Для окончания настройки Wiki.js заполните поля на стартовом экране веб-интерфейса и нажмите INSTALL.

После настройки обратного прокси и HTTPS необходимо закрыть доступ по порту 3000, для чего удалите соответствующее ему разрешающее правило брандмауэра:
$ sudo ufw delete allow 3000/tcp
