Руководства и туториалы

Запуск Docker и Portainer на VPS: полное практическое руководство

Поделиться:

Вы когда-нибудь слышали о Dockerception?

Что ж, держитесь крепче. Мы углубляемся в кроличью нору.

Portainer, веб-интерфейс, который вы собираетесь установить поверх Docker, сам является контейнером Docker.

Это инструмент, который работает на том, чем он управляет. Вы запускаете его одной командой docker run, и первое, что он делает — через небольшое отверстие в хосте (сокетный файл) обращается к демону Docker и просит показать все остальные контейнеры, включая себя. Из этой вкладки браузера вы можете обновить Portainer, перезапустить Portainer и управлять всеми остальными контейнерами Docker.

Интерфейс, на который вы смотрите, находится в одном клике от удаления интерфейса, на который вы смотрите.

На VPS, за который вы уже платите и с которым уже умеете работать через SSH, Portainer аккуратно встраивается поверх Docker, не меняя ничего в работе нижележащих систем.

В этом и есть ценность.

VPS на 4 ГБ без труда запускает Docker, Portainer и небольшой набор самостоятельных приложений. И это обходится примерно в стоимость пары стриминговых подписок в месяц. Достаточно для управления умным домом, хранения семейных фото, ИИ-помощника и рассылки, которую вы давно обещали запустить — на одном сервере, который вам действительно принадлежит.

Вот как это запустить, обезопасить и начать получать выгоду.

Что такое Portainer на самом деле?

How To Run Docker and Portainer on a VPS (2026 Guide)

Portainer — это веб-интерфейс, который работает как контейнер Docker и управляет вашими остальными контейнерами через сокет Docker.

По сути, это браузерный интерфейс для тех же команд Docker, которые вы иначе вводили бы вручную, плюс управление стеками, управление доступом на основе ролей (если вы обновитесь) и панель мониторинга с данными о CPU и памяти.

Именно сокетное соединение обеспечивает работу. Привязка выглядит как -v /var/run/docker.sock:/var/run/docker.sock в команде установки, и эта одна строка выполняет всю основную работу. Без неё Portainer — это интерфейс для пустого хоста Docker. С ней Portainer становится пультом управления хостом Docker.

Стоит помнить: любой процесс, который может обратиться к /var/run/docker.sock, может фактически запустить что угодно от root на хосте. Это особенность, когда запрос исходит от Portainer, и проблема, если это делает какой-то контейнер, который вы запустили на прошлой неделе и забыли, что дали ему доступ к сокету.

Относитесь к привязке сокета как к привилегированной возможности и проверяйте каждый другой контейнер, который запрашивает такую.

Получайте контент прямо в почту

Подпишитесь сейчас, чтобы получать все последние обновления прямо в ваш почтовый ящик.

Нужен ли вам Portainer, если у вас уже есть Docker?

Нет. Docker отлично работает из терминала, и многие люди годами запускают пару контейнеров, так и не установив интерфейс сверху.

Portainer нужен, если:

  • Вы будете управлять более чем двумя-тремя контейнерами Docker для разных приложений.
  • Вы предпочитаете нажать «перезапустить», а не вводить команду Compose заново в 11 вечера.
  • Вы предоставляете доступ тому, кто не работает в терминале.
  • Вы хотите развёртывать обновления стека из Git-репозитория без написания скрипта развёртывания.

Portainer не нужен, если:

  • У вас один-два контейнера, которые редко меняются.
  • Вы уже уверенно работаете с Docker Compose и вас это устраивает.

Сам Docker достаточно распространён, так что это не маргинальное решение. Согласно опросу разработчиков Stack Overflow за 2025 год, Docker — самая популярная платформа контейнеризации среди разработчиков с показателем использования более 70% — самый большой скачок за год среди всех технологий, отслеживаемых в опросе. Проект Portainer имеет примерно 37 000 звёзд на GitHub.

Существуют и другие варианты. Coolify продвигается дальше в сторону абстракций уровня PaaS, а Dokploy находится на схожей территории с меньшим потреблением ресурсов — но Portainer — это то, что большинство руководств по установке рекомендуют в первую очередь.

Если вы живёте в tmux и запускаете одно приложение, закройте эту вкладку. Всё в порядке. Если у вас запущено четыре собственных приложения, и вы гуглили «Что такое логи Docker?» дважды за этот месяц, читайте дальше.

