Самый простой вариант это почитать как установить контейнер
https://docs.docker.com/engine/install выберите свою OS
Затем его нужно запустить и добавить в автозагрузку, а так же добавить пользователя от которого будете запускать контейнер в группу docker
Банальный способ проверить что docker поднялся это написать в консоли docker stats это как htop только для контейнеров ))).
затем нужно найти на hub.docker.com нужный контейнер и выполнить docker pull название контейнера. Но так можно не делать, а можно написать скрипт по запуску контейнера он сам все запулит.
Самые ходовые команды не все конечно.
docker ps - все запущенные контейнера
docker ps -a все запущенные и застопанные
docker logs -f имя запущенного контейнера.
docker images - какие есть скачанные образы
и конечно же
dockr stop name,
docker rm name остановить и удалить запущенный контейнер с именем.
netstat -atnup - посмотреть какие порты открыты
и
iptables -nvL - посмотреть что там в firewall. Кстати закрывать порт для контейнера на доступ из определенной сети нужно специальным образом. Так же нужен немого модифицированный fail2-ban. А в centos8 работает firewalld который несовместим с докерами. Ну как не совместим =))) если нельзя, но очень хочется - то можно все равно.
Эмм... кину в личку, если не возражаете скрипт по запуску москиты с плагином и базы mariadb. там предельно просто без всяких оркестровок кюбернетсов и композеров. Скрипт с живой машины и требует доработки напильником, но думаю что вы справитесь. будут вопросы можно либо в личку либо на мыло.
Мне понравилась идея с mqtt для flprog. В свободное время, пишу oauth2 (это войти через ...) на php7 но это не быстро продвигается, так как времени почти нет.
Отправлено спустя 1 час 37 минут 52 секунды:
Немного добавлю.
У mosquitto-auth-plugin фронтенда нет. Это просто плагин для комара. Все управление происходит через базу данных и отдельные фронтенды. Можно писать самому, или поискать, что то готовое, но я такого не нашел. Реализовать самому веб интерфейс не сложно, все технологии известны, весь затык в безопасной авторизации пользователей и красивости оформления. Кроме того автор mosquitto-auth-plugin перенес разработку в архив, видимо он отказывается это поддерживать. И если почитать issue то станет понятно почему. Тоесть как только mosquitto решит, что то обновить и поломает зависимости плагина плагин автоматически устареет. Я не знаю планы mosquitto примут ли они наработки или сделают свой плагин (а может уже сделали) и как дальше будет происходить развитие. Мне нужна поддержка ssl и вебсокетов в mosquitto и нашел этот контейнер. Возможно, есть что то другое. Если кто то подскажет буду рад.
структура базы это 2 таблицы. одна это пользователи, вторая это права доступа связаны между собой по username
Код: Выделить всё
DROP TABLE IF EXISTS `mqtt_users`;
CREATE TABLE `mqtt_users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(25) NOT NULL,
`pw` varchar(128) NOT NULL,
`super` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `mqtt_users_username` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
-- Table structure for table `mqtt_acls`
DROP TABLE IF EXISTS `mqtt_acls`;
CREATE TABLE `mqtt_acls` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(25) NOT NULL,
`topic` varchar(256) NOT NULL,
`rw` int(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
UNIQUE KEY `mqtt_acls_user_topic` (`username`,`topic`(228))
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
если комар запущен в контейнере то сгенерировать пароль для пользователя можно так
выхлоп добавить в поле pw пользователя.
Теперь с правами. У mosquitto они расширенные, а плагин не поддерживает столько (разработчик перенес в архив из-за бесконечных вопросов). Поэтому mqtt_acls.rw можно указать "2" согласно таблице это
write access (w) в это же входит подписка.
Как известно, что бы посмотреть все что бегает по mqtt даже если суперпупер длииный и сложный путь можно в subscribe указать # и весь сервер будет доступен. Поэтому у каждого пользователя в базе в таблице mqtt_acls в поле topic нужно написать путь куда он может писать и от куда он может читать.
Eсли написать так /flprog/username/ то пользователь сможет писать и читать только тут. Но если написать /flprog/username/# то пользователю будет доступно все что после username например он сможет писать /flprog/username/mamkinhaker. Для админа сервера есть специальная установка super если она 1 то доступен еще и топик sys .
Конечно, если админ хочет смотреть, что там бегает по mqtt то ему можно прописать в базе в качестве пути # и любое сообщение будет ему доступно по любому пути.
Отправлено спустя 12 минут 21 секунду:
Работу авторизации проверить просто. Надо читать логи, если в контейнере то это будет docker logs -f имяконтейнера будет длинная портянка где можно увидеть сообщение об авторизации.
Если на сервере то скорее всего в директории logs надо искать и интерактивный вывод будет tail -f /путь/до/лога/комара. Куда писать лог указывается в mosquitto.conf проверьте, что пользователю от которого запущен комар есть права на запись лога.
Отправлено спустя 22 секунды:
Извините за много букв =)