原创

[教程]ipfs for docker搭建实录

前言

很久前就知道ipfs这个东西,最近打算试试看,打算拿T490试下

chatgpt 介绍ifps

IPFS是一个创新的分布式文件系统,通过去中心化、内容寻址和点对点网络等技术,提供了可靠、高效的文件传输和存储解决方案,具有潜力改变传统互联网的架构和方式。

chatgpt 介绍docker

Docker是一个强大的容器化平台,通过提供独立、可移植的容器环境,简化了应用程序的构建、部署和管理过程,提高了开发效率和应用程序的可移植性。它已经成为现代应用程序开发和部署的重要工具之一。

搭建实录

确定系统版本

一般来说,没有特别多限制

相关链接

ipfs kubo

run ipfs inside docker

安装docker

这里不多说,可以参考下我之前的文章完整上线一个php+nginx+mysql+redis架构的网站

确定要同步的文件

因为ifps依靠文件系统来同步,docker需要知道那些文件可以映射到容器中,本地建立目录比如:
mkdir -p /home/usrname/ifpsfiles/filemkdir -p /home/username/ifpsfiles/data/

docker命令

Start a container running ipfs and expose ports 4001 (P2P TCP/QUIC transports), 5001 (RPC API) and 8080 (Gateway):
启动容器,如果本地没有镜像,会自动拉取hub上的,开放端口4001(用于p2p传输),5001(用于api接口),8280(网关)

看到一串代码,代表启动成功了。

[ya@ya-PC ~]$ docker run -d --name ipfs_host -v /home/username/ifpsfiles/data/:/export -v /home/usrname/ifpsfiles/file:/data/ipfs -p 4001:4001 -p 4001:4001/udp -p 127.0.0.1:8280:8080 -p 127.0.0.1:5001:5001 ipfs/kubo:latest
Unable to find image 'ipfs/kubo:latest' locally
latest: Pulling from ipfs/kubo
b2d221698d1d: Pull complete 
361c95a9f2c8: Pull complete 
b294bc7b3de5: Pull complete 
8bcd9c141fe1: Pull complete 
970d28aee2ab: Pull complete 
fa7ceb11e44c: Pull complete 
b635a16a6d9a: Pull complete 
15903a5399cf: Pull complete 
9d85f0a4e0b3: Pull complete 
4f4fb700ef54: Pull complete 
ee13aab5e171: Pull complete 
f79a8969d998: Pull complete 
30c781c480a2: Pull complete 
6b61adb00adf: Pull complete 
46a8dcf5ffd9: Pull complete 
b0bad31497e6: Pull complete 
Digest: sha256:19891b091ff9e2500c1761b09b133d8a9ddd68b68c10bad25da5f3f2b2775487
Status: Downloaded newer image for ipfs/kubo:latest
c72b02e50672274a4de27edb673dc8637ebff31252f1d290dd4a087e153a8943

查看log

看到Daemon is ready代表启动成功

[ya@ya-PC ~]$ docker logs -f ipfs_host
Changing user to ipfs
ipfs version 0.20.0
generating ED25519 keypair...done
peer identity: 12D3KooWDooJXwUAs4GMQ7VaB6zZy2DHmGNRHyJoLpGgCwKgruCc
initializing IPFS node at /data/ipfs
Initializing daemon...
Kubo version: 0.20.0-b8c4725
Repo version: 13
System version: amd64/linux
Golang version: go1.19.1

Computed default go-libp2p Resource Manager limits based on:
    - 'Swarm.ResourceMgr.MaxMemory': "8.3 GB"
    - 'Swarm.ResourceMgr.MaxFileDescriptors': 536870908

Theses can be inspected with 'ipfs swarm resources'.

