{"id":28320760,"url":"https://github.com/bundasmanu/rtpengine-docker","last_synced_at":"2026-01-25T13:32:54.212Z","repository":{"id":290599514,"uuid":"971447623","full_name":"bundasmanu/rtpengine-docker","owner":"bundasmanu","description":"rtpengine running in a docker image","archived":false,"fork":false,"pushed_at":"2025-04-29T17:48:48.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-23T20:51:02.945Z","etag":null,"topics":["docker","kamailio","rtpengine"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","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/bundasmanu.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-23T14:34:13.000Z","updated_at":"2025-04-30T16:00:55.000Z","dependencies_parsed_at":"2025-04-29T17:36:45.195Z","dependency_job_id":null,"html_url":"https://github.com/bundasmanu/rtpengine-docker","commit_stats":null,"previous_names":["bundasmanu/rtpengine-docker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bundasmanu/rtpengine-docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bundasmanu%2Frtpengine-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bundasmanu%2Frtpengine-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bundasmanu%2Frtpengine-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bundasmanu%2Frtpengine-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bundasmanu","download_url":"https://codeload.github.com/bundasmanu/rtpengine-docker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bundasmanu%2Frtpengine-docker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28753440,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T10:25:12.305Z","status":"ssl_error","status_checked_at":"2026-01-25T10:25:11.933Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["docker","kamailio","rtpengine"],"created_at":"2025-05-25T11:12:28.314Z","updated_at":"2026-01-25T13:32:54.207Z","avatar_url":"https://github.com/bundasmanu.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rtpengine-docker\n\nRTPEngine build to be used in docker containers, and to easily integrate with syslog and to provide an easy way to configure their configuration file(s).\n\n- [rtpengine-docker](#rtpengine-docker)\n  - [Purpose](#purpose)\n  - [What offers](#what-offers)\n  - [.env file](#env-file)\n  - [Networks](#networks)\n  - [Integration with Kamailio](#integration-with-kamailio)\n  - [Build image](#build-image)\n  - [Run RTPEngine](#run-rtpengine)\n    - [Run Multiple Instances](#run-multiple-instances)\n  - [CLI Interface](#cli-interface)\n  - [Kubernetes](#kubernetes)\n  - [Some considerations](#some-considerations)\n\n## Purpose\n\nThe main reasons behind the need to create this repo, are mainly:\n\n- The need to get a easy way to switch between different `RTPEngine` versions;\n- The need to make easy the process to install, test and debug `RTPEngine` in a docker container;\n- The need to get a functional `backbone` that it's easy to scale and integrate with `Kamailio`;\n\n## What offers\n\n- `RTPEngine` working in a container;\n- Easy way to manage and switch between different `RTPEngine` versions;\n- Easy way to scale multiple `RTPEngine` containers, changing only some environment variables;\n- `rtpengine-ctl` integration;\n- Log file managing integrated;\n\n## .env file\n\n- `RTPENGINE_RELEASE`: RTPEngine version to be used when installing the packages;\n- `RTPENGINE_USER`: User defined to handle some generated files;\n- `RTPENGINE_CONF_DIR`: Folder to store the `RTPEngine` configuration files (copied from the host on build);\n- `RTPENGINE_LOG_DIR`: Folder to store the generated logs (rsyslog and logrotate handling);\n- `RTPENGINE_LOG_FILENAME`: Name of the log file (when scaling, update the name to be unique, between instances);\n- `RTPENGINE_RECORDINGS_DIR`: Folder to store the generated recordings;\n- `LISTEN_IP_DEFAULT_INTERFACE`: IP address of the default interface (if you want to use multiple interfaces, please update `rtpengine.conf` accordingly);\n- `MIN_PORT_DEFAULT_INTERFACE`: Minimum port to be used by the default interface;\n- `MAX_PORT_DEFAULT_INTERFACE`: Maximum port to be used by the default interface;\n- `LISTEN_IP_NG`: IP to listen for the NG protocol;\n- `LISTEN_PORT_NG`: Port to listen for the NG protocol;\n- `LISTEN_IP_CLI`: IP to listen for the CLI (command line interface);\n- `LISTEN_PORT_CLI`: Port to listen for the CLI (command line interface);\n\n**Note:** Keep in mind that more environment variables could be introduced to make the container and the configuration more flexible.\n\n## Networks\n\nBy default, this build was built for a local environment. But could be used for other purposes, should only be needed to changes the networks on `docker-compose` file and change the IP address on `.env` file.\n\nRequirements:\n\n- `common-network`: This is a external network used in common with other containers, like: `kamailio` and `postgres` container. More details about how to create the network are described in: [postgres-kamailio-docker](https://github.com/bundasmanu/postgres-kamailio-docker);\n\n## Integration with Kamailio\n\nThe integration with `Kamailio` is quite simple. No changes are needed here.\nWe only need to update some env vars in [kamailio-docker](https://github.com/bundasmanu/kamailio-docker); to point to the `RTPEngine` container(s).\n\n## Build image\n\n```sh\ndocker compose build rtpengine\n```\n\n## Run RTPEngine\n\n```sh\ndocker compose up rtpengine -d\n```\n\n### Run Multiple Instances\n\nWhen running multiple instances, it's only required to change the env vars that are needed to be unique for each instance:\n\n- `RTPENGINE_LOG_FILENAME`;\n- `LISTEN_PORT_NG` and `LISTEN_PORT_CLI`;\n  - `LISTEN_IP_NG` or `LISTEN_IP_CLI` (if you want to use different IPs for each instance);\n\nAfter that, run container as usual:\n\n```sh\ndocker compose up rtpengine -d\n```\n\n## CLI Interface\n\n```sh\nrtpengine-ctl -ip 172.25.0.30 -port 2224 help\n```\n\n## Kubernetes\n\nThis image can be used in Kubernetes, but it is not yet tested massively.\nHelm charts are provided in the `helm` folder, and can be used to deploy the `RTPEngine` container in a Kubernetes cluster.\nPlease adapt the `values.yaml` and `configmap.yml` file to your needs, and then run:\n\n```sh\nhelm install --dry-run --debug rtpengine-docker ./helm/rtpengine-docker\nhelm upgrade --install rtpengine-docker ./helm/rtpengine-docker\n```\n\n`pvc` is used to store the recordings, and also logs.\nLogs are available in isolated `pvcs`, and can be used to debug the container in case of issues.\n\n```sh\nkubectl exec -it rtpengine-a -- cat /etc/rtpengine/logs/rtpengine.log\n```\n\n## Some considerations\n\n- `.conf` files are copied from the host to the container, and the ENV var substitution is done after;\n- Another possible approach is to handle this files as templates, and use `ansible`, `consul`, ..., to manage this files, and use volumes instead;\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbundasmanu%2Frtpengine-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbundasmanu%2Frtpengine-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbundasmanu%2Frtpengine-docker/lists"}