bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward
eco Початковий Туторіал

Встановлення та налаштування Outline

calendar_month Aug 19, 2026 schedule 20 хв. читання visibility 67 переглядів
Установка и настройка Outline Wiki на VPS
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Встановлення та Налаштування Outline Wiki на VPS: Повний Гайд для Експертів

TL;DR

У цьому докладному посібнику ми крок за кроком налаштуємо Outline Wiki — сучасну, зручну та самохостингову базу знань — на вашому віртуальному приватному сервері (VPS). Ви дізнаєтеся, як підготувати сервер, встановити всі необхідні компоненти (Docker, PostgreSQL, Redis), розгорнути Outline, забезпечити його безпеку за допомогою HTTPS через Caddy, а також налаштувати резервне копіювання та обслуговування. До кінця гайду у вас буде повністю функціонуюча та захищена вікі для вашої команди або особистих потреб.

  • Повне встановлення Outline Wiki з використанням Docker Compose.
  • Налаштування безпечного доступу через HTTPS з автоматичними сертифікатами Caddy.
  • Оптимальні вимоги до VPS та вибір провайдера.
  • Базовий захист сервера з Fail2ban та UFW.
  • Налаштування автоматичного резервного копіювання даних Outline.
  • Поради щодо усунення несправностей та обслуговування системи.

Що ми налаштовуємо і навіщо

Схема: Что мы настраиваем и зачем
Схема: Що ми налаштовуємо і навіщо

Ми будемо встановлювати та налаштовувати Outline Wiki — відкриту, сучасну та інтуїтивно зрозумілу базу знань, призначену для командної роботи. Outline позиціонується як альтернатива Notion, Confluence або Google Docs, але з акцентом на самохостинг та повний контроль над даними. Це ідеальне рішення для розробників, стартапів та невеликих команд, яким потрібна централізована платформа для документації, нотаток, протоколів нарад та обміну знаннями.

У підсумку ви отримаєте повністю функціональну вікі, доступну за власним доменним ім'ям, де ваша команда зможе спільно створювати, редагувати та організовувати інформацію. Outline Wiki пропонує чистий користувацький інтерфейс, підтримку Markdown, інтеграцію зі Slack (або іншими месенджерами), а також потужний пошук, що робить її чудовим інструментом для підвищення продуктивності та збереження корпоративних знань.

На ринку існує безліч альтернатив, як хмарних (Notion, Confluence Cloud, Coda), так і самохостингових (Wiki.js, BookStack, DokuWiki). Хмарні рішення зручні тим, що не вимагають налаштування та обслуговування сервера, але ви прив'язані до провайдера, його цінової політики та політики безпеки даних. Самохостингові рішення, такі як Outline на VPS, дають вам повний контроль над вашими даними, безпекою та продуктивністю. Це особливо важливо для проєктів, де конфіденційність інформації критична, або для команд, які хочуть уникнути щомісячних платежів за SaaS-сервіси. Ви самостійно керуєте інфраструктурою, що вимагає певних технічних знань, але дає максимальну гнучкість та незалежність.

Який VPS-конфіг потрібен під це завдання

Схема: Какой VPS-конфиг нужен под эту задачу
Схема: Який VPS-конфіг потрібен під це завдання

Вибір відповідного VPS для Outline Wiki залежить від передбачуваного навантаження, кількості користувачів та обсягу збережених даних. Outline — досить ресурсоємний застосунок, особливо якщо у вас багато користувачів та активно використовуються пошукові індекси.

Мінімальні вимоги

  • Процесор (CPU): 1-2 ядра. Для невеликих команд (до 5-10 активних користувачів) одного ядра буде достатньо. При активній роботі та більшій кількості користувачів рекомендується 2 ядра.
  • Оперативна пам'ять (RAM): Мінімум 2 ГБ. Outline, PostgreSQL та Redis разом споживають значний обсяг RAM. 2 ГБ — це абсолютний мінімум, 4 ГБ — комфортний старт для невеликої команди.
  • Диск (SSD): 20-40 ГБ SSD. SSD критичний для продуктивності бази даних та швидкого доступу до файлів. 20 ГБ вистачить для системи та початкового обсягу даних, але зі зростанням контенту знадобиться більше. Рекомендується 40 ГБ для запасу.
  • Мережа: 100 Мбіт/с або 1 Гбіт/с. Стабільний канал з достатньою пропускною здатністю важливий для швидкого завантаження сторінок та обміну даними.

