{"id":16687865,"url":"https://github.com/picohz/taxy","last_synced_at":"2025-04-04T08:08:25.774Z","repository":{"id":153209756,"uuid":"619484425","full_name":"picoHz/taxy","owner":"picoHz","description":"A reverse proxy server with built-in WebUI, supporting TCP/HTTP/TLS/WebSocket, written in Rust.","archived":false,"fork":false,"pushed_at":"2024-10-09T14:32:44.000Z","size":2746,"stargazers_count":71,"open_issues_count":7,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-13T15:25:21.336Z","etag":null,"topics":["acme","http","http-proxy","http2","proxy","proxy-server","reverse-proxy","rust","tcp","tls-proxy","tokio","websocket"],"latest_commit_sha":null,"homepage":"https://taxy.dev/","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/picoHz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2023-03-27T08:29:13.000Z","updated_at":"2024-10-09T14:33:36.000Z","dependencies_parsed_at":"2024-01-21T11:24:17.764Z","dependency_job_id":"76cef9c4-dbab-4e6f-aec2-fb7ef4593e7e","html_url":"https://github.com/picoHz/taxy","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/picoHz%2Ftaxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/picoHz%2Ftaxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/picoHz%2Ftaxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/picoHz%2Ftaxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/picoHz","download_url":"https://codeload.github.com/picoHz/taxy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247142066,"owners_count":20890652,"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":["acme","http","http-proxy","http2","proxy","proxy-server","reverse-proxy","rust","tcp","tls-proxy","tokio","websocket"],"created_at":"2024-10-12T15:25:27.405Z","updated_at":"2025-04-04T08:08:25.767Z","avatar_url":"https://github.com/picoHz.png","language":"Rust","readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg alt=\"edition logo\" src=\"https://github.com/picoHz/taxy/blob/main/logo.svg?raw=true\" width=\"150\" /\u003e\n\n# Taxy\n\nA reverse proxy server with built-in WebUI, supporting TCP/UDP/HTTP/TLS/WebSocket, written in Rust.\n\n[![Crates.io](https://img.shields.io/crates/v/taxy.svg)](https://crates.io/crates/taxy)\n[![GitHub license](https://img.shields.io/github/license/picoHz/taxy.svg)](https://github.com/picoHz/taxy/blob/main/LICENSE)\n[![Rust](https://github.com/picoHz/taxy/actions/workflows/rust.yml/badge.svg)](https://github.com/picoHz/taxy/actions/workflows/rust.yml)\n[![dependency status](https://deps.rs/crate/taxy/latest/status.svg)](https://deps.rs/crate/taxy)\n\n\u003c/div\u003e\n\n## 🚧 Notice\n\nTaxy is currently in early development. Please be aware that breaking changes may occur frequently, particularly when upgrading between minor versions (e.g., from 0.3.x to 0.4.x).\n\n## Overview\n\n- Built with Rust for optimal performance and safety, powered by tokio and hyper\n- Supports TCP, UDP, TLS, HTTP1, and HTTP2, including HTTP upgrading and WebSocket functionality\n- Partial HTTP/3 support (incoming QUIC connections only; WebTransport not supported)\n- Easily deployable single binary with a built-in WebUI\n- Allows live configuration updates via a REST API without restarting the service\n- Imports TLS certificates from the GUI or can generate a self-signed certificate\n- Provides Let's Encrypt support (ACME v2, HTTP challenge only) for seamless certificate provisioning\n\n## Screenshot\n\n![Taxy WebUI Screenshot](https://raw.githubusercontent.com/picoHz/taxy/main/screenshot.png)\n\n## Web UI Demo\n\nVisit https://demo.taxy.dev/. (username: `admin`, password: `admin`)\n\nPlease note, you can change the configuration freely, but due to the instance being behind a firewall, the configured proxies are not accessible from the outside.\n\n## Installation\n\nThere are multiple ways to install Taxy.\n\n## Docker\n\nRun the following command to start Taxy using Docker:\n\n```bash\ndocker run -d \\\n  -v taxy-config:/root/.config/taxy \\\n  -p 80:80 \\\n  -p 443:443 \\\n  -p 127.0.0.1:46492:46492 \\\n  --restart unless-stopped \\\n  --name taxy \\\n  ghcr.io/picohz/taxy:latest\n```\n\nTo log in to the admin panel, you'll first need to create a user. Follow the steps below to create an admin user:\n\n```bash\ndocker exec -t -i taxy taxy add-user admin\npassword?: ******\n```\n\n### Docker Compose\n\nCreate a file named `docker-compose.yml` with the following content:\n\n```yaml\nversion: \"3\"\nservices:\n  taxy:\n    image: ghcr.io/picohz/taxy:latest\n    container_name: taxy\n    volumes:\n      - taxy-config:/root/.config/taxy\n    ports:\n      # Add ports here if you want to expose them to the host\n      - 80:80\n      - 443:443\n      - 127.0.0.1:46492:46492 # Admin panel\n    restart: unless-stopped\n\nvolumes:\n  taxy-config:\n```\n\nRun the following command to start Taxy:\n\n```bash\n$ docker-compose up -d\n```\n\nTo log in to the admin panel, you'll first need to create a user. Follow the steps below to create an admin user:\n\n```bash\n$ docker-compose exec taxy taxy add-user admin\npassword?: ******\n```\n\nThen, you can access the admin panel at [http://localhost:46492/](http://localhost:46492/).\n\n### Cargo binstall\n\n[cargo-binstall](https://github.com/cargo-bins/) automatically downloads and installs pre-built binaries for your platform. If there is no pre-built binary available, it will fall back to `cargo install`.\n\nYou need to install [cargo-binstall](https://github.com/cargo-bins/cargo-binstall#installation) first.\n\nThen you can install Taxy with:\n\n```bash\n$ cargo binstall taxy\n```\n\n### Cargo install\n\nYou need to have the Rust toolchain installed. If you don't, please follow the instructions on [rustup.rs](https://rustup.rs/).\n\nThe package on crates.io comes bundled with the WebUI as a static asset. Thus, you don't need to build it yourself (which would require [trunk](https://trunkrs.dev/) and wasm toolchain).\n\n```bash\n$ cargo install taxy\n```\n\n### Github Releases\n\nAlternatively, you can directly download the latest pre-built binaries from the [releases page](https://github.com/picoHz/taxy/releases).\n\nYou simply put the extracted binary somewhere in your `$PATH` and you're good to go.\n\n## Starting the server\n\nFirst, you need to create a user to access the admin panel. You will be prompted for a password.\n\n```bash\n# Create a user\n$ taxy add-user admin\n$ password?: ******\n```\n\nThen, you can start the server.\n\n```bash\n$ taxy start\n```\n\nOnce the server is running, you can access the admin panel at [http://localhost:46492/](http://localhost:46492/).\n\n## Development\n\nTo contribute or develop Taxy, follow these steps:\n\n```bash\n# Clone the repository\ngit clone https://github.com/picoHz/taxy\n\n# Start the server\ncd taxy\ncargo run\n\n# In a separate terminal, start `trunk serve` for the WebUI\ncd taxy-webui\ntrunk serve\n```\n\n### Gitpod\n\nYou can instantly start developing Taxy in your browser using Gitpod.\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/picoHz/taxy)\n\n## Similar projects\n\nHTTP reverse proxies written in Rust:\n\n- [Sōzu](https://github.com/sozu-proxy/sozu)\n- [rpxy](https://github.com/junkurihara/rust-rpxy)\n\n## Credit\n\nThe social preview image uses the photo by [cal gao](https://unsplash.com/@ginnta?utm_source=unsplash\u0026utm_medium=referral\u0026utm_content=creditCopyText) on [Unsplash](https://unsplash.com/photos/MASpFp0X2VU?utm_source=unsplash\u0026utm_medium=referral\u0026utm_content=creditCopyText).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpicohz%2Ftaxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpicohz%2Ftaxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpicohz%2Ftaxy/lists"}