[{"data":1,"prerenderedAt":358},["ShallowReactive",2],{"project-31297917":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":28,"sentiment":29,"stance_mix":30,"scored_comments":34,"aspects":35,"strip":44,"post_text":47,"what":48,"said":88,"maker_in_thread":185,"shape":195,"grid":200,"attempts":320,"same_week":321,"maker_shows":46,"maker_hidden":350,"reader_version":351,"card":352},"31297917","Weron","A Peer-to-Peer VPN Based on WebRTC Written in Go","title","Show HN: Weron – A Peer-to-Peer VPN Based on WebRTC Written in Go","https:\u002F\u002Fgithub.com\u002Fpojntfx\u002Fweron","github.com","pojntfx",1651952926,2022,204,50,275,2570,11,"notable","infrastructure","peer-to-peer vpn","cli",[24,25,26,27],"p2p vpn","webrtc","overlay network","nat traversal","mixed",0.006,{"positive":31,"neutral":32,"mixed":33,"critical":31},7,14,1,29,{"idea":36,"privacy":38,"execution":39,"design":41,"performance":42,"docs":43},{"positive":37,"critical":37},2,{"positive":33,"critical":37},{"positive":40,"critical":40},0,{"positive":37,"critical":40},{"positive":40,"critical":37},{"positive":37,"critical":33},[45,40,45,45,45,40,46,33,33,40,40,33,45,33,40,46,40,46,40,46,40,45,40,45,33,40,45,45,40,45,45,46,45,40,46,45,33,40,46,33],3,5,"Hey HN! I just released weron, a P2P VPN that uses WebRTC for transport which I've been working on for the last couple of months. It can create both layer 2\u002FEthernet and layer 3\u002FIP overlay networks, and the underlying transport layer can be easily embedded to write your own P2P apps with Go. Compared to for example Tailscale, WireGuard and ZeroTier, its much harder to block on a network level and also significantly easier to set up, while not sacrifing much performance.\n\nI'd love to get your feedback :)",{"problem":49,"audience":58,"pricing":58,"motivation":59,"time_to_build":58,"stack":63,"openness":85,"stage":86,"team_size":87},{"value":50,"source":51,"evidence":52},"Connecting peers across networks, including ones that block WireGuard, Tailscale or ZeroTier","maker",[53,55],{"id":54},"post",{"id":56,"by":11,"text":57},"31303005","That is basically the usecase for weron, good luck ^^ Networks blocking anything but HTTP has been one of the reasons why I started writing this (train WLAN in Spain does it for…",null,{"value":60,"source":51,"evidence":61},"Harder to block on networks and easier to set up than existing VPNs",[62],{"id":54},[64,68,77,81],{"value":65,"source":51,"evidence":66},"Go",[67],{"id":54},{"value":69,"source":51,"evidence":70},"WebRTC via Pion",[71,74],{"id":72,"by":11,"text":73},"31299286","Thanks! Its using the Pion library[1] which doesn't seem to be using a constant bitrate; that would definitely be an interesting addition though. Sending e.g. zeroes when its not…",{"id":75,"by":11,"text":76},"31302981","Hi! n2n was a huge inspiration for the project, in fact I wrote Go bindings for n2n before starting it: https:\u002F\u002Fgithub.com\u002Fpojntfx\u002Fgon2n Weron also allows tunneling - just…",{"value":78,"source":51,"evidence":79},"Redis",[80],{"id":75,"by":11,"text":76},{"value":82,"source":51,"evidence":83},"Postgres",[84],{"id":75,"by":11,"text":76},"open_source","launched","solo",{"praise":89,"objections":108,"requests":123,"questions":141,"alternatives":156},[90,101],{"value":91,"source":92,"evidence":93},"Embeddable transport for building P2P apps in Go","commenter",[94,98],{"id":95,"by":96,"text":97},"31298975","13415","Can this be used as a library like libp2p, or does it require me to run binaries?",{"id":99,"by":96,"text":100},"31299035","That's very cool! Thanks for answering my question so fast!",{"value":102,"source":92,"evidence":103},"Useful for networks that block VPNs",[104],{"id":105,"by":106,"text":107},"31301628","IceWreck","Hey, I have been using Wireguard and Nebula to connect to my home network for a while now, but theyre blocked by my uni. I bypass the blocking using shadowsocks but its still a…",[109,116],{"value":110,"source":92,"evidence":111},"Default Google STUN server raises privacy concerns",[112],{"id":113,"by":114,"text":115},"31298355","1vuio0pswjnm7","Here is some initial feedback: Nice selection of static binaries! However the choice to hardcode Google as a default STUN server is off-putting. IMHO, 2008's n2n would never set…",{"value":117,"source":51,"evidence":118},"Full mesh may not scale beyond about 100 peers",[119,122],{"id":120,"by":11,"text":121},"31298432","> Is what makes this a \"P2P\" VPN [...] that it supports the group\u002F\"community\" network behavior? More or less! Compared to say OpenVPN there is no central server that all traffic…",{"id":75,"by":11,"text":76},[124,131],{"value":125,"source":92,"evidence":126},"Mobile Android and iOS apps",[127],{"id":128,"by":129,"text":130},"31299466","depingus","This looks nice. Do you have Android\u002FiOS mobile apps on the roadmap?",{"value":132,"source":92,"evidence":133},"Docs with clearer setup instructions",[134,138],{"id":135,"by":136,"text":137},"31302444","mib32","I somehow can't understand how to use it :) Sorry! But nice work.",{"id":139,"by":136,"text":140},"31327308","TLDR is very good idea, yes! Thanks!",[142,149],{"value":143,"source":92,"evidence":144},"Does it work behind NAT?",[145],{"id":146,"by":147,"text":148},"31301129","ackbar03","Does this also work between two peers that are behind NAT's \u002F routers? From what I vaguely remember when I tried playing around with this stuff, some NAT's \u002F routers have some…",{"value":150,"source":92,"evidence":151},"Could it tunnel WireGuard over WebRTC instead?",[152],{"id":153,"by":154,"text":155},"31298746","tptacek","Why wouldn't you just tunnel WireGuard over WebRTC? There's already a very, very good implementation of WireGuard --- one of the two major production implementations --- in Go.…",[157,164,171,178],{"value":158,"source":92,"evidence":159},"n2n",[160,161],{"id":120,"by":11,"text":121},{"id":162,"by":114,"text":163},"31301181","No one is raising the question of how to handle community name\u002Fkey management for persistent communities. With n2n, which long predates Zerotier, Wireguard and Tailscale, one of…",{"value":165,"source":92,"evidence":166},"Tailscale",[167],{"id":168,"by":169,"text":170},"31298865","ianlevesque","> Compared to for example Tailscale, WireGuard and ZeroTier, its much harder to block on a network level Tailscale at least bundles in an HTTPS fallback for those situations. I’m…",{"value":172,"source":92,"evidence":173},"ZeroTier",[174],{"id":175,"by":176,"text":177},"31298896","linsomniac","This looks pretty slick, and the WebRTC seems like it might offer some choices of traversal that would work where others don't. The inbuilt tools for \"chat\" (seems a useful…",{"value":179,"source":92,"evidence":180},"Netbird",[181],{"id":182,"by":183,"text":184},"31303066","braginini","that is indeed a performance decrease. But the idea of this project is just great! There is another way of combining WebRTC and Wireguard. Netbird uses ICE protocol (used in…",{"comments":186,"answered":31,"key":187},16,[188,189,192],{"id":120,"text":121},{"id":190,"text":191},"31299983","Oh the signaling server is but a simple ICE candidate\u002Foffer\u002Fanswer relay :) The messages being sent there are encrypted using a PSK so that the signaling server can't access the…",{"id":193,"text":194},"31302998","From my experience it works basically everywhere, but if it doesn't - just specify a TURN server on `--ice` and you'll be able to connect to a relay ^^ The ports\u002FIP can actually…",{"commenters":196,"max_depth":197,"maker_replies":186,"first_comment_mins":198,"lifespan_hours":199},22,4,49,117,[201,205,206,209,210,212,215,217,219,221,223,226,228,231,234,238,240,241,242,244,247,248,251,253,258,262,264,266,268,270,272,275,277,280,283,285,288,290,293,295,297,299,301,303,307,309,312,315,317,318],[202,40,45,203,204,40],"31298354","project\u002Fneutral\u002Fidea","saurik",[120,40,40,203,11,33],[207,40,45,208,204,40],"31299667","project\u002Fneutral\u002Fprivacy",[190,40,40,208,11,33],[146,40,45,211,147,40],"project\u002Fneutral\u002Fexecution",[213,40,45,211,214,40],"31302428","411111111111111",[193,40,40,216,11,33],"project\u002Fpositive\u002Fexecution",[175,33,46,218,176,40],"project\u002Fpositive\u002Fdesign",[220,33,40,211,11,33],"31299072",[153,37,33,222,154,40],"project\u002Fcritical\u002Fidea",[224,37,33,225,204,40],"31298796","project\u002Fcritical\u002Fperformance",[227,37,40,203,11,33],"31299006",[229,37,40,230,154,40],"31299502","commenter\u002Fneutral\u002Fnone",[232,37,33,225,233,40],"31299039","VWWHFSfQ",[235,37,40,236,237,40],"31300714","other\u002Fneutral\u002Fnone","AlchemistCamp",[182,37,45,239,183,40],"project\u002Fmixed\u002Fperformance",[162,45,33,222,114,40],[75,45,40,208,11,33],[105,197,46,243,106,40],"project\u002Fpositive\u002Fidea",[245,197,40,236,246,40],"31301745","cycomanic",[56,197,40,243,11,33],[249,46,46,218,250,40],"31298776","Sean-Der",[252,46,40,236,11,33],"31299049",[254,255,40,256,257,40],"31356277",6,"other\u002Fneutral\u002Fidea","PLG88",[259,31,46,260,261,40],"31299237","project\u002Fpositive\u002Fprivacy","a-dub",[72,31,40,263,11,33],"project\u002Fneutral\u002Fperformance",[265,31,45,208,261,40],"31299311",[267,31,40,236,204,40],"31299559",[269,31,45,263,250,40],"31300815",[271,31,45,263,261,40],"31300910",[113,273,33,274,114,40],8,"project\u002Fcritical\u002Fprivacy",[276,273,40,208,11,33],"31298452",[278,273,45,208,279,40],"31300217","jewel",[281,273,45,203,282,40],"31300826","Klasiaster",[284,273,45,208,114,40],"31300871",[286,273,40,287,11,33],"31303013","project\u002Fneutral\u002Fdocs",[289,273,45,211,183,40],"31303190",[95,291,45,292,96,40],9,"project\u002Fneutral\u002Fdesign",[294,291,40,287,11,33],"31299012",[99,291,46,296,96,40],"maker\u002Fpositive\u002Fdocs",[128,298,45,203,129,40],10,[300,298,40,292,11,33],"31299510",[302,18,46,243,183,40],"31303146",[304,305,45,287,306,40],"31299563",12,"Siira",[308,305,40,287,11,33],"31300002",[135,310,33,311,136,40],13,"project\u002Fcritical\u002Fdocs",[313,310,40,314,11,33],"31303019","maker\u002Fneutral\u002Fdocs",[139,310,46,316,136,40],"project\u002Fpositive\u002Fdocs",[168,32,33,274,169,40],[319,32,40,208,11,33],"31299032",[],[322,327,332,337,341,346],{"id":323,"name":324,"points":325,"category":326},"31335904","Himalayas",457,"web_saas",{"id":328,"name":329,"points":330,"category":331},"31275476","Dead Trees",389,"games",{"id":333,"name":334,"points":335,"category":336},"31333436","Oldest Search",295,"productivity",{"id":338,"name":339,"points":340,"category":331},"31296227","Battle of Flags",212,{"id":342,"name":343,"points":344,"category":345},"31294306","Ankify",180,"learning_science",{"id":347,"name":348,"points":349,"category":345},"31304897","CaskDB",175,false,"v2",{"id":353,"name":5,"line":6,"ai":350,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":354,"top":18,"kw":355,"maker":11,"domain":10,"tier":19,"attempts":40,"strip":356,"url":9,"mix":357,"praise":91,"objection":110,"sub":21},31297917,0.01,[24,25,26,27],"3033305110013105050503031033033530531051",[31,32,33,31],1793991045351]