Установка Portainer: веб-панель для Docker

Установка Portainer: веб-панель для Docker на своём VPS

Марина
Марина
📅 29 сентября 2026
Установка Portainer: веб-панель для Docker на своём VPS

Portainer ставится одной командой: он сам работает как контейнер и после запуска отдаёт веб-интерфейс по адресу https://IP-сервера:9443. Вся установка на чистом VPS с Linux с уже поднятым Docker занимает меньше пяти минут, и ещё столько же уходит на то, чтобы задать пароль администратора и закрыть панель от посторонних. Никаких пакетов в систему при этом не добавляется — удаляется Portainer так же, одной командой.

Материал для тех, кто уже запускал контейнеры руками и устал каждый раз лезть в терминал за логами. Разберём команду запуска по флагам, первый вход и правило пяти минут, опасность проброса docker.sock, три схемы закрытия доступа, что удобнее делать мышкой, а что быстрее в консоли, а также диагностику, если панель не открывается.

Что такое Portainer и что он делает с вашим Docker

Portainer — это веб-панель управления Docker. Она не заменяет Docker и ничего не устанавливает поверх него: панель просто подключается к уже работающему демону и показывает в браузере то же самое, что вы видели бы через команды docker ps, docker logs и docker images. Демон — это фоновая служба Docker, которая на самом деле запускает контейнеры; панель ей только отдаёт команды.

Практическая польза в том, что рутинные действия перестают требовать памяти на синтаксис. Посмотреть последние 200 строк лога упавшего контейнера, зайти внутрь него терминалом, перезапустить, глянуть занятое томами место — всё это два-три клика вместо набора команд с флагами. Отдельная карточка Portainer в глоссарии описывает продукт коротко, здесь же разберём именно установку и настройку.

Редакции две: бесплатная Community Edition (образ portainer/portainer-ce) и платная Business. Для одного сервера возможностей CE хватает полностью — ниже везде речь про неё.

Что должно быть на сервере до установки Portainer

Portainer не ставит Docker за вас. Если на сервере его нет, сначала пройдите установку Docker, а потом возвращайтесь сюда. Проверить, что демон жив, можно одной командой — она печатает версию клиента и сервера:

docker --version
docker ps

Первая строка выводит версию, вторая — список запущенных контейнеров. Если docker ps отвечает ошибкой «permission denied», значит, вы работаете не под root и не состоите в группе docker; тогда все команды ниже выполняйте через sudo. Если ответ «Cannot connect to the Docker daemon» — демон не запущен, поднимите его командой sudo systemctl start docker.

Из системных требований Portainer скромен: рабочая 64-битная ОС (подойдёт Ubuntu 24.04, Debian 12 или любая свежая система семейства RHEL — AlmaLinux, Rocky Linux), Docker версии 20.10 или новее и свободный порт 9443. Сам контейнер панели расходует ориентировочно 50–100 МБ оперативной памяти — на фоне контейнеров с приложениями это незаметная величина.

Какой VPS подойдёт под Portainer и сколько это стоит

Отдельный сервер под панель не нужен: она живёт на той же машине, где крутятся ваши контейнеры. Вопрос ставится иначе — какой минимальной конфигурации хватит, чтобы на ней одновременно работали Docker, пара приложений и Portainer сверху. Практический минимум — 1 ядро и 1 ГБ памяти, но при 1 ГБ следите за свободным местом: образы и тома съедают диск быстрее, чем кажется.

В каталоге 44 площадки, и на нижней границе цен конфигурации с Docker вполне работоспособны. Вот стартовые тарифы провайдеров, у которых порог входа самый низкий:

Провайдер Цена от Стартовая конфигурация Тарифов в каталоге
Cloudcore 59 ₽/мес 1 ядро, 1 ГБ RAM, 10 ГБ NVMe 12
Hosting-Russia 99 ₽/мес уточняется у провайдера —
4VPS 110 ₽/мес 1 ядро, 1 ГБ RAM, 5 ГБ NVMe 568
HostVDS 127 ₽/мес 1 ядро, 1 ГБ RAM, 10 ГБ NVMe 12

Данные проверены 04.09.2026.

