qfdk

qfdk

喜欢碎碎念的小 🐭, 对开源情有独钟, 会说 🇫🇷, 喜欢折腾 “黑科技”, 徒步是日常
github

嘗試製作IPFS自動pin服務

簡介#

經過了使用 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,包括 兩台國內伺服器,兩台德國伺服器,甚至美國伺服器也有安裝。 這些希望自動化一下,於是乎自己寫了一個一鍵腳本:

image

看起來還是很不錯的吧,不過還是有修改空間的,貼出來一部分,幫助到的朋友可以來點個讚那

#!/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

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。