Насколько мощный VPS нужен для работы Docker и Portainer?

VPS на 4 ГБ легко справляется с Portainer и небольшим набором контейнеров для побочных проектов.

Portainer рекомендует хост как минимум с 2 ГБ ОЗУ и 1 ядром CPU, хотя сам процесс Portainer Server в простое потребляет около 100 МБ. Демон Docker добавляет несколько сотен мегабайт накладных расходов ещё до запуска ваших приложений.

Вот как это соответствует реальным нагрузкам:

How To Run Docker and Portainer on a VPS (2026 Guide)

В DreamHost наш Self-Managed VPS предлагает четыре тарифа на основе ОЗУ (Stack 4, 8, 16 и 32), причём начальный Stack 4 размерно подходит именно для такого небольшого хоста Docker. (И да, NVMe-накопители и полный root-доступ включены.)

Если вы сомневаетесь, стоит ли овчинка выделки, Stack 4 — это тот размер, при котором математика начинает работать в вашу пользу уже с первого дня.

Одно замечание по хранилищу: объём хранилища Portainer минимален — он хранит только свою конфигурационную базу данных. В документации Portainer рекомендуется производительность на уровне SSD (≈3.5 МБ/с при последовательном доступе, 30 000+ IOPS, задержка записи <10 мс), что легко обеспечивается любым современным NVMe-диском. Диск становится реальной проблемой только в том случае, если вы запускаете тяжёлые контейнеры с базами данных, например Postgres или MySQL. Если ваш VPS в 2026 году работает на HDD, интерфейс Portainer будет тормозить задолго до того, как закончится ОЗУ. Наш совет: сначала обновите диск, а не тариф.

Как установить Docker и Portainer на VPS?

How To Run Docker and Portainer on a VPS (2026 Guide)

Это займёт шесть шагов и примерно 30 минут, большую часть которых вы будете ждать загрузки образов.

1. Выберите дистрибутив Linux

Ubuntu 22.04 или 24.04 LTS — путь наименьшего сопротивления. Ubuntu используется по умолчанию в DreamHost Self-Managed VPS, и большинство фрагментов кода для установки Docker и сообщения в сообществе подразумевают именно её. Debian и AlmaLinux тоже подойдут.

Не знаете, какая у вас версия Ubuntu? Узнайте пять способов проверить.

2. Установите Docker из официального репозитория

Не используйте apt install docker.io. Это установит старую версию Docker из репозитория Ubuntu.

Вместо этого используйте собственный apt-репозиторий Docker согласно официальной документации по установке Docker, которая добавляет GPG-ключ Docker, репозиторий и docker-ce вместе с плагином Compose за один раз.

3. Убедитесь, что Docker запущен

Запустите docker run hello-world.

Если вы не получили сообщение «Hello from Docker!», исправьте демон, прежде чем наслаивать Portainer поверх.

4. Создайте постоянный том для данных Portainer

Затем выполните docker volume create portainer_data.

Хранение базы данных Portainer на томе Docker (а не внутри контейнера) означает, что обновление Portainer не сотрёт вашу конфигурацию.

5. Запустите Portainer Community Edition

Используйте официальную команду установки из документации Portainer по установке на Linux:

  docker run -d 
  -p 8000:8000 
  -p 9443:9443 
  --name portainer 
  --restart=always 
  -v /var/run/docker.sock:/var/run/docker.sock 
  -v portainer_data:/data 
  portainer/portainer-ce:lts

Разберём эту команду построчно:

  • -d запускает контейнер в фоне.
  • -p 9443:9443 — веб-интерфейс Portainer по HTTPS.
  • -p 8000:8000 — туннель Edge Agent; он нужен только если вы планируете подключать удалённые окружения (Docker, Swarm или Kubernetes) через Edge Agent позже, поэтому на одноконтейнерной установке его можно опустить.
  • --restart=always обеспечивает перезапуск Portainer после перезагрузки.
  • -v — флаги для привязки сокета и постоянного тома из шага 4.
  • :lts — тег канала Long Term Support от Portainer — стабильная сборка, рекомендованная для продакшена.

6. Откройте веб-интерфейс и создайте учётную запись администратора

Откройте браузер и перейдите по адресу https://YOUR_VPS_IP:9443.

