IPFS. Реализация kubo

IPFS. Реализация kubo

2026-03-26 · 3 мин. для прочтения
blog computer-science

IPFS. Реализация kubo.

Содержание

1 Общая информация

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 Права доступа

  • Добавьте пользователя в группу ipfs:
    sudo gpasswd -a <user> ipfs
    

5 Web-консоль

  • Подключиться к web-консоли:
    http://localhost:5001/webui/
    
  • Настройки IPFS можно менять в webui.
  • Локальный IPFS-шлюз:
    http://localhost:8080/ipfs/
    

6 Команды

6.1 Редактирование настроек

  • Общая команда редактирования:
    ipfs config edit
    

7 Системные настройки

7.1 Размеры UDP-буферов

sysctl -w net.core.rmem_max=7500000
sysctl -w net.core.wmem_max=7500000
  • Добавить в файл конфигурации, чтобы сохранялось при перезагрузке:
    sudo cat << EOF >> sysctl.conf
    ## ipfs UDP buffer sizes
    net.core.rmem_max = 7500000
    net.core.wmem_max = 7500000
    EOF
    

8 Запуск

8.1 Системный демон

  • Инициализируйте файловую систему ipfs:
    su -s /bin/sh -c "ipfs init -e" ipfs
    
  • Запуск системного демона:
    sudo systemctl enable --now ipfs.service
    

8.2 Системный демон в другом каталоге

  • Я для унификации я хочу поместить каталог ipfs в /data/ipfs.
  • Создайте каталог:
    mkdir -p /data/ipfs
    chown ipfs:ipfs /data/ipfs
    
  • Можно либо подменить переменную окружения, как в запуске под пользователем, либо подмонтировать необходимый каталог в /var/lib/ipfs.
  • Создайте подтом для ipfs:
    mkdir -p /fs
    mount /dev/nvme0n1p4 /fs
    cd /fs
    btrfs subvolume create @ipfs
    cd /
    umount /fs
    
  • Добавьте в /etc/fstab:
    /dev/nvme0n1p4 /data/ipfs btrfs relatime,discard=async,autodefrag,compress=zstd,subvol=@ipfs 0 0
    /data/ipfs /var/lib/ipfs btrfs bind 0 0
    
  • Подмонтируйте:
    mount /data/ipfs
    mount /var/lib/ipfs
    
  • Инициализируйте файловую систему ipfs:
    sudo -u ipfs ipfs init -e
    
  • Запуск демона:
    sudo systemctl enable --now ipfs.service
    

8.3 Пользовательский демон

  • Инициализируйте файловую систему ipfs:
    ipfs init -e
    
  • Запуск пользовательского демона:
    sudo systemctl enable --now ipfs@username.service
    

8.4 Пользовательский демон в другом каталоге

  • Инициализируйте файловую систему 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
    

9 Первичная настройка

  • Проверьте работу ipfs, откройте в броузере:
    http://localhost:8080/ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme
    

9.1 CORS

  • Cross-origin Resource Sharing (CORS) есть механизм безопасности браузера, который предотвращает доступ неавторизованных скриптов к ресурсам из разных доменов.
  • Можно настроить свой узел, чтобы разрешить обработку запросов из других доменов, установив соответствующие заголовки в конфигурации узла:
    sudo -u ipfs ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["http://ip_вашего сервера:5001", "http://127.0.0.1:5001", "https://webui.ipfs.io"]'
    sudo -u ipfs ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'
    
  • Или прописать wildcard:
    sudo -u ipfs ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
    sudo -u ipfs ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'
    
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Работаю профессором на кафедре теории вероятностей и кибербезопасности Российского университета дружбы народов им. Патриса Лумумбы. Научные интересы относятся к области теоретической физики и математического моделирования.