Установка Wiki.js в Docker Compose и подключение Elasticsearch, Keycloak, Git
Wiki.js - это вики-движок с открытым исходным кодом, написанный на языке JavaScript и использующий Node.js как основу. Он позволяет создавать и управлять веб-вики, использующими Markdown для форматирования текста. Wiki.js предназначен для создания и управления централизованными базами знаний, документацией, информационными ресурсами и другими типами контента.
Установка Docker и Docker Compose
- Установка Docker и Docker Compose в Debian была рассмотрена в одной из предыдущих статей.
- Установка Docker и Docker Compose в RHEL-like дистрибутиве так же была рассмотрена в одной из предыдущих статей.
Установка Wiki.js
Создадим каталог /opt/wikijs
и назначим текущего пользователя владельцем каталога
1
2
$ sudo mkdir -p /opt/wikijs
$ sudo chown -R $(whoami):$(whoami) /opt/wikijs
Перейдем в каталог и создадим файл docker-compose.yml
с содержимым
1
2
$ cd /opt/wikijs
$ nano docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
services:
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: wiki
POSTGRES_PASSWORD: wikijsrocks
POSTGRES_USER: wikijs
logging:
driver: "none"
restart: unless-stopped
volumes:
- db-data:/var/lib/postgresql/data
wiki:
image: ghcr.io/requarks/wiki:2
depends_on:
- db
environment:
DB_TYPE: postgres
DB_HOST: db
DB_PORT: 5432
DB_USER: wikijs
DB_PASS: wikijsrocks
DB_NAME: wiki
restart: unless-stopped
ports:
- "80:3000"
elasticsearch:
image: elasticsearch:7.17.6
restart: unless-stopped
environment:
discovery.type: single-node
ES_JAVA_OPTS: "-Xms2G -Xmx2G"
volumes:
db-data:
Запускаем Wiki.js
1
$ docker compose up -d
Переходим в Web-интерфейс, задаем email и пароль для административного доступа
Подключаем Elasticsearch
Elasticsearch - это масштабируемая поисковая система, которая позволяет эффективно индексировать и обрабатывать большие объемы данных, включая текст, числа, даты и другие типы данных. Она написана на Java и использует JSON REST API для работы с данными, а также основана на технологии Apache Lucene для полнотекстового поиска.
Как видно из содержимого файла docker-compose.yml
, контейнер Elasticsearch мы уже подключили.
Для активации Elasticsearch переходим
Администрирование > Поисковая система
Прописываем следующие настройки
- Elasticsearch Version:
7.x
- Host:
http://elasticsearch:9200
- Verify TLS Certificate:
Off
- Index Name:
wiki
- Analyzer:
simple
- Sniff on start:
Off
- Sniff Interval:
0
Поиск Elasticsearch подключен, можно проверять
Подключаем авторизацию Keycloak
- Установка Keycloak + PostgeSQL в Linux была рассмотрена в одной из предыдущих статей.
- Список статей из категории Keycloak
На стороне Keycloak сервера создаем клиента со следующими параметрами
- Client ID:
wikijs
- Root URL:
https://wiki.itdraft.ru
- Home URL:
https://wiki.itdraft.ru
- Valid redirect URIs:
/login/122b715d-1111-4a0b-a232-6f3503434b46/callback
-# этот параметр берется из админки Wiki.js
- Valid redirect URIs:
https://wiki.itdraft.ru/*
- Web origins:
*
Копируем Client secret
в настройках клиента wikijs
во вкладке Credentials
Переходим в админку Wiki.js, добавляем авторизацию Keycloak
Администрирование > Авторизация > Добавить стратегию > Keycloak
- Host:
https://keycloak.itdraft.ru:8443
- Realm:
itdraft
- Client ID:
wikijs
- Client Secret:
###
- Authorization Endpoint URL:
https://keycloak.itdraft.ru:8443/realms/itdraft/protocol/openid-connect/auth
- Token Endpoint URL:
https://keycloak.itdraft.ru:8443/realms/itdraft/protocol/openid-connect/token
- User Info Endpoint URL:
https://keycloak.itdraft.ru:8443/realms/itdraft/protocol/openid-connect/userinfo
- Logout Endpoint URL:
https://keycloak.itdraft.ru:8443/realms/itdraft/protocol/openid-connect/logout
- Разрешить самостоятельную регистрацию:
On
- Ограничить указанными почтовыми доменами:
itdraft.ru
- Назначить в группу:
IT
-# данную группу необходимо создать заранее
- В
Справке по конфигурации
берем значениеCallback URL / Redirect URI
, которое прописываем на стороне Keycloak
Настройка авторизации Keycloak завершена, можно проверять
Подключаем хранилище Git
В нашей системе управления репозиториями (GitHub, Gitlab) создаем репозиторий для хранения документации Wiki.js
Создаем приватный и публичный ключ, для подключения к репозиторию
1
$ ssh-keygen -f wikijs -t ed25519 -C "wikijs-ed25519-key"
Переходим в админку Wiki.js, добавляем хранилище Git
Администрирование > Хранилище > Git
- Authentication Type:
ssh
- Repository URI:
ssh://[email protected]/m.makarov/wikijs.git
- Branch:
main
- SSH Private Key Mode:
contents
- B - SSH Private Key Contents:
###
-# Приватный ключ, который мы генерировали ранее
- Default Author Email:
[email protected]
- Default Author Name:
Максим Макаров
- Способ синхронизации:
Двунаправленная синхронизация
Подключение хранилища Git закончено