Установка Portainer

Portainer для граф оболочки Docker

размещать будем в папку /srv/portainer

Переходим в папку srv

cd /srv

Создаем каталог для контейнера

sudo mkdir portainer

Переходим в каталог портейнера

cd ./portainer

Создаем файл конфигурации для docker compose

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.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  # расположение докера
      - /srv/portainer/portainer_data:/data  # расположение настроек порртейнера
    ports:
      # - "9000:9000"
      - "9443:9443"

networks:
  reverse_proxy:
    external: true

/srv/portainer/portainer_data:/data создает постоянное хранилище данных. reverse_proxy заменить на свою сеть прокси, например на caddy_external

Создаем свою сеть (если нет)

docker network create -d bridge reverse_proxy

Запускаем контейнер

docker compose up -d

Теперь интерфейс доступен по адресу https://<ip_или_localhost>:9443

Редактируем локальную настройку портейнера. Указываем публичный IP: Environments -> Edit -> Public IP

в Caddyfile (domain.ru заменить):

portainer.domain.ru {
    reverse_proxy portainer:9443 {
		transport http {
			tls_insecure_skip_verify
		}
	}
}

Готово!