Установка Wiki.js · 9 min read · Dec 19, 2025

Как установить Wiki.js на Ubuntu 22.04 LTS

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

В этом руководстве вы научитесь устанавливать Wiki.js на сервер Ubuntu 22.04 с использованием базы данных PostgreSQL и сервера Nginx для проксирования.

Предварительные условия

  • Сервер с установленной Ubuntu 22.04.
  • Пользователь без прав root с правами sudo.
  • Полностью квалифицированное доменное имя (FQDN), указывающее на ваш сервер. Для наших целей мы будем использовать wiki.example.com в качестве доменного имени.
  • Убедитесь, что все обновлено. $ sudo apt update && sudo apt upgrade
  • Установите основные утилиты. Некоторые из них могут быть уже установлены. $ sudo apt install wget curl ca-certificates gnupg gnupg2 nano unzip lsb-release ubuntu-keyring -y

Шаг 1 - Настройка брандмауэра

Перед установкой любых пакетов первым шагом является настройка брандмауэра для разрешения HTTP и HTTPS соединений.

Проверьте статус брандмауэра.

$ sudo ufw status

Вы должны увидеть что-то вроде следующего.

Статус: активен

Кому                         Действие      Откуда
--                         ------      ----
OpenSSH                    ALLOW       Везде
OpenSSH (v6)               ALLOW       Везде (v6)

Разрешите порты HTTP и HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Проверьте статус еще раз, чтобы подтвердить.

$ sudo ufw status
Статус: активен

Кому                         Действие      Откуда
--                         ------      ----
OpenSSH                    ALLOW       Везде
80/tcp                     ALLOW       Везде
443                        ALLOW       Везде
OpenSSH (v6)               ALLOW       Везде (v6)
80/tcp (v6)                ALLOW       Везде (v6)
443 (v6)                   ALLOW       Везде (v6)

Шаг 2 - Установка PostgreSQL и утилит

Ubuntu 22.04 поставляется со старой версией PostgreSQL. Мы установим Postgres 14 для нашего руководства.

Установите репозиторий для PostgreSQL.

$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Импортируйте GPG-ключ PostgreSQL.

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg >/dev/null

Обновите список репозиториев системы.

$ sudo apt update

Установите сервер PostgreSQL 14.

$ sudo apt install -y postgresql-14

Проверьте статус службы.

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Tue 2022-10-25 06:24:24 UTC; 10min ago
   Main PID: 4032 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Oct 25 06:24:24 wiki systemd[1]: Starting PostgreSQL RDBMS...
Oct 25 06:24:24 wiki systemd[1]: Finished PostgreSQL RDBMS.

Шаг 3 - Настройка PostgreSQL

Войдите в оболочку PostgreSQL.

$ sudo -i -u postgres psql

Создайте новую базу данных для Wiki.js.

postgres=# CREATE DATABASE wikidb;

Создайте нового пользователя базы данных с надежным паролем.

postgres=# CREATE USER wikiuser WITH ENCRYPTED PASSWORD 'wikipassword';

Предоставьте права пользователю на использование базы данных.

postgres=# GRANT ALL PRIVILEGES ON DATABASE wikidb TO wikiuser;

Выйдите из оболочки Postgres.

postgres=# \q

Шаг 4 - Установка Node.js

Wiki.js поддерживает Node v16 на момент написания этого руководства.

Установите репозиторий Node с помощью следующей команды.

$ curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -

Установите Node.

$ sudo apt install nodejs -y

Проверьте установку Node.

$ node --version
v16.18.0

Шаг 5 - Загрузка Wiki.js

Создайте папку для установки Wiki.js.

$ sudo mkdir -p /var/www/wikijs

Установите текущего вошедшего пользователя владельцем папки.

$ sudo chown $USER:$USER /var/www/wikijs

Перейдите в каталог и загрузите архив кода Wiki.js.

$ cd /var/www/wikijs && wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz

Извлеките загруженный архив.

$ tar xzf wiki-js.tar.gz

Удалите архив.

$ rm wiki-js.tar.gz

Шаг 6 - Настройка и запуск Wiki.js

Создайте файл конфигурации из образца.

$ cp config.sample.yml config.yml

Откройте файл конфигурации для редактирования.

$ nano config.yml

Найдите следующие настройки базы данных и обновите их значения на те, которые были настроены на шаге 3.

# PostgreSQL / MySQL / MariaDB / MS SQL Server только:
host: localhost
port: 5432
user: wikiuser
pass: wikipassword
db: wikidb
ssl: false

