vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2025-04-10 11:11 am

Точка присутствия в Интернете

Тут при оченедном обсуждении мессенждеров [personal profile] vikarti_anantra задала вопрос: "А что сложно свой сервер поднять?".

Сложно. Для тех для кого адмнистрирование юникс-систем не является основной работой, поднять сервер и сконфигурировать на нем пяток нужных сервисов - занятие и правда не простое. Другой вопрос, что уже давно можно было бы, если бы существовал хоть какой консенсус на тему того, что на таком сервере должно быть, следать коробку "все в одном", настраивать которую было бы не сложнее, чем типичный Wi-Fi роутер. А с ними вроде народ в массе своей справляется. И чтобы можно было в течение нескольких минут накатить этот образ на виртуалку на любом VPS-хостинге.

Что собственно, нужно от точки присутствия в интернете? Предполагается что это может быть не только личная точка присутствия, но и семейная или небольшой группы единомышлинников, вроде мастерской группы LRPG.

  1. Сервер электронной почты на пару десятков аккаунтов. При этом чтобы почту с него принимали во всяких gmail-ах (а это, увы, moving target), и чтобы была какая-никакая защита от спама. graylisting+spamassassin вполне хватает по моему опыту.
  2. Веб-интерфейс к этой почте. А то вдруг придется доступаться из какого-нибдуь интернет кафе, где ничего кроме браузера не предусмотрено.
  3. Сервер федерированного мессенжера (matrix или jabber).
  4. К нему тоже web-интерфейс (element)
  5. turn-сервер, как совершенно необходимая вещь для голосовых и видеозвонокв через matrix/jabber
  6. CalDAV/CardDAV сервер
  7. Возможность выложить файл для последующего скачивания. Я в общем обхожусь для этого webdav. Хотя возможно web-based файл-менеджер не помешал бы. В принципе этого уже достаточно для того чтобы сделать сколь угодно навороченный статический web-сайт, благо локальных генераторов сайтов, запускаемых на ноутбуке/рабочей станции существует море. Поэтому пока вам не нужно на сайте комментирование, ничего более другого и не нужно.
  8. Фотогалерея. Она отдельно, потому что фотграфируют нынче в основном смартфонами и планшетами, следовательно фотографии должны попадать на сайт непосредственно с мобильного устройства, и минимально обрабатываться уже на сервере.
  9. Средства администрирования. Должны позволять завести нового юзера всего предыдущего, заблокировать/удалить старого, сменить пароль. Возможно стоит жестко требовать наличия единого пароля для всего перечисленного, а возможно и нет. Возможно, тот же инструмент должен менеджить authorized_keys для доступа по ssh. Тут, правда, стоит подумать о соотношении системных пользователей и пользователей веб-сервисов (по-моему не должны совпадать). Там же должна быть кнопочка для установки апдейтов.
  10. Автомат для обновления сертификатов Let's Encrypt
  11. DNS-сервер. Дело в том, для значительной части вышеприведенных сервисов нам понадобятся специальные (SRV, TXT) записи в DNS. Да, и электронной почты это тоже касается. Без TXT-записи _dmarc никто почту принимать с вашего домена не будет. Опять же openpgp-ключи так публиковать можно. Но в общем стоит исходить из того, что именно этот сервер будет первичным DNS вашего домена. Тогда все этои нетривилаьные DNS-записи можно будет автоматизировать.

Можно еще поставить туда прокси/VPN, если юрисдикция хостера не совпадает с юрисдикцией домашней машины, но мы пока этот вопрос рассматривать не будем. На худой конец можно ssh -D использовать.

В принципе, прикрутить ко всему этому хозяйству простенькую web-панель в стиле LuCI, чтобы можно было просто галочками по списку включать-выключать все сервисы, не так уж и сложно.

