Битрикс на VPS: Ubuntu, Docker и Nginx Proxy Manager
Разбираем понятную схему окружения для корпоративного сайта или небольшого магазина на Битрикс: отдельный reverse proxy, контейнеры проекта, постоянные данные, бэкапы и мониторинг.
Сайт на 1С-Битрикс можно установить на VPS вручную: поставить Nginx, PHP, базу данных, настроить виртуальный хост и права. Такой вариант работает, но со временем сервер обрастает конфигами, версии компонентов расходятся, а перенос и обновление превращаются в отдельный проект.
Docker не отменяет администрирование и не ускоряет Битрикс автоматически. Его задача — зафиксировать окружение и разделить сервисы. Если структура проекта описана в Compose, проще поднять тестовую копию, перенести сайт и понять, какие данные нужно резервировать.
Для каких проектов подходит эта схема
Подход удобен для корпоративного сайта, небольшого интернет-магазина, тестового стенда и проекта, который нужно регулярно развивать. Для высоконагруженного магазина, кластера или строгой отказоустойчивости потребуется другая архитектура: отдельная база, балансировка, репликация и управляемое хранилище.
Логическая структура сервера
- Ubuntu — базовая операционная система;
- Docker Engine и Compose — запуск сервисов;
- Nginx Proxy Manager — входящий HTTP/HTTPS, сертификаты и проксирование;
- отдельный Compose-проект — веб-сервер, PHP и база Битрикс;
- постоянные каталоги или volumes — база и пользовательские файлы;
- внешнее хранилище — резервные копии;
- мониторинг — ресурсы, доступность и срок действия сертификатов.
Шаг 1. Подготовьте Ubuntu
Начните с актуальной LTS-версии Ubuntu, отдельного пользователя для администрирования и входа по SSH-ключу. Обновите пакеты, задайте часовой пояс и включите firewall.
sudo apt update
sudo apt -y upgrade
sudo timedatectl set-timezone Europe/Moscow
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Не публикуйте наружу порт базы данных и административные панели. Доступ к ним лучше ограничить локальной сетью, VPN или доверенными IP.
Шаг 2. Установите Docker из официального репозитория
После установки проверьте Docker Engine и Compose:
docker --version
docker compose version
docker info
Зафиксируйте используемые образы и версии. Тег latest удобен для теста, но бесконтрольное обновление production может неожиданно изменить PHP, базу или reverse proxy.
Шаг 3. Разделите проекты по каталогам
/opt/docker/
├── proxy/
│ ├── compose.yml
│ ├── data/
│ └── letsencrypt/
├── projects/
│ └── example.ru/
│ ├── compose.yml
│ ├── .env
│ ├── www/
│ └── db/
└── backup/
├── scripts/
└── logs/
Не храните исходники, дампы, сертификаты и базу в одном безымянном volume. По структуре должно быть понятно, какие данные переживают пересоздание контейнера и что включается в резервную копию.
Шаг 4. Настройте Nginx Proxy Manager
Reverse proxy удобно вынести в отдельный проект, потому что он обслуживает все домены на сервере. Упрощённый Compose выглядит так:
services:
npm:
image: jc21/nginx-proxy-manager:latest
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "127.0.0.1:81:81"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
В примере административный порт доступен только локально. Если панель нужна удалённо, используйте SSH-туннель или VPN. После первого входа смените учётные данные и сохраните резервную копию данных proxy и сертификатов.
Шаг 5. Создайте общую Docker-сеть
Прокси и сайт могут общаться через внешнюю сеть без публикации внутренних портов сайта наружу:
docker network create proxy
Эту сеть подключают к Nginx Proxy Manager и веб-контейнеру проекта. В Proxy Host указывается имя контейнера и его внутренний порт, а не публичный IP сервера.
Шаг 6. Подготовьте окружение Битрикс
Для проекта можно использовать проверенную контейнерную основу и адаптировать её под нужные версии PHP, Nginx и базы. До запуска проверьте расширения PHP, лимиты памяти, загрузку файлов, почту, cron и права на запись.
Секреты базы и API не следует записывать в Compose-файл и репозиторий. Используйте закрытый .env с ограниченными правами или отдельный механизм секретов.
Шаг 7. Учитывайте особенности Битрикс
- агенты, выполняемые по cron, не должны параллельно запускаться в нескольких контейнерах;
- почта должна уходить через настроенный SMTP с контролем ошибок;
- права на
/upload/и кеш задаются согласованно, а не через777; - временные каталоги и сессии должны переживать только то время, которое действительно требуется;
- после изменения PHP проверяется панель «Проверка системы» и реальные сценарии сайта.
Шаг 8. Настройте резервное копирование
Копировать сам контейнер бессмысленно: он восстанавливается из образа. Сохранять нужно дамп базы, код, /upload/, Compose-файлы, закрытую конфигурацию и данные reverse proxy. Хотя бы одна копия должна находиться вне VPS.
Регулярно разворачивайте копию в изолированном окружении. Подробный состав и проверка описаны в статье «Бэкапы сайта на Битрикс: практический чек-лист».
Шаг 9. Добавьте мониторинг
Контролируйте доступность сайта, коды 5xx, время ответа, CPU, память, swap, свободное место, состояние контейнеров, базу, срок действия SSL и результат резервного копирования. Логи ограничивайте ротацией, иначе исправный контейнер со временем заполнит диск.
Что проверить перед публикацией
- домен открывается по HTTPS и перенаправляет HTTP;
- панели, база и служебные порты недоступны из интернета;
- формы, письма, CRM и cron работают;
- robots.txt и sitemap.xml соответствуют рабочему домену;
- после перезапуска сервера контейнеры поднимаются автоматически;
- резервная копия уходит во внешнее хранилище;
- есть инструкция обновления и восстановления.
Главный вывод: Docker полезен не сам по себе, а как способ сделать окружение Битрикс повторяемым и понятным. Если нужно подготовить production-сервер, настроить proxy, безопасность, резервирование и мониторинг, это входит в услугу настройки VPS для сайта на Битрикс.