Выход на межпланетный уровень
Я уже как-то сетовал, что полноценно скрестить ужа с ежом индивеб с IPFS затруднительно, но желание повесить этот сайт в IPFS всё никак не давало мне покоя. Сайт, выгруженный в IPFS, доступен всегда (правда, первая загрузка может быть довольно медленной), пока доступна DNS-запись и в сети есть хоть одна копия (поэтому его невозможно заблокировать, кроме как на уровне DNS), и чем популярнее конкретная страница, тем больше существует её копий, и тем быстрее она будет загружаться — своего рода «бесплатная» CDN. Ну и для приватности пользователей здорово: даже в логах сервера никаких следов посещения не остаётся. Собственно, у меня есть сайт-визитка, который вообще только в IPFS и существует (а в «обычный» интернет проброшен бесплатным сервисом Cloudflare), и прекрасно там себя чувствует. Если б не проблема со скоростью распространения (а при отсылке вебменшена это реальная проблема)…
Очевидное решение пришло в голову только на днях: а что, собственно, мешает не переносить сайт в IPFS целиком, а сделать зеркало сайта в IPFS и DNS-запись для него?! При этом сайт никуда не девается из «обычной» Паутины, через неё же продолжают работать вебменшены и прочие индивебные штуки, но в IPFS сайт тоже доступен, и все соответствующие радости имеют место. Да оно и технически несложно…
Поскольку сайт с недавних пор всё равно крутится на VPS, и немножко свободных ресурсов на сервере оставалось, проще всего оказалось установить узел IPFS прямо на этот же сервер, а в скрипт, пересобирающий сайт при обновлениях, добавить буквально пару строк. Благо, в процессе обновления у меня всё равно есть момент, когда существуют директории и со старой версией сайта, и с новой, поэтому можно легко «открепить» старую версию и сделать доступной в IPFS новую — как-то вот так:
ipfs add -r -H -Q -n old/public | ipfs pin rm
ipfs-dns.sh $(ipfs add -r -H -Q public)
Здесь идентификатор новой версии сайта сразу передаётся скрипту ipfs-dns.sh
, который прописывает его в DNS-запись. Для DigitalOcean, где у меня VPS, это выглядит примерно так:
|
|
Собственно, сегодня я вот это всё сделал. Теперь, если зайти на этот сайт браузером, поддерживающим IPFS (для Firefox и Chrome есть плагины, Brave, говорят, «из коробки» умеет), сайт откроется именно через IPFS.
Здо́рово же?!
Реакции
Ejitsu