I built an ephemeral P2P chat with WebRTC, without servers

(ephemchat.vercel.app)

19 points | by zRinexD 16 hours ago

9 comments

  • nikisweeting 14 hours ago
    THis is not without servers, you still use a signaling server for TURN.

    If you want true serverless you need a side channel to copy the offer/response, e.g. tell the user's to copy paste them as base64 thorugh whatsapp manually or something (https://github.com/pirate/webrtcchat).

    • ssss11 8 hours ago
      I wrote a webrtc chat prototype once that used a blockchain contract for the offer/response.

      It was cool but a little slow and I moved onto other side projects.

  • elwebmaster 15 hours ago
    You should mention that it uses PeerJS. That's not without servers. PeerJS runs their own signaling server which you are relying on to connect your peers.
  • atmanactive 15 hours ago
    This is great, thanks! Would you accept a Github pull request to translate it to English and several other languages?
    • zRinexD 15 hours ago
      Absolutely! I'd love to make this accessible to everyone. English translation would be a great start. Let's coordinate on GitHub issues.
  • iamnothere 14 hours ago
    Matrix was once working on something similar, I wonder what the latest status is.

    In general, things like this are a great way around current pushes for age verification and mandatory surveillance. Give your friends a link to this, or even a web archive via USB stick, and chat directly without intermediaries. No need to run a server.

    (Others pointed out you still need a TURN server. True but hopefully there’s a P2P solution for this.)

  • indigodaddy 14 hours ago
    - does the room vanish after the last user exits? Seems like it?

    - can the room code be tacked on to the url/slug?

  • michaelsbradley 15 hours ago
    What about use of TURN, entirely avoided?
  • villgax 14 hours ago
    Lol do your DD properly before posting
  • stainlu 14 hours ago
    [flagged]
  • zRinexD 16 hours ago
    I wanted to be able to talk to anyone in the world without relying on any company's servers. No censorship, no rules, no limits except the ones I set in my own room. So I built this.

    No signup, no registration. Just create a room with a password, share the code, and anyone can join directly. Everything is peer-to-peer, ephemeral, and disappears when you close the tab.

    Would love to hear what you think. Code is open source. Link: https://ephemchat.vercel.app/ Source code: https://github.com/zzrinexd/EphemChat

    • ramon156 10 hours ago
      "No X, No Y"

      Thanks for admitting you made heavy use of LLMs and did not read the code. Why should I care?

    • ranger_danger 15 hours ago
      Many users in the world are behind CGNAT or symmetrical NAT, and if both sides are, they will not be able to use WebRTC unless there is a TURN relay server involved. Does your software have a way to account for this?
      • zRinexD 15 hours ago
        Great question! Currently it uses Google's public STUN servers, which works for ~85% of connections. For the remaining cases, I'm planning to add a community-maintained list of TURN servers or a P2P fallback mechanism.
        • iamnothere 14 hours ago
          You could look into DHT as a way to distribute info about connected nodes, and maybe nodes with the right firewall setup could opt in to being TURN servers.