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