MAATRIX / Блог / Как установить и настроить Outline на VPS

Как установить и настроить Outline на VPS

MAATRIX

Когда команда разрослась, а знания разбросаны по гуглдокам, чатам и головах сотрудников, встаёт вопрос базы знаний. Notion — удобный вариант, но это подписка в валюте, данные на чужих серверах и лимиты бесплатного тарифа, которые быстро упираются в реальность растущей команды. Outline — открытая вики с быстрым поиском, Markdown-редактором и структурой разделов почти один в один как в Notion, только развёрнутая на вашем VPS и под вашим контролем.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что такое Outline и когда он нужен вместо Notion

Outline — это self-hosted база знаний с редактором в стиле блок-документов: заголовки, чек-листы, таблицы, вложенные страницы, вставка кода с подсветкой синтаксиса. По UX он ближе всего к Notion, но заточен именно под документацию и вики, а не под универсальный конструктор баз данных — отсюда более быстрый и предсказуемый интерфейс.

Из практических отличий от облачного Notion:

  • полнотекстовый поиск по всей базе работает мгновенно даже на нескольких тысячах документов, потому что не упирается в лимиты бесплатного плана;
  • есть версионирование документов и история правок с возможностью откатить конкретную страницу;
  • документы организуются в «коллекции» (аналог workspace-разделов) с собственными правами доступа на уровне команды или отдельных пользователей;
  • есть API и вебхуки — можно завести бота, который постит в Slack при публикации новой страницы, или синхронизировать документы с внешней системой.

Важная оговорка по лицензии: код Outline распространяется по Business Source License (BSL) — разворачивать и использовать для своей команды можно свободно, но нельзя предлагать как конкурирующий SaaS-сервис третьим лицам. Для внутренней корпоративной вики это ограничение не имеет значения.

Из минусов: Outline требует чуть больше возни при установке, чем «скачал и запустил» — нужны PostgreSQL, Redis и обязательно OAuth-провайдер для входа (о нём ниже), плюс собственный домен с HTTPS. Если вам нужна база знаний на 5 минут без настройки — это не тот инструмент. Если нужна серьёзная корпоративная вики на годы — вложенные 20-30 минут окупаются полным контролем над данными.

Требования к серверу и подготовка VPS

Outline — не тяжёлое приложение, но вместе с зависимостями (PostgreSQL, Redis) ему нужен более комфортный VPS, чем для одиночного статического сайта.

Минимальная конфигурация для команды до 20-30 человек:

  • 2 vCPU, 4 ГБ RAM — с запасом под PostgreSQL и Redis, которые тоже просят память;
  • 20-30 ГБ SSD — сама вики лёгкая, место съедают вложения и бэкапы базы;
  • Ubuntu 24.04 LTS или Debian 12 — ниже примеры для обеих систем, отличий в командах почти нет;
  • домен или поддомен, направленный на IP сервера, например wiki.example.com — без HTTPS Outline не откроется корректно, часть функций (в частности, OAuth-редиректы) требует именно https-адрес.

Перед установкой обновите систему и заведите пользователя без root-прав для управления Docker-стеком:

apt update && apt upgrade -y
adduser deploy
usermod -aG sudo deploy

Если Docker ещё не стоит, порядок установки для Ubuntu и Debian с нуля описан в статье установка Docker с нуля — Outline мы будем поднимать именно через Docker Compose, это официально поддерживаемый и самый предсказуемый способ.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

PostgreSQL, Redis и хранилище файлов

Outline — приложение на Node.js, которому для работы нужны две внешние системы: PostgreSQL как основное хранилище данных (документы, пользователи, права доступа) и Redis для очередей задач и кэша сессий. Оба сервиса можно поднять в том же docker-compose стеке, что и саму вики, — это самый простой вариант для команды до сотни человек.

Если вы уже держите PostgreSQL на сервере под другие проекты, логичнее развернуть отдельный инстанс осознанно — общий подход к установке и тюнингу разобран в статье установка и настройка PostgreSQL на VPS. Для вики хватит выделенной базы outline с отдельным пользователем — не стоит смешивать её с продакшен-БД других приложений.

Отдельный вопрос — куда складывать вложения (картинки, PDF, файлы, которые прикрепляют к документам). У Outline два режима:

  • локальное хранилище — файлы лежат прямо на диске VPS в volume контейнера, просто для старта, но неудобно масштабировать и бэкапить отдельно от базы;
  • S3-совместимое хранилище — рекомендуемый вариант для продакшена, вложения хранятся отдельно от базы и не раздувают бэкап PostgreSQL.

Поднять свой S3-совместимый бэкенд можно тем же вечером — разбор установки есть в статье установка и настройка MinIO на VPS. Для вики с активным использованием вложений это оправданная инвестиция: бэкап базы данных остаётся лёгким, а файлы бэкапятся отдельно и по своему расписанию.

Установка Outline через Docker Compose

Создайте директорию проекта и сгенерируйте два обязательных секретных ключа — SECRET_KEY и UTILS_SECRET, оба должны быть уникальными 32-байтными hex-строками:

mkdir -p /opt/outline && cd /opt/outline
echo "SECRET_KEY=$(openssl rand -hex 32)" >> .env
echo "UTILS_SECRET=$(openssl rand -hex 32)" >> .env
echo "POSTGRES_PASSWORD=$(openssl rand -base64 24)" >> .env
chmod 600 .env

Файл docker-compose.yml:

