Публикуем информацию в сети с помощью IPFS и упрощаем к ней доступ с помощью Cloudflare.
IPFS — децентрализованная сеть, которая позволяет пользователям загружать нужный им для хранения контент, а при необходимости, делится им с другими. Сеть работает на основе блоков и ссылок на другие блоки, из которых при доступе и «собирается» зпрошенный файл.
В рамках заметки мы рассмотрим базовую установку IPFS, публикацию простой страницы и организацию доступа к ней с помощью CF.
Установка IPFS и запуск в работу.
1. Скачиваем и устанавливаем ipfs:
# wget https://dist.ipfs.io/go-ipfs/v0.4.17/go-ipfs_v0.4.17_linux-amd64.tar.gz # tar xvfz go-ipfs_v0.4.17_linux-amd64.tar.gz # cd go-ipfs # ./install.sh
2. Запускаем демон предварительно выполнив init (можно в том числе и на уровне пользователя):
$ ipfs init $ ipfs daemon &
3. Авторизуемся на сервере нужным нам пользователем, создаём директорию и файл index.html в ней.
$ mkdir mysite/ $ echo "ipfs.sysadmin.pm" > mysite/index.html
4. Публикуем созданную директорию:
$ ipfs add -r ./mysite $ ipfs pin add -r ./mysite
ipfs add -r ./mysite added QmbxU92oaU7rXv4ECb9R2WBhzDX2eoBx53zXa5oAYfVKy2 mysite/index.html added QmXyPNqSWgbQdkjsRUZunoC9vxYU4PLm1wVFFff3n32ZJn mysite ipfs pin add -r /ipfs/QmXyPNqSWgbQdkjsRUZunoC9vxYU4PLm1wVFFff3n32ZJn pinned QmXyPNqSWgbQdkjsRUZunoC9vxYU4PLm1wVFFff3n32ZJn recursively
Далее, возможно, придётся немного подождать, но в результате, на гейтвеях, наш файл должен быть доступен по адресам:
Контент опубликован, «запинен» и теперь останется в сети. Однако, передавать такого вида ссылку не всегда удобно. И если мы, например, опубликовали какую-то страницу, гораздо удобнее здесь будет настроить всё так, что бы эта страница открывалась, например, на поддомене. Подобная возможность есть у Cloudflare, где был запущен гейтвей для таких файлов.
Cloudflare и настройка доступа по домену.
Допустим у нас есть домен sysadmin.pm, а опубликованный файл мы хотим разместить на поддомене myipfs.sysadmin.pm. Домен делегирован на DNS CLoudflare, так что именно в их панели мы и настроим всё необходимое. Переходим в панель, там к редактированию настроек NS и создаём две записи:
- CNAME запись вида:
myipfs.sysadmin.pm. CNAME www.cloudflare-ipfs.com
- TXT запись вида (здесь dnslink=/ipfs/хеш_полученный_при_публикации_ранее):
_dnslink.myipfs.sysadmin.pm. TXT dnslink=/ipfs/QmSTHfmDqZvmP9o2of6P9m27jiLao9AtQBNkCwK22XqCkr
Теперь, если всё сделано верно, при обращении к поддомену myipfs.sysadmin.pm для нас доступен файл, опубликованный ранее.
Обновление информации на странице.
Просто так взять и отредактировать уже опубликованный файл мы не можем, а знчит, для публикации изменений нам нужно пойти по следующему пути:
1. Вносим изменения в файл.
2. Публикуем изменения и получаем новый хеш:
$ ipfs add -r ./mysite $ ipfs pin add -r ./mysite
3. Корректируем TXT запись в настройках NS, прописываем туда новый хеш.
Через некоторое время, обновлённый файл будет доступен по ссылке myipfs.sysadmin.pm.