Решил я повторить установку Wiki Outline по мотивам «Вебинар «База знаний с AI: создаем корпоративную Wiki в облаке»». На вебинаре мне в принципе эта Wiki понравилась, но, как говорится, пока сам не попробуешь — верить никому на слово нельзя.
Итак, пожалуй, приступим к установке и настройке Wiki Outline. Исходить будем из того, что у нас уже есть Ubuntu 22.04.5 LTS и база данных PostgreSQL (в примере используется версия 18, но подойдёт и более свежая). Обратите внимание, что мы будем устанавливать и настраивать Wiki Outline без использования Docker — это даёт больше контроля над окружением и может быть полезно для тех, кто предпочитает классическую установку.
Что такое Wiki Outline?
Wiki Outline — это современная, быстрая и красивая система для создания корпоративных баз знаний. Она поддерживает Markdown, совместное редактирование в реальном времени, интеграцию с AI (например, для генерации текста), а также имеет удобный поиск и систему разрешений. Outline идеально подходит для команд, которые хотят хранить документацию, инструкции, заметки и другую информацию в одном месте.
Подготовка окружения для Wiki Outline
Прежде чем приступить к установке самого Outline, необходимо подготовить сервер: установить веб-сервер, базу данных, кэш и необходимые инструменты разработки. Каждый из этих компонентов играет свою роль в работе приложения.
Установка Nginx и Certbot
Nginx будет выступать в роли reverse-proxy — он будет принимать запросы от пользователей по протоколу HTTPS и перенаправлять их к нашему приложению Outline, которое работает на локальном порту 3000. Certbot — это клиент для автоматического получения и обновления SSL-сертификатов от Let’s Encrypt.
# apt-get install nginx python3-certbot python3-certbot-nginx
Установка Redis
Redis — это высокопроизводительное хранилище данных в памяти, которое Outline использует для кэширования сессий, очередей задач и временных данных. Без Redis приложение будет работать медленнее и может терять данные при перезапуске.
# apt-get install redis-server
Настроим автозапуск и запустим Redis:
# systemctl enable redis-server.service
# systemctl start redis-server.service
Настраиваем лимиты по памяти для Redis. Редактируем конфиг Redis:
# nano /etc/redis/redis.conf
Найдите параметр maxmemory. Установите лимит, чтобы Redis не съел всю память сервера (например, 64 МБ или 128 МБ):
maxmemory 64mb
Выберите политику вытеснения (eviction policy). Для кэширования в нашем случае лучше всего подходит allkeys-lru:
maxmemory-policy allkeys-lru
Это значит: когда память кончится, Redis удалит наименее используемые ключи.
Перезапустите Redis:
# systemctl restart redis-server
Установка Node.js и Yarn
Outline написан на JavaScript (Node.js), поэтому нам понадобится среда выполнения Node.js и менеджер пакетов Yarn для сборки проекта. Рекомендуемые версии: Node.js 20 или 22, Yarn >= 4.
Установка Node.js (версия 22):
# curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
# apt install nodejs -y
# node -v
Установка Yarn (через corepack):
# corepack enable
# yarn set version stable
# yarn install
Проверка версии Yarn:
# yarn --version
Установка и тестовый запуск Wiki Outline
Теперь, когда все зависимости готовы, можно загрузить исходный код Outline и подготовить его к работе.
Загрузка и распаковка
Скачаем последний стабильный релиз с GitHub (на момент написания это v1.10.0) и распакуем его:
# cd /tmp/
# wget https://github.com/outline/outline/archive/refs/tags/v1.10.0.tar.gz
# tar -xvf ./v1.10.0.tar.gz
# mv ./outline-1.10.0/ /opt/outline
Подготовка к сборке
Создадим пользователя 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
Скопируем файл окружения для разработки в production-конфигурацию:
$ cp ./.env.development ./.env.production
Настройка окружения
Отредактируем файл .env.production — это основной конфигурационный файл Outline. В нём нужно указать параметры подключения к базе данных, Redis, почтовому серверу и другие настройки. Пример минимальной конфигурации:
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
DEVELOPMENT_UNSAFE_INLINE_CSP=false
LOG_LEVEL=error
Пояснения:
— SECRET_KEY и UTILS_SECRET — секретные ключи, сгенерируйте их случайным образом (например, с помощью openssl rand -hex 32).
— DATABASE_URL — строка подключения к PostgreSQL. Замените xxxUSERxxx, xxxPASSWORDxxx и outline_db на свои данные.
— REDIS_URL — адрес Redis (по умолчанию локальный).
— SMTP_FROM_EMAIL — email, от которого будут отправляться письма (например, для приглашений). Можно временно оставить заглушку.
Сборка проекта
Теперь установим зависимости и соберём production-версию:
$ NODE_ENV=production && yarn install --immutable
$ NON_INTERACTIVE=1 NODE_ENV=production && yarn build
Примечание: Флаг —immutable гарантирует, что версии зависимостей будут взяты из lock-файла, что обеспечивает воспроизводимость сборки.
Тестовый запуск
Перед тем как настраивать systemd, проверим, что всё работает. Установим переменную окружения для PostgreSQL и запустим приложение:
$ export PGSSLMODE=disable
$ NODE_ENV=production yarn start
Миграции базы данных применятся автоматически при первом запуске. Если всё прошло успешно, вы увидите в консоли сообщение о том, что сервер слушает порт 3000.
Подготовка домена и reverse-proxy для Wiki Outline
Чтобы приложение было доступно по красивому домену и через защищённое соединение, настроим Nginx как reverse-proxy и получим SSL-сертификат.
Получение SSL-сертификата
Сначала создайте DNS-запись типа A, указывающую на IP вашего сервера (у вашего DNS-провайдера). Затем выполните команду для получения сертификата:
# certbot certonly --nginx -d outline.interlan.xyz
Замените outline.interlan.xyz на ваш реальный домен.
Конфигурация Nginx
Создадим файл конфигурации для нашего домена, например /etc/nginx/sites-available/outline:
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;
}
}
Важно: В файле .env.production нужно изменить параметры URL и FORCE_HTTPS на реальные:
URL=https://outline.interlan.xyz
FORCE_HTTPS=true
После этого перезапустите Nginx:
# ln -s /etc/nginx/sites-available/outline /etc/nginx/sites-enabled/
# nginx -t
# systemctl reload nginx
Теперь откройте браузер и перейдите по адресу https://outline.interlan.xyz. Если всё настроено правильно, вы увидите приветственную страницу Outline.
Настройка SystemD
Чтобы Outline автоматически запускался при старте системы и работал как служба, создадим unit-файл 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
Проверьте статус:
# systemctl status outline
Если всё в порядке, служба будет работать и автоматически запускаться после перезагрузки сервера.
Заключение
На этом установка Wiki Outline завершена. Вы можете переходить к настройке: создавать учётные записи, настраивать интеграции, добавлять коллекции и наполнять базу знаний. Outline предоставляет множество возможностей, включая поддержку Markdown, вложения, поиск по тексту и даже AI-помощника.
Если у вас возникли вопросы или вы столкнулись с ошибками, проверьте логи службы (journalctl -u outline) и убедитесь, что все переменные окружения указаны верно. Удачи в создании вашей корпоративной вики!




