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

Установка и настройка Wiki.js на Rocky Linux

• 9 min read • DevOps • Обновлено 17 Nov 2025
Установка Wiki.js на Rocky Linux
Установка Wiki.js на Rocky Linux

Скриншот интерфейса Wiki.js

Wiki.js — это открытое и расширяемое вики‑приложение на JavaScript, работающее на Node.js и распространяемое под лицензией AGPL‑v3. Оно подходит как для технической, так и для нетехнической аудитории: сочетает Markdown и WYSIWYG‑редакторы, поддерживает несколько хранилищ и поисковых движков, а также позволяет хранить бэкапы в Git, SFTP, AWS S3 и т.д.

Почему этот гайд полезен

  • Покрывает полный путь: установка Node.js → PostgreSQL → скачивание Wiki.js → systemd → Nginx → SSL.
  • Описаны важные настройки безопасности, мониторинга и резервного копирования.
  • Приведены чек‑листы для ролей (DevOps, администратор контента) и сценарии устранения неисправностей.

Основные преимущества Wiki.js

  • Лёгкая и интуитивная панель управления.
  • Поддержка популярных СУБД (PostgreSQL, MySQL, SQLite, MSSQL).
  • Встроенный поиск и возможность подключения внешнего поиска (Elasticsearch, Solr).
  • Множественные редакторы: Markdown, WYSIWYG, кодовые и табличные.

Содержание

  • Предварительные требования
  • Установка Node.js на Rocky Linux
  • Установка PostgreSQL
  • Создание базы и пользователя PostgreSQL
  • Скачивание и настройка Wiki.js
  • Настройка systemd‑сервиса
  • Установка и настройка Nginx
  • Получение HTTPS‑сертификата от Let’s Encrypt
  • Первичная настройка админа и домашней страницы
  • Рекомендации по безопасности, бэкапам и обслуживанию
  • Тестирование и критерии приёмки
  • Чек‑листы по ролям
  • Частые проблемы и их решения
  • Короткий словарь терминов
  • Заключение

Предварительные требования

  • Сервер с Rocky Linux (установлены последние обновления пакетов).
  • Доступ под root или учетной записью с sudo‑правами.
  • Доменное имя, указывающее на сервер (для HTTPS и публичного доступа).
  • Порты: 80 и 443 (HTTP/HTTPS) должны быть доступны извне, порт 3000 — локально для Wiki.js.

Важно: для продакшена рекомендуется использовать PostgreSQL вместо SQLite и запускать приложение от непривилегированного системного пользователя.

Установка Node.js на Rocky Linux

AppStream в Rocky Linux предоставляет модули для разных LTS‑версий Node.js. В этом руководстве показан пример с Node.js 14 (LTS на момент написания исходного мануала).

  1. Просмотрите доступные модули Node.js:
sudo dnf module list nodejs
  1. Включите модуль nodejs:14 (пример):
sudo dnf module enable nodejs:14

Подтвердите ввод «y», если будет запрос.

Включение модуля nodejs:14 в Rocky Linux

  1. Установите nodejs и npm:
sudo dnf install nodejs npm

Установка Node.js и npm

  1. Проверьте версии:
node --version
npm --version

Вы увидите примерно:

# Node.js version
v14.x.x

# NPM version
6.x.x

Примечание: при необходимости используйте более свежую LTS‑версию (например, Node 16/18) — измените номер модуля. В некоторых случаях у вас может быть установлен Node через NodeSource или nvm — адаптируйте команды соответственно.

Установка PostgreSQL

Для продакшн‑сценариев рекомендуется официальный репозиторий PostgreSQL. Ниже пример установки PostgreSQL 13.

  1. Добавьте репозиторий PostgreSQL:
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Добавление репозитория PostgreSQL

  1. Отключите модуль postgresql в AppStream, чтобы использовать RPM‑пакеты из репозитория:
sudo dnf module -qy disable postgresql
  1. Установите PostgreSQL 13:
sudo dnf install postgresql13-server

Подтвердите установку «y».

Установка PostgreSQL на Rocky Linux

  1. Инициализируйте базу данных, включите сервис в автозагрузку и запустите его:
sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
sudo systemctl enable postgresql-13
sudo systemctl start postgresql-13
sudo systemctl status postgresql-13