# /opt/outline/docker-compose.yml
services:
  outline:
    image: outlinewiki/outline:latest
    container_name: outline
    restart: unless-stopped
    env_file: .env
    ports:
      - "127.0.0.1:3000:3000"
    depends_on:
      - postgres
      - redis
    volumes:
      - ./data:/var/lib/outline/data

  redis:
    image: redis:7-alpine
    container_name: outline-redis
    restart: unless-stopped
    volumes:
      - ./redis-data:/data

  postgres:
    image: postgres:16-alpine
    container_name: outline-postgres
    restart: unless-stopped
    environment:
      POSTGRES_USER: outline
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: outline
    volumes:
      - ./pg-data:/var/lib/postgresql/data

В .env добавьте оставшиеся обязательные переменные — публичный URL, строки подключения к базе и Redis:

cat >> .env <<'EOF'
NODE_ENV=production
URL=https://wiki.example.com
PORT=3000
FORCE_HTTPS=true
DATABASE_URL=postgres://outline:${POSTGRES_PASSWORD}@postgres:5432/outline
REDIS_URL=redis://redis:6379
FILE_STORAGE=local
FILE_STORAGE_UPLOAD_MAX_SIZE=26214400
EOF

Замените wiki.example.com на свой домен. Если решили хранить вложения в MinIO, замените блок FILE_STORAGE на S3-переменные (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_S3_UPLOAD_BUCKET_URL, AWS_S3_UPLOAD_BUCKET_NAME, AWS_S3_FORCE_PATH_STYLE=true для MinIO) — сервис поднимается по инструкции из предыдущего раздела.

Запуск:

docker compose up -d
docker compose logs -f outline

При первом старте контейнер сам прогонит миграции базы. Если в логах видно Started on port 3000 без ошибок подключения к Postgres или Redis — можно переходить к настройке входа.

OAuth-авторизация: Google, Slack или OIDC

Важный нюанс, который часто ловят на старте: Outline не поддерживает обычный вход по логину и паролю — только через внешний OAuth/OIDC-провайдер. Это осознанное решение разработчиков ради безопасности, но перед первым запуском провайдер нужно завести заранее, иначе войти в свежую вики будет просто некому.

Самый быстрый вариант для небольшой команды — Google OAuth:

  1. Зайдите в Google Cloud Console → «APIs & Services» → «Credentials» → «Create OAuth client ID», тип «Web application».
  2. В «Authorized redirect URIs» укажите https://wiki.example.com/auth/google.callback.
  3. Полученные Client ID и Client Secret добавьте в .env:
cat >> .env <<'EOF'
GOOGLE_CLIENT_ID=ваш-client-id
GOOGLE_CLIENT_SECRET=ваш-client-secret
EOF

Для команд на Slack аналогично работает Slack OAuth (SLACK_CLIENT_ID/SLACK_CLIENT_SECRET), а для корпоративных инсталляций с уже существующим SSO (Keycloak, Authentik, Azure AD) — универсальный OIDC-провайдер через переменные OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, OIDC_AUTH_URI, OIDC_TOKEN_URI, OIDC_USERINFO_URI. После добавления переменных перезапустите стек:

docker compose up -d --force-recreate outline

Первый пользователь, который войдёт через настроенный провайдер, автоматически получает права администратора рабочего пространства.

Домен, TLS и первый запуск

Outline слушает на 127.0.0.1:3000 внутри VPS, наружу его отдаёт реверс-прокси с TLS-сертификатом. Проще всего это сделать через Caddy — он сам получит и продлит сертификат Let's Encrypt, подробности установки в статье установка и настройка Caddy с авто-SSL на VPS.

Минимальный Caddyfile:

wiki.example.com {
    reverse_proxy 127.0.0.1:3000
}

Перезапустите Caddy — сертификат выпустится автоматически при первом обращении к домену. Откройте https://wiki.example.com, нажмите кнопку входа через настроенный OAuth-провайдер — вы окажетесь на пустой странице рабочего пространства с предложением создать первую коллекцию документов.

Что стоит настроить сразу после входа:

  • название рабочего пространства и логотип в настройках — они попадут в письма-приглашения;
  • SMTP для отправки уведомлений и приглашений — без него новые участники не получат письмо со ссылкой на вход;
  • права коллекций — по умолчанию всё видно всей команде, для чувствительных разделов (HR, финансы) стоит сразу ограничить доступ.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Можно ли войти в Outline по обычному паролю, без Google или Slack?

Нет, в актуальных версиях стандартный вход отключён из соображений безопасности — нужен хотя бы один OAuth/OIDC-провайдер, настроенный до первого входа.

Сколько ресурсов нужно для команды в 100+ человек?

Точных цифр без вашей нагрузки не даст никто — ориентируйтесь на 4 vCPU/8 ГБ RAM как стартовую точку и следите за потреблением PostgreSQL, он обычно первым упирается в память при активном поиске по большой базе.

Как перенести существующие документы из Notion?

В Outline есть встроенный импорт из Notion-экспорта (архив HTML/Markdown) через меню настроек — структура вложенных страниц переносится, но проверьте вручную сложные блоки (базы данных, встроенные таблицы), они конвертируются не всегда идеально.

Обязательно ли выносить файлы в S3, если вложений мало?

Нет, локальное хранилище (FILE_STORAGE=local) подходит для старта и небольших команд — просто не забывайте включать папку data в бэкап вместе с базой.

Как обновлять Outline без потери данных?

Перед обновлением сделайте дамп PostgreSQL (docker compose exec postgres pg_dump -U outline outline > backup.sql), затем смените тег образа в compose-файле и выполните docker compose pull && docker compose up -d — миграции применятся автоматически при старте.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →