A beautiful ASCII art welcome banner for your Raspberry Pi 5 homelab that displays real-time system statistics on SSH login.
- π¨ Beautiful ASCII Art - Eye-catching "BEEHIVE" banner with bee theme
- π Real-time System Stats - CPU temperature, memory, disk, uptime, load average
- π³ Docker Integration - Shows count of running containers
- π¨ Color-coded Status - Green/Yellow/Red indicators based on system health
- π Automated Deployment - One command deployment via pyinfra
- π Idempotent - Safe to run deployment multiple times
- π§ Easy Configuration - Environment-based settings
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π BEEHIVE π β
β Raspberry Pi 5 Homelab Status β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Hostname: beehive
Uptime: 5 days, 12 hours
CPU Temp: 52.3Β°C [ββββββββββ] OK
Memory: 2.1/7.8GB [ββββββββββ] 27%
Disk: 45/256GB [ββββββββββ] 18%
Load Avg: 0.45, 0.38, 0.29
Docker: 12 containers running
- Raspberry Pi 5 with Raspberry Pi OS (64-bit recommended)
- SSH access to the Pi configured
- SSH key set up for passwordless authentication
- Python 3.9+ on your development machine (WSL/Linux/Mac)
git clone https://github.com/yourusername/beehive.git
cd beehivemake setup
# or manually: pip install -r requirements.txtcp .env.example .envEdit .env and set your Raspberry Pi's details:
[email protected]
BEEHIVE_SSH_KEY=~/.ssh/id_rsaReplace hooke with your Pi username and 10.0.0.150 with your Pi's IP address.
make dry-runThis will show what changes would be made without actually applying them.
make deployThat's it! The banner will now display when you SSH into your Raspberry Pi.
| Command | Description |
|---|---|
make help |
Show all available commands |
make setup |
Install Python dependencies on your local machine |
make dry-run |
Test banner deployment without making changes |
make deploy |
Deploy banner to Raspberry Pi |
make status |
Run banner remotely and display output |
| Command | Description |
|---|---|
make ssh-bootstrap |
Copy your SSH public key to the Pi and disable password auth (uses password login β run once after a fresh OS install) |
| Command | Description |
|---|---|
make tailscale-install |
Install Tailscale and start the daemon on the Pi |
| Command | Description |
|---|---|
make pihole-install |
Install Pi-hole DNS ad blocker on the Pi |
After installing, SSH into the Pi and authenticate manually:
# With an auth key (headless):
sudo tailscale up --authkey=<your-auth-key> --ssh
# Or interactively (follow the login URL):
sudo tailscale up --ssh
# Verify:
tailscale statusmake ssh-bootstrap # 1. Set up SSH key auth (needs password in .env)
make deploy # 2. Deploy the welcome banner
make tailscale-install # 3. Install Tailscale
# 4. SSH in and run: sudo tailscale up --ssh
make pihole-install # 5. Install Pi-hole (interactive β follow the prompts)- Pyinfra connects to your Raspberry Pi via SSH
- Installs required Python libraries (
rich,psutil) on the Pi - Copies the
banner.pyscript to/usr/local/bin/banner.py - Makes the script executable
- Adds the banner to
/home/hooke/.bashrcso it displays on SSH login
The deployment is idempotent, meaning you can run make deploy multiple times safely - it will only make changes if needed.
The banner displays automatically when you SSH into your Raspberry Pi:
Run the banner manually on the Pi:
/usr/local/bin/banner.pyTo prevent the banner from showing on SSH login, remove the line from your .bashrc:
# On the Pi
sed -i '/banner.py/d' ~/.bashrc- Raspberry Pi OS (Bookworm or later recommended)
- Python 3.9+
- 100MB free disk space
- Python 3.9+
- SSH client
- Git
The banner uses color coding to help you quickly identify potential issues:
- π’ Green (< 60Β°C): Healthy
- π‘ Yellow (60-74Β°C): Warm
- π΄ Red (β₯ 75Β°C): Hot (throttling risk)
- π’ Green (< 70%): Healthy
- π‘ Yellow (70-84%): High
- π΄ Red (β₯ 85%): Critical
- π’ Green (< 80%): Healthy
- π‘ Yellow (80-89%): High
- π΄ Red (β₯ 90%): Critical
cp .env.example .env
# Edit .env with your Pi's details- Verify your Pi's IP address:
ping 10.0.0.150 - On a fresh OS install, run
make ssh-bootstrapfirst to set up key auth - Check SSH key is set up:
ssh-copy-id [email protected] - Test manual SSH:
ssh [email protected]
# Manually add it to .bashrc on the Pi
echo '/usr/local/bin/banner.py' >> ~/.bashrcThis is normal if Docker is not installed. The banner will simply not display the Docker line.
This is just the beginning! Future plans include:
- ποΈ Full Infrastructure as Code - Deploy entire homelab with pyinfra
- π Home Assistant - Automated setup with add-ons (MQTT, Node-RED, ESPHome)
- π Network Services - Pi-hole, DNS, VPN, reverse proxy
- π Monitoring Stack - Prometheus, Grafana, alerting
- πΎ Backup/Restore - Automated backup scripts
- π Notifications - Telegram/Discord alerts for system events
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with pyinfra - Fast and flexible infrastructure automation
- Styled with rich - Beautiful terminal formatting
- System stats via psutil - Cross-platform system utilities
Made with π for homelabbers everywhere