Dokploy Installation
Установка Dokploy, настройка Traefik, подключение Git-репозитория.
1. Что такое Dokploy
Dokploy — self-hosted PaaS (Platform as a Service). Он устанавливает и настраивает:
| Компонент | Что делает |
|---|---|
| Docker Engine | Контейнеризация сервисов |
| Docker Swarm | Оркестрация, перезапуск при падении |
| Traefik | Reverse proxy, SSL через Let's Encrypt |
| Web UI | Управление сервисами через браузер |
Не нужно устанавливать Docker вручную. Скрипт установки Dokploy сделает это.
2. Установка
# Одна команда для установки
curl -sSL https://dokploy.com/install.sh | sh
Скрипт:
- Проверит совместимость OS
- Установит Docker Engine
- Инициализирует Docker Swarm
- Запустит Dokploy на порту 3000
Время: ~3-5 минут.
После установки:
Dokploy is now running!
Access it at: http://YOUR_SERVER_IP:3000
3. Первый доступ к Dokploy UI
Вариант A: Через SSH-туннель (рекомендуется)
Не открывая порт 3000 снаружи:
# На своём компьютере:
ssh -L 3000:localhost:3000 root@YOUR_SERVER_IP
Затем в браузере: http://localhost:3000
Вариант B: Временно открыть порт
# На сервере:
ufw allow 3000/tcp
# После настройки домена для Dokploy — закрыть:
ufw delete allow 3000/tcp
В браузере: http://YOUR_SERVER_IP:3000
Создание Admin-аккаунта
При первом входе Dokploy попросит создать admin-аккаунт:
- Email — твой email
- Password — надёжный пароль (сохрани!)
Включение 2FA
Dokploy — панель управления всем сервером. Без 2FA утечка пароля = полный доступ к инфраструктуре.
- Settings → Profile
- В секции Two-Factor Authentication нажать Enable 2FA
- Отсканировать QR-код в приложении-аутентификаторе (Google Authenticator, Authy, 1Password)
- Ввести код подтверждения
- Сохранить резервные коды в безопасном месте
4. Настройка Docker log rotation
До запуска каких-либо сервисов.
# Создать конфигурацию Docker
cat > /etc/docker/daemon.json << 'EOF'
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
EOF
# Перезапустить Docker
systemctl restart docker
Без этого логи контейнеров будут расти бесконечно и заполнят диск.
5. Настройка домена для Dokploy UI
Чтобы Dokploy UI был доступен по домену с HTTPS (вместо IP:3000):
5.1 DNS-запись
В панели управления доменами (Cloudflare, Namecheap, etc.) создай A-запись:
| Тип | Имя | Значение | TTL |
|---|---|---|---|
| A | panel | YOUR_SERVER_IP | Auto |
Результат: panel.goloot.online → YOUR_SERVER_IP
5.2 Настройка в Dokploy
- Dokploy UI → боковая панель → Settings → Web Server
- В секции Server Domain:
- Domain:
panel.goloot.online - Let's Encrypt Email: твой email (для SSL-сертификата)
- HTTPS: включить тогл
- Domain:
- Нажать Save
Через ~1 минуту Dokploy будет доступен по https://panel.goloot.online.
После этого закрой порт 3000 (только если открывал через UFW в варианте B):
# Только если ранее делал "ufw allow 3000/tcp"
ufw delete allow 3000/tcp
# Если использовал SSH-туннель (вариант A) — ничего закрывать не нужно,
# порт 3000 никогда не был открыт снаружи
6. Подключение GitHub-репозитория
6.1 Создать GitHub App или Deploy Key
В Dokploy UI:
- Settings → Git Providers → GitHub
- Два варианта:
Вариант A: GitHub App (рекомендуется)
- Нажми "Create GitHub App"
- Авторизуй в GitHub
- Выбери репозитории, к которым дать доступ
Вариант B: SSH Deploy Key
- В Dokploy: Settings → SSH Keys → Generate
- Скопируй публичный ключ
- GitHub → Repository → Settings → Deploy Keys → Add
- Вставь ключ, включи "Allow write access"
6.2 Проверка
После подключения в Dokploy при создании сервиса ты сможешь выбирать репозиторий из списка.
7. Создание Docker Network
Все сервисы goLoot должны находиться в одной Docker-сети для взаимодействия.
Dokploy создаёт dokploy-network автоматически при создании первого сервиса. Проверь, существует ли она:
docker network ls | grep dokploy
Если сеть уже есть — ничего делать не нужно. Если нет (например, мониторинг стек нужен раньше первого сервиса) — создай вручную:
docker network create --driver overlay dokploy-network
8. Настройка DNS для всех доменов
В панели управления доменами создай A-записи для всех сервисов:
| Тип | Имя | Значение | Сервис |
|---|---|---|---|
| A | api | YOUR_SERVER_IP | Backend |
| A | @ (или пусто) | YOUR_SERVER_IP | Frontend |
| A | start | YOUR_SERVER_IP | Frontend (WebApp) |
| A | admin | YOUR_SERVER_IP | Admin Panel |
| A | docs | YOUR_SERVER_IP | Documentation |
| A | static | YOUR_SERVER_IP | Static Files |
| A | r | YOUR_SERVER_IP | Redirect Service |
| A | panel | YOUR_SERVER_IP | Dokploy UI |
Если используешь Cloudflare:
- Выключи Proxy (серое облако) для всех записей
- Traefik сам управляет SSL через Let's Encrypt
- Cloudflare Proxy конфликтует с Traefik
- Включи только DNS-режим (DNS Only)
Проверка DNS
# На своём компьютере или сервере
dig api.goloot.online +short
# Должен вернуть YOUR_SERVER_IP
dig admin.goloot.online +short
# Должен вернуть YOUR_SERVER_IP
DNS-записи обычно применяются за 5-60 минут.
9. Создание проекта в Dokploy
В Dokploy сначала создаётся проект, а уже внутри проекта добавляются сервисы и базы данных.
Создание
- Dokploy UI → Projects → Create Project
- Введи имя:
goLoot
Структура
Все сервисы, БД и мониторинг добавляются внутри одного проекта:
Dokploy
└── Project: goLoot
├── Service: backend (Application)
├── Service: frontend (Application)
├── Service: admin (Application)
├── Service: redirect-service (Application)
├── Service: static-nginx (Application)
├── Service: docs-site (Application)
├── Service: postgresql (Database)
├── Service: redis (Database)
└── Service: monitoring (Docker Compose)
Создай проект на этом этапе. В следующих шагах (Database Setup и Services Deployment) ты будешь добавлять сервисы внутри него.
10. Чеклист
- Dokploy установлен
- Admin-аккаунт создан
- Docker log rotation настроена
- Домен для Dokploy UI настроен (опционально)
- GitHub-репозиторий подключён
- DNS A-записи созданы для всех доменов
- DNS проверены через
dig
Related
- Server Setup — предыдущий шаг
- Database Setup — следующий шаг
- Services Deployment — создание сервисов