После запуска в статусе вы увидите «active (running)».

Инициализация и запуск PostgreSQL

Замечания по безопасности и сетевому доступу:

  • По умолчанию PostgreSQL слушает только локальные сокеты/localhost. Для доступа извне отредактируйте /var/lib/pgsql/13/data/postgresql.conf (параметр listen_addresses) и /var/lib/pgsql/13/data/pg_hba.conf, но делайте это аккуратно и ограничивайте доступ по IP/сети и аутентификации (md5/peer).
  • Если на сервере включён firewalld, добавьте правила для нужных сервисов, но в нашем сценарии PostgreSQL нужен только локально.

Создание новой базы и пользователя

  1. Войдите в psql под системным пользователем postgres:
sudo -u postgres psql
  1. Создайте пользователя wiki с паролем (пример):
CREATE USER wiki WITH
CREATEDB
PASSWORD 'wikijspassworddb';
  1. Создайте базу и назначьте владельца:
CREATE DATABASE wikidb OWNER wiki;

Затем выйдите из psql:

\q

Создание базы и пользователя для Wiki.js

Проверить пользователей и базы данных в psql:

# Список ролей
\du

# Список баз данных
\l

Проверка пользователей и баз PostgreSQL

Совет: используйте сильный пароль и, при желании, храните его в секретном менеджере (Vault, AWS Secrets Manager и т.п.).

Скачивание и конфигурация Wiki.js

Рекомендуется запускать Wiki.js от отдельного системного пользователя с ограниченными правами.

  1. Создайте системного пользователя wiki (без домашней папки и с оболочкой nologin):
sudo adduser --system --user-group --no-create-home --shell /sbin/nologin wiki
  1. Создайте рабочую директорию и скачайте tarball релиза (в примере версия 2.5.201):
mkdir -p /var/wiki; cd /var/wiki/
wget https://github.com/Requarks/wiki/releases/download/2.5.201/wiki-js.tar.gz

Создание пользователя и скачивание исходников Wiki.js

Распакуйте архив:

tar -xf wiki-js.tar.gz
  1. Скопируйте пример конфигурации и отредактируйте её:
cp config.sample.yml config.yml
nano config.yml

В config.yml замените параметры подключения к БД на свои:

db:
  type: postgres

  # PostgreSQL / MySQL / MariaDB / MS SQL Server only:
  host: localhost
  port: 5432
  user: wiki
  pass: wikijspassworddb
  db: wikidb
  ssl: false

Отключите SQLite, добавив # перед соответствующими строками (если они есть):

  # SQLite only:
  #storage: path/to/database.sqlite

Задайте bindIP на 127.0.0.1, чтобы приложение слушало только локально (Nginx будет выступать в роли прокси):

# IP address the server should listen to
bindIP: 127.0.0.1

Сохраните файл (Ctrl+X → Y → Enter).

  1. Перед запуском смените владельца каталога на системного пользователя wiki:
sudo chown -R wiki:wiki /var/wiki

Настройка Wiki.js

Примечание по зависимостям: в распакованном релизе обычно уже есть скомпилированные файлы. Если в каталоге присутствует package.json и нет node_modules, можно выполнить:

# В директории /var/wiki (от имени root или через sudo)
cd /var/wiki
sudo -u wiki npm ci --production

Выполняйте npm‑команды аккуратно и только если уверены, что это требуется для конкретной сборки.

Настройка Wiki.js как systemd‑сервиса

  1. Создайте systemd‑юнит:
cd /etc/systemd/system/
sudo nano wikijs.service

Вставьте следующий файл юнита:

[Unit]
Description=Wiki.js
After=network.target postgresql-13.service

[Service]
Type=simple
ExecStart=/bin/node server
Restart=always
User=wiki
Group=wiki
Environment=NODE_ENV=production
WorkingDirectory=/var/wiki

[Install]
WantedBy=multi-user.target

Сохраните и выйдите.

  1. Примените конфигурацию systemd и включите автозапуск:
sudo systemctl daemon-reload
sudo systemctl enable wikijs
  1. Запустите сервис и проверьте статус:
sudo systemctl start wikijs
sudo systemctl status wikijs

