{"id":21390599,"url":"https://github.com/yuukanoo/rtchat","last_synced_at":"2025-06-12T14:05:12.193Z","repository":{"id":61627122,"uuid":"252197037","full_name":"YuukanOO/rtchat","owner":"YuukanOO","description":"A WebRTC experiment to host peer to peer conferences written in Go!","archived":false,"fork":false,"pushed_at":"2020-04-10T07:22:09.000Z","size":17,"stargazers_count":3,"open_issues_count":1,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-06-20T11:25:23.177Z","etag":null,"topics":["chat","p2p","webrtc"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YuukanOO.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-01T14:22:42.000Z","updated_at":"2024-02-20T20:58:10.000Z","dependencies_parsed_at":"2022-10-18T17:30:43.508Z","dependency_job_id":null,"html_url":"https://github.com/YuukanOO/rtchat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuukanOO%2Frtchat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuukanOO%2Frtchat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuukanOO%2Frtchat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YuukanOO%2Frtchat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YuukanOO","download_url":"https://codeload.github.com/YuukanOO/rtchat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225901435,"owners_count":17542223,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chat","p2p","webrtc"],"created_at":"2024-11-22T13:18:18.422Z","updated_at":"2024-11-22T13:18:18.937Z","avatar_url":"https://github.com/YuukanOO.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"rtchat\n===\n\nThis is a tiny and lightweight **experiment** to easily host live video conferences using the WebRTC protocol.\n\n*The demo server at https://live.voixdunet.com/ should only be used for testing purposes and could be down at any time.*\n\nSince I love simple things, this tiny server is written in **Go**, final binary weights **~10mb**, uses **~8mb** of memory and provides:\n\n- A STUN/TURN server using the [pion/turn](https://github.com/pion/turn) package that will forward streams if two peers cannot communicate directly,\n- A websocket signaling server to create rooms and enables anyone in the same room to communicate using the WebRTC protocol,\n- A tiny frontpage served by the server.\n\nWith the above stuff, you have everything you need to make peer to peer communications with WebRTC 💪\n\n## Develop\n\nOnce you have the [Go](https://golang.org/dl/) language installed, just launch the server:\n\n```console\n$ go run cmd/server/main.go -debug\n```\n\nIt will download dependencies and run the tiny server straigh away (see the list of available options below).\n\n## Build\n\n```console\n$ go build -o rtchat cmd/server/main.go\n```\n\n## Deploy\n\nThis repository contains a `Dockerfile` to easily deploy this application (you must set environment variables `TURN_PORT` and `TURN_IP`). The final image weight about **~17mb** 😍\n\n```console\n$ docker build -t rtchat .\n$ docker run -it --rm -p 5000:5000 -p 3478:3478/udp -e TURN_PORT=3478 -e TURN_IP=192.168.0.14 rtchat\n```\n\n## Usage\n\n```console\nUsage of rtchat:\n  -debug\n        Should we launch in the debug mode?\n  -http-port int\n        Web server listening port. (default 5000)\n  -realm string\n        Realm used by the turn server. (default \"rtchat.io\")\n  -turn-ip string\n        IP Address that TURN can be contacted on. Should be publicly available. (default \"192.168.0.14\")\n  -turn-port int\n        Listening port for the TURN/STUN endpoint. (default 3478)\n```\n\nIf there is one parameter to keep in mind, it's the `-turn-ip` which represents the publicly available IP used by the TURN server to enables peer to communicate being NAT or proxys by forwarding all streams through the server.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuukanoo%2Frtchat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuukanoo%2Frtchat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuukanoo%2Frtchat/lists"}