Найдите строку bindIP: 0.0.0.0 и обновите ее следующим образом.

bindIP: 127.0.0.1

Это заставит Wiki.js слушать на адресе обратной связи, потому что мы будем использовать прокси Nginx для доступа к нему снаружи.

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Запустите Wiki.js, используя следующую команду.

$ node server

Вы получите аналогичный вывод, подтверждающий успешную установку.

Loading configuration from /var/www/wikijs/config.yml... OK
2022-10-25T06:40:46.294Z [MASTER] info: =======================================
2022-10-25T06:40:46.296Z [MASTER] info: = Wiki.js 2.5.289 =====================
2022-10-25T06:40:46.296Z [MASTER] info: =======================================
2022-10-25T06:40:46.296Z [MASTER] info: Initializing...
2022-10-25T06:40:46.962Z [MASTER] info: Using database driver pg for postgres [ OK ]
2022-10-25T06:40:46.974Z [MASTER] info: Connecting to database...
2022-10-25T06:40:47.067Z [MASTER] info: Database Connection Successful [ OK ]
2022-10-25T06:40:47.345Z [MASTER] warn: DB Configuration is empty or incomplete. Switching to Setup mode...
2022-10-25T06:40:47.345Z [MASTER] info: Starting setup wizard...
2022-10-25T06:40:47.510Z [MASTER] info: Starting HTTP server on port 3000...
2022-10-25T06:40:47.511Z [MASTER] info: HTTP Server on port: [ 3000 ]
2022-10-25T06:40:47.515Z [MASTER] info: HTTP Server: [ RUNNING ]
2022-10-25T06:40:47.515Z [MASTER] info: .......................................................................
2022-10-25T06:40:47.515Z [MASTER] info: 
2022-10-25T06:40:47.516Z [MASTER] info: Browse to http://YOUR-SERVER-IP:3000/ to complete setup!
2022-10-25T06:40:47.516Z [MASTER] info: 
2022-10-25T06:40:47.516Z [MASTER] info: ............................................................................

Нажмите Ctrl + C, чтобы остановить процесс.

Шаг 7 - Настройка службы Systemd

Вышеуказанный процесс для поддержания работы Wiki.js является временным. Чтобы сделать процесс постоянным, нам нужно создать службу systemd для Wiki.js, чтобы запускать ее как фоновую службу. Это позволит Wiki.js работать после перезагрузки системы.

Создайте файл службы systemd для Wiki.js и откройте его для редактирования.

$ sudo nano /etc/systemd/system/wikijs.service

Вставьте следующий код в него. Замените значение переменной User на имя вашего системного пользователя.

[Unit]
Description=Wiki.js
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always

User=navjot
Environment=NODE_ENV=production
WorkingDirectory=/var/www/wikijs

[Install]
WantedBy=multi-user.target

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Перезагрузите системный демон.

$ sudo systemctl daemon-reload

Включите службу Wiki.js.

$ sudo systemctl enable wikijs

Шаг 8 - Установка Nginx

Ubuntu 22.04 поставляется со старой версией Nginx. Вам нужно загрузить официальный репозиторий Nginx, чтобы установить последнюю версию.

Импортируйте официальный ключ Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Настройте официальный репозиторий для Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
  http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Закрепите репозиторий, чтобы отдать предпочтение официальному репозиторию перед репозиторием Ubuntu.

$ echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
     | sudo tee /etc/apt/preferences.d/99nginx

Обновите список репозиториев системы.

$ sudo apt update

Установите сервер Nginx.

$ sudo apt install nginx -y

Проверьте установку.

$ nginx -v
nginx version: nginx/1.22.1

Запустите сервер Nginx.

$ sudo systemctl start nginx

Проверьте статус службы.

$ sudo systemctl status nginx
? nginx.service - nginx - высокопроизводительный веб-сервер
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-10-25 06:50:05 UTC; 2s ago
       Docs: https://nginx.org/en/docs/
    Process: 5522 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 5523 (nginx)
      Tasks: 2 (limit: 1030)
     Memory: 1.8M
        CPU: 4ms
     CGroup: /system.slice/nginx.service
             ??5523 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??5524 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Oct 25 06:50:05 wiki systemd[1]: Starting nginx - высокопроизводительный веб-сервер...

Шаг 9 - Установка SSL

Нам нужно установить Certbot для генерации SSL-сертификата. Вы можете либо установить Certbot с помощью репозитория Ubuntu, либо получить последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.

Ubuntu 22.04 поставляется с установленным Snapd по умолчанию. Выполните следующие команды, чтобы убедиться, что ваша версия Snapd обновлена.