Проигнорируйте предупреждение о самоподписанном сертификате. Вы попадёте на экран «создание первого пользователя-администратора». Выберите имя пользователя, отличное от admin, задайте надёжный пароль и сохраните его в надёжном месте. И… вы внутри!

Почему Portainer просто выдал тайм-аут?

Потому что Portainer ждёт ровно пять минут, чтобы кто-то его активировал при первой установке. Если никто этого не делает, он «запирает дверь».

Дословно из собственного FAQ Portainer:

«В качестве меры безопасности при первой установке Portainer ждёт 5 минут, чтобы был создан пользователь-администратор. Если пользователь не создан в течение этих 5 минут, сервер Portainer перестаёт принимать запросы.»

Перевод: если на шаге 5 вы ушли делать бутерброд, ваша установка теперь отказывается с вами разговаривать — и вы не сделали ничего неправильно.

Исправление простое. Выполните docker restart portainer.

Это перезапустит контейнер, даст вам ещё одно пятиминутное окно и вернёт на экран создания администратора. Повторяйте по необходимости. Добро пожаловать в мир самостоятельного хостинга.

Если вы настраиваете установку для целого парка машин (Ansible, Terraform, конвейер развёртывания), Portainer принимает флаг --admin-password-file при запуске, который полностью обходит таймер, создавая администратора из файла при первом запуске. Документация по установке описывает синтаксис. Для разовой установки на VPS подойдёт и трюк с перезапуском.

Как остановить Docker, обходящий ваш брандмауэр?

How To Run Docker and Portainer on a VPS (2026 Guide)

Этот момент удивляет людей не только в разработке, но и в продакшене — так что слушайте внимательно.

Когда вы выполняете docker run -p 80:80, опубликованный порт становится доступен из интернета, даже если ufw status показывает, что порт 80 запрещён. Docker маршрутизирует трафик контейнеров в таблице NAT, то есть пакеты перенаправляются до того, как достигают цепочек INPUT и OUTPUT, которые использует UFW.

UFW не сломан. Просто он стоит в неправильном коридоре.

Исправление, которое рекомендует сам Docker, — это цепочка iptables DOCKER-USER, зарезервированная для правил администратора, чтобы Docker не перезаписывал их при перезапуске. (Правила не сохраняются после полной перезагрузки хоста — используйте iptables-persistent или systemd-сервис; ufw-docker делает это за вас.) Стандартный инструмент сообщества для подключения UFW к DOCKER-USER — это chaifeng/ufw-docker, который автоматизирует генерацию правил.

Установите его, затем проверьте с помощью сканирования портов извне вашего VPS, что порты, которые вы считаете закрытыми, действительно закрыты.

Я видел, как этот момент подловил одного опытного инженера дважды за одну неделю: сначала на личном сервере, затем на сервере клиента. UFW говорил одно, интернет — другое, а истина была в iptables.

Для Portainer в частности, порт 9443 опубликован, то есть административный интерфейс доступен из любой точки интернета сразу после запуска контейнера. Два разумных пути: ограничить 9443 через правила DOCKER-USER (разрешить только IP вашего дома или офиса) или закрыть его VPN-туннелем, например WireGuard, чтобы интерфейс вообще не имел публичного IP.

Что следует заблокировать сразу после первого входа?

Вы внутри. Пять дел, которые стоит выполнить, прежде чем закрыть вкладку браузера, согласно руководству по безопасности Portainer:

  • Принудительно использовать только HTTPS. Portainer по умолчанию включает HTTPS на порту 9443, но не требует его. Переключите тумблер в Настройках, чтобы интерфейс полностью отказывался от HTTP.
  • Замените самоподписанный сертификат. Загрузите сгенерированный вами сертификат или разместите Portainer за обратным прокси NGINX с сертификатом Let's Encrypt. После первого дня привычка каждый раз проходить через предупреждение браузера будет раздражать.
  • Используйте настоящее имя администратора. «Admin» — это первая догадка при любой попытке подбора учётных данных. Выберите что-то уникальное для вас.
  • Ограничьте доступ к интерфейсу через VPN. WireGuard — это рекомендуемый самим Portainer шаблон. Публичный порт 9443 с надёжными учётными данными — это нормально. Но 9443, доступный только в частной сети, — лучше.
  • Проверьте привязку сокета Docker. Всё, что имеет доступ на чтение к /var/run/docker.sock, может выполнять что угодно от root на хосте. Не монтируйте сокет в другие контейнеры без необходимости. Каждая дополнительная привязка — это новый путь к хосту. Если контейнер утверждает, что ему нужен сокет, спросите зачем — и рассмотрите прокси для сокета, если ответ «для мониторинга».