Обратите внимание на диск: 5 ГБ у стартового тарифа 4VPS — это мало для Docker, потому что образы легко занимают 1–2 ГБ каждый. Если планируете больше двух-трёх контейнеров, берите от 20 ГБ или сразу смотрите недорогие VPS с запасом по диску. Память тоже лучше брать 2 ГБ — это спасёт от падений при сборке образов.

Установка Portainer одной командой: разбор каждого флага

Команда запуска выглядит громоздко, но каждый её кусок делает ровно одну вещь. Скопируйте её целиком и выполните на сервере под root или через sudo:

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

Обратный слэш в конце строк — это перенос: он говорит оболочке, что команда продолжается дальше. Можно записать всё одной строкой, результат тот же. Разберём флаги:

Флаг Что делает
-d Запускает контейнер в фоне, терминал сразу освобождается
-p 9443:9443 Пробрасывает порт 9443 сервера на порт 9443 внутри контейнера — это HTTPS-интерфейс панели
--name portainer Даёт контейнеру понятное имя вместо случайного, чтобы дальше обращаться к нему по этому имени
--restart=always Поднимает панель автоматически после перезагрузки сервера или падения контейнера
-v /var/run/docker.sock:/var/run/docker.sock Даёт панели доступ к сокету Docker — без этого она не увидит ни один контейнер
-v portainer_data:/data Кладёт настройки и пароли в именованный том, чтобы они пережили пересоздание контейнера

После запуска проверьте, что контейнер поднялся: docker ps должен показать строку с именем portainer и статусом Up. Если статус Restarting — смотрите docker logs portainer, чаще всего дело в занятом порте.

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

Первый вход в панель и правило пяти минут

Откройте в браузере https://IP-вашего-сервера:9443. Именно https, не http: панель по этому порту работает по HTTPS с самоподписанным сертификатом, поэтому браузер покажет предупреждение о недоверенном соединении — это нормально, жмите «Дополнительно» и продолжайте. Сертификат самоподписанный, потому что у свежего сервера ещё нет домена, на который его можно выпустить.

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

docker restart portainer

Команда перезапускает контейнер, счётчик пяти минут начинается заново, данные при этом не теряются. Пароль администратора задавайте длиной не меньше 12 символов — панель короче не примет. После входа Portainer предложит выбрать окружение: нажимайте «Get Started», это подключение к локальному Docker на том же сервере.

Почему проброс docker.sock равен выдаче root-доступа

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

Отсюда простой вывод: администратор Portainer фактически равен root на сервере. Не «почти», а именно равен. Поэтому панель нельзя считать «просто удобной оболочкой» и открывать её в интернет с расчётом на то, что пароль как-нибудь выдержит. Веб-интерфейс с таким уровнем доступа — самая привлекательная цель на всём сервере.

Как не открыть панель всему интернету: три рабочих схемы

Правильный подход к панели с root-правами — закрывать её на уровне сети, а не одним паролем. Схемы упорядочены от самой строгой к самой мягкой; выбирайте по тому, сколько человек и откуда должны заходить.

Самый надёжный вариант — вообще не публиковать порт наружу и ходить через SSH-туннель. Тогда снаружи открыт только порт 22/TCP, который у вас и так закрыт ключами. Пошагово:

  1. Остановите и удалите текущий контейнер: docker stop portainer && docker rm portainer — данные в томе portainer_data при этом сохранятся.
  2. Запустите ту же команду, но с привязкой к локальному интерфейсу: замените -p 9443:9443 на -p 127.0.0.1:9443:9443. Теперь порт слушает только сам сервер.
  3. На своём компьютере поднимите туннель: ssh -L 9443:127.0.0.1:9443 root@IP-сервера. Флаг -L перенаправляет локальный порт на удалённый через шифрованное SSH-соединение.
  4. Не закрывая окно терминала, откройте в браузере https://127.0.0.1:9443 — вы попадёте в панель на сервере.
  5. Проверьте снаружи, что порт закрыт: с другой машины curl -k https://IP-сервера:9443 должен вернуть ошибку соединения. Флаг -k отключает проверку сертификата, иначе curl ругнётся на самоподписанный.

