Назад

Управляем Docker через Portainer

Добрый день! Docker очень популярный способ получить ценность быстро, поэтому он очень прочно вошел в жизни айтишников. Я в блоге часто пишу об установке какого-то ПО через Docker. Так вот, Portainer это та штука, которая делает установку и управление образами Docker легче. Хотя сама на первый взгляд, довольно сложная штука.

Вот в этой статье мы установим Portainer и несколько приложений через него, в образе Docker. И конечно, сделаем это легко!

Установка Portainer

Инструкция написана для Ubuntu 20-22

Если у нас чистая ОС, то обновляемся и устанавливаем компоненты Docker. Если у нас уже стоит Docker и есть контейнеры, то пропускаем эту часть и переходим к установке Portainer.

Устанавливаем Docker

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Установка Portainer

docker volume create portainer_data
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:latest

Переходим в https://youip:9443 устанавливаем пароль. Обязательно через https, по дефолту переходит на http. И если зайти минут через 5 первый раз, то придется сносить контейнер и повторять установку — это такая своеобразная защита.

Установка SSL

Тут есть 2 варианта — если пользуемся Fastpannel, то просто добавляем домен и выпускаем сертификат на домен. Далее, заходим по адресу domain.com:9443

Далее, в настройках Portainer включаем SSL и добавляем сертификаты через Select File.

Сертификаты на домены Fastpannel хранит по адресу:

usr/local/fastpannel2/letsencrypt

То есть, выпускаем сертификаты на домен через Fastpannel и копируем через ftp (например) сертификаты себе на ПК, далее, даем скушать их Portainer.

Второй вариант получить SSL, выпускаем сертификат по инструкции ниже:

apt install snapd
snap install core; snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot certonly --standalone

Пишем название нашего домена – youdomain.ru (пример) и нам будет выпущен сертификат

Автоматический перевыпуск сертификата:

sudo certbot renew --dry-run

Наши сертификаты будут находиться по адресу:

/etc/letsencrypt/live/domain.ru/fullchain.pem
/etc/letsencrypt/live/domain.ru/privkey.pem

Установка приложений

Есть не менее 3-х способов добавить контейнер в Portainer, я расскажу про 2 из них.

Первый способ — через библиотеку приложений Portainer.

Находится это в App templates. Впрочем, там ничего интересного нет.

Второй способ — через Docker Hub.

Переходим в Containers > + Add container и нажимаем на кнопку Search. Нас перекинет в Docker Hub где мы можем найти огромный список контейнеров с ПО.

mattermost1
Управляем Docker через Portainer 9

Пример 1: установим Mattermost

Mattermost — open-sourse free платформа командой работы. Давайте ее установим за минуту.

Находим Mattermost в поиске, обращаем внимание на популярность продукту т.к. версий может быть несколько.

Копируем Docker Pull Command

docker pull mattermost/mattermost-team-edition

Вставляем в поле Image часть после pull, т.е. mattermost/mattermost-team-edition, если мы на вкладке + Add container. Пишем название (напр. mattermost).

Обязательно включаем Publish all exposed network ports to random host ports под заголовком Network ports configuration

И нажимаем кнопку, Deploy the container.

Portainer в фоне скачает и развернет контейнер и выдаст уведомление, что все ок.

Далее, зайдем в наш контейнер и разделе Container details, посмотрим какие порты назначены для Mattermost. Один из портов — панель управления.

Переходим на youdomain.ru:port и продолжим установку Mattermost в браузере.

То же самое можно сделать, например, с установкой 3X-UI из прошлой статьи.

Безопасность

Если у нас сервер новый, то давайте защищаться по полной:

Защита от брутфорса

apt install fail2ban -y && apt install ufw -y && apt install nano -y
touch /etc/fail2ban/jail.local && nano /etc/fail2ban/jail.local

Откроется редактор, вставим в него код:

[sshd]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/auth.log
findtime = 600
maxretry = 3
bantime = 43200

Нажимаем ctlr + x, далее y + enter, чтобы сохранить.

Настраиваем фаервол

Фаервол я использую ufw, поэтому настройка будет через него:

Обязательно оставим базовые для нас порты, учтем что SSH у нас на 22 порту (если нет, то поменяйте его в код ниже)

ufw allow 22 && ufw limit 22/tcp && ufw allow 80 && ufw allow 443 && ufw allow 9443

Далее, установим netstat и посмотрим какие порты нужно открыть. Это простой способ, чтобы понять, какие порты вообще нужно открывать.

apt install net-tools
netstat -ntlp | grep LISTEN

Смотрите порты, которые идут после 0.0.0.0:порт или IP_адрес вашего_сервера:порт, например:

Их и необходимо открыть в UFW.

Не забываем запустить UFW и подтвердить через Y + Enter.

ufw enable

На этом все, спасибо за внимание и комментарии 🙂

Dmitrii
Dmitrii
https://itstar.space
IT Project Manager, организатор IT-конференций в РФ, владелец 11 кошек и чихуа-хуа. Из которых половину спасли с женой из Турции, остальных спасли в РФ. В прошлом изобретатель с 16 лет, руководитель многочисленных лабораторий, проф. фотограф и еще хорошо готовлю. Короче очень клевый чувак, пацифист и любитель животных. Единственное, не веган :(
Подписаться
Уведомить о
guest
1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Inna
Inna
10 месяцев назад

Добрый день, спасибо за инструкцию на Portainer! Могли бы вы написать установку Outline и Bitwarden через Portainer?