Skip to main content

Self-Hosting on a Raspberry Pi: 10 Tools That Actually Work

·OSSAlt Team
raspberry-piself-hostingarmhomelabguide

Self-Hosting on a Raspberry Pi: 10 Tools That Actually Work

A Raspberry Pi 4/5 with 4-8 GB RAM is a surprisingly capable home server. But not every self-hosted tool runs well on ARM. Here are 10 that genuinely work — tested, ARM-native, and light enough for Pi hardware.

Hardware Recommendations

Pi ModelRAMUse CasePrice
Pi 4 Model B4 GBLight (3-5 tools)~$55
Pi 4 Model B8 GBMedium (5-8 tools)~$75
Pi 58 GBFull stack (8-10 tools)~$80

Essential accessories:

  • MicroSD card (32 GB minimum, 64 GB recommended)
  • USB SSD (strongly recommended over microSD for reliability)
  • Case with fan (Pi 5 runs hot under load)
  • Ethernet cable (faster and more reliable than WiFi)

The 10 Best Tools for Raspberry Pi

1. Uptime Kuma — Monitoring

RAM: ~100 MB | ARM: Native | Docker:

docker run -d --name uptime-kuma --restart unless-stopped \
  -p 3001:3001 -v uptime-kuma:/app/data \
  louislam/uptime-kuma:latest

Perfect Pi workload — lightweight, always-on, benefits from local network access.

2. Vaultwarden — Password Manager

RAM: ~50 MB | ARM: Native (Rust) | Docker:

docker run -d --name vaultwarden --restart unless-stopped \
  -p 8080:80 -v vw-data:/data \
  -e DOMAIN=https://vault.yourdomain.com \
  vaultwarden/server:latest

One of the lightest self-hosted tools. Runs flawlessly on any Pi.

3. Pi-hole — DNS Ad Blocking

RAM: ~50 MB | ARM: Native | Docker:

docker run -d --name pihole --restart unless-stopped \
  -p 53:53/tcp -p 53:53/udp -p 80:80 \
  -e TZ=America/New_York \
  -e WEBPASSWORD=your-password \
  -v pihole_etc:/etc/pihole \
  -v pihole_dnsmasq:/etc/dnsmasq.d \
  pihole/pihole:latest

The original Pi self-hosting use case. Blocks ads network-wide.

4. Home Assistant — Smart Home

RAM: ~500 MB | ARM: Native | Docker:

docker run -d --name homeassistant --restart unless-stopped \
  --privileged --network host \
  -v ha_config:/config \
  -e TZ=America/New_York \
  ghcr.io/home-assistant/home-assistant:stable

The most popular home automation platform. Excellent ARM support.

5. PocketBase — Backend

RAM: ~30 MB | ARM: Native (Go) | Docker: Not needed

wget https://github.com/pocketbase/pocketbase/releases/latest/download/pocketbase_0.25.0_linux_arm64.zip
unzip pocketbase_*_arm64.zip
./pocketbase serve

Single binary, SQLite backend, 30 MB RAM. Ideal Pi backend for small apps.

6. Listmonk — Newsletter

RAM: ~50 MB | ARM: Native (Go) | Docker:

docker run -d --name listmonk --restart unless-stopped \
  -p 9000:9000 \
  -v ./config.toml:/listmonk/config.toml \
  listmonk/listmonk:latest

Go binary, minimal resources. Can send thousands of emails from a Pi.

7. Gitea — Git Hosting

RAM: ~200 MB | ARM: Native (Go) | Docker:

docker run -d --name gitea --restart unless-stopped \
  -p 3000:3000 -p 222:22 \
  -v gitea_data:/data \
  -e GITEA__database__DB_TYPE=sqlite3 \
  gitea/gitea:latest

Lightweight GitHub alternative. SQLite mode keeps resource usage minimal.

8. Plausible — Analytics

RAM: ~500 MB | ARM: Native | Docker:

Plausible runs on ARM but needs more memory due to ClickHouse:

git clone https://github.com/plausible/community-edition.git
cd community-edition
# Configure .env
docker compose up -d

Works on Pi 4 (4 GB) for small sites (under 100K pageviews/month).

9. Syncthing — File Sync

RAM: ~100 MB | ARM: Native (Go) | Docker:

docker run -d --name syncthing --restart unless-stopped \
  -p 8384:8384 -p 22000:22000/tcp -p 22000:22000/udp \
  -v syncthing_config:/var/syncthing/config \
  -v /mnt/data:/var/syncthing/data \
  syncthing/syncthing:latest

Continuous file synchronization. Replace Dropbox for personal use.

10. Mealie — Recipe Manager

RAM: ~200 MB | ARM: Native | Docker:

docker run -d --name mealie --restart unless-stopped \
  -p 9925:9000 \
  -v mealie_data:/app/data \
  -e ALLOW_SIGNUP=true \
  -e TZ=America/New_York \
  ghcr.io/mealie-recipes/mealie:latest

Self-hosted recipe manager. Import from URLs, meal planning, shopping lists.

What Doesn't Work Well on Pi

ToolWhy NotAlternative
Mattermost2-4 GB RAM, Java-heavyUse on a VPS
NextcloudSluggish with multiple usersFine for 1-2 users
KeycloakJVM needs 2+ GBUse Authelia instead
Supabase10+ containers, 4+ GBUse PocketBase
MetabaseJVM, needs 2+ GBUse Grafana (lighter)
GitLab4+ GB RAM minimumUse Gitea
n8nWorks but slow with complex workflowsFine for simple automations

Performance Tips

Use a USB SSD — microSD cards are slow and wear out:

# Format and mount USB SSD
sudo mkfs.ext4 /dev/sda1
sudo mount /dev/sda1 /mnt/ssd
# Move Docker data directory to SSD
sudo systemctl stop docker
sudo rsync -a /var/lib/docker/ /mnt/ssd/docker/
# Update /etc/docker/daemon.json with "data-root": "/mnt/ssd/docker"

Enable swap (for Pi 4 with 4 GB):

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab

Monitor temperature:

vcgencmd measure_temp
# Keep under 70°C — use a fan or heatsink

Limit Docker logging:

// /etc/docker/daemon.json
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

Example Stack for Pi 5 (8 GB)

A practical home server stack that fits comfortably:

ToolRAMPurpose
Uptime Kuma100 MBMonitor all services
Vaultwarden50 MBFamily password manager
Pi-hole50 MBNetwork ad blocking
Home Assistant500 MBSmart home
PocketBase30 MBPersonal app backend
Syncthing100 MBFile sync
Gitea200 MBPersonal Git repos
Total~1 GBLeaves 7 GB free

Cost: Pi vs VPS

OptionMonthly CostPros
Pi 5 (8 GB)~$5/month electricityOne-time $100, no subscription, local network, data stays home
Hetzner VPS€4.50/monthMore powerful, static IP, better uptime, remote access built-in
DigitalOcean$6/monthManaged, backups included, global access

Use a Pi when: Privacy matters, you want LAN access, you enjoy tinkering. Use a VPS when: You need uptime guarantees, remote access, or more power.


Find the best self-hostable tools on OSSAlt — ARM compatibility, resource usage, and deployment guides side by side.