Что такое Outline и зачем он нужен?
Представь, что тебе нужна внутренняя wiki-платформа для команды, которая сочетает мощь Notion с полным контролем над данными. Outline — это именно такой инструмент. Это open-source альтернатива Notion, которую можно развернуть на собственном сервере. Давай разберем, как выполняется установка Outline на Ubuntu с нуля.
Подготовка сервера Ubuntu
Перед тем как начать установку Outline Ubuntu, убедись, что у тебя есть:
- Сервер Ubuntu 20.04 LTS или 22.04 LTS (рекомендуется)
- Минимум 2 GB RAM и 20 GB дискового пространства
- Доступ по SSH с правами sudo
- Зарегистрированное доменное имя (например, wiki.yourcompany.com)
Обновление системы и установка зависимостей
Первым делом обновим пакеты и установим необходимые инструменты:
# Обновление списка пакетов
sudo apt update && sudo apt upgrade -y
# Установка необходимых утилит
sudo apt install -y curl wget gnupg apt-transport-https ca-certificates software-properties-common
Установка Docker и Docker Compose
Outline работает в контейнерах Docker, поэтому нам нужно установить Docker Engine и Docker Compose.
Установка Docker
# Добавление официального GPG ключа Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Добавление репозитория Docker
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Установка Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Добавление текущего пользователя в группу docker
sudo usermod -aG docker $USER
newgrp docker
# Проверка установки
docker --version
Установка Docker Compose (отдельно)
# Скачивание последней версии Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# Даем права на выполнение
sudo chmod +x /usr/local/bin/docker-compose
# Проверяем установку
docker-compose --version
Настройка базы данных PostgreSQL
Outline требует базу данных PostgreSQL. Мы можем использовать готовый контейнер или внешнюю БД.
# Создаем docker-compose.yml для PostgreSQL
mkdir -p ~/outline-setup
cd ~/outline-setup
cat > docker-compose-postgres.yml << 'EOF'
version: '3.8'
services:
postgres:
image: postgres:15-alpine
container_name: outline-postgres
restart: unless-stopped
environment:
POSTGRES_DB: outline
POSTGRES_USER: outline_user
POSTGRES_PASSWORD: YourStrongPassword123!
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
volumes:
postgres_data:
EOF
# Запускаем PostgreSQL
docker-compose -f docker-compose-postgres.yml up -d
# Проверяем, что контейнер работает
docker ps | grep postgres
Установка Redis для кэширования
Redis используется для сессий и кэширования. Создадим отдельный конфиг:
cat > docker-compose-redis.yml << 'EOF'
version: '3.8'
services:
redis:
image: redis:7-alpine
container_name: outline-redis
restart: unless-stopped
command: redis-server --requirepass YourRedisPassword123!
volumes:
- redis_data:/data
ports:
- "6379:6379"
volumes:
redis_data:
EOF
# Запускаем Redis
docker-compose -f docker-compose-redis.yml up -d
Основная установка Outline
Теперь перейдем к основной части — развертыванию Outline на Ubuntu.
Создание конфигурационного файла .env
# Создаем директорию для Outline
mkdir -p ~/outline
cd ~/outline
# Создаем файл конфигурации
cat > .env << 'EOF'
# Базовые настройки
NODE_ENV=production
SECRET_KEY=your-secret-key-change-this-with-random-string
UTILS_SECRET=another-secret-key-change-this-too
# Настройки базы данных
DATABASE_URL=postgres://outline_user:YourStrongPassword123!@localhost:5432/outline
DATABASE_CONNECTION_POOL_MIN=2
DATABASE_CONNECTION_POOL_MAX=10
# Настройки Redis
REDIS_URL=redis://:YourRedisPassword123!@localhost:6379
# URL приложения
URL=https://wiki.yourdomain.com
PORT=3000
# Настройки электронной почты (для уведомлений)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USERNAME=your-email@gmail.com
SMTP_PASSWORD=your-app-password
SMTP_FROM_EMAIL=noreply@yourdomain.com
SMTP_TLS_CIPHERS=SSLv3
# Загрузка файлов (используем локальное хранилище)
FILE_STORAGE=local
FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data
EOF
Создание docker-compose.yml для Outline
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
outline:
image: getoutline/outline:latest
container_name: outline-app
restart: unless-stopped
depends_on:
- postgres
- redis
env_file:
- .env
environment:
- NODE_ENV=production
volumes:
- outline_data:/var/lib/outline/data
- ./data:/var/lib/outline/data
- ./storage:/var/lib/outline/data
ports:
- "3000:3000"
networks:
- outline-network
postgres:
image: postgres:15-alpine
container_name: outline-postgres
restart: unless-stopped
environment:
POSTGRES_DB: outline
POSTGRES_USER: outline_user
POSTGRES_PASSWORD: YourStrongPassword123!
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- outline-network
redis:
image: redis:7-alpine
container_name: outline-redis
restart: unless-stopped
command: redis-server --requirepass YourRedisPassword123!
volumes:
- redis_data:/data
networks:
- outline-network
volumes:
outline_data:
postgres_data:
redis_data:
networks:
outline-network:
driver: bridge
EOF
Запуск Outline
# Запускаем все сервисы
docker-compose up -d
# Проверяем логи (первые запуски могут занять время)
docker-compose logs -f outline
Настройка Nginx и SSL (HTTPS)
Для production-окружения нам нужен HTTPS. Используем Nginx как reverse proxy и Certbot для SSL-сертификатов.
Установка Nginx
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
Настройка Nginx для Outline
# Создаем конфиг для Outline
sudo nano /etc/nginx/sites-available/outline
# Вставляем конфигурацию:
server {
listen 80;
server_name wiki.yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
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;
proxy_cache_bypass $http_upgrade;
}
# Максимальный размер загружаемых файлов (100MB)
client_max_body_size 100M;
}
# Активируем конфиг
sudo ln -s /etc/nginx/sites-available/outline /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Установка SSL с помощью Certbot
# Установка Certbot
sudo apt install -y certbot python3-certbot-nginx
# Получение SSL-сертификата
sudo certbot --nginx -d wiki.yourdomain.com
# Настройка автоматического обновления
sudo certbot renew --dry-run
Первоначальная настройка Outline
После успешной установки Outline на Ubuntu открой браузер и перейди по адресу https://wiki.yourdomain.com. Тебе нужно:
- Создать первую учетную запись администратора
- Настроить название рабочего пространства
- Пригласить первых пользователей
- Настроить интеграции (Slack, GitHub и др.)
Управление и обслуживание
Полезные команды Docker
| Команда | Описание |
|---|---|
docker-compose ps |
Показать статус контейнеров |
docker-compose logs -f |
Показать логи в реальном времени |
docker-compose restart outline |
Перезапустить Outline |
docker-compose down |
Остановить все контейнеры |
docker-compose pull |
Обновить образы |
Резервное копирование данных
#!/bin/bash
# Скрипт для резервного копирования Outline
BACKUP_DIR="/backup/outline"
DATE=$(date +%Y%m%d_%H%M%S)
# Создаем директорию для бэкапов
mkdir -p $BACKUP_DIR
# Бэкап базы данных
docker exec outline-postgres pg_dump -U outline_user outline > $BACKUP_DIR/outline_db_$DATE.sql
# Бэкап загруженных файлов
tar -czf $BACKUP_DIR/outline_data_$DATE.tar.gz ~/outline/data/
# Удаляем старые бэкапы (старше 30 дней)
find $BACKUP_DIR -name "*.sql" -mtime +30 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
echo "Backup completed: $BACKUP_DIR/outline_db_$DATE.sql"
echo "Backup completed: $BACKUP_DIR/outline_data_$DATE.tar.gz"
Частые проблемы и решения
| Проблема | Решение |
|---|---|
| Outline не запускается | Проверь логи: docker-compose logs outline. Частая причина — ошибки в .env файле. |
| Нет подключения к БД | Убедись, что PostgreSQL запущен: docker ps | grep postgres |
| Ошибки с SSL | Проверь настройки Nginx и срок действия сертификата: sudo certbot certificates |
| Медленная работа | Увеличь ресурсы сервера, проверь использование RAM/CPU, оптимизируй запросы к БД. |
FAQ: Ответы на частые вопросы
Можно ли установить Outline без Docker?
Технически да, но это сложнее. Официальная документация рекомендует Docker-установку как наиболее стабильную. Ручная установка требует настройки Node.js, PostgreSQL, Redis и всех зависимостей отдельно.
Как обновить Outline до новой версии?
1. Сделай бэкап данных. 2. Останови контейнеры: docker-compose down. 3. Обнови образ: docker-compose pull. 4. Запусти заново: docker-compose up -d. Проверь changelog на GitHub перед обновлением.
Какие есть альтернативы локальному хранилищу файлов?
Outline поддерживает AWS S3, Google Cloud Storage, Azure Blob Storage. Для этого измени FILE_STORAGE в .env файле и добавь соответствующие ключи доступа.
Как настроить аутентификацию через OAuth (Google, GitHub)?
В настройках администратора Outline есть раздел "Authentication". Там можно добавить OAuth-провайдеров. Для каждого нужны Client ID и Client Secret из соответствующего сервиса.
Заключение
Поздравляю! Ты успешно выполнил установку Outline на Ubuntu. Теперь у тебя есть мощная, self-hosted wiki-платформа с полным контролем над данными. Помни про регулярные бэкапы и обновления безопасности.
Если возникнут вопросы — официальная документация Outline и сообщество на GitHub всегда помогут. Удачи в создании твоей идеальной базы знаний!