{"id":23158538,"url":"https://github.com/izer-xyz/3cx-docker","last_synced_at":"2025-08-18T01:30:50.467Z","repository":{"id":41416363,"uuid":"394960369","full_name":"izer-xyz/3cx-docker","owner":"izer-xyz","description":"3CX PBX Phone System docker image. [ x86_64 | ARM | v18.x ]","archived":true,"fork":false,"pushed_at":"2023-04-12T11:27:36.000Z","size":170,"stargazers_count":29,"open_issues_count":0,"forks_count":8,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-20T20:22:14.945Z","etag":null,"topics":["3cx","arm","docker","pbx","sip","voip","x86"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/izer-xyz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-08-11T11:07:47.000Z","updated_at":"2025-02-20T14:40:47.000Z","dependencies_parsed_at":"2023-01-30T17:01:36.545Z","dependency_job_id":null,"html_url":"https://github.com/izer-xyz/3cx-docker","commit_stats":null,"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/izer-xyz/3cx-docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izer-xyz%2F3cx-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izer-xyz%2F3cx-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izer-xyz%2F3cx-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izer-xyz%2F3cx-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/izer-xyz","download_url":"https://codeload.github.com/izer-xyz/3cx-docker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izer-xyz%2F3cx-docker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270932556,"owners_count":24670240,"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","status":"online","status_checked_at":"2025-08-17T02:00:09.016Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["3cx","arm","docker","pbx","sip","voip","x86"],"created_at":"2024-12-17T22:20:05.027Z","updated_at":"2025-08-18T01:30:50.224Z","avatar_url":"https://github.com/izer-xyz.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/izer-xyz/3cx-docker/push.yml?style=flat-square)](https://github.com/izer-xyz/3cx-docker/actions/workflows/push.yml)\n[![GitHub Release](https://img.shields.io/github/v/release/izer-xyz/3cx-docker?style=flat-square)](https://github.com/izer-xyz/3cx-docker/releases)\n[![DockerHub Pulls](https://img.shields.io/docker/pulls/izerxyz/3cx?style=flat-square)](https://hub.docker.com/r/izerxyz/3cx)\n\n---\n\n*This project is no longer maintained as 3cx doesn't publish ARM binaries and last build failed for no obvious reasons.*\n\n---\n\n\u003e Use at your own risk. It comes with no guarantee. Always do backups. Etc.\n\n# 3cx-docker\n\n3CX PBX Phone System docker image:\n\n * Multi arch build (Arm + x86)\n * No special priviledges (CAP_* or --priviledged)\n * Simpler / automated build process (one step)\n * Easier setup of 3CX (runs the web config on first start)\n\n## Usage \n\n 1. Start the container\n```\n$ docker run \\\n  -d  \\\n  -t \\\n  --tmpfs /tmp \\\n  --tmpfs /run \\\n  --tmpfs /run/lock \\\n  -v      /sys/fs/cgroup:/sys/fs/cgroup:ro \\\n  -p      5015:5015 \\\n  -p      5000:5000 \\\n  -p      5001:5001 \\\n  -p      5060:5060 \\\n  -p      5060:5060/udp \\\n  -p      5090:5090 \\\n  -p      5090:5090/udp \\\n          ghcr.io/izer-xyz/3cx:latest\n```\n\n 2. Setup 3CX using the web config (this only runs the first time the container starts)\n```\n  open http://[hostname]:5015/?v=2\n```\n\n## Upgrade process\n\nUpgrade (and setup process) only works on the first run. If fails wipe the container and start again or use `3CXCleanup`. \n\n### Automated / simple\n\nUpgrade using simple/opinionted [restore config](setupconfig-3cx-restore.xml):\n\n```\n$ docker run \\\n  -d  \\\n  -t \\\n  --tmpfs /tmp \\\n  --tmpfs /run \\\n  --tmpfs /run/lock \\\n  -v      /sys/fs/cgroup:/sys/fs/cgroup:ro \\\n  -p      5015:5015 \\\n  -p      5000:5000 \\\n  -p      5001:5001 \\\n  -p      5060:5060 \\\n  -p      5060:5060/udp \\\n  -p      5090:5090 \\\n  -p      5090:5090/udp \\\n  -v    /mnt/3cx:/mnt/3cx \\\n  --env CX_BACKUP_FILE=/mnt/voip/backups/3CXScheduledBackup.zip \\\n  --env CX_PUBLIC_IP=X.X.X.X \\\n  --env CX_INTERNAL_FQDN=3cx.example.com \\\n          ghcr.io/izer-xyz/3cx:latest\n```\nWhere,\n * `CX_BACKUP_FILE`: is the scheduled backup file location to restore from\n * `CX_PIBLIC_IP`: public ipv4 address of the server\n * `CX_INTERNAL_FQDN`: internal full qualified domain name of the server (not the 3cx supplied public domain)\n\n### Automated custom (not tested)\n\nBYO [`setupconfig.xml`](https://www.3cx.com/docs/configure-pbx-automatically/). The example assumes that the `/mnt/3cx/config/setupconfig.xml` exists with the approriate configuation to setup the instance.\n\n```\n$ docker run \\\n  -d  \\\n  -t \\\n  --tmpfs /tmp \\\n  --tmpfs /run \\\n  --tmpfs /run/lock \\\n  -v      /sys/fs/cgroup:/sys/fs/cgroup:ro \\\n  -p      5015:5015 \\\n  -p      5000:5000 \\\n  -p      5001:5001 \\\n  -p      5060:5060 \\\n  -p      5060:5060/udp \\\n  -p      5090:5090 \\\n  -p      5090:5090/udp \\\n  -v    /mnt/3cx:/mnt/3cx \\\n  -v    /mnt/3cx/config:/etc/3cxpbx \\\n          ghcr.io/izer-xyz/3cx:latest\n```\n\n### Manual upgrade\n\n 1. Backup 3cx instance (good idea to run scheduled backups as the container may not persits data)\n 2. Download backup zip\n 3. Upgrade container to next version\n 4. Use webconfig to restore from backup zip\n 5. Change backup location if it was modified (backup doesn't seem to contain the config)\n 6. Check E164 Processing settings (add/remove prefixes)\n\n\n## Troubleshooting\n\n 1. Container doesn't start. `systemd` can be tricky to get going as it depends on the host (and for that reason I am unlikely to be able to help see [#4](https://github.com/izer-xyz/3cx-docker/issues/4), [#9](https://github.com/izer-xyz/3cx-docker/issues/9) ). There is a [workaround](https://github.com/izer-xyz/3cx-docker/issues/17#issuecomment-1329787269) that may help in some scenarios. Good starting point is to run the minimum process with debug enabled: \n```\n $ docker run -it --rm --tmpfs /run --tmpfs /run/lock -v /sys/fs/cgroup:/sys/fs/cgroup:ro izerxyz/3cx:latest /lib/systemd/systemd --log-level=debug --log-target=console --show-status=true\n```\n \n 2. Setup issues, check the logs: `/var/lib/3cxpbx/Data/Logs/PbxConfigTool.log`\n\n 3. Failed setup (Warning this will delete all user data!): \n```\n  $ docker exec -it [container id]  /usr/sbin/3CXCleanup\n```\n\n 4. Post setup issues: `/var/lib/3cxpbx/Instance0/Data/Logs/*`\n\n\n# References\n\n * https://www.3cx.com/docs/ports/\n * https://github.com/ekondayan/docker-3cx\n * https://hub.docker.com/r/jrei/systemd-debian\n * https://github.com/docker/build-push-action/blob/master/docs/advanced/push-multi-registries.md\n * https://www.3cx.com/docs/configure-pbx-automatically/\n * https://www.3cx.com/wp-content/uploads/2016/11/setupconfig.xml\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fizer-xyz%2F3cx-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fizer-xyz%2F3cx-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fizer-xyz%2F3cx-docker/lists"}