Файловая система ipfs
Файловая система ipfs.
Содержание
1 Общая информация
- IPFS состоит из следующих уровней:
- уровень имён: пользователи могут выбирать глобальные имена (привязка к DNS при помощи записей TXT);
- уровень файлов: файловая система с изменяемыми файлами и снимками;
- уровень объектов: неизменяемые объекты (могут или храниться в распределённой хеш-таблице (если маленькие), или скачиваться как в торрентах);
- уровень обмена данными: протокол BitSwap;
- уровень маршрутизации: как узлам добираться друг до друга;
- сетевой уровень: по каким протоколам узлам связываться между собой;
- уровень подлинности узлов (identity): чтобы нельзя было дублировать слишком много узлов (узлы с заданным номером), нарушая целостность сети.
- Сайт: https://ipfs.tech/
- Репозиторий описания: https://github.com/ipfs/ipfs
2 Установка
2.1 Gentoo
- В portage присутствует реализация kubo:
emerge net-p2p/kubo
3 Каталоги
- Каталог по умолчанию для системного демона:
/var/lib/ipfs/.ipfs
- Конфигурационный файл:
$IPFS_PATH/config
- Конфигурационный файл для системного демона:
/var/lib/ipfs/.ipfs/config
- Конфигурационный файл для пользовательского демона:
~/.ipfs/config
4 Web-консоль
- Подключиться к web-консоли:
http://localhost:5001/webui/
- Настройки IPFS можно менять в webui.
- Локальный IPFS-шлюз:
http://localhost:8080/ipfs/
5 Команды
5.1 Редактирование настроек
- Общая команда редактирования:
ipfs config edit
6 Запуск
6.1 Системный демон
- Инициализируйте файловую систему ipfs:
su -s /bin/sh -c "ipfs init -e" ipfs
- Запуск системного демона:
sudo systemctl enable --now ipfs.service
6.2 Пользовательский демон
- Инициализируйте файловую систему ipfs:
ipfs init -e
- Запуск пользовательского демона:
sudo systemctl enable --now ipfs@username.service
6.3 Пользовательский демон в другом каталоге
- Инициализируйте файловую систему ipfs в каталоге
/data/ipfs
:sudo mkdir -p /data/ipfs/ sudo chown -R username /data/ipfs/ IPFS_PATH=/data/ipfs/ ipfs init -e
- Создайте переопределение для сервиса systemd:
sudo systemctl edit ipfs@username.service
- Отредактируйте файл
/etc/systemd/system/ipfs@username.service.d/override.conf
:[Service] Environment=IPFS_PATH=/data/ipfs
- Запуск пользовательского демона:
sudo systemctl enable --now ipfs@username.service
7 Первичная настройка
- Проверьте работу ipfs, откройте в броузере:
http://localhost:8080/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme
7.1 CORS
- Cross-origin Resource Sharing (CORS) есть механизм безопасности браузера, который предотвращает доступ неавторизованных скриптов к ресурсам из разных доменов.
- Можно настроить свой узел, чтобы разрешить обработку запросов из других доменов, установив соответствующие заголовки в конфигурации узла:
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["http://ip_вашего сервера:5001", "http://127.0.0.1:5001", "https://webui.ipfs.io"]' ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'
- Или прописать wildcard:
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]' ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'
8 Ресурсы
- Awesome IPFS https://github.com/ipfs/awesome-ipfs