Replaced deprecated 'docker-compose' and 'podman-compose' commands with the recommended 'docker compose' and 'podman compose' syntax in all README files. Also made minor whitespace adjustments in diagram sections for consistency.
2804 lines
92 KiB
Markdown
2804 lines
92 KiB
Markdown
<div align="center">
|
||
|
||
# Xget 🚀
|
||
|
||
<a href="https://trendshift.io/repositories/14768" target="_blank"><img src="https://trendshift.io/api/badge/repositories/14768" alt="xixu-me%2FXget | Trendshift" width="250" height="55"/></a>
|
||
|
||
[](https://zread.ai/xixu-me/Xget)
|
||
[](https://deepwiki.com/xixu-me/Xget)
|
||
[](#-ecosystem-integration)
|
||
[](#-ecosystem-integration)
|
||
|
||
[](#deploy-to-cloudflare-workers)
|
||
[](#deploy-to-edgeone-pages)
|
||
[](#deploy-to-vercel)
|
||
[](#deploy-to-netlify)
|
||
[](#deploy-to-deno-deploy)
|
||
[](#self-hosted-deployment)
|
||
[](#self-hosted-deployment)
|
||
|
||
**English** | [汉语(简体)](README.zh-Hans.md) | [漢語(繁體)](README.zh-Hant.md)
|
||
|
||
</div>
|
||
|
||
[](#github)
|
||
[](#gitlab)
|
||
[](#gitea)
|
||
[](#codeberg)
|
||
[](#sourceforge)
|
||
[](#aosp-android-open-source-project)
|
||
[](#hugging-face-mirror)
|
||
[](#civitai-ai-model-platform)
|
||
[](#npm-package-acceleration)
|
||
[](#python-package-acceleration)
|
||
[](#conda-package-acceleration)
|
||
[](#maven-package-acceleration)
|
||
[](#apache-software-download-acceleration)
|
||
[](#gradle-package-acceleration)
|
||
[](#homebrew-package-acceleration)
|
||
[](#ruby-package-acceleration)
|
||
[](#r-package-acceleration)
|
||
[](#perl-package-acceleration)
|
||
[](#texlatex-package-acceleration)
|
||
[](#go-module-acceleration)
|
||
[](#nuget-package-acceleration)
|
||
[](#rust-package-acceleration)
|
||
[](#php-package-acceleration)
|
||
[](#debianubuntu-apt-configuration)
|
||
[](#debianubuntu-apt-configuration)
|
||
[](#fedora-dnf-configuration)
|
||
[](#rocky-linux-dnf-configuration)
|
||
[](#opensuse-zypper-configuration)
|
||
[](#arch-linux-pacman-configuration)
|
||
[](#arxiv-paper-download)
|
||
[](#f-droid-repository-mirror)
|
||
[](#jenkins-plugin-download)
|
||
[](#container-registries)
|
||
[](#ai-inference-providers)
|
||
|
||
Ultra-high-performance, secure, all-in-one acceleration engine for developer resources that significantly outperforms traditional solutions, delivering unified, efficient acceleration across code repositories, model and dataset hubs, package registries, container registries, AI inference providers, and more.
|
||
|
||
In-depth technical analysis article published: ***[Deep Dive into Xget: A High-Performance, Multi-Protocol, and Secure Acceleration Engine for Developer Resources](https://blog.xi-xu.me/2025/10/07/deep-dive-into-xget-technology-en.html)***.
|
||
|
||
## 🎯 Quick Start
|
||
|
||
**Pre-deployed Instance (no reliability guarantee): `xget.xi-xu.me`**
|
||
|
||
**URL Converter:** [**`xuc.xi-xu.me`**](https://xuc.xi-xu.me) - Convert any supported platform URL to Xget's acceleration format with one click!
|
||
|
||
## 🌟 Core Advantages - Why Choose Xget?
|
||
|
||
### ⚡ Extreme Performance - Breaking Through Traditional Accelerator Bottlenecks
|
||
|
||
- **⚡ Millisecond Response**: Cloudflare's global 330+ edge nodes, average response time < 50ms
|
||
- **🌐 HTTP/3 Ultra-Fast Protocol**: Latest HTTP/3 protocol enabled, 40% reduction in connection latency, 30% increase in transmission speed
|
||
- **📦 Intelligent Multi-Compression**: Triple compression algorithms (gzip, deflate, brotli), 60% improvement in transmission efficiency
|
||
- **🔗 Zero-Latency Pre-Connection**: Connection warm-up and keep-alive, eliminating handshake overhead for second-level responses
|
||
- **⚡ Parallel Chunked Download**: Full support for HTTP Range requests, multiplied multi-threaded download speeds
|
||
- **🎯 Smart Routing Optimization**: Automatically selects optimal transmission paths, avoiding network congestion nodes
|
||
|
||
### 🌐 Deep Multi-Platform Integration
|
||
|
||
- **All-in-One Multi-Platform Support**: Unified support for mainstream platforms in various development scenarios
|
||
- **Intelligent Recognition and Conversion**: Automatically recognizes platform prefixes and converts to correct URL structures for target platforms
|
||
- **Consistent Acceleration Experience**: Enjoy unified and stable ultra-fast download experience regardless of file type or source
|
||
|
||
### 🔒 Enterprise-Grade Security
|
||
|
||
- **Multi-Layer Security Headers**:
|
||
- `Strict-Transport-Security`: Enforces HTTPS transmission, prevents man-in-the-middle attacks
|
||
- `X-Frame-Options: DENY`: Prevents clickjacking attacks
|
||
- `X-XSS-Protection`: Built-in XSS protection mechanism
|
||
- `Content-Security-Policy`: Strict content security policy
|
||
- `Referrer-Policy`: Controls referrer information leakage
|
||
- **Request Validation Mechanism**:
|
||
- HTTP method whitelist: Regular requests limited to GET/HEAD, Git operations dynamically allow POST
|
||
- Path length limit: Prevents excessively long URL attacks (max 2048 characters)
|
||
- Input sanitization: Prevents path traversal and injection attacks
|
||
- **Timeout Protection**: 30-second request timeout, prevents resource exhaustion and malicious requests
|
||
|
||
### 🚀 Modern Architecture and Reliability
|
||
|
||
- **Intelligent Retry Mechanism**:
|
||
- Maximum 3 retries with linear delay strategy (1000ms × retry count)
|
||
- Automatic error recovery, improved download success rate
|
||
- Timeout detection and interruption handling
|
||
- **Efficient Caching Strategy**:
|
||
- 1800 seconds (30 minutes) default cache duration, significantly reduces origin server pressure
|
||
- Git operations skip caching to ensure real-time data
|
||
- Edge caching based on Cloudflare Cache API
|
||
- **Performance Monitoring System**:
|
||
- Built-in `PerformanceMonitor` class for real-time tracking of request stage durations
|
||
- Detailed performance data provided via `X-Performance-Metrics` response header
|
||
- Cache hit rate statistics and optimization recommendations
|
||
|
||
### 🎯 Full Git Protocol Compatibility
|
||
|
||
- **Smart Protocol Detection**:
|
||
- Automatically recognizes Git-specific endpoints (`/info/refs`, `/git-upload-pack`, `/git-receive-pack`)
|
||
- Detects Git client User-Agent patterns
|
||
- Supports query parameters like `service=git-upload-pack`
|
||
- **Complete Operation Support**:
|
||
- `git clone`: Full repository cloning, supports shallow clones and branch specification
|
||
- `git push`: Code push and branch management
|
||
- `git pull/fetch`: Incremental updates and remote synchronization
|
||
- `git submodule`: Recursive submodule cloning
|
||
- **Protocol Optimization**:
|
||
- Preserves Git-specific request headers and authentication information
|
||
- Smart User-Agent handling (default `git/2.34.1`)
|
||
- Supports Git LFS large file transfer
|
||
|
||
### 📱 Ecosystem Integration
|
||
|
||
- **Dedicated Browser Extension**: [Xget Now](https://github.com/xixu-me/Xget-Now) provides seamless experience
|
||
- Automatic URL redirection, no manual URL modification needed
|
||
- Support for custom Xget instance domains
|
||
- Multi-platform preference settings and blacklist/whitelist management
|
||
- Local processing ensures privacy and security
|
||
- **Download Tool Compatibility**: Perfect support for wget, cURL, aria2, IDM, and other mainstream download tools
|
||
- **CI/CD Integration**: Can be used directly in GitHub Actions, GitLab CI, and other environments
|
||
|
||
## 🏗️ System Architecture
|
||
|
||
### Request Processing Flow
|
||
|
||
```mermaid
|
||
graph TD
|
||
Request[User Request / User-Agent] --> Identify{Identify Platform}
|
||
Identify -->|Invalid| Error[Return Error]
|
||
Identify -->|Valid| Transform[Transform Path]
|
||
|
||
Transform --> CheckProtocol{Check Protocol}
|
||
|
||
CheckProtocol -->|Git| GitHandler[Git Protocol Adapter]
|
||
CheckProtocol -->|Docker| DockerHandler[Docker Protocol Adapter]
|
||
CheckProtocol -->|AI| AIHandler[AI Inference Adapter]
|
||
CheckProtocol -->|Standard| StdHandler[Standard Adapter]
|
||
|
||
GitHandler --> Upstream[Fetch Upstream]
|
||
DockerHandler --> Upstream
|
||
AIHandler --> Upstream
|
||
|
||
StdHandler --> CacheCheck{Check Cache}
|
||
CacheCheck -->|Hit| ReturnCache[Return Cached Response]
|
||
CacheCheck -->|Miss| Upstream
|
||
|
||
Upstream -->|Success| ProcessResponse[Process Response]
|
||
Upstream -->|Failure| Retry{Retry?}
|
||
|
||
Retry -->|Yes| Wait["Wait (Backoff)"] --> Upstream
|
||
Retry -->|No| Error
|
||
|
||
ProcessResponse --> Finalize[Add Headers & Return]
|
||
Finalize --> Response[Response]
|
||
```
|
||
|
||
### Component Architecture
|
||
|
||
```mermaid
|
||
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 Conversion Rules
|
||
|
||
Using the pre-deployed instance **`xget.xi-xu.me`** or your own deployed instance, simply replace the domain and add the platform prefix:
|
||
|
||
### Conversion Format
|
||
|
||
| Platform | Platform Prefix | Original URL Format | Accelerated URL Format |
|
||
|----------|----------------|---------------------|------------------------|
|
||
| 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/...` and `https://conda.anaconda.org/...` | `https://xget.xi-xu.me/conda/...` and `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 Modules | `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/...` |
|
||
| 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 Plugins | `jenkins` | `https://updates.jenkins.io/...` | `https://xget.xi-xu.me/jenkins/...` |
|
||
| Container Registries | `cr` | See [Container Registries](#container-registries) | See [Container Registries](#container-registries) |
|
||
| AI Inference Providers | `ip` | See [AI Inference Providers](#ai-inference-providers) | See [AI Inference Providers](#ai-inference-providers) |
|
||
|
||
### Platform Conversion Examples
|
||
|
||
#### GitHub
|
||
|
||
```url
|
||
# Original URL
|
||
https://github.com/microsoft/vscode/archive/refs/heads/main.zip
|
||
|
||
# Converted (add gh prefix)
|
||
https://xget.xi-xu.me/gh/microsoft/vscode/archive/refs/heads/main.zip
|
||
```
|
||
|
||
#### GitHub Gist
|
||
|
||
```url
|
||
# Original URL
|
||
https://gist.github.com/xixu-me/e2ea9db6b1f143892495f796fef18631/raw/3b8807172ee492d0da3a7e370b0fb88fc97b53e6/Free-ChatGPT-Paid-Plan.md
|
||
|
||
# Converted (add gist prefix)
|
||
https://xget.xi-xu.me/gist/xixu-me/e2ea9db6b1f143892495f796fef18631/raw/3b8807172ee492d0da3a7e370b0fb88fc97b53e6/Free-ChatGPT-Paid-Plan.md
|
||
```
|
||
|
||
#### GitLab
|
||
|
||
```url
|
||
# Original URL
|
||
https://gitlab.com/gitlab-org/gitlab/-/archive/master/gitlab-master.zip
|
||
|
||
# Converted (add gl prefix)
|
||
https://xget.xi-xu.me/gl/gitlab-org/gitlab/-/archive/master/gitlab-master.zip
|
||
```
|
||
|
||
#### Gitea
|
||
|
||
```url
|
||
# Original URL
|
||
https://gitea.com/gitea/gitea/archive/master.zip
|
||
|
||
# Converted (add gitea prefix)
|
||
https://xget.xi-xu.me/gitea/gitea/gitea/archive/master.zip
|
||
```
|
||
|
||
#### Codeberg
|
||
|
||
```url
|
||
# Original URL
|
||
https://codeberg.org/forgejo/forgejo/archive/forgejo.zip
|
||
|
||
# Converted (add codeberg prefix)
|
||
https://xget.xi-xu.me/codeberg/forgejo/forgejo/archive/forgejo.zip
|
||
```
|
||
|
||
#### SourceForge
|
||
|
||
```url
|
||
# Original URL
|
||
https://sourceforge.net/projects/sevenzip/files/7-Zip/23.01/7z2301-x64.exe/download
|
||
|
||
# Converted (add sf prefix)
|
||
https://xget.xi-xu.me/sf/projects/sevenzip/files/7-Zip/23.01/7z2301-x64.exe/download
|
||
```
|
||
|
||
#### AOSP (Android Open Source Project)
|
||
|
||
```url
|
||
# AOSP project original URL
|
||
https://android.googlesource.com/platform/frameworks/base
|
||
|
||
# Converted (add aosp prefix)
|
||
https://xget.xi-xu.me/aosp/platform/frameworks/base
|
||
|
||
# AOSP device tree original URL
|
||
https://android.googlesource.com/device/google/pixel
|
||
|
||
# Converted (add aosp prefix)
|
||
https://xget.xi-xu.me/aosp/device/google/pixel
|
||
```
|
||
|
||
#### Hugging Face
|
||
|
||
```url
|
||
# Model file original URL
|
||
https://huggingface.co/microsoft/DialoGPT-medium/resolve/main/pytorch_model.bin
|
||
|
||
# Converted (add hf prefix)
|
||
https://xget.xi-xu.me/hf/microsoft/DialoGPT-medium/resolve/main/pytorch_model.bin
|
||
|
||
# Dataset file original URL
|
||
https://huggingface.co/datasets/rajpurkar/squad/resolve/main/plain_text/train-00000-of-00001.parquet
|
||
|
||
# Converted (add hf prefix)
|
||
https://xget.xi-xu.me/hf/datasets/rajpurkar/squad/resolve/main/plain_text/train-00000-of-00001.parquet
|
||
```
|
||
|
||
#### Civitai
|
||
|
||
```url
|
||
# AI model download original URL
|
||
https://civitai.com/api/download/models/128713
|
||
|
||
# Converted (add civitai prefix)
|
||
https://xget.xi-xu.me/civitai/api/download/models/128713
|
||
|
||
# Model API original URL
|
||
https://civitai.com/api/v1/models/7240
|
||
|
||
# Converted (add civitai prefix)
|
||
https://xget.xi-xu.me/civitai/api/v1/models/7240
|
||
|
||
# Model version API original URL
|
||
https://civitai.com/api/v1/model-versions/128713
|
||
|
||
# Converted (add civitai prefix)
|
||
https://xget.xi-xu.me/civitai/api/v1/model-versions/128713
|
||
```
|
||
|
||
#### npm
|
||
|
||
```url
|
||
# Package file original URL
|
||
https://registry.npmjs.org/react/-/react-18.2.0.tgz
|
||
|
||
# Converted (add npm prefix)
|
||
https://xget.xi-xu.me/npm/react/-/react-18.2.0.tgz
|
||
|
||
# Package metadata original URL
|
||
https://registry.npmjs.org/lodash
|
||
|
||
# Converted (add npm prefix)
|
||
https://xget.xi-xu.me/npm/lodash
|
||
```
|
||
|
||
#### PyPI
|
||
|
||
```url
|
||
# Python package file original URL
|
||
https://pypi.org/packages/source/r/requests/requests-2.31.0.tar.gz
|
||
|
||
# Converted (add pypi prefix)
|
||
https://xget.xi-xu.me/pypi/packages/source/r/requests/requests-2.31.0.tar.gz
|
||
|
||
# Wheel file original URL
|
||
https://pypi.org/packages/py3/r/requests/requests-2.31.0-py3-none-any.whl
|
||
|
||
# Converted (add pypi prefix)
|
||
https://xget.xi-xu.me/pypi/packages/py3/r/requests/requests-2.31.0-py3-none-any.whl
|
||
```
|
||
|
||
#### conda
|
||
|
||
```url
|
||
# Default channel package file original URL
|
||
https://repo.anaconda.com/pkgs/main/linux-64/numpy-1.24.3-py311h08b1b3b_1.conda
|
||
|
||
# Converted (add conda prefix)
|
||
https://xget.xi-xu.me/conda/pkgs/main/linux-64/numpy-1.24.3-py311h08b1b3b_1.conda
|
||
|
||
# Community channel metadata original URL
|
||
https://conda.anaconda.org/conda-forge/linux-64/repodata.json
|
||
|
||
# Converted (add conda/community prefix)
|
||
https://xget.xi-xu.me/conda/community/conda-forge/linux-64/repodata.json
|
||
```
|
||
|
||
#### Maven
|
||
|
||
```url
|
||
# Maven Central Repository JAR file original URL
|
||
https://repo1.maven.org/maven2/org/springframework/spring-core/5.3.21/spring-core-5.3.21.jar
|
||
|
||
# Converted (add maven prefix)
|
||
https://xget.xi-xu.me/maven/maven2/org/springframework/spring-core/5.3.21/spring-core-5.3.21.jar
|
||
|
||
# Maven metadata original URL
|
||
https://repo1.maven.org/maven2/org/apache/commons/commons-lang3/maven-metadata.xml
|
||
|
||
# Converted (add maven prefix)
|
||
https://xget.xi-xu.me/maven/maven2/org/apache/commons/commons-lang3/maven-metadata.xml
|
||
```
|
||
|
||
#### Apache Software Download
|
||
|
||
```url
|
||
# Apache software download original URL
|
||
https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
|
||
|
||
# Converted (add apache prefix)
|
||
https://xget.xi-xu.me/apache/kafka/3.6.1/kafka_2.13-3.6.1.tgz
|
||
|
||
# Apache Maven download original URL
|
||
https://downloads.apache.org/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz
|
||
|
||
# Converted (add apache prefix)
|
||
https://xget.xi-xu.me/apache/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz
|
||
|
||
# Apache Spark download original URL
|
||
https://downloads.apache.org/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz
|
||
|
||
# Converted (add apache prefix)
|
||
https://xget.xi-xu.me/apache/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz
|
||
```
|
||
|
||
#### Gradle
|
||
|
||
```url
|
||
# Gradle plugin portal JAR file original URL
|
||
https://plugins.gradle.org/m2/org/gradle/gradle-hello-world-plugin/0.2/gradle-hello-world-plugin-0.2.jar
|
||
|
||
# Converted (add gradle prefix)
|
||
https://xget.xi-xu.me/gradle/m2/org/gradle/gradle-hello-world-plugin/0.2/gradle-hello-world-plugin-0.2.jar
|
||
|
||
# Gradle plugin metadata original URL
|
||
https://plugins.gradle.org/m2/com/github/ben-manes/gradle-versions-plugin/0.51.0/gradle-versions-plugin-0.51.0.module
|
||
|
||
# Converted (add gradle prefix)
|
||
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
|
||
|
||
```url
|
||
# Homebrew formula repository original URL
|
||
https://github.com/Homebrew/homebrew-core/raw/HEAD/Formula/g/git.rb
|
||
|
||
# Converted (add homebrew prefix)
|
||
https://xget.xi-xu.me/homebrew/homebrew-core/raw/HEAD/Formula/g/git.rb
|
||
|
||
# Homebrew API original URL
|
||
https://formulae.brew.sh/api/formula/git.json
|
||
|
||
# Converted (add homebrew/api prefix)
|
||
https://xget.xi-xu.me/homebrew/api/formula/git.json
|
||
|
||
# Homebrew Bottles original URL
|
||
https://ghcr.io/v2/homebrew/core/git/manifests/2.39.0
|
||
|
||
# Converted (add homebrew/bottles prefix)
|
||
https://xget.xi-xu.me/homebrew/bottles/v2/homebrew/core/git/manifests/2.39.0
|
||
```
|
||
|
||
#### RubyGems
|
||
|
||
```url
|
||
# RubyGems package file original URL
|
||
https://rubygems.org/gems/rails-7.0.4.gem
|
||
|
||
# Converted (add rubygems prefix)
|
||
https://xget.xi-xu.me/rubygems/gems/rails-7.0.4.gem
|
||
|
||
# RubyGems API original URL
|
||
https://rubygems.org/api/v1/gems/nokogiri.json
|
||
|
||
# Converted (add rubygems prefix)
|
||
https://xget.xi-xu.me/rubygems/api/v1/gems/nokogiri.json
|
||
```
|
||
|
||
#### CRAN
|
||
|
||
```url
|
||
# CRAN package file original URL
|
||
https://cran.r-project.org/src/contrib/ggplot2_3.5.2.tar.gz
|
||
|
||
# Converted (add cran prefix)
|
||
https://xget.xi-xu.me/cran/src/contrib/ggplot2_3.5.2.tar.gz
|
||
|
||
# CRAN package metadata original URL
|
||
https://cran.r-project.org/web/packages/dplyr/DESCRIPTION
|
||
|
||
# Converted (add cran prefix)
|
||
https://xget.xi-xu.me/cran/web/packages/dplyr/DESCRIPTION
|
||
```
|
||
|
||
#### CPAN (Perl Package Management)
|
||
|
||
```url
|
||
# CPAN module original URL
|
||
https://www.cpan.org/modules/by-module/DBI/DBI-1.643.tar.gz
|
||
|
||
# Converted (add cpan prefix)
|
||
https://xget.xi-xu.me/cpan/modules/by-module/DBI/DBI-1.643.tar.gz
|
||
|
||
# CPAN author package original URL
|
||
https://www.cpan.org/authors/id/T/TI/TIMB/DBI-1.643.tar.gz
|
||
|
||
# Converted (add cpan prefix)
|
||
https://xget.xi-xu.me/cpan/authors/id/T/TI/TIMB/DBI-1.643.tar.gz
|
||
```
|
||
|
||
#### CTAN (TeX/LaTeX Package Management)
|
||
|
||
```url
|
||
# CTAN package file original URL
|
||
https://tug.ctan.org/tex-archive/macros/latex/contrib/beamer.zip
|
||
|
||
# Converted (add ctan prefix)
|
||
https://xget.xi-xu.me/ctan/tex-archive/macros/latex/contrib/beamer.zip
|
||
|
||
# CTAN font file original URL
|
||
https://tug.ctan.org/tex-archive/fonts/cm/pk/ljfour/public/cm/dpi600/cmr10.pk
|
||
|
||
# Converted (add ctan prefix)
|
||
https://xget.xi-xu.me/ctan/tex-archive/fonts/cm/pk/ljfour/public/cm/dpi600/cmr10.pk
|
||
```
|
||
|
||
#### Go Modules
|
||
|
||
```url
|
||
# Go module proxy original URL
|
||
https://proxy.golang.org/github.com/gin-gonic/gin/@v/v1.9.1.zip
|
||
|
||
# Converted (add golang prefix)
|
||
https://xget.xi-xu.me/golang/github.com/gin-gonic/gin/@v/v1.9.1.zip
|
||
|
||
# Go module info original URL
|
||
https://proxy.golang.org/github.com/gorilla/mux/@v/list
|
||
|
||
# Converted (add golang prefix)
|
||
https://xget.xi-xu.me/golang/github.com/gorilla/mux/@v/list
|
||
```
|
||
|
||
#### NuGet
|
||
|
||
```url
|
||
# NuGet package download original URL
|
||
https://api.nuget.org/v3-flatcontainer/newtonsoft.json/13.0.3/newtonsoft.json.13.0.3.nupkg
|
||
|
||
# Converted (add nuget prefix)
|
||
https://xget.xi-xu.me/nuget/v3-flatcontainer/newtonsoft.json/13.0.3/newtonsoft.json.13.0.3.nupkg
|
||
|
||
# NuGet package metadata original URL
|
||
https://api.nuget.org/v3/registration5-semver1/microsoft.aspnetcore.app/index.json
|
||
|
||
# Converted (add nuget prefix)
|
||
https://xget.xi-xu.me/nuget/v3/registration5-semver1/microsoft.aspnetcore.app/index.json
|
||
```
|
||
|
||
#### Rust Crates
|
||
|
||
```url
|
||
# Crate download original URL
|
||
https://crates.io/api/v1/crates/serde/1.0.0/download
|
||
|
||
# Converted (add crates prefix)
|
||
https://xget.xi-xu.me/crates/serde/1.0.0/download
|
||
|
||
# Crate metadata original URL
|
||
https://crates.io/api/v1/crates/serde
|
||
|
||
# Converted (add crates prefix)
|
||
https://xget.xi-xu.me/crates/serde
|
||
|
||
# Crate search original URL
|
||
https://crates.io/api/v1/crates?q=serde
|
||
|
||
# Converted (add crates prefix)
|
||
https://xget.xi-xu.me/crates/?q=serde
|
||
```
|
||
|
||
#### Packagist
|
||
|
||
```url
|
||
# Packagist package metadata original URL
|
||
https://repo.packagist.org/p2/symfony/console.json
|
||
|
||
# Converted (add packagist prefix)
|
||
https://xget.xi-xu.me/packagist/p2/symfony/console.json
|
||
|
||
# Packagist package list original URL
|
||
https://repo.packagist.org/packages/list.json
|
||
|
||
# Converted (add packagist prefix)
|
||
https://xget.xi-xu.me/packagist/packages/list.json
|
||
```
|
||
|
||
#### Linux Distributions
|
||
|
||
```url
|
||
# Debian package original URL
|
||
https://deb.debian.org/debian/pool/main/c/curl/curl_7.88.1-10+deb12u4_amd64.deb
|
||
|
||
# Converted (add debian prefix)
|
||
https://xget.xi-xu.me/debian/debian/pool/main/c/curl/curl_7.88.1-10+deb12u4_amd64.deb
|
||
|
||
# Ubuntu package original URL
|
||
https://archive.ubuntu.com/ubuntu/pool/main/g/git/git_2.34.1-1ubuntu1.9_amd64.deb
|
||
|
||
# Converted (add ubuntu prefix)
|
||
https://xget.xi-xu.me/ubuntu/ubuntu/pool/main/g/git/git_2.34.1-1ubuntu1.9_amd64.deb
|
||
|
||
# Fedora package original 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
|
||
|
||
# Converted (add fedora prefix)
|
||
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 package original URL
|
||
https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/Packages/b/bash-5.1.8-6.el9.x86_64.rpm
|
||
|
||
# Converted (add rocky prefix)
|
||
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 package original URL
|
||
https://download.opensuse.org/distribution/leap/15.5/repo/oss/x86_64/vim-9.0.1572-150500.20.8.1.x86_64.rpm
|
||
|
||
# Converted (add opensuse prefix)
|
||
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 package original URL
|
||
https://geo.mirror.pkgbuild.com/core/os/x86_64/linux-6.6.10.arch1-1-x86_64.pkg.tar.zst
|
||
|
||
# Converted (add arch prefix)
|
||
https://xget.xi-xu.me/arch/core/os/x86_64/linux-6.6.10.arch1-1-x86_64.pkg.tar.zst
|
||
```
|
||
|
||
#### arXiv
|
||
|
||
```url
|
||
# arXiv paper PDF original URL
|
||
https://arxiv.org/pdf/2301.07041.pdf
|
||
|
||
# Converted (add arxiv prefix)
|
||
https://xget.xi-xu.me/arxiv/pdf/2301.07041.pdf
|
||
|
||
# arXiv paper source original URL
|
||
https://arxiv.org/e-print/2301.07041
|
||
|
||
# Converted (add arxiv prefix)
|
||
https://xget.xi-xu.me/arxiv/e-print/2301.07041
|
||
```
|
||
|
||
#### F-Droid
|
||
|
||
```url
|
||
# F-Droid app APK original URL
|
||
https://f-droid.org/repo/org.fdroid.fdroid_1016050.apk
|
||
|
||
# Converted (add fdroid prefix)
|
||
https://xget.xi-xu.me/fdroid/repo/org.fdroid.fdroid_1016050.apk
|
||
|
||
# F-Droid app metadata original URL
|
||
https://f-droid.org/api/v1/packages/org.fdroid.fdroid
|
||
|
||
# Converted (add fdroid prefix)
|
||
https://xget.xi-xu.me/fdroid/api/v1/packages/org.fdroid.fdroid
|
||
```
|
||
|
||
#### Jenkins Plugins
|
||
|
||
```url
|
||
# Jenkins update center original URL
|
||
https://updates.jenkins.io/update-center.json
|
||
|
||
# Converted (add jenkins prefix)
|
||
https://xget.xi-xu.me/jenkins/update-center.json
|
||
|
||
# Jenkins plugin download original URL
|
||
https://updates.jenkins.io/download/plugins/maven-plugin/3.27/maven-plugin.hpi
|
||
|
||
# Converted (add jenkins prefix)
|
||
https://xget.xi-xu.me/jenkins/download/plugins/maven-plugin/3.27/maven-plugin.hpi
|
||
```
|
||
|
||
#### Container Registries
|
||
|
||
Xget supports multiple container registries, using the `cr/[Registry Prefix]` format:
|
||
|
||
| Container Registry | Registry Prefix | Original URL Format | Accelerated URL Format |
|
||
|-------------------|----------------|---------------------|------------------------|
|
||
| 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 Container Registry | `gcr` | `https://gcr.io/...` | `https://xget.xi-xu.me/cr/gcr/...` |
|
||
| Microsoft Container Registry | `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 Container Registry | `ghcr` | `https://ghcr.io/...` | `https://xget.xi-xu.me/cr/ghcr/...` |
|
||
| GitLab Container Registry | `gitlab` | `https://registry.gitlab.com/...` | `https://xget.xi-xu.me/cr/gitlab/...` |
|
||
| Red Hat Registry | `redhat` | `https://registry.redhat.io/...` | `https://xget.xi-xu.me/cr/redhat/...` |
|
||
| Oracle Container Registry | `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 Registry | `digitalocean` | `https://registry.digitalocean.com/...` | `https://xget.xi-xu.me/cr/digitalocean/...` |
|
||
| VMware Registry | `vmware` | `https://projects.registry.vmware.com/...` | `https://xget.xi-xu.me/cr/vmware/...` |
|
||
| Kubernetes Registry | `k8s` | `https://registry.k8s.io/...` | `https://xget.xi-xu.me/cr/k8s/...` |
|
||
| Heroku Registry | `heroku` | `https://registry.heroku.com/...` | `https://xget.xi-xu.me/cr/heroku/...` |
|
||
| SUSE Registry | `suse` | `https://registry.suse.com/...` | `https://xget.xi-xu.me/cr/suse/...` |
|
||
| openSUSE Registry | `opensuse` | `https://registry.opensuse.org/...` | `https://xget.xi-xu.me/cr/opensuse/...` |
|
||
| Gitpod Registry | `gitpod` | `https://registry.gitpod.io/...` | `https://xget.xi-xu.me/cr/gitpod/...` |
|
||
|
||
```url
|
||
# Docker Hub original URL (official images)
|
||
https://registry-1.docker.io/v2/library/nginx/manifests/latest
|
||
|
||
# Converted (add cr/docker prefix)
|
||
https://xget.xi-xu.me/cr/docker/v2/nginx/manifests/latest
|
||
|
||
# Docker Hub original URL (user images)
|
||
https://registry-1.docker.io/v2/nginxinc/nginx-unprivileged/manifests/latest
|
||
|
||
# Converted (add cr/docker prefix)
|
||
https://xget.xi-xu.me/cr/docker/v2/nginxinc/nginx-unprivileged/manifests/latest
|
||
|
||
# GitHub Container Registry original URL
|
||
https://ghcr.io/v2/nginxinc/nginx-unprivileged/manifests/latest
|
||
|
||
# Converted (add cr/ghcr prefix)
|
||
https://xget.xi-xu.me/cr/ghcr/v2/nginxinc/nginx-unprivileged/manifests/latest
|
||
|
||
# Google Container Registry original URL
|
||
https://gcr.io/v2/distroless/base/manifests/latest
|
||
|
||
# Converted (add cr/gcr prefix)
|
||
https://xget.xi-xu.me/cr/gcr/v2/distroless/base/manifests/latest
|
||
```
|
||
|
||
For use cases, see [Container Image Acceleration](#container-image-acceleration).
|
||
|
||
#### AI Inference Providers
|
||
|
||
Xget supports API acceleration for many mainstream AI inference providers, using the `ip/[AI Provider Prefix]` format:
|
||
|
||
| AI Inference Provider | Provider Prefix | Original URL Format | Accelerated URL Format |
|
||
|----------------------|-----------------|---------------------|------------------------|
|
||
| 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/...` |
|
||
|
||
```url
|
||
# OpenAI API original URL
|
||
https://api.openai.com/v1/chat/completions
|
||
|
||
# Converted (add ip/openai prefix)
|
||
https://xget.xi-xu.me/ip/openai/v1/chat/completions
|
||
|
||
# Claude API original URL
|
||
https://api.anthropic.com/v1/messages
|
||
|
||
# Converted (add ip/anthropic prefix)
|
||
https://xget.xi-xu.me/ip/anthropic/v1/messages
|
||
|
||
# Gemini API original URL
|
||
https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent
|
||
|
||
# Converted (add ip/gemini prefix)
|
||
https://xget.xi-xu.me/ip/gemini/v1beta/models/gemini-2.5-flash:generateContent
|
||
|
||
# HF Inference API original URL
|
||
https://router.huggingface.co/hf-inference/models/openai/whisper-large-v3
|
||
|
||
# Converted (add ip/huggingface prefix)
|
||
https://xget.xi-xu.me/ip/huggingface/hf-inference/models/openai/whisper-large-v3
|
||
```
|
||
|
||
For use cases, see [AI Inference API Acceleration](#ai-inference-api-acceleration).
|
||
|
||
## 🎯 Use Cases
|
||
|
||
### Git Operations and Configuration
|
||
|
||
#### Git Operations
|
||
|
||
```bash
|
||
# Clone repository
|
||
git clone https://xget.xi-xu.me/gh/microsoft/vscode.git
|
||
|
||
# Clone specific branch
|
||
git clone -b main https://xget.xi-xu.me/gh/facebook/react.git
|
||
|
||
# Shallow clone (latest commit only)
|
||
git clone --depth 1 https://xget.xi-xu.me/gh/torvalds/linux.git
|
||
|
||
# Clone GitLab repository
|
||
git clone https://xget.xi-xu.me/gl/gitlab-org/gitlab.git
|
||
|
||
# Clone Gitea repository
|
||
git clone https://xget.xi-xu.me/gitea/gitea/gitea.git
|
||
|
||
# Clone Codeberg repository
|
||
git clone https://xget.xi-xu.me/codeberg/forgejo/forgejo.git
|
||
|
||
# Clone SourceForge repository
|
||
git clone https://xget.xi-xu.me/sf/projects/mingw-w64/code.git
|
||
|
||
# Clone AOSP repository
|
||
git clone https://xget.xi-xu.me/aosp/platform/frameworks/base.git
|
||
|
||
# Add remote repository
|
||
git remote add upstream https://xget.xi-xu.me/gh/[owner]/[repository].git
|
||
|
||
# Pull updates
|
||
git pull https://xget.xi-xu.me/gh/microsoft/vscode.git main
|
||
|
||
# Recursive submodule clone
|
||
git clone --recursive https://xget.xi-xu.me/gh/[username]/[repository-with-submodules].git
|
||
```
|
||
|
||
#### Git Global Acceleration Configuration
|
||
|
||
```bash
|
||
# Configure Git to use Xget for specific domains
|
||
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/"
|
||
|
||
# Verify configuration
|
||
git config --global --get-regexp url
|
||
|
||
# Now all git clone operations for relevant platforms will automatically use Xget
|
||
git clone https://github.com/microsoft/vscode.git # Automatically converted to Xget URL
|
||
git clone https://gitlab.com/gitlab-org/gitlab.git # Automatically converted to Xget URL
|
||
git clone https://codeberg.org/forgejo/forgejo.git # Automatically converted to Xget URL
|
||
git clone https://android.googlesource.com/platform/frameworks/base.git # Automatically converted to Xget URL
|
||
```
|
||
|
||
### Mainstream Download Tool Integration
|
||
|
||
#### wget Download
|
||
|
||
```bash
|
||
# Download single file
|
||
wget https://xget.xi-xu.me/gh/microsoft/vscode/archive/refs/heads/main.zip
|
||
|
||
# Resume download
|
||
wget -c https://xget.xi-xu.me/hf/microsoft/DialoGPT-large/resolve/main/pytorch_model.bin
|
||
|
||
# Batch download
|
||
wget -i urls.txt # urls.txt contains multiple Xget URLs
|
||
```
|
||
|
||
#### cURL Download
|
||
|
||
```bash
|
||
# Basic download
|
||
curl -L -O https://xget.xi-xu.me/gh/golang/go/archive/refs/tags/go1.22.0.tar.gz
|
||
|
||
# Show progress bar
|
||
curl -L --progress-bar -o model.bin https://xget.xi-xu.me/hf/openai/whisper-large-v3/resolve/main/pytorch_model.bin
|
||
|
||
# Set 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 Multi-threaded Download
|
||
|
||
```bash
|
||
# Multi-threaded download of large files
|
||
aria2c -x 16 -s 16 https://xget.xi-xu.me/hf/microsoft/DialoGPT-large/resolve/main/pytorch_model.bin
|
||
|
||
# Resume download
|
||
aria2c -c https://xget.xi-xu.me/gh/microsoft/vscode/archive/refs/heads/main.zip
|
||
|
||
# Batch download configuration file
|
||
aria2c -i download-list.txt # File containing multiple Xget URLs
|
||
```
|
||
|
||
### Hugging Face Mirror
|
||
|
||
```python
|
||
import os
|
||
from transformers import AutoTokenizer, AutoModelForCausalLM
|
||
|
||
# Set environment variable to make transformers library automatically use Xget mirror
|
||
os.environ['HF_ENDPOINT'] = 'https://xget.xi-xu.me/hf'
|
||
|
||
# Define model name
|
||
model_name = 'microsoft/DialoGPT-medium'
|
||
|
||
print(f"Downloading model from mirror: {model_name}")
|
||
|
||
# Use AutoModelForCausalLM to load dialogue generation model
|
||
# Since we set the environment variable above, no additional parameters are needed here
|
||
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
||
model = AutoModelForCausalLM.from_pretrained(model_name)
|
||
|
||
print("Model and tokenizer loaded successfully!")
|
||
|
||
# You can now use the tokenizer and model
|
||
# For example:
|
||
# 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 Model Platform
|
||
|
||
```python
|
||
import requests
|
||
|
||
# Set API base URL to use Xget
|
||
base_url = "https://xget.xi-xu.me/civitai"
|
||
|
||
# Get model information
|
||
def get_model_info(model_id):
|
||
"""Get Civitai model information"""
|
||
url = f"{base_url}/api/v1/models/{model_id}"
|
||
response = requests.get(url)
|
||
return response.json()
|
||
|
||
# Download model
|
||
def download_model(model_version_id, output_path):
|
||
"""Download Civitai model file"""
|
||
download_url = f"{base_url}/api/download/models/{model_version_id}"
|
||
|
||
print(f"Downloading model version {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"Model downloaded to: {output_path}")
|
||
|
||
# Usage example
|
||
model_id = 7240 # Example model ID
|
||
model_info = get_model_info(model_id)
|
||
print(f"Model name: {model_info['name']}")
|
||
|
||
# Download first model version
|
||
if model_info['modelVersions']:
|
||
version_id = model_info['modelVersions'][0]['id']
|
||
download_model(version_id, f"model_{version_id}.safetensors")
|
||
```
|
||
|
||
### npm Package Acceleration
|
||
|
||
#### Configure npm to Use Xget Mirror
|
||
|
||
```bash
|
||
# Temporarily use Xget mirror
|
||
npm install --registry https://xget.xi-xu.me/npm/
|
||
|
||
# Globally configure npm mirror
|
||
npm config set registry https://xget.xi-xu.me/npm/
|
||
|
||
# Verify configuration
|
||
npm config get registry
|
||
```
|
||
|
||
#### Use in Project
|
||
|
||
```bash
|
||
# Configure project-level mirror in .npmrc file
|
||
echo "registry=https://xget.xi-xu.me/npm/" > .npmrc
|
||
|
||
# Install dependencies
|
||
npm install
|
||
|
||
# Or use yarn
|
||
yarn config set registry https://xget.xi-xu.me/npm/
|
||
yarn install
|
||
```
|
||
|
||
### Python Package Acceleration
|
||
|
||
#### Configure pip to Use Xget Mirror
|
||
|
||
```bash
|
||
# Temporarily use Xget mirror
|
||
pip install requests -i https://xget.xi-xu.me/pypi/simple/
|
||
|
||
# Globally configure pip mirror
|
||
pip config set global.index-url https://xget.xi-xu.me/pypi/simple/
|
||
pip config set global.trusted-host xget.xi-xu.me
|
||
|
||
# Verify configuration
|
||
pip config list
|
||
```
|
||
|
||
#### Use in Project
|
||
|
||
```bash
|
||
# Create pip.conf file (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
|
||
|
||
# Or create pip.conf in project root directory
|
||
cat > pip.conf << EOF
|
||
[global]
|
||
index-url = https://xget.xi-xu.me/pypi/simple/
|
||
trusted-host = xget.xi-xu.me
|
||
EOF
|
||
|
||
# Install using configuration file
|
||
pip install -r requirements.txt --config-file pip.conf
|
||
```
|
||
|
||
#### Specify Mirror in requirements.txt
|
||
|
||
```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 Package Acceleration
|
||
|
||
#### Configure conda to Use Xget Mirror
|
||
|
||
```bash
|
||
# Configure default channel mirrors
|
||
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
|
||
|
||
# Configure all community channel mirrors (recommended)
|
||
conda config --set channel_alias https://xget.xi-xu.me/conda/community
|
||
|
||
# Or configure specific community channels
|
||
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
|
||
|
||
# Set channel priority
|
||
conda config --set channel_priority strict
|
||
|
||
# Verify configuration
|
||
conda config --show
|
||
```
|
||
|
||
#### Configure in .condarc
|
||
|
||
The .condarc file can be placed in the user home directory (`~/.condarc`) or project root directory:
|
||
|
||
```yaml
|
||
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
|
||
```
|
||
|
||
#### Use Environment File
|
||
|
||
The environment file can directly specify complete mirror URLs:
|
||
|
||
```yaml
|
||
# 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
|
||
```
|
||
|
||
```bash
|
||
# Create environment using environment file
|
||
conda env create -f environment.yml
|
||
|
||
# Update environment
|
||
conda env update -f environment.yml
|
||
```
|
||
|
||
### Maven Package Acceleration
|
||
|
||
#### Configure Maven to Use Xget Mirror
|
||
|
||
```xml
|
||
<!-- Configure Maven mirror in ~/.m2/settings.xml -->
|
||
<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>
|
||
```
|
||
|
||
#### Use in Project
|
||
|
||
```xml
|
||
<!-- Configure project-level mirror in 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>
|
||
```
|
||
|
||
```bash
|
||
# Specify mirror using command line
|
||
mvn clean install -Dmaven.repo.remote=https://xget.xi-xu.me/maven/maven2
|
||
|
||
# Download specific dependency
|
||
mvn dependency:get -Dartifact=org.springframework:spring-core:5.3.21 \
|
||
-DremoteRepositories=https://xget.xi-xu.me/maven/maven2
|
||
```
|
||
|
||
### Apache Software Download Acceleration
|
||
|
||
#### Download Apache Software Using Xget
|
||
|
||
```bash
|
||
# Download Apache Kafka
|
||
wget https://xget.xi-xu.me/apache/kafka/3.6.1/kafka_2.13-3.6.1.tgz
|
||
|
||
# Download 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
|
||
|
||
# Download Apache Spark
|
||
aria2c https://xget.xi-xu.me/apache/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz
|
||
|
||
# Download Apache Hadoop
|
||
wget https://xget.xi-xu.me/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
|
||
|
||
# Download 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
|
||
```
|
||
|
||
#### Common Apache Software Downloads
|
||
|
||
```bash
|
||
# Big data related
|
||
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 servers
|
||
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
|
||
|
||
# Development tools
|
||
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 Package Acceleration
|
||
|
||
#### Configure Gradle to Use Xget Mirror
|
||
|
||
```gradle
|
||
// Configure Gradle mirror in build.gradle
|
||
repositories {
|
||
maven {
|
||
url 'https://xget.xi-xu.me/maven/maven2'
|
||
}
|
||
gradlePluginPortal {
|
||
url 'https://xget.xi-xu.me/gradle/m2'
|
||
}
|
||
}
|
||
|
||
// Configure plugin repositories
|
||
pluginManagement {
|
||
repositories {
|
||
maven {
|
||
url 'https://xget.xi-xu.me/gradle/m2'
|
||
}
|
||
gradlePluginPortal()
|
||
}
|
||
}
|
||
```
|
||
|
||
#### Global Configuration
|
||
|
||
```gradle
|
||
// Configure global mirror in ~/.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()
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
```bash
|
||
# Specify mirror using command line
|
||
gradle build -Dmaven.repo.remote=https://xget.xi-xu.me/maven/maven2
|
||
|
||
# Refresh dependencies
|
||
gradle build --refresh-dependencies
|
||
```
|
||
|
||
### Homebrew Package Acceleration
|
||
|
||
#### Configure Homebrew to Use Xget Mirror
|
||
|
||
```bash
|
||
# Set Homebrew environment variables to use Xget mirror
|
||
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"
|
||
|
||
# Update Homebrew
|
||
brew update
|
||
```
|
||
|
||
#### Long-term Configuration
|
||
|
||
```bash
|
||
# For bash users, add to ~/.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
|
||
|
||
# For zsh users, add to ~/.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
|
||
```
|
||
|
||
#### Use in Project
|
||
|
||
```bash
|
||
# Install packages
|
||
brew install git
|
||
|
||
# Search packages
|
||
brew search python
|
||
|
||
# Update packages
|
||
brew upgrade
|
||
|
||
# View installed packages
|
||
brew list
|
||
```
|
||
|
||
#### Verify Mirror Configuration
|
||
|
||
```bash
|
||
# Check Homebrew configuration
|
||
brew config
|
||
|
||
# View environment variables
|
||
echo $HOMEBREW_API_DOMAIN
|
||
echo $HOMEBREW_BOTTLE_DOMAIN
|
||
```
|
||
|
||
### Ruby Package Acceleration
|
||
|
||
#### Configure RubyGems to Use Xget Mirror
|
||
|
||
```bash
|
||
# Temporarily use Xget mirror
|
||
gem install rails --source https://xget.xi-xu.me/rubygems/
|
||
|
||
# Globally configure RubyGems mirror
|
||
gem sources --add https://xget.xi-xu.me/rubygems/
|
||
gem sources --remove https://rubygems.org/
|
||
|
||
# Verify configuration
|
||
gem sources -l
|
||
```
|
||
|
||
#### Use in Project
|
||
|
||
```ruby
|
||
# Configure project-level mirror in Gemfile
|
||
source 'https://xget.xi-xu.me/rubygems/'
|
||
|
||
gem 'rails', '~> 7.0.0'
|
||
gem 'pg', '~> 1.1'
|
||
gem 'puma', '~> 5.0'
|
||
```
|
||
|
||
```bash
|
||
# Install using bundle
|
||
bundle config mirror.https://rubygems.org https://xget.xi-xu.me/rubygems/
|
||
bundle install
|
||
```
|
||
|
||
### R Package Acceleration
|
||
|
||
#### Configure R to Use Xget CRAN Mirror
|
||
|
||
```r
|
||
# Temporarily use Xget CRAN mirror in R
|
||
install.packages("ggplot2", repos = "https://xget.xi-xu.me/cran/")
|
||
|
||
# Globally configure CRAN mirror
|
||
options(repos = c(CRAN = "https://xget.xi-xu.me/cran/"))
|
||
|
||
# Verify configuration
|
||
getOption("repos")
|
||
```
|
||
|
||
#### Configure in .Rprofile
|
||
|
||
```r
|
||
# Configure global mirror in .Rprofile file in user home directory
|
||
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"
|
||
))
|
||
|
||
# Set download method
|
||
options(download.file.method = "libcurl")
|
||
```
|
||
|
||
#### Use in Project
|
||
|
||
```r
|
||
# Specify mirror in project's renv.lock or script
|
||
renv::init()
|
||
renv::settings$repos.override(c(CRAN = "https://xget.xi-xu.me/cran/"))
|
||
|
||
# Install packages
|
||
install.packages(c("dplyr", "ggplot2", "tidyr"))
|
||
|
||
# Or use pak package manager
|
||
pak::pkg_install("tidyverse", repos = "https://xget.xi-xu.me/cran/")
|
||
```
|
||
|
||
```bash
|
||
# Install packages using R script in command line
|
||
Rscript -e "options(repos = c(CRAN = 'https://xget.xi-xu.me/cran/')); install.packages('ggplot2')"
|
||
|
||
# Batch install packages
|
||
Rscript -e "
|
||
options(repos = c(CRAN = 'https://xget.xi-xu.me/cran/'))
|
||
packages <- c('dplyr', 'ggplot2', 'tidyr', 'readr')
|
||
install.packages(packages)
|
||
"
|
||
```
|
||
|
||
### Perl Package Acceleration
|
||
|
||
#### Configure CPAN to Use Xget Mirror
|
||
|
||
```bash
|
||
# Configure CPAN to use Xget mirror
|
||
cpan o conf urllist push https://xget.xi-xu.me/cpan/
|
||
cpan o conf commit
|
||
|
||
# Or directly edit configuration file ~/.cpan/CPAN/MyConfig.pm
|
||
# Add:
|
||
# 'urllist' => [q[https://xget.xi-xu.me/cpan/]],
|
||
```
|
||
|
||
#### Use cpanm to Install Modules
|
||
|
||
```bash
|
||
# Install cpanm (if not available)
|
||
curl -L https://cpanmin.us | perl - --sudo App::cpanminus
|
||
|
||
# Install modules using Xget mirror
|
||
cpanm --mirror https://xget.xi-xu.me/cpan/ DBI
|
||
cpanm --mirror https://xget.xi-xu.me/cpan/ Mojolicious
|
||
|
||
# Install dependencies from Makefile.PL
|
||
cpanm --mirror https://xget.xi-xu.me/cpan/ --installdeps .
|
||
```
|
||
|
||
#### Use in Project
|
||
|
||
```perl
|
||
# List dependencies in cpanfile
|
||
requires 'DBI';
|
||
requires 'Mojolicious';
|
||
requires 'JSON';
|
||
|
||
# Then install using Xget mirror
|
||
cpanm --mirror https://xget.xi-xu.me/cpan/ --installdeps .
|
||
```
|
||
|
||
### TeX/LaTeX Package Acceleration
|
||
|
||
#### Configure TeX Live to Use Xget CTAN Mirror
|
||
|
||
```bash
|
||
# Configure tlmgr to use Xget CTAN mirror
|
||
tlmgr option repository https://xget.xi-xu.me/ctan/systems/texlive/tlnet
|
||
|
||
# Update package database
|
||
tlmgr update --self --all
|
||
|
||
# Install packages
|
||
tlmgr install beamer
|
||
tlmgr install tikz
|
||
```
|
||
|
||
#### Configure MiKTeX to Use Xget Mirror
|
||
|
||
```bash
|
||
# Windows MiKTeX configuration
|
||
mpm --set-repository=https://xget.xi-xu.me/ctan/systems/win32/miktex
|
||
|
||
# Update package database
|
||
mpm --update-db
|
||
|
||
# Install packages
|
||
mpm --install=beamer
|
||
mpm --install=pgf
|
||
```
|
||
|
||
#### Use in Project
|
||
|
||
```bash
|
||
# Automatically install missing packages during LaTeX document compilation
|
||
pdflatex --shell-escape document.tex
|
||
|
||
# Or manually install specific packages
|
||
tlmgr install caption
|
||
tlmgr install subcaption
|
||
tlmgr install algorithm2e
|
||
```
|
||
|
||
### Go Module Acceleration
|
||
|
||
#### Configure Go to Use Xget Proxy
|
||
|
||
```bash
|
||
# Configure Go module proxy
|
||
export GOPROXY=https://xget.xi-xu.me/golang,direct
|
||
export GOSUMDB=off
|
||
|
||
# Or permanently configure
|
||
go env -w GOPROXY=https://xget.xi-xu.me/golang,direct
|
||
go env -w GOSUMDB=off
|
||
|
||
# Verify configuration
|
||
go env GOPROXY
|
||
```
|
||
|
||
#### Use in Project
|
||
|
||
```bash
|
||
# Download dependencies
|
||
go mod download
|
||
|
||
# Update dependencies
|
||
go get -u ./...
|
||
|
||
# Clean module cache
|
||
go clean -modcache
|
||
```
|
||
|
||
### NuGet Package Acceleration
|
||
|
||
#### Configure NuGet to Use Xget Mirror
|
||
|
||
```bash
|
||
# Add Xget package source
|
||
dotnet nuget add source https://xget.xi-xu.me/nuget/v3/index.json -n xget
|
||
|
||
# List package sources
|
||
dotnet nuget list source
|
||
|
||
# Use in project
|
||
dotnet restore --source https://xget.xi-xu.me/nuget/v3/index.json
|
||
```
|
||
|
||
#### Configure in NuGet.Config
|
||
|
||
```xml
|
||
<!-- 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 Package Acceleration
|
||
|
||
#### Configure Cargo to Use Xget Mirror
|
||
|
||
```bash
|
||
# Configure Cargo to use Xget mirror (in ~/.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
|
||
|
||
# Verify configuration
|
||
cargo search serde
|
||
```
|
||
|
||
#### Use in Project
|
||
|
||
```toml
|
||
# Can use dependencies normally in Cargo.toml
|
||
[dependencies]
|
||
serde = "1.0"
|
||
tokio = "1.0"
|
||
reqwest = "0.11"
|
||
```
|
||
|
||
```bash
|
||
# Xget will be automatically used when building the project
|
||
cargo build
|
||
|
||
# Update dependencies
|
||
cargo update
|
||
|
||
# Add new dependency
|
||
cargo add clap
|
||
```
|
||
|
||
### PHP Package Acceleration
|
||
|
||
#### Configure Composer to Use Xget Mirror
|
||
|
||
```bash
|
||
# Globally configure Composer mirror
|
||
composer config -g repo.packagist composer https://xget.xi-xu.me/packagist/
|
||
|
||
# Project-level configuration
|
||
composer config repo.packagist composer https://xget.xi-xu.me/packagist/
|
||
|
||
# Verify configuration
|
||
composer config -l
|
||
```
|
||
|
||
#### Configure in composer.json
|
||
|
||
```json
|
||
{
|
||
"repositories": [
|
||
{
|
||
"type": "composer",
|
||
"url": "https://xget.xi-xu.me/packagist/"
|
||
}
|
||
],
|
||
"require": {
|
||
"symfony/console": "^6.0",
|
||
"guzzlehttp/guzzle": "^7.0"
|
||
}
|
||
}
|
||
```
|
||
|
||
### Linux Distribution Acceleration
|
||
|
||
#### Debian/Ubuntu APT Configuration
|
||
|
||
```bash
|
||
# Backup original source list
|
||
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
|
||
|
||
# Configure Debian mirror
|
||
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
|
||
|
||
# Configure Ubuntu mirror
|
||
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
|
||
|
||
# Update package list
|
||
sudo apt update
|
||
```
|
||
|
||
#### Fedora DNF Configuration
|
||
|
||
```bash
|
||
# Configure Fedora mirror
|
||
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
|
||
|
||
# Update package cache
|
||
sudo dnf makecache
|
||
```
|
||
|
||
#### Rocky Linux DNF Configuration
|
||
|
||
```bash
|
||
# Configure Rocky Linux mirror
|
||
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
|
||
|
||
# Update package cache
|
||
sudo dnf makecache
|
||
```
|
||
|
||
#### openSUSE Zypper Configuration
|
||
|
||
```bash
|
||
# Configure openSUSE Leap mirror
|
||
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
|
||
|
||
# Configure openSUSE Tumbleweed mirror
|
||
sudo zypper mr -d repo-oss
|
||
sudo zypper ar -f https://xget.xi-xu.me/opensuse/tumbleweed/repo/oss/ repo-oss-xget
|
||
|
||
# Refresh software sources
|
||
sudo zypper refresh
|
||
|
||
# Verify configuration
|
||
sudo zypper lr -u
|
||
```
|
||
|
||
#### Arch Linux Pacman Configuration
|
||
|
||
```bash
|
||
# Backup original mirror list
|
||
sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup
|
||
|
||
# Configure Arch Linux mirror
|
||
echo 'Server = https://xget.xi-xu.me/arch/$repo/os/$arch' | sudo tee /etc/pacman.d/mirrorlist
|
||
|
||
# Update package database
|
||
sudo pacman -Sy
|
||
```
|
||
|
||
### Academic Resource Acceleration
|
||
|
||
#### arXiv Paper Download
|
||
|
||
```bash
|
||
# Download arXiv paper PDF
|
||
wget https://xget.xi-xu.me/arxiv/pdf/2301.07041.pdf
|
||
|
||
# Download paper source
|
||
curl -L -O https://xget.xi-xu.me/arxiv/e-print/2301.07041
|
||
|
||
# Batch download multiple papers
|
||
for id in 2301.07041 2302.13971 2303.08774; do
|
||
wget https://xget.xi-xu.me/arxiv/pdf/${id}.pdf
|
||
done
|
||
```
|
||
|
||
#### Use in Academic Tools
|
||
|
||
```python
|
||
# Use arXiv accelerated download in Python
|
||
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 paper
|
||
download_arxiv_paper("2301.07041", "attention_is_all_you_need.pdf")
|
||
```
|
||
|
||
### F-Droid Repository Mirror
|
||
|
||
#### Configure F-Droid Client to Use Xget Mirror
|
||
|
||
1. In F-Droid app, go to **Settings** → **Repositories**
|
||
2. Click **+** and enter repository URL: `https://xget.xi-xu.me/fdroid/repo`
|
||
3. Click **Add** then click **Add Mirror**
|
||
|
||
#### Supported F-Droid Services
|
||
|
||
```url
|
||
# F-Droid app APK download
|
||
https://xget.xi-xu.me/fdroid/repo/[package-name]_[version-code].apk
|
||
|
||
# F-Droid repository index
|
||
https://xget.xi-xu.me/fdroid/repo/index-v1.jar
|
||
|
||
# F-Droid app icons
|
||
https://xget.xi-xu.me/fdroid/repo/icons-640/[package-name].[version-code].png
|
||
|
||
# F-Droid API endpoints
|
||
https://xget.xi-xu.me/fdroid/api/v1/packages/[package-name]
|
||
```
|
||
|
||
#### Usage Examples
|
||
|
||
```bash
|
||
# Directly download F-Droid client APK
|
||
wget https://xget.xi-xu.me/fdroid/repo/org.fdroid.fdroid_1016050.apk
|
||
|
||
# Download other open source apps
|
||
curl -L -O https://xget.xi-xu.me/fdroid/repo/org.mozilla.fennec_fdroid_1014000.apk
|
||
|
||
# Get app information
|
||
curl https://xget.xi-xu.me/fdroid/api/v1/packages/org.fdroid.fdroid
|
||
```
|
||
|
||
#### Batch App Management
|
||
|
||
```bash
|
||
# Create app download script
|
||
cat > download_fdroid_apps.sh << 'EOF'
|
||
#!/bin/bash
|
||
|
||
# Define list of apps to download
|
||
apps=(
|
||
"org.fdroid.fdroid_1016050.apk"
|
||
"org.mozilla.fennec_fdroid_1014000.apk"
|
||
"com.termux_1180.apk"
|
||
"org.videolan.vlc_13050399.apk"
|
||
)
|
||
|
||
# Create download directory
|
||
mkdir -p fdroid_apps
|
||
|
||
# Batch download apps
|
||
for app in "${apps[@]}"; do
|
||
echo "Downloading: $app"
|
||
wget -P fdroid_apps "https://xget.xi-xu.me/fdroid/repo/$app"
|
||
done
|
||
|
||
echo "All apps downloaded!"
|
||
EOF
|
||
|
||
chmod +x download_fdroid_apps.sh
|
||
./download_fdroid_apps.sh
|
||
```
|
||
|
||
#### Developer Integration
|
||
|
||
For Android developers, F-Droid mirror can be integrated into build scripts:
|
||
|
||
```gradle
|
||
// Configure F-Droid dependency check in build.gradle
|
||
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 "App available on F-Droid: $fdroidUrl"
|
||
}
|
||
} catch (Exception e) {
|
||
println "Error checking F-Droid availability: ${e.message}"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### Jenkins Plugin Download
|
||
|
||
#### Use Xget to Accelerate Jenkins Plugin Download and Update
|
||
|
||
Supports Jenkins update center and plugin downloads, compatible with configuration methods of domestic mirrors like Tsinghua mirror.
|
||
|
||
#### Jenkins Update Center Configuration
|
||
|
||
##### Method 1: Configure in Jenkins Web Interface
|
||
|
||
1. Log in to Jenkins management interface
|
||
2. Go to **Manage Jenkins** → **Plugins** → **Advanced**
|
||
3. In the **Update Site** section, change the URL to `https://xget.xi-xu.me/jenkins/update-center.json`
|
||
4. Click **Submit** to save configuration
|
||
|
||
##### Method 2: Modify Configuration File
|
||
|
||
```bash
|
||
# Modify update center configuration file on Jenkins server
|
||
# Default location: $JENKINS_HOME/hudson.model.UpdateCenter.xml
|
||
sudo nano /var/lib/jenkins/hudson.model.UpdateCenter.xml
|
||
|
||
# Change URL to:
|
||
# <url>https://xget.xi-xu.me/jenkins/update-center.json</url>
|
||
|
||
# Restart Jenkins service
|
||
sudo systemctl restart jenkins
|
||
```
|
||
|
||
#### Supported Jenkins Services
|
||
|
||
```url
|
||
# Jenkins update center JSON
|
||
https://xget.xi-xu.me/jenkins/update-center.json
|
||
|
||
# Jenkins update center (actual JSON format)
|
||
https://xget.xi-xu.me/jenkins/update-center.actual.json
|
||
|
||
# Jenkins plugin download
|
||
https://xget.xi-xu.me/jenkins/download/plugins/[plugin-name]/[version]/[plugin-name].hpi
|
||
|
||
# Experimental plugin update center
|
||
https://xget.xi-xu.me/jenkins/experimental/update-center.json
|
||
```
|
||
|
||
#### Usage Examples
|
||
|
||
```bash
|
||
# Download Maven plugin
|
||
wget https://xget.xi-xu.me/jenkins/download/plugins/maven-plugin/3.27/maven-plugin.hpi
|
||
|
||
# Download Git plugin
|
||
curl -L -O https://xget.xi-xu.me/jenkins/download/plugins/git/5.2.1/git.hpi
|
||
|
||
# Get update center information
|
||
curl https://xget.xi-xu.me/jenkins/update-center.json
|
||
|
||
# Batch download common plugins
|
||
cat > download_jenkins_plugins.sh << 'EOF'
|
||
#!/bin/bash
|
||
|
||
# Define list of plugins to download
|
||
plugins=(
|
||
"git:5.2.1"
|
||
"maven-plugin:3.27"
|
||
"workflow-aggregator:596.v8c21c963d92d"
|
||
"blueocean:1.27.8"
|
||
"docker-workflow:563.vd5d2e5c4007f"
|
||
)
|
||
|
||
# Create plugin download directory
|
||
mkdir -p jenkins_plugins
|
||
|
||
# Batch download plugins
|
||
for plugin in "${plugins[@]}"; do
|
||
name=$(echo $plugin | cut -d: -f1)
|
||
version=$(echo $plugin | cut -d: -f2)
|
||
echo "Downloading plugin: $name v$version"
|
||
wget -P jenkins_plugins "https://xget.xi-xu.me/jenkins/download/plugins/$name/$version/$name.hpi"
|
||
done
|
||
|
||
echo "All plugins downloaded!"
|
||
EOF
|
||
|
||
chmod +x download_jenkins_plugins.sh
|
||
./download_jenkins_plugins.sh
|
||
```
|
||
|
||
#### Offline Jenkins Deployment
|
||
|
||
For Jenkins deployment in offline environments:
|
||
|
||
```bash
|
||
# 1. Download Jenkins core file
|
||
wget https://xget.xi-xu.me/jenkins/war/jenkins.war
|
||
|
||
# 2. Create plugin packaging script
|
||
cat > prepare_jenkins_offline.sh << 'EOF'
|
||
#!/bin/bash
|
||
|
||
# Create offline deployment directory structure
|
||
mkdir -p jenkins_offline/{plugins,update_center}
|
||
|
||
# Download update center configuration
|
||
curl -o jenkins_offline/update_center/update-center.json \
|
||
https://xget.xi-xu.me/jenkins/update-center.json
|
||
|
||
# Essential plugins list
|
||
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"
|
||
)
|
||
|
||
# Download all essential plugins
|
||
for plugin in "${essential_plugins[@]}"; do
|
||
name=$(echo $plugin | cut -d: -f1)
|
||
version=$(echo $plugin | cut -d: -f2)
|
||
echo "Downloading $name:$version"
|
||
wget -P jenkins_offline/plugins \
|
||
"https://xget.xi-xu.me/jenkins/download/plugins/$name/$version/$name.hpi"
|
||
done
|
||
|
||
# Create deployment instructions
|
||
cat > jenkins_offline/deploy_instructions.md << 'DEPLOY'
|
||
# Jenkins Offline Deployment Instructions
|
||
|
||
1. Copy jenkins.war to target server
|
||
2. Start Jenkins: java -jar jenkins.war
|
||
3. Copy .hpi files from plugins/ directory to $JENKINS_HOME/plugins/
|
||
4. Restart Jenkins
|
||
DEPLOY
|
||
|
||
echo "Offline deployment package prepared!"
|
||
EOF
|
||
|
||
chmod +x prepare_jenkins_offline.sh
|
||
./prepare_jenkins_offline.sh
|
||
```
|
||
|
||
#### Use in Project
|
||
|
||
##### Plugin Check in Jenkinsfile
|
||
|
||
```groovy
|
||
pipeline {
|
||
agent any
|
||
|
||
stages {
|
||
stage('Check Plugin Availability') {
|
||
steps {
|
||
script {
|
||
// Check Maven plugin availability
|
||
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 plugin available: ${pluginUrl}"
|
||
}
|
||
} catch (Exception e) {
|
||
error "Maven plugin not available: ${e.message}"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
stage('Build') {
|
||
steps {
|
||
// Your build steps
|
||
echo "Building with accelerated plugins..."
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### Container Image Acceleration
|
||
|
||
#### Pull Images Directly
|
||
|
||
```bash
|
||
# Pull GitHub Container Registry images
|
||
docker pull xget.xi-xu.me/cr/ghcr/nginxinc/nginx-unprivileged:latest
|
||
|
||
# Pull Google Container Registry images
|
||
docker pull xget.xi-xu.me/cr/gcr/distroless/base:latest
|
||
|
||
# Pull Microsoft Container Registry images
|
||
docker pull xget.xi-xu.me/cr/mcr/dotnet/runtime:8.0
|
||
```
|
||
|
||
#### Kubernetes Deployment Configuration
|
||
|
||
```yaml
|
||
# deployment.yaml - Use Xget's images
|
||
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 Configuration
|
||
|
||
```yaml
|
||
# docker-compose.yml - Use Xget accelerated images
|
||
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 Optimization
|
||
|
||
```dockerfile
|
||
# Use Xget accelerated base images in Dockerfile
|
||
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
|
||
|
||
# Production stage
|
||
FROM xget.xi-xu.me/cr/ghcr/nginxinc/nginx-unprivileged:latest
|
||
COPY --from=builder /app/dist /usr/share/nginx/html
|
||
|
||
# Use Microsoft Container Registry's .NET image
|
||
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 Integration
|
||
|
||
```yaml
|
||
# GitHub Actions - Use Xget to accelerate container builds
|
||
name: Build and Deploy
|
||
on: [push]
|
||
|
||
jobs:
|
||
build:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- uses: actions/checkout@v4
|
||
|
||
- name: Build with accelerated base images
|
||
run: |
|
||
# Build using Xget's base images
|
||
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: |
|
||
# Test using accelerated images
|
||
docker run --rm \
|
||
xget.xi-xu.me/cr/mcr/dotnet/runtime:8.0 \
|
||
dotnet --version
|
||
```
|
||
|
||
#### Podman Configuration
|
||
|
||
```bash
|
||
# Configure Podman to use Xget image acceleration
|
||
# Edit /etc/containers/registries.conf
|
||
[[registry]]
|
||
prefix = "ghcr.io"
|
||
location = "xget.xi-xu.me/cr/ghcr"
|
||
|
||
# Or pull directly
|
||
podman pull xget.xi-xu.me/cr/ghcr/alpine/alpine:latest
|
||
podman pull xget.xi-xu.me/cr/ghcr/nginxinc/nginx-unprivileged:latest
|
||
```
|
||
|
||
#### containerd Configuration
|
||
|
||
```toml
|
||
# Configure containerd to use Xget
|
||
# Edit /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"]
|
||
```
|
||
|
||
```bash
|
||
# Restart containerd
|
||
sudo systemctl restart containerd
|
||
```
|
||
|
||
### AI Inference API Acceleration
|
||
|
||
#### OpenAI API
|
||
|
||
```python
|
||
from openai import OpenAI
|
||
|
||
client = OpenAI(
|
||
api_key="your-api-key",
|
||
base_url="https://xget.xi-xu.me/ip/openai/v1", # Use Xget
|
||
)
|
||
|
||
response = client.responses.create(
|
||
model="gpt-5.1",
|
||
input="Hello, GPT!",
|
||
)
|
||
|
||
print(response.output_text)
|
||
```
|
||
|
||
#### Claude API
|
||
|
||
```python
|
||
from anthropic import Anthropic
|
||
|
||
client = Anthropic(
|
||
api_key="your-api-key",
|
||
base_url="https://xget.xi-xu.me/ip/anthropic", # Use 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
|
||
|
||
```python
|
||
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"), # Use Xget
|
||
)
|
||
|
||
response = client.models.generate_content(
|
||
model="gemini-3-pro-preview",
|
||
contents="Hello, Gemini!",
|
||
)
|
||
|
||
print(response.text)
|
||
```
|
||
|
||
#### Multi-Provider Unified Interface
|
||
|
||
```python
|
||
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) # Use Xget
|
||
response = client.chat.completions.create(
|
||
model=model,
|
||
messages=[{"role": "user", "content": f"Hello, who are you?"}],
|
||
)
|
||
print(name, "=>", response.choices[0].message.content)
|
||
```
|
||
|
||
#### Use in JavaScript/Node.js
|
||
|
||
```javascript
|
||
// OpenAI API acceleration
|
||
import OpenAI from "openai";
|
||
|
||
const openaiClient = new OpenAI({
|
||
apiKey: "your-openai-api-key",
|
||
baseURL: "https://xget.xi-xu.me/ip/openai/v1", // Use Xget
|
||
});
|
||
|
||
async function chatWithGPT() {
|
||
const response = await openaiClient.responses.create({
|
||
model: "gpt-5.1",
|
||
input: "Hello, GPT!",
|
||
});
|
||
|
||
console.log(response.output_text);
|
||
}
|
||
|
||
// Claude API acceleration
|
||
import Anthropic from "@anthropic-ai/sdk";
|
||
|
||
const anthropicClient = new Anthropic({
|
||
apiKey: "your-claude-api-key",
|
||
baseURL: "https://xget.xi-xu.me/ip/anthropic", // Use 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 acceleration
|
||
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", // Use Xget
|
||
},
|
||
},
|
||
});
|
||
|
||
console.log(response.text);
|
||
}
|
||
```
|
||
|
||
#### Environment Variable Configuration
|
||
|
||
```bash
|
||
# Configure in .env file
|
||
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
|
||
```
|
||
|
||
Then use in code:
|
||
|
||
```python
|
||
import os
|
||
from openai import OpenAI
|
||
|
||
# Read configuration from environment variables
|
||
client = OpenAI(
|
||
api_key=os.getenv("OPENAI_API_KEY"),
|
||
base_url=os.getenv("OPENAI_BASE_URL") # Automatically uses Xget
|
||
)
|
||
```
|
||
|
||
## 🚀 Deployment
|
||
|
||
### Deploy to Cloudflare Workers
|
||
|
||
1. **Fork this repository**: [Fork xixu-me/Xget](https://github.com/xixu-me/Xget/fork)
|
||
|
||
2. **Get Cloudflare credentials**:
|
||
- Visit [Account API tokens](https://dash.cloudflare.com/?to=/:account/api-tokens) to create and note an API token, using the "Edit Cloudflare Workers" template.
|
||
- Visit [Workers and Pages](https://dash.cloudflare.com/?to=/:account/workers-and-pages) to note the Account ID.
|
||
|
||
3. **Configure GitHub Secrets**:
|
||
- Go to your GitHub repository → Settings → Secrets and variables → Actions
|
||
- Add the following secrets:
|
||
- `CLOUDFLARE_API_TOKEN`: Your API token
|
||
- `CLOUDFLARE_ACCOUNT_ID`: Your Account ID
|
||
|
||
4. **Trigger deployment**:
|
||
- Pushing code to the `main` branch will automatically trigger deployment
|
||
- Modifying only documentation files (`.md`), `LICENSE`, `.gitignore`, etc. will not trigger deployment
|
||
- You can also manually trigger deployment in the GitHub Actions page
|
||
|
||
5. **Bind custom domain** (optional): Bind your custom domain in the Cloudflare Workers console
|
||
|
||
### Deploy to Cloudflare Pages
|
||
|
||
1. **Fork this repository**: [Fork xixu-me/Xget](https://github.com/xixu-me/Xget/fork)
|
||
|
||
2. **Get Cloudflare credentials**:
|
||
- Visit [Account API tokens](https://dash.cloudflare.com/?to=/:account/api-tokens) to create and note an API token, using the "Edit Cloudflare Workers" template.
|
||
- Visit [Workers and Pages](https://dash.cloudflare.com/?to=/:account/workers-and-pages) to note the Account ID.
|
||
|
||
3. **Configure GitHub Secrets**:
|
||
- Go to your GitHub repository → Settings → Secrets and variables → Actions
|
||
- Add the following secrets:
|
||
- `CLOUDFLARE_API_TOKEN`: Your API token
|
||
- `CLOUDFLARE_ACCOUNT_ID`: Your Account ID
|
||
|
||
4. **Trigger deployment**:
|
||
- The repository will automatically convert Workers code to Pages-compatible format and sync to the `pages` branch
|
||
- Pushing code to the `main` branch will automatically trigger sync and deployment workflows
|
||
- Modifying only documentation files (`.md`), `LICENSE`, `.gitignore`, etc. will not trigger deployment
|
||
- You can also manually trigger deployment in the GitHub Actions page
|
||
|
||
5. **Bind custom domain** (optional): Bind your custom domain in the Cloudflare Pages console
|
||
|
||
**Note**: The `pages` branch is automatically generated from the `main` branch. Do not manually edit the `pages` branch as it will be overwritten by the sync workflow.
|
||
|
||
### Deploy to EdgeOne Pages
|
||
|
||
1. **Fork this repository**: [Fork xixu-me/Xget](https://github.com/xixu-me/Xget/fork)
|
||
|
||
2. **Get EdgeOne Pages API Token**:
|
||
- Visit [China EdgeOne Console](https://console.cloud.tencent.com/edgeone/pages?tab=api) or [International EdgeOne Console](https://console.tencentcloud.com/edgeone/pages?tab=api) to create and note an API Token
|
||
|
||
3. **Configure GitHub Secrets**:
|
||
- Go to your GitHub repository → Settings → Secrets and variables → Actions
|
||
- Add the following secret:
|
||
- `EDGEONE_PAGES_API_TOKEN`: Your API Token
|
||
|
||
4. **Trigger deployment**:
|
||
- The repository will automatically convert Workers code to Pages-compatible format and sync to the `pages` branch
|
||
- Pushing code to the `main` branch will automatically trigger sync and deployment workflows
|
||
- Modifying only documentation files (`.md`), `LICENSE`, `.gitignore`, etc. will not trigger deployment
|
||
- You can also manually trigger deployment in the GitHub Actions page
|
||
|
||
5. **Bind custom domain** (optional): Bind your custom domain in the EdgeOne Pages console
|
||
|
||
**Note**: The `pages` branch is automatically generated from the `main` branch. Do not manually edit the `pages` branch as it will be overwritten by the sync workflow.
|
||
|
||
### Deploy to Vercel
|
||
|
||
1. **Fork this repository**: [Fork xixu-me/Xget](https://github.com/xixu-me/Xget/fork)
|
||
|
||
2. **Get Vercel credentials**:
|
||
- Visit [Vercel Account Settings](https://vercel.com/account/settings/tokens) to create and note an Access Token
|
||
- Visit Team Settings to note the Team ID
|
||
- Visit project's Settings after creating a new project to note the Project ID
|
||
|
||
3. **Configure GitHub Secrets**:
|
||
- Go to your GitHub repository → Settings → Secrets and variables → Actions
|
||
- Add the following secrets:
|
||
- `VERCEL_TOKEN`: Your Access Token
|
||
- `VERCEL_ORG_ID`: Your Team ID
|
||
- `VERCEL_PROJECT_ID`: Your Project ID
|
||
|
||
4. **Trigger deployment**:
|
||
- The repository will automatically convert Workers code to Functions-compatible format and sync to the `functions` branch
|
||
- Pushing code to the `main` branch will automatically trigger sync and deployment workflows
|
||
- Modifying only documentation files (`.md`), `LICENSE`, `.gitignore`, etc. will not trigger deployment
|
||
- You can also manually trigger deployment in the GitHub Actions page
|
||
|
||
5. **Bind custom domain** (optional): Bind your custom domain in the Vercel console
|
||
|
||
**Note**: The `functions` branch is automatically generated from the `main` branch. Do not manually edit the `functions` branch as it will be overwritten by the sync workflow.
|
||
|
||
### Deploy to Netlify
|
||
|
||
1. **Fork this repository**: [Fork xixu-me/Xget](https://github.com/xixu-me/Xget/fork)
|
||
|
||
2. **Get Netlify credentials**:
|
||
- Visit [Netlify User Settings](https://app.netlify.com/user/applications) to create and note a personal access token
|
||
- Visit Project configuration after creating a new project to note the Project ID
|
||
|
||
3. **Configure GitHub Secrets**:
|
||
- Go to your GitHub repository → Settings → Secrets and variables → Actions
|
||
- Add the following secrets:
|
||
- `NETLIFY_AUTH_TOKEN`: Your personal access token
|
||
- `NETLIFY_SITE_ID`: Your Project ID
|
||
|
||
4. **Trigger deployment**:
|
||
- The repository will automatically convert Workers code to Functions-compatible format and sync to the `functions` branch
|
||
- Pushing code to the `main` branch will automatically trigger sync and deployment workflows
|
||
- Modifying only documentation files (`.md`), `LICENSE`, `.gitignore`, etc. will not trigger deployment
|
||
- You can also manually trigger deployment in the GitHub Actions page
|
||
|
||
5. **Bind custom domain** (optional): Bind your custom domain in the Netlify console
|
||
|
||
**Note**: The `functions` branch is automatically generated from the `main` branch. Do not manually edit the `functions` branch as it will be overwritten by the sync workflow.
|
||
|
||
### Deploy to Deno Deploy
|
||
|
||
1. **Fork this repository**: [Fork xixu-me/Xget](https://github.com/xixu-me/Xget/fork)
|
||
|
||
2. **Switch default branch**:
|
||
- Go to your GitHub repository → Settings → General → Default branch
|
||
- Switch the default branch from `main` to `functions`
|
||
|
||
3. **Deploy to Deno Deploy**:
|
||
- Follow the [Deno Deploy official documentation](https://docs.deno.com/deploy/getting_started/) for deployment
|
||
- Create a new project in the Deno Deploy console and connect your GitHub repository
|
||
|
||
4. **Bind custom domain** (optional): Bind your custom domain in the Deno Deploy console
|
||
|
||
**Note**: The `functions` branch is automatically generated from the `main` branch. Do not manually edit the `functions` branch as it will be overwritten by the sync workflow.
|
||
|
||
### Self-Hosted Deployment
|
||
|
||
If you prefer to run Xget on your own server, you can use Docker or Podman deployment:
|
||
|
||
#### Using Pre-built Image
|
||
|
||
Pull and run the pre-built image from GitHub Container Registry:
|
||
|
||
**Using Docker:**
|
||
|
||
```bash
|
||
# Pull the latest image
|
||
docker pull ghcr.io/xixu-me/xget:latest
|
||
|
||
# Run the container
|
||
docker run -d \
|
||
--name xget \
|
||
-p 8080:8080 \
|
||
ghcr.io/xixu-me/xget:latest
|
||
```
|
||
|
||
**Using Podman:**
|
||
|
||
```bash
|
||
# Pull the latest image
|
||
podman pull ghcr.io/xixu-me/xget:latest
|
||
|
||
# Run the container
|
||
podman run -d \
|
||
--name xget \
|
||
-p 8080:8080 \
|
||
ghcr.io/xixu-me/xget:latest
|
||
```
|
||
|
||
#### Building Locally
|
||
|
||
Build the container image from source:
|
||
|
||
**Using Docker:**
|
||
|
||
```bash
|
||
# Clone the repository
|
||
git clone https://github.com/xixu-me/Xget.git
|
||
cd Xget
|
||
|
||
# Build the image
|
||
docker build -t xget:local .
|
||
|
||
# Run the container
|
||
docker run -d \
|
||
--name xget \
|
||
-p 8080:8080 \
|
||
xget:local
|
||
```
|
||
|
||
**Using Podman:**
|
||
|
||
```bash
|
||
# Clone the repository
|
||
git clone https://github.com/xixu-me/Xget.git
|
||
cd Xget
|
||
|
||
# Build the image
|
||
podman build -t xget:local .
|
||
|
||
# Run the container
|
||
podman run -d \
|
||
--name xget \
|
||
-p 8080:8080 \
|
||
xget:local
|
||
```
|
||
|
||
#### Using Docker Compose / Podman Compose
|
||
|
||
Create a `docker-compose.yml` file:
|
||
|
||
```yaml
|
||
version: '3.8'
|
||
|
||
services:
|
||
xget:
|
||
image: ghcr.io/xixu-me/xget:latest
|
||
container_name: xget
|
||
ports:
|
||
- "8080:8080"
|
||
restart: unless-stopped
|
||
```
|
||
|
||
**Using Docker Compose:**
|
||
|
||
```bash
|
||
docker compose up -d
|
||
```
|
||
|
||
**Using Podman Compose:**
|
||
|
||
```bash
|
||
podman compose up -d
|
||
```
|
||
|
||
After deployment, Xget will run on port 8080.
|
||
|
||
If you want to deploy and run Xget on DigitalOcean, please refer to *[Deploying and Optimizing Xget on DigitalOcean](docs/deploy-on-digitalocean.md)*. By signing up via the referral link below, you can receive USD 200 in credits to try Droplets, Kubernetes, App Platform, and more:
|
||
|
||
<p>
|
||
<a href="https://m.do.co/c/7efe110ca23f">
|
||
<img src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg" width="201px">
|
||
</a>
|
||
</p>
|
||
|
||
**Note**: Self-hosted deployment does not include global edge network acceleration. Performance depends on your server configuration and network environment.
|
||
|
||
## 🔧 Configuration
|
||
|
||
### Configuration Parameters
|
||
|
||
You can customize configuration by modifying `src/config/index.js`:
|
||
|
||
```javascript
|
||
export const CONFIG = {
|
||
TIMEOUT_SECONDS: 30, // Request timeout (seconds)
|
||
MAX_RETRIES: 3, // Maximum retry count
|
||
RETRY_DELAY_MS: 1000, // Retry delay (milliseconds)
|
||
CACHE_DURATION: 1800, // Cache duration (1800 seconds = 30 minutes)
|
||
SECURITY: {
|
||
ALLOWED_METHODS: ["GET", "HEAD"], // Allowed HTTP methods (Git operations dynamically allow POST)
|
||
ALLOWED_ORIGINS: ["*"], // Allowed CORS origins
|
||
MAX_PATH_LENGTH: 2048, // Maximum path length (characters)
|
||
},
|
||
};
|
||
```
|
||
|
||
### Performance Tuning Recommendations
|
||
|
||
- **Cache Optimization**: Adjust `CACHE_DURATION` based on usage patterns, reduce appropriately for frequently updated repositories
|
||
- **Timeout Settings**: Increase `TIMEOUT_SECONDS` appropriately for poor network conditions
|
||
- **Retry Strategy**: Increase `MAX_RETRIES` and `RETRY_DELAY_MS` in high-latency environments
|
||
|
||
### Adding New Platforms
|
||
|
||
To add support for new platforms, edit `src/config/platforms.js`:
|
||
|
||
```javascript
|
||
export const PLATFORMS = {
|
||
// Existing platforms...
|
||
|
||
// New platform example
|
||
custom: {
|
||
base: "https://example.com",
|
||
transform: (path) => path.replace(/^\/custom\//, "/"),
|
||
},
|
||
};
|
||
```
|
||
|
||
## 🚧 Development
|
||
|
||
1. **Repository Setup**
|
||
|
||
```bash
|
||
git clone https://github.com/xixu-me/Xget.git
|
||
cd Xget
|
||
npm install
|
||
npx wrangler login # First time use
|
||
```
|
||
|
||
2. **Local Development**
|
||
|
||
```bash
|
||
npm run dev # Start development server (http://localhost:8787)
|
||
npm run test:run # Run complete test suite
|
||
npm run test:coverage # Generate test coverage report
|
||
npm run lint # Code linting
|
||
npm run format # Code formatting
|
||
npm run deploy # Deploy to production
|
||
```
|
||
|
||
## 🧪 Testing
|
||
|
||
The repository includes a complete test suite to ensure code quality and functional correctness.
|
||
|
||
### Complete Testing
|
||
|
||
```bash
|
||
# Install test dependencies
|
||
npm install
|
||
|
||
# Run all tests
|
||
npm run test:run
|
||
|
||
# Generate coverage report
|
||
npm run test:coverage
|
||
|
||
# Watch mode
|
||
npm run test:watch
|
||
```
|
||
|
||
### Test Coverage
|
||
|
||
- **Unit Tests**: Core functionality, platform configuration, performance monitoring
|
||
- **Integration Tests**: End-to-end processes, platform integration, Git protocol
|
||
- **Security Tests**: Input validation, security headers, permission control
|
||
- **Performance Tests**: Response time, memory usage, concurrent processing
|
||
|
||
## 🔍 Troubleshooting
|
||
|
||
### Common Issues
|
||
|
||
**Q: No significant speed improvement?**
|
||
A: Check if source files are already cached at CDN edge nodes. Initial access may be slower, subsequent accesses will be significantly faster.
|
||
|
||
**Q: Git operations failing?**
|
||
A: Confirm correct URL format is used and Git client version supports HTTPS proxy.
|
||
|
||
**Q: Cannot access after deployment?**
|
||
A: Check if Cloudflare Workers domain is correctly bound, confirm `wrangler.toml` configuration is correct.
|
||
|
||
**Q: Getting 400 error?**
|
||
A: Check URL path format, confirm platform prefix is correctly used.
|
||
|
||
### Performance Monitoring
|
||
|
||
Performance metrics are returned in response headers:
|
||
|
||
- `X-Performance-Metrics`: Contains timing statistics for request stages
|
||
- `X-Cache-Status`: Shows cache hit status
|
||
|
||
### Log Debugging
|
||
|
||
In development environment, you can view detailed logs through Cloudflare Workers console:
|
||
|
||
```bash
|
||
npx wrangler dev --log-level debug
|
||
```
|
||
|
||
## ⚠️ Disclaimer
|
||
|
||
- **Legal and Compliant Use**: This repository aims to provide unified acceleration services for code repositories, package registries, AI inference APIs, container images, models, datasets, and other legitimate developer resources. Users must strictly comply with the laws and regulations of their jurisdiction and the terms of service of relevant platforms. Any illegal use is the sole responsibility of the user
|
||
- **Non-Affiliation and Independent Responsibility**: This repository has no affiliation, agency, or partnership relationship with any third-party platforms. Any fork, secondary development, redistribution, or derivative version based on this repository is solely the responsibility of its maintainer; authors, maintainers, and contributors bear no legal or joint liability for the actions or consequences of derivative repositories
|
||
- **No Warranty and Limitation of Liability**: To the maximum extent permitted by applicable law, this repository is provided "AS IS" without any express or implied warranties (including but not limited to merchantability, fitness for a particular purpose, non-infringement, etc.). Authors, maintainers, and contributors assume no responsibility for any direct or indirect losses (including but not limited to data loss, business interruption, profit loss, etc.) resulting from the use of this repository
|
||
- **Risk Assumption Principle**: Users should independently assess usage risks, ensure their use is legal and compliant, respect third-party rights, and must not use this repository for any illegal, infringing, malicious, or improper purposes
|
||
- **Third-Party Platform Compliance**: Users must comply with the terms of service, API usage policies, rate limits, and copyright requirements of relevant platforms, and avoid causing overload or interference to source platforms. Each platform has the final interpretation right over its content, services, and policies
|
||
- **Intellectual Property Protection**: Content obtained through this repository is protected by respective copyright laws. Users must comply with relevant licensing agreements, copyright notices, and terms of use, and must not engage in any activities that infringe intellectual property rights
|
||
- **Security Recommendations**: Although this repository adopts a no-log architecture and does not store user request data, due to inherent risks of internet transmission, users are advised to perform security scans on downloaded content, especially for executable files and scripts
|
||
- **Open Source Nature**: This repository is open source. Authors and contributors are not obligated to provide technical support, bug fixes, or continuous maintenance. The inclusion of external contributions does not constitute endorsement or commitment to specific uses or effects
|
||
- **Name Usage Guidelines**: Any representations that may imply authors or contributors provide commercial cooperation, technical support, guarantees, or endorsements are strictly prohibited. The use of repository names or author identifiers must comply with relevant laws and regulations as well as general norms
|
||
- **Disclaimer Updates**: This disclaimer may be updated and revised as the repository develops or legal environments change. Continued use, copying, distribution, or modification of this repository constitutes acceptance of the latest version of this disclaimer
|
||
|
||
## 🤝 Contributing
|
||
|
||
We welcome all forms of contribution! Please check the [Contributing Guide](CONTRIBUTING.md) to learn how to participate in repository development.
|
||
|
||
1. **Report Issues**: Use [issue templates](https://github.com/xixu-me/Xget/issues/new/choose) to report bugs or propose feature requests
|
||
2. **Submit Code**: Fork the repository, create a feature branch, submit a pull request
|
||
3. **Improve Documentation**: Fix errors, add examples, improve descriptions
|
||
4. **Testing Feedback**: Test in different environments and provide feedback
|
||
|
||
## 🌟 Star History
|
||
|
||
<a href="https://www.star-history.com/#xixu-me/Xget&Date">
|
||
<picture>
|
||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=xixu-me/Xget&type=Date&theme=dark" />
|
||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=xixu-me/Xget&type=Date" />
|
||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=xixu-me/Xget&type=Date" />
|
||
</picture>
|
||
</a>
|
||
|
||
## 📝 License
|
||
|
||
Copyright © Xi Xu.
|
||
|
||
This repository is licensed under the GPL-3.0 License - see the [LICENSE](LICENSE) file for details.
|
||
|
||
---
|
||
|
||
<div align="center">
|
||
|
||
**If this repository helps you, please consider giving it a ⭐ star!**
|
||
|
||
Made with ❤️ by [Xi Xu](https://xi-xu.me)
|
||
|
||
</div>
|
||
|
||
[](https://dartnode.com "Powered by DartNode - Free VPS for Open Source")
|