简介#
经过了使用 IPFS 大概两周的时间,慢慢了解了 IPFS 的运作原理。 刚开始使用 Planet 的时候对于这个概念完全不了解,导致了博客经常没有反应,甚至访问公网 gateway 会超时。一直认为这个服务不是很稳定
解决方案 - filebase#
首先需要更多的朋友来帮助 pin 一下你,据了解 pin 的操作 只是对当前的 CID 进行了 pin,如果内容有所更改还是需要 pin 一下。 Planet 进行了一番更新,我们可以使用 filebase 来帮我们完成事情,Planet 发布完文章 一定要多留一会儿,这样 filebase 会把你的文章 pin 在互联网上。因为 IPFS 有个 GC 的特性,这个特性导致不是很频繁访问的资源会失效,所以这个 pin 的操作还是很重要的。
私房解决方案#
思路如下,下载安装 ipfs,把 ipfs 设置成系统服务,这样每次开机的时候都可以启动。还要把 ipfs pin 加入到计划任务,让 ipfs 自动帮我们完成 pin 的操作。
到目前为止,自己的服务器安装了 IPFS 的操作,并把 qfdka.eth 做了一番操作,现在给我的好几个服务器就安装了 ipfs,包括 两台国内服务器,两台德国服务器,甚至美国服务器也有安装。 这些希望自动化一下,于是乎自己写了一个一键脚本:
看起来还是很不错的吧,不过还是有修改空间的,贴出来一部分,帮助到的朋友可以来点个赞那
#!/bin/bash
FILE_NAME="kubo_v0.16.0_linux-amd64.tar.gz"
DOMAIN="qfdka.eth"
ls /usr/local/bin/ipfs >/dev/null
# 判断是否安装 ipfs
if [ $? -ne 0 ]; then
echo -e "💡 下载ipfs ${FILE_NAME}"
cd /tmp
wget https://dist.ipfs.tech/kubo/v0.16.0/$FILE_NAME
tar -xvzf $FILE_NAME
cd kubo
echo -e "💡 执行官方安装脚本"
sudo bash install.sh >/dev/null
echo -e "✅ 官方安装脚本执行完成"
# 安装系统服务
echo -e "📪 安装系统服务"
cat >/lib/systemd/system/ipfs.service <<EOF
[Unit]
Description=IPFS
[Service]
ExecStart=/usr/local/bin/ipfs daemon
Restart=always
User=root
Group=root
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
echo -e "📪 初始化 ipfs"
ipfs init >/dev/null
systemctl enable ipfs
echo -e "✅ IPFS 服务安装完成"
else
echo -e "✅ IPFS 已经安装"
fi
echo -e "💭 正在优化 IPFS 配置"
systemctl stop ipfs >/dev/null
sysctl -w net.core.rmem_max=2500000
ipfs config Addresses.Gateway /ip4/127.0.0.1/tcp/8088
# 切换为低功耗模式
# ipfs config profile apply server >/dev/null
ipfs config profile apply lowpower >/dev/null
systemctl start ipfs
echo -e "✅ 优化 IPFS 完成"
# pin 操作
echo -e "💡 执行 PIN 操作, 5 秒后操作开始 ..."
sleep 5
ipfs pin add /ipns/$DOMAIN
echo -e "✅ PIN 操作成功"
echo -e "📪 定时 PIN 任务检测"
if [ -f /var/spool/cron/crontabs/root ]; then
CRONTABLE=$(cat /var/spool/cron/crontabs/root | grep $DOMAIN | wc -l)
if [ $CRONTABLE -eq 1 ]; then
echo -e "✅ 任务已经存在"
else
echo "*/2 * * * * ipfs pin add /ipns/$DOMAIN" >>/var/spool/cron/crontabs/root
service cron reload
echo -e "✅ 定时 PIN 任务设置成功"
fi
else
echo "*/2 * * * * ipfs pin add /ipns/$DOMAIN" >>/var/spool/cron/crontabs/root
service cron reload
echo -e "✅ 定时 PIN 任务设置成功"
fi