Today, I'm introducing Hanami. Hanami is a Blossom server with a file manager UI making administration simple. It has npub whitelisting, usage quotas, encrypted file uploads, tons of settings, the ability to connect to private Blossom instances I call "Peers" through Tailscale, FIPS, and more. image This is meant for self-hosting so Umbrel and Start9 packages are incoming, but the repo has binaries for Linux, MacOS, and Windows (only Linux tested) and a public Docker image if you want to go that route. Plenty of documentation for every use case.

Replies (35)

I was dying to run my own blossom server so I deployed it to my Kubernetes cluster. Signed in using my browser extension; signup itself works but listing my uploads stalls with this message: > Connecting to your Nostr signer… your drive unlocks once it is ready. Doesn’t seem to recover from that.
i just found a small issue with signing in via nip-07 and I should be able to get it corrected today. just want to make sure you are using nip-07 and not nip-46 to sign in?
(I'm not expecting you to debug Kubernetes based deployments for me, don’t worry. I’m using your latest Docker image. Maybe you just know what could be causing this. Can share my config via gist, if you want.)
no worries at all...working on the fix now, it's a signer polling issue. give me a little bit πŸ˜ƒ
if you want to try 0.12.3 that should handle most of the nip-07 issues. Let me know if you have any other issues, but i'm going to do a full audit only on the signer workflow in the next few days.
Still seeing "Connecting to your Nostr signer...". The /list storm from before is gone though, that works now, I’d say. Inferred from behavior and logs: the browser polls /app/signer-status constantly plus but never sends a POST. That's a full L7 capture from Cilium, so it's everything reaching the pod. Logs show β€œappdata: encrypt hanami/prefs ... browser signer not connected" after 4 attempts. Ruled out on my end: reverse-proxy trust, ingress timeouts, stale sessions (deleted session.json, revoked and re-granted in nos2x), and extension supports nip44. Cilium uses Envoy for ingress/gateway stuff (external traffic into the cluster), TLS is terminated upstream. Happy to open a proper issue with full logs and traces if that helps.
Incredible, this is the type of blossom server I've been dreaming of building. If this isn't packaged for Umbrel then you will have a PR coming shortly
Before I dig deeper into this and maybe even prep a PR: What's the intended behaviour when I upload an image using any nostr client with my selfhosted hanami blossom server being my preferred media server? Where would the uploaded image show up? Should it generate a thumbnail? Would it be stored in Shared unter Library or just in Servers > my blossom server? What about Kinds > Images? Apart from uploading, I also tried copying some of my uploaded media (which hanami autodiscovered) from other blossom servers and now Servers > my blossom server shows a (17) behind it - but only 1 image is being shown with no thumbnail. Using nos2x extension and granted all permissions.
From a client it would show under unindexed until you add to drive, or perform any actions. From hanami it would go directly into the drive. The issues you're running into might be directly related to kubernetes because everything happens locally first before mirroring events and blobs to external servers and relays.
It was my mistake. I have two ingress-paths in my cluster; one for internal services, one for external. My own relay runs on the same cluster as hanami and was only serving traffic to external requests while cluster-internal requests couldn't even resolve the hostname of my relay. Now it's all sorted out, uploads work fine, file management works great. I'm gonna stick with hanami for my blossom needs. Once I've settled on a sane setup I'll PR my Kubernetes manifests.
↑