Решил я повторить установку 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
В целом установка на этом закончена и можно переходить к настройке.




