JavaScript
Создание сервера Node.js для протокола Gemini, облегченного Интернета
Вы когда-нибудь слышали о Близнецах? Вот как это работает
Протокол Близнецов? Если вы никогда о нем не слышали, не волнуйтесь - это не многим известно. Протокол Gemini основан на неудовлетворенности Интернетом, который, как мы знаем, основан на протоколе HTTP.
Да, Близнецы, как я это назвал, - протокол. Это не часть Интернета - он работает по собственному протоколу и недоступен в обычных браузерах.
Но почему?
Близнецы не стремятся заменить привычный нам Интернет. Среди намеченных отличий от Интернета у Gemini есть:
- Больше конфиденциальности и безопасности. Протокол требует использования TLS для шифрования. Не поддерживаются сложные типы данных, которые приводят к проблемам с конфиденциальностью, такие как файлы CSS или изображений. CSS - это проблема конфиденциальности? Ага, вот как сделать отслеживание пользователей только с помощью CSS.
- Никаких сценариев вроде JavaScript на стороне клиента.
- Минимальный протокол. Цель состоит в том, чтобы каждый мог жить в этом Интернете без единой команды. Например, невозможно кеширование или сжатие. Страницы в клиенте загружаются очень быстро, даже на старых машинах.
- Минимальная основа для страниц - тип файла Gemini с минимальной разметкой.
Давайте разместим страницу Gemini на Node.js! Я не буду слишком углубляться в эксклюзивные функции Gemini, так как я сам в этом новичок.
Но сначала установка клиента Gemini
Я рекомендую использовать Amfora в качестве клиента - по крайней мере, я знаю, что он работает. В macOS вы можете установить его с помощью brew install amfora
. Для других платформ ознакомьтесь с репозиторием GitHub. Для других поддерживаемых клиентов ознакомьтесь с этим официальным списком.
Если вы не хотите устанавливать что-либо на постоянной основе, существует рабочий клиент Python без сторонних производителей, содержащий примерно 100 строк кода. Просто скопируйте файл и запустите его с помощью Python.
Сборка нашего сервера
Существует множество серверных библиотек для создания сервера протокола Gemini. Есть даже один для Node.js, точнее, для Express.js.
Мы можем установить его с помощью npm install gemini-server
.
Прежде чем писать код, нам нужно сгенерировать сертификат для шифрования. Как вы помните, я сказал, что Gemini заставляет использовать шифрование TLS. Генерация сертификатов проста. OpenSSL должен быть установлен по умолчанию в Linux и macOS. Вот инструкция по установке на Windows.
После установки OpenSSL на вашем компьютере запустите:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj '/CN=localhost'
Затем у вас должно быть два файла сертификата. Давайте создадим наш экспресс-сервер.
Как видите, сервер обслуживает файл с именем test.gemini
- для тестирования нам нужно его создать. Так называемый Gemtext довольно прост. Вот небольшой пример, содержащий заголовки, список и цитату курсивом:
# Hello world ## This is a subheading * First list entry * Second list entry * Third list entry > The best about the Gemini protocol is the fact you can’t use CSS. - Everyone who ever touched CSS
Когда вы сохранили Gemtext как test.gemini
, вы можете запустить свой сервер. Нет, нам не нужно указывать порт в функции app.listen
- по умолчанию сервер будет работать на порту Gemini.
Запускаем node <your-server-file>.js
- давайте посмотрим на наш сайт!
Теперь запустите своего клиента Gemini. Если вы, как и я, используете Amfora, откройте его в терминале, запустив amfora
. После запуска просто нажмите пробел и введите следующий URL: gemini://localhost/
Очевидно, мы используем тот же URL в других клиентах Gemini. В рекомендованном мной Python-клиенте вы можете мгновенно ввести URL-адрес.
Затем должна появиться страница. В моем терминале это выглядит так:
Вот как легко создать страницу Близнецов! Если вы хотите разместить его у себя, это не станет намного сложнее. Поскольку любой порт сервера может быть доступен через домен, вы можете разместить страницу Gemini через свой существующий домен. Я обнаружил, что многие страницы в сети Близнецов являются копиями страниц в обычном Интернете с использованием того же домена. Поскольку у вас размещены два экземпляра Express, вы можете легко создать страницу в обоих интернет-сетях.
Больше контента на plainenglish.io