# Установка Wiki server'а wiki.js
## :book: Теория
Вики (Wiki) - это система или веб-сервис для быстрого создания простых сайтов без знания html. Такие сайты, как правило, используются для совместной работы в рамках проекта или отдела, а не в качестве корпоративного сайта компании .
Wiki идеально подходит для создания базы знаний, технических заданий и подготовки различных документов, над которыми происходит совместная работа нескольких пользователей.
В данном гайде будет рассматриваться wiki.js сервер
Из возможностей wiki.js можно подчеркнуть следующее:
1. кастомизация интерфейса
1. многоязычность документов
1. разграничение доступа
1. интеграция с OIDC и AD
1. синхронизация с git на выбор push/pull/bi-directional
1. синхронизация с S3, SFTP, Local FS, OneDrive, Dropbox, Google Drive
1. доступ по API
1. уведомления по почте
Wiki.js поставляется для платформ:
* Docker
* Kubernetes
* Linux
* MacOS
* Windows
## Используемые ресурсы
:::
## Настройка
Выполним обновление системы.
```
apt update && apt upgrade -y
```
Установим необходимые для дальнейшей работы пакеты.
```
apt install -y git curl unzip sudo wget vim socat bash-completion apt-transport-https build-essential dirmngr
```
Создадим группу и пользователя для wiki.js.
```
groupadd --system wiki
useradd -s /sbin/nologin --system -g wiki wiki
```
Установим node.js.
```
curl -sL https://deb.nodesource.com/setup_16.x | bash -
apt install nodejs
```
Установим PostgreSQL
```
apt install -y postgresql postgresql-client
```
Создадим пользователя в базе данных и базу данных для wiki.js
:::warning
Делайте это в директории к которой postgres имеет доступ!
Иначе возможна ошибка:
could not change directory to "/root": Permission denied
:::
```
sudo -u postgres psql -c "CREATE ROLE wikiuser WITH LOGIN PASSWORD 'wikipassword'";
sudo -u postgres psql -c "CREATE DATABASE wikidatabase WITH OWNER wikiuser";
```
Далее необходимо скачать версию дистрибутива с сайта https://js.wiki/ и распаковать в рабочую директирию.
```
mkdir -p /var/www/wiki
cd /var/www
wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
tar zxvf wiki-js.tar.gz -C wiki
chown -R wiki:wiki wiki
cd wiki
```
Скопируем пример конфигурационного файла и укажем реквизиты для подключения к ранее созданной базе данных.
```
mv config.sample.yml config.yml
nano config.yml
```
Из файла можно всё стереть и вставить следующее:
```
port: 3000
db:
type: postgres
host: localhost
port: 5432
user: wikiuser
pass: wikipassword
db: wikidatabase
ssl: false
```
Запустим сервер и дождёмся приглашения на веб-страницу
```
node server
```

Перейдём в веб-интерфейс для завершения установки и создаём аккаунт администратора.

Нажимаем установить и ждём некоторое время, далее нас переведёт на страницу авторизации.
Вводим ранее созданные учётные данные.

### Создание демона автозагрузки
Пока не забыли, создадим демон для автозагрузки wiki.js
Для этого создадим файл для systemd
```
nano /etc/systemd/system/wiki.service
```
И вставим следующее
```
[Unit]
Description=Wiki.js
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
# Укажите пользователя, от имени которого будет запущен wiki.js
User=wiki
Environment=NODE_ENV=production
WorkingDirectory=/var/www/wiki
[Install]
WantedBy=multi-user.target
```
Теперь перезапустим systemd и запустим демон wiki, а также добавим его в автозагрузку
```
systemctl daemon-reload
systemctl start wiki
systemctl enable wiki
```
Проверим статус
```
systemctl status wiki
```

Как можно заметить, всё отлично!
## Создание и настройка страниц wiki
Теперь создадим домашнюю страницу, для этого выберем "Create home page"

Выберем "Markdown"

В следующем окне можно указать различные свойства страницы, скрипты и стили css. Изменим только название и описание всё остальное оставим по умолчанию.

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

Нажимаем "Create".

Создадим вторую страницу, нажав справа сверху кнопку создания новой страницы.

На этот раз выберем другой редактор, к примеру visual editor и также зададим странице только имя и описание, всё остальное оставим по умолчанию.

Нажимаем "Create" и вообщем-то всё.

## Вывод
Таким образом можно установить и настроить свой wiki сервер. Это очень актуально на предприятии, когда сотрудники должны иметь быстрый доступ к огромному количеству данных пользователей, учётных записей, баз данных и т.д. и сделать это через wiki-сервер будет хорошим решением.