PostgreSQL 15
Установка
- Заходим на сайт postgresql.org
- Заходим в раздел Загрузки
- Выбираем нашу версию 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«.
[root@wiki ~]# su postgres
bash-5.1$ psql
could not change directory to «/root»: Отказано в доступе
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 -> настраиваем:
- Выбираем версию Elasticsearch 7.x
- Host: http://localhost:9200
- Дальше по желанию
