{"id":45422821,"url":"https://github.com/rtr-nettest/rmbt-server","last_synced_at":"2026-02-22T01:43:12.051Z","repository":{"id":48585716,"uuid":"95659045","full_name":"rtr-nettest/rmbt-server","owner":"rtr-nettest","description":"RTR-NetTest Testserver","archived":false,"fork":false,"pushed_at":"2025-03-05T14:54:14.000Z","size":172,"stargazers_count":14,"open_issues_count":0,"forks_count":15,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-03-05T15:36:06.711Z","etag":null,"topics":["nettest","netztest","rmbt","rtr-netztest","server","speedtest","websocket"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rtr-nettest.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2017-06-28T10:51:24.000Z","updated_at":"2025-03-05T14:54:18.000Z","dependencies_parsed_at":"2025-03-05T15:39:13.656Z","dependency_job_id":null,"html_url":"https://github.com/rtr-nettest/rmbt-server","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/rtr-nettest/rmbt-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtr-nettest%2Frmbt-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtr-nettest%2Frmbt-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtr-nettest%2Frmbt-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtr-nettest%2Frmbt-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rtr-nettest","download_url":"https://codeload.github.com/rtr-nettest/rmbt-server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtr-nettest%2Frmbt-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29703227,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T23:35:04.139Z","status":"ssl_error","status_checked_at":"2026-02-21T23:35:03.832Z","response_time":107,"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":["nettest","netztest","rmbt","rtr-netztest","server","speedtest","websocket"],"created_at":"2026-02-22T01:43:11.523Z","updated_at":"2026-02-22T01:43:12.004Z","avatar_url":"https://github.com/rtr-nettest.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"RMBT Test Server\n================\n\n\u003e This project contains the RMBT Test Server for conducting measurements based on \n  the RMBT protocol. Clients can communicate either directly via TCP sockets or based on \n  the WebSocket protocol.\n\nPrerequisites\n-------------\n\nNeeded packages:\n- build-essential\n- libssl-dev\n\nUsage\n-----\n\nGenerate the random file, your secret key and the server executable using\n\n```\n\u003e make random\n\u003e make key\n\u003e make all\n```\n\nFor production use, an optimized build can be generated using ```make server-prod```.\n\nThe server uses keys to authenticate clients, as specified in the RMBT protocol. These keys that \nare loaded from the `secret.key` file at startup. Each line in this file contains the key as well \nas a space-separated label, which will be sent to the syslog each time a client identifies \nusing this key.\n\nFor running the server, either use the supplied /etc/systemd/system service scripts or the ```rmbtd``` executable.\n\nParameters:\n\n```\n==== rmbtd ====\ncommand line arguments:\n\n -l/-L  listen on (IP and) port; -L for SSL;\n        examples: \"443\",\"1.2.3.4:1234\",\"[2001:1234::567A]:1234\"\n        maybe specified multiple times; at least once\n\n -c     path to SSL certificate in PEM format;\n        intermediate certificates following server cert in same file if needed\n\n -k     path to SSL key file in PEM format; required\n\n -t     number of worker threads to run for handling connections (default: 200)\n\n -u     drop root privileges and setuid to specified user; must be root\n\n -d     fork into background as daemon (no argument)\n\n -D     enable debug logging (no argument)\n\n -w     use as http and websocket server (no argument)\n \n -v     behave as version (v) for serving very old clients\n        example: \"0.3\"\n\n```\n\n### Usage with Docker\n\nTo simply run the server (**with diabled token check!**) with Docker, run:\n\n```\ndocker run -v rmbtd-config:/config -p 8081-8082:8081-8082 rtrnettest/rmbt-server\n```\n\nClient communication\n--------------------\n\nThe server can be used in HTTP mode or in the legacy plain mode, depending on the usage of the ```-w``` parameter.\n\n### Usage in HTTP or WebSocket mode\n\nIf the ```-w``` parameter is supplied when starting the server, the server will listen for\nHTTP GET requests on the specified TCP port. Clients can request a connection upgrade to\neither ```RMBT``` or ```websocket``` by sending a ```Connection: Upgrade``` header\nas specified in RFC 2616.\n\n\n#### HTTP Upgrade to RMBT\n\nClients can request an upgrade plain RMBT by adding a ```Upgrade: RMBT``` header. A sample \ncommunication is given below. Additionally, the client may add an ```RMBT-Version```-header, \nindicating the most recent compatible server version.\n\n\nRequest from a client to the server\n```\nGET /rmbt HTTP/1.1\nConnection: Upgrade\nUpgrade: RMBT\nRMBT-Version: 1.3.0\n```\n\nResponse from the server\n```\nHTTP/1.1 101 Switching Protocols\nConnection: Upgrade\nUpgrade: RMBT\n```\n\nAfter this handshake is complete, the communication will continue using plain RMBT.\n\n#### HTTP Upgrade to WebSocket\n\nClients can request RMBT communication wrapped in the WebSocket protocol. For this,\na handshake as specified in RFC 6455 is used. A sample communication is given below.\n\nRequest from a client to the server\n```\nGET /rmbt HTTP/1.1\nConnection: Upgrade\nUpgrade: websocket\nSec-WebSocket-Version: 13\nSec-WebSocket-Key: 38VqBEsiw/GKJUPnSGNAUA==\n```\n\nResponse from the server\n```\nHTTP/1.1 101 Switching Protocols\nConnection: Upgrade\nSec-WebSocket-Accept: V8nixtUGE3Gfzy3Qix9R0svp05M=\nUpgrade: websocket\n```\n\nAfter this handshake is complete, the communication will continue using RMBT wrapped\nin WebSocket frames.  \n\n### Usage without HTTP\n\nIf the server is started without the ```-w``` parameter, communication is done by relying \non plain TCP sockets. As soon as the connection is established, the server will initiate\nthe communication by sending the string ```RMBT\u003cVERSION\u003e``` whereas ```\u003cVERSION\u003e``` will contain\nthe current version of the server software, e.g. ```v1.3.0```.\n\nRelated materials\n-----------------\n\n* [RMBT specification]((https://github.com/rtr-nettest/rmbtws/RMBT_specification.md)\n* [RMBTws Client](https://github.com/rtr-nettest/rmbtws)\n* [RTR-Netztest/open-rmbt](https://github.com/rtr-nettest/open-rmbt)\n* [RMBT C client (3\u003csup\u003erd\u003c/sup\u003e party)](https://github.com/lwimmer/rmbt-client)  \n\nGet in Touch\n------------\n\n* [RTR-Netztest](https://www.netztest.at) on the web\n\n\nLicense\n-------\n\nCopyright 2014-2021 Rundfunk und Telekom Regulierungs-GmbH (RTR-GmbH). This source code is licensed under the Apache license found in\nthe [LICENSE.txt](https://github.com/rtr-nettest/rmbtws/blob/master/LICENSE.txt) file.\nThe documentation to the project is licensed under the [CC BY-AT 3.0](https://creativecommons.org/licenses/by/3.0/at/deed.de_AT)\nlicense.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frtr-nettest%2Frmbt-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frtr-nettest%2Frmbt-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frtr-nettest%2Frmbt-server/lists"}