Установка wiki.js на debian 12
Wiki.js — это современное и мощное вики-приложение с открытым исходным кодом, основанное на Node.js, Git и Markdown. Wiki.js работает на быстром движке Node.js и оптимизирован для экономии ресурсов. Некоторые функции Wiki.js:
- Редактирование Markdown с поддержкой Git
- Легкий, но чрезвычайно мощный
- Красивый дизайн для современного Интернета
- Интегрированный контроль доступа
- Интуитивное управление активами
- Встроенная поисковая система
Устанавливаем nodejs и npm
$ sudo apt install nodejs npm
проверить версию можно командами
$ node -v $ npm -v
Установим базу данных PostgreSQL
$ sudo apt install postgresql
update-alternatives: используется /usr/share/postgresql/15/man/man1/postmaster.1.gz для предоставления /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) в автоматическом режиме
После установки базы данных запускаем сервер командой
$ sudo systemctl start postgresql@15-main
$ sudo systemctl status postgresql@15-main
● postgresql@15-main.service - PostgreSQL Cluster 15-main Loaded: loaded (/lib/systemd/system/postgresql@.service; enabled-runtime; preset: enabled) Active: active (running) since Tue 2024-03-26 15:51:26 +03; 17h ago Main PID: 11176 (postgres) Tasks: 8 (limit: 4645) Memory: 62.0M CPU: 23.754s CGroup: /system.slice/system-postgresql.slice/postgresql@15-main.service ├─11176 /usr/lib/postgresql/15/bin/postgres -D /var/lib/postgresql/15/main -c config_file=/etc/postgresql/15/main/postgresql.conf ├─11177 "postgres: 15/main: checkpointer " ├─11178 "postgres: 15/main: background writer " ├─11180 "postgres: 15/main: walwriter " ├─11181 "postgres: 15/main: autovacuum launcher " ├─11182 "postgres: 15/main: logical replication launcher " ├─15608 "postgres: 15/main: dbwiki wiki 127.0.0.1(35912) idle" └─15610 "postgres: 15/main: dbwiki wiki 127.0.0.1(35928) idle" мар 26 15:51:23 n61740l systemd[1]: Starting postgresql@15-main.service - PostgreSQL Cluster 15-main... мар 26 15:51:26 n61740l systemd[1]: Started postgresql@15-main.service - PostgreSQL Cluster 15-main.
$ sudo -u postgres psql
Выйти из postgreSQL можно следующей командой
postgres=# \q
Настроим PostgreSQL
Создаем нового пользователя базы данных
$ sudo -u postgres createuser --interactive Enter name of role to add: wiki
Shall the new role be a superuser? (y/n)
Создаем базу данных postgres
Теперь вам нужно создать две базы данных. По умолчанию для пользователя wiki и еще одну для Wiki.js.
Запустим следующие команды
$ sudo -u postgres createdb dbwiki $ sudo -u postgres createdb wiki
$ sudo groupadd --system wiki $ sudo useradd -s /sbin/nologin --system -g wiki wiki
Теперь подключимся к базе данных
$ sudo -u postgres psql
postgres=# \password dbwiki Enter new password: dbpwd Enter it again: dbpwd
Теперь будем ставить Wiki.js
Создадим отдельную папку для проекта
$ sudo mkdir /opt/wiki
$ sudo chown wiki:wiki /opt/wiki
$ cd /opt/wiki
$ sudo -u wiki /bin/bash
$ wget https://github.com/requarks/wiki/releases/download/v2.5.301/wiki-js.tar.gz
$ tar xzf wiki-js.tar.gz -C /opt/wiki
$ mv config.sample.yml config.yml
$ nano config.yml
... # PostgreSQL / MySQL / MariaDB / MS SQL Server only: host: localhost port: 5432 user: dbwiki pass: wiki db: wiki ssl: false ...
Замечания по конфигу:
- Сразу бросаются в глаза нестандартные порты. Они тут неспроста. Если поменять 3000 на 80, из-за этого будет косяк, т.к. порты до 1024 может использовать только пользователь root. Если нужно чтобы работало сразу, оставляем 3000;
- SSL должен быть выключен.
Для запуска Wiki.js можно использовать менеджер процессов, PM2. Это позволит запустить приложение в фоновом режиме системы. Выйдем из оболочки командной строки пользователя wiki и установим PM2
$ exit $ sudo npm install pm2 -g
$ sudo -u wiki /bin/bash
$ pm2 start server --name wiki
$ node server
После того, как убедились что все хорошо, запустим приложение с PM2
$ pm2 start server --name wiki
$ pm2 stop wiki
$ pm2 start wiki
$ pm2 restart wiki
Сервис
Сейчас Вики запущена как приложение, если нажать в сессии SSH Ctrl-Z, приложение закроется.
Создаем сам сервис
$ sudo nano /etc/systemd/system/wiki.service
[Unit] Description=Wiki.js After=network.target [Service] Type=simple ExecStart=/usr/bin/node server Restart=always User=wiki Environment=NODE_ENV=production WorkingDirectory=/opt/wiki [Install] WantedBy=multi-user.target
$ sudo systemctl daemon-reload
$ sudo systemctl enable wiki
$ sudo systemctl start wiki
$ sudo systemctl status wiki
● wiki.service - Wiki.js Loaded: loaded (/etc/systemd/system/wiki.service; enabled; preset: enabled) Active: active (running) since Wed 2024-03-27 09:22:24 +03; 2h 2min ago Main PID: 15547 (node) Tasks: 11 (limit: 4645) Memory: 151.2M CPU: 36.199s CGroup: /system.slice/wiki.service └─15547 /usr/bin/node server
Установка Nginx и настройка Reverse Proxy
Ваше приложение работает и слушает 3000 порт на localhost. Когда запрос выполняется из браузера, используя доменное имя или ip адрес, он обращается к порту 80 вашей машины (порт веб-сервера Nginx). Но приложение Wiki.js работает на порту 3000 по умолчанию. У Nginx есть роль прокси. Он перенаправляет запросы в сервис (Node.js application), назначенный настроенному доменному имени. Вам нужно настроить Nginx, чтобы сообщить, что доменное имя wiki.example.com соответствует приложению Wiki.js, localhost:3000.
Чтобы установить Nginx на свой сервер, выполним следующую команду
$ sudo apt install nginx
$ sudo systemctl enable nginx
$ sudo nano /etc/nginx/sites-available/wiki.example.com.conf
server { listen 80 default_server; server_name wiki.example.com; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
server_name содержит все доменные имена, которые прикреплены к настроенному приложению.
Блок «location» указывает на две вещи. Первый, на «/», путь URL, который дает доступ к вашему приложению. В этом примере это «http://wiki.example.com/», корень вашего доменного имени, который дает доступ к приложению, указанному в конфигурационном файле.
Далее внутри блока «location» находится поле «proxy_pass». Поле proxy_pass является локальной ссылкой приложения http://localhost:[PORT]. Помните, что приложение работает на порту 3000, поэтому ссылка «http://localhost:3000».
Сохраняем файл нажатием CTRL+X, затем Y, потом проверяем синтаксические ошибки следующей командой
$ sudo nginx -t
$ sudo ln -s /etc/nginx/sites-available/wiki.example.com.conf /etc/nginx/sites-enabled
$ sudo systemctl restart nginx
Тут страничка первоначальной настройки:

После того как введем данные (телеметрию надо отключить) и жмем INSTALL, произойдет первичное заполнение базы.
Установка завершена, теперь главное чтобы все работало после перезагрузки сервера. Достаем бубен, начинаем молиться и отправляем сервер в перезагрузку с надеждой, что все будет хорошо 🙂
Оставить комментарий