Встановлення та Налаштування 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 для 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. Цим ми займемося в наступному розділі.