{
  "schemaVersion": "1.0",
  "item": {
    "slug": "ipfs-server",
    "name": "IPFS Server",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/apexfork/ipfs-server",
    "canonicalUrl": "https://clawhub.ai/apexfork/ipfs-server",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/ipfs-server",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=ipfs-server",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "ipfs-server",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-04T06:26:29.198Z",
      "expiresAt": "2026-05-11T06:26:29.198Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=ipfs-server",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=ipfs-server",
        "contentDisposition": "attachment; filename=\"ipfs-server-0.1.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "ipfs-server"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/ipfs-server"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/ipfs-server",
    "agentPageUrl": "https://openagent3.xyz/skills/ipfs-server/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ipfs-server/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ipfs-server/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "IPFS Server Operations",
        "body": "You are an IPFS server administrator. You help users run IPFS nodes, manage content, publish data, and operate gateway services. This skill handles full node operations including content publishing and network configuration.\n\nFor read-only IPFS queries and content exploration, use the ipfs-client skill."
      },
      {
        "title": "Installation (macOS)",
        "body": "# Homebrew (recommended)\nbrew install ipfs\n\n# Or download binary from dist.ipfs.tech\ncurl -O https://dist.ipfs.tech/kubo/v0.24.0/kubo_v0.24.0_darwin-amd64.tar.gz\ntar -xzf kubo_v0.24.0_darwin-amd64.tar.gz\nsudo ./kubo/install.sh"
      },
      {
        "title": "Node Initialization",
        "body": "First-time setup:\n\n# Initialize repository\nipfs init\n\n# Show peer ID\nipfs id\n\n# Configure for low-resource usage (optional)\nipfs config profile apply lowpower\n\nBasic configuration:\n\n# Allow gateway on all interfaces (for local network access)\nipfs config Addresses.Gateway /ip4/0.0.0.0/tcp/8080\n\n# Configure API (keep localhost for security)\nipfs config Addresses.API /ip4/127.0.0.1/tcp/5001\n\n# Set storage limit\nipfs config Datastore.StorageMax 10GB"
      },
      {
        "title": "Starting and Stopping",
        "body": "Start IPFS daemon:\n\nipfs daemon &> ipfs.log 2>&1 &\n\nCheck daemon status:\n\nipfs swarm peers | wc -l  # Connected peer count\nipfs repo stat            # Repository statistics\n\nStop daemon:\n\npkill ipfs"
      },
      {
        "title": "Adding Content",
        "body": "Add files and directories:\n\n# Add single file\nipfs add myfile.txt\n# Returns: added QmHash myfile.txt\n\n# Add directory recursively  \nipfs add -r ./my-directory/\n\n# Add and only show final hash\nipfs add -Q myfile.txt\n\n# Add with custom name\nipfs add --wrap-with-directory myfile.txt\n\nAdd from stdin:\n\necho \"Hello IPFS\" | ipfs add\ncat largefile.json | ipfs add --pin=false  # Don't pin immediately"
      },
      {
        "title": "Pinning Management",
        "body": "Pin content (prevent garbage collection):\n\nipfs pin add QmHash\nipfs pin add -r QmHash  # Recursively pin directory\n\n# List pinned content\nipfs pin ls --type=recursive\nipfs pin ls --type=direct\n\n# Unpin content\nipfs pin rm QmHash\n\nRemote pinning services:\n\n# Configure remote pinning (Pinata, Web3.Storage, etc.)\nipfs pin remote service add pinata https://api.pinata.cloud/psa YOUR_JWT\n\n# Pin to remote service\nipfs pin remote add --service=pinata --name=\"my-content\" QmHash\n\n# List remote pins\nipfs pin remote ls --service=pinata"
      },
      {
        "title": "Garbage Collection",
        "body": "Clean up unpinned content:\n\n# Show what would be collected\nipfs repo gc --dry-run\n\n# Run garbage collection\nipfs repo gc\n\n# Check repo size before/after\nipfs repo stat"
      },
      {
        "title": "IPNS Publishing",
        "body": "Publish content to IPNS:\n\n# Publish to default key\nipfs name publish QmHash\n\n# Create and use custom key\nipfs key gen --type=ed25519 my-site\nipfs name publish --key=my-site QmHash\n\n# List published records\nipfs name pubsub subs\n\nIPNS with custom domains:\n\n# Create DNS TXT record: _dnslink.example.com = \"dnslink=/ipns/k51qzi5uqu5d...\"\n# Then resolve via:\nipfs name resolve /ipns/example.com"
      },
      {
        "title": "Content Updates",
        "body": "Update IPNS record:\n\n# Publish new version\nipfs add -r ./updated-site/\nipfs name publish --key=my-site QmNewHash"
      },
      {
        "title": "Swarm Management",
        "body": "Peer operations:\n\n# List connected peers\nipfs swarm peers\n\n# Connect to specific peer\nipfs swarm connect /ip4/104.131.131.82/tcp/4001/p2p/QmPeerID\n\n# Disconnect peer\nipfs swarm disconnect /ip4/104.131.131.82/tcp/4001/p2p/QmPeerID\n\nAddress configuration:\n\n# Show current addresses\nipfs config Addresses\n\n# Add custom swarm address\nipfs config --json Addresses.Swarm '[\"/ip4/0.0.0.0/tcp/4001\", \"/ip6/::/tcp/4001\"]'"
      },
      {
        "title": "Bootstrap Nodes",
        "body": "Manage bootstrap peers:\n\n# List bootstrap nodes\nipfs bootstrap list\n\n# Add custom bootstrap node\nipfs bootstrap add /ip4/104.131.131.82/tcp/4001/p2p/QmBootstrapPeer\n\n# Remove all bootstrap nodes (private network)\nipfs bootstrap rm --all"
      },
      {
        "title": "Local Gateway",
        "body": "Configure gateway:\n\n# Basic gateway configuration\nipfs config Addresses.Gateway /ip4/127.0.0.1/tcp/8080\n\n# Public gateway (be careful!)\nipfs config Addresses.Gateway /ip4/0.0.0.0/tcp/8080\n\n# Enable directory listing\nipfs config --json Gateway.PublicGateways '{\n  \"localhost\": {\n    \"Paths\": [\"/ipfs\", \"/ipns\"],\n    \"UseSubdomains\": false\n  }\n}'\n\nAccess patterns:\n\n# Via path\nhttp://localhost:8080/ipfs/QmHash\n\n# Via subdomain (if configured)\nhttp://QmHash.ipfs.localhost:8080"
      },
      {
        "title": "Reverse Proxy Setup",
        "body": "Nginx configuration example:\n\nserver {\n    listen 80;\n    server_name gateway.example.com;\n    \n    location / {\n        proxy_pass http://127.0.0.1:8080;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n    }\n}"
      },
      {
        "title": "Performance Tuning",
        "body": "High-performance settings:\n\n# Apply server profile\nipfs config profile apply server\n\n# Increase connection limits\nipfs config Swarm.ConnMgr.HighWater 2000\nipfs config Swarm.ConnMgr.LowWater 1000\n\n# Adjust bitswap settings\nipfs config --json Bitswap.MaxOutstandingBytesPerPeer 1048576"
      },
      {
        "title": "Private Networks",
        "body": "Create private IPFS network:\n\n# Generate swarm key\necho -e \"/key/swarm/psk/1.0.0/\\n/base16/\\n$(tr -dc 'a-f0-9' < /dev/urandom | head -c64)\" > ~/.ipfs/swarm.key\n\n# ⚠️ SECURITY: This swarm key is your network's access control credential. \n# Anyone with this file can join your private network. Protect it accordingly.\n\n# Remove all bootstrap nodes\nipfs bootstrap rm --all\n\n# Start daemon (will only connect to nodes with same key)\nipfs daemon"
      },
      {
        "title": "Storage Configuration",
        "body": "Configure datastore:\n\n# Set storage limits\nipfs config Datastore.StorageMax 100GB\nipfs config Datastore.GCPeriod \"1h\"\n\n# Enable flatfs for better performance\nipfs config --json Datastore.Spec '{\n  \"mounts\": [\n    {\n      \"child\": {\"type\": \"flatfs\", \"path\": \"blocks\", \"shardFunc\": \"/repo/flatfs/shard/v1/next-to-last/2\"},\n      \"mountpoint\": \"/blocks\",\n      \"prefix\": \"flatfs.datastore\",\n      \"type\": \"mount\"\n    }\n  ],\n  \"type\": \"mount\"\n}'"
      },
      {
        "title": "Health Checks",
        "body": "Basic health monitoring:\n\n# Check daemon status\nipfs stats bw          # Bandwidth usage\nipfs stats repo        # Repository stats  \nipfs diag sys          # System information\nipfs log level debug   # Enable debug logging\n\nConnection monitoring:\n\n# Monitor peer connections\nwhile true; do\n  echo \"$(date): $(ipfs swarm peers | wc -l) peers\"\n  sleep 60\ndone"
      },
      {
        "title": "Log Management",
        "body": "Configure logging:\n\n# Set log levels\nipfs log level bitswap info\nipfs log level dht warn\n\n# Tail logs\nipfs log tail"
      },
      {
        "title": "Security Considerations",
        "body": "API access:\n\nKeep API on localhost (127.0.0.1:5001) unless in trusted network\nUse firewall rules to restrict API access\nConsider authentication proxy for multi-user setups\n\nGateway security:\n\nPublic gateways can consume significant bandwidth\nImplement rate limiting and caching\nMonitor for abuse and unauthorized content\n\nContent policy:\n\nIPFS is censorship-resistant - content removal is complex\nImplement content filtering at gateway level if needed\nConsider legal implications of operating public infrastructure"
      },
      {
        "title": "Troubleshooting",
        "body": "Connection issues:\n\nCheck firewall allows ports 4001 (swarm) and 8080 (gateway)\nVerify bootstrap nodes are reachable\nTry different swarm addresses\n\nPerformance problems:\n\nRun garbage collection: ipfs repo gc\nCheck available disk space and datastore limits\nMonitor bandwidth usage: ipfs stats bw\nConsider applying performance profiles\n\nContent not accessible:\n\nVerify content is pinned: ipfs pin ls\nCheck if providers exist: ipfs dht findprovs QmHash\nTry republishing IPNS records\n\nRelated skills: /ipfs-client (read-only queries), /eth-readonly (blockchain integration)"
      }
    ],
    "body": "IPFS Server Operations\n\nYou are an IPFS server administrator. You help users run IPFS nodes, manage content, publish data, and operate gateway services. This skill handles full node operations including content publishing and network configuration.\n\nFor read-only IPFS queries and content exploration, use the ipfs-client skill.\n\nInstallation (macOS)\n# Homebrew (recommended)\nbrew install ipfs\n\n# Or download binary from dist.ipfs.tech\ncurl -O https://dist.ipfs.tech/kubo/v0.24.0/kubo_v0.24.0_darwin-amd64.tar.gz\ntar -xzf kubo_v0.24.0_darwin-amd64.tar.gz\nsudo ./kubo/install.sh\n\nNode Initialization\n\nFirst-time setup:\n\n# Initialize repository\nipfs init\n\n# Show peer ID\nipfs id\n\n# Configure for low-resource usage (optional)\nipfs config profile apply lowpower\n\n\nBasic configuration:\n\n# Allow gateway on all interfaces (for local network access)\nipfs config Addresses.Gateway /ip4/0.0.0.0/tcp/8080\n\n# Configure API (keep localhost for security)\nipfs config Addresses.API /ip4/127.0.0.1/tcp/5001\n\n# Set storage limit\nipfs config Datastore.StorageMax 10GB\n\nStarting and Stopping\n\nStart IPFS daemon:\n\nipfs daemon &> ipfs.log 2>&1 &\n\n\nCheck daemon status:\n\nipfs swarm peers | wc -l  # Connected peer count\nipfs repo stat            # Repository statistics\n\n\nStop daemon:\n\npkill ipfs\n\nContent Management\nAdding Content\n\nAdd files and directories:\n\n# Add single file\nipfs add myfile.txt\n# Returns: added QmHash myfile.txt\n\n# Add directory recursively  \nipfs add -r ./my-directory/\n\n# Add and only show final hash\nipfs add -Q myfile.txt\n\n# Add with custom name\nipfs add --wrap-with-directory myfile.txt\n\n\nAdd from stdin:\n\necho \"Hello IPFS\" | ipfs add\ncat largefile.json | ipfs add --pin=false  # Don't pin immediately\n\nPinning Management\n\nPin content (prevent garbage collection):\n\nipfs pin add QmHash\nipfs pin add -r QmHash  # Recursively pin directory\n\n# List pinned content\nipfs pin ls --type=recursive\nipfs pin ls --type=direct\n\n# Unpin content\nipfs pin rm QmHash\n\n\nRemote pinning services:\n\n# Configure remote pinning (Pinata, Web3.Storage, etc.)\nipfs pin remote service add pinata https://api.pinata.cloud/psa YOUR_JWT\n\n# Pin to remote service\nipfs pin remote add --service=pinata --name=\"my-content\" QmHash\n\n# List remote pins\nipfs pin remote ls --service=pinata\n\nGarbage Collection\n\nClean up unpinned content:\n\n# Show what would be collected\nipfs repo gc --dry-run\n\n# Run garbage collection\nipfs repo gc\n\n# Check repo size before/after\nipfs repo stat\n\nPublishing and IPNS\nIPNS Publishing\n\nPublish content to IPNS:\n\n# Publish to default key\nipfs name publish QmHash\n\n# Create and use custom key\nipfs key gen --type=ed25519 my-site\nipfs name publish --key=my-site QmHash\n\n# List published records\nipfs name pubsub subs\n\n\nIPNS with custom domains:\n\n# Create DNS TXT record: _dnslink.example.com = \"dnslink=/ipns/k51qzi5uqu5d...\"\n# Then resolve via:\nipfs name resolve /ipns/example.com\n\nContent Updates\n\nUpdate IPNS record:\n\n# Publish new version\nipfs add -r ./updated-site/\nipfs name publish --key=my-site QmNewHash\n\nNetwork Configuration\nSwarm Management\n\nPeer operations:\n\n# List connected peers\nipfs swarm peers\n\n# Connect to specific peer\nipfs swarm connect /ip4/104.131.131.82/tcp/4001/p2p/QmPeerID\n\n# Disconnect peer\nipfs swarm disconnect /ip4/104.131.131.82/tcp/4001/p2p/QmPeerID\n\n\nAddress configuration:\n\n# Show current addresses\nipfs config Addresses\n\n# Add custom swarm address\nipfs config --json Addresses.Swarm '[\"/ip4/0.0.0.0/tcp/4001\", \"/ip6/::/tcp/4001\"]'\n\nBootstrap Nodes\n\nManage bootstrap peers:\n\n# List bootstrap nodes\nipfs bootstrap list\n\n# Add custom bootstrap node\nipfs bootstrap add /ip4/104.131.131.82/tcp/4001/p2p/QmBootstrapPeer\n\n# Remove all bootstrap nodes (private network)\nipfs bootstrap rm --all\n\nGateway Operations\nLocal Gateway\n\nConfigure gateway:\n\n# Basic gateway configuration\nipfs config Addresses.Gateway /ip4/127.0.0.1/tcp/8080\n\n# Public gateway (be careful!)\nipfs config Addresses.Gateway /ip4/0.0.0.0/tcp/8080\n\n# Enable directory listing\nipfs config --json Gateway.PublicGateways '{\n  \"localhost\": {\n    \"Paths\": [\"/ipfs\", \"/ipns\"],\n    \"UseSubdomains\": false\n  }\n}'\n\n\nAccess patterns:\n\n# Via path\nhttp://localhost:8080/ipfs/QmHash\n\n# Via subdomain (if configured)\nhttp://QmHash.ipfs.localhost:8080\n\nReverse Proxy Setup\n\nNginx configuration example:\n\nserver {\n    listen 80;\n    server_name gateway.example.com;\n    \n    location / {\n        proxy_pass http://127.0.0.1:8080;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n    }\n}\n\nAdvanced Configuration\nPerformance Tuning\n\nHigh-performance settings:\n\n# Apply server profile\nipfs config profile apply server\n\n# Increase connection limits\nipfs config Swarm.ConnMgr.HighWater 2000\nipfs config Swarm.ConnMgr.LowWater 1000\n\n# Adjust bitswap settings\nipfs config --json Bitswap.MaxOutstandingBytesPerPeer 1048576\n\nPrivate Networks\n\nCreate private IPFS network:\n\n# Generate swarm key\necho -e \"/key/swarm/psk/1.0.0/\\n/base16/\\n$(tr -dc 'a-f0-9' < /dev/urandom | head -c64)\" > ~/.ipfs/swarm.key\n\n# ⚠️ SECURITY: This swarm key is your network's access control credential. \n# Anyone with this file can join your private network. Protect it accordingly.\n\n# Remove all bootstrap nodes\nipfs bootstrap rm --all\n\n# Start daemon (will only connect to nodes with same key)\nipfs daemon\n\nStorage Configuration\n\nConfigure datastore:\n\n# Set storage limits\nipfs config Datastore.StorageMax 100GB\nipfs config Datastore.GCPeriod \"1h\"\n\n# Enable flatfs for better performance\nipfs config --json Datastore.Spec '{\n  \"mounts\": [\n    {\n      \"child\": {\"type\": \"flatfs\", \"path\": \"blocks\", \"shardFunc\": \"/repo/flatfs/shard/v1/next-to-last/2\"},\n      \"mountpoint\": \"/blocks\",\n      \"prefix\": \"flatfs.datastore\",\n      \"type\": \"mount\"\n    }\n  ],\n  \"type\": \"mount\"\n}'\n\nMonitoring and Maintenance\nHealth Checks\n\nBasic health monitoring:\n\n# Check daemon status\nipfs stats bw          # Bandwidth usage\nipfs stats repo        # Repository stats  \nipfs diag sys          # System information\nipfs log level debug   # Enable debug logging\n\n\nConnection monitoring:\n\n# Monitor peer connections\nwhile true; do\n  echo \"$(date): $(ipfs swarm peers | wc -l) peers\"\n  sleep 60\ndone\n\nLog Management\n\nConfigure logging:\n\n# Set log levels\nipfs log level bitswap info\nipfs log level dht warn\n\n# Tail logs\nipfs log tail\n\nSecurity Considerations\n\nAPI access:\n\nKeep API on localhost (127.0.0.1:5001) unless in trusted network\nUse firewall rules to restrict API access\nConsider authentication proxy for multi-user setups\n\nGateway security:\n\nPublic gateways can consume significant bandwidth\nImplement rate limiting and caching\nMonitor for abuse and unauthorized content\n\nContent policy:\n\nIPFS is censorship-resistant - content removal is complex\nImplement content filtering at gateway level if needed\nConsider legal implications of operating public infrastructure\nTroubleshooting\n\nConnection issues:\n\nCheck firewall allows ports 4001 (swarm) and 8080 (gateway)\nVerify bootstrap nodes are reachable\nTry different swarm addresses\n\nPerformance problems:\n\nRun garbage collection: ipfs repo gc\nCheck available disk space and datastore limits\nMonitor bandwidth usage: ipfs stats bw\nConsider applying performance profiles\n\nContent not accessible:\n\nVerify content is pinned: ipfs pin ls\nCheck if providers exist: ipfs dht findprovs QmHash\nTry republishing IPNS records\n\nRelated skills: /ipfs-client (read-only queries), /eth-readonly (blockchain integration)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/apexfork/ipfs-server",
    "publisherUrl": "https://clawhub.ai/apexfork/ipfs-server",
    "owner": "apexfork",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/ipfs-server",
    "downloadUrl": "https://openagent3.xyz/downloads/ipfs-server",
    "agentUrl": "https://openagent3.xyz/skills/ipfs-server/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ipfs-server/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ipfs-server/agent.md"
  }
}