Поднял свой Gemini-сервер
С подачи Zvezdo4ёtiя вновь заинтересовался протоколом Gemini. Сначала поставил пару нормальных gemini-броузеров, поизучал сам протокол, посмотрел несколько сайтов. Реально то, что я хотел: максимально простой и лёгкий аналог Интернета. Причём оказалось, что на нём можно делать даже почти полноценные форумы! В итоге пришёл к выводу, что нужно начинать его использовать и решил для начала поднять одностраничный сайт (в Gemini их называют капсулами) для idealists.su — просто страницу с информацией о том, кто такие идеалисты.
Но с сервером дело пошло очень тяжело. На localhostе всё запустилось быстро, а вот на VDSах — проблемы лезли буквально отовсюду. Сначала в качестве сервера решил использовать molly-brown, так как это — единственный сервер, который есть в репозиториях Debian. И тут меня ждала первая неприятность. На localhostе у меня Debian testing, где более новая версия molly-brown, в которой можно запустить его от имени root, прочитать файлы сертификатов, а потом переключиться на нужного обычного пользователя. А на серверах — обычный Debian, где гораздо более старая версия, и пользователя сменить нельзя. Не додумался ни до чего лучше, кроме как забросить новый бинарный файл в /usr/local/bin, и запускать его.
Потом выяснилось, что всё напрасно: я забыл о том, что для HTTP у меня настроено проксирование, и адрес idealists.su ведёт не на второй VDS, где висит akkoma, а на первый, откуда пробрасывается на второй через nginx. И я поднял molly-brown не на том VDSе! Пришлось перебираться на первый. Тут я вдруг решил, что вариант с загруженным бинарником — плохая идея, и нужно искать другой путь. В итоге нашёл — разрешить доступ к нужным сертификатам через ACL. Вроде бы всё сделал правильно, но почему-то доступ получить не мог. Сначала думал, что нужно включить поддержку ACL при монтировании файловой системы, ради этого даже перезагрузил сервер, потерял uptime в несколько месяцев. Потом оказалось, что поддержка была включена, просто я не сообразил дать доступ пользователю на вышестоящие каталоги, поэтому он и не мог достучаться до файла.
Когда это решилось, вылезла новая проблема: на самом сервере вроде всё работает, а при попытках подключиться извне — ошибка соединения. Поизучал вывод netstat и обнаружил, что он пишет, что сервер висит только на IPv6. Чуть не сломал мозг, пытаясь понять, как такое получается. В какой-то момент даже сдался, и решил вместо molly-brown поднять Agate, который написан на Rust и потребляет меньше памяти. Но там обнаружилась та же самая проблема: он писал предупреждение, что не может прослушивать IPv4. И это несмотря на то, что в нём в настройках можно явно указать адрес, который слушать!
Я понял, что тут что-то не так, и стал проверять, в чём ещё может быть дело. Очень быстро выяснилось, что на самом деле проблему создаёт firewall (хотя я вообще думал, что он у меня выключен). После этого всё заработало!
Оставалось сделать последний выбор: что всё-таки использовать: molly-brown или Agate. В итоге остановился на первом, так как Agate поддерживает только сертификаты в формате der, а Hestia, наоборот, всё держит в pem. И пришлось бы либо делать автоматическую конвертацию, либо переходить на self-signed.
А вообще, всё больше и больше думаю о том, что мне нужно позиционировать себя как «знатока альтернативных Сетевых технологий и малого Web». По сути, это единственное, что мне по-настоящему интересно… Видимо, так проявляется соционическая ЧИ: а что, можно сделать привычное как-то иначе?
Ну если только простой аналог Твиттера.
Для статики в запросе много инфы и не нужно.