利用 Docker 搭建 IPFS 私有網絡


利用 Docker 搭建 IPFS 私有網絡

本文原始地址:https://sitoi.cn/posts/40630.html

下載項目

項目地址:https://github.com/Sitoi/private-network-ipfs

環境

兩台 Linux 設備,分別配置他們的ip地址為 192.168.1.244 和 192.168.1.246

步驟

  • 修改掛載目錄
  • 通過 docker 創建 IPFS 容器
  • 確保配置 IPFS API 以允許跨源(CORS)請求
  • 生成並分發一個共享 key
  • 移除默認的 boostrap 節點
  • 添加節點創建網絡
  • 重啟服務
  • 查看鄰居

修改掛載目錄

該步驟可跳過,默認掛載目錄為 項目目錄下的 datastaging 文件夾

version: "3"

services:

  ipfs_host:
    container_name: ipfs_host
    image: docker.io/ipfs/go-ipfs:latest
    restart: always
    volumes:
      - ./staging:/export                 # (可不修改)修改 掛載目錄 ./staging
      - ./data:/data/ipfs                 # (可不修改)修改 掛載目錄 ./data
    ports:
      - 4001:4001
      - 0.0.0.0:8080:8080
      - 0.0.0.0:5001:5001

通過 docker 創建 IPFS 容器

192.168.1.244 和 192.168.1.246 節點 創建 IPFS 容器

運行 make 命令

make up

登陸網頁:http://192.168.1.244:5001/webui
登陸網頁:http://192.168.1.246:5001/webui

創建容器到正常訪問頁面所要等待時間大約 3-5 分鍾

確保配置 IPFS API 以允許跨源(CORS)請求

192.168.1.244 和 192.168.1.246 節點 配置跨源(CORS)請求

運行以下命令:

docker exec ipfs_host ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]' 
docker exec ipfs_host ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'

生成並分發一個共享 key

192.168.1.244 和 192.168.1.246 節點 配置跨源(CORS)請求

注:每個節點的 key 文件內容保持一致

  • 生成key
go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
./ipfs-swarm-key-gen > swarm.key
  • 分發 key 到每個節點

目標路徑: 掛載目錄的 data 文件夾內

cp swarm.key data/

移除默認的 boostrap 節點

192.168.1.244 和 192.168.1.246 節點 配置跨源(CORS)請求

docker exec ipfs_host ipfs bootstrap rm --all

添加節點創建網絡

  • 獲取 192.168.1.244 節點 信息
docker exec ipfs_host ipfs id
{
	"ID": "QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7",
	"PublicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGwu8A5Xw4okQmkpufHLIjIO5ZhQGnCGzqD/OgcGE5MNfPe6pSurRQTI9AgQWtODJOGWqj7GBe1PgZXHIVkIhVjPIQftpcJJ/D6STJIzH9gGApc7SA8iIh2i9TaTontnvLuDswRj2hce2vWXQhh3DZ8ttv9rrPYfMcuM0tWs7klMQgt3C67prxgTd0esXm5DevtgJeHazimJcjNMBsAc9niKBgV0KFwxZPGouBBFibzF9jTWOC0qk52c33a4LcvKohLWnJbJGJ8mQj1oI9Srmo2SV37UbAVECxRvCDa0HhJkUUzkzpyCFUncZ03Mz0D6VTTCEoFKMBcahHM7ZuCKezAgMBAAE=",
	"Addresses": [
		"/ip4/127.0.0.1/tcp/4001/ipfs/QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7",
		"/ip4/172.19.0.2/tcp/4001/ipfs/QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7",
		"/ip6/::1/tcp/4001/ipfs/QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7"
	],
	"AgentVersion": "go-ipfs/0.4.19/52776a7",
	"ProtocolVersion": "ipfs/0.1.0"
}
  • 192.168.1.246 節點添加 192.168.1.244
docker exec ipfs_host ipfs bootstrap add /ip4/192.168.1.244/tcp/4001/ipfs/QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7

重啟服務

192.168.1.244 和 192.168.1.246 節點 服務重啟

docker restart ipfs_host

查看鄰居

192.168.1.244 查看鄰居

docker exec ipfs_host ipfs swarm peers
/ip4/192.168.1.246/tcp/4001/ipfs/QmVUF31gtrV9H3V1ndDCEGfKLahBNi8E9PT4AHj6m2zpjj

192.168.1.246 查看鄰居

docker exec ipfs_host ipfs swarm peers
/ip4/192.168.1.244/tcp/4001/ipfs/QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7

測試

  • 在 192.168.1.244 節點 添加文件
docker exec ipfs_host ipfs add /data/ipfs/version
 2 B / 2 B  100.00%added QmaHbbushv2gYBUyofdm853cy1HTcNuinqagCfMjMdGmNw version
  • 在 192.168.1.246 節點 用哈希值讀取該文件
docker exec ipfs_host ipfs cat QmaHbbushv2gYBUyofdm853cy1HTcNuinqagCfMjMdGmNw
7

搭建的私有網絡可以正常使用。

附錄

查看運行日志

docker logs -f ipfs_host

停止容器

docker stop ipfs_host

刪除容器

docker rm ipfs_host

重啟容器

docker restart ipfs_host

運行 IPFS 命令

docker exec ipfs_host <ipfs cmd>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM