{"id":25735953,"url":"https://github.com/small-hack/coturn-chart","last_synced_at":"2026-03-01T09:32:58.822Z","repository":{"id":183439719,"uuid":"670133051","full_name":"small-hack/coturn-chart","owner":"small-hack","description":"Coturn Helm Chart to provide a STUN/TURN Server on Kubernetes","archived":false,"fork":false,"pushed_at":"2026-02-16T02:55:49.000Z","size":3489,"stargazers_count":21,"open_issues_count":12,"forks_count":10,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-16T09:49:14.201Z","etag":null,"topics":["coturn","helm"],"latest_commit_sha":null,"homepage":"https://small-hack.github.io/coturn-chart/","language":"Go Template","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"iits-consulting/coturn-chart","license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/small-hack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-07-24T11:15:47.000Z","updated_at":"2026-02-16T02:55:49.000Z","dependencies_parsed_at":"2024-06-29T07:28:36.452Z","dependency_job_id":"b3854a35-cad8-4ac9-b9c7-576c25c16a3b","html_url":"https://github.com/small-hack/coturn-chart","commit_stats":null,"previous_names":["jessebot/coturn-chart"],"tags_count":64,"template":false,"template_full_name":null,"purl":"pkg:github/small-hack/coturn-chart","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/small-hack%2Fcoturn-chart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/small-hack%2Fcoturn-chart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/small-hack%2Fcoturn-chart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/small-hack%2Fcoturn-chart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/small-hack","download_url":"https://codeload.github.com/small-hack/coturn-chart/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/small-hack%2Fcoturn-chart/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29965627,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T06:55:38.174Z","status":"ssl_error","status_checked_at":"2026-03-01T06:53:04.810Z","response_time":124,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["coturn","helm"],"created_at":"2025-02-26T05:34:25.248Z","updated_at":"2026-03-01T09:32:58.792Z","avatar_url":"https://github.com/small-hack.png","language":"Go Template","funding_links":[],"categories":["Interconnect"],"sub_categories":["SBC, IMS"],"readme":"# coturn Helm Chart\n\u003ca href=\"https://github.com/small-hack/coturn-chart/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/small-hack/coturn-chart?style=plastic\u0026labelColor=blue\u0026color=green\u0026logo=GitHub\u0026logoColor=white\"\u003e\u003c/a\u003e\n\nAn unofficial [coturn](https://github.com/coturn/coturn) helm chart using the official [coturn docker image](https://hub.docker.com/r/coturn/coturn).\n\n* [Usage](#usage)\n  * [TLDR](#tldr)\n  * [Basics](#basics)\n    * [Coturn Realm](#coturn-realm)\n    * [Adding a user declaritively](#adding-a-user-declaritively)\n    * [Databases](#databases)\n    * [Internal SQLite database](#internal-sqlite-database)\n    * [Bundled PostgreSQL subchart](#bundled-postgresql-subchart)\n    * [External PostgreSQL database](#external-postgresql-database)\n    * [Bundled MySQL subchart](#bundled-mysql-subchart)\n    * [External MySQL database](#external-mysql-database)\n  * [Testing](#testing)\n* [Status and Contributing](#status-and-contributing)\n  * [Thanks](#thanks)\n\n# Usage\n\n### TLDR \nNote that you still need to fill out the [`charts/coturn/values.yaml`](./charts/coturn/values.yaml) (Autogenerated Docs can be found in [`charts/coturn/README.md`](./charts/coturn/README.md)).\n\n```console\nhelm repo add coturn https://small-hack.github.io/coturn-chart/\nhelm install coturn coturn/coturn --values values.yaml\n```\n\n## Basics\n\n### Coturn Realm\nAt very least, you'll need to configure a coturn [realm](https://github.com/coturn/coturn/blob/d7db17f048675f46fc2b30827813eeaf0c822fb2/examples/etc/turnserver.conf#L349-L358) which is like your hostname, and is used for authentication as well.\n\n```yaml\n# most coturn config parameters that you really need\ncoturn:\n  # --  hostname for the coturn server realm\n  realm: \"turn.example.com\"\n```\n\n### Adding a user declaritively\nPass in one set of credentials (username/password) directly either plaintext, or via an existing k8s secret, like this:\n\n```yaml\n# most coturn config parameters that you really need\ncoturn:\n  # --  hostname for the coturn server realm\n  realm: \"turn.example.com\"\n\n  auth:\n    # -- username for the main user of the turn server; ignored if you existingSecret is not \"\"\n    username: \"coturn\"\n    # -- password for the main user of the turn server; ignored if you existingSecret is not \"\"\n    password: \"myverysecretpasswordthatimobviouslygoingtochangeright\"\n    # -- existing secret with keys username/password for coturn; if this is not \"\" then we will ignore coturn.auth.username/password\n    existingSecret: \"\"\n    secretKeys:\n      # -- key in existing secret for turn server user\n      username: username\n      # -- key in existing secret for turn server user's password\n      password: password\n```\n\nCurrently only one user is supported, but we'd like to support adding more than that to match what is possible in the [coturn/coturn:`examples/etc/turnserver.conf`](https://github.com/coturn/coturn/blob/d7db17f048675f46fc2b30827813eeaf0c822fb2/examples/etc/turnserver.conf#L256-L280)\n\n### Databases\n\n### Internal SQLite database\nIf you would like to use the built-in sqlite database, set `externalDatabse.enabled` and `postgresql.enabled` to `false` in your `values.yaml` like this:\n```yaml\nexternalDatabse:\n  enabled: false\npostgresql:\n  enabled: false\n```\n\n### Bundled PostgreSQL subchart\nWe provide optional Bitnami Postgresql subchart to deploy an external database. You can use it like this:\n\n```yaml\nexternalDatabse:\n  enabled: true\npostgresql:\n  enabled: false\n  global:\n    postgresql:\n      # -- global.postgresql.auth overrides postgresql.auth\n      auth:\n        # -- username for database, ignored if existingSecret is passed in\n        username: \"coturn\"\n        # -- password for db, autogenerated if empty \u0026 existingSecret empty\n        password: \"mycoolpasswordthatisplaintextforsomereason\"\n        # -- database to create, ignored if existingSecret is passed in\n        database: \"coturn\"\n        # -- name of existing Secret to use for postgresql credentials\n        existingSecret: \"\"\n        # Names of the keys in existing secret to use for PostgreSQL credentials\n        # all of these are ignored if existingSecret is empty\n        secretKeys:\n          # -- key in existingSecret for database to create\n          hostname: \"hostname\"\n          # -- key in existingSecret for database to create\n          database: \"database\"\n          # -- key in exsiting Secret to use for the coturn user\n          username: \"username\"\n          # -- key in existing Secret to use for postgres admin user's password\n          adminPasswordKey: \"postgresPassword\"\n          # -- key in existing Secret to use for coturn user's password\n          userPasswordKey: \"password\"\n```\n\nYou're free to use any other values you find in the [Bitnami postgresql helm values](https://github.com/bitnami/charts/tree/main/bitnami/postgresql) under the `postgresql` parameter in your values.yaml for coturn.\n\n### External PostgreSQL database\nIf `externalDatabase.enabled` is set to `true`, and `postgresql.enabled` is set to false, you can pass in credentials from an existing postgresql database, like this:\n\n```yaml\nexternalDatabse:\n  enabled: true\n  # -- Currently only postgresql is supported. mariadb/mysql coming soon\n  type: \"postgresql\"\n  # -- required if externalDatabase.enabled: true and postgresql.enabled: false\n  hostname: \"mypostgresserver\"\n  # -- username for database, ignored if existingSecret is passed in\n  username: \"coturn\"\n  # -- password for database, ignored if existingSecret is passed in\n  password: \"coolpasswordfordogs\"\n  # -- database to create, ignored if existingSecret is passed in\n  database: \"coturn\"\n  # -- name of existing Secret to use for postgresql credentials\n  existingSecret: \"\"\n  # Names of the keys in existing secret to use for PostgreSQL credentials\n  secretKeys:\n    # -- key in existing Secret to use for the db user\n    username: \"\"\n    # -- key in existing Secret to use for db user's password\n    password: \"\"\n    # -- key in existing Secret to use for the database name\n    database: \"\"\n    # -- key in existing Secret to use for the db's hostname\n    hostname: \"\"\npostgresql:\n  enabled: false\n```\n\n### Bundled MySQL subchart\nWe provide optional Bitnami MySQL subchart to deploy an external database. You can use it like this:\n\n```yaml\nmysql:\n  enabled: true\n  auth:\n    # -- username for database, ignored if existingSecret is passed in\n    username: \"coturn\"\n    # -- password for db, autogenerated if empty \u0026 existingSecret empty\n    password: \"mycoolpasswordthatisplaintextforsomereason\"\n    # -- database to create, ignored if existingSecret is passed in\n    database: \"coturn\"\n    # -- Use existing secret for password details. \n    # The secret has to contain the keys mysql-root-password, mysql-replication-password and mysql-password\n    existingSecret: \"\"\n    # Names of the keys in existing secret to use for MySQL credentials\n    secretKeys:\n      # -- key in exsiting Secret to use for the coturn user\n      username: \"username\"\n      # -- key in existing Secret to use for coturn user's password\n      password: \"password\"\n```\n\nYou're free to use any other values you find in the [Bitnami mysql helm values](https://github.com/bitnami/charts/tree/main/bitnami/mysql) under the `mysql` parameter in your values.yaml for coturn.\n\n### External MySQL database\nIf `externalDatabase.enabled` is set to `true`, and `mysql.enabled` is set to false, you can pass in credentials from an existing mysql database, like this:\n\n```yaml\nexternalDatabse:\n  enabled: true\n  # -- Currently postgresql and mysql are supported.\n  type: \"mysql\"\n  # -- required if externalDatabase.enabled: true and mysql.enabled: false\n  hostname: \"mysqlserver\"\n  # -- username for database, ignored if existingSecret is passed in\n  username: \"coturn\"\n  # -- password for database, ignored if existingSecret is passed in\n  password: \"coolpasswordfordogs\"\n  # -- database to create, ignored if existingSecret is passed in\n  database: \"coturn\"\n  # -- name of existing Secret to use for mysql credentials\n  existingSecret: \"\"\n  # Names of the keys in existing secret to use for MySQL credentials\n  secretKeys:\n    # -- key in existing Secret to use for the db user\n    username: \"\"\n    # -- key in existing Secret to use for db user's password\n    password: \"\"\n    # -- key in existing Secret to use for the database name\n    database: \"\"\n    # -- key in existing Secret to use for the db's hostname\n    hostname: \"\"\nmysql:\n  enabled: false\n```\n\n## Testing\n\nSource: [Tutorial for turnutils_uclient and Coturn server](https://gist.github.com/cameronelliott/be1e581cb7b28f748e04bcabc249e6b6)\n\n1. Install coturn:\n  \n    ```bash\n    brew install coturn\n    ```\n\n2. Test the connection to the server. This is an example for LoadBalancer type services:\n    ```bash\n    turnutils_uclient -u $COTURN_USER \\\n      -w $COTURN_PASSWORD \\\n      -L $CLIENT_IP \\\n      -y $SERVER_UDP_IP\n    ```\n\n    A Successful test looks like this:\n  \n    ```logtalk\n    0: (18446744073709551615): INFO: Total connect time is 0\n    1: (18446744073709551615): INFO: start_mclient: msz=4, tot_send_msgs=0, tot_recv_msgs=0, tot_send_bytes ~ 0, tot_recv_bytes ~ 0\n    2: (18446744073709551615): INFO: start_mclient: msz=4, tot_send_msgs=0, tot_recv_msgs=0, tot_send_bytes ~ 0, tot_recv_bytes ~ 0\n    3: (18446744073709551615): INFO: start_mclient: msz=4, tot_send_msgs=10, tot_recv_msgs=10, tot_send_bytes ~ 1000, tot_recv_bytes ~ 1000\n    4: (18446744073709551615): INFO: start_mclient: msz=1, tot_send_msgs=20, tot_recv_msgs=20, tot_send_bytes ~ 2000, tot_recv_bytes ~ 2000\n    4: (18446744073709551615): INFO: start_mclient: tot_send_msgs=20, tot_recv_msgs=20\n    4: (18446744073709551615): INFO: start_mclient: tot_send_bytes ~ 2000, tot_recv_bytes ~ 2000\n    4: (18446744073709551615): INFO: Total transmit time is 4\n    4: (18446744073709551615): INFO: Total lost packets 0 (0.000000%), total send dropped 0 (0.000000%)\n    4: (18446744073709551615): INFO: Average round trip delay 5.500000 ms; min = 4 ms, max = 13 ms\n    4: (18446744073709551615): INFO: Average jitter 1.700000 ms; min = 0 ms, max = 9 ms\n    ```\n\nIf you're developing the helm chart, note that we have [GitHub Actions CI jobs](https://github.com/small-hack/coturn-chart/blob/main/.github/workflows/lint-and-test-chart.yaml) to test the chart with sqllite, postgresql, and mysql. You can see an example [here](https://github.com/small-hack/coturn-chart/actions/runs/8451352725).\n\n# Status and Contributing\nThis is actively maintained by both live developers and [renovateBot](https://github.com/renovatebot/github-action) via a scheduled Github Action. If you'd like to contribute, please read the [CONTRIBUTING.md](./CONTRIBUTING.md) feel free to open a PR :) If you'd like a feature or want to report a bug, please do that in the GitHub Issues. If you know coturn and k8s well enough, please also feel free to scan the issues and help others \u003c3 We recently moved the repo from jessebot's account to the small-hack org where we maintain all our helm charts.\n\n## Thanks\nThis is a fork of the, now deprecated, [iits-consulting/coturn](https://github.com/iits-consulting/coturn-chart) chart. Thanks to them for getting this started.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmall-hack%2Fcoturn-chart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmall-hack%2Fcoturn-chart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmall-hack%2Fcoturn-chart/lists"}