7 Commits

Author SHA1 Message Date
f1f3168532 Update Wrangler for Cloudflare deploys 2026-04-15 14:48:08 +08:00
a515cc4223 Remove hardcoded CUSTOM_DOMAIN from config 2026-04-15 14:06:14 +08:00
d4b63ea38f Add Wrangler worker entrypoint 2026-04-15 14:05:10 +08:00
730eb2e021 Align dependency metadata with Yarn 4 builds 2026-04-15 14:04:30 +08:00
ciiiii
5f0b9200de Update format 2025-11-15 21:32:44 -07:00
ciiiii
c7ca5c64f9 Update README 2025-11-15 21:31:20 -07:00
Yisheng Cai
c595a14166 Redirect for index route (#121)
Some checks failed
Deploy to Cloudflare Workers / Build & Deploy (push) Has been cancelled
2025-06-01 16:13:44 +08:00
7 changed files with 5618 additions and 1463 deletions

1
.yarnrc.yml Normal file
View File

@@ -0,0 +1 @@
nodeLinker: node-modules

View File

@@ -1,5 +1,14 @@
# cloudflare-docker-proxy # cloudflare-docker-proxy
> ### ⚠️ **Important Notice**
> <span style="color:#d73a49;font-weight:bold">Docker Hub is rate-limiting Cloudflare Worker IPs, causing frequent <code>429</code> errors.</span>
> <span style="color:#d73a49;font-weight:bold">This project is currently NOT recommended for production use.</span>
Due to the current instability, this project is not recommended for production use.
We will provide updates as soon as more information becomes available.
![deploy](https://github.com/ciiiii/cloudflare-docker-proxy/actions/workflows/deploy.yaml/badge.svg) ![deploy](https://github.com/ciiiii/cloudflare-docker-proxy/actions/workflows/deploy.yaml/badge.svg)
[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/ciiiii/cloudflare-docker-proxy) [![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/ciiiii/cloudflare-docker-proxy)

3023
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -4,18 +4,18 @@
"description": "", "description": "",
"version": "1.0.0", "version": "1.0.0",
"author": "ciiiii <allen.cccccnm@gmail.com>", "author": "ciiiii <allen.cccccnm@gmail.com>",
"dependencies": {},
"devDependencies": { "devDependencies": {
"prettier": "^2.4.1", "prettier": "^2.4.1",
"webpack": "^5.65.0", "webpack": "^5.65.0",
"webpack-cli": "^4.9.1", "webpack-cli": "^4.9.1",
"wrangler": "^3.36.0" "wrangler": "^4.82.2"
}, },
"scripts": { "scripts": {
"format": "prettier --write '**/*.{js,css,json,md}'", "format": "prettier --write '**/*.{js,css,json,md}'",
"build": "webpack", "build": "webpack",
"dev": "wrangler dev src/index.js --env dev" "dev": "npx wrangler dev src/index.js --env dev"
}, },
"license": "MIT", "license": "MIT",
"main": "src/index.js" "main": "src/index.js",
"packageManager": "yarn@4.3.0+sha512.1606bef7c84bc7d83b8576063de2fd08f7d69f9939015bed800f9585a002390268ecc777e9feeba7e26e9556aef6beaad4806968db2182ab5dd3e955ab3b9a0b"
} }

View File

@@ -32,6 +32,9 @@ function routeByHosts(host) {
async function handleRequest(request) { async function handleRequest(request) {
const url = new URL(request.url); const url = new URL(request.url);
if (url.pathname == "/") {
return Response.redirect(url.protocol + "//" + url.host + "/v2/", 301);
}
const upstream = routeByHosts(url.hostname); const upstream = routeByHosts(url.hostname);
if (upstream === "") { if (upstream === "") {
return new Response( return new Response(
@@ -154,7 +157,7 @@ async function fetchToken(wwwAuthenticate, scope, authorization) {
} }
function responseUnauthorized(url) { function responseUnauthorized(url) {
const headers = new(Headers); const headers = new Headers();
if (MODE == "debug") { if (MODE == "debug") {
headers.set( headers.set(
"Www-Authenticate", "Www-Authenticate",

View File

@@ -1,18 +1,20 @@
name = "cloudflare-docker-proxy" name = "cloudflare-docker-proxy"
compatibility_date = "2023-12-01" compatibility_date = "2023-12-01"
main = "src/index.js"
[vars]
MODE = "production"
TARGET_UPSTREAM = ""
CUSTOM_DOMAIN = "example.com"
[dev] [dev]
ip = "0.0.0.0" ip = "0.0.0.0"
port = 8787 port = 8787
local_protocol = "http" local_protocol = "http"
[env.vars]
CUSTOM_DOMAIN = "libcuda.so"
[env.dev.vars] [env.dev.vars]
MODE = "debug" MODE = "debug"
TARGET_UPSTREAM = "https://registry-1.docker.io" TARGET_UPSTREAM = "https://registry-1.docker.io"
CUSTOM_DOMAIN = "exmaple.com"
[env.production] [env.production]
name = "cloudflare-docker-proxy" name = "cloudflare-docker-proxy"
@@ -29,6 +31,7 @@ name = "cloudflare-docker-proxy"
[env.production.vars] [env.production.vars]
MODE = "production" MODE = "production"
TARGET_UPSTREAM = "" TARGET_UPSTREAM = ""
CUSTOM_DOMAIN = "example.com"
[env.staging] [env.staging]
name = "cloudflare-docker-proxy-staging" name = "cloudflare-docker-proxy-staging"
@@ -37,3 +40,4 @@ name = "cloudflare-docker-proxy-staging"
[env.staging.vars] [env.staging.vars]
MODE = "staging" MODE = "staging"
TARGET_UPSTREAM = "" TARGET_UPSTREAM = ""
CUSTOM_DOMAIN = "example.com"

4023
yarn.lock

File diff suppressed because it is too large Load Diff