qfdk-Note-33446-11

Token ID: 1

ERC-721 1 Transfers

Metadata

{
  "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"
    }
  ]
}