[{"data":1,"prerenderedAt":216},["ShallowReactive",2],{"project-42443634":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":41,"post_text":43,"what":44,"said":77,"maker_in_thread":146,"shape":149,"grid":153,"attempts":176,"same_week":177,"maker_shows":207,"maker_hidden":208,"reader_version":209,"card":210},"42443634","PipeGate","A Lightweight, Self-Hosted Proxy to Expose Local Servers","title","Show HN: PipeGate – A Lightweight, Self-Hosted Proxy to Expose Local Servers","https:\u002F\u002Fgithub.com\u002Fjanbjorge\u002Fpipegate","github.com","jeeybee",1734458946,2024,33,11,1541,3515,44,"shown","infrastructure","tunneling proxy","web_app",[24,25,26,27,28],"tunneling","ngrok alternative","self-hosted proxy","expose localhost","fastapi","curious",-0.133,{"positive":32,"neutral":33,"mixed":32,"critical":34},0,5,1,6,{"privacy":37,"idea":38,"docs":39,"performance":40},{"positive":32,"critical":34},{"positive":32,"critical":32},{"positive":32,"critical":32},{"positive":32,"critical":32},[34,42,42,42,42,32,32,32,32,42,32],3,"Hi Hacker News,\n\nI’d like to introduce PipeGate, a lightweight, self-hosted proxy built with FastAPI. I created PipeGate as a fun little exercise to understand how tunneling services work under the hood. PipeGate allows you to expose your local servers to the internet, giving you full control over your setup.",{"problem":45,"audience":51,"pricing":51,"motivation":52,"time_to_build":51,"stack":56,"openness":74,"stage":75,"team_size":76},{"value":46,"source":47,"evidence":48},"Exposing local servers to the internet without a hosted tunneling service","maker",[49],{"id":50},"post",null,{"value":53,"source":47,"evidence":54},"Personal exercise to understand how tunneling services work under the hood",[55],{"id":50},[57,62,66],{"value":58,"source":59,"evidence":60},"Python","inferred",[61],{"id":50},{"value":63,"source":47,"evidence":64},"FastAPI",[65],{"id":50},{"value":67,"source":68,"evidence":69},"WebSockets","commenter",[70],{"id":71,"by":72,"text":73},"42444487","buremba","Cool use of WebSockets! Have you tried deploying it to AWS Lambda? I would like to have something similar on AWS, but SSL support and scale-to-zero are hard and tricky with EC2…","open_source","prototype","solo",{"praise":78,"objections":83,"requests":97,"questions":113,"alternatives":125},[79],{"value":80,"source":68,"evidence":81},"Cool use of WebSockets",[82],{"id":71,"by":72,"text":73},[84,91],{"value":85,"source":68,"evidence":86},"Any client can connect to the websocket route without authentication, so a public deployment is dangerous",[87],{"id":88,"by":89,"text":90},"42444351","aeriose","Huge caveat to hosting this server publicly is the codebase will accept any websocket connection to the \u002F{connection_id} route. The author gives a small warning about…",{"value":92,"source":47,"evidence":93},"Not production-ready; security aspects would need work before real deployment",[94],{"id":95,"by":11,"text":96},"42445051","Thanks, I haven't deployed PipeGate on AWS; it started as a personal curiosity project. There are probably many security aspects that would need to be addressed before deploying…",[98,109],{"value":99,"source":68,"evidence":100},"Built-in log\u002Finspector and request replay, like ngrok",[101,105],{"id":102,"by":103,"text":104},"42444184","themgt","For me the ngrok killer feature I've never seen elsewhere is a simple embedded webserver with log\u002Finspector for requests + the ability to replay them. Wish Apache or CNCF would…",{"id":106,"by":107,"text":108},"42444388","d0100","I've tried self-hosting zrok before, however the domain setup was a bit complicated and I stopped halfway Log\u002Finspector and replay are fundamental for me when I am setting up…",{"value":110,"source":68,"evidence":111},"Deployment on AWS Lambda with SSL and scale-to-zero",[112],{"id":71,"by":72,"text":73},[114,121],{"value":115,"source":68,"evidence":116},"Why is request replay useful for webhooks and integrations?",[117],{"id":118,"by":119,"text":120},"42444422","PLG88","Which part of the domain setup was complicated? Curious on how we can streamline\u002Fimprove (or may have already). Excuse my ignorance, trying to get to the root why, why is replay…",{"value":122,"source":68,"evidence":123},"Which part of zrok's domain setup was complicated?",[124],{"id":118,"by":119,"text":120},[126,132,139],{"value":127,"source":68,"evidence":128},"zrok",[129],{"id":130,"by":119,"text":131},"42444255","Why not just use one of the many open source ngrok alternatives - https:\u002F\u002Fgithub.com\u002Fanderspitman\u002Fawesome-tunneling. I will advocate for zrok.io as I work on its parent project,…",{"value":133,"source":68,"evidence":134},"Charles proxy with Map Remote",[135],{"id":136,"by":137,"text":138},"42448075","emadda","You can do that with many proxy GUIs like Charles. I think the feature is called Map Remote. ngrok -> gui proxy -> your dev server",{"value":140,"source":68,"evidence":141},"LocalXpose and Pinggy",[142],{"id":143,"by":144,"text":145},"42452492","ghoshbishakh","Do you mean ngrok's killer feature? In that case, other services also provide similar options. Such as localxpose or https:\u002F\u002Fpinggy.io\u002F",{"comments":34,"answered":34,"key":147},[148],{"id":95,"text":96},{"commenters":150,"max_depth":35,"maker_replies":34,"first_comment_mins":151,"lifespan_hours":152},9,54,23,[154,156,158,159,161,163,167,169,170,171,174],[88,32,34,155,89,32],"project\u002Fcritical\u002Fprivacy",[102,34,42,157,103,32],"project\u002Fneutral\u002Fidea",[130,34,42,157,119,32],[106,34,42,160,107,32],"project\u002Fneutral\u002Fdocs",[118,34,42,162,119,32],"project\u002Fneutral\u002Fnone",[164,34,32,165,166,32],"42444705","other\u002Fneutral\u002Fnone","password4321",[168,34,32,165,119,32],"42450055",[136,34,32,165,137,32],[143,34,32,165,144,32],[71,172,42,173,72,32],2,"maker\u002Fneutral\u002Fperformance",[95,172,32,175,11,34],"maker\u002Fneutral\u002Fprivacy",[],[178,183,188,193,198,203],{"id":179,"name":180,"points":181,"category":182},"42405046","Velofuso",797,"hardware",{"id":184,"name":185,"points":186,"category":187},"42398471","Quantus",279,"learning_science",{"id":189,"name":190,"points":191,"category":192},"42424508","SmartHome",268,"games",{"id":194,"name":195,"points":196,"category":197},"42417330","Buzee",229,"productivity",{"id":199,"name":200,"points":201,"category":202},"42399701","Kubernetes Spec Explorer",216,"dev_tools",{"id":204,"name":205,"points":206,"category":187},"42416258","Chord Nebula",215,4,false,"v2",{"id":211,"name":5,"line":6,"ai":208,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":212,"top":18,"kw":213,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":214,"url":9,"mix":215,"praise":80,"objection":85,"sub":21},42443634,-0.13,[24,25,26,27,28],"13333000030",[32,33,32,34],1793991107631]