Конкретний VPS-план під завдання

Для більшості невеликих та середніх команд (до 20-30 активних користувачів) оптимальним буде VPS з такими характеристиками:

  • 2x vCPU
  • 4 ГБ RAM
  • 50-80 ГБ NVMe/SSD диска
  • 100 Мбіт/с - 1 Гбіт/с мережевий порт

Знайти VPS із зазначеними характеристиками не складе труднощів у більшості провайдерів. Важливо обирати надійного постачальника з хорошою репутацією та підтримкою.

Коли потрібен dedicated, а не VPS

Dedicated сервер може знадобитися в кількох випадках:

  • Дуже велика команда: Якщо у вас сотні або тисячі активних користувачів, і Outline стає центральним сховищем знань для всієї компанії.
  • Високе навантаження: Інтенсивне використання, часті пошукові запити, великий обсяг прикріплених файлів та зображень.
  • Інтеграція з іншими сервісами: Якщо Outline буде частиною більшої інфраструктури з безліччю залежностей та високою потребою в ресурсах.
  • Вимоги до безпеки та ізоляції: Dedicated сервер забезпечує повну ізоляцію від "сусідів" по залізу, що може бути критично для певних видів даних.

У більшості випадків для Outline Wiki VPS буде більш ніж достатньо та економічно вигідніше.

Локація: на що впливає

Вибір локації сервера впливає на кілька факторів:

  • Затримка (Latency): Чим ближче сервер до основних користувачів, тим менша затримка та швидша відповідь застосунку. Якщо ваша команда розподілена по різних континентах, оберіть локацію, яка буде оптимальною для більшості користувачів.
  • Законодавство: Розташування сервера визначає, під юрисдикцію якої країни підпадають ваші дані. Це може бути критично для дотримання GDPR, HIPAA або інших регуляцій.
  • Вартість: Ціни на VPS можуть незначно відрізнятися залежно від локації.

Зазвичай рекомендується обирати локацію, яка географічно близька до більшості ваших користувачів, щоб забезпечити найкращий користувацький досвід.

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

Схема: Подготовка сервера
Схема: Підготовка сервера

Перед встановленням Outline Wiki необхідно виконати базове налаштування свіжого VPS, щоб забезпечити безпеку та підготувати середовище для подальшого розгортання. Ми будемо використовувати Ubuntu Server 24.04 LTS.

1. Підключення по SSH

Підключіться до вашого сервера як користувач root, використовуючи IP-адресу, надану вашим провайдером:


ssh root@ВАШ_IP_АДРЕС

Якщо ви використовуєте пароль, введіть його. Настійно рекомендується використовувати SSH-ключі для більшої безпеки.

2. Оновлення системи

Оновіть список пакетів та встановлені пакети до актуальних версій:


sudo apt update && sudo apt upgrade -y

Це гарантує, що у вас будуть останні виправлення безпеки та стабільні версії всіх системних компонентів.

3. Створення нового користувача з правами sudo

Працювати під root небезпечно. Створимо нового користувача та надамо йому права sudo.


adduser outlineadmin

Дотримуйтесь інструкцій, щоб задати пароль та інформацію про користувача. Потім додайте користувача до групи sudo:


usermod -aG sudo outlineadmin

Тепер ви можете переключитися на нового користувача:


su - outlineadmin

Надалі всі команди, що вимагають прав суперкористувача, будуть виконуватися з префіксом sudo.

4. Налаштування SSH-ключів для нового користувача

Якщо ви ще не використовуєте SSH-ключі, створіть їх на своїй локальній машині (якщо у вас їх немає):


ssh-keygen -t rsa -b 4096 -C "[email protected]"

Потім скопіюйте публічний ключ на сервер для нового користувача outlineadmin:


ssh-copy-id outlineadmin@ВАШ_IP_АДРЕС

Тепер ви можете увійти без пароля. Після перевірки рекомендується відключити вхід за паролем для root та для всіх користувачів у файлі /etc/ssh/sshd_config. Знайдіть рядки:


sudo nano /etc/ssh/sshd_config

PermitRootLogin no
PasswordAuthentication no

Збережіть зміни (Ctrl+O, Enter) та вийдіть (Ctrl+X). Перезапустіть службу SSH:


sudo systemctl restart sshd

Обов'язково перевірте, що ви можете увійти за SSH-ключем, перш ніж закривати поточну сесію.

5. Налаштування брандмауера (UFW)

