Установка и базовая настройка Wiki Outline

Оцените статью

Решил я повторить установку Wiki Outline по мотивам «Вебинар «База знаний с AI: создаем корпоративную Wiki в облаке»«. На вебинаре мне в в принципе эта Wiki понравилась, но как говорится пока сам не попробуешь верить никому на слово нельзя.

Итак, пожалуй приступим к установке и настройке Wiki Outline. Исходить будем из того, что у нас уже есть Ubuntu 22.04.5 LTS и база данных Postgresql версии 18.

Обратите внимание, что мы будем устанавливать и настраивать Wiki Outline без использования Docker.

Подготовка окружения для Wiki Outline

Установка Nginx и Certbot

# apt-get install nginx python3-certbot python3-certbot-nginx

Установка Redis

# apt-get install redis-server

Настраиваем автозапуск и запускаем.

# systemctl enable redis-server.service
# systemctl start redis-server.service

Установка NodeJS и Yarn

Для работы требуется:

Установка NodeJS.

# curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
# apt install nodejs -y
# node -v
v22.22.0

Установка Yarn.

# corepack enable
# yarn set version stable
# yarn install

Проверка версии yarn.

# yarn --version
4.12.0

Установка и тестовый запуск Wiki Outline

Загружаем и распаковываем свежий релиз с GitHub.

# cd /tmp/
# wget https://github.com/outline/outline/archive/refs/tags/v1.5.0.zip
# mv ./outline-1.5.0/ /opt/outline

Подготовка к сборке.

# useradd outline
# chown -R outline:outline /opt/outline
# mkdir /home/outline/
# chown -R outline:outline /home/outline/
# su outline -s /bin/bash
$ cd /opt/outline
$ cp ./.env.development ./.env.production

Настраиваем файл ./.env.production для работы в production-окружении.

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

NODE_ENV=production
URL=http://127.0.0.1:3000
FORCE_HTTPS=false

SECRET_KEY=xxxKEYxxx
UTILS_SECRET=xxxKEYxxx

DATABASE_URL=postgres://xxxUSERxxx:xxxPASSWORDxxx@127.0.0.1:5432/outline_db
REDIS_URL=redis://127.0.0.1:6379

SMTP_FROM_EMAIL=hello@example.com

# Enable unsafe-inline in script-src CSP directive
# Setting it to true allows React dev tools add-on in Firefox to successfully detect the project
DEVELOPMENT_UNSAFE_INLINE_CSP=false

# Increase the log level to debug for development
LOG_LEVEL=error

Сборка.

$ NODE_ENV=production && yarn install --immutable
$ NODE_ENV=production && yarn build

Тестовый запуск.

$ export PGSSLMODE=disable
# yarn start

Миграции на базу данных применятся автоматически.

Подготовка домена и reverse-прокси для Wiki Outline

Настройка Nginx

Создаем DNS-запись (у вашего провайдера) и получаем сертификат Let’s encrypt.

# certbot certonly --nginx -d outline.interlan.xyz

Создаем конфигурацию reverse-proxy для nginx.

map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}

server {
    listen 80;
    server_name www.outline.interlan.xyz outline.interlan.xyz;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443      ssl http2;

    server_name www.outline.interlan.xyz outline.interlan.xyz;

    access_log  /var/log/nginx/outline.interlan.xyz-access.log;
    error_log  /var/log/nginx/outline.interlan.xyz-error.log warn;

    ssl_certificate /etc/letsencrypt/live/outline.interlan.xyz/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/outline.interlan.xyz/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;

    client_max_body_size 64M;
    fastcgi_buffers 64 4K;

    proxy_connect_timeout 600;
    proxy_send_timeout 600;
    proxy_read_timeout 600;
    send_timeout 600;

    gzip on;
    gzip_vary on;
    gzip_comp_level 4;
    gzip_min_length 256;
    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
    gzip_types application/atom+xml application/javascript;

    if ($host ~ ^www\.(?<domain>.+)$) {
      return  301 $scheme://$domain$request_uri;
    }

    location / {

      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $connection_upgrade;

      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-Server $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Scheme $scheme;
      proxy_pass http://127.0.0.1:3000;
    }

}

В файле конфигурации изменяем параметры на реальные:

URL=http://127.0.0.1:3000
FORCE_HTTPS=false

Пробуем подключиться по реальному имени и если все работает корректно, то мы увидим приветствие.

Настройка SystemD

Файл сервиса /lib/systemd/system/outline.service.

[Unit]
Description=Wiki Outline
After=syslog.target

[Service]
WorkingDirectory=/opt/outline
User=outline

Environment="PGSSLMODE=disable"

ExecStart=/usr/bin/yarn start

[Install]
WantedBy=multi-user.target

Активируем, запускаем.

# systemctl enable outline
# systemctl start outline

В целом установка на этом закончена и можно переходить к настройке.

Related Posts

Snap, AppImage и Flatpak: отличия и практическое использование

Помимо стандартных пакетов в Linux так-же существуют дополнительные возможности для распространения приложений без использования системного пакетного менеджера. Эти три решения (Snap, AppImage и Flatpak) решают одну задачу, а именно распространение…

Вебинар «База знаний с AI: создаем корпоративную Wiki в облаке»

Поделюсь пожалуй материалами с вебинара «База знаний с AI: создаем корпоративную Wiki в облаке». Вебинар мне показался очень интересным и есть чему поучиться, тем более, что сейчас про AI только…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

You Missed

Установка и базовая настройка Wiki Outline

Установка и базовая настройка Wiki Outline

Snap, AppImage и Flatpak: отличия и практическое использование

Snap, AppImage и Flatpak: отличия и практическое использование

Вебинар «База знаний с AI: создаем корпоративную Wiki в облаке»

Вебинар «База знаний с AI: создаем корпоративную Wiki в облаке»

Маршрутизация DNS-запросов в Mikrotik

Маршрутизация DNS-запросов в Mikrotik

Настройка маршрутизации в сеть VipNet

Настройка маршрутизации в сеть VipNet
Курс «Погружение в PostgreSQL» от Selectel