Если всё в порядке, сервис будет в состоянии active (running).

Запуск Wiki.js как сервиса

Логирование: используйте journalctl для просмотра логов:

sudo journalctl -u wikijs -f

Установка и настройка Nginx как обратного прокси

  1. Установите Nginx:
sudo dnf install nginx

Установка Nginx

  1. Создайте серверный блок в /etc/nginx/conf.d/wikijs.conf и замените server_name на ваш домен:
server {
    listen 80;

    server_name wiki.domain-name.io;

    charset utf-8;
    client_max_body_size 50M;

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

Сохраните файл.

  1. Проверьте конфигурацию и включите Nginx:
sudo nginx -t
sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl status nginx

Настройка Nginx как обратного прокси

Важно: client_max_body_size определяет максимальный размер загружаемых файлов (50M — пример). При необходимости увеличьте.

Защита Wiki.js через HTTPS (Let’s Encrypt)

  1. Установите certbot и плагин для nginx:
sudo dnf install certbot python3-certbot-nginx
  1. Выпустите сертификат для вашего домена (замените email и домен):
sudo certbot --nginx --agree-tos --email [email protected] -d wiki.domain-name.io

В процессе вас спросят о подтверждении TOS, опции редиректа HTTP на HTTPS и т.д. Выберите автоматический редирект (рекомендуется).

После успешной генерации сертификаты будут в /etc/letsencrypt/live/wiki.domain-name.io.

Поддержание сертификатов: certbot настраивает автоматическое обновление (renew). Можно проверить сухой прогон:

sudo certbot renew --dry-run

И добавить cron/timer при необходимости.

Первичная настройка админа и домашней страницы

Откройте браузер и перейдите по URL:

https://wiki.domain-name.io/

  1. На странице установки создайте учётную запись администратора: e‑mail, пароль и укажите Site URL. Нажмите INSTALL и дождитесь завершения установки.

Создание администратора Wiki.js

  1. Авторизуйтесь и создайте домашнюю страницу через + CREATE HOME PAGE.

Страница входа Wiki.js

  1. Выберите редактор (Markdown для технической аудитории или WYSIWYG для нетехов).

Выбор редактора Wiki.js

  1. Заполните свойства страницы (название, краткое описание) и сохраните.

Свойства страницы Wiki.js

  1. Результат — ваша стартовая страница:

Домашняя страница Wiki.js

Рекомендации по безопасности и эксплуатации

  • Права доступа: приложение работает от системного пользователя wiki, каталог /var/wiki имеет владельца wiki:wiki.
  • Сеть: Nginx слушает 80/443 и проксирует запросы на 127.0.0.1:3000. БД слушает локально.
  • Firewall: откройте порты 80/443 и закройте неиспользуемые. Пример для firewalld:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
  • SELinux: если включён, при возникновении ошибок доступа проверяйте audit.log и используйте setsebool/restorecon по необходимости.
  • Логи и мониторинг: настройте системный мониторинг (Prometheus/Grafana) и собирайте логи systemd/journal или в файл.
  • Fail2Ban: защитит от грубой силы логинов.

Резервные копии и план восстановления

  • Резервирование базы: используйте pg_dump или регулярные слепки (pg_basebackup) для полноценного восстановления. Пример простого дампа базы:
PGPASSWORD='wikijspassworddb' pg_dump -h localhost -U wiki -F c -b -v -f /var/backups/wikidb_$(date +%F).dump wikidb
  • Файловая часть: сохраняйте /var/wiki, конфигурацию Nginx и systemd‑юниты.
  • Хранение бэкапов: копируйте архивы на удалённое хранилище (S3, SFTP) и держите минимум 7—30 точек восстановления.

Совет: автоматизируйте бэкапы с ротацией и тестом восстановления (раз в месяц проверяйте, что бэкап можно восстановить на тестовой машине).

Производительность и масштабирование

  • Wiki.js крутится в одном процессе Node.js и хорошо подходит для небольших и средних инсталляций. Для высокой нагрузки можно масштабировать горизонтально за счёт балансировщика и совместной базы данных PostgreSQL.
  • Для ускорения поиска подключайте Elasticsearch или Solr при больших объёмах контента.

Тестирование и Критерии приёмки

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

  • Сервис wikijs запущен и работает: systemctl status wikijs показывает active (running).
  • Nginx отвечает через HTTPS: curl -I https://wiki.domain-name.io возвращает 200/301.
  • Вход в веб‑интерфейс возможен под только что созданным админом.
  • Бэкап БД создаётся корректно через pg_dump и успешно восстанавливается в тестовой среде.
  • Автоматическое обновление сертификатов Let’s Encrypt проходит тест — certbot renew –dry-run завершается без ошибок.

Проверки (acceptance tests):

  • UI: создать и отредактировать страницу (Markdown), сохранить и убедиться в видимости.
  • API/интеграции: если есть внешние подключения (SSO, webhook), протестировать аутентификацию и доставку событий.

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

DevOps (развёртывание и обслуживание):

  • Установить Node.js и PostgreSQL 13+.
  • Настроить systemd‑юнит и автостарт.
  • Настроить Nginx и HTTPS.
  • Настроить бэкапы PostgreSQL и файлового хранилища.
  • Настроить firewall, мониторинг и alerting.

Сайт‑админ (контент):

  • Создать админа и страницу «Home».
  • Определить структуру рубрик и права доступа.
  • Обучить редакторов работе с выбранным редактором (Markdown/WYSIWYG).
  • План ревью и модерации изменений.

Частые проблемы и способы устранения

  1. wikijs.service не запускается
  • Просмотрите логи:
sudo journalctl -u wikijs -b --no-pager | tail -n 200
  • Частые причины: неправильные права на /var/wiki, отсутствующие зависимости, неправильный NODE_ENV или порт занят.
  1. Проблемы подключения к PostgreSQL
  • Убедитесь, что учетные данные в config.yml совпадают с теми, что созданы в PostgreSQL.
  • Если ошибка «connection refused», проверьте, слушает ли PostgreSQL на localhost и нет ли блокировки firewalld/iptables.
  1. Nginx возвращает 502 Bad Gateway
  • Проверьте, что Wiki.js слушает на 127.0.0.1:3000 и что systemd‑сервис активен.
  • Проверьте журнал Nginx:
sudo tail -n 200 /var/log/nginx/error.log
  1. SSL не обновляется
  • Запустите certbot renew –dry-run и проанализируйте ошибки.
  • Убедитесь, что DNS корректно указывает на сервер, и порты 80/443 доступны.

Миграция с SQLite на PostgreSQL (общая методология)

  • Экспортируйте содержимое из текущей инсталляции (если есть встроенные средства экспорта — используйте их).
  • Подготовьте целевую базу PostgreSQL и проверьте соответствие схемы.
  • Выполните тестовую миграцию на отдельной среде и проверьте целостность контента и прав доступа.

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

Резюме лучших практик

  • Всегда запускать Wiki.js от непривилегированного системного пользователя.
  • Использовать PostgreSQL для продакшена.
  • Разделять роли: Nginx для TLS и статического кеша, Node.js — для приложения.
  • Автоматизировать бэкапы и регулярно тестировать восстановление.

Факты в цифрах

  • Порт по умолчанию для Wiki.js: 3000.
  • Порт PostgreSQL по умолчанию: 5432.
  • Срок действия сертификатов Let’s Encrypt: 90 дней (рекомендуется автоматическое обновление).

Краткий словарь терминов

  • Nginx — веб‑сервер и обратный прокси.
  • systemd — менеджер системных сервисов в Linux.
  • pg_dump — утилита PostgreSQL для создания дампов базы.
  • certbot — клиент для получения сертификатов Let’s Encrypt.

Короткие советы по обновлениям

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

Заключение

Вы успешно развернули Wiki.js на Rocky Linux с Node.js, PostgreSQL и Nginx с SSL от Let’s Encrypt. Дальше можно подключать дополнительные модули (аутентификация, аналитика, интеграции), автоматизировать обновления и мониторинг, а также внедрять процессы резервного копирования и восстановления. Уделите внимание безопасности, правам доступа и тестированию бэкапов — это обеспечит стабильность и доступность вашего корпоративного вики.

Важно: периодически проверяйте официальную документацию Wiki.js на предмет изменений в процедурах установки и требованиях к зависимостям.

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