UFW (Uncomplicated Firewall) — це зручна утиліта для керування iptables. За замовчуванням він вимкнений.


sudo apt install ufw -y # Встановлення UFW, якщо не встановлено
sudo ufw allow OpenSSH # Дозволяємо SSH, щоб не втратити доступ
sudo ufw allow http    # Дозволяємо HTTP (порт 80)
sudo ufw allow https   # Дозволяємо HTTPS (порт 443)
sudo ufw enable        # Вмикаємо брандмауер
sudo ufw status verbose # Перевіряємо статус

Вам буде запропоновано підтвердити увімкнення UFW. Введіть y. Тепер ваш сервер захищений від небажаного трафіку, крім SSH, HTTP та HTTPS.

6. Встановлення Fail2ban

Fail2ban сканує логи та автоматично блокує IP-адреси, що показують ознаки шкідливих атак (наприклад, багаторазові невдалі спроби входу по SSH).


sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Створіть файл конфігурації для Fail2ban:


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

У файлі jail.local можна налаштувати параметри. Переконайтеся, що секція [sshd] активна (enabled = true) і, за бажанням, змініть bantime (час блокування) та maxretry (кількість спроб).


[DEFAULT]
bantime = 10m
findtime = 10m
maxretry = 5

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Збережіть зміни та перезапустіть Fail2ban:


sudo systemctl restart fail2ban
sudo fail2ban-client status # Перевірте статус
sudo fail2ban-client status sshd # Перевірте статус для SSH

Тепер ваш сервер має базовий захист від brute-force атак.

Встановлення ПЗ — покроково

Схема: Встановлення ПЗ — покроково
Схема: Встановлення ПЗ — покроково

Outline Wiki найкраще розгортати з використанням Docker та Docker Compose. Це забезпечує ізоляцію компонентів, спрощує керування залежностями та оновлення.

1. Встановлення Docker Engine (версія 26.x на 2026 рік)

Спочатку видаліть старі версії Docker, якщо вони є:


for pkg in docker.io docker-doc docker-compose docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; do sudo apt remove $pkg; done

Встановіть необхідні пакети для встановлення Docker через репозиторій:


sudo apt update
sudo apt install ca-certificates curl gnupg -y

Додайте офіційний GPG ключ Docker:


sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Додайте репозиторій Docker до APT джерел:


echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Оновіть список пакетів та встановіть Docker Engine, Docker CLI та Containerd:


sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Додайте вашого користувача до групи docker, щоб не використовувати sudo для кожної команди Docker:


sudo usermod -aG docker $USER
newgrp docker # Застосуйте зміни групи негайно

Перевірте встановлення Docker:


docker run hello-world # Запустіть тестовий контейнер

Вивід має підтвердити успішне встановлення.

2. Встановлення Docker Compose (версія 2.24.x на 2026 рік)

Docker Compose зазвичай встановлюється разом з Docker Engine як docker-compose-plugin. Перевіримо його версію:


docker compose version # Перевірка версії Docker Compose

Якщо команда docker compose не працює, можливо, у вас стара інсталяція Docker або плагін не встановився. У такому випадку встановіть його вручну:


sudo apt install docker-compose-plugin -y

3. Створення директорії для Outline Wiki

Створіть директорію, де зберігатимуться всі файли конфігурації Outline:


mkdir -p ~/outline
cd ~/outline

4. Налаштування файлу Docker Compose

Outline вимагає декілька сервісів: сам додаток Outline, PostgreSQL (база даних) та Redis (кеш/черги). Створіть файл docker-compose.yml:


nano docker-compose.yml

Вставте наступний вміст. Зверніть увагу на актуальні версії образів (PostgreSQL 16, Redis 7, Outline остання стабільна).


version: '3.8'

services:
  outline:
    image: outlines/outline:latest
    container_name: outline
    restart: always
    env_file:
      - ./.env
    ports:
      - "3000:3000" # Порт, на якому Outline слухає всередині контейнера
    depends_on:
      - postgres
      - redis
    volumes:
      - ./data/uploads:/opt/outline/public/uploads # Для завантажених файлів

  postgres:
    image: postgres:16-alpine
    container_name: outline_postgres
    restart: always
    env_file:
      - ./.env
    volumes:
      - ./data/postgres:/var/lib/postgresql/data # Постійне сховище для бази даних

  redis:
    image: redis:7-alpine
    container_name: outline_redis
    restart: always
    env_file:
      - ./.env
    volumes:
      - ./data/redis:/data # Постійне сховище для Redis (якщо використовується персистентність)

