{"id":23891621,"url":"https://github.com/stephendade/rpanion-server","last_synced_at":"2025-04-13T05:05:23.826Z","repository":{"id":36636713,"uuid":"199427562","full_name":"stephendade/Rpanion-server","owner":"stephendade","description":"Web-based configurator for companion computers of MAVLink vehicles","archived":false,"fork":false,"pushed_at":"2025-04-12T07:24:31.000Z","size":5219,"stargazers_count":153,"open_issues_count":24,"forks_count":66,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-13T05:04:49.576Z","etag":null,"topics":["ardupilot","jetson","mavlink","nodejs","raspberry-pi"],"latest_commit_sha":null,"homepage":"https://www.docs.rpanion.com/software/rpanion-server","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stephendade.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,"zenodo":null}},"created_at":"2019-07-29T10:02:35.000Z","updated_at":"2025-04-12T07:24:32.000Z","dependencies_parsed_at":"2023-11-13T01:35:41.416Z","dependency_job_id":"df45ce26-c62f-46ae-b185-9f31ba8949f9","html_url":"https://github.com/stephendade/Rpanion-server","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephendade%2FRpanion-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephendade%2FRpanion-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephendade%2FRpanion-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephendade%2FRpanion-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stephendade","download_url":"https://codeload.github.com/stephendade/Rpanion-server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248665748,"owners_count":21142123,"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":["ardupilot","jetson","mavlink","nodejs","raspberry-pi"],"created_at":"2025-01-04T13:00:18.352Z","updated_at":"2025-04-13T05:05:23.809Z","avatar_url":"https://github.com/stephendade.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"left\"\u003e\n\n![GitHub Actions](https://github.com/stephendade/Rpanion-server/actions/workflows/node.js.yml/badge.svg)\n[![Coverage Status](https://coveralls.io/repos/github/stephendade/Rpanion-server/badge.svg)](https://coveralls.io/github/stephendade/Rpanion-server)\n\n\u003c/div\u003e\n\nUser Documentation is at https://www.docs.rpanion.com/software/rpanion-server\n\n\u003cp float=\"left\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/stephendade/Rpanion-server/master/images/controller.png\" width=\"200\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/stephendade/Rpanion-server/master/images/network.png\" width=\"200\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/stephendade/Rpanion-server/master/images/video.png\" width=\"200\"\u003e\n\u003c/p\u003e\n\n# Rpanion-server\n\nThis is a node.js based server for companion computers used in Mavlink-based vehicles (ie Ardupilot, PX4).\n\nIt presents a web-based interface (running on the companion computer), where system settings such as network,\ntelemetry and video streaming can be configured from.\n\nOn the Raspberry Pi, Rpanion-server is compatible with the Raspberry Pi OS and Ubuntu 20.04 LTS.\n\nOn the Nvidia Jetson, Rpanion-server is compatible with Ubuntu 18.04 LTS.\n\nOn the Nvidia Jetson Orin, Rpanion-server is compatible with Ubuntu 22.04 LTS.\n\nOn the [Libre Computer Le Potato](https://libre.computer/products/aml-s905x-cc/), Rpanion-server is compatible with their flavor of [Raspberry Pi OS](https://distro.libre.computer/ci/raspbian/).\n\n\u003e [!NOTE]\n\u003e Some users may have issues connecting to the UART on the Raspberry Pi 3B+. Further details and configuration fixes are at https://github.com/stephendade/Rpanion-server/issues/215#issuecomment-2049058406.\n\n## Features\n\nRpanion-server allows the user to configure:\n\n- Flight Controller telemetry routing to udp outputs\n- Video Streaming via an RTSP server\n- Network configuration\n- NTRIP Streaming\n- Logging (tlog and bin logs)\n\n## Dependencies and First-time configuration\n\nThe following instructions assumes you have cloned the Rpanion-server repository to ``~/``.\nIf not, use:\n\n```\ncd ~/ \u0026\u0026 git clone --recursive https://github.com/stephendade/Rpanion-server.git\n```\n\n### Automatic (Raspberry Pi)\n\nThe Raspberry Pi Zero W(1) is not supported from version 0.10.0 onwards.\n\nFor the Raspberry Pi 2, 3, 4,5 and Zero(2) run the below command on a fresh Raspberry Pi OS install\nto configure and install Rpanion-server with all required dependencies. Note this does not configure\nan initial Wifi hotspot.\n\n```\ncd ~/Rpanion-server/deploy/ \u0026\u0026 ./RasPi2-3-4-5-deploy.sh\n```\n\nIf running Ubuntu 20.04 OS on the Pi, use:\n\n```\ncd ~/Rpanion-server/deploy/ \u0026\u0026 ./RasPi-ubuntu20-deploy.sh\n```\n\nIf running Ubuntu 22.04 OS on the Pi, use:\n\n```\ncd ~/Rpanion-server/deploy/ \u0026\u0026 ./RasPi-ubuntu22-deploy.sh\n```\n\nIf running Ubuntu 24.04 OS on the Pi, use:\n\n```\ncd ~/Rpanion-server/deploy/ \u0026\u0026 ./RasPi-ubuntu24-deploy.sh\n```\n\nNote the CSI camera does not currently work on Ubuntu 22.04 and 24.04, due to incompatibilities with the Raspberry Pi.\n\nNote the GPIO UARTs are not currently working with Ubuntu 24.04.\n\nNote that due to permissions issues, Rpanion-server needs to run as root in Ubuntu.\n\nIf not already configured for an initial Wifi hotspot, run the ``./deploy/wifi_access_point.sh`` script.\nThe hotspot has the SSID \"rpanion\" and password \"rpanion123\". The Pi's IP address will be 10.0.2.100,\nso the Rpanion-sever website will be available at http://10.0.2.100:3000.\n\n### Manual (Raspberry Pi OS)\n\nRpanion-server requires a recent version of node.js. It can be installed\nvia package manager:\n\n```\nsudo apt-get install -y ca-certificates curl gnupg\nsudo mkdir -p /etc/apt/keyrings\ncurl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg\necho \"deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main\" | sudo tee /etc/apt/sources.list.d/nodesource.list\n\nsudo apt update\nsudo apt install -y nodejs\n```\n\nThe required prerequisite packages can be installed via:\n\n```\nsudo apt install libgstreamer-plugins-base1.0* libgstreamer1.0-dev gstreamer1.0-plugins-ugly libgstrtspserver-1.0-dev gstreamer1.0-plugins-base-apps network-manager python3 python3-dev python3-gst-1.0 python3-pip dnsmasq ninja-build\n\n#If not using Debian Bookworm:\nsudo pip3 install meson\npip3 install netifaces --user\n\n#If using Debian Bookworm:\nsudo apt install -y meson python3-netifaces gstreamer1.0-libcamera\n```\n\nFor some systems (such as the Raspberry Pi), additional permissions may be requires to run ``nmcli`` from the\ndefault user. In ``/etc/NetworkManager/NetworkManager.conf`` add ``auth-polkit=false`` in the ``main`` section.\n\nIf an older version of the Raspberry Pi OS is used (Buster, V10 or below), the ``gst-rpicamsrc`` Gstreamer element\nmust be installed. See https://github.com/thaytan/gst-rpicamsrc for install instructions.\n\nTo (optionally) use the Zerotier and/or Wireguard VPN's, install as follows:\n\n```\ncurl -s https://install.zerotier.com | sudo bash\nsudo apt install wireguard wireguard-tools\n```\n\nThe mavlink-router (https://github.com/intel/mavlink-router) software is used for\nbackend routing and is required to be installed:\n\n```\ncd ~/Rpanion-server\ngit submodule init \u0026\u0026 git submodule update\ncd ./modules/mavlink-router\nmeson setup build . --buildtype=release\nninja -C build\nsudo ninja -C build install\n```\n\nThe node.js packages need to be installed using ``npm install`` in the Rpanion-server folder:\n\n```\ncd ~/Rpanion-server\nnpm install\nnpm run build\n```\n\nThen to run (in production mode):\n```\ncd ~/Rpanion-server\nnpm run service\n```\n\nOtherwise, a systemd service can be installed (see ``rpanion.service``) to automatically start\nRpanion-server when the Pi starts up.\n\n\n### Automatic (Nvidia Jetson and Jetson Orin)\n\nFor the Nvidia Jetson run the below command on a fresh OS install\nto configure and install Rpanion-server and all required dependencies. Note this does not\nconfigure an initial Wifi hotspot.\n\n```\ncd ./deploy \u0026\u0026 ./jetson-deploy.sh\n```\n\nNote that due to permissions issues, Rpanion-server needs to run as root.\n\n### Automatic (Libre Computer AML-S905X-CC aka 'Le Potato')\n\nFor the Le Potato run the below command on a fresh OS install\nto configure and install Rpanion-server and all required dependencies. Note this does not\nconfigure an initial Wifi hotspot.\n\n```\ncd ./deploy \u0026\u0026 ./RasPi2-3-4-deploy.sh\n```\n\nIf using a usb to serial converter, you might need to modify permissions of the device.\n\n**Temporary device permission update**\n\n```\nsudo chmod 666 /dev/ttyACM0\n```\n\n**Persistent device permission update**\n\nFollow the steps on this site for your specific device:\nhttps://www.xmodulo.com/change-usb-device-permission-linux.html\n\n### Automatic (x86 boards and laptops)\n\nFor any x86 based modules or laptops, run the following script\nto configure and install Rpanion-server and all required dependencies. Note this does not\nconfigure an initial Wifi hotspot.\n\n```\ncd ./deploy \u0026\u0026 ./x86-ubuntu20-deploy.sh\n```\n\n### Updating\n\nWhen updating Rpanion-server from Github, run ``npm install`` to grab any\nchanged dependencies.\n\nIf running in production mode, run ``npm run build`` too for the ReactJS app \nto be rebuilt.\n\nIf running Rpanion-server as a service, ensure to restart the service.\n\nAn automatic update script performed via:\n\n```\n./deploy/upgrade.sh\n```\n\n## Building and Running in production mode\n\nRunning in production mode builds the reactJS app first. This gives\nperformance increases over running in development mode.\n\n```bash\nnpm run build\nPORT=3000\nnpm run server\n```\n\n## Building and Running in development mode\n\nRunning in development mode allows for any code changes to trigger a restart of Rpanion-server. \n\nRpanion-server consists of a node.js server running on port 3001 and a React frontend application\nrunning on port 3000 in development mode. \n\nIn production mode, the React application is rendered statically\nfrom the node.js server on port 3001. This can be overidden via setting the ``PORT`` environment\nvariable (see ``rpanion.service`` for for example).\n\nYou can start the server on its own with the command:\n\n```bash\nnpm run server\n```\n\nRun the React application on its own with the command:\n\n```bash\nnpm start\n```\n\nRun both applications together with the command:\n\n```bash\nnpm run dev\n```\n\nAt this point, the website will be active at ``http://\u003cip of device\u003e:3000``\n\n## Default username and password\n\nRpanion-server has access control in place to prevent unauthorised users from\nmaking changes to the system via the GUI.\n\nThe access control does *not* apply to any MAVLink or video streams\n\nThe default username is ``admin`` and password ``admin``. This can be changed\non the \"User Management\" page.\n\nUsernames and passwords are stored in the ``user.json`` file in the Rpanion-server folder. Resetting this file (via ``git checkout user.json``)\nwill reset the usernames/passwords back to it's defaults.\n\n## Tests\n\nUnit tests are split into separate commands for the frontend (ReactJS) and backend.\n\nUnit tests can be run with the command:\n\n```bash\nnpm run testback\nnpm run testfront\n```\n\nCode coverage statistics are automatically calculated for the backend tests.\n\nLinting (via eslint) is available via:\n\n```bash\nnpm run lint\n```\n\n## Releasing\n\nUse ``npx npm-check-updates -u`` to update nodejs libraries.\n\nUse ``npm version minor`` to create a new release.\n\nTo produce a disk image from a SD card, insert the card and run ``./deploy/create_image.sh``.\n\n## Running as a Service\n\nTo have Rpanion-server running on automatically on boot, there is an included systemd service file.\n\nThis can be enabled via:\n\n```\nsudo cp rpanion.service /etc/systemd/system\nsudo systemctl enable rpanion.service\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephendade%2Frpanion-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstephendade%2Frpanion-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephendade%2Frpanion-server/lists"}