DT Wiki

Подготовка системы

debuser - Пользователь под которым будет производиться установка
192.168.1.200 - IP адрес машины, где будем устанавливать Wiki.js

для начала логинимся с правами root

su

Вводим пароль root

Установка необходимых пакетов

apt install -y git curl wget unzip sudo gzip mc

Добаваляем нашего пользователя в группу sudoers для предоставления административных прав

/usr/sbin/usermod -aG sudo debuser

Перелогиниваемся пользователем debuser

su debuser

Создание пользователя wiki, от которого будет выполняться Wiki.js:

sudo groupadd --system wiki
sudo useradd -s /sbin/nologin --system -g wiki wiki

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

curl -sL https://deb.nodesource.com/setup_20.x | sudo bash -
sudo apt install nodejs
node -v && npm -v

Установка сервера баз данных PostgreSQL

Установим сервер баз данных PostgreSQL

sudo apt install -y postgresql postgresql-client

Создадим пользователя и базы данных

sudo -u postgres psql -c "CREATE ROLE wikiuser WITH LOGIN PASSWORD 'wikipassword'";
sudo -u postgres psql -c "CREATE DATABASE wikidatabase WITH OWNER wikiuser";

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

Cкачаем свежую версию дистрибутива с сайта Wiki.js

sudo mkdir -p /var/www/wiki
sudo mkdir -p /opt/wiki/backup
wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz

Распакуем архив в рабочую папку

sudo tar zxvf wiki-js.tar.gz -C /var/www/wiki

Назначим права для пользователя wiki

rm wiki-js.tar.gz
sudo chown -R wiki:wiki /var/www/wiki
sudo chown -R wiki:wiki /opt/wiki/backup
cd /var/www/wiki

Переименуем пример конфигурационного файла

sudo mv config.sample.yml config.yml

Внесём реквизиты подключения к базе данных

sudo nano config.yml
port: 3000
db:
  type: postgres
  host: localhost
  port: 5432
  user: wikiuser
  pass: wikipassowrd
  db: wikidatabase
  ssl: false

После внесения информации о покдлючении к БД запустим сервер и дождаться приглашения ко входу через браузер по указанному в файле порту для завершения конфигурации:

sudo node server

В ответе увидим приглашение

Loading configuration from /var/www/wiki/config.yml... OK
2023-02-10T12:42:10.507Z [MASTER] info: =======================================
2023-02-10T12:42:10.508Z [MASTER] info: = Wiki.js 2.5.219 =====================
2023-02-10T12:42:10.509Z [MASTER] info: =======================================
2023-02-10T12:42:10.509Z [MASTER] info: Initializing...
2023-02-10T12:42:11.010Z [MASTER] info: Using database driver pg for postgres [ OK ]
2023-02-10T12:42:11.014Z [MASTER] info: Connecting to database...
2023-02-10T12:42:11.030Z [MASTER] info: Database Connection Successful [ OK ]
2023-02-10T12:42:11.285Z [MASTER] warn: DB Configuration is empty or incomplete. Switching to Setup mode...
2023-02-10T12:42:11.285Z [MASTER] info: Starting setup wizard...
2023-02-10T12:42:11.412Z [MASTER] info: Starting HTTP server on port 3000...
2023-02-10T12:42:11.412Z [MASTER] info: HTTP Server on port: [ 3000 ]
2023-02-10T12:42:11.415Z [MASTER] info: HTTP Server: [ RUNNING ]
2023-02-10T12:42:11.416Z [MASTER] info: 🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻🔻
2023-02-10T12:42:11.416Z [MASTER] info:
2023-02-10T12:42:11.416Z [MASTER] info: Browse to http://YOUR-SERVER-IP:3000/ to complete setup!
2023-02-10T12:42:11.416Z [MASTER] info:
2023-02-10T12:42:11.417Z [MASTER] info: 🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺🔺

Открываем браузер и вводим:

192.168.1.200:3000

wiki-install.png

Вводим почту админа Wiki.js, пароль и адрес, по которому будем ходить на Wiki.js, например:

https://wiki.home.local

Жмём на кнопку Install

При первом входе нам предложат создать домашнюю страничку
wiki-first-load.png
Жмем на создать, выбираем в каком редакторе, вносим какие нибуть данные и просто пока сохраняем , выходим из редактора и попадаем на только что созданную страничку.

В верхнем правом углу жмем шестерёнку
settings-enter.png
Попадаем в настройки Wiki.js

Добавление Русского языка

Жмём на Locale

wiki-locale-selection.png

Прокручиваем немного вниз и жмём иконку "облако" на против Russian

wiki-locale-russian-download.png

Прокручиваем страницу обратно вверх в разделе "Local Settings" выбираем Русский язык, чуть ниже включаем "Multilingual Namespacing" и жмем APPLY в верхнем правом углу.