volumes:
  postgres:
  redis:
  uploads:

Збережіть файл (Ctrl+O, Enter) та вийдіть (Ctrl+X).

5. Створення файлу змінних середовища (.env)

Цей файл міститиме всі чутливі дані та конфігураційні параметри. Створіть його:


nano .env

Вставте наступний вміст. Обов'язково замініть YOUR_DOMAIN.COM на ваш реальний домен та згенеруйте надійні паролі та ключі.


# Налаштування програми Outline
URL=https://YOUR_DOMAIN.COM # Домен, на якому буде доступна Outline Wiki
PORT=3000
SECRET_KEY=ВАШ_СЕКРЕТНИЙ_КЛЮЧ_ДЛЯ_OUTLINE # Генерується випадковим рядком, наприклад, openssl rand -base64 32
DATABASE_URL=postgres://outline_user:ВАШ_ПАРОЛЬ_ДЛЯ_БД@postgres:5432/outline_db
REDIS_URL=redis://redis:6379

# Налаштування бази даних PostgreSQL
POSTGRES_USER=outline_user
POSTGRES_PASSWORD=ВАШ_ПАРОЛЬ_ДЛЯ_БД # Відрізняється від SECRET_KEY
POSTGRES_DB=outline_db

# Налаштування Redis (зазвичай не потребують змін, якщо Redis використовується лише для кешу)
REDIS_HOST=redis
REDIS_PORT=6379

# Конфігурація електронної пошти (для запрошень, скидання паролів тощо)
# Приклад для Mailgun, можна використовувати SendGrid, Postmark, AWS SES або SMTP
# MAIL_SERVICE_PROVIDER=mailgun
# MAIL_FROM_EMAIL=wiki@YOUR_DOMAIN.COM
# MAILGUN_API_KEY=mg-ваш-api-ключ
# MAILGUN_DOMAIN=mg.YOUR_DOMAIN.COM

# Або для SMTP (замініть на свої дані)
# SMTP_HOST=smtp.gmail.com
# SMTP_PORT=587
# [email protected]
# SMTP_PASSWORD=your_email_password
# SMTP_SECURE=false # true для SSL/TLS, false для STARTTLS

# Провайдери автентифікації (виберіть потрібні, решту закоментуйте)
# GOOGLE_CLIENT_ID=
# GOOGLE_CLIENT_SECRET=
# SLACK_CLIENT_ID=
# SLACK_CLIENT_SECRET=
# SLACK_SIGNING_SECRET=
# MICROSOFT_CLIENT_ID=
# MICROSOFT_CLIENT_SECRET=
# OIDC_CLIENT_ID=
# OIDC_CLIENT_SECRET=
# OIDC_AUTH_URL=
# OIDC_TOKEN_URL=
# OIDC_USERINFO_URL=
# OIDC_DISPLAY_NAME=
# OIDC_SCOPES=
# OIDC_USERNAME_CLAIM=
# OIDC_GROUPS_CLAIM=

Важливо:

  • SECRET_KEY: Генеруйте довгий випадковий рядок, наприклад, за допомогою openssl rand -base64 32.
  • POSTGRES_PASSWORD: Також згенеруйте надійний пароль.
  • URL: Вкажіть повний HTTPS URL вашого домену.
  • Налаштуйте секцію Email Configuration, щоб Outline міг надсилати запрошення та сповіщення.
  • Налаштуйте секції Authentication Providers, якщо плануєте використовувати Google, Slack, Microsoft або OIDC для входу. Для початку можна залишити їх закоментованими.

Збережіть файл (Ctrl+O, Enter) та вийдіть (Ctrl+X).

6. Запуск Outline Wiki

Тепер, коли все готово, запустіть Outline Wiki з Docker Compose:


docker compose up -d # Запустіть контейнери у фоновому режимі

Ця команда створить та запустить три контейнери: Outline, PostgreSQL та Redis. Процес може зайняти кілька хвилин, поки завантажуються образи та ініціалізується база даних.

Перевірте статус контейнерів:


docker compose ps

Усі контейнери повинні бути у стані running.

На цьому етапі Outline Wiki працює на порту 3000 вашого сервера. Однак він ще не доступний ззовні та не має HTTPS. Цим ми займемося в наступному розділі.

Конфігурація

Схема: Конфігурація
Схема: Конфігурація

