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.
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.
| Item | Notes |
|---|---|
| Raspberry Pi 5 (4GB+) | 8GB if you plan heavier DePIN nodes later |
| Official PSU | Undervolting causes mystery crashes — don't cheap out |
| 32GB+ microSD (A2 class) | Or USB SSD for longevity — recommended |
| Ethernet cable | WiFi works; wired is more stable for uptime scoring |
| Another computer | For 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'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 enableReboot 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-world4. 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.ymlPaste 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: 300m5. 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: 400mFull 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 honeygain7. 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
- Grass — ★★★★½ 4.5/5
- Honeygain — ★★★★☆ 4.0/5
- EarnApp — ★★★★☆ 4.0/5
- BlockMesh Network — ★★★½☆ 3.5/5