xixu-me fdff94fa4d Add Docker deployment instructions to README
Added a new section to the README with detailed instructions for deploying using Docker, Docker Compose, and Kubernetes. Also updated badges to include Docker and made minor formatting improvements throughout the file.
2025-08-19 21:38:38 +08:00
2024-11-01 19:08:30 +08:00
2024-11-01 19:08:30 +08:00
2024-11-01 17:11:15 +08:00

Xget

中文

Chromium Extension Firefox Extension Cloudflare Workers Vercel Docker

GitHub GitLab Gitea Codeberg SourceForge AOSP Hugging Face npm PyPI conda Maven Apache Gradle Homebrew RubyGems CRAN CPAN CTAN Go NuGet Rust Packagist Debian Ubuntu Fedora Rocky Linux openSUSE Arch Linux arXiv F-Droid AI Inference Providers Container Registries

Ultra-high performance, secure, all-in-one open-source resource acceleration engine. Significantly outperforms traditional accelerators, providing unified and efficient acceleration across multiple platforms including code repositories, package managers, AI inference APIs, container images, models, and datasets.

🎯 Quick Start

Public Instance: xget.xi-xu.me - Ready to use, no deployment required!

URL Converter: xuc.xi-xu.me - One-click conversion of any supported platform URL to Xget acceleration format!

⚡ Experience lightning-fast downloads instantly: No registration, no configuration needed - just start using it to feel the blazing download speeds!

🌟 Core Advantages - Why Choose Xget?

⚡ Extreme Performance - Breaking Traditional Accelerator Bottlenecks

  • ⚡ Millisecond Response: Cloudflare's global 330+ edge nodes with average response time < 50ms
  • 🌐 HTTP/3 Ultra-Fast Protocol: Latest HTTP/3 protocol reduces connection latency by 40% and boosts transfer speed by 30%
  • 📦 Smart Multi-Layer Compression: Triple compression with gzip, deflate, and brotli algorithms improves transfer efficiency by 60%
  • 🔗 Zero-Latency Pre-connection: Connection warming and keep-alive eliminates handshake overhead for instant response
  • ⚡ Parallel Chunked Downloads: Full HTTP Range request support enables multi-threaded downloads with multiplied speeds
  • 🎯 Intelligent Route Optimization: Automatically selects optimal transfer paths, avoiding network congestion nodes

🌐 Deep Multi-Platform Integration

  • Unified Multi-Platform Support: Single solution for code repositories, package managers, AI inference providers, container registries, and model/dataset hosting platforms
  • Smart Recognition & Transformation: Automatically identifies platform prefixes and converts to correct target platform URL structures
  • Consistent Acceleration Experience: Enjoy unified and stable ultra-fast download service regardless of file type or source

🔒 Enterprise-Grade Security

  • Multi-Layer Security Headers:
    • Strict-Transport-Security: Enforces HTTPS transport, 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 limits: Prevents oversized 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 & Reliability

  • Smart Retry Mechanism:
    • Maximum 3 retries with linear delay strategy (1000ms × retry count)
    • Automatic error recovery improves 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 bypass cache ensuring real-time updates
    • Edge caching based on Cloudflare Cache API
  • Performance Monitoring System:
    • Built-in PerformanceMonitor class tracks request stage timing in real-time
    • Detailed performance data 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 with shallow clone and branch specification support
    • git push: Code pushing 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 (defaults to git/2.34.1)
    • Supports Git LFS large file transfers

📱 Ecosystem Integration

  • Dedicated Browser Extensions: Xget Now provides seamless experience
    • Automatic URL redirection without manual URL modification
    • Custom Xget instance domain support
    • 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: Direct usage in GitHub Actions, GitLab CI, and other environments

📖 URL Transformation Rules

Using the public instance xget.xi-xu.me or your own deployed instance, simply replace the domain and add platform prefixes:

Transformation Format

Platform Platform Prefix Original URL Format Accelerated URL Format
GitHub gh https://github.com/... https://xget.xi-xu.me/gh/...
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/...
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/...
AI Inference Providers ip See AI Inference Providers See AI Inference Providers
Container Registries cr See Container Registries See Container Registries