Після встановлення компонентів необхідно налаштувати веб-сервер для проксіювання запитів до Outline та забезпечення HTTPS. Ми будемо використовувати Caddy — сучасний веб-сервер, який автоматично керує сертифікатами Let's Encrypt.

1. Встановлення Caddy (версія 2.7.x на 2026 рік)

Caddy можна встановити з офіційного репозиторію. Спочатку додайте GPG ключ:


sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list

Потім оновіть список пакетів та встановіть Caddy:


sudo apt update
sudo apt install caddy -y

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


sudo systemctl status caddy

Він має бути активним (active (running)).

2. Налаштування Caddyfile

Caddy використовує файл конфігурації під назвою Caddyfile. Ми налаштуємо його для роботи як зворотний проксі для Outline Wiki та автоматичного отримання HTTPS-сертифікатів.


sudo nano /etc/caddy/Caddyfile

Видаліть весь вміст файлу та вставте наступне, замінивши YOUR_DOMAIN.COM на ваш реальний домен:


YOUR_DOMAIN.COM {
  # Увімкнути автоматичні HTTPS-сертифікати від Let's Encrypt
  tls {
    dns cloudflare ВАШ_КЛЮЧ_API_CLOUDFLARE
    # Якщо ви не використовуєте Cloudflare DNS, просто використовуйте "tls [email protected]"
    # Caddy використовуватиме HTTP-01 челендж, який вимагає відкритого 80 порту.
    # Якщо 80 порт зайнятий, або ви за NAT, DNS-челендж кращий.
  }

  # Проксіювання запитів до Docker-контейнера Outline
  reverse_proxy localhost:3000 {
    # Додаткові заголовки, необхідні для Outline
    header_up Host {host}
    header_up X-Real-IP {remote_ip}
    header_up X-Forwarded-For {remote_ip}
    header_up X-Forwarded-Proto {scheme}
  }

  # Опціонально: стиснення для прискорення завантаження
  encode gzip zstd

  # Опціонально: логування
  log {
    output file /var/log/caddy/outline.log
  }
}

Важливо:

  • DNS-провайдер: Якщо ваш домен керується через Cloudflare (або інший DNS-провайдер, підтримуваний Caddy), ви можете використовувати DNS-челендж для отримання сертифікатів. Це зручно, якщо у вас складна мережева конфігурація або 80 порт недоступний. Замініть ВАШ_КЛЮЧ_API_CLOUDFLARE на ваш API-токен Cloudflare. Вам також потрібно буде встановити плагін Caddy для Cloudflare, якщо він не включений за замовчуванням (sudo apt install caddy-dns-cloudflare).
  • HTTP-01 челендж: Якщо ви не використовуєте DNS-челендж, просто вкажіть tls [email protected] (замініть на свою електронну пошту). Caddy спробує отримати сертифікат через HTTP-01 челендж, що вимагає, щоб 80 порт був відкритий і доступний ззовні.
  • Логування: Створіть директорію для логів: sudo mkdir -p /var/log/caddy && sudo chown caddy:caddy /var/log/caddy.

Збережіть зміни (Ctrl+O, Enter) та вийдіть (Ctrl+X).

3. Перевірка та перезавантаження Caddy

Перевірте синтаксис Caddyfile:


sudo caddy validate --config /etc/caddy/Caddyfile

Якщо помилок немає, перезавантажте Caddy, щоб застосувати нову конфігурацію:


sudo systemctl reload caddy

Caddy автоматично отримає та встановить SSL-сертифікат для вашого домену. Це може зайняти кілька секунд.

4. Налаштування DNS

Переконайтеся, що ваш домен (YOUR_DOMAIN.COM) вказує на IP-адресу вашого VPS. Створіть A-запис у вашому DNS-провайдері, наприклад:


Тип: A
Ім'я: @ (або ваш піддомен, наприклад, wiki)
Значення: ВАША_IP_АДРЕСА_VPS

Поширення DNS-записів може зайняти деякий час (від кількох хвилин до кількох годин).

5. Перевірка працездатності

