{"id":13634573,"url":"https://github.com/cfal/shoes","last_synced_at":"2026-01-20T00:07:28.785Z","repository":{"id":83703130,"uuid":"453514714","full_name":"cfal/shoes","owner":"cfal","description":"A multi-protocol proxy server written in Rust (HTTP, HTTPS, SOCKS5, Vmess, Vless, Shadowsocks, Trojan, Snell)","archived":false,"fork":false,"pushed_at":"2024-02-22T06:35:30.000Z","size":162,"stargazers_count":160,"open_issues_count":3,"forks_count":12,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-04-22T13:31:39.714Z","etag":null,"topics":["anticensorship","gfw","network","proxy","proxy-client","proxy-server","quic","rust","shadowsocks","snell","snell-server","socks5","tls","trojan","tunnel","v2ray","vless","vmess","vmess-ws-tls","vpn"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cfal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-29T20:47:08.000Z","updated_at":"2024-06-19T02:54:39.379Z","dependencies_parsed_at":"2024-01-07T21:53:57.422Z","dependency_job_id":"81e5c4ee-3bb5-4da1-9602-bda51a3e6215","html_url":"https://github.com/cfal/shoes","commit_stats":{"total_commits":27,"total_committers":1,"mean_commits":27.0,"dds":0.0,"last_synced_commit":"74c90368d3120c8532d1e8e52794992358d5453d"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cfal%2Fshoes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cfal%2Fshoes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cfal%2Fshoes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cfal%2Fshoes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cfal","download_url":"https://codeload.github.com/cfal/shoes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247430966,"owners_count":20937875,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anticensorship","gfw","network","proxy","proxy-client","proxy-server","quic","rust","shadowsocks","snell","snell-server","socks5","tls","trojan","tunnel","v2ray","vless","vmess","vmess-ws-tls","vpn"],"created_at":"2024-08-02T00:00:26.362Z","updated_at":"2026-01-20T00:07:28.780Z","avatar_url":"https://github.com/cfal.png","language":"Rust","funding_links":[],"categories":["Applications","vpn"],"sub_categories":[],"readme":"# shoes\n\nshoes is a high-performance multi-protocol proxy server written in Rust.\n\n## Supported Protocols\n\n### Proxy Protocols\n- **HTTP/HTTPS**\n- **SOCKS5** (with UDP ASSOCIATE)\n- **Mixed** (auto-detect HTTP/SOCKS5)\n- **VMess AEAD**\n- **VLESS** (with fallback support)\n- **Shadowsocks**\n- **Trojan**\n- **Snell v3**\n- **Hysteria2**\n- **TUIC v5**\n- **AnyTLS**\n- **NaiveProxy**\n- **H2MUX** (supported with VMess, VLESS, Trojan, Shadowsocks, Snell)\n\n### Transport Protocols\nAll server protocols plus:\n- **SagerNet UDP over TCP** (for Shadowsocks, SOCKS5, AnyTLS, NaiveProxy)\n- **ShadowTLS v3**\n- **TLS**\n- **WebSocket** (Shadowsocks SIP003)\n- **XTLS Reality**\n- **XTLS Vision** (for VLESS)\n\n### TUN/VPN Mode\n- **TUN device support** - Layer 3 VPN for transparent proxying\n- Supported platforms: Linux, Android, iOS\n\n### Supported Ciphers\n- **VMess**: `aes-128-gcm`, `chacha20-poly1305`, `none`\n- **Shadowsocks**: `aes-128-gcm`, `aes-256-gcm`, `chacha20-ietf-poly1305`, `2022-blake3-aes-128-gcm`, `2022-blake3-aes-256-gcm`, `2022-blake3-chacha20-ietf-poly1305`\n- **Snell v3**: `aes-128-gcm`, `aes-256-gcm`, `chacha20-ietf-poly1305`\n\n## Features\n\n- **Multi-transport**: TCP or QUIC for all protocols\n- **TLS with SNI routing**: Route by Server Name Indication\n- **Upstream proxy chaining**: Multi-hop chains with load balancing\n- **Rule-based routing**: Route by IP/CIDR or hostname masks\n- **Named PEM certificates**: Define once, reference everywhere\n- **TLS fingerprint authentication**: Certificate pinning for TLS/QUIC\n- **Hot reloading**: Apply config changes without restart\n- **Unix socket support**: Bind to Unix domain sockets\n\nFor advanced access control (IP allowlist/blocklists), see [tobaru](https://github.com/cfal/tobaru).\n\n## Installation\n\nPrecompiled binaries for x86_64 and Apple aarch64 are available on [Github Releases](https://github.com/cfal/shoes/releases).\n\nOr install with cargo:\n\n```bash\ncargo install shoes\n```\n\n## Usage\n\n```\nshoes [OPTIONS] \u003cconfig.yaml\u003e [config.yaml...]\n\nOPTIONS:\n    -t, --threads NUM    Set the number of worker threads (default: CPU count)\n    -d, --dry-run        Parse the config and exit\n    --no-reload          Disable automatic config reloading on file changes\n\nCOMMANDS:\n    generate-reality-keypair                  Generate a new Reality X25519 keypair\n    generate-shadowsocks-2022-password \u003ccipher\u003e    Generate a Shadowsocks password\n```\n\n### Examples\n```bash\n# Run with a single config file\nshoes config.yaml\n\n# Run with multiple config files\nshoes server1.yaml server2.yaml rules.yaml\n\n# Run with custom thread count\nshoes --threads 8 config.yaml\n\n# Validate configuration without starting\nshoes --dry-run config.yaml\n\n# Run without hot-reloading\nshoes --no-reload config.yaml\n\n# Generate Reality keypair\nshoes generate-reality-keypair\n\n# Generate Shadowsocks 2022 cipher password\nshoes generate-shadowsocks-2022-password 2022-blake3-aes-256-gcm\n```\n\n## Configuration\n\nSee [CONFIG.md](./CONFIG.md) for the complete YAML configuration reference.\n\n## Examples\n\nSee the [examples](./examples) directory for all examples.\n\n### Basic VMess Server\n```yaml\n- address: 0.0.0.0:16823\n  protocol:\n    type: vmess\n    cipher: chacha20-poly1305\n    user_id: b0e80a62-8a51-47f0-91f1-f0f7faf8d9d4\n    udp_enabled: true\n```\n\n### VLESS with Vision over TLS\n```yaml\n- address: 0.0.0.0:443\n  protocol:\n    type: tls\n    tls_targets:\n      \"vless.example.com\":\n        cert: cert.pem\n        key: key.pem\n        vision: true\n        alpn_protocols: [\"http/1.1\"]\n        protocol:\n          type: vless\n          user_id: b85798ef-e9dc-46a4-9a87-8da4499d36d0\n          udp_enabled: true\n```\n\n### Reality Server\n```yaml\n- address: 0.0.0.0:443\n  protocol:\n    type: tls\n    reality_targets:\n      \"www.example.com\":\n        private_key: \"YOUR_BASE64URL_PRIVATE_KEY\"\n        short_ids: [\"0123456789abcdef\", \"\"]\n        dest: \"www.example.com:443\"\n        protocol:\n          type: vless\n          user_id: b85798ef-e9dc-46a4-9a87-8da4499d36d0\n          udp_enabled: true\n```\n\n### Reality Client\n```yaml\n- address: 127.0.0.1:1080\n  protocol:\n    type: socks\n  rules:\n    - masks: \"0.0.0.0/0\"\n      action: allow\n      client_chain:\n        address: \"server.example.com:443\"\n        protocol:\n          type: reality\n          public_key: \"SERVER_PUBLIC_KEY\"\n          short_id: \"0123456789abcdef\"\n          sni_hostname: \"www.example.com\"\n          protocol:\n            type: vless\n            user_id: b85798ef-e9dc-46a4-9a87-8da4499d36d0\n```\n\n### Hysteria2 Server\n```yaml\n- address: 0.0.0.0:443\n  transport: quic\n  quic_settings:\n    cert: cert.pem\n    key: key.pem\n    alpn_protocols: [\"h3\"]\n  protocol:\n    type: hysteria2\n    password: supersecret\n    udp_enabled: true\n```\n\n### TUIC v5 Server\n```yaml\n- address: 0.0.0.0:443\n  transport: quic\n  quic_settings:\n    cert: cert.pem\n    key: key.pem\n  protocol:\n    type: tuic\n    uuid: d685aef3-b3c4-4932-9a9d-d0c2f6727dfa\n    password: supersecret\n```\n\n### Mixed HTTP/SOCKS5 Server\n```yaml\n- address: 0.0.0.0:7890\n  protocol:\n    type: mixed\n    username: myuser\n    password: mypassword\n```\n\n### AnyTLS Server\n```yaml\n- address: 0.0.0.0:443\n  protocol:\n    type: tls\n    tls_targets:\n      \"anytls.example.com\":\n        cert: cert.pem\n        key: key.pem\n        protocol:\n          type: anytls\n          users:\n            - name: user1\n              password: secret123\n          udp_enabled: true\n```\n\n### NaiveProxy Server\n```yaml\n- address: 0.0.0.0:443\n  protocol:\n    type: tls\n    tls_targets:\n      \"naive.example.com\":\n        cert: cert.pem\n        key: key.pem\n        alpn_protocols: [\"h2\"]\n        protocol:\n          type: naiveproxy\n          users:\n            - username: user1\n              password: secret123\n          padding: true\n```\n\n### TUN VPN\n```yaml\n- device_name: tun0\n  address: 10.0.0.1\n  netmask: 255.255.255.0\n  mtu: 1500\n  tcp_enabled: true\n  udp_enabled: true\n  rules:\n    - masks: \"0.0.0.0/0\"\n      action: allow\n      client_chain:\n        address: \"proxy.example.com:443\"\n        protocol:\n          type: tls\n          protocol:\n            type: vless\n            user_id: b85798ef-e9dc-46a4-9a87-8da4499d36d0\n```\n\n## Similar Projects\n\n- [apernet/hysteria](https://github.com/apernet/hysteria)\n- [ihciah/shadow-tls](https://github.com/ihciah/shadow-tls)\n- [SagerNet/sing-box](https://github.com/SagerNet/sing-box)\n- [shadowsocks/shadowsocks-rust](https://github.com/shadowsocks/shadowsocks-rust)\n- [EAimTY/tuic](https://github.com/EAimTY/tuic)\n- [v2fly/v2ray-core](https://github.com/v2fly/v2ray-core)\n- [XTLS/Xray-core](https://github.com/XTLS/Xray-core)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcfal%2Fshoes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcfal%2Fshoes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcfal%2Fshoes/lists"}