Как быстро создать собственный шлюз IPFS

Что такое IPFS?

Межпланетная файловая система (IPFS) — это сетевой транспортный протокол, предназначенный для обеспечения распределенного хранения, совместного использования и сохранения файлов. контентно-адресуемый, одноранговый гипермедийный протокол связи. Узлы в сети IPFS составляют распределенную файловую систему.

Шлюз IPFS

Шлюзы IPFS позволяют посетителям получать доступ к данным из сети IPFS через HTTP-запросы. По умолчанию шлюз IPFS настроен на работу с портом 8080, и данные будут получены с сервера, на котором работает IPFS, следующими способами:

http://{your_ip_address}:8080/ipfs/{content ID}
или
https://{gateway URL}/ipfs/{content ID}/{optional path to resource}

Более подробная информация о шлюзе IPFS: https://docs.ipfs.io/concepts/ipfs-gateway/#overview

Другие ссылки:

Введение в IPFS: Запуск узлов в вашей сети с помощью HTTP-шлюзов: https://rossbulat.medium.com/introduction-to-ipfs-set-up-nodes-on-your-network-with-http-gateways-10e21ea689a4

Cloudflare IPFS шлюз: Настройка сервера: https://developers.cloudflare.com/distributed-web/ipfs-gateway/setting-up-a-server/

Установка IPFS на сервер Linux

Официальное руководство: https://docs.ipfs.io/install/command-line/#official-distributions

Здесь мы возьмем в качестве примера сервер Alibaba Cloud ECS и выберем CentOS 8.5.

  1. Нажмите “Connect” и выберите Workbench Connection для удаленного доступа к вашему серверу ECS через веб.
    image

  2. После подключения к серверу IPFS можно установить с сайта dist.ipfs.io двумя способами:
    cd ~/
    wget https://dist.ipfs.io/go-ipfs/v0.12.2/go-ipfs_v0.12.2_linux-amd64.tar.gz

// Alibaba Cloud Server probably can not access dist.ipfs.io directly
// Alternatively, use: wget -q https://github.com/ipfs/go-ipfs/releases/download/v0.12.2/go-ipfs_v0.12.2_linux-amd64.tar.gz

1. Ручная установка go-ipfs

// Unzip the file: tar xvfz go-ipfs_v0.4.18_linux-amd64.tar.gz

> x go-ipfs/install.sh
> x go-ipfs/ipfs
> x go-ipfs/LICENSE
> x go-ipfs/LICENSE-APACHE
> x go-ipfs/LICENSE-MIT
> x go-ipfs/README.md

// change directory into go-ipfs and run install.sh script
cd go-ipfs
sudo ./install.sh
> Moved ./ipfs to /usr/local/bin

// Test if ipfs is installed correctly
ipfs --version
> ipfs version 0.12.2

2. Установка через ipfs-update

cd ~/
wget https://dist.ipfs.io/ipfs-update/v1.8.0/ipfs-update_v1.8.0_linux-amd64.tar.gz
tar xvfz ipfs-update_v1.5.2_linux-amd64.tar.gz
cd ipfs-update
sudo ./install.sh
ipfs-update versions
ipfs-update install latest

Запуск ipfs-update install latest установит последнюю версию go-ipfs, результат свидетельствует об этом:

fetching go-ipfs version v0.4.22
binary downloaded, verifying…
success! tests all passed.
stashing old binary
installing new binary to /usr/local/bin/ipfs
checking if repo migration is needed…

Installation complete!
Remember to restart your daemon before continuing

Инициализация хранилища

Подробно см. официальное руководство по инициализации и эксплуатации: https://docs.ipfs.io/how-to/command-line-quick-start/#initialize-the-repository.

После успешной установки сначала запустите ipfs init для инициализации хранилища. По умолчанию IPFS помещает все настройки и внутренние данные в каталог под названием “repository”. В результате будет отображено:

ipfs init