$ sudo snap install core
$ sudo snap refresh core

Установите Certbot.

$ sudo snap install --classic certbot

Используйте следующую команду, чтобы убедиться, что команда Certbot может быть выполнена, создав символическую ссылку на директорию /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Выполните следующую команду для выдачи сертификата.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d wiki.example.com

Вышеуказанная команда загрузит сертификат в директорию /etc/letsencrypt/live/wiki.example.com на вашем сервере.

Сгенерируйте сертификат Diffie-Hellman group.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Проверьте службу планировщика обновления Certbot.

$ sudo systemctl list-timers

Вы найдете snap.certbot.renew.service как одну из запланированных служб.

NEXT                        LEFT          LAST                        PASSED    UNIT                           ACTIVATES              

.................................................................................................................................
Tue 2022-10-25 00:00:00 UTC 17h left      Tue 2022-10-25 04:49:20 UTC 2h ago    logrotate.timer                logrotate.service
Tue 2022-10-25 02:39:09 UTC 20h left      Tue 2022-10-25 06:47:33 UTC 12min ago apt-daily.timer                apt-daily.service
Tue 2022-10-25 06:02:00 UTC 8h left       n/a                         n/a       snap.certbot.renew.timer       snap.certbot.renew.service

Выполните пробный запуск процесса, чтобы проверить, работает ли обновление SSL.

$ sudo certbot renew --dry-run

Если вы не видите ошибок, значит, все готово. Ваш сертификат будет автоматически обновляться.

Шаг 10 - Настройка Nginx

Создайте и откройте файл /etc/nginx/conf.d/wikijs.conf для редактирования.

$ sudo nano /etc/nginx/conf.d/wikijs.conf

Вставьте следующий код в него.

# принудить HTTPS
server {
  listen 80;
  listen [::]:80;
  server_name wiki.example.com;
  return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name wiki.example.com;

    root /var/www/wikijs;

    access_log  /var/log/nginx/wiki.access.log;
    error_log   /var/log/nginx/wiki.error.log;

    http2_push_preload on; # Включить HTTP/2 Server Push

    ssl_certificate /etc/letsencrypt/live/wiki.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/wiki.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/wiki.example.com/chain.pem;
    ssl_session_timeout 1d;

    # Включить версии TLS (TLSv1.3 требуется для предстоящего HTTP/3 QUIC).
    ssl_protocols TLSv1.2 TLSv1.3;

    # Включить 0-RTT TLSv1.3. Используйте $ssl_early_data при обратном проксировании, чтобы
    # предотвратить атаки повторного воспроизведения.
    #
    # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
    ssl_early_data on;

    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:50m;

    # OCSP Stapling ---
    # получать OCSP-записи из URL в ssl_certificate и кэшировать их
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    add_header X-Early-Data $tls1_3_early_data;

    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:3000;
    }
}

# Этот блок полезен для отладки TLS v1.3. Пожалуйста, не стесняйтесь удалять это
# и использовать переменную `$ssl_early_data`, предоставленную NGINX напрямую, если вы
# хотите это сделать.
map $ssl_early_data $tls1_3_early_data {
  "~." $ssl_early_data;
  default "";
}

Замените корневую директорию в приведенном выше файле на директорию на вашем сервере.

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Откройте файл /etc/nginx/nginx.conf для редактирования.

$ sudo nano /etc/nginx/nginx.conf

Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Проверьте вашу конфигурацию Nginx.

$ sudo nginx -t

Если вы не видите ошибок, значит, вы готовы к работе.

Запустите службу Wiki.js.

$ sudo systemctl start wikijs

Перезагрузите сервер Nginx.

$ sudo systemctl reload nginx

Шаг 11 - Завершение установки

Посетите URL https://wiki.example.com, чтобы завершить установку.

Страница настройки Wiki.js

Заполните данные своей учетной записи администратора и URL. Отключите телеметрию, сняв флажок с опции Разрешить телеметрию. Вы также можете отключить ее из панели администратора. Нажмите кнопку Установить, чтобы продолжить.

Вы будете перенаправлены на страницу входа.

Страница входа Wiki.js

Введите данные своей учетной записи и нажмите кнопку Войти, чтобы перейти на страницу администрирования.

Страница администрирования Wiki.js

Теперь вы можете начать использовать Wiki.js.

Заключение

На этом наше руководство завершено, в котором вы узнали, как установить Wiki.js на сервер Ubuntu 22.04. Если у вас есть какие-либо вопросы, оставьте их в комментариях ниже.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.