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

[identity profile] v3625.net 2025-04-11 06:26 am (UTC)(link)
> У меня вот доменттретьего, wagner.pp.ru и уже скоро 20 лет как он мнея вполне устраивает.

У меня тоже когда-то был третьего уровня v3625.perm.ru, но мне не так с ним повезло. Тоже был он много лет, а потом провайдер, который держал географический домен, продался другому провайдеру и тот все уничтожил.

> Но не все. Есть люди, которые кооперироваться все же умеют, и именно на них мы оринтируемся.

Это хорошо, но тут надо понимать, что тот, кто решил пойти таким путем, в смысле поднимать свой сервер, должен стать админом. Иначе то, что он поставит, будет фактически принадлежать ему еще меньше, чем ящик на gmail. Тем более, если оно будет основано на таких дефективных инструментах, как docker и ansible, которые суть корпоративный булшит от того же гугла и которые вносят запредельную сложность в такую простую, в общем-то, задачу.

Что подумает первым делом мало-мальски умный нормальный человек, поставив такое решение: вот поставил я какую-то неведомую фигню, она работает. Но я совершенно не понял, что сделал. А если случись с ней что-то - как я решу проблему?

[identity profile] v3625.net 2025-04-11 09:24 am (UTC)(link)
> Сейчас машину может себе завести кто угодно. Раз в год загнал на сервис, ее там специалисты осмотрели, гайки подтянули, фильтры-колодки поменяли и ездишь еще год.

То есть, по этой аналогии, админ таки нужен. Если сам не хочешь им становиться, нужно нанимать.

И, опять же, раньше был на таких сервисменов спрос: зашел удаленно на сервер, логи посмотрел, апдейты поставил, проверил, что бэкапы бэкапятся, мониторинг настроил общий на всех - набрал штук 30 таких клиентов, с каждого берешь небольшую копеечку. Но сейчас никакого спроса на такие услуги давно нет, так как нет и целевой аудитории.

[identity profile] v3625.net 2025-04-11 12:46 pm (UTC)(link)
И вот, получается все сложнее и сложнее. Уже и байесовский алгоритм, и нейросети. А ведь известно, что сложность - главный враг любой технической системы. Где сложность, там и дырявые абстракции, и баги, и негибкие архитектурные концепции, не всегда легко натягивающиеся на реальный мир, и - самое главное - только одна полноценная реализация, контролируемая каким-нибудь сомнительным комитетом.

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

Еще эмпирические наблюдения на тему админства: вот, например, на мой "домашний" сервер, действительно, можно заходить раз в год и ничего ему не будет. Я, конечно, почаще туда захожу, но и раз в год можно. Но это за счет того, что там все просто, нечему ломаться. Там есть ровно то, что нужно мне: нет веб-интерфейса для почты, нет веб-интерфейса для гита, нет ни одной базы данных, нет php, докера с ансиблом нет и подавно. В то же время, там есть vpn-сервер, которым кроме меня пользуется еще три с половиной человека. Когда он в очередной раз перестает работать, я что-то с ним делаю, добавляю новые протоколы, конспирацию под обычный трафик - пользуюсь сам и делюсь с другими просто потому, что от меня все равно не убудет, а добро делать приятно. Или днс-сервер открыт еще паре человек, так как провайдерским днс нынче никто не пользуется, а общественными тоже не все любят (они тоже кое-что блокируют).

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

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