Битрикс на VPS: Docker и Nginx Proxy Manager
Проверенная схема старта Битрикс на VPS: подготовка Ubuntu, установка Docker Engine и Compose, безопасный Nginx Proxy Manager и настройка env-docker.
Контейнеры помогают отделить операционную систему сервера от окружения проекта: PHP, веб‑сервер, база и вспомогательные сервисы описываются явно и обновляются управляемо. Но Docker сам по себе не делает сервер безопасным, а готовый compose‑файл нельзя без проверки переносить в production.
Ниже — последовательность для поддерживаемого старта: подготовить VPS, установить Docker из официального репозитория, поднять Nginx Proxy Manager с закрытой админкой и только затем настраивать контейнерное окружение Битрикс.
- 01VPS + Ubuntu + Docker
- 02Nginx Proxy Manager и SSL
- 03Бэкапы Bitrix
- 04Мониторинг и логи
- 05Перенос проекта
Когда такая схема подходит
Подход подходит для корпоративного сайта, небольшого магазина, тестового стенда и проекта после переноса. Для высокой нагрузки, нескольких узлов и строгих требований к отказоустойчивости понадобится отдельная архитектура, мониторинг и план аварийного восстановления.
Схема окружения
- VPS принимает только необходимый внешний трафик.
- Nginx Proxy Manager завершает TLS и направляет домены в нужные контейнеры.
- Битрикс работает в отдельном compose‑проекте.
- База, upload и конфигурация резервируются раздельно.
- Изменения сначала проверяются на тестовой копии.
Шаг 1. Проверка и подготовка VPS
Используйте поддерживаемую 64‑битную Ubuntu. До установки проверьте версию ОС, архитектуру, свободное место и память. Обновление пакетов может потребовать перезагрузки, поэтому на действующем сервере заранее согласуйте техническое окно.
cat /etc/os-release
uname -m
df -h
free -h
sudo timedatectl set-timezone Europe/Moscow
sudo apt update
sudo apt -y upgradeНа внешнем firewall провайдера оставьте доступными только SSH с доверенных адресов, HTTP 80 и HTTPS 443. Базы данных, PHP‑FPM, Redis, Memcached и панели управления не должны слушать публичный интерфейс.
Шаг 2. Установка Docker Engine и Compose
Следующий блок повторяет официальный способ установки для Ubuntu через apt‑репозиторий Docker. Пакеты docker-ce, CLI, containerd, Buildx и Compose устанавливаются явно.
sudo apt update
sudo apt install -y ca-certificates curl git
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
cat <<EOF | sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
sudo systemctl status docker --no-pager
sudo docker run --rm hello-world
sudo docker version
sudo docker compose versionНе добавляйте пользователя в группу docker автоматически: доступ к Docker daemon практически равен root‑доступу. Если такой режим нужен команде, оформите его как отдельное осознанное решение и ограничьте SSH‑доступ.
Шаг 3. Nginx Proxy Manager
Nginx Proxy Manager можно вынести в отдельный compose‑проект. Не используйте плавающий тег latest на production: зафиксируйте проверенную версию и обновляйте её после чтения release notes. В официальном quick setup на дату проверки указан образ 2.15.0.
services:
app:
image: "jc21/nginx-proxy-manager:2.15.0"
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
ports:
- "80:80"
- "443:443"
- "127.0.0.1:81:81"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencryptПривязка 127.0.0.1:81:81 не публикует админку в интернет. Для первого входа откройте SSH‑туннель и перейдите на http://127.0.0.1:8181 на своём компьютере:
ssh -L 8181:127.0.0.1:81 user@example-serverПосле запуска выполните docker compose ps, смените начальные учётные данные и сохраните резервную копию каталогов data и letsencrypt. Для обновления сначала прочитайте release notes, сделайте копию данных, затем выполните docker compose pull и docker compose up -d.
Шаг 4. Контейнерная основа Битрикс
Репозиторий bitrix-tools/env-docker поддерживается командой внутри 1С‑Битрикс, но его README прямо описывает проект как девелоперский и предупреждает: для боевого режима нужны дополнительные настройки безопасности хоста, контейнеров и сайта.
git clone https://github.com/bitrix-tools/env-docker.git bitrix-env
cd bitrix-env
# Зафиксируйте ревизию, с которой начинаете работу:
git rev-parse HEAD
# До запуска проверьте итоговую конфигурацию:
docker compose configДо docker compose up -d замените шаблонные пароли MySQL/PostgreSQL, задайте пароль Redis при его использовании, смените ключ Push‑сервера, проверьте часовой пояс, версии PHP и открываемые порты. Не храните секреты в публичном Git‑репозитории.
Nginx Proxy Manager должен достигать веб‑контейнера Битрикс через явно спроектированную общую Docker‑сеть или через ограниченный backend‑порт хоста. Не публикуйте наружу MySQL, Redis, Memcached и PHP‑FPM. Схему сети и имена контейнеров фиксируйте в документации проекта.
Шаг 5. Проверка перед публикацией
- снаружи доступны только ожидаемые порты, обычно 22 с allowlist, 80 и 443;
- порт 81 Nginx Proxy Manager не открывается из интернета;
- все шаблонные пароли и секреты заменены;
docker compose configиdocker compose psне показывают ошибок;- домен открывается по HTTPS без цепочки лишних редиректов;
- формы создают письмо и заявку в CRM;
- база, upload, конфигурация и сертификаты попадают в резервную копию;
- восстановление проверено на отдельном стенде;
- cron и агенты Битрикс выполняются;
- логи контейнеров подключены к мониторингу.
Первичные источники
- Установка Docker Engine на Ubuntu;
- Docker, firewall и UFW;
- официальный quick setup Nginx Proxy Manager;
- репозиторий и README env-docker.
Итог
Хороший старт — не «поставить Битрикс за вечер», а получить окружение, которое можно обновить, проверить и восстановить. Фиксируйте версии, не публикуйте внутренние сервисы, храните проверяемые резервные копии и документируйте сетевую схему.