8.2.17 Встановлення Outline Wiki

The Host Banner Outline wiki

Outline — це сучасна Wiki-платформа з відкритим вихідним кодом, зручним редактором та підтримкою командної роботи. Вона ідеально підходить командам, яким потрібна власна внутрішня Wiki без залежності від сторонніх SaaS-сервісів. Завдяки Docker Compose ви зможете розгорнути Outline, PostgreSQL та Redis в ізольованому середовищі за лічені хвилини.

Переваги

  • Швидке розгортання без складного налаштування оточення
  • Ізоляція сервісів і легке масштабування
  • Повний контроль над документацією вашої команди

Підготовка сервера

Вимоги

Змінні, які потрібно замінити

  • SECRET_KEY — 32-символьний випадковий HEX-ключ, який ви згенерували командою openssl rand -hex 32; підставляється у змінну SECRET_KEY
  • UTILS_SECRET — другий 32-символьний HEX-ключ для змінної UTILS_SECRET
  • YOUR_DOMAIN — доменне ім’я вашого сайту; використовується у змінній URL, директиві server_name у конфігурації Nginx та під час виклику Certbot

Спершу створіть директорію проєкту та перейдіть у неї:

mkdir ~/outline && cd ~/outline

Згенеруйте надійні ключі для наступного кроку та збережіть їх:

openssl rand -hex 32  # для SECRET_KEY
openssl rand -hex 32  # для UTILS_SECRET

openssl_rand_-hex

Тепер створимо файл docker-compose.yml, у якому налаштуємо базові параметри сервісу:

version: '3'
services:
  outline:
    image: outlinewiki/outline
    environment:
      - DATABASE_URL=postgres://outline:outline@db:5432/outline
      - REDIS_URL=redis://redis:6379
      - SECRET_KEY=SECRET_KEY
      - UTILS_SECRET=UTILS_SECRET
      - URL=http://YOUR_DOMAIN
      - PGSSLMODE=disable
    ports:
      - "3000:3000"
    depends_on:
      - db
      - redis
    restart: always

  db:
    image: postgres:15
    environment:
      - POSTGRES_USER=outline
      - POSTGRES_PASSWORD=outline
      - POSTGRES_DB=outline
    volumes:
      - outline-db:/var/lib/postgresql/data
    restart: always

  redis:
    image: redis:7
    restart: always

volumes:
  outline-db:

Заміна домену: вкажіть свій домен або IP-адресу серверу замість YOUR_DOMAIN у змінній URL.

Запуск контейнерів

docker compose up -d

Перевірте, що всі сервіси запущені:

docker compose ps

Перевірка запуску контейнера Outline

Зверніть увагу: якщо статус outline залишається health: starting довше 1–2 хвилин, перегляньте логи:

docker compose logs -f outline

Помилка The server does not support SSL connections — додайте PGSSLMODE=disable до змінних оточення.

Встановлення Nginx як зворотного проксі

Установіть Nginx:

sudo apt install -y nginx

installnginx

Створіть конфігурацію сайту:

sudo nano /etc/nginx/sites-available/outline
server {
    listen 80;
    server_name YOUR_DOMAIN;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $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;
    }
}

Активуйте сайт і перезапустіть Nginx:

sudo ln -s /etc/nginx/sites-available/outline /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

nginx-t

Для захисту з’єднання налаштуйте Let’s Encrypt через Certbot:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d YOUR_DOMAIN

Докладніше — у нашій інструкції.

Перевірка роботи

Перейдіть за адресою http://YOUR_DOMAIN (або https://, якщо налаштовано SSL) і виконайте інструкції на екрані для створення першого користувача.

Welcome interface

Поширені помилки
Помилка Причина Розв’язання
Error: connect ECONNREFUSED Redis або PostgreSQL не запущені Перевірте docker compose ps, перезапустіть: docker compose up -d
Invalid SECRET_KEY Ключ занадто короткий або відсутній Згенеруйте новий openssl rand -hex 32 і пересоздайте контейнер
Помилка 502 у Nginx Додаток не запущено або неправильний порт Переконайтесь, що outline працює на порту TCP 3000 і порт проброшено