Skip to main content

Установка Wiki.js на Almalinux 9 без Docker

PostgreSQL 15

Установка

  1. Заходим на сайт postgresql.org
  2. Заходим в раздел Загрузки
  3. Выбираем нашу версию Linux (в моём случае это AlmaLinux 9), поэтому я выбрал скрипт для RedHat / Rocky Linux 9

Копируем и выполняем скрипт в терминале.

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql15-server
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15

 

Настройка

Редактируем файл конфигурации pg_hba.conf

 
nano /var/lib/pgsql/15/data/pg_hba.conf
Находим блок
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
Добавляем строку host all all 127.0.0.1/32 password, чтобы наш блок приобрёл следующий вид:
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
host all all 127.0.0.1/32 password

Данным действием, мы разрешили локальное подключение к БД по паролю.

 

Теперь открываем следующий файл конфигурации postgresql.conf

nano /var/lib/pgsql/15/data/postgresql.conf

 

Редактируем следующие опции / строки и приводим их к виду.

listen_addresses = '*' # what IP address(es) to listen on;
port = 5432 # (change requires restart)

 

Перезапускаем и проверяем PSQL сервер.

systemctl restart postgresql-15
systemctl status postgresql-15

 

Меняем пароль на стандартного пользователя с полными правами "postgres".

su postgres
bash-5.1$ psql
psql (15.1)
Type «help» for help.

postgres=# \password postgres
Enter new password for user «postgres»: Ввод_нового_пароля
Enter it again: Повтор_нового_пароля

Для выхода используем \q
postgres=# \q

su postgres
psql
\password postgres
\q


Создание нового пользователя

bash-5.1$ createuser —interactive test
could not change directory to «/root»: Отказано в доступе
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n

createuser --interactive wiki

 

Создание базы данных

bash-5.1$ psql
postgres=# CREATE DATABASE wiki;

CREATE DATABASE wiki;

 

Выдаем полные права нашему созданному пользователю на базу.

postgres=# GRANT ALL PRIVILEGES ON DATABASE wiki (имя_базы) to wiki (имя_пользователя);

GRANT ALL PRIVILEGES ON DATABASE wiki to wiki;

 

Назначаем нашего пользователя «wiki» владельцем базы данных.
ALTER DATABASE wiki (база данных) OWNER TO wiki (новый владелец);

ALTER DATABASE wiki OWNER TO wiki;

 

Настройка FireWall

Настраивать Firewall требуется если необходимы внешние подключения к базе данных, в моём случае мне это не нужно, так как pgadmin для управления PostgreSQL, так же установлен локально на сервере.

firewall-cmd --permanent --zone=public --add-port=5432/tcp
firewall-cmd --reload

 

PGadmin 4

Установка

dnf install yum-utils
yum-config-manager --disable pgdg-common
rpm -i https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat-repo-2-1.noarch.rpm
dnf update
dnf install pgadmin4
/usr/pgadmin4/bin/setup-web.sh

Последней командой происходит запуск скрипта с несложным мастером настройки.

 

Настройка

Изменим стандартный http порт на нашем web-сервере httpd, чтобы PGadmin 4 не мешал работе нашей будущей «Wiki».

nano /etc/httpd/conf/httpd.conf

 

Находим блок

#Listen 12.34.56.78:80
Listen 80

 

Меняем порт на любой, в моём случае это порт 8080

#Listen 12.34.56.78:80
Listen 8080

 

Сохраняем и перезапускаем web-сервер.

systemctl restart httpd
systemctl enable httpd
systemctl status httpd

 

Настройка Firewall

Открываем порт на Firewall’е

firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --reload

Проверяем работу PGadmin 4 перейдя по ссылке http://IP_сервера:8080/pgadmin4

 

Wiki.js / Js.wiki

Установка Node.js 16

curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
sudo yum install -y nodejs

 

Установка Wiki.js

wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
mkdir wiki
tar xzf wiki-js.tar.gz -C ./wiki

 

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

Открываем config.yml и редактируем.

cd ./wiki/
mv config.sample.yml config.yml
nano config.yml

 

Находим блок с указание порта и настройки подключения базы данных к Postgres.

# ---------------------------------------------------------------------
# Port the server should listen to
# ---------------------------------------------------------------------


port: 80


# ---------------------------------------------------------------------
# Database
# ---------------------------------------------------------------------
# Supported Database Engines:
# - postgres = PostgreSQL 9.5 or later
# - mysql = MySQL 8.0 or later (5.7.8 partially supported, refer to docs)
# - mariadb = MariaDB 10.2.7 or later
# - mssql = MS SQL Server 2012 or later
# - sqlite = SQLite 3.9 or later


db:
type: postgres


# PostgreSQL / MySQL / MariaDB / MS SQL Server only:
host: localhost
port: 5432
user: wiki
pass: Ваш_пароль_пользователя_для_подключения_к_базе
db: wiki
ssl: false

 

