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

  • 3 Posts
  • 43 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.



  • That’s what I’ve done for years. Makes managing things much easier, and I run multiple APs (all with the same SSID/PSK) and you can just roam to the best one. One upstairs, one downstairs, one in the weird dead zone in my office, and one on the back patio (it’s not hardwired and uses the mesh connection for uplink).

    These are all old Aruba APs running OpenWRT but that’s the plan for this Cudy Model. I may pick up a few more and just replace all of my trusty but very old Arubas.



  • I used to buy their stuff and use tuya-convert to flash Tasmota onto them. But they kept updating the firmware to lock that out, and I ended up returning a batch of 15 smart plugs because none of them would flash. They were too much of a PITA to try to crack open and flash the ESP8266 manually so I returned the whole batch as defective, left a scathing review, and blackballed the whole brand.











  • Iced Raktajino@startrek.websitetoSelfhosted@lemmy.worldJellyfin Dongle
    link
    fedilink
    English
    arrow-up
    6
    arrow-down
    1
    ·
    edit-2
    6 months ago

    Maybe one of those HDMI “stick” PCs you can get? There’s x86 Android builds you can run or you can do like I did with my media PCs and boot into Openbox and just launch a fullscreen browser right to Jellyfin and control it from your phone. (My main setup uses Emby but should be able to do the same with JF).

    I’ve actually got a portable Jellyfin server I take with me. Built on the OrangePi Zero 2W with a USB->NVMe acting as media storage (as well as the Jellyfin DB). It’s got several other services running as well as a second Wifi adapter so it can also act as a travel router.

    For playback, I pretty much just use my laptop or phone but have thought about adding one of the “stick” PCs as a client for it.