Platform Transformation Examples

GitHub

# Original URL
https://github.com/microsoft/vscode/archive/refs/heads/main.zip

# Transformed (add gh prefix)
https://xget.xi-xu.me/gh/microsoft/vscode/archive/refs/heads/main.zip

GitLab

# Original URL
https://gitlab.com/gitlab-org/gitlab/-/archive/master/gitlab-master.zip

# Transformed (add gl prefix)
https://xget.xi-xu.me/gl/gitlab-org/gitlab/-/archive/master/gitlab-master.zip

Gitea

# Original URL
https://gitea.com/gitea/gitea/archive/master.zip

# Transformed (add gitea prefix)
https://xget.xi-xu.me/gitea/gitea/gitea/archive/master.zip

Codeberg

# Original URL
https://codeberg.org/forgejo/forgejo/archive/forgejo.zip

# Transformed (add codeberg prefix)
https://xget.xi-xu.me/codeberg/forgejo/forgejo/archive/forgejo.zip

SourceForge

# Original URL
https://sourceforge.net/projects/sevenzip/files/7-Zip/23.01/7z2301-x64.exe/download

# Transformed (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)

# AOSP project original URL
https://android.googlesource.com/platform/frameworks/base

# Transformed (add aosp prefix)
https://xget.xi-xu.me/aosp/platform/frameworks/base

# AOSP device tree original URL
https://android.googlesource.com/device/google/pixel

# Transformed (add aosp prefix)
https://xget.xi-xu.me/aosp/device/google/pixel

Hugging Face

# Model file original URL
https://huggingface.co/microsoft/DialoGPT-medium/resolve/main/pytorch_model.bin

# Transformed (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

# Transformed (add hf prefix)
https://xget.xi-xu.me/hf/datasets/rajpurkar/squad/resolve/main/plain_text/train-00000-of-00001.parquet

npm

# Package file original URL
https://registry.npmjs.org/react/-/react-18.2.0.tgz

# Transformed (add npm prefix)
https://xget.xi-xu.me/npm/react/-/react-18.2.0.tgz

# Package metadata original URL
https://registry.npmjs.org/lodash

# Transformed (add npm prefix)
https://xget.xi-xu.me/npm/lodash

PyPI

# Python package file original URL
https://pypi.org/packages/source/r/requests/requests-2.31.0.tar.gz

# Transformed (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

# Transformed (add pypi prefix)
https://xget.xi-xu.me/pypi/packages/py3/r/requests/requests-2.31.0-py3-none-any.whl

conda

# Default channel package file original URL
https://repo.anaconda.com/pkgs/main/linux-64/numpy-1.24.3-py311h08b1b3b_1.conda

# Transformed (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

# Transformed (add conda/community prefix)
https://xget.xi-xu.me/conda/community/conda-forge/linux-64/repodata.json

Maven

# 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

# Transformed (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

# Transformed (add maven prefix)
https://xget.xi-xu.me/maven/maven2/org/apache/commons/commons-lang3/maven-metadata.xml

Apache Software Downloads

# Apache software download original URL
https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz

# Transformed (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

# Transformed (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

# Transformed (add apache prefix)
https://xget.xi-xu.me/apache/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz

AI Inference Providers

Xget supports numerous mainstream AI inference providers with API acceleration using the ip/[AI Provider Prefix] format:

