紹介#
IPFS を約 2 週間使用した後、IPFS の動作原理を徐々に理解しました。最初に Planet を使用したときは、この概念について全く理解がありませんでした。そのため、ブログが頻繁に反応しないことがあり、パブリックゲートウェイにアクセスするとタイムアウトすることさえありました。このサービスはあまり安定していないと考えていました。
解決策 - filebase#
まず、もっと多くの友達にピンをしてもらう必要があります。ピンの操作は、現在の CID に対してのみ行われることを理解していますが、コンテンツが変更された場合はピンをする必要があります。 Planet は更新されましたので、filebase を使用してタスクを完了することができます。Planet が記事を公開した後は、少し待っておく必要があります。これにより、filebase があなたの記事をインターネット上でピン留めします。 IPFS には GC の機能があり、頻繁にアクセスされないリソースは無効になるため、このピンの操作は非常に重要です。
プライベートな解決策#
アイデアは次のとおりです。IPFS をダウンロードしてインストールし、IPFS をシステムサービスに設定し、起動時に自動的に起動できるようにします。また、IPFS ピンをスケジュールタスクに追加し、IPFS にピンの操作を自動的に行わせます。
現在、自分のサーバーに 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の最適化が完了しました"
# ピンの操作
echo -e "💡 ピンの操作を実行中、5秒後に開始します..."
sleep 5
ipfs pin add /ipns/$DOMAIN
echo -e "✅ ピンの操作が成功しました"
echo -e "📪 定期的なピンのタスクをチェック中"
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 "✅ 定期的なピンのタスクが正常に設定されました"
fi
else
echo "*/2 * * * * ipfs pin add /ipns/$DOMAIN" >>/var/spool/cron/crontabs/root
service cron reload
echo -e "✅ 定期的なピンのタスクが正常に設定されました"
fi