Как на самом деле использовать Portainer ежедневно?

Главная выгода от установки Portainer — это день, когда вы перестаёте подключаться по SSH, чтобы перезапустить проблемный контейнер, и начинаете нажимать кнопку. Ещё большая выгода — управление стеками.

Стек Portainer — это многоконтейнерное приложение, определённое в файле Docker Compose. Всё, что можно выразить в docker-compose.yml, можно развернуть как стек, тремя основными способами (исключая пользовательские шаблоны) согласно официальной документации по стекам:

  • Вставить Compose в веб-интерфейс
  • Загрузить файл Compose
  • Указать Portainer на Git-репозиторий
How To Run Docker and Portainer on a VPS (2026 Guide)

Путь через Git — это тот, который действительно важен. Вы указываете Portainer на публичный или аутентифицированный репозиторий и путь к docker-compose.yml. Portainer либо опрашивает репозиторий по расписанию (по умолчанию каждые пять минут), либо ждёт вебхук от GitHub. Когда файл Compose изменяется в репозитории, Portainer автоматически загружает и переразвёртывает приложение.

Это самостоятельная версия подхода «деплой при пуше» без необходимости платить PaaS за эту привилегию.

Вот перевод HTML-контента с сохранением всех тегов:

Маленькие ежедневные победы тоже накапливаются. Представьте себе логи на панели вместо docker logs -f, перезапуск в один клик, сборку стека по кнопке и графики ресурсов, которые можно просканировать за три секунды, не запуская Docker stats.

Portainer также поддерживает удалённые Docker-хосты через свой Edge Agent, что позволяет, к примеру, развернуть самодельного ИИ-ассистента или медиасервер на нескольких машинах.

Сколько стоит Portainer? (И когда бесплатное перестаёт быть бесплатным?)

Portainer Community Edition полностью бесплатен и без ограничений. Только что выполненная установка даёт все возможности для одного хоста с любым количеством контейнеров, которое может вместить ваш VPS. Никаких ограничений по узлам, никаких сроков действия и назойливых окон.

ВерсияСтоимостьУзлыДля кого
Community EditionБесплатно, с открытым исходным кодомНеограниченноЛичные проекты, домашняя лаборатория, одиночные VPS
Business Edition (Take 3)Бессрочно бесплатноДо 3Небольшие домашние лаборатории, которым нужны RBAC и журналы аудита
Business StarterОт $99/мес5, 10 или 15Небольшие команды, управляющие реальной инфраструктурой
Business ScaleОт $199/месДо 25Растущие команды, которым нужна поддержка 9×5
EnterpriseПо запросуНеограниченноКомплаенс и круглосуточная поддержка

Бессрочный бесплатный уровень на три узла (называется Take 3) стоит знать: вы продлеваете лицензию ежегодно без затрат, пока остаётесь на трёх узлах или меньше.

Это лучший вариант для большинства домашних лабораторий и небольших команд, которым нужны управление доступом на основе ролей (RBAC), журналы аудита и логирование активности без оплаты. Выше этого Business Starter стоит $99/мес на странице цен Portainer для бизнеса за 5/10/15 узлов; Scale — $199/мес до 25 узлов; Enterprise — по запросу.

Для почти всех, кто это читает, лучший выбор — Community Edition. Он будет работать на одном VPS в течение всего срока службы машины. Бизнес-версии оправдывают себя, только когда вы управляете реальным количеством узлов, нуждаетесь в RBAC для команды или требуется коммерческая поддержка для соблюдения требований.

Стоит ли устанавливать Portainer или пропустить?

Вот честный ответ в двух предложениях:

✅ Если вы собираетесь делиться этим сервером, развёртывать из Git или запускать более трёх контейнеров через год, установите Portainer, пока хост свежий, а привычки ещё формируются.

❌ Если вы запускаете одно тихое приложение и вас устраивает работа в терминале, вы не будете скучать по интерфейсу, который не установили.

Настоящий вопрос не в том, Portainer или нет. А в том, правильный ли это выбор для вас — и вы ответили на него, когда открыли эту вкладку.

