IPFS Node Setup Guide
This guide will walk you through installing Kubo (the IPFS reference implementation), starting your node, and pinning Rev Now content. Pick your operating system and follow along.
On This Page
1. Install Kubo
Linux (Ubuntu/Debian)
# Download the latest Kubo release wget https://dist.ipfs.tech/kubo/v0.33.2/kubo_v0.33.2_linux-amd64.tar.gz # Extract tar -xvzf kubo_v0.33.2_linux-amd64.tar.gz # Install system-wide cd kubo sudo bash install.sh # Verify ipfs --version
macOS
# Using Homebrew (recommended) brew install kubo # Or download directly wget https://dist.ipfs.tech/kubo/v0.33.2/kubo_v0.33.2_darwin-amd64.tar.gz tar -xvzf kubo_v0.33.2_darwin-amd64.tar.gz cd kubo && sudo bash install.sh # Verify ipfs --version
Windows
# Using Chocolatey choco install kubo # Or download the .zip from: # https://dist.ipfs.tech/kubo/v0.33.2/kubo_v0.33.2_windows-amd64.zip # Extract and add to your PATH # Verify ipfs --version
π‘ Tip
Always check dist.ipfs.tech for the latest version. Replace v0.33.2 with the current release.
2. Initialize Your Node
This creates your node identity (a unique key pair) and default configuration. You only do this once.
ipfs init # You'll see output like: # initializing IPFS node at ~/.ipfs # generating 2048-bit RSA keypair...done # peer identity: QmYourPeerIDHere
Your Peer ID is your node's public identity on the network. It's safe to share β it's not a secret key.
3. Start the Daemon
ipfs daemon
This starts the IPFS node and connects to the network. You should see output indicating your node is listening on ports 4001 (swarm) and 5001 (API).
Initializing daemon... API server listening on /ip4/127.0.0.1/tcp/5001 WebUI: http://127.0.0.1:5001/webui Gateway server listening on /ip4/127.0.0.1/tcp/8080 Daemon is ready
π‘ Tip
Open http://127.0.0.1:5001/webui in your browser to see the IPFS Web UI β a graphical dashboard for your node.
β Warning
The API on port 5001 should not be exposed to the public internet. It allows full control of your node. The default config binds to 127.0.0.1 (localhost only), which is safe.
4. Pin Rev Now Content
Pinning tells your node to fetch and permanently store content. Without pinning, your node's garbage collector may eventually remove fetched data.
# Pin by CID (replace with the current CID from our Access page) ipfs pin add --progress QmExampleCIDHere # Pin via IPNS (always resolves to the latest version) ipfs pin add --progress /ipns/<IPNS_KEY> # Verify pinned content ipfs pin ls --type=recursive
Find the current CID and IPNS key on our Access page.
β Warning
Pinning downloads all the content to your machine. Make sure you have enough disk space. Current Rev Now archive size is approximately 2 GB (and grows as new episodes are published).
5. Auto-Start on Boot
For maximum uptime, configure IPFS to start automatically when your machine boots.
Linux (systemd)
[Unit] Description=IPFS Daemon After=network.target [Service] Type=simple User=YOUR_USERNAME Environment=IPFS_PATH=/home/YOUR_USERNAME/.ipfs ExecStart=/usr/local/bin/ipfs daemon Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target
# Enable and start sudo systemctl daemon-reload sudo systemctl enable ipfs sudo systemctl start ipfs # Check status sudo systemctl status ipfs
macOS (launchd)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.ipfs.daemon</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/ipfs</string>
<string>daemon</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>launchctl load ~/Library/LaunchAgents/com.ipfs.daemon.plist
Windows
Use Task Scheduler to run ipfs daemon at login, or install IPFS Desktop which handles auto-start for you.
6. Verify Your Node
# Check your node is running ipfs id # Check connected peers ipfs swarm peers | wc -l # Verify pinned content is serving ipfs cat <CID>/index.html | head -20 # Check pin status ipfs pin ls --type=recursive | grep <CID>
A healthy node should show 50+ connected peers. If you see fewer than 10, check your firewall settings β port 4001 needs to be accessible.
7. Raspberry Pi Setup
A Raspberry Pi 4 (or newer) makes an excellent always-on IPFS node. Low power consumption (~5W) means you can run it 24/7 for pennies.
# Download ARM64 build wget https://dist.ipfs.tech/kubo/v0.33.2/kubo_v0.33.2_linux-arm64.tar.gz tar -xvzf kubo_v0.33.2_linux-arm64.tar.gz cd kubo && sudo bash install.sh # Initialize and start ipfs init ipfs daemon & # Optimize for low-memory devices ipfs config --json Swarm.ConnMgr.LowWater 50 ipfs config --json Swarm.ConnMgr.HighWater 200 ipfs config --json Datastore.StorageMax '"10GB"'
π‘ Tip
Use an external USB SSD instead of the SD card for the IPFS datastore. SD cards wear out quickly under heavy I/O. Set IPFS_PATH to point to the SSD.
8. Docker Setup
If you prefer containers, Kubo has an official Docker image.
version: "3.8"
services:
ipfs:
image: ipfs/kubo:latest
container_name: ipfs_node
ports:
- "4001:4001" # Swarm
- "4001:4001/udp" # Swarm UDP
- "127.0.0.1:5001:5001" # API (localhost only!)
- "127.0.0.1:8080:8080" # Gateway
volumes:
- ipfs_data:/data/ipfs
restart: unless-stopped
volumes:
ipfs_data:docker compose up -d # Pin content inside the container docker exec ipfs_node ipfs pin add --progress <CID>
9. Auto-Update Script
Our CID changes with each new episode. This script re-resolves the IPNS name and re-pins the latest content. Run it as a daily cron job.
#!/bin/bash # Re-pin Rev Now from IPNS β run daily via cron set -euo pipefail IPNS_KEY="<YOUR_IPNS_KEY_HERE>" # From /access page LOG="/var/log/ipfs-repin.log" echo "[$(date -u +%FT%TZ)] Resolving IPNS..." >> "$LOG" CID=$(ipfs name resolve "/ipns/$IPNS_KEY" 2>/dev/null) if [ -n "$CID" ]; then echo "[$(date -u +%FT%TZ)] Pinning $CID..." >> "$LOG" ipfs pin add --progress "$CID" >> "$LOG" 2>&1 echo "[$(date -u +%FT%TZ)] Done." >> "$LOG" else echo "[$(date -u +%FT%TZ)] ERROR: Could not resolve IPNS." >> "$LOG" fi
chmod +x ~/bin/repin-revnow.sh # Add to crontab β runs daily at 3 AM crontab -e # Add this line: 0 3 * * * /home/YOUR_USER/bin/repin-revnow.sh