> initializing ipfs node at /Users/jbenet/.ipfs
> generating 2048-bit RSA keypair…done
> peer identity: Qmcpo2iLBikrdf1d6QU6vXuNb6P7hwrbNPW9kLAH8eG67z
> to get started, enter:
>
> ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme

Внимание: Если вы выполните команду sudo ipfs init, хранилище будет создано для пользователя root, а не для вашей локальной учетной записи пользователя. IPFS не требует прав root, поэтому лучше выполнять все команды от имени обычного пользователя!

Используйте Systemd для запуска daemon IPFS

Systemd - это пак, который поставляется с большинством новых дистрибутивов Linux. Он позволяет пользователям создавать и управлять фоновыми службами. Эти службы автоматически запускаются при старте сервера, перезапускаются в случае сбоя, а их логи сохраняются на диске.

  1. Введите команду: sudo bash -c 'cat >/lib/systemd/system/ipfs.service <<EOL
  2. Введите следующее содержимое:
    [Unit]
    Description=IPFS Daemon
    After=network.target

[Service]
ExecStart=/usr/local/bin/ipfs daemon
User=root
Restart=always
LimitNOFILE=10240
Environment=“IPFS_PATH=/mnt/disks/ipfs-disk/ipfs”

[Install]
WantedBy=multi-user.target

Строка User=root заполняется в соответствии с именем пользователя, запускающего IPFS, как показано ниже:
image

  1. Введите EOL’, чтобы завершить работу
  2. Выполните следующую команду, чтобы указать Systemd на запуск новой службы

sudo systemctl daemon-reload
sudo systemctl enable ipfs
sudo systemctl start ipfs

Настройка HTTP-шлюзов IPFS

  1. Выполните следующую команду для настройки CORS

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["<your domain or all ()>"]’*
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods ‘[“PUT”, “GET”, “POST”]’

Выполните команду vi ~/.ipfs/config для редактирования файла конфигурации
a. Найдите “Gateway” и измените его содержимое следующим образом:

// The ** symbols on both sides indicate the content being modified
“Gateway”: {
“APICommands”: [],
“HTTPHeaders”: {
“Access-Control-Allow-Headers”: [
“X-Requested-With”,
** “Access-Control-Expose-Headers”, **
“Range”,
“User-Agent”
],
“Access-Control-Allow-Methods”: [
** “POST”, **
“GET”
],
“Access-Control-Allow-Origin”: [
“*”
],
** “Access-Control-Expose-Headers”: [
“Location”,
“Ipfs-Hash”
], **
** “X-Special-Header”: [
“Access-Control-Expose-Headers: Ipfs-Hash”
] **
},
“NoDNSLink”: false,
“NoFetch”: false,
“PathPrefixes”: [],
“PublicGateways”: null,
“RootRedirect”: “”,
** “Writable”: true **
},

b. Найдите “Адреса” и измените “Шлюз”: “/ip4/127.0.0.1/tcp/8080” на “Gateway”: “/ip4/0.0.0.0/tcp/8080”

После завершения настройки шлюза перезапустите службу IPFS: sudo systemctl restart ipfs

Внимание: IPFS Desktop поддерживает установку хранилища по умолчанию (хранилище по умолчанию в /~.ipfs), и номер порта (8080, 5001, 4001), необходимо обратить внимание, чтобы предотвратить конфликт портов с другими процессами.

Доступ к вашему шлюзу

Введите в браузере следующий URL-адрес:
http://<your_ip_address>:8080/ipfs/QmSgvgwxZGaBLqkGyWemEDqikCqU52XxsYLKtdy3vGZ8uq
Появление картинки означает, что ваш шлюз работает.

Также, чтобы получить файлы из IPFS, выполните следующую команду:

ipfs cat /ipfs/QmSgvgwxZGaBLqkGyWemEDqikCqU52XxsYLKtdy3vGZ8uq

Ссылка на оригинал: How to Quickly Build Your Own IPFS Gateway

Присоединяйся к сообществу Conflux Russia

Чат Telegram | Официальные новости Telegram | Twitter | Reddit | Discord | Forum | Medium | Официальный сайт