Установка Coolify: Развёртывание приложений с Self-Hosted PaaS
Установка Coolify, интеграция Docker и Git, развёртывание приложений, управление базами данных, SSL-сертификаты, переменные окружения и self-hosted PaaS как альтернатива Heroku/Netlify.
Установка Portainer CE, управление Docker и Kubernetes, развёртывание стеков, управление томами/сетями, авторизация пользователей, вебхуки и интеграция GitOps.
Portainer — это open-source платформа управления контейнерами, позволяющая управлять средами Docker и Kubernetes через веб-браузер. Без знания командной строки вы можете легко запускать, останавливать контейнеры, просматривать логи и развёртывать стеки.
Portainer Community Edition (CE) — бесплатный и open-source. Ключевые возможности:
# Создать том для хранения данных Portainer
docker volume create portainer_data
docker run -d \
--name portainer \
--restart=always \
-p 8000:8000 \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
После установки:
https://IP_СЕРВЕРА:9443
При первом входе необходимо установить пароль администратора. Если вы не войдёте в систему в течение 5 минут, Portainer необходимо перезапустить по соображениям безопасности.
# portainer-compose.yml
version: '3.8'
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
ports:
- "8000:8000"
- "9443:9443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
security_opt:
- no-new-privileges:true
volumes:
portainer_data:
docker compose -f portainer-compose.yml up -d
Portainer взаимодействует с демоном Docker через /var/run/docker.sock. Доступ к этому сокету обеспечивает полный контроль над Docker:
# Проверка прав доступа к сокету
ls -la /var/run/docker.sock
# Добавление пользователя в группу docker (при необходимости)
usermod -aG docker $USER
Доступ к Docker socket эквивалентен правам root. Запускайте Portainer в доверенных сетях и используйте надёжный пароль.
# Пример: WordPress Stack
version: '3.8'
services:
wordpress:
image: wordpress:latest
restart: always
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: ${DB_USER}
WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress_data:/var/www/html
depends_on:
- db
db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
volumes:
- db_data:/var/lib/mysql
volumes:
wordpress_data:
db_data:
https://github.com/user/repo# В интерфейсе Portainer:
# Containers → выбрать контейнер → Actions:
# - Start / Stop / Restart / Kill / Pause
# - Logs (в реальном времени)
# - Console (веб-терминал)
# - Inspect (JSON-детали)
# - Stats (использование CPU, ОЗУ, сети)
# Containers → Нажать на имя контейнера
# Вкладка Console → Connect
# Выбрать оболочку: /bin/bash или /bin/sh
# Settings → Teams → Add Team
# Название команды: developers
# Добавить участников: пользователь1, пользователь2
# Создать вебхук для стека или сервиса:
# Stack → Название стека → Webhooks
# Скопировать URL вебхука
# Использование в GitHub Actions:
curl -X POST https://portainer.example.com/api/webhooks/WEBHOOK_TOKEN
# Установка Edge Agent на удалённом сервере:
docker run -d \
--name portainer_edge_agent \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
-v /:/host \
-v portainer_agent_data:/data \
-e EDGE=1 \
-e EDGE_ID=ВАШ_EDGE_ID \
-e EDGE_KEY=ВАШ_EDGE_KEY \
-e EDGE_INSECURE_POLL=1 \
portainer/agent:latest
# Остановить и удалить текущий контейнер
docker stop portainer
docker rm portainer
# Загрузить последний образ
docker pull portainer/portainer-ce:latest
# Перезапустить (данные сохраняются в томе)
docker run -d \
--name portainer \
--restart=always \
-p 8000:8000 \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Установив Portainer на серверах REXE, вы сможете управлять всеми контейнерами Docker через единый веб-интерфейс. Особенно удобно для серверов, на которых работает несколько сервисов.
Откройте порт 9443 в брандмауэре сервера: 'ufw allow 9443/tcp'. Проверьте, что контейнер запущен: 'docker ps | grep portainer'. Если хотите использовать HTTP, также откройте порт 9000 и добавьте параметр '-p 9000:9000'.
Остановите контейнер Portainer. Сбросьте пароль командой 'docker run --rm -v portainer_data:/data portainer/helper-reset-password'. Новый временный пароль будет показан на экране. Перезапустите Portainer, войдите с временным паролем и установите новый.
Проверьте права доступа к Docker socket: 'ls -la /var/run/docker.sock'. Убедитесь, что контейнер Portainer имеет доступ к сокету. Если активен SELinux или AppArmor, добавьте флаг ':z' или ':Z' для монтирования сокета.
Убедитесь, что драйвер логов контейнера — 'json-file' или 'local'. Проверьте командой 'docker inspect CONTAINER_ID | grep LogConfig'. Если используется драйвер 'none', логи не могут быть отображены. Явно укажите драйвер логирования в docker-compose.yml.
Добавляйте новые среды через меню Environments. Выберите 'Local' для Docker на том же сервере. Для удалённых серверов выберите 'Docker Standalone' или 'Docker Swarm' и введите TCP-эндпоинт (порт 2375/2376). Используйте TLS-сертификаты для безопасных подключений. С Edge Agent можно подключаться к серверам за брандмауэрами.
Да, Portainer CE поддерживает Kubernetes. Добавьте среду через Environments → Add Environment → Kubernetes, загрузив файл kubeconfig или установив агент. Вы можете управлять пространствами имён, развёртываниями, сервисами, ingress и подами через веб-интерфейс.
Установка Coolify, интеграция Docker и Git, развёртывание приложений, управление базами данных, SSL-сертификаты, переменные окружения и self-hosted PaaS как альтернатива Heroku/Netlify.
Установка Nextcloud с Docker, настройка Apache/Nginx, установка базы данных, SSL-сертификат, синхронизация файлов, магазин приложений и оптимизация производительности.
Установка Uptime Kuma с Docker, мониторинг HTTP/TCP/DNS/ping, интеграции уведомлений (Telegram, Discord, email), создание страницы статуса и настройка оповещений.