![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Точка присутствия в Интернете
Тут при оченедном обсуждении мессенждеров vikarti_anantra задала вопрос: "А что сложно свой сервер поднять?".
Сложно. Для тех для кого адмнистрирование юникс-систем не является основной работой, поднять сервер и сконфигурировать на нем пяток нужных сервисов - занятие и правда не простое. Другой вопрос, что уже давно можно было бы, если бы существовал хоть какой консенсус на тему того, что на таком сервере должно быть, следать коробку "все в одном", настраивать которую было бы не сложнее, чем типичный Wi-Fi роутер. А с ними вроде народ в массе своей справляется. И чтобы можно было в течение нескольких минут накатить этот образ на виртуалку на любом VPS-хостинге.
Что собственно, нужно от точки присутствия в интернете? Предполагается что это может быть не только личная точка присутствия, но и семейная или небольшой группы единомышлинников, вроде мастерской группы LRPG.
- Сервер электронной почты на пару десятков аккаунтов. При этом чтобы почту с него принимали во всяких gmail-ах (а это, увы, moving target), и чтобы была какая-никакая защита от спама. graylisting+spamassassin вполне хватает по моему опыту.
- Веб-интерфейс к этой почте. А то вдруг придется доступаться из какого-нибдуь интернет кафе, где ничего кроме браузера не предусмотрено.
- Сервер федерированного мессенжера (matrix или jabber).
- К нему тоже web-интерфейс (element)
- turn-сервер, как совершенно необходимая вещь для голосовых и видеозвонокв через matrix/jabber
- CalDAV/CardDAV сервер
- Возможность выложить файл для последующего скачивания. Я в общем обхожусь для этого webdav. Хотя возможно web-based файл-менеджер не помешал бы. В принципе этого уже достаточно для того чтобы сделать сколь угодно навороченный статический web-сайт, благо локальных генераторов сайтов, запускаемых на ноутбуке/рабочей станции существует море. Поэтому пока вам не нужно на сайте комментирование, ничего более другого и не нужно.
- Фотогалерея. Она отдельно, потому что фотграфируют нынче в основном смартфонами и планшетами, следовательно фотографии должны попадать на сайт непосредственно с мобильного устройства, и минимально обрабатываться уже на сервере.
- Средства администрирования. Должны позволять завести нового юзера всего предыдущего, заблокировать/удалить старого, сменить пароль. Возможно стоит жестко требовать наличия единого пароля для всего перечисленного, а возможно и нет. Возможно, тот же инструмент должен менеджить authorized_keys для доступа по ssh. Тут, правда, стоит подумать о соотношении системных пользователей и пользователей веб-сервисов (по-моему не должны совпадать). Там же должна быть кнопочка для установки апдейтов.
- Автомат для обновления сертификатов Let's Encrypt
- DNS-сервер. Дело в том, для значительной части вышеприведенных сервисов нам понадобятся специальные (SRV, TXT) записи в DNS. Да, и электронной почты это тоже касается. Без TXT-записи _dmarc никто почту принимать с вашего домена не будет. Опять же openpgp-ключи так публиковать можно. Но в общем стоит исходить из того, что именно этот сервер будет первичным DNS вашего домена. Тогда все этои нетривилаьные DNS-записи можно будет автоматизировать.
Можно еще поставить туда прокси/VPN, если юрисдикция хостера не совпадает с юрисдикцией домашней машины, но мы пока этот вопрос рассматривать не будем. На худой конец можно ssh -D использовать.
В принципе, прикрутить ко всему этому хозяйству простенькую web-панель в стиле LuCI, чтобы можно было просто галочками по списку включать-выключать все сервисы, не так уж и сложно.
Для решения перечисленных задач нужно
- dovecot (в дистрибутиве)
- postfix (в дистрибутиве)
- ciderwebmail (по-моему в Debian еще не попала версия, которую я год назад патчил на предмет русских имен папок )
- matrix-synapse (надо брать из бэкпортов, там он заметно новее)
- element-web (в дистрибутиве нет, но есть отдельный репозиторий с пакетами
- coturn (в дистрибутиве)
- radicale (в дистрибутиве)
- Какой-нибудь web-сервер чтобы все вышеперчисленные интерфейсы проксировать. nginx сойдет, но apache лучше (оба в дистрибутиве)
- acme-tiny (в дистрибутиве)
- bind9 (в дистрибутиве.)
Остальное надо писать, но его довольно немного. В основном скрипты для администрирования. Учитывая что почти у всех сервисов которые нам нужны, свои заморочки насчет хранения паролей. Насчет галерей и CMS я просто не очень в курсе что нынче бывает, и как его задеплоить так, чтобы не бояться взлома при отсутствии квалифицированного администрирования.
Деплоймент этой штуки выглядит так:
- Регистрируем домен.
- Покупаем VPS-ку
- Накатываем на VPS-ку образ системы (лично я всегда rsync-ом обходился, но возможны варианты вроде загрузочного ISO-образа)
- Заходим в эту VPS-ку по HTTP. Указываем домен и IP-адрес выданный хостером. Жмем кнопку "обновить сертификаты"
- Заходим туда по HTTPS, меняем пароли, загружаем ssh-ключи и проверяем соответветсвие списка включенных сервисов требуемому.
- Правим в настройках DNS регистратора адрес первичного DNS, указывая вот на этот сервер, и настраиваем вторичный DNS.
- Пинаем хостера чтобы разрешил слать и принимать почту с этой VPS-ки
Вместо п 2 и 3 можно поставить raspberry pi, и на нее накатить аналогичный образ. Правда перспективы запинывания домашнего провайдера, чтобы разрешил слать/получать почту мне кажутся несколько менее радужными. Зато порыться в вашем почтовом ящике без вашего ведома ни одна спецслужба не сможет - они будут вынуждены прийти к вам домой и предъявить ордер на обыск.
X-Post to LJ
no subject
Мой знакомый админ держит в загашнике банку консервированного в докере ансибля. С тем питоном, на котором работают используемые модули расширения, самописные другим моим знакомым админом, который более не доступен.
Нашей Целевой Аудитории, естественно, такие консервы не помогут.
no subject
Вот то-то же. К сожанению ансибль всем хуже обычныхх Posix- щшелл скриптов. Котлрые при минимальной сноровке можно писать так, что работать будут везде от sh из седьмого соляриса до последнего zsh.
Ансибль придумали те, для кого командная строка unix не является естественной средой обитания и при этом они хотят быть админами linux-серверов.