AI Inference Provider AI 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/...
HF Inference huggingface https://router.huggingface.co/... https://xget.xi-xu.me/ip/huggingface/...
Together together https://api.together.xyz/... https://xget.xi-xu.me/ip/together/...
Replicate replicate https://api.replicate.com/... https://xget.xi-xu.me/ip/replicate/...
Fireworks fireworks https://api.fireworks.ai/... https://xget.xi-xu.me/ip/fireworks/...
Nebius nebius https://api.studio.nebius.ai/... https://xget.xi-xu.me/ip/nebius/...
Jina jina https://api.jina.ai/... https://xget.xi-xu.me/ip/jina/...
Voyage AI voyageai https://api.voyageai.com/... https://xget.xi-xu.me/ip/voyageai/...
Fal AI falai https://fal.run/... https://xget.xi-xu.me/ip/falai/...
Novita novita https://api.novita.ai/... https://xget.xi-xu.me/ip/novita/...
Burncloud burncloud https://ai.burncloud.com/... https://xget.xi-xu.me/ip/burncloud/...
OpenRouter openrouter https://openrouter.ai/... https://xget.xi-xu.me/ip/openrouter/...
Poe poe https://api.poe.com/... https://xget.xi-xu.me/ip/poe/...
Featherless AI featherlessai https://api.featherless.ai/... https://xget.xi-xu.me/ip/featherlessai/...
Hyperbolic hyperbolic https://api.hyperbolic.xyz/... https://xget.xi-xu.me/ip/hyperbolic/...
# OpenAI API original URL
https://api.openai.com/v1/chat/completions

# Transformed (add ip/openai prefix)
https://xget.xi-xu.me/ip/openai/v1/chat/completions

# Anthropic API original URL
https://api.anthropic.com/v1/messages

# Transformed (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

# Transformed (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

# Transformed (add ip/huggingface prefix)
https://xget.xi-xu.me/ip/huggingface/hf-inference/models/openai/whisper-large-v3

Use cases are detailed in AI Inference API Acceleration.

Container Registries

Xget supports multiple container registries using the cr/[Container Registry Prefix] format:

Container Registry Registry Prefix Original URL Format Accelerated URL Format
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/...
# GitHub Container Registry original URL
https://ghcr.io/v2/nginxinc/nginx-unprivileged/manifests/latest

# Transformed (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

# Transformed (add cr/gcr prefix)
https://xget.xi-xu.me/cr/gcr/v2/distroless/base/manifests/latest

Use cases are detailed in Container Image Acceleration.

🎯 Use Cases

Git Operations & Configuration

Xget is fully compatible with Git protocol, supporting all standard Git operations with global acceleration configuration:

Git Operations

# 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

# 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 acceleration
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 Downloads

# 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 Downloads

# 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 Downloads

# Multi-threaded download for 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 with config file
aria2c -i download-list.txt  # File containing multiple Xget URLs

Hugging Face Mirror

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
# No additional parameters needed due to environment variable setting above
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))

npm Package Acceleration

Configure npm to use Xget mirror

# 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

Project-level usage

# 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

# 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

Project-level usage

# 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 config file
pip install -r requirements.txt --config-file pip.conf

Specify mirror in requirements.txt

# requirements.txt
--index-url https://xget.xi-xu.me/pypi/simple/
--trusted-host xget.xi-xu.me

requests>=2.25.0
numpy>=1.21.0
pandas>=1.3.0
matplotlib>=3.4.0

conda Package Acceleration

Configure conda to use Xget mirror

# 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:

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

Using environment files

Environment files can directly specify complete mirror URLs:

# 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
# 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

<!-- 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>

Project-level usage

<!-- 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>
# Use command line to specify mirror
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 Downloads

Download Apache software using Xget

# 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

# 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

// 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

// 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()
        }
    }
}
# Use command line to specify mirror
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

# 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

Permanent configuration

# Add to ~/.bash_profile for bash users
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

# Add to ~/.zprofile for zsh users
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

Project usage

# Install packages
brew install git

# Search packages
brew search python

# Update packages
brew upgrade

# List installed packages
brew list

Verify mirror configuration

# 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

# 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

Project usage

# 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'
# Use bundle to install
bundle config mirror.https://rubygems.org https://xget.xi-xu.me/rubygems/
bundle install

R Package Acceleration

Configure R to use Xget CRAN mirror

# 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

# Configure global mirror in user home directory .Rprofile file
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")

Project usage

# Specify mirror in project's renv.lock or scripts
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/")
# Use R script to install packages from 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

# Configure CPAN to use Xget mirror
cpan o conf urllist push https://xget.xi-xu.me/cpan/
cpan o conf commit

