{"id":27376825,"url":"https://github.com/batchar2/fptn","last_synced_at":"2026-02-15T14:03:50.786Z","repository":{"id":248519470,"uuid":"828919757","full_name":"batchar2/fptn","owner":"batchar2","description":"FPTN VPN (Server + Desktop Client + FptnLibrary)","archived":false,"fork":false,"pushed_at":"2026-02-08T10:02:56.000Z","size":37993,"stargazers_count":408,"open_issues_count":5,"forks_count":36,"subscribers_count":11,"default_branch":"master","last_synced_at":"2026-02-08T14:59:51.535Z","etag":null,"topics":["conan","cpp17","cpp20","freedom","fuck-putin","python","vpn"],"latest_commit_sha":null,"homepage":"https://storage.googleapis.com/fptn.org/index.html","language":"C++","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/batchar2.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-07-15T11:48:26.000Z","updated_at":"2026-02-08T10:01:45.000Z","dependencies_parsed_at":"2025-12-20T04:00:22.579Z","dependency_job_id":"f74b8d41-9fc5-44cc-8e38-3add0f052dd3","html_url":"https://github.com/batchar2/fptn","commit_stats":null,"previous_names":["batchar2/fopn"],"tags_count":69,"template":false,"template_full_name":null,"purl":"pkg:github/batchar2/fptn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/batchar2%2Ffptn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/batchar2%2Ffptn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/batchar2%2Ffptn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/batchar2%2Ffptn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/batchar2","download_url":"https://codeload.github.com/batchar2/fptn/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/batchar2%2Ffptn/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29480867,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T11:35:25.641Z","status":"ssl_error","status_checked_at":"2026-02-15T11:34:57.128Z","response_time":118,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["conan","cpp17","cpp20","freedom","fuck-putin","python","vpn"],"created_at":"2025-04-13T12:53:40.470Z","updated_at":"2026-02-15T14:03:50.781Z","avatar_url":"https://github.com/batchar2.png","language":"C++","readme":"\u003cdiv align=\"center\"\u003e\r\n\r\n\u003cH1\u003eFPTN\u003c/H1\u003e\r\n\u003cH6\u003eCustom VPN technology\u003c/H6\u003e\r\n\r\n[\\[English\\]](README.md)\r\n•\r\n[\\[Русский\\]](README_RU.md)\r\n\r\n\r\n[![Ubuntu](https://img.shields.io/badge/Ubuntu-E95420?style=for-the-badge\u0026logo=ubuntu\u0026logoColor=white)](https://github.com/batchar2/fptn/releases)\r\n[![Mac OS](https://img.shields.io/badge/mac%20os-000000?style=for-the-badge\u0026logo=macos\u0026logoColor=F0F0F0)](https://github.com/batchar2/fptn/releases)\r\n[![Windows](https://img.shields.io/badge/Windows-0078D6?style=for-the-badge\u0026logo=windows\u0026logoColor=white)](https://github.com/batchar2/fptn/releases)\r\n[![Android](https://img.shields.io/badge/Android-3DDC84?style=for-the-badge\u0026logo=android\u0026logoColor=white)](https://github.com/batchar2/fptn/releases)\r\n[![Build and Test](https://img.shields.io/github/actions/workflow/status/batchar2/fptn/main.yml?style=for-the-badge\u0026logo=github-actions\u0026logoColor=white\u0026label=Build\u0026labelColor=2088FF)](https://github.com/batchar2/fptn/actions/workflows/main.yml)\r\n[![GitHub All Releases](https://img.shields.io/github/downloads/batchar2/fptn/total.svg?style=for-the-badge\u0026logo=github\u0026logoColor=white\u0026label=Downloads\u0026labelColor=181717)](https://github.com/batchar2/fptn/releases)\r\n\u003c/div\u003e\r\n\r\n---\r\n\r\n### Core Features of FPTN\r\n\r\nFPTN is a VPN technology engineered from the ground up to provide secure, robust, and censorship-resistant connections capable of bypassing network filtering and deep packet inspection (DPI).\r\n\r\nProject website: [https://storage.googleapis.com/fptn.org/index.html](https://storage.googleapis.com/fptn.org/index.html)\r\n\r\nKey Technical Features:\r\n\r\n1. **L3 Tunnel (Network Layer)**\r\n  - **IP Packet Tunneling:** Encapsulates and transmits raw IP packets (IPv4/IPv6) over a secure tunnel to the VPN server.\r\n  - **Split Tunneling:** Provides granular control over routing policies. Users can define rules (based on domains or IP networks) to specify which traffic is routed through the VPN tunnel; all other traffic uses the direct internet connection.\r\n  - **Server-side NAT:** Implements Network Address Translation (NAT) on the server. Future roadmap includes support for user grouping into virtual LANs (VLANs) for peer-to-peer communication within the VPN.\r\n\r\n2. **Traffic Obfuscation and Blocking Evasion**\r\n  - **Resistance to active Deep Packet Inspection (DPI):** The server can identify FPTN clients during the TLS handshake by analyzing the session_id (which the FPTN client can set using a special time-based method). If the client is not recognized as an FPTN client, the server acts as a transparent proxy and returns legitimate content for the requested domain.\r\n  - The VPN connection is masqueraded as regular HTTPS traffic (a mode for short-lived HTTPS connections is also under development).\r\n  - Three implemented methods for bypassing blocks:\r\n    - **SNI Spoofing:** A fake domain name is set in the TLS ClientHello packet that initiates the connection. Traffic analysis systems observe a legitimate TLS connection, while the traffic is actually routed to the VPN server.\r\n    - **Obfuscation:** The traffic is disguised as an already established TLS session, hiding the initial TLS handshake and preventing detection by DPI systems.\r\n    - **Reality Mode with SNI Spoofing:** The client initiates a connection to the VPN server using a spoofed Server Name Indication (SNI), receives a genuine TLS handshake response from the actual (spoofed) website, and then continues data exchange with the VPN server within the same connection.\r\n  - The desktop client includes an integrated `SNI scanner utility`.\r\n\r\n3. Transport Protocol\r\n  - Uses a proprietary transport protocol based on Protocol Buffers (Protobuf) for data exchange between the client and server.\r\n  - **Protocol-level padding:** Data packets are padded with random data to randomize traffic patterns and complicate analysis.\r\n  - The server provides a **REST API** for client authentication and retrieving specific configuration settings.\r\n\r\n4. **Advanced Functionality**\r\n  - Built-in filtering of unwanted traffic (e.g., the BitTorrent protocol).\r\n  - Per-user bandwidth and traffic control: The server employs a traffic shaper based on the **Leaky Bucket** algorithm, allowing for granular bandwidth policy configuration.\r\n  - Support for a multi-server architecture with a single master server that stores all user data and configuration.\r\n  - System monitoring via **Prometheus** and visualization dashboards in **Grafana**.\r\n  - Ability for users to connect and manage their service via a **Telegram bot**.\r\n\r\n5. **Cross-Platform Clients**\r\n  - A cross-platform core library, **libfptn**, has been developed for use across various operating systems. It implements the FPTN network protocol, connection management, and data transmission mechanisms for the VPN tunnel.\r\n  - **Desktop Clients**: Windows, macOS, Linux — a minimalist client focused on ease of use.\r\n  - **Mobile Clients**: Android, iOS (under development).\r\n\r\n6. **Simple Token-Based Configuration**\r\n  - A **Token** is a specially generated configuration file containing all necessary settings for the system.\r\n  - Enables connection to the VPN without manual configuration: the user simply imports the token into the client application to begin using the service.\r\n\r\n---\r\n\r\n### Demonstration\r\n\r\n*🍏🍎MacOS users are recommended to review the [macOS installation guide](docs/macos/README.md), as macOS includes additional security measures that may require specific actions.*\r\n\r\nDownload the FPTN client from the [website](http://batchar2.github.io/fptn/) or [GitHub](https://github.com/batchar2/fptn/releases). After downloading, install and launch the client.\r\n\r\nThe client is a compact application whose icon resides in the system tray.\r\n\r\nSimply click the icon to open the context menu.\r\n\r\n\u003cimg style=\"max-height: 100px\" class=\"img-center\" src=\"docs/images/macos/en/client.png\" alt=\"Application\"/\u003e\r\n\r\nNavigate to the \"Settings\" menu, where you need to add an access token.\r\nObtain a token by contacting our \u003ca target=\"_blank\" href=\"https://t.me/fptn_bot\"\u003eTelegram bot\u003c/a\u003e,\r\n\r\n\u003cimg style=\"max-height: 200px\" class=\"img-center\" src=\"docs/images/telegram_token_en.png\" alt=\"Settings\"/\u003e\r\n\r\nCopy the token, click the \"Add Token\" button, paste it into the form, and save.\r\n\r\n\u003cimg style=\"max-height: 250px\" class=\"img-center\" src=\"docs/images/macos/en/settings-2.png\" alt=\"Settings\"/\u003e\r\n\r\nAfter this, available servers will appear in the list.\r\n\r\n\u003cimg style=\"max-height: 250px\" class=\"img-center\" src=\"docs/images/macos/en/settings-3.png\" alt=\"Settings\"/\u003e\r\n\r\nEase of use:\r\n\r\n\u003cimg style=\"max-height: 250px\" class=\"img-center\" src=\"docs/images/macos/en/running-client.png\" alt=\"Settings\"/\u003e\r\n\r\nYou can also easily turn your Raspberry Pi or Orange Pi into a WiFi access point and install the FPTN client on it.\r\nIn this case, all devices connected to this WiFi network will be able to access the internet, bypassing any restrictions.\r\n[Read more here](https://github.com/batchar2/fptn/blob/master/deploy/linux/wifi/README.md)\r\n\r\n\u003cimg style=\"max-height: 350px\" class=\"img-center\" src=\"docs/images/orangepi.jpg\" alt=\"Settings\"/\u003e\r\n\r\n---\r\n\r\n### Installation, Building, and Configuration\r\n\r\n\r\n\u003cdetails\u003e\r\n  \u003csummary\u003e\u003cstrong\u003eInstalling and Configuring the FPTN Server\u003c/strong\u003e\u003c/summary\u003e\r\n\r\nSetting up and running your own FPTN server is done via Docker.\r\nThis ensures easy deployment, convenient updates, and environment isolation.\r\nInstructions are available on [DockerHub](https://hub.docker.com/r/fptnvpn/fptn-vpn-server).\r\n\r\nYou can also deploy your own management and monitoring tools:\r\n- **Telegram bot** – issuing tokens to users [sysadmin-tools/telegram-bot/README.md](sysadmin-tools/telegram-bot/README.md).\r\n- **Grafana + Prometheus** – monitoring server and user status [sysadmin-tools/grafana/README.md](sysadmin-tools/grafana/README.md)\r\n\r\n\u003c/details\u003e\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u003cdetails\u003e\r\n  \u003csummary\u003eBuilding the Project from Source\u003c/summary\u003e\r\n\r\n1. Install required dependencies\r\n- For [Windows](deploy/windows/README.md)\r\n- For [Ubuntu](deploy/linux/deb/README.md)\r\n- For [macOS](deploy/macos/README.md)\r\n\r\n2. Install Conan (version 2.22.2):\r\n\r\n```bash\r\npip install conan==2.22.2\r\n```\r\n\r\n3. Detect and configure the Conan profile:\r\n\r\n```bash\r\nconan profile detect --force\r\n```\r\n\r\n4. Install dependencies, build, and install:\r\n\r\n```bash\r\nconan install . --output-folder=build --build=missing  -s compiler.cppstd=17 -o with_gui_client=True --settings build_type=Release\r\n\r\n\r\n# Linux \u0026 macOS only\r\ncmake .. -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Debug\r\n# Windows only\r\ncmake .. -G \"Visual Studio 17 2022\" -DCMAKE_TOOLCHAIN_FILE=\"conan_toolchain.cmake\" -DCMAKE_BUILD_TYPE=Debug\r\n\r\ncmake --build . --config Release\r\nctest\r\n```\r\n\r\n5. Building the Installer\r\n\r\n\r\n- Windows\r\n\r\n  ```bash\r\n  cmake --build . --config Release --target build-installer\r\n  ```\r\n\r\n- Ubuntu\r\n\r\n  ```bash\r\n  cmake --build . --config Release --target build-deb-gui\r\n  ```\r\n  \r\n- macOS\r\n\r\n  ```bash\r\n  cmake --build . --target build-pkg\r\n  ```\r\n\r\n\u003c/details\u003e\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\u003cdetails\u003e\r\n\r\n\u003csummary\u003eUsing CLion IDE for Development\u003c/summary\u003e\r\n\r\nRun the following command in the project's root folder:\r\n\r\n```bash\r\nconan install . --output-folder=cmake-build-debug --build=missing -s compiler.cppstd=17 -o with_gui_client=True --settings build_type=Debug\r\n```\r\n\r\nOpen the project in CLion. After opening, the Open Project Wizard window will appear automatically. In it, you need to add the following CMake parameter:\r\n\r\n```bash\r\n-DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake\r\n```\r\n\r\n\u003c/details\u003e\r\n\r\n---\r\n\r\n### About the Project\r\n\r\nFPTN is developed by a team of volunteers and independent developers.\r\n\r\nIf you wish to support the project, you can donate via [Boosty](https://boosty.to/fptn). Project sponsors have speed limits removed on our servers and (optionally) have their usernames published in FPTN clients.\r\n\r\nOur Telegram chat for users and developers: [FPTN Project](https://t.me/fptn_project)\r\n\r\nJoin the community and the development team!\r\n\r\n---\r\n\r\n## Community Tools\r\n\r\nThe following tools are built and maintained by the community to extend or simplify working with FPTN.\r\n\r\n### fptn-manager\r\n\r\nA small external management tool built around FPTN, focused on simplifying deployment and common day-to-day administrative tasks.\r\n\r\nIt is especially useful for users who prefer not to work directly with Docker commands or internal configuration details.\r\n\r\nIt provides:\r\n- A Docker-based installer\r\n- An interactive CLI for user, password, and token management\r\n- Easier initial setup and repeated operations\r\n\r\nProject repository:  \r\nhttps://github.com/FarazFe/fptn-manager\r\n","funding_links":[],"categories":["Project Categories"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbatchar2%2Ffptn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbatchar2%2Ffptn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbatchar2%2Ffptn/lists"}