Файловая система 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 Ресурсы


Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие