From 79b0dd84c2a25833520c8e0fa46688fb3a8df641 Mon Sep 17 00:00:00 2001 From: Miroslav Pejic Date: Fri, 10 Jan 2025 11:50:52 +0100 Subject: [PATCH] [call-me] - add coturn --- .gitignore | 6 +- README.md | 3 + coturn/README.md | 62 +++++++++++++++++++ coturn/docker-compose.template.yml | 11 ++++ coturn/turnserver.template.conf | 23 +++++++ ...compose.yml => docker-compose.template.yml | 0 package.json | 2 +- 7 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 coturn/README.md create mode 100644 coturn/docker-compose.template.yml create mode 100644 coturn/turnserver.template.conf rename docker-compose.yml => docker-compose.template.yml (100%) diff --git a/.gitignore b/.gitignore index ebb1439..5b55d97 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,8 @@ node_modules npm-debug.log -package-lock.json \ No newline at end of file +package-lock.json + +#personal +docker-compose.yml +turnserver.conf \ No newline at end of file diff --git a/README.md b/README.md index 7a9065c..6e097f8 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,9 @@ cd call-me # Copy .env.template to .env cp .env.template .env +# Create your own docker-compose.yml +cp docker-compose.template.yml docker-compose.yml + # Install dependencies npm install diff --git a/coturn/README.md b/coturn/README.md new file mode 100644 index 0000000..1b43ccf --- /dev/null +++ b/coturn/README.md @@ -0,0 +1,62 @@ +# CoTURN Setup Guide + +Set up `CoTURN` with Docker for NAT traversal and media relay in WebRTC applications. + +--- + +## Installation Steps + +### 1. Prepare Docker Compose + +1. Copy the template: + ```bash + cp docker-compose.template.yml docker-compose.yml + ``` +2. Edit `docker-compose.yml` to fit your environment. + +### 2. Configure TURN Server + +1. Copy the template: + ```bash + cp turnserver.template.conf turnserver.conf + ``` +2. Edit `turnserver.conf`: + + - Replace `YOUR.DOMAIN.NAME` with your domain. + - Replace `YOUR.USERNAME` and `YOUR.PASSWORD` with your credentials. + + Example: + + ```text + server-name=example.com + realm=example.com + user=username:password + ``` + +### 3. Verify Files + +Ensure `turnserver.conf` and `docker-compose.yml` are in the same directory. + +### 4. Start the Server + +Run: + +```bash +docker-compose up -d +``` + +### 5. Check Logs (Optional) + +Check logs to verify the server: + +```bash +docker-compose logs -f +``` + +--- + +## Notes + +- Open ports (e.g., 3478, 5349 for TURN) on your firewall. +- Use secure credentials. +- Test with a WebRTC application. \ No newline at end of file diff --git a/coturn/docker-compose.template.yml b/coturn/docker-compose.template.yml new file mode 100644 index 0000000..3e9c27b --- /dev/null +++ b/coturn/docker-compose.template.yml @@ -0,0 +1,11 @@ +services: + coturn: + image: coturn/coturn + container_name: coturn + network_mode: 'host' + user: 'root' + restart: unless-stopped + volumes: + - ./turnserver.conf:/etc/coturn/turnserver.conf + - /etc/letsencrypt/live/YOUR.DOMAIN.NAME/fullchain.pem:/etc/letsencrypt/live/YOUR.DOMAIN.NAME/fullchain.pem + - /etc/letsencrypt/live/YOUR.DOMAIN.NAME/privkey.pem:/etc/letsencrypt/live/YOUR.DOMAIN.NAME/privkey.pem diff --git a/coturn/turnserver.template.conf b/coturn/turnserver.template.conf new file mode 100644 index 0000000..4ad2a01 --- /dev/null +++ b/coturn/turnserver.template.conf @@ -0,0 +1,23 @@ +listening-port=3478 +tls-listening-port=5349 + +min-port=10000 +max-port=20000 + +fingerprint +lt-cred-mech + +user=YOUR.USERNAME:YOUR.PASSWORD + +server-name=YOUR.DOMAIN.NAME +realm=YOUR.DOMAIN.NAME + +total-quota=100 +stale-nonce=600 + +cert=/etc/letsencrypt/live/YOUR.DOMAIN.NAME/fullchain.pem +pkey=/etc/letsencrypt/live/YOUR.DOMAIN.NAME/privkey.pem + +cipher-list="ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384" + +no-stdout-log \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.template.yml similarity index 100% rename from docker-compose.yml rename to docker-compose.template.yml diff --git a/package.json b/package.json index 3bf8af4..6f488e8 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "call-me", - "version": "1.0.47", + "version": "1.0.48", "description": "Your Go-To for Instant Video Calls", "author": "Miroslav Pejic - miroslav.pejic.85@gmail.com", "license": "AGPLv3",