I’m beautiful and tough like a diamond…or beef jerky in a ball gown.

  • 13 Posts
  • 30 Comments
Joined 10 months ago
cake
Cake day: July 15th, 2025

help-circle


  • Thanks, and yeah, it’s been fun putting that all together. Unfortunately I’m still learning FreeCAD so they’re not as integrated as I’d like yet, but as soon as I have time to hammer out a design, I hope to have all 3 of these and the UPS/power supply in a nice case.

    Yep, running/charging it from solar is why I ended up getting that chonky 18650-based UPS board. It’s the only one I could find that could combine 5V input and battery without dropping out (battery kicks in immediately if solar insufficient and draws the difference between input and output and charges and powers simultaneously otherwise).


  • Thanks!

    What are the use cases for taking it with you instead of just connecting to your homelab?

    I built it just to see how much I could cram onto a Pi Zero clone/how many self-hosted services I could have on something I can fit on my keychain, and the answer was “a lot”. It’s something of a travel server, travel router, emergency backup server, etc.

    I mainly just wanted a subset of my homelab services available in something I could take with me anywhere. Home lab could go down while away, power could go out, something to use while glamping, can take it with me if there’s ever an emergency where I have to evacuate, etc.

    What started out as a single unit has become a three unit portable stack lol. Yay feature creep!

    Services

    • Jellyfin (all content pre-transcoded so everything can direct stream)
    • CodeServer (setup for Python, NodeJS/Bun + React, and Platform.IO for ESP8266/ESP32 development)
    • Kiwix (including the full Wikipedia dump with images as well as offline docs for lots of code libraries I work with, etc)
    • SearxNG so I always have a sane search engine available
    • CalibreWeb with my whole ebook library
    • MPD+Snapcast+My whole music library. Also has myMPD web UI for controlling MPD. Snapcast clients can connect, and it can serve multi-speaker/multi-room audio
    • PiHole serving both ad blocking and local DNS as well as providing DHCP for the access point
    • PairDrop for sending/receiving files
    • NodeRED and Mosquitto MQTT for setting up ad-hoc automations
    • Nginx with real LetsEncrypt certs so all services have valid SSL certs and hostnames

    Networking

    • One USB port is configured in ethernet gadget mode. Can plug it into a host PC and get an IP address from it
    • One wifi adapter is setup as an AP and is bridged with the USB ethernet (a PC plugged in and a wifi client are on the same L2 plane).
    • The second wifi is the “WAN” connection if one is available. Can alternatively connect to USB tethering on my phone
    • If there is any kind of “WAN” upstream, the LAN bridge (USB ethernet/Wifi) will route to it
    • Wireguard to connect back to my homelab.

    File Services

    • Samba
    • Encrypted LUKS volume for critical docs (tax records, vet records for the dogs, etc)

    I’ve got a second unit that connects as a client to the main one with some additional backup services:

    • Email stack( Dovecot, Postfix, SpamAssassin, ClamAV, Webmail)
    • Matrix/Synapse stack
    • Asterisk
    • Snapcast client

    The second one is basically a backup to my main stack in case of disaster/power outage/etc. Those all tunnel to a cloud VPS + load balancer and only need an internet connection to setup the tunnels to receive traffic from the VPS (and route back out to it). Those services are stopped and a cron task keeps them in sync with the main ones in my homelab. If I need to fail over, I just SSH into the VPS and re-route traffic to them instead of my homelab endpoints.

    I self-host my own email and chat and phone services, so those have become critical services I want to always have online. Essentially these little Pi clones are a backup stack for my most used services and one that is both extremely low power and portable should I ever need to host them on the go (house burns down, have to evacuate due to emergency, etc).

    Third Unit (Still on the bench)

    I have a third unit that’s built on a PiZero2W but it’s still on the workbench (but functional!). Just haven’t gotten any kind of case at all built for it.

    It’s got two RTL-SDR units attached. One is tuned to the NOAA weather radio station and feeds into Snapserver on the main unit (so you can listen to the weather radio anywhere on the network) as well as piped into Meshtastic EAS-SANE alerter in order to forward emergency alerts to Meshtastic. There’s a USB-connected Meshtastic node attached as well for that.

    The second RTL-SDR is setup as a generic FM radio tuned to the local variety station. It’s just piped to Snapserver on the main unit to make it available on the network.

    I may convert the second SDR into a ADS-B listener, but for now, I like having the FM radio available.

    Photo

    I still don’t have a “full” case for it, but here is the core unit attached to a UPS circuit which gives it up to about 14 hours of runtime. I’m also planning to add a small USB hub with ethernet into that, but I’m still learning FreeCAD so I’m not quite ready to put it all together yet. The USB power cord is wrapped in aluminum foil and electrical tape due to RF from the Wifi adapter causing random glitches. I need to add some ferrite beads and route them away from that when I build it into an integrated case. For now it looks janky but works lol.

    Main Unit:

    Secondary Unit: This is an older photo and is also connected to my Bose radio acting as a Snapcast client to the server on the main unit.


  • I run Jellyfin on a Banana Pi M4 Zero. It’s a little less capable than the Pi4 but runs JF just fine. Specs on this one are quad core 1.5 GHz, 4 GB RAM, 32 GB eMMC on Armbian.

    The media files are all on the 1 TB SD card while the Jellyfin data directory (especially the SQLite DB) are on the eMMC. This seems to work much better as the DB file kept getting corrupted on SD. Should also help the SD card from wearing out since it’s pretty much only reading data from it most of the time.

    As you guessed, transcoding is not going to work (JF is removing the v4l2 hardware support anyway), so I pre-transcode them to H264 + yuv420p in an mp4 container before moving them to the SD card. I also scale them down to 720p to fit more on there, but that’s because this is a travel server and isn’t my main media source.

    Can’t speak for Paperless though.






  • 130GB for the entire thing? And the pi doesn’t choke on indexing / searching it?

    That was my thought. I knew it couldn’t hold it in RAM but thought it would be doing crazy IO and limited by being on SD, but it seems to not be a problem. Like I said, I don’t know how ZIM does it, but it does it well. Must have some kind of index that lets it fast travel to the correct blocks or something. I dunno lol.

    how capable is the search engine (I assume it has one?)

    Yep, it has search. It’s…okay but kind of primitive. It’s not slow, and if you’re searching for something that’s fairly unique (as far as keywords go), it does well. But if you’re searching something like an acronym where it shows up as a regular word in other entries, it’s a lot more hit or miss.



  • Yep, and I love it.

    I’ve got a little Banana Pi M4 Zero (PiZero form factor but much more powerful and with 4 GB RAM) loaded up with, among other useful tools, Kiwix and the full Wikipedia dump. I just refreshed it with the 2026-02 full dump, so I’m caught up for the year. I’ve also got a lot of other offline docs loaded up (React, Bun, and the devdocs for several libraries I use) and it’s nice to have local copies of those instead of googling every time.

    Surprisingly, the full ~130 GB Wikipedia dump works fine on a regular Pi Zero 2 with 512 MB RAM. I don’t know how ZIM works but it does work very very well.








  • I was surprised by that, too. When I went looking for a way to decode them with RTL-SDR, I assumed it wouldn’t be parsing the audio but a narrowband data stream. TIL also.

    Edit: It does kind of make sense with it being AFSK encoded in-band, though, or maybe I’m just so used to it being that way. I always thought the screeches were there to demand attention (and also be something that headend equipment can pick up and respond to). So it’s interesting they’re doing double duty as both an unmistakable audio cue to pay attention as well as containing the actual alert data.

    Plus there are NOAA stations all over the country rather than centralized like the time signal transmitters. It was probably cheaper to do it in band at that scale.



  • I don’t use MQTT currently, but there’s several things you can do with it:

    • Pass some messages as plaintext for use in, say, HomeAssistant
    • Bridge meshes over the internet
    • Send/receive ProtoBuf messages from an MQTT client to the Meshtastic node and the mesh
    • Plugging in some of the mesh mapping programs to visualize the mesh

    I tried setting up MQTT with HomeAssistant but couldn’t get messages to come in correctly. Most likely my own fault but I just never got back to it as I didn’t have a specific need in mind when I was setting it up.


  • Most of what I’ve dealt with were ESP32-based devices like the Heltec V3 (now V4) that have integrated LoRa radios. It should be possible to add on a SX1262 LoRa radio via SPI and flash Meshtastic firmware, but most people just start with a pre-built kit since they’re pretty inexpensive and have battery charging circuitry and everything already onboard (which you’d otherwise have to handle yourself with a vanilla ESP32).

    I started with the Heltec V3, and the V4 improves several gripes I had with it. They’re easy to get started with, lots of case designs available, and generally good entry points.

    SeeedStudio has a lot of pre-built options as well. My new daily driver is the SenseCap T1000e which is about the size of a few credit cards stacked together. Posted about it here: https://startrek.website/post/34105873

    There’s two main flavors of Meshtastic devices: ESP32-based and nRF-based. The former are generally a little less expensive and have WiFi but are a lot more power hungry.

    The nRF-based ones are more power efficient and can run longer from smaller batteries. The tradeoff is those only have Bluetooth and lack WiFi. I don’t really use WiFi with these, but it can be useful if you want to connect a node to MQTT.

    Check out Seeed to see some of their pre-made options: https://www.seeedstudio.com/LoRa-and-Meshtastic-and-4G-c-2423.html


  • Definitely one of the “throw it on the pile” projects for me, too, but I’m for sure throwing it on the top of the pile. Have had quite a few severe storm warnings this year already and this could be pretty useful. I was originally just looking for a way to forward NWS/EAS alerts to Meshtastic from the internet, but getting them direct over-the-air is even better.

    Only complicating factor is I have to fashion or buy an antenna for ~150 Mhz since I don’t have any adapters that will fit the RTL-SDR (I’ve just used the little stock UHF TV antenna that came with it for ADS-B and other playing around).