Skip to main content

Dokploy Installation

Установка Dokploy, настройка Traefik, подключение Git-репозитория.


1. Что такое Dokploy

Dokploy — self-hosted PaaS (Platform as a Service). Он устанавливает и настраивает:

КомпонентЧто делает
Docker EngineКонтейнеризация сервисов
Docker SwarmОркестрация, перезапуск при падении
TraefikReverse proxy, SSL через Let's Encrypt
Web UIУправление сервисами через браузер
Docker устанавливается автоматически

Не нужно устанавливать Docker вручную. Скрипт установки Dokploy сделает это.


2. Установка

# Одна команда для установки
curl -sSL https://dokploy.com/install.sh | sh

Скрипт:

  1. Проверит совместимость OS
  2. Установит Docker Engine
  3. Инициализирует Docker Swarm
  4. Запустит 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 утечка пароля = полный доступ к инфраструктуре.

  1. SettingsProfile
  2. В секции Two-Factor Authentication нажать Enable 2FA
  3. Отсканировать QR-код в приложении-аутентификаторе (Google Authenticator, Authy, 1Password)
  4. Ввести код подтверждения
  5. Сохранить резервные коды в безопасном месте

4. Настройка Docker log rotation

Сделай это сразу после установки Dokploy

До запуска каких-либо сервисов.

# Создать конфигурацию 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
ApanelYOUR_SERVER_IPAuto

Результат: panel.goloot.online → YOUR_SERVER_IP

5.2 Настройка в Dokploy

  1. Dokploy UI → боковая панель → SettingsWeb Server
  2. В секции Server Domain:
    • Domain: panel.goloot.online
    • Let's Encrypt Email: твой email (для SSL-сертификата)
    • HTTPS: включить тогл
  3. Нажать 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:

  1. SettingsGit ProvidersGitHub
  2. Два варианта:

Вариант A: GitHub App (рекомендуется)

  • Нажми "Create GitHub App"
  • Авторизуй в GitHub
  • Выбери репозитории, к которым дать доступ

Вариант B: SSH Deploy Key

  • В Dokploy: SettingsSSH KeysGenerate
  • Скопируй публичный ключ
  • 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-записи для всех сервисов:

ТипИмяЗначениеСервис
AapiYOUR_SERVER_IPBackend
A@ (или пусто)YOUR_SERVER_IPFrontend
AstartYOUR_SERVER_IPFrontend (WebApp)
AadminYOUR_SERVER_IPAdmin Panel
AdocsYOUR_SERVER_IPDocumentation
AstaticYOUR_SERVER_IPStatic Files
ArYOUR_SERVER_IPRedirect Service
ApanelYOUR_SERVER_IPDokploy UI
Cloudflare Proxy

Если используешь 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 сначала создаётся проект, а уже внутри проекта добавляются сервисы и базы данных.

Создание

  1. Dokploy UI → ProjectsCreate Project
  2. Введи имя: 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