# Or directly edit config file ~/.cpan/CPAN/MyConfig.pm
# Add:
# 'urllist' => [q[https://xget.xi-xu.me/cpan/]],

Use cpanm to install modules

# 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 .

Project usage

# 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

# 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

# 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

Project usage

# LaTeX document compilation with automatic missing package installation
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

# Configure Go module proxy
export GOPROXY=https://xget.xi-xu.me/golang,direct
export GOSUMDB=off

# Or configure permanently
go env -w GOPROXY=https://xget.xi-xu.me/golang,direct
go env -w GOSUMDB=off

# Verify configuration
go env GOPROXY

Project usage

# 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

# 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

<!-- 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

# 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

Project usage

# Normal dependency usage in Cargo.toml
[dependencies]
serde = "1.0"
tokio = "1.0"
reqwest = "0.11"
# Build project will automatically use Xget acceleration
cargo build

# Update dependencies
cargo update

# Add new dependencies
cargo add clap

PHP Package Acceleration

Configure Composer to use Xget mirror

# 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

{
  "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

# Backup original sources 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 lists
sudo apt update

Fedora DNF Configuration

# 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

# 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

# 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 repositories
sudo zypper refresh

# Verify configuration
sudo zypper lr -u

Arch Linux Pacman Configuration

# 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 Downloads

# Download arXiv paper PDF
wget https://xget.xi-xu.me/arxiv/pdf/2301.07041.pdf

# Download paper source code
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

Usage in academic tools

# Use arXiv acceleration 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

F-Droid is the largest open-source app store on the Android platform. Xget provides high-speed mirror services for F-Droid repositories, significantly improving app download and update speeds.

Configure F-Droid client to use Xget mirror

  1. In the 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

# F-Droid app APK downloads
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

# 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

# Create app download script
cat > download_fdroid_apps.sh << 'EOF'
#!/bin/bash

# Define app list 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:

// Configure F-Droid dependency checking 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}"
        }
    }
}

AI Inference API Acceleration

Xget provides acceleration services for numerous AI inference APIs, significantly improving API response speed and reliability through intelligent routing optimization.

OpenAI API

import openai

# Use Xget-accelerated OpenAI API
client = openai.OpenAI(
    api_key="your-api-key",
    base_url="https://xget.xi-xu.me/ip/openai/v1"  # Use Xget acceleration
)

# Chat completion
response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "user", "content": "Hello, how are you?"}
    ]
)

print(response.choices[0].message.content)

Anthropic API

import anthropic

# Use Xget-accelerated Anthropic API
client = anthropic.Anthropic(
    api_key="your-api-key",
    base_url="https://xget.xi-xu.me/ip/anthropic"  # Use Xget acceleration
)

# Create message
message = client.messages.create(
    model="claude-3-sonnet-20240229",
    max_tokens=1000,
    messages=[
        {"role": "user", "content": "Hello, Claude!"}
    ]
)

print(message.content)

Gemini API

import google.generativeai as genai

# Configure API key
genai.configure(api_key="your-api-key")

# Use custom transport to configure Xget acceleration
import requests

class XgetTransport:
    def __init__(self, base_url):
        self.base_url = base_url

    def request(self, method, url, **kwargs):
        # Forward requests to Xget acceleration service
        accelerated_url = url.replace("https://generativelanguage.googleapis.com",
                                    "https://xget.xi-xu.me/ip/gemini")
        return requests.request(method, accelerated_url, **kwargs)

# Create model instance
model = genai.GenerativeModel('gemini-pro')

# Generate content
response = model.generate_content("Write a brief introduction about artificial intelligence")
print(response.text)

Multi-provider unified interface

import requests
import json

def call_ai_api(provider, endpoint, data, api_key):
    """
    Unified AI API calling function supporting multiple providers
    """
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }

    # Use Xget acceleration URL
    url = f"https://xget.xi-xu.me/ip/{provider}/{endpoint}"

    response = requests.post(url, headers=headers, json=data)
    return response.json()

