Home / Playbooks / Raspberry Pi node box

Turn a Raspberry Pi 5 into a Passive Income Node Box

From fresh Pi to always-on earning machine in one sitting: headless Ubuntu, Docker, and a bandwidth stack that sips power.

Beginner⏱ ~60 minutes·Pi 5 kit (~$80–120) + microSD + PSU·Updated 2026-08-24
Contents
  1. What you need & what this earns
  2. Flash Ubuntu Server (headless)
  3. Base system hardening & updates
  4. Create the stack directory & compose file
  5. Add Grass node (Docker)
  6. Monitoring & auto-updates
  7. Maintenance routine (10 minutes monthly)

1. What you need & what this earns

This playbook converts a Raspberry Pi 5 into an always-on node that runs bandwidth-sharing apps and DePIN containers around the clock. Total power draw lands around 3–7W — roughly $10–20/year in electricity in most regions — against which a stacked residential setup typically produces $15–40/month. The Pi pays for itself in a few months and then it's pure margin.

ItemNotes
Raspberry Pi 5 (4GB+)8GB if you plan heavier DePIN nodes later
Official PSUUndervolting causes mystery crashes — don't cheap out
32GB+ microSD (A2 class)Or USB SSD for longevity — recommended
Ethernet cableWiFi works; wired is more stable for uptime scoring
Another computerFor initial flashing and SSH access

Earnings reality check: a Pi's IP is your home residential connection — the highest-paying IP class. Expect $5–15/month per app at Western residential rates; stacking 3–5 non-conflicting apps multiplies that.

2. Flash Ubuntu Server (headless)

Download the official Raspberry Pi Imager, select Ubuntu Server 24.04 LTS (64-bit), and before writing the SD card open the settings gear: set hostname (nodebox), enable SSH with password auth, configure your WiFi if not using ethernet, and set your username. This pre-configuration means the Pi boots ready-to-SSH with no monitor or keyboard ever needed.

# After first boot, find the Pi on your network and connect:
ssh youruser@nodebox.local
# If .local resolution fails, check your router's DHCP list for 'nodebox'
Boot takes 2–3 minutes on first start. If SSH refuses immediately, wait and retry — don't reflash.

3. Base system hardening & updates

First login: update everything and install Docker's prerequisites. These commands are safe to paste as-is.

sudo apt update && sudo apt full-upgrade -y
sudo apt install -y ca-certificates curl git ufw

# Basic firewall: allow SSH only
sudo ufw allow OpenSSH
sudo ufw --force enable

Reboot once (sudo reboot), reconnect, then install Docker from the official convenience script:

curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
# Log out and back in for group changes, then verify:
docker run --rm hello-world

4. Create the stack directory & compose file

We'll manage everything as Docker Compose services in one directory. This makes updates, monitoring and disaster recovery trivial.

mkdir -p ~/stack && cd ~/stack
nano docker-compose.yml

Paste this starter stack (Honeygain shown; add other apps per their sections below):

services:
  honeygain:
    image: honeygain/honeygain:latest
    container_name: honeygain
    restart: unless-stopped
    command: "-tou-accept -email YOU@example.com -pass YOURPASSWORD -device pi5"
    mem_limit: 300m
Replace email/password with your Honeygain account credentials. Create accounts at each provider's website FIRST — never sign up through random links, use our reviewed referral links on each tool page.

5. Add Grass node (Docker)

Grass runs its light node in Docker via community images. Append to your compose file:

  grass:
    image: gogol/grass-node:latest
    container_name: grass
    restart: unless-stopped
    environment:
      - USER_EMAIL=YOU@example.com
      - USER_PASSWORD=YOURPASSWORD
    mem_limit: 400m

Full details, current image names and login-by-cookie method live in our dedicated Grass Docker playbook.

6. Monitoring & auto-updates

Two quality-of-life additions: Watchtower keeps images updated automatically, and a simple uptime check catches silent deaths.

  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --cleanup --schedule "0 0 4 * * *"
    mem_limit: 100m
# Bring the whole stack alive:
cd ~/stack && docker compose up -d

# Check everything is running:
docker compose ps

# Peek at any service's logs:
docker compose logs -f honeygain
Uptime is money. Reboots are fine (restart policies recover everything), but keep the Pi powered and connected. A $10 smart plug with energy monitoring doubles as a remote kill switch.

7. Maintenance routine (10 minutes monthly)

The stack mostly runs itself. Monthly: log into each app's dashboard, confirm credits accrue, withdraw anything past threshold, and glance at docker compose ps for restart loops.

# Monthly system hygiene:
sudo apt update && sudo apt upgrade -y
docker system prune -f
# Check disk (SD cards fill slowly with logs):
df -h /

Scaling next steps: add EarnApp's Docker image, join a DePIN points network like BlockMesh or Titan, and when you're hooked, graduate to the N100 playbook for multi-node capacity.

Tools used in this playbook

This guide contains referral links to some of the services mentioned. They cost you nothing and fund more testing. See disclosure.