Открываем файл конфигурации нашего будущего сервиса и редактируем его:

nano /etc/systemd/system/wiki.service

 

Важно проверить пользователя от которого запускается сервис, а так же пути до каталогов:
ExecStart=/usr/bin/node server
User=root
WorkingDirectory=/root/wiki

[Unit]
Description=Wiki.js
After=network.target


[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
# Consider creating a dedicated user for Wiki.js here:
User=root
Environment=NODE_ENV=production
WorkingDirectory=/root/wiki


[Install]
WantedBy=multi-user.target

 

Сохраняем файл сервиса и перезапускаем daemon.

systemctl daemon-reload

 

Настройка Firewall

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload

 

Запуск сервиса

Делаем первый запуск, без службы, для установки и настройки сайта.
Первый запуск необходимо выполнить командой находясь в каталоге ./wiki (полный путь скорее всего у Вас будет cd /root/wiki.

node server

 

Проходим по ссылке http://IP_или_имя_сервера и идём по шагам мастера установки / настройки.
После того как прошли мастера установки и выполнили первый вход, возвращаемся в терминал нашего сервера.
Жмём CTRL+C для остановки node server, запускаем наш сервис и добавляем его в автозагрузку.

systemctl restart wiki
systemctl enable wiki
systemctl status wiki

 

Настройка доступа через LDAP

Открываем Wiki.js -> входим под учетной записью администратора -> открываем настройки.

 

Добавляем группу «Пользователи«, назначаем права и если нужно создаем правила доступа к каталогам и страницам.

 

Назначаем права только для чтения (read:pages и read:assets), если планируете использовать комментарии добавьте так же права (read:comments и write:comments).
Остальные права ставим на свое усмотрение в зависимости от своих задач.

 

Так же во вкладке «Page Rules» можно разграничить доступ группе для страниц и каталогов.

 

Добавляем стратегию для авторизации LDAP / Active Directory.

 

Настраиваем параметры подключения к LDAP.

 

  • Настраиваем сопоставление полей с LDAP
  • Включаем самостоятельную регистрацию, чтобы при первом входе через LDAP создавалась учётная запись пользователя
  • Указываем ранее созданную группу для присвоения прав по умолчанию, при первом входе (регистрации)

 

В дальнейшем можно назначить группу Administratos на доменного пользователя, убрать с формы входа локальную авторизацию, а так же настроить 2х факторную аутентификацию.

 

 

ElasticSearch

ElasticSearch требуется для полнотекстового поиска в Wiki.js.

 

Установка Java 1.8.0

Устанавливаем Java 1.8.0 и проверяем.

yum -y install java-1.8.0-openjdk.x86_64
java -version

 

Установка ElasticSearch

Текущая версия Wiki.js поддерживает ElasticSearch 6 и 7 версии. В нашем случае мы ставим ElasticSearch 7.17.8.
IP адреса РФ на официальном сайте Elasticsearch заблокированы, скачать RPM пакеты для архитектуры x86_64 можно здесь.

Закидываем пакеты elasticsearch-7.17.8-x86_64.rpm и elasticsearch-7.17.8-x86_64.rpm.sha512 на сервер удобным для Вас способом и устанавливаем.
Переходим в каталог в который загрузили пакеты.

cd /path/to/files

 

Устанавливаем ElasticSearch из пакета.

sudo rpm --install elasticsearch-7.17.8-x86_64.rpm

 

Открываем файл конфигурации.

nano /etc/elasticsearch/elasticsearch.yml

 

Редактируем.

# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
#cluster.name: my-application
cluster.name: имя_кластера
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
#node.name: node-1
node.name: имя_сервера_или_ноды
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /var/lib/elasticsearch
#
# Path to log files:
#
path.logs: /var/log/elasticsearch
#
# ---------------------------------- Network -----------------------------------
#
# By default Elasticsearch is only accessible on localhost. Set a different
# address here to expose this node on the network:
#
#network.host: 192.168.0.1
#
# By default Elasticsearch listens for HTTP traffic on the first free port it
# finds starting at 9200. Set a specific HTTP port here:
#
#http.port: 9200
http.port: 9200
#

 

Остальные настройки можно оставить по умолчанию. Перезапускаем daemon, запускаем ElasticSearch и добавляем в автозагрузку.

systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch
systemctl status elasticsearch

 

Настройка Firewall

Если от ElasticSearch требуются какие-то внешние обработки откройте порт на Firewall.

firewall-cmd --permanent --zone=public --add-port=9200/tcp
firewall-cmd --reload

 

Подключение полнотекстового поиска в Wiki.js

Открываем Wiki.js -> входим под учетной записью администратора -> открываем настройки.

 

Переходим по пути: Поисковая система -> выбираем Elasticsearch -> настраиваем:

  1. Выбираем версию Elasticsearch 7.x
  2. Host: http://localhost:9200
  3. Дальше по желанию