{"id":17696289,"url":"https://github.com/erisa/cloudflared-docker","last_synced_at":"2025-10-23T22:22:17.518Z","repository":{"id":37003477,"uuid":"305577204","full_name":"Erisa/cloudflared-docker","owner":"Erisa","description":"Simple Alpine-built scratch-runtime Dockerfile for cloudflared, with support for multiple architectures.","archived":false,"fork":false,"pushed_at":"2025-10-19T05:20:19.000Z","size":173,"stargazers_count":189,"open_issues_count":2,"forks_count":29,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-10-19T17:44:53.475Z","etag":null,"topics":["argo-tunnel","cloudflare","cloudflared","docker","dockerfile","multiple-architectures"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/erisamoe/cloudflared","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Erisa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","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},"funding":{"github":"Erisa"}},"created_at":"2020-10-20T03:17:38.000Z","updated_at":"2025-10-19T05:18:47.000Z","dependencies_parsed_at":"2023-12-24T02:20:45.298Z","dependency_job_id":"ac8be80c-befa-4073-9afc-3b793c068437","html_url":"https://github.com/Erisa/cloudflared-docker","commit_stats":{"total_commits":240,"total_committers":6,"mean_commits":40.0,"dds":0.375,"last_synced_commit":"ac97a5180f78e5f7dc524c099f3e185943792581"},"previous_names":[],"tags_count":151,"template":false,"template_full_name":null,"purl":"pkg:github/Erisa/cloudflared-docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erisa%2Fcloudflared-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erisa%2Fcloudflared-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erisa%2Fcloudflared-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erisa%2Fcloudflared-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Erisa","download_url":"https://codeload.github.com/Erisa/cloudflared-docker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Erisa%2Fcloudflared-docker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280702183,"owners_count":26376183,"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-10-23T02:00:06.710Z","response_time":142,"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":["argo-tunnel","cloudflare","cloudflared","docker","dockerfile","multiple-architectures"],"created_at":"2024-10-24T14:43:51.078Z","updated_at":"2025-10-23T22:22:17.500Z","avatar_url":"https://github.com/Erisa.png","language":"Dockerfile","funding_links":["https://github.com/sponsors/Erisa"],"categories":[],"sub_categories":[],"readme":"# Erisa's Cloudflared Docker Image\n\nThis repository contains a simple Dockerfile to build `cloudflared`, the client for [Cloudflare Tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps), from [source](https://github.com/cloudflare/cloudflared).\n\n\u003e [!NOTE]\n\u003e This Docker image is **not** an official Cloudflare product.\n\nThe aim is to support multiple architectures.  \nThe public image currently supports:\n\n| Docker target  | Also known as | Notes                                                                                                         |\n|----------------|---------------|---------------------------------------------------------------------------------------------------------------|\n| `linux/amd64`  | `x86_64`      | Majority of modern PCs and servers.                                                                           |\n| `linux/386`    | `x86`         | 32-bit Intel/AMD CPUs. Typically really old computer hardware. These images are **untested**.                 |\n| `linux/arm64`  | `aarch64`     | 64-bit ARM hardware. For example Apple Silicon or Raspberry Pi 2/3/4 running a 64-bit OS.                     |\n| `linux/arm/v7` | `armhf`       | 32-bit ARM hardware. For example most Raspberry Pi models running Raspberry Pi OS.                            |\n| `linux/arm/v6` | `armel`       | Older 32-bit ARM hardware. Mostly Raspberry Pi 1/0/0W but there may be others.                                |\n| `linux/s390x`  | `IBM Z`       | [Linux on IBM Z](https://en.wikipedia.org/wiki/Linux_on_IBM_Z) for IBM mainframes, most notably [IBM Cloud](https://www.ibm.com/uk-en/cloud). |\n| `linux/ppc64le` | `ppc64el`     | Tested on [IBM Cloud Power Systems Virtual Server](https://www.ibm.com/uk-en/products/power-virtual-server)\n| `linux/riscv64` | `riscv64`     | CPUs from the future. Tested on [Scaleway Labs RV1](https://labs.scaleway.com/en/em-rv1/).\n\nThe public image corresponding to this Dockerfile is `erisamoe/cloudflared` and should work in mostly the same way as the [official image](https://hub.docker.com/r/cloudflare/cloudflared).\n\n\u003e [!NOTE]\n\u003e If you have any problems or questions with this image, either open a GitHub Issue or join the [Cloudflare Developers Discord Server](https://discord.gg/cloudflaredev) and ping `@Erisa` in `#general-help`, `#general-discussions` or `#off-topic` with your question.\n\n## Cloudflare Tunnel\n\n### Dashboard setup (Recommended)\nA  `docker-compose` example with a Zero Trust dashboard setup would be:\n\n``` yml\nservices:\n  cloudflared:\n    image: erisamoe/cloudflared\n    restart: unless-stopped\n    command: tunnel run\n    environment:\n      - TUNNEL_TOKEN=${TUNNEL_TOKEN}\n    depends_on:\n      - mycontainer\n```\n\nWhere an `.env` file in the same directory contains `TUNNEL_TOKEN=` set to the token given by the Zero Trust dashboard.\nFor more information see [the Cloudflare Blog](https://blog.cloudflare.com/ridiculously-easy-to-use-tunnels/)\n\n\u003e **Note** A previous version of this README recommended using `--token ${CLOUDFLARED_TOKEN}`, which is a less secure way of handing off the token. Setting the `TUNNEL_TOKEN` variable seems to be a better way of approaching this. \n\n### Config file setup (Named tunnel)\nAn example for a setup with a local config would be:\n```yml\nservices:\n  cloudflared:\n    image: erisamoe/cloudflared\n    restart: unless-stopped # or 'always' to survive container stops\n    volumes:\n      - ./cloudflared:/etc/cloudflared\n    command: tunnel run mytunnel\n    depends_on:\n      - mycontainer\n```\n\nWhere `./cloudflared` is a folder containing the `.json` or `.pem` credentials and `config.yml` for a tunnel.\n\nAn example `config.yml` might look like:\n```yml\ntunnel: uuid-for-tunnel\n#Optional\n#credentials-file: /etc/cloudflared/uuid-for-tunnel.json\n\ningress:\n  - hostname: mywebsite.com\n    service: http://nginx:80\n  - service: http_status:404\n```\nFor more information, refer to the [Cloudflare Documentation](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/tunnel-guide/#4-create-a-configuration-file)\n\nTo acquire a certificate, you'll need to use the `login` command.  \nThis will spit out `/.cloudflared/cert.pem`, rather than `/etc/cloudflared`.\n\nAs such, usage would be something like:  \n```bash\ndocker run -v $PWD/cloudflared:/.cloudflared erisamoe/cloudflared login\n```\nto create a folder called `cloudflared` in your current dir and deposit a `cert.pem` into it.  \n\nTo create a tunnel, you can then do:\n```bash\ndocker run -v $PWD/cloudflared:/etc/cloudflared erisamoe/cloudflared tunnel create mytunnel\n```\n\nWhich gives you a UUID for the new tunnel and and a `.json` credentials file corresponding to it.\n\nAnd now you can either use the above compose example or for testing simply just:  \n```bash\ndocker run -v $PWD/cloudflared:/etc/cloudflared erisamoe/cloudflared --hostname test.example.com --name mytunnel --hello-world\n```\nWhich will start up a \"Hello world\" test tunnel on `https://test.example.com`.\n\n## DNS-over-HTTPS\nWhile not the original intent behind the image, you can also use this to host a DNS resolver that speaks to a DNS-over-HTTPS backend.  \nFor example:\n```\ndocker run -d -p 53:53/udp --name my-dns-forwarder erisamoe/cloudflared proxy-dns --address 0.0.0.0\n```\nWould create a container called `my-dns-forwarder` that responds to DNS requests on your host.  \nKeep in mind when using this on a public server (e.g. VPS) it will by default listen on all interfaces, making you a public DNS resolver on the internet.  \nYou can sidestep this by changing the `-p` to instead be `-p 127.0.0.01:53:53/udp` to listen on localhost instead.\n\nYou can also add upstreams with `--upstream https://dns.example.com` for example. By default, Cloudflare DNS is used.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferisa%2Fcloudflared-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferisa%2Fcloudflared-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferisa%2Fcloudflared-docker/lists"}