Пост

Установка Wiki.js в Docker Compose и подключение Elasticsearch, Keycloak, Git

Wiki.js - это вики-движок с открытым исходным кодом, написанный на языке JavaScript и использующий Node.js как основу. Он позволяет создавать и управлять веб-вики, использующими Markdown для форматирования текста. Wiki.js предназначен для создания и управления централизованными базами знаний, документацией, информационными ресурсами и другими типами контента.

Установка Docker и Docker Compose

Установка 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 переходим

  • Администрирование > Поисковая система

Прописываем следующие настройки

Images Настройки 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 сервера создаем клиента со следующими параметрами

Images Настройки 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

Images Настройки Keycloak в Wiki.js

  • 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

Images Настройки Keycloak в Wiki.js

  • 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

Images Настройки Git в Wiki.js

  • Authentication Type: ssh
  • Repository URI: ssh://[email protected]/m.makarov/wikijs.git
  • Branch: main
  • SSH Private Key Mode: contents
  • B - SSH Private Key Contents: ### - # Приватный ключ, который мы генерировали ранее

Images Настройки Git в Wiki.js

  • Default Author Email: [email protected]
  • Default Author Name: Максим Макаров
  • Способ синхронизации: Двунаправленная синхронизация

Подключение хранилища Git закончено

Авторский пост защищен лицензией CC BY 4.0 .

© IT Draft. Некоторые права защищены.