# Usage examples
providers = {
    "openai": {
        "endpoint": "v1/chat/completions",
        "data": {
            "model": "gpt-4",
            "messages": [{"role": "user", "content": "Hello!"}]
        }
    },
    "anthropic": {
        "endpoint": "v1/messages",
        "data": {
            "model": "claude-3-sonnet-20240229",
            "max_tokens": 1000,
            "messages": [{"role": "user", "content": "Hello!"}]
        }
    },
    "cohere": {
        "endpoint": "v1/generate",
        "data": {
            "model": "command",
            "prompt": "Hello!",
            "max_tokens": 100
        }
    }
}

# Loop through different providers
for provider, config in providers.items():
    try:
        result = call_ai_api(
            provider=provider,
            endpoint=config["endpoint"],
            data=config["data"],
            api_key="your-api-key"
        )
        print(f"{provider.title()} response: {result}")
    except Exception as e:
        print(f"Error calling {provider}: {e}")

JavaScript/Node.js usage

// OpenAI API acceleration
import OpenAI from 'openai';

const openai = new OpenAI({
  apiKey: 'your-api-key',
  baseURL: 'https://xget.xi-xu.me/ip/openai',  // Use Xget acceleration
});

async function chatWithGPT() {
  const completion = await openai.chat.completions.create({
    messages: [{ role: 'user', content: 'Hello!' }],
    model: 'gpt-4',
  });

  console.log(completion.choices[0].message.content);
}

// Anthropic API acceleration
import Anthropic from '@anthropic-ai/sdk';

const anthropic = new Anthropic({
  apiKey: 'your-api-key',
  baseURL: 'https://xget.xi-xu.me/ip/anthropic',  // Use Xget acceleration
});

async function chatWithClaude() {
  const message = await anthropic.messages.create({
    model: 'claude-3-sonnet-20240229',
    max_tokens: 1000,
    messages: [{ role: 'user', content: 'Hello!' }],
  });

  console.log(message.content);
}

Environment variable configuration

# 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:

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 use Xget acceleration
)

Container Image Acceleration

Xget provides comprehensive acceleration support for container image pulling, compatible with Docker, Podman, containerd, and other container runtimes.

Docker Configuration

# Configure Docker to use Xget image acceleration
# Edit /etc/docker/daemon.json (Linux) or ~/.docker/daemon.json (macOS/Windows)
{
  "registry-mirrors": [
    "https://xget.xi-xu.me/cr/ghcr"
  ]
}

# Restart Docker service
sudo systemctl restart docker  # Linux
# Or restart service in Docker Desktop

# Verify configuration
docker info | grep -A 10 "Registry Mirrors"

Direct image pulling

# 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

# deployment.yaml - Use Xget-accelerated 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

# 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

# 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 .NET images
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

# GitHub Actions - Use Xget acceleration for 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-accelerated 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

# 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

# Configure containerd to use Xget acceleration
# 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"]
# Restart containerd
sudo systemctl restart containerd

CI/CD Environment Integration

GitHub Actions

name: Download Dependencies
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Download model files
        run: |
          # Use Xget acceleration to download large model files
          wget https://xget.xi-xu.me/hf/microsoft/DialoGPT-medium/resolve/main/pytorch_model.bin

      - name: Clone dependency repo
        run: |
          # Use Xget acceleration for Git cloning
          git clone https://xget.xi-xu.me/gh/[owner]/[repository].git

      - name: Download release assets
        run: |
          # Batch download release files
          curl -L -O https://xget.xi-xu.me/gh/[owner]/[repository]/releases/download/v1.0.0/[filename].tar.gz
          curl -L -O https://xget.xi-xu.me/gh/[owner]/[repository]/releases/download/v1.0.0/[filename].zip

GitLab CI

stages:
  - download
  - build

