На днях в чате в обсуждении почтовых серверов, как обычно, поднялся вопрос прикрепления к письмам больших файлов. У облачных провайдеров типа Яндекса или Мейла есть возможность большие файлы прикреплять к письмам в виде ссылки, а сами файлы загружаются и хранятся на их файловых сервисах. Когда пользователей пересаживаешь с этих сервисов, они очень грустят и просят такую же функциональность на своих серверах.
В комментариях читатель упомянул плагин для популярного веб интерфейса Roundcube, который позволяет так же просто и удобно прикреплять к письмам большие файлы в виде ссылок на собственное хранилище NextCloud. Раньше я не встречал подобной функциональности. Её реально не хватает на настроенных у себя почтовых серверах.
Решил сразу же проверить, как это работает. Развернул быстро Nextcloud, поднял Roundcube и установил на него плагин Nextcloud Attachments for Roundcube. Никаких особых проблем не возникло. Работает просто и удобно. У меня сходу всё получилось настроить. Правда я хорошо знаю всю эту кухню, но тем не менее. Все файлы, что выходят за разрешённый лимит сервера, предлагается загрузить в Nextcloud.
Roundcube и Nextcloud можно настроить в стороне от вашего сервера, никак его не трогая. Потестировать эту связку нет никаких проблем. Отдельным вопросом стоит сквозная аутентификация. Но даже если её вообще не настраивать, то при первом прикреплении пользователю выскочит предложение пройти аутентификацию в Nextcloud и разрешить Roundcube загружать туда файлы.
В репозитории автора есть описание доступных настроек и картинка с примером, как это работает. Если честно, я по картинке ничего не понял. Ниже мои скрины, которые отражают весь процесс добавления вложения: предложение аутентификации, ссылка на файл в теле письма, как это письмо со ссылкой выглядит у получателя, и как этот файл выглядит, когда перейдёшь по ссылке.
Вообще, это очень крутая функциональность. Если обмен идёт неприватными файлами, то можно быстро поднять Nextcloud, сделать там одну учётку для всех своих пользователей и пусть они под ней прикрепляют туда свои большие файлы и отправляют. Получатели будут видеть только каждый свой файл из письма.
Из минусов – нет перевода на русский язык. Но там текста всего несколько фраз. Можно и вручную в исходниках перевести.
⇨ 🌐 Исходники
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#mailserver #fileserver
В комментариях читатель упомянул плагин для популярного веб интерфейса Roundcube, который позволяет так же просто и удобно прикреплять к письмам большие файлы в виде ссылок на собственное хранилище NextCloud. Раньше я не встречал подобной функциональности. Её реально не хватает на настроенных у себя почтовых серверах.
Решил сразу же проверить, как это работает. Развернул быстро Nextcloud, поднял Roundcube и установил на него плагин Nextcloud Attachments for Roundcube. Никаких особых проблем не возникло. Работает просто и удобно. У меня сходу всё получилось настроить. Правда я хорошо знаю всю эту кухню, но тем не менее. Все файлы, что выходят за разрешённый лимит сервера, предлагается загрузить в Nextcloud.
Roundcube и Nextcloud можно настроить в стороне от вашего сервера, никак его не трогая. Потестировать эту связку нет никаких проблем. Отдельным вопросом стоит сквозная аутентификация. Но даже если её вообще не настраивать, то при первом прикреплении пользователю выскочит предложение пройти аутентификацию в Nextcloud и разрешить Roundcube загружать туда файлы.
В репозитории автора есть описание доступных настроек и картинка с примером, как это работает. Если честно, я по картинке ничего не понял. Ниже мои скрины, которые отражают весь процесс добавления вложения: предложение аутентификации, ссылка на файл в теле письма, как это письмо со ссылкой выглядит у получателя, и как этот файл выглядит, когда перейдёшь по ссылке.
Вообще, это очень крутая функциональность. Если обмен идёт неприватными файлами, то можно быстро поднять Nextcloud, сделать там одну учётку для всех своих пользователей и пусть они под ней прикрепляют туда свои большие файлы и отправляют. Получатели будут видеть только каждый свой файл из письма.
Из минусов – нет перевода на русский язык. Но там текста всего несколько фраз. Можно и вручную в исходниках перевести.
⇨ 🌐 Исходники
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#mailserver #fileserver
1👍155👎3
📩 Расскажу про комбинированную схему работы своего почтового сервера, которая может оказаться простой и надёжной, но при этом очень бюджетной. Я об этом ранее упоминал в отдельных заметках, но не делал акцента.
➖ Очевидные проблемы своего почтового сервера, которые нужно решать:
◽️Отказоустойчивость и доступность.
◽️Доверие к своему IP адресу, транспорт почты.
◽️Борьба со спамом.
➕ Плюсы своего почтового сервера:
🟢 Дёшево на длинном интервале.
🟢 Ящики могут быть очень большого объёма, платите только за свои диски.
🟢 Накручиваете любую функциональность и интеграции, никаких ограничений.
Я предлагаю убрать проблемы следующим образом. У многих провайдеров есть услуга в виде почты. Она может продаваться как отдельно, так и в составе каких-то других услуг, например, виртуального хостинга. Вот пример такой услуги. Показываю не в качестве рекламы, а просто как пример, как это может выглядеть со стороны хостера.
Вы покупаете подобную услугу и настраиваете свой почтовый сервер где угодно. У хостера будут готовые инструкции, где и что надо настроить в DNS, чтобы почта доставлялась к нему. Вы настраиваете и вся почта улетает к провайдеру.
Настройка у провайдера может разниться. Я сталкивался с разными вариантами. Можно создать один почтовый ящик, куда будет сыпаться вся почта, адресованная на ящики домена. Это наиболее простой и удобный вариант. Один раз настроил и больше к провайдеру не обращаешься. Возможно придётся создать каждый почтовый ящик, куда вы хотите принимать почту.
⇨ Далее вы берёте свой почтовый сервер, добавляете туда пользователей. В настройках сервера указываете, что почту для пользователя нужно брать с внешнего сервера. Указываете учётные данные для доступа в ящик, где лежит почта. Также указываете в своём сервере, что отправку нужно делать через внешний релей провайдера.
Настройки серверов могут разниться. Я по такой схеме работал с Kerio и Postfix. В Kerio вообще всё просто. Он может забирать разом всю почту из общего ящика провайдера, куда валится почта для всего домена и раскладывать его по локальным ящикам пользователей на основе адреса получателя. Либо можно для каждого конкретного ящика указать ящик у провайдера, откуда он будет забирать почту. Ну и в качестве сервера для отправки указывается почтовый сервер провайдера.
У Postfix принцип такой же, но больше ручной работы. Забирать почту у провайдера можно через Fetchmail. Настраивать можно конфигами в консоли, либо с помощью RoundCube или PostfixAdmin. У них есть интеграция с Fetchmail. Ну а отправка настраивается на сервере через параметр relayhost. Более того, если вы хотите для разных доменов использовать разные сервера для отправки, то используете параметр transport_maps, которому можно указать список доменов и соответствие внешних smtp серверов, через которые будет отправка.
❗️Обращаю внимание на последний момент с transport_maps. Меня не раз спрашивали, как в рамках одного почтового сервера и нескольких доменов делать отправку так, чтобы не было видно, что они связаны между собой. С помощью внешних почтовых серверов и Postfix это легко настраивается. Арендуете разные услуги внешнего сервера SMTP и настраиваете на своём почтовом сервере отправку через них, используя разный сервер для каждого домена.
📌 Итак, что мы получаем на выходе:
1️⃣ Почта с сервера провайдера забирается по протоколу POP3 с удалением после получения. За место нам платить не надо. Это существенно уменьшает стоимость.
2️⃣ Провайдер сам отправляет почту и организует доступность сервера. Даже если у нас что-то сломается или нам нужно будет заменить свой сервер, вся почта будет прилетать на сервер провайдера. А когда наш оживёт, заберёт почту. Нам не нужно решать вопросы доступности. Мы не теряем почту в случае своих аварий.
3️⃣ Локально мы можем сколько угодно хранить почту, не переживая за занимаемое место.
Существенный минус один – нужно в двух местах делать настройки: на своем сервере и провайдерском.
Схема 100% рабочая и эффективная. Я не раз использовал.
#mailserver
➖ Очевидные проблемы своего почтового сервера, которые нужно решать:
◽️Отказоустойчивость и доступность.
◽️Доверие к своему IP адресу, транспорт почты.
◽️Борьба со спамом.
➕ Плюсы своего почтового сервера:
🟢 Дёшево на длинном интервале.
🟢 Ящики могут быть очень большого объёма, платите только за свои диски.
🟢 Накручиваете любую функциональность и интеграции, никаких ограничений.
Я предлагаю убрать проблемы следующим образом. У многих провайдеров есть услуга в виде почты. Она может продаваться как отдельно, так и в составе каких-то других услуг, например, виртуального хостинга. Вот пример такой услуги. Показываю не в качестве рекламы, а просто как пример, как это может выглядеть со стороны хостера.
Вы покупаете подобную услугу и настраиваете свой почтовый сервер где угодно. У хостера будут готовые инструкции, где и что надо настроить в DNS, чтобы почта доставлялась к нему. Вы настраиваете и вся почта улетает к провайдеру.
Настройка у провайдера может разниться. Я сталкивался с разными вариантами. Можно создать один почтовый ящик, куда будет сыпаться вся почта, адресованная на ящики домена. Это наиболее простой и удобный вариант. Один раз настроил и больше к провайдеру не обращаешься. Возможно придётся создать каждый почтовый ящик, куда вы хотите принимать почту.
⇨ Далее вы берёте свой почтовый сервер, добавляете туда пользователей. В настройках сервера указываете, что почту для пользователя нужно брать с внешнего сервера. Указываете учётные данные для доступа в ящик, где лежит почта. Также указываете в своём сервере, что отправку нужно делать через внешний релей провайдера.
Настройки серверов могут разниться. Я по такой схеме работал с Kerio и Postfix. В Kerio вообще всё просто. Он может забирать разом всю почту из общего ящика провайдера, куда валится почта для всего домена и раскладывать его по локальным ящикам пользователей на основе адреса получателя. Либо можно для каждого конкретного ящика указать ящик у провайдера, откуда он будет забирать почту. Ну и в качестве сервера для отправки указывается почтовый сервер провайдера.
У Postfix принцип такой же, но больше ручной работы. Забирать почту у провайдера можно через Fetchmail. Настраивать можно конфигами в консоли, либо с помощью RoundCube или PostfixAdmin. У них есть интеграция с Fetchmail. Ну а отправка настраивается на сервере через параметр relayhost. Более того, если вы хотите для разных доменов использовать разные сервера для отправки, то используете параметр transport_maps, которому можно указать список доменов и соответствие внешних smtp серверов, через которые будет отправка.
❗️Обращаю внимание на последний момент с transport_maps. Меня не раз спрашивали, как в рамках одного почтового сервера и нескольких доменов делать отправку так, чтобы не было видно, что они связаны между собой. С помощью внешних почтовых серверов и Postfix это легко настраивается. Арендуете разные услуги внешнего сервера SMTP и настраиваете на своём почтовом сервере отправку через них, используя разный сервер для каждого домена.
📌 Итак, что мы получаем на выходе:
Существенный минус один – нужно в двух местах делать настройки: на своем сервере и провайдерском.
Схема 100% рабочая и эффективная. Я не раз использовал.
#mailserver
Please open Telegram to view this post
VIEW IN TELEGRAM
masterhost.ru
Просто почта - удобный интерфейс и защита от СПАМа | masterhost
Просто почта от masterhost. Возможность получить качественную почту с удобным интерфейсом и защитой от СПАМа и вирусов по приятной цене!
👍96👎7
На днях рассказывал про то, как быстро запустить уже настроенный сайт на Wordpress. Решил немного развить эту тему и подготовить docker compose, который позволит сразу запустить сайт с HTTPS, чтобы его можно было полноценно использовать для публикации в интернете.
Для этой задачи взял веб сервер Angie, который имеет встроенный модуль ACME, позволяющий автоматически получить сертификаты от Let's Encrypt. Причём настройка очень простая. Пример посмотрел в документации. Достаточно добавить в раздел http:
и в раздел server:
В данном случае значение параметра acme_client и acme в виде wordpress может быть любым. Это я его так обозвал. Лучше его привязать к домену и сделать таким же как server_name. Но у меня в примере поддомен, а параметр после точки не воспринимает значение, поэтому обозвал просто wordpress. Если сайтов будет несколько, то эти параметры тоже должны различаться.
После запуска Angie, он сам получит сертификаты на указанное доменное имя, положит их у себя в контейнере в директорию
Упаковал всё это в отдельный репозиторий. Достаточно его клонировать:
Указать своё имя домена в файлах
О том, что из себя представляет файл configure-wp.sh и как выполняется начальная настройка Worpdress, я писал в предыдущей заметке.
В репозитории конфигурация Angie немного расширена помимо стандартных настроек. Сначала хотел туда добавить всё, что я использую: мониторинг, разные форматы логов, лимиты, веб консоль angie и т.д. Но потом передумал. Всё это бездумно добавлять нельзя. Для того же мониторинга и консоли нужно настраивать ограничения доступа, для лимитов нужно тоже понимать, что это и зачем, а то можно поисковых ботов заблокировать.
Думаю, что подробно про настройку Angie напишу отдельно. Я его уже повсеместно использую вместо Nginx. Он лучше и функциональнее. Бесплатная версия Nginx после продажи почти не развивается. Такое ощущение, что продукт просто решили похоронить.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#wordpress #angie
Для этой задачи взял веб сервер Angie, который имеет встроенный модуль ACME, позволяющий автоматически получить сертификаты от Let's Encrypt. Причём настройка очень простая. Пример посмотрел в документации. Достаточно добавить в раздел http:
http {
resolver 62.76.76.62 62.76.62.76 1.1.1.1;
acme_client wordpress https://acme-v02.api.letsencrypt.org/directory;
............
}
и в раздел server:
server {
listen 443 ssl;
http2 on;
server_name 337153.simplecloud.ru;
acme wordpress;
ssl_certificate $acme_cert_wordpress;
ssl_certificate_key $acme_cert_key_wordpress;
.....................
}
В данном случае значение параметра acme_client и acme в виде wordpress может быть любым. Это я его так обозвал. Лучше его привязать к домену и сделать таким же как server_name. Но у меня в примере поддомен, а параметр после точки не воспринимает значение, поэтому обозвал просто wordpress. Если сайтов будет несколько, то эти параметры тоже должны различаться.
После запуска Angie, он сам получит сертификаты на указанное доменное имя, положит их у себя в контейнере в директорию
/var/lib/angie/acme/
и будет автоматически обновлять. Организовано очень удобно. Не нужны никакие дополнительные программы типа certbot или acme.sh.Упаковал всё это в отдельный репозиторий. Достаточно его клонировать:
# git clone https://gitflic.ru/project/serveradmin/wordpress-angie-tls.git
# cd wordpress-angie-tls
Указать своё имя домена в файлах
angie_default.conf
и configure-wp.sh
, установить Docker и запустить:# curl https://get.docker.com | bash -
# docker compose up
О том, что из себя представляет файл configure-wp.sh и как выполняется начальная настройка Worpdress, я писал в предыдущей заметке.
В репозитории конфигурация Angie немного расширена помимо стандартных настроек. Сначала хотел туда добавить всё, что я использую: мониторинг, разные форматы логов, лимиты, веб консоль angie и т.д. Но потом передумал. Всё это бездумно добавлять нельзя. Для того же мониторинга и консоли нужно настраивать ограничения доступа, для лимитов нужно тоже понимать, что это и зачем, а то можно поисковых ботов заблокировать.
Думаю, что подробно про настройку Angie напишу отдельно. Я его уже повсеместно использую вместо Nginx. Он лучше и функциональнее. Бесплатная версия Nginx после продажи почти не развивается. Такое ощущение, что продукт просто решили похоронить.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#wordpress #angie
2👍85👎2
У меня на канале выходит много заметок с использованием Docker. Хочу высказать своё мнение по поводу его использования. Где-то считаю его уместным, а где-то не очень. Расскажу, как к этому отношусь.
Оставляю за скобками ситуацию, когда речь идёт о разработке приложений на базе микросервисов с деплоем в разные среды. Там понятно и очевидно использование контейнеров в силу самой архитектуры информационной системы. Хотя там тоже есть свои нюансы, но я сейчас не об этом, а о запуске каких-то одиночных служб типа веб сервера, мониторинга, почтового сервера и т.д..
В таких ситуациях я воспринимаю Docker как некое подобие пакетного менеджера, который упрощает установку и запуск софта, но привносит свои особенности в эксплуатацию. Какие бы ни были там небольшие накладные расходы в плане производительности, тем не менее он добавляет свой слой абстракции и усложняет этим архитектуру (сетевые бриджи, правила файрвола, управление запуском и т.д.).
Возьмём к примеру сервер мониторинга Zabbix. Он что через Docker контейнер ставится в пару действий, что через пакетный менеджер. То есть использование контейнера не упрощает установку, поэтому я не вижу смысла его ставить в прод через Docker. Он ставится и обновляется в одно действие:
И через Docker:
Зачем тут лишняя сущность в виде Docker? Он будет иметь смысл для каких-то тестовых сборок из набора контейнеров, чтобы быстро запускать в разных средах, что-то тестировать, удалять и т.д. Тогда да, можно собрать compose и использовать. Но если нужно будет поставить в прод, то я поставлю из пакетов. Мне так проще и удобнее в эксплуатации.
То же самое относится к Nginx, Angie, Mysql, Php-fpm, Prometheus и т.д. То, что по сути состоит из пакета или бинарника и файла конфигурации к нему не вижу смысла запускать в постоянную эксплуатацию в контейнере. Если у разработчиков есть собранные пакеты, то буду использовать их.
Другое дело более сложный в плане установки софт, для которого пакетов нет. Тогда вручную его собирать, устанавливать, обновлять и поддерживать может быть очень хлопотно. Наглядные примеры, с которыми сталкивался сам - Onlyoffice, Webpagetest. У первого хоть и есть пакеты, но с ними много проблем с зависимостями. Часто нельзя обновиться без ошибок. У второго вообще пакетов нет, его ставить вручную – пуд соли съесть. Причём я ставил, вопрос решаемый, но очень трудоёмкий. Не хочется этим заниматься.
❗️Отдельно выделю софт, который может быть полностью сконфигурирован через переменные окружения при запуске контейнера и не требует подключения файлов конфигурации. Тут без вопросов, запустить в одну команду с ключами проще, чем ставить и отдельно готовить файл конфигурации. Пример - Traefik. У него доступно динамическое управление конфигурацией через переменные. Это удобно.
☝️ Подвожу итог. Всё, что не касается микросервисов, я запускаю в Docker только если установка из пакетов невозможна, либо слишком трудоёмка. Продукты, для которых у разработчиков есть репозитории под Debian, будут установлены из репозиториев. Речь идёт именно о промышленной эксплуатации, а не тестовых запусках.
Если речь идёт о связке нескольких продуктов в единое целое, то тоже буду смотреть на сложность установки и обновления. Если связку можно поставить по отдельности и потом через
А вы что думаете по этому поводу? Знаю популярное мнение, что абсолютно всё запускается в Docker из-за стандартизации и единообразия. Как по мне, это сомнительный аргумент, так как единая система и общий репозиторий к ней это такая же стандартизация.
#docker #мнение
Оставляю за скобками ситуацию, когда речь идёт о разработке приложений на базе микросервисов с деплоем в разные среды. Там понятно и очевидно использование контейнеров в силу самой архитектуры информационной системы. Хотя там тоже есть свои нюансы, но я сейчас не об этом, а о запуске каких-то одиночных служб типа веб сервера, мониторинга, почтового сервера и т.д..
В таких ситуациях я воспринимаю Docker как некое подобие пакетного менеджера, который упрощает установку и запуск софта, но привносит свои особенности в эксплуатацию. Какие бы ни были там небольшие накладные расходы в плане производительности, тем не менее он добавляет свой слой абстракции и усложняет этим архитектуру (сетевые бриджи, правила файрвола, управление запуском и т.д.).
Возьмём к примеру сервер мониторинга Zabbix. Он что через Docker контейнер ставится в пару действий, что через пакетный менеджер. То есть использование контейнера не упрощает установку, поэтому я не вижу смысла его ставить в прод через Docker. Он ставится и обновляется в одно действие:
# apt install zabbix-server-mysql
# apt update zabbix-server-mysql
И через Docker:
# docker run --name zabbix-server-mysql -e DB_SERVER_HOST="some-mysql-server" -e MYSQL_USER="some-user" -e MYSQL_PASSWORD="some-password" --init -d zabbix/zabbix-server-mysql:tag
Зачем тут лишняя сущность в виде Docker? Он будет иметь смысл для каких-то тестовых сборок из набора контейнеров, чтобы быстро запускать в разных средах, что-то тестировать, удалять и т.д. Тогда да, можно собрать compose и использовать. Но если нужно будет поставить в прод, то я поставлю из пакетов. Мне так проще и удобнее в эксплуатации.
То же самое относится к Nginx, Angie, Mysql, Php-fpm, Prometheus и т.д. То, что по сути состоит из пакета или бинарника и файла конфигурации к нему не вижу смысла запускать в постоянную эксплуатацию в контейнере. Если у разработчиков есть собранные пакеты, то буду использовать их.
Другое дело более сложный в плане установки софт, для которого пакетов нет. Тогда вручную его собирать, устанавливать, обновлять и поддерживать может быть очень хлопотно. Наглядные примеры, с которыми сталкивался сам - Onlyoffice, Webpagetest. У первого хоть и есть пакеты, но с ними много проблем с зависимостями. Часто нельзя обновиться без ошибок. У второго вообще пакетов нет, его ставить вручную – пуд соли съесть. Причём я ставил, вопрос решаемый, но очень трудоёмкий. Не хочется этим заниматься.
❗️Отдельно выделю софт, который может быть полностью сконфигурирован через переменные окружения при запуске контейнера и не требует подключения файлов конфигурации. Тут без вопросов, запустить в одну команду с ключами проще, чем ставить и отдельно готовить файл конфигурации. Пример - Traefik. У него доступно динамическое управление конфигурацией через переменные. Это удобно.
☝️ Подвожу итог. Всё, что не касается микросервисов, я запускаю в Docker только если установка из пакетов невозможна, либо слишком трудоёмка. Продукты, для которых у разработчиков есть репозитории под Debian, будут установлены из репозиториев. Речь идёт именно о промышленной эксплуатации, а не тестовых запусках.
Если речь идёт о связке нескольких продуктов в единое целое, то тоже буду смотреть на сложность установки и обновления. Если связку можно поставить по отдельности и потом через
apt upgrade
обновлять, то скорее всего соберу из пакетов. Если нужны будут дополнительные действия после обновления пакетов, то скорее всего буду использовать предоставленный docker compose.А вы что думаете по этому поводу? Знаю популярное мнение, что абсолютно всё запускается в Docker из-за стандартизации и единообразия. Как по мне, это сомнительный аргумент, так как единая система и общий репозиторий к ней это такая же стандартизация.
#docker #мнение
1👍122👎14
На днях в комментариях промелькнул бесплатный почтовый сервер Mox с открытым исходным кодом. Про него не слышал ранее, поэтому решил посмотреть, что это такое. Я его развернул и немного попользовался. Перейду сразу к конкретике, перечислив плюсы и минусы.
✅ Плюсы:
1️⃣ Простая и быстрая установка. Весь сервер – это один скомпилированный бинарник, написанный на Go. Во время первого запуска нужно указать почтовый ящик администратора на том домене, где он будет работать. Сервер автоматически создаст все конфигурационные файлы, dkim ключ, покажет все необходимые DNS записи, которые нужно добавить. Там речь пойдёт не только про MX, SPF, DKIM, DMARC. Также будут показаны необходимые записи для работы MTA-STS, автообнаружения конфигурации почтовыми клиентами и некоторые другие.
То есть просто запускаете сервер и по его инструкции добавляете DNS. Всё, больше ничего делать не надо.
2️⃣ Сервер включает в себя все современные протоколы и технологии, публичные списки репутации IP адресов (лучше отключить), некоторые алгоритмы для борьбы со спамом с обучением, а также Greylisting.
3️⃣ Сервер сам получает, обновляет и использует TLS сертификаты от Let's Encrypt. Ничего настраивать по этой теме не надо.
4️⃣ Сервер включает в себя очень простой веб интерфейс для админки и веб клиента. Скриншоты в конце статьи. Веб клиент, конечно, выглядит уныло. Но он хотя бы есть. Никто не мешает использовать любой другой - локальный Thunderbird или тот же RoundCube, настроенный отдельно или тут же на сервере.
5️⃣ Встроенный мониторинг в виде экспорта метрик в формате Prometheus с примерами готовых правил для триггеров.
🔴 Минусы:
1️⃣ Это проект одного человека. И хотя он очень продуктивен, проекту уже несколько лет, активная разработка продолжается, но тем не менее.
2️⃣ Никакую дополнительную функциональность к серверу не добавить. Что есть, тем и пользуешься. Никакого Sieve, Milter тут пока нет, хотя автор обещает реализовать если судить по roadmap.
3️⃣ Нет и не будет поддержки POP3. Мне кажется для таких небольших серверов его поддержка была бы актуальна для каких-то своих небольших или нестандартных задач.
Почта хранится в формате maildir. Это не плюс и не минус, а скорее стандарт для такого рода серверов. Можно просто зайти на сервер и посмотреть все письма в ящиках в текстовом формате.
В целом, решение мне понравилось своей простотой и скоростью настройки. Проще я вообще не видел. Чем-то похож на бесплатный Tegu, который тоже представляет из себя один бинарник на Go. У последнего нет поддержки ACME для автоматического получения сертификатов и работы с TLS. Нет такой удобной автонастройки, но по функциональности и возможностям настроек в админке он выигрывает. Тот же Milter поддерживает, Fail2ban.
Mox хорошо подойдёт для личного сервера, для разовых или простых задач, типа отправка почты с сайта, когда не хочется заморачиваться с настройкой, для небольшого коллектива. Поднял сервер, добавил пользователя и вперёд. Ставится он так:
В консоли увидите всю дальнейшую информацию по настройке DNS, а так же созданные учётные записи администратора и пользователя почты. Веб интерфейс отвечает только на localhost, поэтому для доступа туда надо сделать проброс портов по SSH со своей машины:
И далее идите по ссылкам localhost:8080/admin/ и localhost:8080/webmail/. Перед этим надо добавить службу в systemd:
Это полная инструкция по настройке. Достаточно добавить предложенные DNS записи и Thunderbird будет автоматически настраивать ящик по введённому логину и паролю.
⇨ 🌐 Сайт / Исходники
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#mailserver
✅ Плюсы:
1️⃣ Простая и быстрая установка. Весь сервер – это один скомпилированный бинарник, написанный на Go. Во время первого запуска нужно указать почтовый ящик администратора на том домене, где он будет работать. Сервер автоматически создаст все конфигурационные файлы, dkim ключ, покажет все необходимые DNS записи, которые нужно добавить. Там речь пойдёт не только про MX, SPF, DKIM, DMARC. Также будут показаны необходимые записи для работы MTA-STS, автообнаружения конфигурации почтовыми клиентами и некоторые другие.
То есть просто запускаете сервер и по его инструкции добавляете DNS. Всё, больше ничего делать не надо.
2️⃣ Сервер включает в себя все современные протоколы и технологии, публичные списки репутации IP адресов (лучше отключить), некоторые алгоритмы для борьбы со спамом с обучением, а также Greylisting.
3️⃣ Сервер сам получает, обновляет и использует TLS сертификаты от Let's Encrypt. Ничего настраивать по этой теме не надо.
4️⃣ Сервер включает в себя очень простой веб интерфейс для админки и веб клиента. Скриншоты в конце статьи. Веб клиент, конечно, выглядит уныло. Но он хотя бы есть. Никто не мешает использовать любой другой - локальный Thunderbird или тот же RoundCube, настроенный отдельно или тут же на сервере.
5️⃣ Встроенный мониторинг в виде экспорта метрик в формате Prometheus с примерами готовых правил для триггеров.
🔴 Минусы:
1️⃣ Это проект одного человека. И хотя он очень продуктивен, проекту уже несколько лет, активная разработка продолжается, но тем не менее.
2️⃣ Никакую дополнительную функциональность к серверу не добавить. Что есть, тем и пользуешься. Никакого Sieve, Milter тут пока нет, хотя автор обещает реализовать если судить по roadmap.
3️⃣ Нет и не будет поддержки POP3. Мне кажется для таких небольших серверов его поддержка была бы актуальна для каких-то своих небольших или нестандартных задач.
Почта хранится в формате maildir. Это не плюс и не минус, а скорее стандарт для такого рода серверов. Можно просто зайти на сервер и посмотреть все письма в ящиках в текстовом формате.
В целом, решение мне понравилось своей простотой и скоростью настройки. Проще я вообще не видел. Чем-то похож на бесплатный Tegu, который тоже представляет из себя один бинарник на Go. У последнего нет поддержки ACME для автоматического получения сертификатов и работы с TLS. Нет такой удобной автонастройки, но по функциональности и возможностям настроек в админке он выигрывает. Тот же Milter поддерживает, Fail2ban.
Mox хорошо подойдёт для личного сервера, для разовых или простых задач, типа отправка почты с сайта, когда не хочется заморачиваться с настройкой, для небольшого коллектива. Поднял сервер, добавил пользователя и вперёд. Ставится он так:
# useradd -m -d /home/mox mox
# cd /home/mox
# wget https://beta.gobuilds.org/github.com/mjl-/[email protected]/linux-amd64-go1.24.1/0Ip8URcp-Eig5CZORoGnm25XVWMo/mox-v0.0.14-go1.24.1
# mv mox-v0.0.14-go1.24.1 mox
# ./mox quickstart [email protected]
В консоли увидите всю дальнейшую информацию по настройке DNS, а так же созданные учётные записи администратора и пользователя почты. Веб интерфейс отвечает только на localhost, поэтому для доступа туда надо сделать проброс портов по SSH со своей машины:
# ssh -L 8080:localhost:80 [email protected]
И далее идите по ссылкам localhost:8080/admin/ и localhost:8080/webmail/. Перед этим надо добавить службу в systemd:
# chmod 644 mox.service
# systemctl enable $PWD/mox.service
# systemctl start mox.service
Это полная инструкция по настройке. Достаточно добавить предложенные DNS записи и Thunderbird будет автоматически настраивать ящик по введённому логину и паролю.
⇨ 🌐 Сайт / Исходники
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#mailserver
2👍132👎5
Media is too big
VIEW IN TELEGRAM
В прошлую пятницу обсуждали выбор ноутбука. Как говорится, порвали три баяна. На первых 300 комментариях я ещё следил за ними, потом перестал. Работать надо было. Так что всё не читал. Обсуждение напомнило старую песенку
Научно-технический рэп - Надо было ставить линукс:
▶️ https://www.youtube.com/watch?v=W87wOCSPA08
На удивление, линуксоиды в этот раз вели себя тише всех остальных. Если кому-то интересно, что я в итоге решил, то скажу. Пока надумал взять какой-то старенький Macbook на M1 и просто попробовать его. Ни разу не работал на macOS. Почему хотя бы не попробовать? Если понравится, буду думать о чём-то новом и современном. Если нет – отдам кому-нибудь из семейных. У меня нет проблем с утилизацией старой техники. Всё находит применение. Могу отдать жене, родителям, детям.
Другое дело, что времени сейчас особо нет всем этим заниматься. У меня довольно плотный график всевозможных дел. Просто так сесть и начать ковыряться с новой системой, а тем более переносить туда какие-то настройки, подбирать ПО и т.д. тупо некогда. Так что тема пока подвисла в воздухе. Это не то же самое, что клонировать хард на новый ноут с виндой.
У меня на повестке дня переезд всем своим семейством из квартиры в дом в Подмосковье. Там срочно всё доделывается. До этого я несколько лет туда ездил в основном что-то поделать и побыть одному в тишине. Переезд постоянно откладывался из-за рождения малышей. Мне первого этажа хватало, а семьёй мы обычно у родителей на даче время проводили. Теперь надо всё привести в порядок, доделать детские комнаты на втором этаже и купить туда мебель. В свой кабинет, кстати, хочу вот такую штуку купить для работы. Пока это только мысли, так и не доехал в выставочный зал чтобы попробовать.
#разное
Научно-технический рэп - Надо было ставить линукс:
▶️ https://www.youtube.com/watch?v=W87wOCSPA08
На удивление, линуксоиды в этот раз вели себя тише всех остальных. Если кому-то интересно, что я в итоге решил, то скажу. Пока надумал взять какой-то старенький Macbook на M1 и просто попробовать его. Ни разу не работал на macOS. Почему хотя бы не попробовать? Если понравится, буду думать о чём-то новом и современном. Если нет – отдам кому-нибудь из семейных. У меня нет проблем с утилизацией старой техники. Всё находит применение. Могу отдать жене, родителям, детям.
Другое дело, что времени сейчас особо нет всем этим заниматься. У меня довольно плотный график всевозможных дел. Просто так сесть и начать ковыряться с новой системой, а тем более переносить туда какие-то настройки, подбирать ПО и т.д. тупо некогда. Так что тема пока подвисла в воздухе. Это не то же самое, что клонировать хард на новый ноут с виндой.
У меня на повестке дня переезд всем своим семейством из квартиры в дом в Подмосковье. Там срочно всё доделывается. До этого я несколько лет туда ездил в основном что-то поделать и побыть одному в тишине. Переезд постоянно откладывался из-за рождения малышей. Мне первого этажа хватало, а семьёй мы обычно у родителей на даче время проводили. Теперь надо всё привести в порядок, доделать детские комнаты на втором этаже и купить туда мебель. В свой кабинет, кстати, хочу вот такую штуку купить для работы. Пока это только мысли, так и не доехал в выставочный зал чтобы попробовать.
#разное
1👍106👎7
Вместо того, чтобы от скуки втыкать в ленты соц. сетей или ютуба на смартфоне, предлагаю поиграть в викторину с вопросами на тему Linux:
🎮 Linux Master (google play)
Занимательная и полезная игра. Результат моего прохождения первых трёх уровней на картинке снизу. Никуда не подглядывал, консолью не пользовался. Всё по памяти. Потом уже пришлось немного подсказки смотреть, чтобы побыстрее открыть следующие уровни.
Засыпался постоянно на вопросах с
Игра простая и занимательная. Знать Linux надо хорошо, чисто для линуксоидов игрушка. Если не знаешь, то интереса никакого. Сначала открыты первые 3 уровня. После успешного прохождения хотя бы двух, открываются следующие.
Если кто-то будет играть, напишите честно, какой результат получили в первый заход без подсказок. Я в первой викторине знал все ответы. Одну ошибку сделал, тыкнув не вчитавшись в ответы. А в других уже по сути ошибался.
#игра
🎮 Linux Master (google play)
Занимательная и полезная игра. Результат моего прохождения первых трёх уровней на картинке снизу. Никуда не подглядывал, консолью не пользовался. Всё по памяти. Потом уже пришлось немного подсказки смотреть, чтобы побыстрее открыть следующие уровни.
Засыпался постоянно на вопросах с
cd
. Например, не знал, что cd
без аргументов отправляет тебя в домашнюю директорию. Всегда для этого cd ~
набирал. Также не ответил на вопрос, что делает команда cd .
Для cd -
тоже выбрал неправильный ответ. Викторину про Navigation раз 5 проходил, пока не ответил правильно на все вопросы. Игра простая и занимательная. Знать Linux надо хорошо, чисто для линуксоидов игрушка. Если не знаешь, то интереса никакого. Сначала открыты первые 3 уровня. После успешного прохождения хотя бы двух, открываются следующие.
Если кто-то будет играть, напишите честно, какой результат получили в первый заход без подсказок. Я в первой викторине знал все ответы. Одну ошибку сделал, тыкнув не вчитавшись в ответы. А в других уже по сути ошибался.
#игра
2👍123👎3
Пост для обсуждения прошлой публикации. Из-за глюка удалил случайно.
👍9👎3
Решил проработать тему с бесплатными почтовыми серверами. Есть ещё 2, которые мне показались интересными. Один из них Mailu. Это практически стандартный почтовый сервер на базе популярных open source компонентов: postfix, dovecot, roundcube или snappymail, rspamd, clamav. Собран он в docker compose.
Админка самописная на python. В истории проекта рассказано, что хотелось как-то освежить и осовременнить стандартный стек почтового сервера. Для этого упаковали всё в контейнеры и заменили PostfixAdmin на новую админку. В принципе, разумный подход. Лично меня в качестве сугубо почтового сервера связка Postfix + Dovecot вполне устраивает. Настраивается просто, работает стабильно, возможности в рамках поддерживаемых протоколов максимальные. Для большей функциональности нужно придумывать свой протокол и почтовый клиент. Бесплатно такого нет. А на базе smtp и imap чего-то большего уже не реализовать.
Из особенностей именно Mailu - конструктор для построения конфигурации. Ответив на простые вопросы на тему имени домена, сервера, каких-то лимитов и т.д. вы получаете
За счёт того, что Mailu полностью упакован в контейнеры и заточен на работу в качестве микросервисного приложения, его можно использовать в Kubernetes. Для этого есть готовый Helm Chart.
По умолчанию Mailu использует SQLite. При желании можно перенести в PostgreSQL или MySQL. Почта хранится в формате maildir.
Я развернул и попробовал Mailu. Установка выглядит так:
1️⃣ Идём на setup.mailu.io и отвечаем на вопросы. В конце получаем готовый конфиг.
2️⃣Переходим в консоль сервера. Ставим Docker и загружаем конфигурацию:
3️⃣ Смотрим скачанные файлы, что-то можно подправить, заодно увидеть состав сервера. Там следующий набор контейнеров:
- redis
- nginx
- unbound
- admin (админка)
- dovecot
- postfix
- oletools
- rspamd
- fetchmail
- webmail (roundcube)
Запускаем:
4️⃣ После того, как весь стек запустится, создаём учётку администратора:
5. Можно идти по имени домена в веб интерфейс и выбирать, логиниться в админку или почтовый клиент. В админке есть русский язык. Выглядит она функционально и современно. Жаль, что она не оформлена отдельно. Я бы её вместо PostfixAdmin с удовольствием использовал.
TLS сертификаты будут получены и настроены автоматически. Для каждого пользователя есть свой личный кабинет, где он может посмотреть настройки для приложений, сменить пароль, включить автоответ, добавить учётку от внешнего сервера, с которого fetchmail будет забирать почту.
Сервер мне максимально понятен и близок по функциональности, потому что используется стек, который я хорошо знаю. Плюс сверху удобная админка. Из минусов лично для меня - Docker. Я почтовые сервера давно настраиваю и знаю, что если его раз настроил, то потом много лет не трогаешь. Он обновляется из пакетов стандартного системного репозитория. Ни масштабировать, ни куда-то переносить между разными окружениями, ни деплоить по 5 раз на дню его не придётся. Живёт он обычно в отдельной виртуалке.
Например, у меня сразу по какой-то причине не заработал веб интерфейс Roundcube. В логах контейнера ошибки:
Надо лезть в контейнер и разбираться, что там с ним не так. Без них было бы проще. А так я сходу даже не увидел, где и как используется этот порт. Судя по всему imap внутри другого контейнера не отвечает, но при этом он нормально опубликован во вне.
В целом сервер неплох. Рекомендую.
⇨ 🌐 Сайт / Исходники
#mailserver
Админка самописная на python. В истории проекта рассказано, что хотелось как-то освежить и осовременнить стандартный стек почтового сервера. Для этого упаковали всё в контейнеры и заменили PostfixAdmin на новую админку. В принципе, разумный подход. Лично меня в качестве сугубо почтового сервера связка Postfix + Dovecot вполне устраивает. Настраивается просто, работает стабильно, возможности в рамках поддерживаемых протоколов максимальные. Для большей функциональности нужно придумывать свой протокол и почтовый клиент. Бесплатно такого нет. А на базе smtp и imap чего-то большего уже не реализовать.
Из особенностей именно Mailu - конструктор для построения конфигурации. Ответив на простые вопросы на тему имени домена, сервера, каких-то лимитов и т.д. вы получаете
docker-compose.yml
и .env
. Можно их и вручную при желании сделать.За счёт того, что Mailu полностью упакован в контейнеры и заточен на работу в качестве микросервисного приложения, его можно использовать в Kubernetes. Для этого есть готовый Helm Chart.
По умолчанию Mailu использует SQLite. При желании можно перенести в PostgreSQL или MySQL. Почта хранится в формате maildir.
Я развернул и попробовал Mailu. Установка выглядит так:
1️⃣ Идём на setup.mailu.io и отвечаем на вопросы. В конце получаем готовый конфиг.
2️⃣Переходим в консоль сервера. Ставим Docker и загружаем конфигурацию:
# curl https://get.docker.com | bash -
# mkdir /mailu && cd /mailu
# wget https://setup.mailu.io/2024.06/file/890ef5ad-efc3-444d-834d-abd1424e8741/docker-compose.yml
# wget https://setup.mailu.io/2024.06/file/890ef5ad-efc3-444d-834d-abd1424e8741/mailu.env
3️⃣ Смотрим скачанные файлы, что-то можно подправить, заодно увидеть состав сервера. Там следующий набор контейнеров:
- redis
- nginx
- unbound
- admin (админка)
- dovecot
- postfix
- oletools
- rspamd
- fetchmail
- webmail (roundcube)
Запускаем:
# docker compose -p mailu up -d
4️⃣ После того, как весь стек запустится, создаём учётку администратора:
# docker compose -p mailu exec admin flask mailu admin adminuser mail.example.com PASSWORD
5. Можно идти по имени домена в веб интерфейс и выбирать, логиниться в админку или почтовый клиент. В админке есть русский язык. Выглядит она функционально и современно. Жаль, что она не оформлена отдельно. Я бы её вместо PostfixAdmin с удовольствием использовал.
TLS сертификаты будут получены и настроены автоматически. Для каждого пользователя есть свой личный кабинет, где он может посмотреть настройки для приложений, сменить пароль, включить автоответ, добавить учётку от внешнего сервера, с которого fetchmail будет забирать почту.
Сервер мне максимально понятен и близок по функциональности, потому что используется стек, который я хорошо знаю. Плюс сверху удобная админка. Из минусов лично для меня - Docker. Я почтовые сервера давно настраиваю и знаю, что если его раз настроил, то потом много лет не трогаешь. Он обновляется из пакетов стандартного системного репозитория. Ни масштабировать, ни куда-то переносить между разными окружениями, ни деплоить по 5 раз на дню его не придётся. Живёт он обычно в отдельной виртуалке.
Например, у меня сразу по какой-то причине не заработал веб интерфейс Roundcube. В логах контейнера ошибки:
FastCGI sent in stderr: "PHP message: PHP Warning: stream_socket_client(): Unable to connect to front:10143 (Connection refused)
Надо лезть в контейнер и разбираться, что там с ним не так. Без них было бы проще. А так я сходу даже не увидел, где и как используется этот порт. Судя по всему imap внутри другого контейнера не отвечает, но при этом он нормально опубликован во вне.
В целом сервер неплох. Рекомендую.
⇨ 🌐 Сайт / Исходники
#mailserver
👍84👎4
Как только поднимается тема контейнеров, неизменно начинается обсуждение производительности. Что туда можно засунуть, что нет и т.д. Особое внимание уделяют СУБД. Когда-то давно я увидел тесты работы форка MySQL - Percona:
⇨ Measuring Percona Server Docker CPU/network overhead
Там запускают СУБД в разных режимах. Приведу сразу результаты:
1️⃣ Железо - 7100 транзакций в секунду. Это максимум.
2️⃣ БД в контейнере, подключение с хоста через замапленный tcp порт - 2200 транз/c. Самый слабый результат, так как подключение идет через проброс порта в iptables.
3️⃣ БД в контейнере, который подключен напрямую в сеть хоста через net=host, подключение с хоста. Результат - те же самые 7100 транз/c.
4️⃣ БД в контейнере, подключение из другого контейнера. Контейнеры соединены между собой через docker bridge. Результат - 6300 транз/c.
Судя по этим тестам, сама по себе работа в контейнере никакого статистически значимого штрафа производительности не добавляет. Накладные расходы появляются там, где возникают дополнительные промежуточные звенья в виде NAT или Bridge, что в общем то логично. Запуск через
Казалось бы всё просто и понятно, можно не париться и не переживать по этому поводу. Минимизирует сетевые прослойки и получаем, как везде говорят, маленькие накладные расходы, которые можно игнорировать. Но не так давно смотрел другие тесты:
▶️ Насколько тормозит Docker? Тестируем сетевые режимы
Там автор провёл прикладные тесты таких же режимов работы, только для веб сервера Angie с разными статическими страницами (большая и маленькая). Результаты немного другие:
- Запуск на хосте - 100% производительности
- Docker c
- Docker с
Картина уже совсем другая. И даже с
При этом нельзя выделить какую-то универсальную величину, на которую можно ссылаться при вычислении накладных расходов. Они очень сильно разнятся от характера нагрузки. В тестах с СУБД, насколько я понимаю, основная нагрузка была на CPU при выполнении сложных запросов. А в веб сервере отдавались несжатые данные маленькими объёмами, нагрузки на CPU было меньше, а вот системных вызовов в разы больше.
Так что с контейнерами не всё так однозначно, чтобы можно было сказать, что штраф незначительный, можно не учитывать. Где-то может быть значительный. Тот же прокси сервер для веб проектов имеет смысл запускать не в контейнере, а напрямую на хосте. Никаких особых проблем с деплоем и настройкой не будет, но сходу можно получить 20-30% прироста производительности на ровном месте.
И в завершении подытожу, что если с контейнерами хотите получить максимальную производительность, то точно нужно использовать сетевой режим
#docker #devops
⇨ Measuring Percona Server Docker CPU/network overhead
Там запускают СУБД в разных режимах. Приведу сразу результаты:
Судя по этим тестам, сама по себе работа в контейнере никакого статистически значимого штрафа производительности не добавляет. Накладные расходы появляются там, где возникают дополнительные промежуточные звенья в виде NAT или Bridge, что в общем то логично. Запуск через
docker run -p 8080:8080
, добавляет новую прослойку в виде iptables и его проброса портов через DNAT. Надо ещё понимать, что эти же прослойки и вне контейнера возникнут, если у вас нагрузка, например, распределена между виртуальными машинами.Казалось бы всё просто и понятно, можно не париться и не переживать по этому поводу. Минимизирует сетевые прослойки и получаем, как везде говорят, маленькие накладные расходы, которые можно игнорировать. Но не так давно смотрел другие тесты:
Там автор провёл прикладные тесты таких же режимов работы, только для веб сервера Angie с разными статическими страницами (большая и маленькая). Результаты немного другие:
- Запуск на хосте - 100% производительности
- Docker c
net=host
- 67% и 79% от хоста в зависимости от страницы- Docker с
-p 8080:80
45% и 54%Картина уже совсем другая. И даже с
net=host
разница с запуском на хосте значительная. При этом плавает от характера нагрузки. Чем больше rps, тем более заметна разница. При этом нельзя выделить какую-то универсальную величину, на которую можно ссылаться при вычислении накладных расходов. Они очень сильно разнятся от характера нагрузки. В тестах с СУБД, насколько я понимаю, основная нагрузка была на CPU при выполнении сложных запросов. А в веб сервере отдавались несжатые данные маленькими объёмами, нагрузки на CPU было меньше, а вот системных вызовов в разы больше.
Так что с контейнерами не всё так однозначно, чтобы можно было сказать, что штраф незначительный, можно не учитывать. Где-то может быть значительный. Тот же прокси сервер для веб проектов имеет смысл запускать не в контейнере, а напрямую на хосте. Никаких особых проблем с деплоем и настройкой не будет, но сходу можно получить 20-30% прироста производительности на ровном месте.
И в завершении подытожу, что если с контейнерами хотите получить максимальную производительность, то точно нужно использовать сетевой режим
host
.#docker #devops
Please open Telegram to view this post
VIEW IN TELEGRAM
Percona Database Performance Blog
Measuring Percona Server Docker CPU/network overhead
Now that we have Percona Server Docker images, I wanted to measure performance when we run database in the container. In theory there should be very light overhead.
22👍104👎6
Я уже как-то рассказывал про утилиту sshfs, которая позволяет монтировать удалённую файловую систему через SSH. То есть просто монтируете сетевой диск, используя только SSH соединение. Это не очень быстро, так как подключение выполняется в пространстве пользователя, да и в целом по SSH не очень быстрые соединения. Но для некоторых задач это бывает удобно. Доступ по SSH есть практически всегда.
Сделал готовую инструкцию, чтобы можно было быстро всё настроить с аутентификацией по ключам и с systemd юнитом для автомонтирования при загрузке.
Ставим sshfs:
Генерируем и копируем на удалённую машину ключ:
Можно подключаться с помощью пароля, но для этого его нужно будет интерактивно вводить вручную. Не получится настроить автомонтирование. Хотя если применить утилиту expect, то и это ограничение можно обойти. Но с сертификатом удобнее и проще.
Всё готово, монтируем д иректорию
Проверяем:
Размонтировать можно вот так:
Создаём службу systemd:
Сохраняем, запускаем, добавляем в автозагрузку:
Если хотим отмонтировать, то просто останавливаем:
Я показал примеры на тестовом сервере, сделав всё от root. Если будете настраивать куда-то на постоянку, то скорее всего будете запускать под каким-то другим пользователем (хотя кого я обманываю). Через параметры
Можно в systemd указать пользователя, под которым всё это будет монтироваться.
Способ подключения дисков через sshfs костыльный, но вполне рабочий. Пользоваться можно. Если есть возможность настроить nfs или smb, с ними будет лучше. Но, например, конкретно для монтирования директории с сертификатами, разницы никакой нет. Сразу подчеркну, что эту задачу можно решать и по-другому. Например, хуками и копированием сертификатов на целевой хост. Решения задачи может быть много. Я показал один из них.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#ssh #fileserver
Сделал готовую инструкцию, чтобы можно было быстро всё настроить с аутентификацией по ключам и с systemd юнитом для автомонтирования при загрузке.
Ставим sshfs:
# apt install sshfs
Генерируем и копируем на удалённую машину ключ:
# ssh-keygen -t ed25519
# ssh-copy-id [email protected]
Можно подключаться с помощью пароля, но для этого его нужно будет интерактивно вводить вручную. Не получится настроить автомонтирование. Хотя если применить утилиту expect, то и это ограничение можно обойти. Но с сертификатом удобнее и проще.
Всё готово, монтируем д иректорию
/etc/letsencrypt
с сервера 10.20.1.6 к себе в /mnt/letsencrypt:
# sshfs [email protected]:/etc/letsencrypt /mnt/letsencrypt
Проверяем:
# df -h | grep 10.20.1.6
[email protected]:/etc/letsencrypt 20G 1.8G 17G 10% /mnt/letsencrypt
Размонтировать можно вот так:
# fusermount -u /mnt/letsencrypt
Создаём службу systemd:
# systemctl edit --force --full sshfs.service
[Unit]
Description=Mount sshfs
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=sshfs [email protected]:/etc/letsencrypt /mnt/letsencrypt
ExecStop=fusermount -u /mnt/letsencrypt
[Install]
WantedBy=multi-user.target
Сохраняем, запускаем, добавляем в автозагрузку:
# systemctl start sshfs.service
# systemctl enable sshfs.service
Если хотим отмонтировать, то просто останавливаем:
# systemctl stop sshfs.service
Я показал примеры на тестовом сервере, сделав всё от root. Если будете настраивать куда-то на постоянку, то скорее всего будете запускать под каким-то другим пользователем (хотя кого я обманываю). Через параметры
User=sftp-user
Group=sftp-user
Можно в systemd указать пользователя, под которым всё это будет монтироваться.
Способ подключения дисков через sshfs костыльный, но вполне рабочий. Пользоваться можно. Если есть возможность настроить nfs или smb, с ними будет лучше. Но, например, конкретно для монтирования директории с сертификатами, разницы никакой нет. Сразу подчеркну, что эту задачу можно решать и по-другому. Например, хуками и копированием сертификатов на целевой хост. Решения задачи может быть много. Я показал один из них.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#ssh #fileserver
14👍162👎2
Я анонсировал ранее подборку сайтов IT блогеров со статьями на различные темы, связанные с настройкой и эксплуатацией IT систем. Собралось небольшое сообщество авторов. Полный список сайтов будет в конце. А пока анонс новых статей тех авторов, кто согласился участвовать и прислал свои материалы.
❗️Напомню, что основной смысл моей инициативы - поддержать донатами тех авторов, кого вы посчитаете нужным и у кого будут возможности для этого на сайте.
⇨ Резервное копирование ClickHouse с clickhouse-backup
Пример использования утилиты clickhouse-backup для бэкапа одноименной СУБД. В статье пример конфигурации с загрузкой бэкапов в S3.
⇨ Telegram бот для проверки ссылок в сообщениях
Автор написал бота, который проверяет ссылки через API сервиса VirusTotal. В статье сам бот и инструкция по запуску.
⇨ OpenSnitch – ручной контроль сетевой активности Linux приложений
Подробный обзор программы для контроля за сетевой активностью. Актуально для тех, у кого рабочая станция на Linux. Управление с помощью графического интерфейса.
⇨ Вышло накопительное обновление 15 для Exchange Server 2019!
⇨ Как определить версию Exchange Server с помощью PowerShell?
Небольшие информационные заметки для тех, кто эксплуатирует Exchange Server.
🔥 Как установить MikroTik RouterOS на VPS сервер
Установка Cloud Hosted Router (CHR) на VPS. Это версия RouterOS для установки на немикротиковское железо. Автор на примере конкретного провайдера показал, как поверх изначальной системы накатить CHR.
⇨ Как настроить базовые правила фаервола в MikroTik RouterOS
Базовая настройка файрвола в MikroTik RouterOS. Сюда же относится и ранее установленный CHR.
⇨ Пишем функцию быстрого доступа к сложным командам для Zsh и Bash
Расширение функциональности алиасов, если их уже не хватает. Создание функции для быстрого выбора и выполнения преднастроенных консольных команд. Интересная реализация. Не видел ранее подобных. Для серверов наверное будет избыточно. Больше актуально для пользователей рабочих машин под Linux.
🔥 Kasm Workspaces — строим свою лабораторию для обучения и тестов
Подробная статья по настройке Kasm Workspaces — платформы для удаленного доступа к рабочим столам, построенная на базе Docker контейнеров.
⇨ Маршрутизация на MikroTik с RouterOS 7
Очень подробный разбор маршрутизации в RouterOS: обычная маршрутизация, policy-based routing, два маршрута по умолчанию и два провайдера.
⇨ Как присоединить компьютер с Windows 11 к домену
В статье разобраны три способа подключения к домену: через графический интерфейс, с помощью PowerShell, через командную строку.
⇨ Настройка логирования вывода скриптов Bash
Принципы и нюансы логирования стандартных потоков stdout и stderr в bash скриптах.
⇨ Обнаружение дисков в Zabbix и просмотр по ним температуры
Обнаружение в Linux дисков sata и nvme и получение их температуры с помощью утилит hddtemp и nvme.
Если кто-то хочет присоединиться к этой подборке, то пишите мне в личные сообщения. Пока список выглядит так:
▪️https://r4ven.me
▪️https://wiki-it.ru
▪️https://www.gurin.ru
▪️https://sysadminhub.ru
▪️https://devopslife.ru
▪️https://bite-byte.ru
▪️https://sysadminium.ru
▪️https://desoft.ru
▪️https://www.pc360.ru
▪️https://bafista.ru
▪️https://it-experience.ru
▪️https://blogadminday.ru
▪️https://marukhin.ru
▪️https://blog.mons.ws
▪️https://lytkins.ru
▪️https://sysops.host
#статьи
❗️Напомню, что основной смысл моей инициативы - поддержать донатами тех авторов, кого вы посчитаете нужным и у кого будут возможности для этого на сайте.
⇨ Резервное копирование ClickHouse с clickhouse-backup
Пример использования утилиты clickhouse-backup для бэкапа одноименной СУБД. В статье пример конфигурации с загрузкой бэкапов в S3.
⇨ Telegram бот для проверки ссылок в сообщениях
Автор написал бота, который проверяет ссылки через API сервиса VirusTotal. В статье сам бот и инструкция по запуску.
⇨ OpenSnitch – ручной контроль сетевой активности Linux приложений
Подробный обзор программы для контроля за сетевой активностью. Актуально для тех, у кого рабочая станция на Linux. Управление с помощью графического интерфейса.
⇨ Вышло накопительное обновление 15 для Exchange Server 2019!
⇨ Как определить версию Exchange Server с помощью PowerShell?
Небольшие информационные заметки для тех, кто эксплуатирует Exchange Server.
🔥 Как установить MikroTik RouterOS на VPS сервер
Установка Cloud Hosted Router (CHR) на VPS. Это версия RouterOS для установки на немикротиковское железо. Автор на примере конкретного провайдера показал, как поверх изначальной системы накатить CHR.
⇨ Как настроить базовые правила фаервола в MikroTik RouterOS
Базовая настройка файрвола в MikroTik RouterOS. Сюда же относится и ранее установленный CHR.
⇨ Пишем функцию быстрого доступа к сложным командам для Zsh и Bash
Расширение функциональности алиасов, если их уже не хватает. Создание функции для быстрого выбора и выполнения преднастроенных консольных команд. Интересная реализация. Не видел ранее подобных. Для серверов наверное будет избыточно. Больше актуально для пользователей рабочих машин под Linux.
🔥 Kasm Workspaces — строим свою лабораторию для обучения и тестов
Подробная статья по настройке Kasm Workspaces — платформы для удаленного доступа к рабочим столам, построенная на базе Docker контейнеров.
⇨ Маршрутизация на MikroTik с RouterOS 7
Очень подробный разбор маршрутизации в RouterOS: обычная маршрутизация, policy-based routing, два маршрута по умолчанию и два провайдера.
⇨ Как присоединить компьютер с Windows 11 к домену
В статье разобраны три способа подключения к домену: через графический интерфейс, с помощью PowerShell, через командную строку.
⇨ Настройка логирования вывода скриптов Bash
Принципы и нюансы логирования стандартных потоков stdout и stderr в bash скриптах.
⇨ Обнаружение дисков в Zabbix и просмотр по ним температуры
Обнаружение в Linux дисков sata и nvme и получение их температуры с помощью утилит hddtemp и nvme.
Если кто-то хочет присоединиться к этой подборке, то пишите мне в личные сообщения. Пока список выглядит так:
▪️https://r4ven.me
▪️https://wiki-it.ru
▪️https://www.gurin.ru
▪️https://sysadminhub.ru
▪️https://devopslife.ru
▪️https://bite-byte.ru
▪️https://sysadminium.ru
▪️https://desoft.ru
▪️https://www.pc360.ru
▪️https://bafista.ru
▪️https://it-experience.ru
▪️https://blogadminday.ru
▪️https://marukhin.ru
▪️https://blog.mons.ws
▪️https://lytkins.ru
▪️https://sysops.host
#статьи
SysOps Blog
Резервное копирование БД ClickHouse в Ubuntu
Резервное копирование в ClickHouse с помощью утилиты clickhouse-backup.1. Установка clickhouse-backupЗагрузим и установим пакет clickhouse-backup:wget https://github.com/Altinity/clickhouse-backup/releases/download/v2.6.5/clickhouse-backup_2.6.5_amd64.deb…
1👍86👎4
Расскажу вам про свою серьёзную ошибку, которая только по случайному стечению обстоятельств не привела к проблемам и потере данных.
Я очень часто использую rsync для бэкапа. В том числе с ключами
Сам бэкап делаю так:
Иногда я эти директории автоматически сжимаю для экономии места. И тогда они превращаются в файлы. Файлы удобно чистить примерно так:
Просто удаляем всё, что старше 100 дней. Я клонировал один проект и настраивал там бэкапы. Изменения сжимать не стал, оставил их в виде директорий. А команду на очистку оставил такой же, с
На днях на источнике проводил чистку, какие-то некритичные данные удалял, какие-то сжимал, переносил. Держал в голове, что все изменения за день приедут в отдельную папку и я их сохраню на всякий случай. На источнике не стал окончательно удалять, а только переместил в другое место. Это в итоге спасло данные.
На следующий день захожу на сервер с бэкапами и понимаю, что файлов нет. Чистил старые файлы, они все были старше 100 дней. Судя по всему сначала они были сложены все в одну директорию в соответствии с ключами
Я сначала не мог понять, в чём тут дело. Вся иерархия папок сохранилась, но файлов нет. Точнее некоторые файлы были, как я уже потом понял, которые моложе 100 дней, но большей части нет. Не мог долго понять, почему так получилось. Начал грешить на сам rsync и подумывал заменять его на restic или borg. Но смысл в том, что rsync в данном случае мне удобнее и привычнее.
В итоге просто чуйка помогла. Ещё раз всё внимательно посмотрел и понял, что команда на чистку не та. Это не rsync сглючил, а я ошибочно удалил файлы уже после его работы. Если используются директории, то чистить надо так:
❗️На самом деле уже не первый раз натыкаюсь на то, что ошибка с find приводит к неожиданным проблемам. С ним, да и любым подобным софтом для очистки данных, нужно очень аккуратно обращаться, всё проверяя по 10 раз. Одна ошибка и данные можно безвозвратно потерять.
#rsync
Я очень часто использую rsync для бэкапа. В том числе с ключами
--backup
и --backup-dir
, о которых отдельно рассказывал не так давно в заметке. Эти ключи позволяют хранить изменения за день, если бэкап выполняется раз в сутки. У меня они лежат в таких директориях:/mnt/backup/increment/2025-03-15
/mnt/backup/increment/2025-03-16
/mnt/backup/increment/2025-03-17
Сам бэкап делаю так:
# /usr/bin/rsync -av --delete [email protected]:/data/mail/virtual/ /mnt/backup/mailsrv --backup --backup-dir=/mnt/backup/increment/`date +%Y-%m-%d`/ >> /var/log/rsync/mailsrv-`date +%Y-%m-%d`.log
Иногда я эти директории автоматически сжимаю для экономии места. И тогда они превращаются в файлы. Файлы удобно чистить примерно так:
# /usr/bin/find /mnt/backup/increment/ -type f -mtime +100 -exec rm -rf {} \;
Просто удаляем всё, что старше 100 дней. Я клонировал один проект и настраивал там бэкапы. Изменения сжимать не стал, оставил их в виде директорий. А команду на очистку оставил такой же, с
-type f
. На днях на источнике проводил чистку, какие-то некритичные данные удалял, какие-то сжимал, переносил. Держал в голове, что все изменения за день приедут в отдельную папку и я их сохраню на всякий случай. На источнике не стал окончательно удалять, а только переместил в другое место. Это в итоге спасло данные.
На следующий день захожу на сервер с бэкапами и понимаю, что файлов нет. Чистил старые файлы, они все были старше 100 дней. Судя по всему сначала они были сложены все в одну директорию в соответствии с ключами
--backup
и --backup-dir
, а потом команда find их все удалила. При этом сами директории, в том числе вложенные, но уже без файлов остались.Я сначала не мог понять, в чём тут дело. Вся иерархия папок сохранилась, но файлов нет. Точнее некоторые файлы были, как я уже потом понял, которые моложе 100 дней, но большей части нет. Не мог долго понять, почему так получилось. Начал грешить на сам rsync и подумывал заменять его на restic или borg. Но смысл в том, что rsync в данном случае мне удобнее и привычнее.
В итоге просто чуйка помогла. Ещё раз всё внимательно посмотрел и понял, что команда на чистку не та. Это не rsync сглючил, а я ошибочно удалил файлы уже после его работы. Если используются директории, то чистить надо так:
# /usr/bin/find /mnt/backup/increment/ -maxdepth 1 -type d -mtime +100 -exec rm -rf {} \;
❗️На самом деле уже не первый раз натыкаюсь на то, что ошибка с find приводит к неожиданным проблемам. С ним, да и любым подобным софтом для очистки данных, нужно очень аккуратно обращаться, всё проверяя по 10 раз. Одна ошибка и данные можно безвозвратно потерять.
#rsync
Telegram
ServerAdmin.ru
Rsync – мощная консольная утилита и служба для быстрого копирования файлов. Отличает её в первую очередь скорость сравнения директорий с огромным количеством файлов. К примеру, если вам нужно будет сравнить и привести к единому содержимому два разнесённых…
3👍142👎2
Продолжу тему насчёт невнимательности и ошибок. И речь будет опять про rsync. Один раз он меня очень жёстко наказал за ошибку. С тех пор я внимательно проверяю и перепроверяю все его параметры.
Чаще всего rsync используется с ключом
Одной командой с rsync вы обнулите источник на 10.20.1.5, если директория
Я в голове всегда произношу мантры, когда настраиваю rsync: "Откуда копирую и куда". У него сначала идёт источник, а потом приёмник. Казалось бы, это очевидное поведение, но на самом нет. Сбивает с толку другой софт. Например, в tar сначала указываешь куда сжимать, а потом уже что сжимать:
Есть и другие примеры, но сейчас сходу не вспомню. Припоминаю, что при копировании разметки с дисков в какой-то программе тоже было неочевидное поведение, когда приёмник был первый, а источник вторым. Я всегда боялся затереть разметку с рабочего диска при копировании на новый. Перепроверял по 10 раз.
Если кто-то сталкивался с подобными засадами из-за невнимательности, то поделитесь историями. Будет интересно и полезно. Лидером тут наверное будет rm, когда перепутали путь или воткнули лишний пробел.
#rsync
Чаще всего rsync используется с ключом
--delete
для того, чтобы получить актуальную копию источника. Если на приёмнике какие-то файлы устарели, или на источнике уже удалены, на приёмнике они тоже удалятся. И горе вам, если вы перепутаете местами источник с приемником, особенно при первой синхронизации, когда у вас приёмник пустой. Речь вот о чём:# rsync -av --delete /mnt/backup/data/ [email protected]:/data/
Одной командой с rsync вы обнулите источник на 10.20.1.5, если директория
/mnt/backup/data/
пустая. Причём удаляет rsync очень быстро. Я как-то проводил тестирование и делал заметку по этому поводу. Rsync с пустым приёмником чуть ли не быстрее всех удаляет большое файловое хранилище. Времени опомниться и остановить процедуру у вас практически не будет, особенно если это будет выполняться локально. По SSH ещё есть шансы, если сразу остановите.Я в голове всегда произношу мантры, когда настраиваю rsync: "Откуда копирую и куда". У него сначала идёт источник, а потом приёмник. Казалось бы, это очевидное поведение, но на самом нет. Сбивает с толку другой софт. Например, в tar сначала указываешь куда сжимать, а потом уже что сжимать:
# tar -czvf files.tar.gz /data/files
Есть и другие примеры, но сейчас сходу не вспомню. Припоминаю, что при копировании разметки с дисков в какой-то программе тоже было неочевидное поведение, когда приёмник был первый, а источник вторым. Я всегда боялся затереть разметку с рабочего диска при копировании на новый. Перепроверял по 10 раз.
Если кто-то сталкивался с подобными засадами из-за невнимательности, то поделитесь историями. Будет интересно и полезно. Лидером тут наверное будет rm, когда перепутали путь или воткнули лишний пробел.
#rsync
👍128👎3