wiki-apply-russian.png

Далее переходим в раздел "Поисковая система"

wiki-search-system-enter.png

Выбираем "Database - PostgreSQL", жмем "ПРИМЕНИТЬ"

wiki-search-select.png

Теперь идем в "Хранилище"

wiki-storage-enter.png

Выбираем "Local File System", в окошке "Path" вписываем путь к хранилищу резервных копий и включаем ежедневное создание резервных копий "Create Dailly Backups", жмем "ПРИМЕНИТЬ"

wiki-backup-enable.png

Папку /opt/wiki/backup мы создали в одном из предыдущих шагов.

Собственно с первичной настройкой все, возвращаемся в консоль сервера и останавливаем сервис wiki одновременным нажатием "CTRL+c"

Автозагрузка приложения Wiki.js

Для автоматического запуска Wiki.js после перезагрузки сервера нужно создать Unit-файл для systemd:

sudo 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 и включить автоматический запуск при загрузке системы:

sudo systemctl daemon-reload
sudo systemctl enable --now wiki

Просмотр журнала в случае необходимости можно выполнить таким образом:

sudo systemctl status wiki

Установка NGINX для Wiki.js

Для кэширования основных запросов и упрощения установки сертификатов SSL можно воспользоваться прокси сервером NGINX.

Установим nginx

sudo apt install -y nginx

Создать конфигурационный файл для Wiki.js

sudo nano /etc/nginx/sites-available/wiki

Добавляем следующее содержание:

server {
  listen  80;
  server_name wiki.home.local; # доменное имя
  location /
  {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_next_upstream error timeout http_502 http_503 http_504;
  }
}

Включим созданный для nginx конфиг:

sudo ln -s /etc/nginx/sites-available/wiki /etc/nginx/sites-enabled/wiki

Проверим конфигурацию и перезапустить nginx

sudo nginx -t
sudo nginx -s reload

Настройка системы поиска Elastics

На момент написания статьи скачать пакет в Росси из-за санкций было не возможно, так что если вы не в России то загруть DEB пакет можно здесь либо по ссылке с Яндекс диска
Далее загружаем его на сервер с Wiki.JS, подключаемся по SSH и устанавливаем

sudo dpkg -i elasticsearch-7.17.11-amd64.deb

Затем произведём небольшую настройку

sudo mcedit /etc/elasticsearch/elasticsearch.yml

и раскоментируем одну строку

http.port: 9200

и запустим сервис

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

Переходим в настройки поисковой системы

wiki-settings-search-engine.png

и выставляем значения как на картинке ниже

elasticsearch-enable.png

Нажимаем ПРИМЕНИТЬ и обязательно ПЕРЕСТРОИТЬ ИНДЕКС

Обновление Wiki.js

Скачать новую версию Wiki.js

cd ~/
wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz

Остановить сервис wiki

sudo systemctl stop wiki

Скопировать конфигурационный файл в безопасное место

sudo cp /var/www/wiki/config.yml /opt/wiki/config.yml.back

Удалить содержимое рабочей папки Wiki.js

sudo rm -r /var/www/wiki/*

Распаковать новую версию Wiki.js

sudo tar -xvf wiki-js.tar.gz -C /var/www/wiki
rm wiki-js.tar.gz
sudo chown -R wiki:wiki /var/www/wiki

Вернуть config.yml назад

sudo cp /opt/wiki/config.yml.back /var/www/wiki/config.yml
sudo rm /var/www/wiki/config.sample.yml

Запустить сервис wiki

sudo systemctl start wiki

Перенос базы с одного сервера на другой

Допустим вы планируете перенести Wiki на другой сервер с IP адресом 192.168.1.201, на котором все установлено и нужна только база и он доступен по SSH

Для переноса базы, на текущем сервере выполним пару команд:

sudo -u postgres pg_dump -h localhost -O -F c -C -c -U wiki wiki | gzip -c > wiki-dump.gz
scp wiki-dump.gz debuser@192.168.1.201:~/

Теперь перейдем на второй сервер

cd ~/

Распакуем архив с дампом

gunzip wiki-dump.gz

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

mv wiki-dump /tmp

Остановим сервис wiki

sudo systemctl stop wiki

Войдём в систему от имени postgres

sudo su - postgres
cd /tmp

Удалим существующюю базу и создадим пустую

psql -c "DROP DATABASE wiki";
psql -c "CREATE DATABASE wiki";

И востанови базу из дампа

pg_restore -d wiki wiki-dump
exit

Востановим права для рабочей папки wiki

sudo chown -R wiki:wiki /var/www/wiki

И запустим сервис wiki

sudo systemctl start wiki

ГОТОВО, Запускаем браузер и переходим по новому адресу Wiki.js
Если все работает, можно удалить дамп

rm /tmp/wiki-dump