{"id":31712676,"url":"https://github.com/freifunk/icvpn","last_synced_at":"2025-10-09T01:05:29.218Z","repository":{"id":10955429,"uuid":"13266731","full_name":"freifunk/icvpn","owner":"freifunk","description":"InterCity-VPN (tinc host keys and scripts)","archived":false,"fork":false,"pushed_at":"2023-08-04T14:24:30.000Z","size":385,"stargazers_count":33,"open_issues_count":4,"forks_count":88,"subscribers_count":27,"default_branch":"master","last_synced_at":"2024-03-26T00:12:40.345Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://wiki.freifunk.net/IC-VPN","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/freifunk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-10-02T09:01:35.000Z","updated_at":"2023-10-27T05:13:20.000Z","dependencies_parsed_at":"2022-07-10T04:31:22.929Z","dependency_job_id":null,"html_url":"https://github.com/freifunk/icvpn","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/freifunk/icvpn","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freifunk%2Ficvpn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freifunk%2Ficvpn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freifunk%2Ficvpn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freifunk%2Ficvpn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/freifunk","download_url":"https://codeload.github.com/freifunk/icvpn/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freifunk%2Ficvpn/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000728,"owners_count":26082894,"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","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-10-09T01:01:14.557Z","updated_at":"2025-10-09T01:05:29.202Z","avatar_url":"https://github.com/freifunk.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/freifunk/icvpn.svg?branch=master)](https://travis-ci.org/freifunk/icvpn)\n\nThis repository contains the tinc hosts for ICVPN-Peers and several helper scripts.\n\n## Setup\n\nThis network requires the use of the Tinc VPN Daemon. You should use at least version 1.0.24 or higher, also the\ncurrent pre-release version 1.1pre11 seems to work just fine.\n\n### Clone the repository\n    # cd /etc/tinc/\n    # git clone https://github.com/freifunk/icvpn.git\n    # cd icvpn\n    # cp scripts/post-merge .git/hooks/\n\n### Create your tinc configuration\n\nOpen your favorite editor and create the /etc/tinc/icvpn/tinc.conf.\n\n    Name=entenhausen1\n    Mode=switch\nMore options can be found through\n\n    # man tinc.conf\nAfterwards create a keypair with tincd.\n\n    # tincd -n icvpn -K\nHint: In version 1.1 this option was moved to the tinc binary and is called \u003ccode\u003egenerate-rsa-keys\u003c/code\u003e.\n\n### Execute post-merge hook\nThis step is necessary to populate your new configuration with infos about the metanodes.\n\n    # ./.git/hooks/post-merge\n\n### Set up a cronjob to update the repository in regular intervals.\n\n    # crontab -e\nand insert for example\n\n    @daily cd /etc/tinc/icvpn/; git pull \u003e /dev/null\n\n## What are meta nodes?\n\nTinc has a ConnectTo configuration option that describes which peers on startup to connect *and* sync metadata to.\n\nUntil now (2015/4) we had roughly 74 nodes, and every node connected to each other (full mesh). Tinc however \ndoes not scale this way, because on each connect and disconnect all ConnectTo-lines are being notified of this\nand then notify their neighbours again. Many smaller nodes seemingly could not handle the amount of metadata generated \nby this which resulted in TCP Zero Windows. They then disconnected, and reconnected, producing more metadata in\nthe process, which was followed by even larger nodes queueing up metadata, which resulted in all nodes taking\na massive cpu and memory hit. Memory usage of up to 1.5GB was spotted, accumulated in less than 12 hours.\n\nHowever for tinc to build its network graph it is sufficient, if all nodes only exchange metadata at a few nodes,\nwhich results in much less strain on the whole network. This is why we now use meta nodes, which are defined in\nthe `./metanodes` file.\n\nCriteria for the selection of meta nodes are:\n\n1. autonomous system diversity\n2. community diversity\n3. ample resources (cpu, memory, traffic)\n\nWhen data needs to be transfered between two nodes, this will happen independently of those meta nodes. Through the shared\nnetwork graph a direct transfer is possible and will be tried: at first via UDP, then via TCP, then indirectly. While\nindirect routing is possible the meta nodes are not required to provide forwarding for those packets.\n\n## Contact\n\nThe maintainers can be reached at\n- [icvpn@lists.funkfeuer.at](mailto:icvpn@lists.funkfeuer.at)\n- [irc.hackint.org #icvpn](irc://irc.hackint.org/icvpn) ([Webchat](https://webirc.hackint.org/#ircs://irc.hackint.org/#icvpn))\n\nWe have set up IRC notifications for all repositories concerning the icvpn network.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreifunk%2Ficvpn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffreifunk%2Ficvpn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreifunk%2Ficvpn/lists"}