download_dependencies:
  stage: download
  script:
    # Use Xget acceleration for downloads
    - wget https://xget.xi-xu.me/gl/gitlab-org/gitlab-runner/-/archive/main/gitlab-runner-main.zip
    - git clone https://xget.xi-xu.me/gh/[owner]/[dependency-repository].git
    # Download Hugging Face datasets
    - curl -L -O https://xget.xi-xu.me/hf/datasets/wikitext/resolve/main/wikitext-103-v1/wiki.train.tokens
  artifacts:
    paths:
      - "*.zip"
      - "*.json"
      - dependency/

Docker build optimization

FROM ubuntu:22.04

# Use Xget acceleration for downloads in Docker builds
RUN apt-get update && apt-get install -y wget curl git

# Download large files
RUN wget https://xget.xi-xu.me/gh/microsoft/vscode/archive/refs/heads/main.zip

# Clone source code
RUN git clone https://xget.xi-xu.me/gh/[owner]/[source-repository].git /app

# Download model files
RUN curl -L -O /models/model.bin https://xget.xi-xu.me/hf/microsoft/DialoGPT-medium/resolve/main/pytorch_model.bin

# Configure and install conda packages
RUN echo "default_channels:" > ~/.condarc && \
    echo "  - https://xget.xi-xu.me/conda/pkgs/main" >> ~/.condarc && \
    echo "  - https://xget.xi-xu.me/conda/pkgs/r" >> ~/.condarc && \
    echo "  - https://xget.xi-xu.me/conda/pkgs/msys2" >> ~/.condarc && \
    echo "channel_alias: https://xget.xi-xu.me/conda/community" >> ~/.condarc && \
    echo "channel_priority: strict" >> ~/.condarc && \
    conda install -y numpy pandas matplotlib

WORKDIR /app

🚀 Deployment Options

One-Click Cloudflare Workers Deployment

Deploy to Cloudflare Workers

After deployment, your Xget service will be available at your-worker-name.your-subdomain.workers.dev.

One-Click Vercel Deployment

Deploy with Vercel

After deployment, your Xget service will be available at your-project-name.vercel.app.

Docker Deployment

Docker

# Pull the latest image
docker pull ghcr.io/xixu-me/xget:latest

# Run the container
docker run -d \
  --name xget \
  -p 3000:3000 \
  --restart unless-stopped \
  ghcr.io/xixu-me/xget:latest

Building Locally

# Clone the repository
git clone https://github.com/xixu-me/Xget.git
cd Xget

# Build the image
docker build -t xget .

# Run the container
docker run -d \
  --name xget \
  -p 3000:3000 \
  --restart unless-stopped \
  xget

Docker Compose

Create a docker-compose.yml file:

version: '3.8'

services:
  xget:
    image: ghcr.io/xixu-me/xget:latest
    container_name: xget
    ports:
      - "3000:3000"
    restart: unless-stopped
    environment:
      - NODE_ENV=production
      - PORT=3000
    healthcheck:
      test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/api/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

Then run:

docker-compose up -d

Kubernetes Deployment

Create a k8s-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: xget
  labels:
    app: xget
spec:
  replicas: 3
  selector:
    matchLabels:
      app: xget
  template:
    metadata:
      labels:
        app: xget
    spec:
      containers:
      - name: xget
        image: ghcr.io/xixu-me/xget:latest
        ports:
        - containerPort: 3000
        env:
        - name: NODE_ENV
          value: "production"
        - name: PORT
          value: "3000"
        livenessProbe:
          httpGet:
            path: /api/health
            port: 3000
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /api/health
            port: 3000
          initialDelaySeconds: 5
          periodSeconds: 5
        resources:
          requests:
            memory: "128Mi"
            cpu: "100m"
          limits:
            memory: "256Mi"
            cpu: "500m"
---
apiVersion: v1
kind: Service
metadata:
  name: xget-service
spec:
  selector:
    app: xget
  ports:
    - protocol: TCP
      port: 80
      targetPort: 3000
  type: LoadBalancer

Deploy to Kubernetes:

kubectl apply -f k8s-deployment.yaml

After deployment, your Xget service will be available at http://localhost:3000. You can check the service status through the /api/health endpoint.

Manual Deployment

If you prefer manual deployment or need custom configuration:

Prerequisites

  1. Sign up for a Cloudflare account
  2. Install Node.js