Вторая схема мягче: порт публикуется, но файрвол пускает на него только ваш IP. В ufw — простом файрволе Ubuntu — правило выглядит так: ufw allow from 203.0.113.10 to any port 9443 proto tcp. Вместо адреса из примера подставьте свой. Подходит, если у вас статический IP; при динамическом правило придётся править. Подробности по правилам — в гайде про настройку файрвола на Linux-сервере.

Третья схема — панель за обратным прокси на домене с нормальным сертификатом и базовой HTTP-авторизацией сверху. Так делают, когда доступ нужен нескольким людям с разных адресов, и это единственный вариант без предупреждений браузера.

Три схемы доступа к панели Portainer: туннель, файрвол и прокси
Проброс сокета делает администратора панели равным root на сервере, поэтому доступ ограничивают на уровне сети, а не только паролем.

Что реально удобно делать в Portainer мышкой

Панель окупается на повторяющихся операциях, где консоль требует длинных команд с флагами. Логи открываются в живом режиме с автопрокруткой, фильтром по строке и возможностью показать только последние N строк — искать ошибку так заметно быстрее, чем перебирать вывод docker logs с ключами.

Второе по частоте — консоль внутри контейнера. Кнопка Console открывает командную строку контейнера прямо в браузере, без набора docker exec -it имя bash: панель сама предложит выбрать оболочку списком. Третье — тома и образы: видно, что сколько занимает и какие образы больше не используются.

Стеки Compose — главный аргумент в пользу панели

Раздел Stacks позволяет вставить YAML-файл Docker Compose — текстовое описание всех контейнеров связки — прямо в поле на странице и развернуть весь набор сервисов кнопкой. Правки вносятся там же, в редакторе с подсветкой, а после сохранения панель сама пересоздаёт изменившиеся контейнеры. Для человека, который держит на сервере три-четыре связки приложений, это экономит больше времени, чем всё остальное вместе взятое.

Что быстрее сделать из консоли, чем в панели

Мышка проигрывает там, где нужно повторить действие много раз или где ответ нужен одной строкой. Массовое удаление мусора — классический пример: команда docker system prune -a за один заход убирает неиспользуемые образы, сети и остановленные контейнеры, тогда как в панели их придётся отмечать по одному в нескольких разделах.

Так же в консоли быстрее всё, что попадает в скрипты: развёртывание по git pull, регулярные бэкапы томов, копирование файлов внутрь контейнера. Правило простое: разовое и визуальное — в панели, повторяемое — в консоли. Работать можно параллельно: изменения, сделанные командами, появляются в интерфейсе после обновления страницы.

Обновление Portainer без потери настроек

Обновление устроено как пересоздание контейнера на свежем образе. Настройки, пользователи и подключённые окружения лежат не в контейнере, а в томе portainer_data, поэтому переживают процедуру. Порядок действий:

  1. Остановите контейнер: docker stop portainer.
  2. Удалите его: docker rm portainer — том остаётся на месте, удаляется только оболочка.
  3. Скачайте свежий образ: docker pull portainer/portainer-ce.
  4. Запустите ту же команду docker run, что и при установке, с теми же флагами и тем же именем тома.
  5. Зайдите в панель под старым паролем и убедитесь, что окружение и контейнеры на месте.

Перед обновлением полезно сделать копию тома: docker run --rm -v portainer_data:/data -v $(pwd):/backup alpine tar czf /backup/portainer-backup.tar.gz /data. Команда поднимает временный контейнер, монтирует в него том и текущую папку, упаковывает данные в архив и завершается. Если что-то пойдёт не так, архив вернёт настройки.

Панель не открывается: диагностика по слоям

Разбирать проблему нужно снизу вверх — от контейнера к сети и только потом к браузеру. Так вы не будете чистить кэш, когда контейнер вообще не запущен. Каждый слой проверяется одной командой.

Начните с сервера: жив ли контейнер и слушает ли кто-то порт. Затем проверьте доступность порта снаружи и только в конце ищите проблему в браузере.

Что проверяем Команда О чём говорит плохой ответ
Контейнер запущен docker ps -a --filter name=portainer Статус Exited или Restarting — смотрите логи, порт 9443 скорее всего занят
Причина падения docker logs portainer «address already in use» — порт занят; «permission denied» — проблема с сокетом или с SELinux (системой ограничения прав в RHEL-подобных ОС)
Порт слушается ss -tlnp | grep 9443 Пусто — Docker не пробросил порт, проверьте флаг -p в команде запуска
Порт открыт снаружи curl -k -I https://IP:9443 с другой машины Таймаут — блокирует файрвол сервера или сетевой фильтр провайдера
Протокол адресная строка браузера Ошибка на http:// — вы забыли букву s, порт 9443 работает только по HTTPS

Отдельный случай — панель открывается, но окружение пустое и контейнеров не видно. Это почти всегда неверно смонтированный сокет: перепроверьте путь /var/run/docker.sock в команде запуска, опечатка в нём не вызывает ошибки, просто панель ничего не находит.

Частые ошибки при установке Portainer

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

  • Запуск без флага -v portainer_data:/data — при пересоздании контейнера теряются пользователи и все настройки.
  • Попытка зайти по http:// вместо https:// — браузер показывает пустую страницу или ошибку, хотя панель работает.
  • Публикация порта 9443 в интернет без ограничений — доступ к панели равен root-доступу к серверу.
  • Опоздание с созданием администратора: форма закрывается через 5 минут, лечится командой docker restart portainer.
  • Установка панели на сервер с диском 5 ГБ — место кончается на втором-третьем образе, и Docker начинает падать при сборке.
  • Забытый флаг --restart=always — после перезагрузки сервера панель не поднимается, и это обнаруживается в самый неподходящий момент.

Частые вопросы

Portainer бесплатный? Редакция Community Edition бесплатна без ограничений по числу контейнеров и серверов, платная Business отличается ролями, командной работой и внешней авторизацией. Для одного администратора и одного сервера разницы вы не почувствуете.

Нужно ли устанавливать Docker отдельно? Да, обязательно: Portainer сам является контейнером и без работающего Docker просто не запустится. Сначала ставите Docker, проверяете его командой docker ps, и только потом выполняете команду установки панели.

Что будет, если я удалю контейнер Portainer? Панель перестанет открываться, но ваши приложения продолжат работать — Portainer не управляет ими постоянно, а только отдаёт команды демону. Настройки самой панели сохранятся в томе portainer_data и подхватятся при следующем запуске.

Можно ли поставить Portainer на обычный виртуальный хостинг? Нет, нужен VPS или выделенный сервер с root-правами, потому что требуется доступ к сокету Docker. На шаред-хостинге такого доступа не бывает по определению, там вы работаете внутри чужого окружения.

Хватит ли 1 ГБ памяти? Для самой панели хватит с запасом — она расходует ориентировочно 50–100 МБ. Проблемы начнутся не из-за Portainer, а из-за приложений в контейнерах, поэтому при трёх и более сервисах берите 2 ГБ.

Можно ли управлять несколькими серверами из одной панели? Да, Portainer поддерживает подключение дополнительных окружений через агента, который ставится контейнером на каждый удалённый сервер. Настраивать это стоит только после того, как вы закрыли доступ к самой панели сетевыми средствами.

Portainer заменяет мониторинг? Нет, он показывает текущее состояние контейнеров, но не хранит историю и не шлёт оповещения. Для уведомлений о падениях ставьте рядом отдельный инструмент — например, по инструкции про мониторинг через Uptime Kuma.

Итог

Установка Portainer сводится к одной команде docker run, входу по HTTPS на порт 9443 и созданию администратора в первые 5 минут. Главное, что нужно сделать сверх инструкции, — не оставлять порт открытым в интернет: проброс docker.sock даёт панели права root, поэтому ходите через SSH-туннель или ограничьте доступ по IP.

Для одной панели и пары контейнеров хватит конфигурации от 1 ядра и 1–2 ГБ памяти, а такие тарифы в каталоге начинаются от 59 ₽/мес. Сравнить конфигурации и цены 44 площадок можно в разделе аренды VPS.

Поделиться:
👁 76 просмотров
Марина
Редактор · FREEHOSTING
Главный редактор FREEHOSTING. С 2020 года тестирует VDS, VPS и хостинг-провайдеров — арендует серверы, нагружает их реальными проектами и пишет честные обзоры по итогам. Помогает читателям выбирать хостинг под свои задачи: от Telegram-бота до production-сайта.