Після того як DNS оновиться, відкрийте ваш домен (https://YOUR_DOMAIN.COM) у браузері. Ви повинні побачити сторінку привітання Outline Wiki. Зареєструйте першого користувача (він стане адміністратором).

Ви також можете перевірити доступність із сервера:


curl -I https://YOUR_DOMAIN.COM # Перевірка HTTP-заголовків

Ви повинні побачити статус HTTP/2 200 та заголовки, що вказують на успішну відповідь.

Якщо виникають проблеми, перевірте логи Caddy:


sudo journalctl -u caddy -f

І логи Outline-контейнера:


docker compose logs -f outline

На цьому етапі Outline Wiki повністю налаштований, доступний за HTTPS та готовий до використання.

Резервне копіювання та обслуговування

Схема: Резервне копіювання та обслуговування
Схема: Резервне копіювання та обслуговування

Регулярне резервне копіювання — критично важлива частина експлуатації будь-якого сервісу. Для Outline Wiki необхідно створювати резервні копії бази даних, завантажених файлів та конфігураційних файлів.

1. Що резервувати

  • База даних PostgreSQL: Містить всю текстову інформацію, структуру вікі, користувачів та їхні права. Це найважливіший компонент.
  • Завантажені файли: Директорія ./data/uploads містить зображення, документи та інші файли, прикріплені до сторінок вікі.
  • Конфігураційні файли: Файл docker-compose.yml та .env. Хоча їх можна відновити, збереження поточних версій спростить відновлення.

2. Простий скрипт авторезервування

Створимо простий скрипт, який виконуватиме резервне копіювання та зберігатиме його в окрему директорію. Перейдіть до кореневої директорії Outline (~/outline).


mkdir -p ~/outline/backups
nano ~/outline/backup_outline.sh

Вставте наступний вміст:


#!/bin/bash

# Директорія для бэкапів
BACKUP_DIR="/home/outlineadmin/outline/backups"
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
DB_BACKUP_FILE="$BACKUP_DIR/outline_db_backup_$TIMESTAMP.sql.gz"
UPLOADS_BACKUP_FILE="$BACKUP_DIR/outline_uploads_backup_$TIMESTAMP.tar.gz"
CONFIG_BACKUP_FILE="$BACKUP_DIR/outline_config_backup_$TIMESTAMP.tar.gz"

# Перехід в директорію Outline для коректної роботи docker compose
cd /home/outlineadmin/outline || { echo "Не вдалося змінити директорію на ~/outline"; exit 1; }

echo "Починаємо резервне копіювання Outline Wiki о $TIMESTAMP..."

# 1. Резервне копіювання бази даних PostgreSQL
echo "Резервне копіювання бази даних PostgreSQL..."
# Використання docker exec для виконання pg_dump всередині контейнера postgres
# Отримуємо ім'я контейнера postgres з docker-compose.yml
POSTGRES_CONTAINER=$(docker compose ps -q postgres)
if [ -z "$POSTGRES_CONTAINER" ]; then
    echo "Помилка: Контейнер PostgreSQL не знайдено."
    exit 1
fi

# Отримуємо змінні оточення з .env
source ./.env

docker exec "$POSTGRES_CONTAINER" pg_dump -U "$POSTGRES_USER" -d "$POSTGRES_DB" | gzip > "$DB_BACKUP_FILE"
if [ $? -eq 0 ]; then
    echo "Резервну копію бази даних PostgreSQL створено: $DB_BACKUP_FILE"
else
    echo "Помилка резервного копіювання бази даних PostgreSQL."
    exit 1
fi

# 2. Резервне копіювання завантажених файлів
echo "Резервне копіювання завантажених файлів..."
tar -czf "$UPLOADS_BACKUP_FILE" ./data/uploads
if [ $? -eq 0 ]; then
    echo "Резервну копію завантажених файлів створено: $UPLOADS_BACKUP_FILE"
else
    echo "Помилка резервного копіювання завантажених файлів."
    exit 1
fi

# 3. Резервне копіювання конфігураційних файлів
echo "Резервне копіювання конфігураційних файлів..."
tar -czf "$CONFIG_BACKUP_FILE" ./.env ./docker-compose.yml
if [ $? -eq 0 ]; then
    echo "Резервну копію конфігураційних файлів створено: $CONFIG_BACKUP_FILE"
else
    echo "Помилка резервного копіювання конфігураційних файлів."
    exit 1
fi

# 4. Видалення старих резервних копій (зберігаємо останні 7 днів)
echo "Очищення старих резервних копій..."
find "$BACKUP_DIR" -type f -name "outline_*.gz" -mtime +7 -delete
echo "Старі резервні копії очищено."

echo "Резервне копіювання Outline Wiki завершено."

Збережіть файл та зробіть його виконуваним:


chmod +x ~/outline/backup_outline.sh

Перевірте роботу скрипта, запустивши його вручну:


~/outline/backup_outline.sh
ls ~/outline/backups/

Ви повинні побачити створені файли резервних копій.

3. Автоматизація резервного копіювання за допомогою Cron

Додайте скрипт до планувальника Cron для щоденного виконання. Наприклад, щодня о 3:00 ночі:


crontab -e

Додайте наступний рядок в кінець файлу (переконайтеся, що шлях до скрипту правильний):


0 3 * * * /home/outlineadmin/outline/backup_outline.sh >> /var/log/outline_backup.log 2>&1

Цей рядок запускатиме скрипт щодня о 3 ранку та записуватиме вивід у файл логу /var/log/outline_backup.log.

4. Куди зберігати резервні копії

Зберігати резервні копії на тому ж сервері, що й основний сервіс, вкрай ризиковано. Якщо сервер вийде з ладу, ви втратите і дані, і резервні копії. Рекомендується використовувати:

  • Зовнішнє S3-сумісне сховище: AWS S3, DigitalOcean Spaces, Backblaze B2. Це надійний та відносно недорогий спосіб зберігання. Можна налаштувати скрипт для автоматичного завантаження резервних копій в S3.
  • Окремий VPS: Невеликий, дешевий VPS, призначений виключно для зберігання резервних копій, на який можна копіювати файли через rsync/scp.
  • Локальний NAS/сервер: Якщо у вас є власне обладнання.

Для автоматичного завантаження в S3 можна використовувати s3cmd або aws cli. Приклад додавання до скрипта після створення резервних копій:


# Установка aws cli (якщо не встановлено)
# sudo apt install awscli -y
# aws configure # Налаштуйте свої AWS ключі

# ... (після створення бэкапів) ...

echo "Завантаження резервних копій в S3..."
aws s3 cp "$DB_BACKUP_FILE" s3://your-s3-bucket/outline/db/
aws s3 cp "$UPLOADS_BACKUP_FILE" s3://your-s3-bucket/outline/uploads/
aws s3 cp "$CONFIG_BACKUP_FILE" s3://your-s3-bucket/outline/config/
echo "Резервні копії завантажено в S3."

5. Оновлення: rolling vs maintenance window

Оновлення Outline Wiki та його компонентів (PostgreSQL, Redis, Docker) вимагає уважності.

  • Оновлення Outline Wiki: Найпростіший спосіб — це оновити образ Docker. Перейдіть до директорії ~/outline та виконайте:
    
                docker compose pull outline # Завантажити новий образ Outline
                docker compose up -d outline # Перестворити контейнер Outline з новим образом
                

    Завжди читайте changelog Outline перед оновленням, щоб дізнатися про можливі зміни у вимогах або міграціях БД.

  • Оновлення системних пакетів (Ubuntu): Регулярно запускайте sudo apt update && sudo apt upgrade -y. Це можна робити раз на тиждень або раз на місяць.
  • Оновлення Docker Engine: Робіть це рідше та з обережністю, оскільки це може вплинути на всі контейнери. Рекомендується робити це в рамках "вікна обслуговування".

Стратегія оновлень:

  • Rolling updates (для Outline): Якщо немає критичних змін у базі даних, оновлення образу Outline можна вважати "rolling" (без простою).
  • Maintenance window (для Docker, ОС, великих оновлень Outline): Для більших оновлень, які можуть потенційно порушити роботу сервісу, виділіть вікно обслуговування, попередьте користувачів та проведіть оновлення, маючи під рукою свіжу резервну копію.

Вирішення проблем + FAQ

У цьому розділі ми розглянемо типові проблеми, з якими можна зіткнутися при встановленні та налаштуванні Outline Wiki, а також відповімо на поширені запитання.

Не можу підключитися до Outline Wiki за доменним ім'ям. Що перевірити?

Спочатку переконайтеся, що DNS-запис для вашого домену (A-запис) правильно вказує на IP-адресу вашого VPS. Перевірити це можна за допомогою команди dig YOUR_DOMAIN.COM на вашій локальній машині. Потім перевірте, чи запущений Caddy: sudo systemctl status caddy. Якщо Caddy не запущений або має помилки, перевірте його логи: sudo journalctl -u caddy -f. Переконайтеся, що порти 80 і 443 відкриті в UFW: sudo ufw status. Також перевірте, що Docker-контейнер Outline запущений: docker compose ps.

Outline Wiki видає помилку 502 Bad Gateway. У чому причина?

Помилка 502 зазвичай означає, що Caddy не зміг зв'язатися з бекенд-сервісом (Outline). Це може бути викликано тим, що контейнер Outline не запущений, або він запущений, але не слухає на очікуваному порту (3000). Перевірте статус контейнера Outline: docker compose ps. Якщо він не працює, перегляньте логи контейнера: docker compose logs outline. Переконайтеся, що у файлі .env та docker-compose.yml порт Outline налаштований на 3000 і Caddy проксує запити саме на localhost:3000.

Який VPS-конфіг мінімально підійде для Outline Wiki?

Для невеликої кількості користувачів (до 5-10 активних) мінімальний конфіг — це 1 vCPU, 2 ГБ RAM та 20-30 ГБ SSD. Однак для більш комфортної роботи та можливості зростання рекомендується 2 vCPU, 4 ГБ RAM та 50 ГБ SSD. Ці характеристики забезпечать достатню продуктивність для бази даних, кешу та самого застосунку Outline.

Що обрати — VPS чи dedicated для цього завдання?

Для Outline Wiki в більшості випадків достатньо VPS. Dedicated сервер стає актуальним, якщо у вас дуже велика команда (сотні користувачів), надзвичайно високе навантаження, або ж якщо потрібні суворі вимоги до ізоляції ресурсів та безпеки, які може надати лише фізичний сервер. Для типового використання в малому та середньому бізнесі або для особистих проєктів VPS — оптимальний та економічно вигідний вибір.

Не можу зареєструвати першого користувача, Outline не надсилає листи.

Це майже напевно проблема з налаштуваннями електронної пошти у файлі .env. Outline використовує SMTP або сторонні сервіси (Mailgun, SendGrid) для надсилання листів. Переконайтеся, що всі параметри (MAIL_FROM_EMAIL, SMTP_HOST, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD, SMTP_SECURE) вказані коректно. Перевірте логи Outline-контейнера на наявність помилок, пов'язаних з надсиланням пошти: docker compose logs outline. Можливо, ваш VPS-провайдер блокує стандартні SMTP-порти, або поштовий сервер вимагає додаткової автентифікації.

Як оновити Outline Wiki до нової версії?

Для оновлення Outline Wiki, коли він розгорнутий через Docker Compose, виконайте наступні кроки в директорії ~/outline:


        docker compose pull outline # Завантаження останньої версії образу Outline
        docker compose up -d outline # Перестворення контейнера Outline з новим образом
        
Перед цим рекомендується зробити резервну копію даних та ознайомитися з changelog'ом Outline на GitHub, щоб переконатися у відсутності критичних змін або необхідності міграції бази даних.

Я забув пароль адміністратора Outline. Як його скинути?

Якщо ви налаштували надсилання пошти, ви можете скористатися функцією "Забули пароль" на сторінці входу. Якщо пошта не працює або ви хочете скинути пароль вручну, це складніше. Вам потрібно буде отримати доступ до бази даних PostgreSQL всередині контейнера та вручну змінити хеш пароля або скинути його. Це складна операція, що вимагає обережності, і зазвичай включає виконання SQL-запитів безпосередньо до таблиці користувачів. Рекомендується спочатку переконатися, що надсилання пошти налаштовано правильно.

Висновки та наступні кроки

Схема: Висновки та наступні кроки
Схема: Висновки та наступні кроки

Вітаємо! Ви успішно встановили та налаштували Outline Wiki на своєму VPS. Тепер у вас є потужна, безпечна та повністю контрольована база знань для вашої команди або особистих проєктів, доступна за власним доменним ім'ям із захистом HTTPS. Ви освоїли не тільки розгортання застосунку, а й базове налаштування сервера, забезпечення безпеки та стратегію резервного копіювання, що є цінним навиком для будь-якого власника сервера.

Що робити далі?

  • Налаштуйте автентифікацію: Інтегруйте Outline з Google, Slack, Microsoft або вашим OIDC-провайдером, щоб спростити вхід для користувачів.
  • Моніторинг: Встановіть систему моніторингу (наприклад, Prometheus + Grafana) для відстеження стану сервера та продуктивності Outline, PostgreSQL і Redis.
  • Оптимізація: При зростанні навантаження розгляньте можливості оптимізації продуктивності бази даних, кешування або масштабування ресурсів VPS.

Чи був цей гайд корисним?

Ваш відгук допомагає нам покращувати гайди.

Share this post:

Надішліть гайд тому, кому він може стати в пригоді.

Telegram VKVK WhatsApp Facebook LinkedIn XX

встановлення та налаштування Outline Wiki на VPS
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.