Для решения перечисленных задач нужно

  1. dovecot (в дистрибутиве)
  2. postfix (в дистрибутиве)
  3. ciderwebmail (по-моему в Debian еще не попала версия, которую я год назад патчил на предмет русских имен папок )
  4. matrix-synapse (надо брать из бэкпортов, там он заметно новее)
  5. element-web (в дистрибутиве нет, но есть отдельный репозиторий с пакетами
  6. coturn (в дистрибутиве)
  7. radicale (в дистрибутиве)
  8. Какой-нибудь web-сервер чтобы все вышеперчисленные интерфейсы проксировать. nginx сойдет, но apache лучше (оба в дистрибутиве)
  9. acme-tiny (в дистрибутиве)
  10. bind9 (в дистрибутиве.)

Остальное надо писать, но его довольно немного. В основном скрипты для администрирования. Учитывая что почти у всех сервисов которые нам нужны, свои заморочки насчет хранения паролей. Насчет галерей и CMS я просто не очень в курсе что нынче бывает, и как его задеплоить так, чтобы не бояться взлома при отсутствии квалифицированного администрирования.

Деплоймент этой штуки выглядит так:

  1. Регистрируем домен.
  2. Покупаем VPS-ку
  3. Накатываем на VPS-ку образ системы (лично я всегда rsync-ом обходился, но возможны варианты вроде загрузочного ISO-образа)
  4. Заходим в эту VPS-ку по HTTP. Указываем домен и IP-адрес выданный хостером. Жмем кнопку "обновить сертификаты"
  5. Заходим туда по HTTPS, меняем пароли, загружаем ssh-ключи и проверяем соответветсвие списка включенных сервисов требуемому.
  6. Правим в настройках DNS регистратора адрес первичного DNS, указывая вот на этот сервер, и настраиваем вторичный DNS.
  7. Пинаем хостера чтобы разрешил слать и принимать почту с этой VPS-ки

Вместо п 2 и 3 можно поставить raspberry pi, и на нее накатить аналогичный образ. Правда перспективы запинывания домашнего провайдера, чтобы разрешил слать/получать почту мне кажутся несколько менее радужными. Зато порыться в вашем почтовом ящике без вашего ведома ни одна спецслужба не сможет - они будут вынуждены прийти к вам домой и предъявить ордер на обыск.

X-Post to LJ

jno: (Default)

[personal profile] jno 2025-04-11 03:15 pm (UTC)(link)
щаз в этих псинологиях и даже длинках навертели нипадецки - конкурируют, блин, с домашними роутерами (те, которые "интернет-центры" и иже с ними) путём установки на себя всего подряд: торрентов тех же, веб-плюшек разных... ап ту днс-серверы и прочее мыло.

разница с искомым в том, что это всё - в ЛВС смотрит, в основном.
yurikhan: (Default)

[personal profile] yurikhan 2025-04-11 04:09 pm (UTC)(link)

Мой знакомый админ держит в загашнике банку консервированного в докере ансибля. С тем питоном, на котором работают используемые модули расширения, самописные другим моим знакомым админом, который более не доступен.

Нашей Целевой Аудитории, естественно, такие консервы не помогут.

[personal profile] vikarti_anantra 2025-04-11 04:50 pm (UTC)(link)
Если НЕ дает - часто есть варианты через rescue system (или самодельную).
Один из способов найти такой вариант- внезапно ищем гайд как у этого хостера поставить Mikrotik RouterOS CHR (которая именно образом диска идет).

[personal profile] vikarti_anantra 2025-04-11 04:54 pm (UTC)(link)
К сожалению проблема в том что есть фильтры у других мейл-серверов. И там может проверятся например реверс-зона (что не типичная для домашних провайдеров по маске - насколько помню пчелайн не дает ее менять).

Последнее время добавился еще изврат что что некоторые серверы не принимают письма с не-российских IP а некоторые - наоборот только с российских (причем для gmail'ов всяких - прописаны исключения), с отправкой письме с этих разных серверов тоже так (у меня не вышло найти способ кроме как использовать _2_ MX'а один из которых определяется как не-российский)

[identity profile] v3625.net 2025-04-11 05:06 pm (UTC)(link)
О, насчет бессмертной души в машине у меня есть идея, даже идея сверхценная, но, пожалуй, не буду вам рассказывать. Замечу только, что заходите вы не оттуда. Так говорит моя интуиция.

[personal profile] vikarti_anantra 2025-04-11 05:10 pm (UTC)(link)
С Synology одна из проблем - шаг влево/вправо от предусмотренного сценария и начинаются тонны веселья и жалеешь что не просто линукс тут.
Из личного так сказать опыта:
- есть каталог в котором десятки тысяч файлов, объем где то меньше 100 Gb, структуру менять нельзя. к нему обращаются по WebDAV штатно настроенный на Synology несколько клиентов(каждый из которых использует от 1 до 20 коннектов)(если что - это синхронизация Joplin'а через WebDAV). железка начинает дико тормозить потому что WebDAV штатно там - на апаче и процессы ненужные грохаются штатно через час а памяти на мой Synology всего 6 Gb. nginx можно но тогда webdav - ручками
- MailPlus - спамфильтр может отбросить письмо за попадание в один или более DNSBL но вот просто добавить баллы спамности - не может. Ах да - МНОГО писем он тоже не любит, ставьте SSD, нет, поставить MailPlus на _внешний_ (пусть даже eSATAшный) SSD - нельзя
- DS Note/NoteStation (их аналог Evernote и прочего) - произвольные и НЕ описанные лимиты. Экспорт - непонятно как
- SSL хотите и даже с Let's Encrypt? прокидывайте 80/443 на роутере на NAS, как - у вас reverse-proxy? А это не поддерживается. Нет, есть костыль в виде https://github.com/acmesh-official/acme.sh/wiki/Synology-NAS-Guide (который кстати надо править после каждого апгрейда RouterOS)
- ну и совсем вишенка на торте - DSM это еще и поддержка и прочее (в том числу хоум-юзерам). Это даже правда, только есть один мелкий технический ньюанс. БЫЛА поддержка. https://www.synology.com/ru-ru/company/news/article/Suspending_service_in_RU_BY

вот именно поэтому - у меня Synology живет сейчас только как хранилка файлов и все (ладно - еще там minio живет - будем считать это тоже хранение файлов)
Edited 2025-04-11 17:11 (UTC)
jno: (Default)

[personal profile] jno 2025-04-11 07:12 pm (UTC)(link)
Вы целевую аудиторию этого измышления забыли напрочь :)

Текстовый файл они ещё скопируют (и даже парой способов), а вот "гайд как у этого хостера поставить Mikrotik RouterOS CHR" - это уже иероглифы, где понятные только "* как у * поставить *".
allter: (Default)

[personal profile] allter 2025-04-19 03:01 pm (UTC)(link)
Тоже думал о подобном решении задачи "держать всё под своей рукой". Пришёл к выводу, что для того, что бы такую систему воплотить в жизнь, нужно всего-то сделать некий аналог Kubernetes с PA/EC конфигурационной базой данных вместо etcd. Т.е. реализовать механизм описывания в отвязанном от конкретного железа виде, как запускать те или иные сервисы с определёнными настройками.

Зачем нужна для этого PA/EC? У подавляющего количества частников нет ресурсов разместить свой сервер с правильным резервированием (как минимум 3 независимых георазнесённых ДЦ). А это значит, что когда что-то навернётся, то какое-то время (пока человек не разберётся с бэкапами/ особенностями настройки своей системы на новой площадке/обсуждёнными выше сложностями наподобие DKIM) этот частник будет без привычных ему сервисов. На какой-то раз ему просто надоест и он решит быть "как все" (по крайней мере по отношению к сервисам, подразумевающими высокую доступность, таким как email или мессенджеры).

Поэтому было бы здорово иметь немного (от 2) инстансов такой low-admin системы и связать их в единую систему, при необходимости используя то, что я называю полиморфным резервированием (например, когда лампочку из одной люстры можно временно поставить в другой светильник, пока не будет приобретена полноценная замена). Тогда в случае любых проблем можно просто начать пользоваться запасным инстансом (возможно, с определённой деградацией), имея в запасе время на приобретение более производительного/удобного.

В принципе, я уже продумывал реализацию такой системы. Как ядро у неё должна быть база инстансов и пользователей на основе CRDT и некая система оверлейной сети и реплицируемого хранилища. К сожалению, коропорациям не интересна работа в парадигме доступности (более важна консистентность), поэтому не получится воспользоваться чем-то готовым.
Edited 2025-04-19 15:01 (UTC)
jno: (Default)

[personal profile] jno 2025-04-22 08:12 am (UTC)(link)
Попалось тут случайно...

  • Mox
    Mox даёт возможность за 10 минут настроить защищённый почтовый сервер для своих доменов

  • mailcow - dockerized mail suit

  • maddy - Composable all-in-one mail server

  • stalwart - all-in-one mail server

Оказывается, народ уже некоторое время как озаботился очеловечиванием ублюдочного шаманства подготовки MTA…

PS. известный пример одних курсов английского языка показал, что решение проблемы спама существует, но лежит отнюдь не в криптографии, списках и прочем технопорне.
Edited 2025-04-22 09:28 (UTC)

Page 4 of 4