{"id":15693467,"url":"https://github.com/jim60105/worker-img_router","last_synced_at":"2025-05-07T23:45:22.225Z","repository":{"id":41267197,"uuid":"335381114","full_name":"jim60105/worker-img_router","owner":"jim60105","description":"A Cloudflare Worker used as abbreviated routing for my private img domain. (Cloudflare Worker)","archived":false,"fork":false,"pushed_at":"2024-10-07T08:26:37.000Z","size":408,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-07T23:45:19.206Z","etag":null,"topics":["cloudflare","cloudflare-worker","cloudflare-workers","nextcloud","routing","webpack5"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":false,"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/jim60105.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE_MIT","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}},"created_at":"2021-02-02T18:12:27.000Z","updated_at":"2024-10-07T08:26:41.000Z","dependencies_parsed_at":"2024-01-03T19:31:20.587Z","dependency_job_id":"279c1f4c-5dc6-417b-83b9-061b86c4157a","html_url":"https://github.com/jim60105/worker-img_router","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jim60105%2Fworker-img_router","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jim60105%2Fworker-img_router/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jim60105%2Fworker-img_router/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jim60105%2Fworker-img_router/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jim60105","download_url":"https://codeload.github.com/jim60105/worker-img_router/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252973617,"owners_count":21834105,"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","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":["cloudflare","cloudflare-worker","cloudflare-workers","nextcloud","routing","webpack5"],"created_at":"2024-10-03T18:43:55.493Z","updated_at":"2025-05-07T23:45:22.201Z","avatar_url":"https://github.com/jim60105.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cloudflare worker Img Router\n\n\u003e 這是從屬於 [jim60105/docker-Nextcloud](https://github.com/jim60105/docker-Nextcloud) 的Cloudflare Worker CD方案\n\n## 說明\n\n此Worker目的是縮短網址，將\\\n`img.domain.com/${pathname}` \\\nroute至\\\n`nextcloud.domain.com/index.php/apps/sharingpath/${NEXTCLOUDUSERNAME}/Public/${pathname}`\\\n詳見[\\[Docker\\] Nextcloud自有雲建置 img圖片縮址](https://blog.maki0419.com/2020/07/docker-nextcloud.html#img%E5%9C%96%E7%89%87%E7%B8%AE%E5%9D%80)\n\n在push至repo後，使用Github Action部屬至Cloudflare，並將所有參數以Github Secrets管理\n\n## 設定\n\n1. 參閱[Worker手冊](https://developers.cloudflare.com/workers/learning/getting-started)，直至可以建立一般的線上worker\\\n(Wrangler cli為非必要，但這可以讓你先在本機build過，且tail指令可以接上deployed worker收log)\n1. 在github repo中設定以下secrets\n   1. CF_ACCOUNT_ID: 由你的Cloudflare Account Home→Workers的右側找到，[或是從wangler cli取得](https://developers.cloudflare.com/workers/learning/getting-started#6-preview-your-project)\n   1. CF_API_TOKEN: 由你的Cloudflare Profile→API Token→Create Token產生，[參照說明](https://developers.cloudflare.com/api/tokens/create/)\n   1. NEXTCLOUDUSERNAME: Nextcloud的用戶名稱\n   1. SOURCEHOST: 短網域，例如 `img.domain.com`\n   1. TARGETHOST: Nextcloud網域，例如 `nextcloud.domain.com`\n   1. HOTLINK_IMG: Hot-link Protection將會重導向至此圖片網址，從盜鏈瀏覧時會看到這張圖片。預設值是[這一張圖](https://ipfs.io/ipfs/QmVWLdNmY2UzDgoKXjmVeyYxyFUHNdDFbC3eDkfLCXEdFu?filename=hotlink-protection_default.jpg)\n   1. HOTLINK_ALLOWEDHOST: 允許圖片顯示的流量來源hostname，可填入多個RegExp，以;分隔。例如`.*\\.domain\\.com;.*\\.secdomain.com`。預設為不啟動Hot-link Protection(填空值)\n1. git push to master branch使Action啟動，建立worker\n1. 至Cloudflare Worker設定route，將 `img.domain.com/*` 對應至此`img_route` worker\n\n## 防盜鏈功能\n\n可以設定重導向由外站來的圖片查詢，意即別人將你的圖片直接嵌入其它網站使用時，都會連到同一張警示圖片。\\\n其主要目的是保護圖片站台流量，降低盜鏈。\\\n請設定上述的`HOTLINK_IMG`、`HOTLINK_ALLOWEDHOST`兩個環境變數。\\\n將`HOTLINK_ALLOWEDHOST`留空值則不做任何阻擋。\n\n對於不阻擋的圖片，請在路徑(pathname)中加入`preview`關鍵字。\\\n請用在og:image，使預覧圖片能正常被外站抓取，例:\n\n```text\nhttps://img.domain.com/blog/preview.png\nhttps://img.domain.com/blog/preview/myimage.png\n```\n\n## 隨機圖片功能\n\n如果收到任何檔名為random、附檔名為圖片的request，worker會取得同目錄下的random.json，並從中隨機選擇一張相同格式的圖片返回\\\n這功能設計來使用在論壇簽名檔圖片，每次重整就會不同\n\n例: 訪問 `img.domain.com/random.png`，則會查詢 `img.domain.com/random.json`，從其中的png之下隨機選一張圖片返回\\\njson檔格式範例[在此](template/random.json)，請使用相對路徑\n\n\u003e random.json的安全性:\\\n\u003e img網域只開放了圖片相關的附檔名，json檔並不能被直接訪問\n\n## 參考資料\n\n### Set Up Github Actions: Deploy to Cloudflare Worker\n\n\u003chttps://www.serviops.ca/a-full-ci-cd-pipeline-for-cloudflare-workers-with-github-actions/\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjim60105%2Fworker-img_router","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjim60105%2Fworker-img_router","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjim60105%2Fworker-img_router/lists"}