Deployment Steps

  1. Clone the repository

    git clone https://github.com/xixu-me/Xget.git
    cd Xget
    
  2. Install dependencies and authenticate

    npm install
    npx wrangler login
    
  3. Customize configuration (optional)

    Edit the wrangler.toml file to set your repository name:

    name = "your-xget-project-name"
    
  4. Deploy

    npm run deploy
    

After deployment, your Xget service will be available at your-worker-name.your-subdomain.workers.dev.

🔧 Configuration

Configuration Parameters

You can customize configuration by modifying src/config/index.js:

export const CONFIG = {
  TIMEOUT_SECONDS: 30,       // Request timeout (seconds)
  MAX_RETRIES: 3,            // Maximum retry attempts
  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; frequently updated repositories can use lower values
  • Timeout Settings: Increase TIMEOUT_SECONDS for poor network conditions
  • Retry Strategy: Increase MAX_RETRIES and RETRY_DELAY_MS for high-latency environments

Adding New Platforms

To add support for new platforms, edit src/config/platforms.js:

export const PLATFORMS = {
  // Existing platforms...

  // New platform example
  custom: {
    base: "https://example.com",
    transform: (path) => path.replace(/^\/custom\//, "/"),
  },
};

🚧 Development

  1. Repository Setup

    git clone https://github.com/xixu-me/Xget.git
    cd Xget
    npm install
    npx wrangler login  # First time use
    
  2. Local Development

    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 comprehensive test suite ensuring code quality and functionality.

Complete Testing

# 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 workflows, platform integration, Git protocol
  • Security Tests: Input validation, security headers, permission control
  • Performance Tests: Response time, memory usage, concurrent processing

🔍 Troubleshooting

Common Issues

Q: Download speed not significantly improved? A: Check if source files are already cached on CDN edge nodes. First access may be slower, subsequent access will be significantly faster.

Q: Git operations failing? A: Confirm correct URL format usage and that Git client version supports HTTPS proxy.

Q: Cannot access after deployment? A: Check if Cloudflare Workers domain is correctly bound and confirm wrangler.toml configuration is correct.

Q: Getting 400 errors? A: Check URL path format and confirm platform prefix is used correctly.

Performance Monitoring

The service returns performance metrics in response headers:

  • X-Performance-Metrics: Contains timing statistics for request stages
  • X-Cache-Status: Shows cache hit status

Debug Logging

In development environment, you can view detailed logs through Cloudflare Workers console:

npx wrangler dev --log-level debug

⚠️ Disclaimer

  • Legal Use: This repository is for accelerating legal public file downloads and Git operations only. Please comply with relevant platform terms of service and local laws
  • Service Availability: Public instance xget.xi-xu.me is a free service with no 100% availability guarantee. Production environments should deploy their own instances
  • Data Security: While Xget does not store or log user data, please handle sensitive information downloads carefully
  • Liability Limitation: Developers are not responsible for any direct or indirect losses caused by using this service
  • Third-party Platforms: Please respect the terms of service and rate limits of GitHub, GitLab, Gitea, Codeberg, SourceForge, Hugging Face, and other platforms

🤝 Contributing

We welcome all forms of contributions! Please check the Contributing Guide to learn how to participate in repository development.

  1. Report Issues: Use issue templates to report bugs or request features
  2. Submit Code: Fork the repository, create feature branches, submit pull requests
  3. Improve Documentation: Fix errors, add examples, improve explanations
  4. Testing Feedback: Test in different environments and provide feedback

🌟 Star History

Star History Chart

📞 Contact

📝 License

This repository is licensed under the GPL-3.0 License - see the LICENSE file for details.


If this repository helps you, please consider giving it a ⭐ star!

Made with ❤️ by Xi Xu

S
Description
Ultra-high-performance, secure, all-in-one acceleration engine for developer resources
Readme AGPL-3.0
3.3 MiB
0 Stars 1 Watchers 0 Forks
Languages
JavaScript 99.5%
Dockerfile 0.3%
Cap'n Proto 0.2%