{"id":13376241,"url":"https://github.com/letheanVPN/lthn-app-vpn","last_synced_at":"2025-03-13T02:30:36.760Z","repository":{"id":40469285,"uuid":"123466859","full_name":"letheanVPN/lthn-app-vpn","owner":"letheanVPN","description":"Client/Server dVPN ","archived":false,"fork":false,"pushed_at":"2024-07-10T06:17:30.000Z","size":79012,"stargazers_count":36,"open_issues_count":37,"forks_count":16,"subscribers_count":11,"default_branch":"v1","last_synced_at":"2024-10-29T16:21:28.632Z","etag":null,"topics":["blockchain","privacy","vpn"],"latest_commit_sha":null,"homepage":"https://www.lt.hn","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"eupl-1.2","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/letheanVPN.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["letheanVPN"],"open_collective":"lthn"}},"created_at":"2018-03-01T17:12:28.000Z","updated_at":"2024-03-28T09:14:15.000Z","dependencies_parsed_at":"2023-02-16T17:45:49.506Z","dependency_job_id":"3fbbfd60-7f64-4c23-9d43-4eead21b9d05","html_url":"https://github.com/letheanVPN/lthn-app-vpn","commit_stats":{"total_commits":256,"total_committers":13,"mean_commits":"19.692307692307693","dds":0.4375,"last_synced_commit":"464e202a212d8c8441ff6794ddcd49445e74036c"},"previous_names":["letheanmovement/lethean-vpn"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letheanVPN%2Flthn-app-vpn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letheanVPN%2Flthn-app-vpn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letheanVPN%2Flthn-app-vpn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letheanVPN%2Flthn-app-vpn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/letheanVPN","download_url":"https://codeload.github.com/letheanVPN/lthn-app-vpn/tar.gz/refs/heads/v1","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242774837,"owners_count":20183162,"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":["blockchain","privacy","vpn"],"created_at":"2024-07-30T05:02:36.717Z","updated_at":"2025-03-13T02:30:36.406Z","avatar_url":"https://github.com/letheanVPN.png","language":"Python","funding_links":["https://github.com/sponsors/letheanVPN","https://opencollective.com/lthn"],"categories":["\u003ca id=\"d62a971d37c69db9f3b9187318c3921a\"\u003e\u003c/a\u003e工具"],"sub_categories":["\u003ca id=\"8ea8f890cf767c3801b5e7951fca3570\"\u003e\u003c/a\u003e公网访问局域网"],"readme":"# lethean-vpn\nThis repository contains code needed to setup and run an exit node on the Lethean Virtual Private Network (VPN) or to use Lethean service as client in CLI mode.\nIf you are looking for GUI, please look [here](https://github.com/LetheanMovement/lethean-gui)\n\n**This is development version! If you are seeking for stable version, use** [latest release](https://github.com/LetheanMovement/lethean-vpn/releases/tag/v3.0.0.b2). \n**The exit node is currently only supported on Linux.**\n\n# Design\nITNS (aka LTHN) VPN dispatcher is a tool that orchestrates all other modules (proxy, VPN, config, etc.). It does not provide any VPN functionality by itself.\nThe dispatcher uses system packages whenever possible but it runs all instances manually after invoking.\nMore info about technical design can be found [here](https://lethean.io/vpn-whitepaper/)\n\n## Client mode\nAs a client, dispatcher uses global SDP platform to fetch data about provider and connect there. There is no automatic payment functionality inside client. It is up to user to send corresponding payments from wallet to provider.\nClient will show only instructions what to pay. We do not want to have any connection from client to your wallet allowing automatic payment.\nMore information about client mode is [here](CLIENT.md)\n\n## Server mode\nAs a server, dispatcher helps you to create, publish and run your service as a provider. More info about server mode is [here](SERVER.md)\n\n## Docker\nWe have prepared docker images for you. It is probably easiest way how to run client or exit node.\nThere is directory which needs to be mounted to host: /opt/lthn/etc . If you want to get syslog events from docker, you must bind /dev/log too.\n\n### General usage\n```\n ENV1=value [ENV2=value2] docker run -p expose:internal \\\n   --mount type=bind,source=$(pwd)/etc,target=/opt/lthn/etc \\\n   --mount type=bind,source=$(pwd)/log,target=/dev/log \\\n   lthn/vpn [cmd [args]]\n\n```\nwhere cmd can be:\n```\nrun [args] to run dispatcher\nlist [args] to list available services\nconnect uri [args] to run client\nletheand [args] to run letheand\neasy-deploy [args] to easy deploy node\nupload-sdp [args] to upload SDP\nsync-bc to fast sync blockhain data from server.\nwallet-rpc [args] to run wallet-rpc-daemon\nwallet-cli [args] to run wallet-cli\nsh to go into shell\n\n```\n\nlocaletc is local directory to store configs\nlocallog is local directory to store logs\nexpose is port to expose to outside\ninternal is internal port of dispatcher\n\nENV variables which you can use:\n```\n# Daemon host. Set to empty string to use local daemon with complete copy of blockchain.\nENV DAEMON_HOST=\"$DAEMON_HOST\"\n\n# Wallet file. It is relative to etc directory.\nENV WALLET_FILE=\"vpn\"\n\n# If you want to use external wallet, set this to RPC of external wallet host\nENV WALLET_RPC_URI=\"\"\n\n# Wallet password. Default is to generate random password\nENV WALLET_PASSWORD=\"\"\n\n# Wallet RPC password. Default is to generate random password. Username used by dispatcher is 'dispatcher'\nENV WALLET_RPC_PASSWORD=\"\"\n\n# To restore wallet from this height. Only applicable for local wallet.\nENV WALLET_RESTORE_HEIGHT=349516\n\n# CA password. Default to generate random password\nENV CA_PASSWORD=\"\"\n\n# Common Name for CN\nENV CA_CN=\"LTHNEasyDeploy\"\n\n# If you already have providerid. In other case, autogenerate\nENV PROVIDER_ID=\"\"\n\n# If you already have providerkey. In other case, autogenerate\nENV PROVIDER_KEY=\"\"\n\n# Provider name\nENV PROVIDER_NAME=\"EasyProvider\"\n\n# Provider type\nENV PROVIDER_TYPE=\"residential\"\n\n# Service endpoint. You need to change this in SDP later\nENV ENDPOINT=\"127.0.0.1\"\n\n# Service port\nENV PORT=\"$PORT\"\n\n```\n\n### Recomended steps to use exit node\nCreate configs and certificates (or copy your existing /opt/lthn/etc dir here.)\nEasiest way to create from scratch is probably to easy-deploy. Do not forget to allocate terminal for easy-deploy (-t -i):\n```\n mkdir etc\n mkdir log\n docker run -t -i \\\n   --mount type=bind,source=$(pwd)/etc,target=/opt/lthn/etc \\\n   --mount type=bind,source=$(pwd)/log,target=/dev/log \\\n   lthn/vpn easy-deploy\n\n```\n\nAfter easy-deploy, all config files will be stored in your local etc directory. \nYou can edit sdp.json, dispatcher.ini and other things to respect your needs.\nTo upload your local SDP, use \n```\n docker run --mount type=bind,source=$(pwd)/etc,target=/opt/lthn/etc \\\n   --mount type=bind,source=$(pwd)/log,target=/dev/log \\\n   lthn/vpn upload-sdp\n\n```\n\nThan to run dispatcher:\n```\n docker run -p 8080:8080 --mount type=bind,source=$(pwd)/etc,target=/opt/lthn/etc \\\n   --mount type=bind,source=$(pwd)/log,target=/dev/log \\\n   lthn/vpn\n\n```\n\n### Recomended steps to use client\nPlease note this is low level client. By default it does not dynamically create authid or mgmtid. It just need strict instructions what to do.\nEven more, it will not send any payments for service. It will only instruct you how much pay and how to pay. You can parse your syslog messages to see how to pay.\n\nList all services from SDP platform:\n```\n docker run lthn/vpn list\n```\n\nConnect to URI:\nSee [here](CLIENT.md) for information about URI format\n\n```\n docker run  -p 8186:8186 --mount type=bind,source=$(pwd)/log,target=/dev/log lthn/vpn connect providerid:serviceid\n```\nTest proxy:\n```\ncurl -x http://localhost:8186 -L https://www.lt.hn\n```\n\n### Recomended steps to use lethean daemon\nBy default, docker image assumes that you want to use remote daemon provided by Lethean. If you want to run your own daemon, you can instruct docker\nby setting DAEMON_HOST to empty string. But you need to store blockchain outside of the wallet:\n\n```\nDAEMON_HOST='' docker run \\\n   --mount type=bind,source=$(pwd)/etc,target=/opt/lthn/etc \\\n   --mount type=bind,source=$(pwd)/bcdata,target=/home/lthn \\\n  lthn/vpn \n```\n\nYou can even use our docker image to run standalone daemon.\nIf blockchain dir is empty, docker image will pull actual data using zsync which is very fast.\n```\ndocker run -t \\\n   --mount type=bind,source=$(pwd)/etc,target=/opt/lthn/etc \\\n   --mount type=bind,source=$(pwd)/bcdata,target=/home/lthn \\\n  lthn/vpn letheand\n```\n\n## FAQ\n\n### Provider\n\n#### Q: Is it legal to be provider?\nThere can be local laws and legality issues in your country or company. Check your legislative about this. We cannot say universally that something is legal or not.\nIt can differ in countries over the world but you should follow at last some basic rules:\n\n##### Safe your infrastructure #####\nYou should not allow user to connect to your own network until you are sure you want to. Please refer to [server](SERVER.md) documentation about access lists.\n\n##### Do not allow bad users to do bad things #####\nThis is probably most critical and complex part. Primary goal of entire Lethean project is privacy for users. But, of course, somebody can use privacy to harmful somebody other. \nIt is your responsibility as a provider to do maximum against these users. Our project is here for good users which needs privacy. We will implement many features how to help you with this filtering.\n\n##### Filter traffic #####\nYou can filter your traffic for specific sites. Please refer to [server](SERVER.md)\n \n#### Q: As a provider, do I need audit log?\nIf somebody does something harmful, you are responsible as an exit node. It is up to you.\n\n#### Q: What is status of IPv4/IPv6 support?\nBoth client and server works perfectly on IPv4 network. We are working on full native IPv6 support but for now, see this matrix.\n\n| Client  | Provider | Web        | Support             |\n| ------- | -------- | -------    | ------------------- | \n| IPv4    | IPv4     | IPv4/IPv6  | Full                |\n| IPv6    | IPv6     | IPv4/IPv6  | No-session-tracking |\n\n### Client\n\n#### Q: Will Lethean project make me anonymous? ####\nThere are lot of next dependencies which you *MUST* follow to be anonymous. Refer to [tor](https://www.torproject.org/). I a short review, your browser, your OS and all other tools around can be used to identify you. \nAt least, use dedicated browser with anonymous mode enabled. \n\n## Directories\n\n### client\n Everything related to client part. More information [here](CLIENT.md)\n \n### conf\n Example config files and configuration templates.\n \n### server\n Code related to VPN server part. More information [here](SERVER.md)\n\n### lib\n Library files\n\n### scripts\n Various scripts and tools\n\n\n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FletheanVPN%2Flthn-app-vpn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FletheanVPN%2Flthn-app-vpn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FletheanVPN%2Flthn-app-vpn/lists"}