簡介#
經過了使用 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