VPS с 4 ГБ, Docker и Portainer CE дадут больше, чем многие ожидают — стек автоматизации, фотосервер, платформу для новостной рассылки и локального ИИ-ассистента — и всё это дешевле, чем вы, вероятно, платите за два стриминговых сервиса, которые почти не смотрите.

Неплохая сделка за машину, которая действительно ваша.

Часто задаваемые вопросы о Docker и Portainer

Для чего используется Portainer?

Portainer используется для управления контейнерами Docker, Docker Swarm и Kubernetes через веб-интерфейс. Он сам работает как Docker-контейнер, подключается к сокету Docker хоста и предоставляет браузерный просмотр и управление каждым контейнером на хосте — запуск и остановка контейнеров, развёртывание стеков из нескольких контейнеров, просмотр логов и управление доступом пользователей без входа по SSH.

Нужен ли Portainer, если у меня уже есть Docker?

Нет, Portainer не обязателен для использования Docker. Docker полностью работает из терминала, и многие самодельщики никогда не устанавливают графический интерфейс поверх.

Portainer оправдывает себя, когда вы управляете более чем двумя-тремя контейнерами, делитесь доступом с кем-то, кто не живёт в терминале, или развёртываете обновления стека из Git-репозитория. Пропустите его, если у вас один-два стабильных контейнера и вам комфортно с Docker Compose.

На каком порту работает Portainer?

Portainer по умолчанию работает на порту 9443 для HTTPS-доступа к веб-интерфейсу, а также на порту 8000 для туннеля Edge Agent, если позже вы подключите удалённые Docker-хосты. Порт 8000 опционален при установке на один хост; вы можете убрать флаг -p 8000:8000 из команды установки, не влияя на локальный интерфейс. Значения по умолчанию взяты из официальной документации Portainer по установке на Linux.

Сколько оперативной памяти нужно Portainer?

Сам Portainer потребляет около 100 МБ в простое, до загрузки чего-либо ещё. Добавьте несколько сотен МБ для демона Docker, а затем рассчитывайте объём исходя из того, что вы запускаете.

В DreamHost мы настраиваем наш начальный Self-Managed VPS с 4 ГБ ОЗУ именно под такие нагрузки — достаточно запаса для Portainer и небольшого стека контейнеров для побочных проектов, таких как Ghost, n8n, база данных Postgres и обратный прокси.

Portainer бесплатен?

Да. Portainer Community Edition полностью бесплатен, а Business Edition также имеет бессрочный бесплатный уровень на 3 узла под названием Take 3, который продлевается ежегодно без затрат, пока вы остаётесь на трёх узлах или меньше. Выше трёх узлов цены Business начинаются от $99/мес на тарифе Starter, согласно странице цен Portainer для бизнеса.

В чём разница между Portainer CE и Business Edition?

Portainer Community Edition — бесплатный, с открытым исходным кодом и полным функционалом для личного использования.

Business Edition добавляет управление доступом на основе ролей, журналы аудита, логирование активности и коммерческую поддержку, начиная с $99/мес за 5 узлов после бессрочного бесплатного уровня Take 3 на 3 узла.

Может ли Portainer управлять несколькими Docker-хостами?

Да, Portainer может управлять несколькими Docker-хостами через Edge Agents, которые запускаются на каждом удалённом хосте и опрашивают центральный сервер Portainer через порт UI, а порт 8000 используется для открытия защищённого туннеля обратно для команд управления. Для одного VPS это излишне. Для тех, у кого три и более машин, разделяющих одну панель управления, именно поэтому порт 8000 включён в команду установки.

Обходит ли Docker UFW на VPS?

Да, Docker по умолчанию обходит UFW, поскольку Docker управляет трафиком контейнеров на уровне iptables NAT, который находится перед цепочками INPUT и OUTPUT UFW.

Согласно документации Docker по фильтрации пакетов, «Пакеты перенаправляются до того, как достигают цепочек INPUT и OUTPUT, используемых UFW». Решение — цепочка iptables DOCKER-USER, а общепринятый инструмент для интеграции UFW с ней — chaifeng/ufw-docker.

How To Run Docker and Portainer on a VPS (2026 Guide)
Self-Managed VPS

Владейте своим стеком полностью. Приложения, ИИ, базы данных и другое.

Храните все учётные данные и разговоры на сервере, которым вы управляете, со скоростью NVMe и безлимитным трафиком.

Изучите планы Self-Managed VPS