2023/06/08 10:09:23 failed to sufficiently increase receive buffer size (was: 208 kiB, wanted: 2048 kiB, got: 416 kiB). See https://github.com/quic-go/quic-go/wiki/UDP-Receive-Buffer-Size for details. Swarm listening on /ip4/127.0.0.1/tcp/4001 Swarm listening on /ip4/127.0.0.1/udp/4001/quic Swarm listening on /ip4/127.0.0.1/udp/4001/quic-v1 Swarm listening on /ip4/127.0.0.1/udp/4001/quic-v1/webtransport/certhash/uEiBTP_YZ-V6ywKtFuCDtXi_IbkTLXTMqXyaCLcv5h7IZbQ/certhash/uEiBiDMqsg1MZpYaTTFsGf9fwW47-QsqzzPOI9NJlrUbIFw Swarm listening on /ip4/172.17.0.2/tcp/4001 Swarm listening on /ip4/172.17.0.2/udp/4001/quic Swarm listening on /ip4/172.17.0.2/udp/4001/quic-v1 Swarm listening on /ip4/172.17.0.2/udp/4001/quic-v1/webtransport/certhash/uEiBTP_YZ-V6ywKtFuCDtXi_IbkTLXTMqXyaCLcv5h7IZbQ/certhash/uEiBiDMqsg1MZpYaTTFsGf9fwW47-QsqzzPOI9NJlrUbIFw Swarm listening on /p2p-circuit Swarm announcing /ip4/127.0.0.1/tcp/4001 Swarm announcing /ip4/127.0.0.1/udp/4001/quic Swarm announcing /ip4/127.0.0.1/udp/4001/quic-v1 Swarm announcing /ip4/127.0.0.1/udp/4001/quic-v1/webtransport/certhash/uEiBTP_YZ-V6ywKtFuCDtXi_IbkTLXTMqXyaCLcv5h7IZbQ/certhash/uEiBiDMqsg1MZpYaTTFsGf9fwW47-QsqzzPOI9NJlrUbIFw Swarm announcing /ip4/172.17.0.2/tcp/4001 Swarm announcing /ip4/172.17.0.2/udp/4001/quic Swarm announcing /ip4/172.17.0.2/udp/4001/quic-v1 Swarm announcing /ip4/172.17.0.2/udp/4001/quic-v1/webtransport/certhash/uEiBTP_YZ-V6ywKtFuCDtXi_IbkTLXTMqXyaCLcv5h7IZbQ/certhash/uEiBiDMqsg1MZpYaTTFsGf9fwW47-QsqzzPOI9NJlrUbIFw RPC API server listening on /ip4/0.0.0.0/tcp/5001 WebUI: http://0.0.0.0:5001/webui Gateway server listening on /ip4/0.0.0.0/tcp/8080 Daemon is ready

web访问界面

访问:http://127.0.0.1:5001/webui

webui

上传文件

界面上选择上传即可

分享文件

比如我传了一个文件为:

https://ipfs.io/ipfs/QmVEzYp3Xq4nAQdkgjpmVs1zaotJmz6dMVd1rSqZh7monc?filename=3tb2vrrwfby.jpg

QmVEzYp3Xq4nAQdkgjpmVs1zaotJmz6dMVd1rSqZh7monc这串代码就是文件的hash,通过这个hash你可以在文件网关中随便找到一个节点下载,比如我经常用的:
https://cloudflare-ipfs.com/ipfs/QmVEzYp3Xq4nAQdkgjpmVs1zaotJmz6dMVd1rSqZh7monc?filename=3tb2vrrwfby.jpg

当然,ipfs.io网关应该是被X了,那么就需要一个万能的网关了,点这里获取:

https://ipfs.github.io/public-gateway-checker/

找到一个可用的网关,改下域名即可下载!

结束语

ifps,无疑是好东西,很多节点,文件传输很快,一般只要几分钟就能全球同步了,这下文件传输又多了一个渠道啦,不过不要不要随意透漏你的网关地址哦。

本文来自:[教程]ipfs for docker搭建实录-小码农,转载请保留本条链接,感谢!

温馨提示:
本文最后更新于 2023年06月08日,已超过 562 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我
正文到此结束
本文目录