Установка Portainer
Portainer — веб-интерфейс для управления Docker. Размещается в /srv/portainer.
1. Подготовка каталога#
Переходим в /srv, создаём каталог для контейнера и заходим в него.
cd /srv
sudo mkdir portainer
cd ./portainer2. Конфигурация docker-compose#
Создаём файл docker-compose.yml:
sudo nano docker-compose.ymlЗаполняем, сохраняем, закрываем:
services:
portainer:
# Безопасность
security_opt:
- no-new-privileges:true # не выдавать дополнительных привилегий
tmpfs:
- /tmp:rw,noexec,nosuid # не запускать исполняемые файлы из временной папки
# Настройки контейнера
container_name: portainer
image: portainer/portainer-ce:2.39.4 # 2.33.2
restart: always
#hostname: portainer.domain.com
networks:
- reverse_proxy
environment:
TZ: Europe/Moscow
volumes:
- /etc/localtime:/etc/localtime:ro # установка времени
- /var/run/docker.sock:/var/run/docker.sock # расположение Docker
- /srv/portainer/portainer_data:/data # постоянные настройки Portainer
ports:
# - "9000:9000"
- "9443:9443"
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "10"
networks:
reverse_proxy:
external: true3. Сеть (если ещё нет)#
docker network create -d bridge reverse_proxy4. Запуск#
docker compose up -dИнтерфейс доступен по https://<ip_или_localhost>:9443.
5. Настройка публичного IP#
Environments → Edit → Public IP — указать публичный IP.
6. Caddyfile#
В Caddyfile (вместо domain.ru — свой домен):
portainer.domain.ru {
reverse_proxy portainer:9443 {
transport http {
tls_insecure_skip_verify
}
}
}Полезно знать#
| Служебное | Значение |
|---|---|
/srv/portainer/portainer_data |
постоянное хранилище данных |
reverse_proxy |
сеть прокси; можно заменить на свою, например caddy_external |
порт 9443 |
HTTPS-порт Portainer |
порт 9000 |
HTTP, по умолчанию закомментирован |
security_opt: no-new-privileges |
контейнер не получает привилегий выше родительского процесса |