Аллоха, пикабушники и пикабушницы. надумал тут себе собрать домашний сервер для следующих задач: -научиться работать с линуксом (пларирую накатить ubuntu server) и админить сервера; -накатывать разное ПО для программирования (изучаю sql, C#, web программирование, сети и т.д.); -научиться работать с докером; -создать файлопомойку; -создать медиацентр;
Планирую поставить докер, в контейнерах наделать виртуальных машин и их уже использовать под задачи из списка выше;
В связи со всем этим, прошу знающих людей поделиться опытом, может я вообще неправильно все придумал?
Данная книга научит вас надежным, проверенным методам, используемым Docker, таким как замена виртуальных машин, использование архитектуры микросервисов, эффективное моделирование сети, производительность в автономном режиме и создание процесса непрерывной доставки на базе контейнеров.
Следуя формату «проблема/решение» в стиле поваренной книги, вы изучите реальные варианты использования Docker и узнаете, как применить их к собственным проектам.
Давайте представим, что нам нужно развернуть приложение, у которого есть явные требования к скорости сети. Мы например можем просто взять, открыть браузер, забить в гугле "тест скорости сети", открыть любой из приглянувшихся нам тестов скорости и... вспомнить что все эти тесты могут проверить только скорость вашего подключения к внешнему миру.
Ок. А что насчёт тестов скорости в локальной сети? Ну, в принципе у нас вроде как есть iperf. Но может еще что-то менее кондовое? Что-то еще есть. Это как раз https://github.com/openspeedtest/Speed-Test.
OpenSpeedTest - open source решение, предоставляющее возможность оценки производительности сети, и не требующее установки каких-либо агентов или плагинов на стороне клиента. После установки доступ к инструменту можно получить из любого современного браузера. Удобней всего развернуть docker-контейнер с OpenSpeedTest из готового образа (nginx+alpine). Запустить OpenSpeedTest можно как с готовым, и автоматически обновляемым LetsEncrypt SSL сертификатом, так и без него. В статье мы рассмотрим оба варианта.
Для запуска приложения нам понадобится только какая-нибудь машина с Linux, где мы сможем запускать контейнеры. В статье все действия будут проводиться на виртуалке с Ubuntu 22.04. Для других ОС отличие будет в основном только в методе установки Docker.
Установка Docker
Понятно, что большинство этот пункт могут воспроизвести с закрытыми глазами, но пусть будет.
Итак. Для начала позаботимся о скачивании и установке GPG ключа:
Запуск контейнера может занять некоторое время (вполне может повисеть пару минут). После того как контейнер запустится, откройте браузер и введите http://SERVER:3000, где SERVER - IP адрес сервера на котором размещён контейнер с OpenSpeedTest. После открытия веб-интерфейса приложения вам достаточно нажать кнопку Start, чтобы запустить проверку:
Никто не мешает так же подключаться к нему и по https, для этого в адресной строке браузера нужно будет ввести https://SERVER:3001.
Запуск с LetsEncrypt
Если вы предпочитаете разворачивать контейнеры с поддержкой LetsEncrypt SSL, вам нужно соблюсти несколько условий:
иметь белый IP
доменное имя, которое преобразуется в IP-адрес хост-сервера
почта
Если всё в наличие, то запуск контейнера с поддержкой LetsEncrypt SSL можно произвести следующей командой:
После удачного запуска контейнера, сервис будет доступен по адресу https://SERVER:443.
Заключение
В целом это все действия, которые потребуется сделать для запуска собственного сервера SpeedTest в своей локальной сети. Штука достаточно удобная и сильно упрощает поиск проблем в перспективе (при их появлении).
Если вам нужно иметь возможность общаться в закрытом сообществе куда никому другому не должно быть доступа и при этом не платить за лицензию то эта статья вам пригодится. Все что вам нужно будет - только наличие самого небольшого сервера с 1-2 гб оперативки. Обычно это стоит 200-300 руб в месяц.
Небольшой обзор вариантов.
Есть множество решений от разных компаний которые предлагают следующие решения
платные
условно бесплатные
опенсорсные
Нам интересны лишь те которые позволяют захостить чат именно на своем закрытом сервере и не потребуют оплаты (в идеале опенсорсные). Ниже несколько подходящих примеров:
Zulip
EJabberd
Openfire
Matrix org
Mattermost
Кстати некоторые из них также предлагают и видео/аудио возможности общения (также бесплатно).
Я пытался настроить несколько из них и самым простым решением оказался Mattermost, плюс к серверу бесплатно идет веб и мобильное приложение. Поэтому тут я приведу его в качестве примера. Mattermost не просто предоставляет бесплатную версию но и:
Mattermost is an open source platform for secure collaboration across the entire software development lifecycle.
Mattermost дает исходники написанные на Go/React которые мы можем скопировать и использвоть с MIT лицензией поэтому мы можем пользоваться им совершенно бесплатно а также менять код по нашему желанию. Итого Mattermost:
Предоставляет исходные код (Open source) те дает возможность внесения правок в код
Позволяет хостится на своем сервере без доступа третьей стороны
Не имеет ограничений на количество серверов
Не имеет лимита на сообщения, поиск в истории, итд - Вы сами хостите и сами себе хозяин
Установка Mattermost.
Исходный код лежит вот тут. Мы будем использоват докер для запуска и поэтому нам понадобится всего лишь два файла. Как арендовать сервер и ставить докер я писал тут и тут .
config.json вот c этимсодержанием. Единственное что потребуется поменять так это YOUR_IP куда нужно подставить айпишник вашего сервера.
docker-compose.yaml вот это содержанием (можете поменять пароли по вашему желанию)
Запускаем сервер, подключаемся.
После того как config.json и docker-compose.yaml были созданы и заполнены (должны находится в одной папке). Мы пише команду:
docker-compose up -d
Стоит обратить внимание что мы используем mattermost/mattermost-team-edition:latest образ который не требует с нас лицензии.
Через несколько секунд можно заходить по ссылке http://ваш_айпишник:8065 где при первом входе попросят создать учетную запись для админа.
Базовая функциональность уже покрывает большинство нужд:
Так выглядит веб версия, думаю десктопная версия будет схожа.
из коробки идет:
Базовое оформление сообщений аля цитаты, списки, вставка кода (хотя по моему довольно кривая)
Вставка картинок
Добавление файлов
Создание каналов
Личная переписка с пользователями
Мобильная версия. Android, IOS.
Поставить можно и на андройд и на айфон.
4.4 из 5 в андройде и 4.5 в IOS.
Вид со стороны мобилки:
С виду обычное мобильное приложение. С учетом того что оно бесплатное и готовое - вообще топчик.
Итого
В общем Mattermost это лишь одно из возможных решений для закрытого чата вашего сообщества или какой либо организации, может небольшого ИП. Пользоваться им бесплатно законно и относительно просто. Надеюсь вам пригодится. Если статья зайдет я постараюсь поднять другое решение но уже с наличием видео и аудио звонок. Всем спасибо за внимание, кому интересна разработа и практическое айти приглашаю в мой телеграм канал.
Книга "Docker на практике" Иана Милла, Эйдана Хобсона и Сейерса - это практическое руководство, которое позволяет читателям изучить и использовать технологию контейнеризации Docker. Благодаря подробным объяснениям, примерам кода и наглядным иллюстрациям, авторы позволяют читателям получить полное представление о том, как использовать Docker для разработки, тестирования и развертывания приложений.
Аннотация представляет собой полезное описание содержания книги, в котором указываются основные темы, концепции и примеры, рассмотренные в книге.
Книга начинается с введения в Docker, где объясняются основные понятия и преимущества контейнеризации. Затем авторы рассматривают основные этапы работы с Docker, включая установку и конфигурацию, создание Docker-образов и контейнеров, а также управление развертыванием и масштабированием приложений.
В следующих главах книги подробно описываются различные аспекты использования Docker в разработке и тестировании приложений. Для этого рассматриваются такие темы, как создание и использование сред для разработки, использование инструментов для автоматизации тестирования и развертывания, а также интеграция Docker с другими технологиями разработки.
Особое внимание уделено безопасности и мониторингу в контексте Docker. Авторы рассматривают различные сценарии защиты Docker-контейнеров и предлагают рекомендации по работе с проблемами безопасности. Они также представляют инструменты и методы для мониторинга и отладки приложений на Docker.
Книга "Docker на практике" также включает в себя примеры реальных проектов, где авторы демонстрируют, как применять Docker в различных сценариях. Эти примеры помогают читателям лучше понять, как использовать Docker в реальной жизни.
В целом, "Docker на практике" является полезным руководством для разработчиков и системных администраторов, которые хотят освоить Docker и использовать его для разработки и развертывания приложений. Авторы предоставляют читателям практические инструменты и советы, которые позволяют быстро и эффективно начать работу с Docker.