91 KiB
面向開發者資源的超高效能、安全、一體化加速引擎,其效能顯著優於傳統解決方案,為程式碼儲存庫、模型和資料集中心、軟體包註冊表、容器註冊表、AI 推理供應商等提供統一、高效的加速。
技術深度解析文章已發布:《深入剖析 Xget:一個高效能、多協定、高安全性的開發者資源加速引擎》。
Xget 已受邀入駐 GitCode 平台,並被認證為 G-Star 畢業專案;同時也獲得多位技術博主自發推薦,包括阮一峰、GitHubDaily、魚 C、玄離 199 等。在此感謝 GitCode 的肯定,也感謝每一位分享、推薦與實際使用 Xget 的朋友。
🎯 快速開始
預部署實例(不保證可靠性):xget.xi-xu.me
URL 轉換器:xuc.xi-xu.me - 一鍵轉換任意支援平台的 URL 為 Xget 的加速格式
Agent Skills:skills/xget/ - 可作為獨立的 /xget 目錄直接安裝到 skills 目錄中
🌟 核心優勢 - 為什麼選擇 Xget?
⚡ 極速效能 - 突破傳統加速器瓶頸
- ⚡ 毫秒級回應:Cloudflare 全球 330+ 邊緣節點,平均回應時間 < 50ms
- 🌐 HTTP/3 極速協定:啟用最新 HTTP/3 協定,連線延遲降低 40%,傳輸速度提升 30%
- 📦 智慧多重壓縮:gzip、deflate、brotli 三重壓縮演算法,傳輸效率提升 60%
- 🔗 零延遲預連線:連線預熱和保持活躍,消除握手開銷,實現秒級回應
- ⚡ 平行分片下載:完整支援 HTTP Range 請求,多執行緒下載速度倍增
- 🎯 智慧路由最佳化:自動選擇最佳傳輸路徑,避開網路壅塞節點
🌐 多平台深度整合
- 一站式多平台支援:統一支援各種開發場景中的主流平台
- 智慧識別與轉換:自動識別平台前綴並轉換為目標平台的正確 URL 結構
- 一致的加速體驗:無論檔案類型或來源,均可享受統一且穩定的極速下載體驗
🔒 企業級安全保障
- 多層安全標頭:
Strict-Transport-Security:強制 HTTPS 傳輸,預防中間人攻擊X-Frame-Options: DENY:防止點擊劫持攻擊X-XSS-Protection:內建 XSS 防護機制Content-Security-Policy:嚴格的內容安全策略Referrer-Policy:控制參照來源資訊洩露
- 請求驗證機制:
- HTTP 方法白名單:常規請求限制為 GET/HEAD,Git 操作動態允許 POST
- 路徑長度限制:防止超長 URL 攻擊(最大 2048 字元)
- 輸入清理:防止路徑遍歷和注入攻擊
- 逾時保護:30 秒請求逾時,防止資源耗盡和惡意請求
🚀 現代架構與可靠性
- 智慧重試機制:
- 最大 3 次重試,線性延遲策略(1000ms × 重試次數)
- 自動錯誤恢復,提高下載成功率
- 逾時檢測和中斷處理
- 高效快取策略:
- 1800 秒(30 分鐘)預設快取時長,顯著減少原始伺服器壓力
- Git 操作跳過快取,確保即時性
- 基於 Cloudflare Cache API 的邊緣快取
- 效能監控系統:
- 內建
PerformanceMonitor類別,即時追蹤請求各階段耗時 - 透過
X-Performance-Metrics回應標頭提供詳細效能數據 - 支援快取命中率統計和最佳化建議
- 內建
🎯 Git 協定完全相容
- 智慧協定檢測:
- 自動識別 Git 特定端點(
/info/refs、/git-upload-pack、/git-receive-pack) - 檢測 Git 用戶端 User-Agent 模式
- 支援
service=git-upload-pack等查詢參數
- 自動識別 Git 特定端點(
- 完整操作支援:
git clone:完整儲存庫克隆,支援淺克隆和分支指定git push:程式碼推送和分支管理git pull/fetch:增量更新和遠端同步git submodule:子模組遞迴克隆
- 協定最佳化:
- 保持 Git 專用請求標頭和驗證資訊
- 智慧 User-Agent 處理(預設
git/2.34.1) - 支援 Git LFS 大檔案傳輸
📱 生態系統整合
- 專用瀏覽器擴充功能:Xget Now 提供無縫體驗
- 自動 URL 轉址,無需手動修改 URL
- 支援自訂 Xget 實例網域
- 多平台偏好設定和黑白名單管理
- 本地處理,確保隱私安全
- 下載工具相容性:完美支援 wget、cURL、aria2、IDM 等主流下載工具
- CI/CD 整合:可直接在 GitHub Actions、GitLab CI 等環境中使用
🏗️ 系統架構
請求處理流程
graph TD
Request[使用者請求 / User-Agent] --> Identify{識別平台}
Identify -->|無效| Error[返回錯誤]
Identify -->|有效| Transform[轉換路徑]
Transform --> CheckProtocol{檢查協定}
CheckProtocol -->|Git| GitHandler[Git 協定適配器]
CheckProtocol -->|Docker| DockerHandler[Docker 協定適配器]
CheckProtocol -->|AI| AIHandler[AI 推理適配器]
CheckProtocol -->|標準| StdHandler[標準適配器]
GitHandler --> Upstream[獲取上游]
DockerHandler --> Upstream
AIHandler --> Upstream
StdHandler --> CacheCheck{檢查快取}
CacheCheck -->|命中| ReturnCache[返回快取回應]
CacheCheck -->|未命中| Upstream
Upstream -->|成功| ProcessResponse[處理回應]
Upstream -->|失敗| Retry{重試?}
Retry -->|是| Wait["等待 (退避)"] --> Upstream
Retry -->|否| Error
ProcessResponse --> Finalize[添加標頭並返回]
Finalize --> Response[回應]
組件架構
classDiagram
class Worker {
+handleRequest(request)
}
class Config {
+PLATFORMS
+transformPath()
}
class Validation {
+validateRequest()
+isDockerRequest()
}
class GitProtocol {
+configureGitHeaders()
+isGitRequest()
}
class DockerProtocol {
+handleDockerAuth()
+fetchToken()
}
class AIProtocol {
+configureAIHeaders()
}
class Security {
+addSecurityHeaders()
}
class Performance {
+monitor()
}
Worker --> Config
Worker --> Validation
Worker --> GitProtocol
Worker --> DockerProtocol
Worker --> AIProtocol
Worker --> Security
Worker --> Performance
📖 URL 轉換規則
使用預部署實例 xget.xi-xu.me 或您自己部署的實例,只需簡單替換網域並新增平台前綴:
轉換格式
| 平台 | 平台前綴 | 原始 URL 格式 | 加速 URL 格式 |
|---|---|---|---|
| GitHub | gh |
https://github.com/... |
https://xget.xi-xu.me/gh/... |
| GitHub Gist | gist |
https://gist.github.com/... |
https://xget.xi-xu.me/gist/... |
| GitLab | gl |
https://gitlab.com/... |
https://xget.xi-xu.me/gl/... |
| Gitea | gitea |
https://gitea.com/... |
https://xget.xi-xu.me/gitea/... |
| Codeberg | codeberg |
https://codeberg.org/... |
https://xget.xi-xu.me/codeberg/... |
| SourceForge | sf |
https://sourceforge.net/... |
https://xget.xi-xu.me/sf/... |
| AOSP | aosp |
https://android.googlesource.com/... |
https://xget.xi-xu.me/aosp/... |
| Hugging Face | hf |
https://huggingface.co/... |
https://xget.xi-xu.me/hf/... |
| Civitai | civitai |
https://civitai.com/... |
https://xget.xi-xu.me/civitai/... |
| npm | npm |
https://registry.npmjs.org/... |
https://xget.xi-xu.me/npm/... |
| PyPI | pypi |
https://pypi.org/... |
https://xget.xi-xu.me/pypi/... |
| conda | conda |
https://repo.anaconda.com/... 和 https://conda.anaconda.org/... |
https://xget.xi-xu.me/conda/... 和 https://xget.xi-xu.me/conda/community/... |
| Maven | maven |
https://repo1.maven.org/... |
https://xget.xi-xu.me/maven/... |
| Apache | apache |
https://downloads.apache.org/... |
https://xget.xi-xu.me/apache/... |
| Gradle | gradle |
https://plugins.gradle.org/... |
https://xget.xi-xu.me/gradle/... |
| Homebrew | homebrew |
https://github.com/Homebrew/... |
https://xget.xi-xu.me/homebrew/... |
| RubyGems | rubygems |
https://rubygems.org/... |
https://xget.xi-xu.me/rubygems/... |
| CRAN | cran |
https://cran.r-project.org/... |
https://xget.xi-xu.me/cran/... |
| CPAN | cpan |
https://www.cpan.org/... |
https://xget.xi-xu.me/cpan/... |
| CTAN | ctan |
https://tug.ctan.org/... |
https://xget.xi-xu.me/ctan/... |
| Go 模組 | golang |
https://proxy.golang.org/... |
https://xget.xi-xu.me/golang/... |
| NuGet | nuget |
https://api.nuget.org/... |
https://xget.xi-xu.me/nuget/... |
| Rust Crates | crates |
https://crates.io/... |
https://xget.xi-xu.me/crates/... |
| Packagist | packagist |
https://repo.packagist.org/... |
https://xget.xi-xu.me/packagist/... |
| Flathub | flathub |
https://dl.flathub.org/... |
https://xget.xi-xu.me/flathub/... |
| Debian | debian |
https://deb.debian.org/... |
https://xget.xi-xu.me/debian/... |
| Ubuntu | ubuntu |
https://archive.ubuntu.com/... |
https://xget.xi-xu.me/ubuntu/... |
| Fedora | fedora |
https://dl.fedoraproject.org/... |
https://xget.xi-xu.me/fedora/... |
| Rocky Linux | rocky |
https://download.rockylinux.org/... |
https://xget.xi-xu.me/rocky/... |
| openSUSE | opensuse |
https://download.opensuse.org/... |
https://xget.xi-xu.me/opensuse/... |
| Arch Linux | arch |
https://geo.mirror.pkgbuild.com/... |
https://xget.xi-xu.me/arch/... |
| arXiv | arxiv |
https://arxiv.org/... |
https://xget.xi-xu.me/arxiv/... |
| F-Droid | fdroid |
https://f-droid.org/... |
https://xget.xi-xu.me/fdroid/... |
| Jenkins 外掛程式 | jenkins |
https://updates.jenkins.io/... |
https://xget.xi-xu.me/jenkins/... |
| 容器註冊表 | cr |
見容器註冊表 | 見容器註冊表 |
| AI 推理供應商 | ip |
見 AI 推理供應商 | 見 AI 推理供應商 |
各平台轉換範例
GitHub
# 原始 URL
https://github.com/microsoft/vscode/archive/refs/heads/main.zip
# 轉換後(新增 gh 前綴)
https://xget.xi-xu.me/gh/microsoft/vscode/archive/refs/heads/main.zip
GitHub Gist
# 原始 URL
https://gist.github.com/xixu-me/e2ea9db6b1f143892495f796fef18631/raw/3b8807172ee492d0da3a7e370b0fb88fc97b53e6/Free-ChatGPT-Paid-Plan.md
# 轉換後(新增 gist 前綴)
https://xget.xi-xu.me/gist/xixu-me/e2ea9db6b1f143892495f796fef18631/raw/3b8807172ee492d0da3a7e370b0fb88fc97b53e6/Free-ChatGPT-Paid-Plan.md
GitLab
# 原始 URL
https://gitlab.com/gitlab-org/gitlab/-/archive/master/gitlab-master.zip
# 轉換後(新增 gl 前綴)
https://xget.xi-xu.me/gl/gitlab-org/gitlab/-/archive/master/gitlab-master.zip
Gitea
# 原始 URL
https://gitea.com/gitea/gitea/archive/master.zip
# 轉換後(新增 gitea 前綴)
https://xget.xi-xu.me/gitea/gitea/gitea/archive/master.zip
Codeberg
# 原始 URL
https://codeberg.org/forgejo/forgejo/archive/forgejo.zip
# 轉換後(新增 codeberg 前綴)
https://xget.xi-xu.me/codeberg/forgejo/forgejo/archive/forgejo.zip
SourceForge
# 原始 URL
https://sourceforge.net/projects/sevenzip/files/7-Zip/23.01/7z2301-x64.exe/download
# 轉換後(新增 sf 前綴)
https://xget.xi-xu.me/sf/projects/sevenzip/files/7-Zip/23.01/7z2301-x64.exe/download
AOSP (Android 開源專案)
# AOSP 專案原始 URL
https://android.googlesource.com/platform/frameworks/base
# 轉換後(新增 aosp 前綴)
https://xget.xi-xu.me/aosp/platform/frameworks/base
# AOSP 裝置樹原始 URL
https://android.googlesource.com/device/google/pixel
# 轉換後(新增 aosp 前綴)
https://xget.xi-xu.me/aosp/device/google/pixel
Hugging Face
# 模型檔案原始 URL
https://huggingface.co/microsoft/DialoGPT-medium/resolve/main/pytorch_model.bin
# 轉換後(新增 hf 前綴)
https://xget.xi-xu.me/hf/microsoft/DialoGPT-medium/resolve/main/pytorch_model.bin
# 資料集檔案原始 URL
https://huggingface.co/datasets/rajpurkar/squad/resolve/main/plain_text/train-00000-of-00001.parquet
# 轉換後(新增 hf 前綴)
https://xget.xi-xu.me/hf/datasets/rajpurkar/squad/resolve/main/plain_text/train-00000-of-00001.parquet
Civitai
# AI 模型下載原始 URL
https://civitai.com/api/download/models/128713
# 轉換後(新增 civitai 前綴)
https://xget.xi-xu.me/civitai/api/download/models/128713
# 模型 API 原始 URL
https://civitai.com/api/v1/models/7240
# 轉換後(新增 civitai 前綴)
https://xget.xi-xu.me/civitai/api/v1/models/7240
# 模型版本 API 原始 URL
https://civitai.com/api/v1/model-versions/128713
# 轉換後(新增 civitai 前綴)
https://xget.xi-xu.me/civitai/api/v1/model-versions/128713
npm
# 軟體包檔案原始 URL
https://registry.npmjs.org/react/-/react-18.2.0.tgz
# 轉換後(新增 npm 前綴)
https://xget.xi-xu.me/npm/react/-/react-18.2.0.tgz
# 軟體包元資料原始 URL
https://registry.npmjs.org/lodash
# 轉換後(新增 npm 前綴)
https://xget.xi-xu.me/npm/lodash
PyPI
# Python 軟體包檔案原始 URL
https://pypi.org/packages/source/r/requests/requests-2.31.0.tar.gz
# 轉換後(新增 pypi 前綴)
https://xget.xi-xu.me/pypi/packages/source/r/requests/requests-2.31.0.tar.gz
# Wheel 檔案原始 URL
https://pypi.org/packages/py3/r/requests/requests-2.31.0-py3-none-any.whl
# 轉換後(新增 pypi 前綴)
https://xget.xi-xu.me/pypi/packages/py3/r/requests/requests-2.31.0-py3-none-any.whl
conda
# 預設頻道軟體包檔案原始 URL
https://repo.anaconda.com/pkgs/main/linux-64/numpy-1.24.3-py311h08b1b3b_1.conda
# 轉換後(新增 conda 前綴)
https://xget.xi-xu.me/conda/pkgs/main/linux-64/numpy-1.24.3-py311h08b1b3b_1.conda
# 社群頻道元資料原始 URL
https://conda.anaconda.org/conda-forge/linux-64/repodata.json
# 轉換後(新增 conda/community 前綴)
https://xget.xi-xu.me/conda/community/conda-forge/linux-64/repodata.json
Maven
# Maven 中央儲存庫 JAR 檔案原始 URL
https://repo1.maven.org/maven2/org/springframework/spring-core/5.3.21/spring-core-5.3.21.jar
# 轉換後(新增 maven 前綴)
https://xget.xi-xu.me/maven/maven2/org/springframework/spring-core/5.3.21/spring-core-5.3.21.jar
# Maven 元資料原始 URL
https://repo1.maven.org/maven2/org/apache/commons/commons-lang3/maven-metadata.xml
# 轉換後(新增 maven 前綴)
https://xget.xi-xu.me/maven/maven2/org/apache/commons/commons-lang3/maven-metadata.xml
Apache 軟體下載
# Apache 軟體下載原始 URL
https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
# 轉換後(新增 apache 前綴)
https://xget.xi-xu.me/apache/kafka/3.6.1/kafka_2.13-3.6.1.tgz
# Apache Maven 下載原始 URL
https://downloads.apache.org/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz
# 轉換後(新增 apache 前綴)
https://xget.xi-xu.me/apache/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz
# Apache Spark 下載原始 URL
https://downloads.apache.org/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz
# 轉換後(新增 apache 前綴)
https://xget.xi-xu.me/apache/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz
Gradle
# Gradle 外掛程式入口網站 JAR 檔案原始 URL
https://plugins.gradle.org/m2/org/gradle/gradle-hello-world-plugin/0.2/gradle-hello-world-plugin-0.2.jar
# 轉換後(新增 gradle 前綴)
https://xget.xi-xu.me/gradle/m2/org/gradle/gradle-hello-world-plugin/0.2/gradle-hello-world-plugin-0.2.jar
# Gradle 外掛程式元資料原始 URL
https://plugins.gradle.org/m2/com/github/ben-manes/gradle-versions-plugin/0.51.0/gradle-versions-plugin-0.51.0.module
# 轉換後(新增 gradle 前綴)
https://xget.xi-xu.me/gradle/m2/com/github/ben-manes/gradle-versions-plugin/0.51.0/gradle-versions-plugin-0.51.0.module
Homebrew
# Homebrew 公式儲存庫原始 URL
https://github.com/Homebrew/homebrew-core/raw/HEAD/Formula/g/git.rb
# 轉換後(新增 homebrew 前綴)
https://xget.xi-xu.me/homebrew/homebrew-core/raw/HEAD/Formula/g/git.rb
# Homebrew API 原始 URL
https://formulae.brew.sh/api/formula/git.json
# 轉換後(新增 homebrew/api 前綴)
https://xget.xi-xu.me/homebrew/api/formula/git.json
# Homebrew Bottles 原始 URL
https://ghcr.io/v2/homebrew/core/git/manifests/2.39.0
# 轉換後(新增 homebrew/bottles 前綴)
https://xget.xi-xu.me/homebrew/bottles/v2/homebrew/core/git/manifests/2.39.0
RubyGems
# RubyGems 軟體包檔案原始 URL
https://rubygems.org/gems/rails-7.0.4.gem
# 轉換後(新增 rubygems 前綴)
https://xget.xi-xu.me/rubygems/gems/rails-7.0.4.gem
# RubyGems API 原始 URL
https://rubygems.org/api/v1/gems/nokogiri.json
# 轉換後(新增 rubygems 前綴)
https://xget.xi-xu.me/rubygems/api/v1/gems/nokogiri.json
CRAN
# CRAN 軟體包檔案原始 URL
https://cran.r-project.org/src/contrib/ggplot2_3.5.2.tar.gz
# 轉換後(新增 cran 前綴)
https://xget.xi-xu.me/cran/src/contrib/ggplot2_3.5.2.tar.gz
# CRAN 軟體包元資料原始 URL
https://cran.r-project.org/web/packages/dplyr/DESCRIPTION
# 轉換後(新增 cran 前綴)
https://xget.xi-xu.me/cran/web/packages/dplyr/DESCRIPTION
CPAN (Perl 軟體包管理)
# CPAN 模組原始 URL
https://www.cpan.org/modules/by-module/DBI/DBI-1.643.tar.gz
# 轉換後(新增 cpan 前綴)
https://xget.xi-xu.me/cpan/modules/by-module/DBI/DBI-1.643.tar.gz
# CPAN 作者軟體包原始 URL
https://www.cpan.org/authors/id/T/TI/TIMB/DBI-1.643.tar.gz
# 轉換後(新增 cpan 前綴)
https://xget.xi-xu.me/cpan/authors/id/T/TI/TIMB/DBI-1.643.tar.gz
CTAN (TeX/LaTeX 軟體包管理)
# CTAN 軟體包檔案原始 URL
https://tug.ctan.org/tex-archive/macros/latex/contrib/beamer.zip
# 轉換後(新增 ctan 前綴)
https://xget.xi-xu.me/ctan/tex-archive/macros/latex/contrib/beamer.zip
# CTAN 字體檔案原始 URL
https://tug.ctan.org/tex-archive/fonts/cm/pk/ljfour/public/cm/dpi600/cmr10.pk
# 轉換後(新增 ctan 前綴)
https://xget.xi-xu.me/ctan/tex-archive/fonts/cm/pk/ljfour/public/cm/dpi600/cmr10.pk
Go 模組
# Go 模組代理原始 URL
https://proxy.golang.org/github.com/gin-gonic/gin/@v/v1.9.1.zip
# 轉換後(新增 golang 前綴)
https://xget.xi-xu.me/golang/github.com/gin-gonic/gin/@v/v1.9.1.zip
# Go 模組資訊原始 URL
https://proxy.golang.org/github.com/gorilla/mux/@v/list
# 轉換後(新增 golang 前綴)
https://xget.xi-xu.me/golang/github.com/gorilla/mux/@v/list
NuGet
# NuGet 軟體包下載原始 URL
https://api.nuget.org/v3-flatcontainer/newtonsoft.json/13.0.3/newtonsoft.json.13.0.3.nupkg
# 轉換後(新增 nuget 前綴)
https://xget.xi-xu.me/nuget/v3-flatcontainer/newtonsoft.json/13.0.3/newtonsoft.json.13.0.3.nupkg
# NuGet 軟體包元資料原始 URL
https://api.nuget.org/v3/registration5-semver1/microsoft.aspnetcore.app/index.json
# 轉換後(新增 nuget 前綴)
https://xget.xi-xu.me/nuget/v3/registration5-semver1/microsoft.aspnetcore.app/index.json
Rust Crates
# Crate 下載原始 URL
https://crates.io/api/v1/crates/serde/1.0.0/download
# 轉換後(新增 crates 前綴)
https://xget.xi-xu.me/crates/serde/1.0.0/download
# Crate 元資料原始 URL
https://crates.io/api/v1/crates/serde
# 轉換後(新增 crates 前綴)
https://xget.xi-xu.me/crates/serde
# Crate 搜尋原始 URL
https://crates.io/api/v1/crates?q=serde
# 轉換後(新增 crates 前綴)
https://xget.xi-xu.me/crates/?q=serde
Packagist
# Packagist 軟體包元資料原始 URL
https://repo.packagist.org/p2/symfony/console.json
# 轉換後(新增 packagist 前綴)
https://xget.xi-xu.me/packagist/p2/symfony/console.json
# Packagist 軟體包清單原始 URL
https://repo.packagist.org/packages/list.json
# 轉換後(新增 packagist 前綴)
https://xget.xi-xu.me/packagist/packages/list.json
Flathub
# Flathub 儲存庫原始 URL
https://dl.flathub.org/repo/summary
# 轉換後(新增 flathub 前綴)
https://xget.xi-xu.me/flathub/repo/summary
# Flathub 應用程式引用原始 URL
https://dl.flathub.org/repo/appstream/org.gnome.gedit.flatpakref
# 轉換後(新增 flathub 前綴)
https://xget.xi-xu.me/flathub/repo/appstream/org.gnome.gedit.flatpakref
Linux 發行版
# Debian 軟體包原始 URL
https://deb.debian.org/debian/pool/main/c/curl/curl_7.88.1-10+deb12u4_amd64.deb
# 轉換後(新增 debian 前綴)
https://xget.xi-xu.me/debian/debian/pool/main/c/curl/curl_7.88.1-10+deb12u4_amd64.deb
# Ubuntu 軟體包原始 URL
https://archive.ubuntu.com/ubuntu/pool/main/g/git/git_2.34.1-1ubuntu1.9_amd64.deb
# 轉換後(新增 ubuntu 前綴)
https://xget.xi-xu.me/ubuntu/ubuntu/pool/main/g/git/git_2.34.1-1ubuntu1.9_amd64.deb
# Fedora 軟體包原始 URL
https://dl.fedoraproject.org/pub/fedora/linux/releases/39/Everything/x86_64/os/Packages/n/nginx-1.24.0-1.fc39.x86_64.rpm
# 轉換後(新增 fedora 前綴)
https://xget.xi-xu.me/fedora/pub/fedora/linux/releases/39/Everything/x86_64/os/Packages/n/nginx-1.24.0-1.fc39.x86_64.rpm
# Rocky Linux 軟體包原始 URL
https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/Packages/b/bash-5.1.8-6.el9.x86_64.rpm
# 轉換後(新增 rocky 前綴)
https://xget.xi-xu.me/rocky/pub/rocky/9/BaseOS/x86_64/os/Packages/b/bash-5.1.8-6.el9.x86_64.rpm
# openSUSE 軟體包原始 URL
https://download.opensuse.org/distribution/leap/15.5/repo/oss/x86_64/vim-9.0.1572-150500.20.8.1.x86_64.rpm
# 轉換後(新增 opensuse 前綴)
https://xget.xi-xu.me/opensuse/distribution/leap/15.5/repo/oss/x86_64/vim-9.0.1572-150500.20.8.1.x86_64.rpm
# Arch Linux 軟體包原始 URL
https://geo.mirror.pkgbuild.com/core/os/x86_64/linux-6.6.10.arch1-1-x86_64.pkg.tar.zst
# 轉換後(新增 arch 前綴)
https://xget.xi-xu.me/arch/core/os/x86_64/linux-6.6.10.arch1-1-x86_64.pkg.tar.zst
arXiv
# arXiv 論文 PDF 原始 URL
https://arxiv.org/pdf/2301.07041.pdf
# 轉換後(新增 arxiv 前綴)
https://xget.xi-xu.me/arxiv/pdf/2301.07041.pdf
# arXiv 論文原始碼原始 URL
https://arxiv.org/e-print/2301.07041
# 轉換後(新增 arxiv 前綴)
https://xget.xi-xu.me/arxiv/e-print/2301.07041
F-Droid
# F-Droid 應用程式 APK 原始 URL
https://f-droid.org/repo/org.fdroid.fdroid_1016050.apk
# 轉換後(新增 fdroid 前綴)
https://xget.xi-xu.me/fdroid/repo/org.fdroid.fdroid_1016050.apk
# F-Droid 應用程式元資料原始 URL
https://f-droid.org/api/v1/packages/org.fdroid.fdroid
# 轉換後(新增 fdroid 前綴)
https://xget.xi-xu.me/fdroid/api/v1/packages/org.fdroid.fdroid
Jenkins 外掛程式
# Jenkins 更新中心原始 URL
https://updates.jenkins.io/update-center.json
# 轉換後(新增 jenkins 前綴)
https://xget.xi-xu.me/jenkins/update-center.json
# Jenkins 外掛程式下載原始 URL
https://updates.jenkins.io/download/plugins/maven-plugin/3.27/maven-plugin.hpi
# 轉換後(新增 jenkins 前綴)
https://xget.xi-xu.me/jenkins/download/plugins/maven-plugin/3.27/maven-plugin.hpi
容器註冊表
Xget 支援多個容器註冊表,使用 cr/[容器註冊表前綴] 格式:
| 容器註冊表 | 容器註冊表前綴 | 原始 URL 格式 | 加速 URL 格式 |
|---|---|---|---|
| Docker Hub | docker |
https://registry-1.docker.io/... |
https://xget.xi-xu.me/cr/docker/... |
| Quay.io | quay |
https://quay.io/... |
https://xget.xi-xu.me/cr/quay/... |
| Google 容器註冊表 | gcr |
https://gcr.io/... |
https://xget.xi-xu.me/cr/gcr/... |
| Microsoft 容器註冊表 | mcr |
https://mcr.microsoft.com/... |
https://xget.xi-xu.me/cr/mcr/... |
| Amazon Public ECR | ecr |
https://public.ecr.aws/... |
https://xget.xi-xu.me/cr/ecr/... |
| GitHub 容器註冊表 | ghcr |
https://ghcr.io/... |
https://xget.xi-xu.me/cr/ghcr/... |
| GitLab 容器註冊表 | gitlab |
https://registry.gitlab.com/... |
https://xget.xi-xu.me/cr/gitlab/... |
| Red Hat 註冊表 | redhat |
https://registry.redhat.io/... |
https://xget.xi-xu.me/cr/redhat/... |
| Oracle 容器註冊表 | oracle |
https://container-registry.oracle.com/... |
https://xget.xi-xu.me/cr/oracle/... |
| Cloudsmith | cloudsmith |
https://docker.cloudsmith.io/... |
https://xget.xi-xu.me/cr/cloudsmith/... |
| DigitalOcean 註冊表 | digitalocean |
https://registry.digitalocean.com/... |
https://xget.xi-xu.me/cr/digitalocean/... |
| VMware 註冊表 | vmware |
https://projects.registry.vmware.com/... |
https://xget.xi-xu.me/cr/vmware/... |
| Kubernetes 註冊表 | k8s |
https://registry.k8s.io/... |
https://xget.xi-xu.me/cr/k8s/... |
| Heroku 註冊表 | heroku |
https://registry.heroku.com/... |
https://xget.xi-xu.me/cr/heroku/... |
| SUSE 註冊表 | suse |
https://registry.suse.com/... |
https://xget.xi-xu.me/cr/suse/... |
| openSUSE 註冊表 | opensuse |
https://registry.opensuse.org/... |
https://xget.xi-xu.me/cr/opensuse/... |
| Gitpod 註冊表 | gitpod |
https://registry.gitpod.io/... |
https://xget.xi-xu.me/cr/gitpod/... |
# Docker Hub 原始 URL(官方鏡像)
https://registry-1.docker.io/v2/library/nginx/manifests/latest
# 轉換後(新增 cr/docker 前綴)
https://xget.xi-xu.me/cr/docker/v2/nginx/manifests/latest
# Docker Hub 原始 URL(使用者鏡像)
https://registry-1.docker.io/v2/nginxinc/nginx-unprivileged/manifests/latest
# 轉換後(新增 cr/docker 前綴)
https://xget.xi-xu.me/cr/docker/v2/nginxinc/nginx-unprivileged/manifests/latest
# GitHub 容器註冊表原始 URL
https://ghcr.io/v2/nginxinc/nginx-unprivileged/manifests/latest
# 轉換後(新增 cr/ghcr 前綴)
https://xget.xi-xu.me/cr/ghcr/v2/nginxinc/nginx-unprivileged/manifests/latest
# Google 容器註冊表原始 URL
https://gcr.io/v2/distroless/base/manifests/latest
# 轉換後(新增 cr/gcr 前綴)
https://xget.xi-xu.me/cr/gcr/v2/distroless/base/manifests/latest
應用場景見容器鏡像加速。
AI 推理供應商
Xget 支援眾多主流 AI 推理供應商的 API 加速,使用 ip/[AI 推理供應商前綴] 格式:
| AI 推理供應商 | AI 推理供應商前綴 | 原始 URL 格式 | 加速 URL 格式 |
|---|---|---|---|
| OpenAI | openai |
https://api.openai.com/... |
https://xget.xi-xu.me/ip/openai/... |
| Anthropic | anthropic |
https://api.anthropic.com/... |
https://xget.xi-xu.me/ip/anthropic/... |
| Gemini | gemini |
https://generativelanguage.googleapis.com/... |
https://xget.xi-xu.me/ip/gemini/... |
| Vertex AI | vertexai |
https://aiplatform.googleapis.com/... |
https://xget.xi-xu.me/ip/vertexai/... |
| Cohere | cohere |
https://api.cohere.ai/... |
https://xget.xi-xu.me/ip/cohere/... |
| Mistral AI | mistralai |
https://api.mistral.ai/... |
https://xget.xi-xu.me/ip/mistralai/... |
| xAI | xai |
https://api.x.ai/... |
https://xget.xi-xu.me/ip/xai/... |
| GitHub Models | githubmodels |
https://models.github.ai/... |
https://xget.xi-xu.me/ip/githubmodels/... |
| NVIDIA API | nvidiaapi |
https://integrate.api.nvidia.com/... |
https://xget.xi-xu.me/ip/nvidiaapi/... |
| Perplexity | perplexity |
https://api.perplexity.ai/... |
https://xget.xi-xu.me/ip/perplexity/... |
| Groq | groq |
https://api.groq.com/... |
https://xget.xi-xu.me/ip/groq/... |
| Cerebras | cerebras |
https://api.cerebras.ai/... |
https://xget.xi-xu.me/ip/cerebras/... |
| SambaNova | sambanova |
https://api.sambanova.ai/... |
https://xget.xi-xu.me/ip/sambanova/... |
| Siray | siray |
https://api.siray.ai/... |
https://xget.xi-xu.me/ip/siray/... |
| HF Inference | huggingface |
https://router.huggingface.co/... |
https://xget.xi-xu.me/ip/huggingface/... |
| Together | together |
https://api.together.xyz/... |
https://xget.xi-xu.me/ip/together/... |
| Replicate | replicate |
https://api.replicate.com/... |
https://xget.xi-xu.me/ip/replicate/... |
| Fireworks | fireworks |
https://api.fireworks.ai/... |
https://xget.xi-xu.me/ip/fireworks/... |
| Nebius | nebius |
https://api.studio.nebius.ai/... |
https://xget.xi-xu.me/ip/nebius/... |
| Jina | jina |
https://api.jina.ai/... |
https://xget.xi-xu.me/ip/jina/... |
| Voyage AI | voyageai |
https://api.voyageai.com/... |
https://xget.xi-xu.me/ip/voyageai/... |
| Fal AI | falai |
https://fal.run/... |
https://xget.xi-xu.me/ip/falai/... |
| Novita | novita |
https://api.novita.ai/... |
https://xget.xi-xu.me/ip/novita/... |
| Burncloud | burncloud |
https://ai.burncloud.com/... |
https://xget.xi-xu.me/ip/burncloud/... |
| OpenRouter | openrouter |
https://openrouter.ai/... |
https://xget.xi-xu.me/ip/openrouter/... |
| Poe | poe |
https://api.poe.com/... |
https://xget.xi-xu.me/ip/poe/... |
| Featherless AI | featherlessai |
https://api.featherless.ai/... |
https://xget.xi-xu.me/ip/featherlessai/... |
| Hyperbolic | hyperbolic |
https://api.hyperbolic.xyz/... |
https://xget.xi-xu.me/ip/hyperbolic/... |
# OpenAI API 原始 URL
https://api.openai.com/v1/chat/completions
# 轉換後(新增 ip/openai 前綴)
https://xget.xi-xu.me/ip/openai/v1/chat/completions
# Claude API 原始 URL
https://api.anthropic.com/v1/messages
# 轉換後(新增 ip/anthropic 前綴)
https://xget.xi-xu.me/ip/anthropic/v1/messages
# Gemini API 原始 URL
https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent
# 轉換後(新增 ip/gemini 前綴)
https://xget.xi-xu.me/ip/gemini/v1beta/models/gemini-2.5-flash:generateContent
# HF Inference API 原始 URL
https://router.huggingface.co/hf-inference/models/openai/whisper-large-v3
# 轉換後(新增 ip/huggingface 前綴)
https://xget.xi-xu.me/ip/huggingface/hf-inference/models/openai/whisper-large-v3
應用場景見 AI 推理 API 加速。
🎯 應用場景
Git 操作與配置
Git 操作
# 克隆儲存庫
git clone https://xget.xi-xu.me/gh/microsoft/vscode.git
# 克隆指定分支
git clone -b main https://xget.xi-xu.me/gh/facebook/react.git
# 淺克隆(僅最新提交)
git clone --depth 1 https://xget.xi-xu.me/gh/torvalds/linux.git
# 克隆 GitLab 儲存庫
git clone https://xget.xi-xu.me/gl/gitlab-org/gitlab.git
# 克隆 Gitea 儲存庫
git clone https://xget.xi-xu.me/gitea/gitea/gitea.git
# 克隆 Codeberg 儲存庫
git clone https://xget.xi-xu.me/codeberg/forgejo/forgejo.git
# 克隆 SourceForge 儲存庫
git clone https://xget.xi-xu.me/sf/projects/mingw-w64/code.git
# 克隆 AOSP 儲存庫
git clone https://xget.xi-xu.me/aosp/platform/frameworks/base.git
# 新增遠端儲存庫
git remote add upstream https://xget.xi-xu.me/gh/[擁有者]/[儲存庫].git
# 拉取更新
git pull https://xget.xi-xu.me/gh/microsoft/vscode.git main
# 子模組遞迴克隆
git clone --recursive https://xget.xi-xu.me/gh/[使用者名稱]/[帶子模組的儲存庫].git
Git 全域加速配置
# 為特定網域配置 Git 使用 Xget
git config --global url."https://xget.xi-xu.me/gh/".insteadOf "https://github.com/"
git config --global url."https://xget.xi-xu.me/gl/".insteadOf "https://gitlab.com/"
git config --global url."https://xget.xi-xu.me/gitea/".insteadOf "https://gitea.com/"
git config --global url."https://xget.xi-xu.me/codeberg/".insteadOf "https://codeberg.org/"
git config --global url."https://xget.xi-xu.me/sf/".insteadOf "https://sourceforge.net/"
git config --global url."https://xget.xi-xu.me/aosp/".insteadOf "https://android.googlesource.com/"
# 驗證配置
git config --global --get-regexp url
# 現在所有相關平台的 git clone 都會自動使用 Xget
git clone https://github.com/microsoft/vscode.git # 自動轉換為 Xget URL
git clone https://gitlab.com/gitlab-org/gitlab.git # 自動轉換為 Xget URL
git clone https://codeberg.org/forgejo/forgejo.git # 自動轉換為 Xget URL
git clone https://android.googlesource.com/platform/frameworks/base.git # 自動轉換為 Xget URL
主流下載工具整合
wget 下載
# 下載單一檔案
wget https://xget.xi-xu.me/gh/microsoft/vscode/archive/refs/heads/main.zip
# 斷點續傳
wget -c https://xget.xi-xu.me/hf/microsoft/DialoGPT-large/resolve/main/pytorch_model.bin
# 批次下載
wget -i urls.txt # urls.txt 包含多個 Xget URL
cURL 下載
# 基本下載
curl -L -O https://xget.xi-xu.me/gh/golang/go/archive/refs/tags/go1.22.0.tar.gz
# 顯示進度列
curl -L --progress-bar -o model.bin https://xget.xi-xu.me/hf/openai/whisper-large-v3/resolve/main/pytorch_model.bin
# 設定 User-Agent
curl -L -H "User-Agent: MyApp/1.0" https://xget.xi-xu.me/gl/gitlab-org/gitlab-runner/-/archive/main/gitlab-runner-main.zip
aria2 多執行緒下載
# 多執行緒下載大檔案
aria2c -x 16 -s 16 https://xget.xi-xu.me/hf/microsoft/DialoGPT-large/resolve/main/pytorch_model.bin
# 斷點續傳
aria2c -c https://xget.xi-xu.me/gh/microsoft/vscode/archive/refs/heads/main.zip
# 批次下載設定檔
aria2c -i download-list.txt # 包含多個 Xget URL 的檔案
Hugging Face 鏡像
import os
from transformers import AutoTokenizer, AutoModelForCausalLM
# 設定環境變數,讓 transformers 庫自動使用 Xget 鏡像
os.environ['HF_ENDPOINT'] = 'https://xget.xi-xu.me/hf'
# 定義模型名稱
model_name = 'microsoft/DialoGPT-medium'
print(f"正在從鏡像下載模型: {model_name}")
# 使用 AutoModelForCausalLM 來載入對話生成模型
# 由於上面設定了環境變數,這裡無需新增任何額外參數
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
print("模型和分詞器載入成功!")
# 您現在可以使用 tokenizer 和 model 了
# 例如:
# new_user_input_ids = tokenizer.encode("Hello, how are you?", return_tensors='pt')
# chat_history_ids = model.generate(new_user_input_ids, max_length=1000, pad_token_id=tokenizer.eos_token_id)
# print(tokenizer.decode(chat_history_ids[:, new_user_input_ids.shape[-1]:][0], skip_special_tokens=True))
Civitai AI 模型平台
import requests
# 設定 API 基礎 URL 使用 Xget
base_url = "https://xget.xi-xu.me/civitai"
# 獲取模型資訊
def get_model_info(model_id):
"""獲取 Civitai 模型資訊"""
url = f"{base_url}/api/v1/models/{model_id}"
response = requests.get(url)
return response.json()
# 下載模型
def download_model(model_version_id, output_path):
"""下載 Civitai 模型檔案"""
download_url = f"{base_url}/api/download/models/{model_version_id}"
print(f"正在下載模型版本 {model_version_id}...")
response = requests.get(download_url, stream=True)
response.raise_for_status()
with open(output_path, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
print(f"模型已下載到: {output_path}")
# 使用範例
model_id = 7240 # 範例模型 ID
model_info = get_model_info(model_id)
print(f"模型名稱: {model_info['name']}")
# 下載第一個模型版本
if model_info['modelVersions']:
version_id = model_info['modelVersions'][0]['id']
download_model(version_id, f"model_{version_id}.safetensors")
npm 軟體包管理加速
配置 npm 使用 Xget 鏡像
# 臨時使用 Xget 鏡像
npm install --registry https://xget.xi-xu.me/npm/
# 全域配置 npm 鏡像
npm config set registry https://xget.xi-xu.me/npm/
# 驗證配置
npm config get registry
在專案中使用
# 在 .npmrc 檔案中配置專案級鏡像
echo "registry=https://xget.xi-xu.me/npm/" > .npmrc
# 安裝依賴項
npm install
# 或者使用 yarn
yarn config set registry https://xget.xi-xu.me/npm/
yarn install
Python 軟體包管理加速
配置 pip 使用 Xget 鏡像
# 臨時使用 Xget 鏡像
pip install requests -i https://xget.xi-xu.me/pypi/simple/
# 全域配置 pip 鏡像
pip config set global.index-url https://xget.xi-xu.me/pypi/simple/
pip config set global.trusted-host xget.xi-xu.me
# 驗證配置
pip config list
在專案中使用
# 建立 pip.conf 檔案(Linux/macOS)
mkdir -p ~/.pip
cat > ~/.pip/pip.conf << EOF
[global]
index-url = https://xget.xi-xu.me/pypi/simple/
trusted-host = xget.xi-xu.me
EOF
# 或在專案根目錄建立 pip.conf
cat > pip.conf << EOF
[global]
index-url = https://xget.xi-xu.me/pypi/simple/
trusted-host = xget.xi-xu.me
EOF
# 使用設定檔安裝
pip install -r requirements.txt --config-file pip.conf
在 requirements.txt 中指定鏡像
# requirements.txt
--index-url https://xget.xi-xu.me/pypi/simple/
--trusted-host xget.xi-xu.me
requests>=2.25.0
numpy>=1.21.0
pandas>=1.3.0
matplotlib>=3.4.0
conda 軟體包管理加速
配置 conda 使用 Xget 鏡像
# 配置預設頻道鏡像
conda config --add default_channels https://xget.xi-xu.me/conda/pkgs/msys2
conda config --add default_channels https://xget.xi-xu.me/conda/pkgs/r
conda config --add default_channels https://xget.xi-xu.me/conda/pkgs/main
# 配置所有社群頻道鏡像(推薦)
conda config --set channel_alias https://xget.xi-xu.me/conda/community
# 或配置特定社群頻道
conda config --add channels https://xget.xi-xu.me/conda/community/conda-forge
conda config --add channels https://xget.xi-xu.me/conda/community/bioconda
# 設定頻道優先順序
conda config --set channel_priority strict
# 驗證配置
conda config --show
在 .condarc 中配置
.condarc 檔案可以放在使用者主目錄(~/.condarc)或專案根目錄下:
default_channels:
- https://xget.xi-xu.me/conda/pkgs/main
- https://xget.xi-xu.me/conda/pkgs/r
- https://xget.xi-xu.me/conda/pkgs/msys2
channel_alias: https://xget.xi-xu.me/conda/community
channel_priority: strict
show_channel_urls: true
使用環境檔案
環境檔案中可以直接指定完整的鏡像 URL:
# environment.yml
name: myproject
channels:
- https://xget.xi-xu.me/conda/pkgs/main
- https://xget.xi-xu.me/conda/pkgs/r
- https://xget.xi-xu.me/conda/community/bioconda
- https://xget.xi-xu.me/conda/community/conda-forge
dependencies:
- python=3.11
- numpy>=1.24.0
- pandas>=2.0.0
- matplotlib>=3.7.0
- scipy>=1.10.0
- pip
- pip:
- requests>=2.28.0
# 使用環境檔案建立環境
conda env create -f environment.yml
# 更新環境
conda env update -f environment.yml
Maven 軟體包管理加速
配置 Maven 使用 Xget 鏡像
<!-- 在 ~/.m2/settings.xml 中配置 Maven 鏡像 -->
<settings>
<mirrors>
<mirror>
<id>xget-maven-central</id>
<mirrorOf>central</mirrorOf>
<name>Xget Maven Central Mirror</name>
<url>https://xget.xi-xu.me/maven/maven2</url>
</mirror>
</mirrors>
</settings>
在專案中使用
<!-- 在 pom.xml 中配置專案級鏡像 -->
<project>
<repositories>
<repository>
<id>xget-maven-central</id>
<name>Xget Maven Central</name>
<url>https://xget.xi-xu.me/maven/maven2</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>xget-maven-central</id>
<name>Xget Maven Central</name>
<url>https://xget.xi-xu.me/maven/maven2</url>
</pluginRepository>
</pluginRepositories>
</project>
# 使用命令列指定鏡像
mvn clean install -Dmaven.repo.remote=https://xget.xi-xu.me/maven/maven2
# 下載特定依賴項
mvn dependency:get -Dartifact=org.springframework:spring-core:5.3.21 \
-DremoteRepositories=https://xget.xi-xu.me/maven/maven2
Apache 軟體下載加速
使用 Xget 下載 Apache 軟體
# 下載 Apache Kafka
wget https://xget.xi-xu.me/apache/kafka/3.6.1/kafka_2.13-3.6.1.tgz
# 下載 Apache Maven
curl -L -O https://xget.xi-xu.me/apache/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz
# 下載 Apache Spark
aria2c https://xget.xi-xu.me/apache/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz
# 下載 Apache Hadoop
wget https://xget.xi-xu.me/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
# 下載 Apache Flink
curl -L -O https://xget.xi-xu.me/apache/flink/flink-1.18.1/flink-1.18.1-bin-scala_2.12.tgz
常用 Apache 軟體下載
# 大數據相關
wget https://xget.xi-xu.me/apache/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
wget https://xget.xi-xu.me/apache/hbase/2.5.7/hbase-2.5.7-bin.tar.gz
wget https://xget.xi-xu.me/apache/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
# Web 伺服器
wget https://xget.xi-xu.me/apache/httpd/httpd-2.4.59.tar.gz
wget https://xget.xi-xu.me/apache/tomcat/tomcat-10/v10.1.19/bin/apache-tomcat-10.1.19.tar.gz
# 開發工具
wget https://xget.xi-xu.me/apache/ant/1.10.14/apache-ant-1.10.14-bin.tar.gz
wget https://xget.xi-xu.me/apache/netbeans/netbeans/20/netbeans-20-bin.zip
Gradle 軟體包管理加速
配置 Gradle 使用 Xget 鏡像
// 在 build.gradle 中配置 Gradle 鏡像
repositories {
maven {
url 'https://xget.xi-xu.me/maven/maven2'
}
gradlePluginPortal {
url 'https://xget.xi-xu.me/gradle/m2'
}
}
// 配置外掛程式儲存庫
pluginManagement {
repositories {
maven {
url 'https://xget.xi-xu.me/gradle/m2'
}
gradlePluginPortal()
}
}
全域配置
// 在 ~/.gradle/init.gradle 中配置全域鏡像
allprojects {
repositories {
maven {
url 'https://xget.xi-xu.me/maven/maven2'
}
}
}
settingsEvaluated { settings ->
settings.pluginManagement {
repositories {
maven {
url 'https://xget.xi-xu.me/gradle/m2'
}
gradlePluginPortal()
}
}
}
# 使用命令列指定鏡像
gradle build -Dmaven.repo.remote=https://xget.xi-xu.me/maven/maven2
# 重新整理依賴項
gradle build --refresh-dependencies
Homebrew 軟體包管理加速
配置 Homebrew 使用 Xget 鏡像
# 設定 Homebrew 環境變數使用 Xget 鏡像
export HOMEBREW_BREW_GIT_REMOTE="https://xget.xi-xu.me/homebrew/brew.git"
export HOMEBREW_CORE_GIT_REMOTE="https://xget.xi-xu.me/homebrew/homebrew-core.git"
export HOMEBREW_API_DOMAIN="https://xget.xi-xu.me/homebrew/api"
export HOMEBREW_BOTTLE_DOMAIN="https://xget.xi-xu.me/homebrew/bottles"
# 更新 Homebrew
brew update
長期配置
# 為 bash 使用者新增到 ~/.bash_profile
echo 'export HOMEBREW_BREW_GIT_REMOTE="https://xget.xi-xu.me/homebrew/brew.git"' >> ~/.bash_profile
echo 'export HOMEBREW_CORE_GIT_REMOTE="https://xget.xi-xu.me/homebrew/homebrew-core.git"' >> ~/.bash_profile
echo 'export HOMEBREW_API_DOMAIN="https://xget.xi-xu.me/homebrew/api"' >> ~/.bash_profile
echo 'export HOMEBREW_BOTTLE_DOMAIN="https://xget.xi-xu.me/homebrew/bottles"' >> ~/.bash_profile
# 為 zsh 使用者新增到 ~/.zprofile
echo 'export HOMEBREW_BREW_GIT_REMOTE="https://xget.xi-xu.me/homebrew/brew.git"' >> ~/.zprofile
echo 'export HOMEBREW_CORE_GIT_REMOTE="https://xget.xi-xu.me/homebrew/homebrew-core.git"' >> ~/.zprofile
echo 'export HOMEBREW_API_DOMAIN="https://xget.xi-xu.me/homebrew/api"' >> ~/.zprofile
echo 'export HOMEBREW_BOTTLE_DOMAIN="https://xget.xi-xu.me/homebrew/bottles"' >> ~/.zprofile
在專案中使用
# 安裝軟體包
brew install git
# 搜尋軟體包
brew search python
# 更新軟體包
brew upgrade
# 檢視已安裝軟體包
brew list
驗證鏡像配置
# 檢查 Homebrew 配置
brew config
# 檢視環境變數
echo $HOMEBREW_API_DOMAIN
echo $HOMEBREW_BOTTLE_DOMAIN
Ruby 軟體包管理加速
配置 RubyGems 使用 Xget 鏡像
# 臨時使用 Xget 鏡像
gem install rails --source https://xget.xi-xu.me/rubygems/
# 全域配置 RubyGems 鏡像
gem sources --add https://xget.xi-xu.me/rubygems/
gem sources --remove https://rubygems.org/
# 驗證配置
gem sources -l
在專案中使用
# 在 Gemfile 中配置專案級鏡像
source 'https://xget.xi-xu.me/rubygems/'
gem 'rails', '~> 7.0.0'
gem 'pg', '~> 1.1'
gem 'puma', '~> 5.0'
# 使用 bundle 安裝
bundle config mirror.https://rubygems.org https://xget.xi-xu.me/rubygems/
bundle install
R 軟體包管理加速
配置 R 使用 Xget CRAN 鏡像
# 在 R 中臨時使用 Xget CRAN 鏡像
install.packages("ggplot2", repos = "https://xget.xi-xu.me/cran/")
# 全域配置 CRAN 鏡像
options(repos = c(CRAN = "https://xget.xi-xu.me/cran/"))
# 驗證配置
getOption("repos")
在 .Rprofile 中配置
# 在使用者主目錄的 .Rprofile 檔案中配置全域鏡像
options(repos = c(
CRAN = "https://xget.xi-xu.me/cran/",
BioCsoft = "https://bioconductor.org/packages/release/bioc",
BioCann = "https://bioconductor.org/packages/release/data/annotation",
BioCexp = "https://bioconductor.org/packages/release/data/experiment"
))
# 設定下載方法
options(download.file.method = "libcurl")
在專案中使用
# 在專案的 renv.lock 或指令碼中指定鏡像
renv::init()
renv::settings$repos.override(c(CRAN = "https://xget.xi-xu.me/cran/"))
# 安裝包
install.packages(c("dplyr", "ggplot2", "tidyr"))
# 或使用 pak 軟體包管理器
pak::pkg_install("tidyverse", repos = "https://xget.xi-xu.me/cran/")
# 在命令列中使用 R 指令碼安裝包
Rscript -e "options(repos = c(CRAN = 'https://xget.xi-xu.me/cran/')); install.packages('ggplot2')"
# 批次安裝包
Rscript -e "
options(repos = c(CRAN = 'https://xget.xi-xu.me/cran/'))
packages <- c('dplyr', 'ggplot2', 'tidyr', 'readr')
install.packages(packages)
"
Perl 軟體包管理加速
配置 CPAN 使用 Xget 鏡像
# 配置 CPAN 使用 Xget 鏡像
cpan o conf urllist push https://xget.xi-xu.me/cpan/
cpan o conf commit
# 或者直接編輯設定檔 ~/.cpan/CPAN/MyConfig.pm
# 新增:
# 'urllist' => [q[https://xget.xi-xu.me/cpan/]],
使用 cpanm 安裝模組
# 安裝 cpanm(如果沒有)
curl -L https://cpanmin.us | perl - --sudo App::cpanminus
# 使用 Xget 鏡像安裝模組
cpanm --mirror https://xget.xi-xu.me/cpan/ DBI
cpanm --mirror https://xget.xi-xu.me/cpan/ Mojolicious
# 從 Makefile.PL 安裝依賴項
cpanm --mirror https://xget.xi-xu.me/cpan/ --installdeps .
在專案中使用
# 在 cpanfile 中列出依賴項
requires 'DBI';
requires 'Mojolicious';
requires 'JSON';
# 然後使用 Xget 鏡像安裝
cpanm --mirror https://xget.xi-xu.me/cpan/ --installdeps .
TeX/LaTeX 軟體包管理加速
配置 TeX Live 使用 Xget CTAN 鏡像
# 配置 tlmgr 使用 Xget CTAN 鏡像
tlmgr option repository https://xget.xi-xu.me/ctan/systems/texlive/tlnet
# 更新軟體包資料庫
tlmgr update --self --all
# 安裝軟體包
tlmgr install beamer
tlmgr install tikz
配置 MiKTeX 使用 Xget 鏡像
# Windows MiKTeX 配置
mpm --set-repository=https://xget.xi-xu.me/ctan/systems/win32/miktex
# 更新軟體包資料庫
mpm --update-db
# 安裝軟體包
mpm --install=beamer
mpm --install=pgf
在專案中使用
# LaTeX 文件編譯時自動安裝缺失軟體包
pdflatex --shell-escape document.tex
# 或手動安裝特定軟體包
tlmgr install caption
tlmgr install subcaption
tlmgr install algorithm2e
Go 模組加速
配置 Go 使用 Xget 代理
# 配置 Go 模組代理
export GOPROXY=https://xget.xi-xu.me/golang,direct
export GOSUMDB=off
# 或者永久配置
go env -w GOPROXY=https://xget.xi-xu.me/golang,direct
go env -w GOSUMDB=off
# 驗證配置
go env GOPROXY
在專案中使用
# 下載依賴項
go mod download
# 更新依賴項
go get -u ./...
# 清理模組快取
go clean -modcache
NuGet 軟體包管理加速
配置 NuGet 使用 Xget 鏡像
# 新增 Xget 軟體包來源
dotnet nuget add source https://xget.xi-xu.me/nuget/v3/index.json -n xget
# 列出軟體包來源
dotnet nuget list source
# 在專案中使用
dotnet restore --source https://xget.xi-xu.me/nuget/v3/index.json
在 NuGet.Config 中配置
<!-- NuGet.Config -->
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="xget" value="https://xget.xi-xu.me/nuget/v3/index.json" />
</packageSources>
</configuration>
Rust 軟體包管理加速
配置 Cargo 使用 Xget 鏡像
# 配置 Cargo 使用 Xget 鏡像(在 ~/.cargo/config.toml 中)
mkdir -p ~/.cargo
cat >> ~/.cargo/config.toml << EOF
[source.crates-io]
replace-with = "xget"
[source.xget]
registry = "https://xget.xi-xu.me/crates/"
EOF
# 驗證配置
cargo search serde
在專案中使用
# 在 Cargo.toml 中可以正常使用依賴項
[dependencies]
serde = "1.0"
tokio = "1.0"
reqwest = "0.11"
# 建置專案時會自動使用 Xget
cargo build
# 更新依賴項
cargo update
# 新增新依賴項
cargo add clap
PHP 軟體包管理加速
配置 Composer 使用 Xget 鏡像
# 全域配置 Composer 鏡像
composer config -g repo.packagist composer https://xget.xi-xu.me/packagist/
# 專案級配置
composer config repo.packagist composer https://xget.xi-xu.me/packagist/
# 驗證配置
composer config -l
在 composer.json 中配置
{
"repositories": [
{
"type": "composer",
"url": "https://xget.xi-xu.me/packagist/"
}
],
"require": {
"symfony/console": "^6.0",
"guzzlehttp/guzzle": "^7.0"
}
}
Flathub 儲存庫鏡像
配置 Flatpak / Flathub 使用 Xget 鏡像
# 透過重寫後的 .flatpakrepo 描述檔新增 Flathub 遠端儲存庫
flatpak remote-add --if-not-exists flathub \
https://xget.xi-xu.me/flathub/repo/flathub.flatpakrepo
# 或者直接新增 OSTree 儲存庫位址
flatpak remote-add --if-not-exists flathub \
https://xget.xi-xu.me/flathub/repo/
支援的 Flathub 服務
# OSTree 儲存庫中繼資料
https://xget.xi-xu.me/flathub/repo/summary
https://xget.xi-xu.me/flathub/repo/summary.sig
# Flatpak 遠端儲存庫描述檔
https://xget.xi-xu.me/flathub/repo/flathub.flatpakrepo
# 應用程式引用描述檔
https://xget.xi-xu.me/flathub/repo/appstream/[應用程式 ID].flatpakref
# 儲存庫物件與靜態增量
https://xget.xi-xu.me/flathub/repo/objects/...
https://xget.xi-xu.me/flathub/repo/deltas/...
使用範例
# 檢視遠端儲存庫內容
flatpak remote-ls flathub
# 從 Xget 加速的 Flathub 鏡像安裝應用程式
flatpak install flathub org.gnome.gedit
# 直接透過重寫後的 .flatpakref 安裝
flatpak install --from \
https://xget.xi-xu.me/flathub/repo/appstream/org.gnome.gedit.flatpakref
# 更新已安裝的應用程式與執行時
flatpak update
Linux 發行版加速
Debian/Ubuntu APT 配置
# 備份原始軟體源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
# 配置 Debian 鏡像
echo "deb https://xget.xi-xu.me/debian/debian bookworm main" | sudo tee /etc/apt/sources.list
echo "deb https://xget.xi-xu.me/debian/debian-security bookworm-security main" | sudo tee -a /etc/apt/sources.list
# 配置 Ubuntu 鏡像
echo "deb https://xget.xi-xu.me/ubuntu/ubuntu jammy main restricted universe multiverse" | sudo tee /etc/apt/sources.list
echo "deb https://xget.xi-xu.me/ubuntu/ubuntu jammy-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list
# 更新軟體包列表
sudo apt update
Fedora DNF 配置
# 配置 Fedora 鏡像
sudo sed -i 's|^metalink=|#metalink=|g' /etc/yum.repos.d/fedora*.repo
sudo sed -i 's|^#baseurl=http://download.example/pub/fedora/linux|baseurl=https://xget.xi-xu.me/fedora/pub/fedora/linux|g' /etc/yum.repos.d/fedora*.repo
# 更新軟體包快取
sudo dnf makecache
Rocky Linux DNF 配置
# 配置 Rocky Linux 鏡像
sudo sed -i 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/rocky*.repo
sudo sed -i 's|^#baseurl=http://dl.rockylinux.org|baseurl=https://xget.xi-xu.me/rocky|g' /etc/yum.repos.d/rocky*.repo
# 更新軟體包快取
sudo dnf makecache
openSUSE Zypper 配置
# 配置 openSUSE Leap 鏡像
sudo zypper mr -d repo-oss
sudo zypper ar -f https://xget.xi-xu.me/opensuse/distribution/leap/15.5/repo/oss/ repo-oss-xget
# 配置 openSUSE Tumbleweed 鏡像
sudo zypper mr -d repo-oss
sudo zypper ar -f https://xget.xi-xu.me/opensuse/tumbleweed/repo/oss/ repo-oss-xget
# 重新整理軟體源
sudo zypper refresh
# 驗證配置
sudo zypper lr -u
Arch Linux Pacman 配置
# 備份原始鏡像列表
sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup
# 配置 Arch Linux 鏡像
echo 'Server = https://xget.xi-xu.me/arch/$repo/os/$arch' | sudo tee /etc/pacman.d/mirrorlist
# 更新軟體包資料庫
sudo pacman -Sy
學術資源加速
arXiv 論文下載
# 下載 arXiv 論文 PDF
wget https://xget.xi-xu.me/arxiv/pdf/2301.07041.pdf
# 下載論文原始碼
curl -L -O https://xget.xi-xu.me/arxiv/e-print/2301.07041
# 批次下載多篇論文
for id in 2301.07041 2302.13971 2303.08774; do
wget https://xget.xi-xu.me/arxiv/pdf/${id}.pdf
done
在學術工具中使用
# 在 Python 中使用 arXiv 加速下載
import requests
def download_arxiv_paper(arxiv_id, output_path):
url = f"https://xget.xi-xu.me/arxiv/pdf/{arxiv_id}.pdf"
response = requests.get(url)
if response.status_code == 200:
with open(output_path, 'wb') as f:
f.write(response.content)
print(f"Downloaded {arxiv_id} to {output_path}")
else:
print(f"Failed to download {arxiv_id}")
# 下載論文
download_arxiv_paper("2301.07041", "attention_is_all_you_need.pdf")
F-Droid 儲存庫鏡像
配置 F-Droid 用戶端使用 Xget 鏡像
- 在 F-Droid 應用程式中進入設定 → 儲存庫
- 點擊 + 後輸入儲存庫 URL:
https://xget.xi-xu.me/fdroid/repo - 點擊新增後再點擊新增鏡像
支援的 F-Droid 服務
# F-Droid 應用程式 APK 下載
https://xget.xi-xu.me/fdroid/repo/[軟體包名]_[版本號].apk
# F-Droid 儲存庫索引
https://xget.xi-xu.me/fdroid/repo/index-v1.jar
# F-Droid 應用程式圖示
https://xget.xi-xu.me/fdroid/repo/icons-640/[軟體包名].[版本號].png
# F-Droid API 介面
https://xget.xi-xu.me/fdroid/api/v1/packages/[軟體包名]
使用範例
# 直接下載 F-Droid 用戶端 APK
wget https://xget.xi-xu.me/fdroid/repo/org.fdroid.fdroid_1016050.apk
# 下載其他開源應用程式
curl -L -O https://xget.xi-xu.me/fdroid/repo/org.mozilla.fennec_fdroid_1014000.apk
# 獲取應用程式資訊
curl https://xget.xi-xu.me/fdroid/api/v1/packages/org.fdroid.fdroid
批次應用程式管理
# 建立應用程式下載指令碼
cat > download_fdroid_apps.sh << 'EOF'
#!/bin/bash
# 定義要下載的應用程式列表
apps=(
"org.fdroid.fdroid_1016050.apk"
"org.mozilla.fennec_fdroid_1014000.apk"
"com.termux_1180.apk"
"org.videolan.vlc_13050399.apk"
)
# 建立下載目錄
mkdir -p fdroid_apps
# 批次下載應用程式
for app in "${apps[@]}"; do
echo "正在下載: $app"
wget -P fdroid_apps "https://xget.xi-xu.me/fdroid/repo/$app"
done
echo "所有應用程式下載完成!"
EOF
chmod +x download_fdroid_apps.sh
./download_fdroid_apps.sh
開發者整合
對於 Android 開發者,可以在建置指令碼中整合 F-Droid 鏡像:
// 在 build.gradle 中配置 F-Droid 依賴項檢查
task checkFDroidAvailability {
doLast {
def fdroidUrl = "https://xget.xi-xu.me/fdroid/api/v1/packages/${project.name}"
try {
def connection = new URL(fdroidUrl).openConnection()
connection.requestMethod = 'GET'
def responseCode = connection.responseCode
if (responseCode == 200) {
println "應用程式在 F-Droid 上可用: $fdroidUrl"
}
} catch (Exception e) {
println "檢查 F-Droid 可用性時出錯: ${e.message}"
}
}
}
Jenkins 外掛程式下載
使用 Xget 加速 Jenkins 外掛程式下載和更新
支援 Jenkins 更新中心和外掛程式下載,相容清華鏡像等國內鏡像源的配置方式。
Jenkins 更新中心配置
方法一:在 Jenkins Web 介面配置
- 登入 Jenkins 管理介面
- 進入 Manage Jenkins → Plugins → Advanced
- 在 Update Site 部分,將 URL 更改為
https://xget.xi-xu.me/jenkins/update-center.json - 點擊 Submit 儲存配置
方法二:修改設定檔
# 在 Jenkins 伺服器上修改更新中心設定檔
# 預設位置:$JENKINS_HOME/hudson.model.UpdateCenter.xml
sudo nano /var/lib/jenkins/hudson.model.UpdateCenter.xml
# 將 URL 改為:
# <url>https://xget.xi-xu.me/jenkins/update-center.json</url>
# 重啟 Jenkins 服務
sudo systemctl restart jenkins
支援的 Jenkins 服務
# Jenkins 更新中心 JSON
https://xget.xi-xu.me/jenkins/update-center.json
# Jenkins 更新中心(實際 JSON 格式)
https://xget.xi-xu.me/jenkins/update-center.actual.json
# Jenkins 外掛程式下載
https://xget.xi-xu.me/jenkins/download/plugins/[外掛程式名]/[版本]/[外掛程式名].hpi
# 實驗性外掛程式更新中心
https://xget.xi-xu.me/jenkins/experimental/update-center.json
使用範例
# 下載 Maven 外掛程式
wget https://xget.xi-xu.me/jenkins/download/plugins/maven-plugin/3.27/maven-plugin.hpi
# 下載 Git 外掛程式
curl -L -O https://xget.xi-xu.me/jenkins/download/plugins/git/5.2.1/git.hpi
# 獲取更新中心資訊
curl https://xget.xi-xu.me/jenkins/update-center.json
# 批次下載常用外掛程式
cat > download_jenkins_plugins.sh << 'EOF'
#!/bin/bash
# 定義要下載的外掛程式列表
plugins=(
"git:5.2.1"
"maven-plugin:3.27"
"workflow-aggregator:596.v8c21c963d92d"
"blueocean:1.27.8"
"docker-workflow:563.vd5d2e5c4007f"
)
# 建立外掛程式下載目錄
mkdir -p jenkins_plugins
# 批次下載外掛程式
for plugin in "${plugins[@]}"; do
name=$(echo $plugin | cut -d: -f1)
version=$(echo $plugin | cut -d: -f2)
echo "正在下載外掛程式: $name v$version"
wget -P jenkins_plugins "https://xget.xi-xu.me/jenkins/download/plugins/$name/$version/$name.hpi"
done
echo "所有外掛程式下載完成!"
EOF
chmod +x download_jenkins_plugins.sh
./download_jenkins_plugins.sh
離線 Jenkins 部署
對於無網路環境的 Jenkins 部署:
# 1. 下載 Jenkins 核心檔案
wget https://xget.xi-xu.me/jenkins/war/jenkins.war
# 2. 建立外掛程式打包指令碼
cat > prepare_jenkins_offline.sh << 'EOF'
#!/bin/bash
# 建立離線部署目錄結構
mkdir -p jenkins_offline/{plugins,update_center}
# 下載更新中心配置
curl -o jenkins_offline/update_center/update-center.json \
https://xget.xi-xu.me/jenkins/update-center.json
# 必備外掛程式列表
essential_plugins=(
"ant:475.vf34069fef73c"
"build-timeout:1.31"
"credentials:1319.v7eb_51b_3a_c97b_"
"git:5.2.1"
"github:1.38.0"
"gradle:2.8.2"
"ldap:682.v7b_544c9d1512"
"mailer:463.vedf8358e006b_"
"matrix-auth:3.2.2"
"maven-plugin:3.27"
"pam-auth:1.10"
"pipeline-stage-view:2.34"
"ssh-slaves:2.973.v0fa_8c0dea_f9f"
"timestamper:1.26"
"workflow-aggregator:596.v8c21c963d92d"
"ws-cleanup:0.45"
)
# 下載所有必備外掛程式
for plugin in "${essential_plugins[@]}"; do
name=$(echo $plugin | cut -d: -f1)
version=$(echo $plugin | cut -d: -f2)
echo "下載 $name:$version"
wget -P jenkins_offline/plugins \
"https://xget.xi-xu.me/jenkins/download/plugins/$name/$version/$name.hpi"
done
# 建立部署說明
cat > jenkins_offline/deploy_instructions.md << 'DEPLOY'
# Jenkins 離線部署說明
1. 將 jenkins.war 複製到目標伺服器
2. 啟動 Jenkins:java -jar jenkins.war
3. 將 plugins/ 目錄中的 .hpi 檔案複製到 $JENKINS_HOME/plugins/
4. 重啟 Jenkins
DEPLOY
echo "離線部署包準備完成!"
EOF
chmod +x prepare_jenkins_offline.sh
./prepare_jenkins_offline.sh
在專案中使用
Jenkinsfile 中的外掛程式檢查
pipeline {
agent any
stages {
stage('Check Plugin Availability') {
steps {
script {
// 檢查 Maven 外掛程式可用性
def pluginUrl = "https://xget.xi-xu.me/jenkins/download/plugins/maven-plugin/3.27/maven-plugin.hpi"
try {
def response = httpRequest url: pluginUrl, httpMode: 'HEAD'
if (response.status == 200) {
echo "Maven 外掛程式可用: ${pluginUrl}"
}
} catch (Exception e) {
error "Maven 外掛程式不可用: ${e.message}"
}
}
}
}
stage('Build') {
steps {
// 您的建置步驟
echo "使用加速後的外掛程式進行建置..."
}
}
}
}
容器鏡像加速
直接拉取鏡像
# 拉取 GitHub 容器註冊表鏡像
docker pull xget.xi-xu.me/cr/ghcr/nginxinc/nginx-unprivileged:latest
# 拉取 Google 容器註冊表鏡像
docker pull xget.xi-xu.me/cr/gcr/distroless/base:latest
# 拉取 Microsoft 容器註冊表鏡像
docker pull xget.xi-xu.me/cr/mcr/dotnet/runtime:8.0
Kubernetes 部署配置
# deployment.yaml - 使用 Xget 的鏡像
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: xget.xi-xu.me/cr/ghcr/nginxinc/nginx-unprivileged:latest
ports:
- containerPort: 80
- name: redis
image: xget.xi-xu.me/cr/ghcr/bitnami/redis:alpine
ports:
- containerPort: 6379
Docker Compose 配置
# docker-compose.yml - 使用 Xget 加速鏡像
version: '3.8'
services:
web:
image: xget.xi-xu.me/cr/ghcr/nginxinc/nginx-unprivileged:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
database:
image: xget.xi-xu.me/cr/mcr/mssql/server:2022-latest
environment:
ACCEPT_EULA: Y
SA_PASSWORD: "MyStrongPassword123!"
volumes:
- mssql_data:/var/opt/mssql
cache:
image: xget.xi-xu.me/cr/ghcr/bitnami/redis:alpine
ports:
- "6379:6379"
volumes:
mssql_data:
Dockerfile 最佳化
# 在 Dockerfile 中使用 Xget 加速基礎鏡像
FROM xget.xi-xu.me/cr/ghcr/nodejs/node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
# 生產階段
FROM xget.xi-xu.me/cr/ghcr/nginxinc/nginx-unprivileged:latest
COPY --from=builder /app/dist /usr/share/nginx/html
# 使用 Microsoft 容器註冊表的 .NET 鏡像
FROM xget.xi-xu.me/cr/mcr/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
COPY --from=builder /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]
CI/CD 整合
# GitHub Actions - 使用 Xget 加速容器建置
name: Build and Deploy
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build with accelerated base images
run: |
# 建置時使用 Xget 的基礎鏡像
docker build -t myapp:latest \
--build-arg BASE_IMAGE=xget.xi-xu.me/cr/ghcr/nodejs/node:18-alpine .
- name: Test with accelerated images
run: |
# 使用加速鏡像進行測試
docker run --rm \
xget.xi-xu.me/cr/mcr/dotnet/runtime:8.0 \
dotnet --version
Podman 配置
# 配置 Podman 使用 Xget 鏡像加速
# 編輯 /etc/containers/registries.conf
[[registry]]
prefix = "ghcr.io"
location = "xget.xi-xu.me/cr/ghcr"
# 或者直接拉取
podman pull xget.xi-xu.me/cr/ghcr/alpine/alpine:latest
podman pull xget.xi-xu.me/cr/ghcr/nginxinc/nginx-unprivileged:latest
containerd 配置
# 配置 containerd 使用 Xget
# 編輯 /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."ghcr.io"]
endpoint = ["https://xget.xi-xu.me/cr/ghcr"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
endpoint = ["https://xget.xi-xu.me/cr/gcr"]
# 重啟 containerd
sudo systemctl restart containerd
AI 推理 API 加速
OpenAI API
from openai import OpenAI
client = OpenAI(
api_key="your-api-key",
base_url="https://xget.xi-xu.me/ip/openai/v1", # 使用 Xget
)
response = client.responses.create(
model="gpt-5.1",
input="Hello, GPT!",
)
print(response.output_text)
Claude API
from anthropic import Anthropic
client = Anthropic(
api_key="your-api-key",
base_url="https://xget.xi-xu.me/ip/anthropic", # 使用 Xget
)
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=256,
messages=[
{
"role": "user",
"content": "Hello, Claude!",
}
],
)
print(message.content[0].text)
Gemini API
from google import genai
from google.genai import types
client = genai.Client(
api_key="your-api-key",
http_options=types.HttpOptions(base_url="https://xget.xi-xu.me/ip/gemini"), # 使用 Xget
)
response = client.models.generate_content(
model="gemini-3-pro-preview",
contents="Hello, Gemini!",
)
print(response.text)
多供應商統一介面
from openai import OpenAI
providers = [
("Cohere", "your-cohere-api-key", "/cohere/compatibility/v1", "command-a-03-2025"),
("Mistral", "your-mistral-api-key", "/mistralai/v1", "mistral-medium-latest"),
("xAI", "your-xai-api-key", "/xai/v1", "grok-4"),
]
for name, key, path, model in providers:
client = OpenAI(api_key=key, base_url="https://xget.xi-xu.me/ip" + path) # 使用 Xget
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": f"Hello, who are you?"}],
)
print(name, "=>", response.choices[0].message.content)
JavaScript/Node.js 中使用
// OpenAI API 加速
import OpenAI from "openai";
const openaiClient = new OpenAI({
apiKey: "your-openai-api-key",
baseURL: "https://xget.xi-xu.me/ip/openai/v1", // 使用 Xget
});
async function chatWithGPT() {
const response = await openaiClient.responses.create({
model: "gpt-5.1",
input: "Hello, GPT!",
});
console.log(response.output_text);
}
// Claude API 加速
import Anthropic from "@anthropic-ai/sdk";
const anthropicClient = new Anthropic({
apiKey: "your-claude-api-key",
baseURL: "https://xget.xi-xu.me/ip/anthropic", // 使用 Xget
});
async function chatWithClaude() {
const message = await anthropicClient.messages.create({
model: "claude-sonnet-4-5",
max_tokens: 256,
messages: [
{
role: "user",
content: "Hello, Claude!",
},
],
});
console.log(message.content[0].text);
}
// Gemini API 加速
import { GoogleGenAI } from "@google/genai";
const geminiClient = new GoogleGenAI({
apiKey: "your-gemini-api-key",
});
async function chatWithGemini() {
const response = await geminiClient.models.generateContent({
model: "gemini-3-pro-preview",
contents: "Hello, Gemini!",
config: {
httpOptions: {
baseUrl: "https://xget.xi-xu.me/ip/gemini", // 使用 Xget
},
},
});
console.log(response.text);
}
環境變數配置
# 在 .env 檔案中配置
OPENAI_BASE_URL=https://xget.xi-xu.me/ip/openai
ANTHROPIC_BASE_URL=https://xget.xi-xu.me/ip/anthropic
GEMINI_BASE_URL=https://xget.xi-xu.me/ip/gemini
COHERE_BASE_URL=https://xget.xi-xu.me/ip/cohere
MISTRAL_AI_BASE_URL=https://xget.xi-xu.me/ip/mistralai
GROQ_BASE_URL=https://xget.xi-xu.me/ip/groq
然後在程式碼中使用:
import os
from openai import OpenAI
# 從環境變數讀取配置
client = OpenAI(
api_key=os.getenv("OPENAI_API_KEY"),
base_url=os.getenv("OPENAI_BASE_URL") # 自動使用 Xget
)
🚀 部署
部署到 Cloudflare Workers
-
fork 本儲存庫:Fork xixu-me/Xget
-
獲取 Cloudflare 憑證:
- 存取帳戶 API 權杖建立並記錄 API 權杖,使用「編輯 Cloudflare Workers」範本
- 存取 Workers 和 Pages 記錄 Account ID
-
配置 GitHub Secrets:
- 進入您的 GitHub 儲存庫 → Settings → Secrets and variables → Actions
- 新增以下 secrets:
CLOUDFLARE_API_TOKEN:您的 API 權杖CLOUDFLARE_ACCOUNT_ID:您的 Account ID
-
觸發部署:
- 推送程式碼到
main分支會自動觸發部署 - 僅修改文件檔案(
.md)、LICENSE、.gitignore等不會觸發部署 - 也可以在 GitHub Actions 頁面手動觸發部署
- 推送程式碼到
-
綁定自訂網域(可選):在 Cloudflare Workers 控制台中綁定您的自訂網域
部署到 Cloudflare Pages
-
fork 本儲存庫:Fork xixu-me/Xget
-
獲取 Cloudflare 憑證:
- 存取帳戶 API 權杖建立並記錄 API 權杖,使用「編輯 Cloudflare Workers」範本
- 存取 Workers 和 Pages 記錄 Account ID
-
配置 GitHub Secrets:
- 進入您的 GitHub 儲存庫 → Settings → Secrets and variables → Actions
- 新增以下 secrets:
CLOUDFLARE_API_TOKEN:您的 API 權杖CLOUDFLARE_ACCOUNT_ID:您的 Account ID
-
觸發部署:
- 儲存庫會自動將 Workers 程式碼轉換為 Pages 相容格式並同步到
pages分支 - 推送程式碼到
main分支會自動觸發同步和部署工作流程 - 僅修改文件檔案(
.md)、LICENSE、.gitignore等不會觸發部署 - 也可以在 GitHub Actions 頁面手動觸發部署
- 儲存庫會自動將 Workers 程式碼轉換為 Pages 相容格式並同步到
-
綁定自訂網域(可選):在 Cloudflare Pages 控制台中綁定您的自訂網域
注意:pages 分支是從 main 分支自動生成的。請勿手動編輯 pages 分支,因為它會被同步工作流程覆蓋。
部署到 EdgeOne Pages
-
fork 本儲存庫:Fork xixu-me/Xget
-
獲取 EdgeOne Pages API Token:
- 存取中國站 EdgeOne 控制台或國際站 EdgeOne 控制台建立並記錄 API Token
-
配置 GitHub Secrets:
- 進入您的 GitHub 儲存庫 → Settings → Secrets and variables → Actions
- 新增以下 secret:
EDGEONE_API_TOKEN:您的 API Token
-
觸發部署:
- 儲存庫會自動將 Workers 程式碼轉換為 Pages 相容格式並同步到
pages分支 - 推送程式碼到
main分支會自動觸發同步和部署工作流程 - 僅修改文件檔案(
.md)、LICENSE、.gitignore等不會觸發部署 - 也可以在 GitHub Actions 頁面手動觸發部署
- 儲存庫會自動將 Workers 程式碼轉換為 Pages 相容格式並同步到
-
綁定自訂網域(可選):在 EdgeOne Pages 控制台中綁定您的自訂網域
注意:pages 分支是從 main 分支自動生成的。請勿手動編輯 pages 分支,因為它會被同步工作流程覆蓋。
部署到 Vercel
-
fork 本儲存庫:Fork xixu-me/Xget
-
獲取 Vercel 憑證:
- 存取 Vercel Account Settings 建立並記錄 Access Token
- 存取 Team Settings 記錄 Team ID
- 新建專案後存取專案的 Settings 記錄 Project ID
-
配置 GitHub Secrets:
- 進入您的 GitHub 儲存庫 → Settings → Secrets and variables → Actions
- 新增以下 secrets:
VERCEL_TOKEN:您的 Access TokenVERCEL_ORG_ID:您的 Team IDVERCEL_PROJECT_ID:您的 Project ID
-
觸發部署:
- 儲存庫會自動將 Workers 程式碼轉換為 Functions 相容格式並同步到
functions分支 - 推送程式碼到
main分支會自動觸發同步和部署工作流程 - 僅修改文件檔案(
.md)、LICENSE、.gitignore等不會觸發部署 - 也可以在 GitHub Actions 頁面手動觸發部署
- 儲存庫會自動將 Workers 程式碼轉換為 Functions 相容格式並同步到
-
綁定自訂網域(可選):在 Vercel 控制台中綁定您的自訂網域
注意:functions 分支是從 main 分支自動生成的。請勿手動編輯 functions 分支,因為它會被同步工作流程覆蓋。
部署到 Netlify
-
fork 本儲存庫:Fork xixu-me/Xget
-
獲取 Netlify 憑證:
- 存取 Netlify User Settings 建立並記錄 personal access token
- 新建專案後存取 Project configuration 記錄 Project ID
-
配置 GitHub Secrets:
- 進入您的 GitHub 儲存庫 → Settings → Secrets and variables → Actions
- 新增以下 secrets:
NETLIFY_AUTH_TOKEN:您的 personal access tokenNETLIFY_SITE_ID:您的 Project ID
-
觸發部署:
- 儲存庫會自動將 Workers 程式碼轉換為 Functions 相容格式並同步到
functions分支 - 推送程式碼到
main分支會自動觸發同步和部署工作流程 - 僅修改文件檔案(
.md)、LICENSE、.gitignore等不會觸發部署 - 也可以在 GitHub Actions 頁面手動觸發部署
- 儲存庫會自動將 Workers 程式碼轉換為 Functions 相容格式並同步到
-
綁定自訂網域(可選):在 Netlify 控制台中綁定您的自訂網域
注意:functions 分支是從 main 分支自動生成的。請勿手動編輯 functions 分支,因為它會被同步工作流程覆蓋。
部署到 Deno Deploy
-
fork 本儲存庫:Fork xixu-me/Xget
-
切換預設分支:
- 進入您的 GitHub 儲存庫 → Settings → General → Default branch
- 將預設分支從
main切換到functions
-
部署到 Deno Deploy:
- 參考 Deno Deploy 官方文件執行部署
- 在 Deno Deploy 控制台建立新專案並連接您的 GitHub 儲存庫
-
綁定自訂網域(可選):在 Deno Deploy 控制台中綁定您的自訂網域
注意:functions 分支是從 main 分支自動生成的。請勿手動編輯 functions 分支,因為它會被同步工作流程覆蓋。
自託管部署
如果您希望在自己的伺服器上執行 Xget,可以使用 Docker 或 Podman 部署:
使用預先建置鏡像
從 GitHub Container Registry 拉取並執行預先建置的鏡像:
使用 Docker:
# 拉取最新鏡像
docker pull ghcr.io/xixu-me/xget:latest
# 執行容器
docker run -d \
--name xget \
-p 8080:8080 \
ghcr.io/xixu-me/xget:latest
使用 Podman:
# 拉取最新鏡像
podman pull ghcr.io/xixu-me/xget:latest
# 執行容器
podman run -d \
--name xget \
-p 8080:8080 \
ghcr.io/xixu-me/xget:latest
本地建置
從原始碼建置容器鏡像:
使用 Docker:
# 克隆儲存庫
git clone https://github.com/xixu-me/Xget.git
cd Xget
# 建置鏡像
docker build -t xget:local .
# 執行容器
docker run -d \
--name xget \
-p 8080:8080 \
xget:local
使用 Podman:
# 克隆儲存庫
git clone https://github.com/xixu-me/Xget.git
cd Xget
# 建置鏡像
podman build -t xget:local .
# 執行容器
podman run -d \
--name xget \
-p 8080:8080 \
xget:local
使用 Docker Compose / Podman Compose
建立 docker-compose.yml 檔案:
version: '3.8'
services:
xget:
image: ghcr.io/xixu-me/xget:latest
container_name: xget
ports:
- "8080:8080"
restart: unless-stopped
使用 Docker Compose:
docker compose up -d
使用 Podman Compose:
podman compose up -d
部署完成後,Xget 將在 8080 連接埠執行。
如果您希望在 DigitalOcean 上部署和執行 Xget,可以參考文件《Deploying and Optimizing Xget on DigitalOcean》。透過下方推薦連結註冊帳戶,可獲得 200 美元代金券積分,可用於建立 Droplet、Kubernetes、App Platform 等資源:
注意:自託管部署不包括全球邊緣網路加速,效能取決於您的伺服器配置和網路環境。
🔧 配置
配置參數
您可以透過修改 src/config/index.js 來自訂配置:
export const CONFIG = {
TIMEOUT_SECONDS: 30, // 請求逾時時間(秒)
MAX_RETRIES: 3, // 最大重試次數
RETRY_DELAY_MS: 1000, // 重試延遲時間(毫秒)
CACHE_DURATION: 1800, // 快取持續時間(1800秒 = 30分鐘)
SECURITY: {
ALLOWED_METHODS: ["GET", "HEAD"], // 允許的 HTTP 方法(Git 操作會動態允許 POST)
ALLOWED_ORIGINS: ["*"], // 允許的 CORS 來源
MAX_PATH_LENGTH: 2048, // 最大路徑長度(字元)
},
};
效能調優建議
- 快取最佳化:根據使用模式調整
CACHE_DURATION,頻繁更新的儲存庫可適當降低 - 逾時設定:網路條件較差時可適當增加
TIMEOUT_SECONDS - 重試策略:高延遲環境下可增加
MAX_RETRIES和RETRY_DELAY_MS
新增新平台
要新增對新平台的支援,編輯 src/config/platforms.js:
export const PLATFORMS = {
// 現有平台...
// 新平台範例
custom: {
base: "https://example.com",
transform: (path) => path.replace(/^\/custom\//, "/"),
},
};
🚧 開發
-
儲存庫設定
git clone https://github.com/xixu-me/Xget.git cd Xget npm install npx wrangler login # 首次使用 -
本地開發
npm run dev # 啟動開發伺服器 (http://localhost:8787) npm run test:run # 執行完整測試套件 npm run test:coverage # 生成測試覆蓋率報告 npm run lint # 程式碼檢查 npm run format # 程式碼格式化 npm run deploy # 部署到生產環境
🧪 測試
儲存庫包含完整的測試套件,確保程式碼品質和功能正確性。
完整測試
# 安裝測試依賴項
npm install
# 執行所有測試
npm run test:run
# 生成覆蓋率報告
npm run test:coverage
# 監視模式
npm run test:watch
測試覆蓋
- 單元測試: 核心功能、平台配置、效能監控
- 整合測試: 端到端流程、平台整合、Git 協定
- 安全測試: 輸入驗證、安全標頭、權限控制
- 效能測試: 回應時間、記憶體使用、並行處理
🔍 故障排除
常見問題
Q: 下載速度沒有明顯提升? A: 檢查來源檔案是否已經在 CDN 邊緣節點快取,首次存取可能較慢,後續存取會顯著提升。
Q: Git 操作失敗? A: 確認使用了正確的 URL 格式,且 Git 用戶端版本支援 HTTPS 代理。
Q: 部署後無法存取?
A: 檢查 Cloudflare Workers 網域是否正確綁定,確認 wrangler.toml 配置正確。
Q: 出現 400 錯誤? A: 檢查 URL 路徑格式,確認平台前綴正確使用。
效能監控
在回應標頭中返回效能指標:
X-Performance-Metrics: 包含請求各階段的耗時統計X-Cache-Status: 顯示快取命中狀態
日誌除錯
在開發環境中,您可以透過 Cloudflare Workers 控制台檢視詳細日誌:
npx wrangler dev --log-level debug
⚠️ 免責聲明
- 合法合規使用:本儲存庫旨在為程式碼儲存庫、軟體包註冊表、AI 推理 API、容器鏡像、模型、資料集及更多合法開發者資源提供統一加速服務。使用者應嚴格遵守所在司法管轄區法律法規及相關平台服務條款,任何非法用途的法律責任由使用者自行承擔
- 非關聯性與獨立責任:本儲存庫與各第三方平台不存在任何隸屬、代理或合作關係。任何基於本儲存庫的 fork、二次開發、再分發或衍生版本均由其維護者獨立承擔全部責任;作者、維護者及貢獻者不對衍生儲存庫的任何行為或後果承擔法律或連帶責任
- 無擔保與免責條款:在適用法律允許的最大範圍內,本儲存庫按「現狀(AS IS)」提供,不提供任何明示或暗示擔保(包括但不限於適銷性、特定用途適用性、非侵權等)。對因使用本儲存庫而造成的任何直接或間接損失(包括但不限於資料遺失、業務中斷、利潤損失等),作者、維護者及貢獻者不承擔任何責任
- 風險自擔原則:使用者應自行評估使用風險,確保其使用行為合法合規,不侵犯第三方權益,不得將本儲存庫用於任何違法、侵權、惡意或不當用途
- 第三方平台合規:使用者應遵守相關平台的服務條款、API 使用政策、速率限制及版權要求,避免對源平台造成過載或干擾。各平台對其內容、服務及政策擁有最終解釋權
- 智慧財產權保護:透過本儲存庫獲取的內容受相應版權法保護。使用者應遵守相關許可協議、版權聲明及使用條款,不得從事任何侵犯智慧財產權的行為
- 安全防護建議:雖然本儲存庫採用無日誌架構,不儲存使用者請求資料,但基於網際網路傳輸的固有風險,建議使用者對下載內容進行安全掃描,尤其對可執行檔案、指令碼等保持謹慎
- 開源性質聲明:本儲存庫為開源專案,作者與貢獻者不承擔提供技術支援、錯誤修復或持續維護的義務。外部貢獻的合併不代表對特定用途或效果的承諾與背書
- 名稱使用規範:嚴禁任何可能暗示作者或貢獻者提供商業合作、技術支援、擔保或背書的表述。涉及儲存庫名稱或作者標識的使用應遵循相關法律法規及通用規範
- 免責聲明更新:本免責聲明可能隨儲存庫發展或法律環境變化進行更新修訂。使用者繼續使用、複製、分發或修改本儲存庫即視為接受最新版本的免責聲明
🤝 貢獻
我們歡迎各種形式的貢獻!請檢視貢獻指南了解如何參與儲存庫開發。
- 報告問題: 使用 issue 範本報告 bug 或提出功能請求
- 提交程式碼: fork 儲存庫,建立功能分支,提交 pull request
- 改進文件: 修正錯誤、新增範例、完善說明
- 測試反饋: 在不同環境下測試並提供反饋
🌟 Star 歷史
📝 許可證
版權所有 © Xi Xu。
本儲存庫採用 GPL-3.0 許可證 - 檢視 LICENSE 檔案了解詳情。
如果這個儲存庫對您有幫助,請考慮給它一個 ⭐ star!
Made with ❤️ by Xi Xu