We Run iSCSI over the Internet

(scsipub.com)

7 points | by qdotme a day ago ago

5 comments

  • sensarts a day ago

    This is the kind of post that makes me wish HN had bookmarks. The open-iscsi IQN slash issue alone was worth the read. Great work.

    • qdotme a day ago

      Thanks! Let me know if you have any questions - I've long wanted to write something "system-level" in Elixir.

    • LargoLasskhyfv a day ago

      > This is the kind of post that makes me wish HN had bookmarks.

      You could 'abuse' favorite for that. Works for whole threads, or just single comments.

    • doublerabbit a day ago

      Click the "minutes ago" and then click on "favorite". Basic but it works.

  • qdotme a day ago

    Hi HN - Tom here, I built scsipub.

    The short version: it's iSCSI targets on the public internet. Pick an image, get a block device. The free tier doesn't need a signup at all - iscsiadm -m discovery -t sendtargets -p scsipub.com and --login to iqn.2025-01.pub.scsipub:blank lands you a 64 MB scratch disk. There's a small catalog of OS images you can mount the same way.

    The paid tier is where it gets less hobby-shaped: sessions survive disconnects, a single target can expose multiple LUNs, and SCSI-3 Persistent Reservations work end-to-end (REGISTER / RESERVE / RELEASE round-trip clean against sg_persist). That last bit is the cluster-storage primitive — Pacemaker, ESXi HA, and Windows MSCS all use PR for fencing — so you can actually back a 2-node failover cluster off a target on the public internet.

    The post linked in the submission is the architectural decision log: Ranch 2.x listeners, a BEAM process per session, COW overlays with per-sector bitmaps, Caddy-managed Let's Encrypt for the iSCSI-TLS port without restarting the listener, and the four open-iscsi quirks that each cost me few hours. There's a section on what we're deliberately not solving (multi-region, RDMA, etc.) so you know the scope.

    Two companion projects ship as embedded sub-sites on the front page — one turns an ESP32-S3 into a wireless iSCSI-to-USB bridge, one lets a Raspberry Pi 3/4/5 netboot directly from a target. Both linked from the landing page under "Hardware initiators".

    Happy to answer any questions about the protocol, the deployment, or the BEAM-side design choices.