Censorship-resistant podcast. Bookmark our alternative access methods in case this domain goes down.

Revolution Now

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.

1. Install Kubo

Linux (Ubuntu/Debian)

Terminal
# 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

Terminal
# 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

PowerShell
# 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.

Terminal
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

Terminal
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).

Expected output
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.

Terminal
# 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)

/etc/systemd/system/ipfs.service
[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
Terminal
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable ipfs
sudo systemctl start ipfs

# Check status
sudo systemctl status ipfs

macOS (launchd)

~/Library/LaunchAgents/com.ipfs.daemon.plist
<?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>
Terminal
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

Terminal
# 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.

Terminal (Raspberry Pi OS)
# 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.

docker-compose.yml
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:
Terminal
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/repin-revnow.sh
#!/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
Terminal
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