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

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 на момент написания исходного мануала).
- Просмотрите доступные модули Node.js:
sudo dnf module list nodejs- Включите модуль nodejs:14 (пример):
sudo dnf module enable nodejs:14Подтвердите ввод «y», если будет запрос.

- Установите nodejs и npm:
sudo dnf install nodejs npm
- Проверьте версии:
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.
- Добавьте репозиторий PostgreSQL:
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
- Отключите модуль postgresql в AppStream, чтобы использовать RPM‑пакеты из репозитория:
sudo dnf module -qy disable postgresql- Установите PostgreSQL 13:
sudo dnf install postgresql13-serverПодтвердите установку «y».

- Инициализируйте базу данных, включите сервис в автозагрузку и запустите его:
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 слушает только локальные сокеты/localhost. Для доступа извне отредактируйте /var/lib/pgsql/13/data/postgresql.conf (параметр listen_addresses) и /var/lib/pgsql/13/data/pg_hba.conf, но делайте это аккуратно и ограничивайте доступ по IP/сети и аутентификации (md5/peer).
- Если на сервере включён firewalld, добавьте правила для нужных сервисов, но в нашем сценарии PostgreSQL нужен только локально.
Создание новой базы и пользователя
- Войдите в psql под системным пользователем postgres:
sudo -u postgres psql- Создайте пользователя wiki с паролем (пример):
CREATE USER wiki WITH
CREATEDB
PASSWORD 'wikijspassworddb';- Создайте базу и назначьте владельца:
CREATE DATABASE wikidb OWNER wiki;Затем выйдите из psql:
\q
Проверить пользователей и базы данных в psql:
# Список ролей
\du
# Список баз данных
\l
Совет: используйте сильный пароль и, при желании, храните его в секретном менеджере (Vault, AWS Secrets Manager и т.п.).
Скачивание и конфигурация Wiki.js
Рекомендуется запускать Wiki.js от отдельного системного пользователя с ограниченными правами.
- Создайте системного пользователя wiki (без домашней папки и с оболочкой nologin):
sudo adduser --system --user-group --no-create-home --shell /sbin/nologin wiki- Создайте рабочую директорию и скачайте 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
Распакуйте архив:
tar -xf wiki-js.tar.gz- Скопируйте пример конфигурации и отредактируйте её:
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).
- Перед запуском смените владельца каталога на системного пользователя wiki:
sudo chown -R wiki:wiki /var/wiki
Примечание по зависимостям: в распакованном релизе обычно уже есть скомпилированные файлы. Если в каталоге присутствует package.json и нет node_modules, можно выполнить:
# В директории /var/wiki (от имени root или через sudo)
cd /var/wiki
sudo -u wiki npm ci --productionВыполняйте npm‑команды аккуратно и только если уверены, что это требуется для конкретной сборки.
Настройка Wiki.js как systemd‑сервиса
- Создайте 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Сохраните и выйдите.
- Примените конфигурацию systemd и включите автозапуск:
sudo systemctl daemon-reload
sudo systemctl enable wikijs- Запустите сервис и проверьте статус:
sudo systemctl start wikijs
sudo systemctl status wikijsЕсли всё в порядке, сервис будет в состоянии active (running).

Логирование: используйте journalctl для просмотра логов:
sudo journalctl -u wikijs -fУстановка и настройка Nginx как обратного прокси
- Установите Nginx:
sudo dnf install nginx
- Создайте серверный блок в /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;
}
}Сохраните файл.
- Проверьте конфигурацию и включите Nginx:
sudo nginx -t
sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl status nginx
Важно: client_max_body_size определяет максимальный размер загружаемых файлов (50M — пример). При необходимости увеличьте.
Защита Wiki.js через HTTPS (Let’s Encrypt)
- Установите certbot и плагин для nginx:
sudo dnf install certbot python3-certbot-nginx- Выпустите сертификат для вашего домена (замените 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:
- На странице установки создайте учётную запись администратора: e‑mail, пароль и укажите Site URL. Нажмите INSTALL и дождитесь завершения установки.

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

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

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

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

Рекомендации по безопасности и эксплуатации
- Права доступа: приложение работает от системного пользователя 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).
- План ревью и модерации изменений.
Частые проблемы и способы устранения
- wikijs.service не запускается
- Просмотрите логи:
sudo journalctl -u wikijs -b --no-pager | tail -n 200- Частые причины: неправильные права на /var/wiki, отсутствующие зависимости, неправильный NODE_ENV или порт занят.
- Проблемы подключения к PostgreSQL
- Убедитесь, что учетные данные в config.yml совпадают с теми, что созданы в PostgreSQL.
- Если ошибка «connection refused», проверьте, слушает ли PostgreSQL на localhost и нет ли блокировки firewalld/iptables.
- Nginx возвращает 502 Bad Gateway
- Проверьте, что Wiki.js слушает на 127.0.0.1:3000 и что systemd‑сервис активен.
- Проверьте журнал Nginx:
sudo tail -n 200 /var/log/nginx/error.log- 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 на предмет изменений в процедурах установки и требованиях к зависимостям.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента