Lesser fork of retropilot-server https://spacecruft.org/retropilot/retropilot-server/
 
 
 
Go to file
Cameron Clough cc2c85e669
chore: add .editorconfig
2022-03-12 17:14:41 +00:00
.github/workflows CI on Dockerfile 2022-01-21 00:08:15 +00:00
cabana Working app locally using docker, removes config file for .env, fixes worker to only use Sequelize and fixes sequelize model type definitions 2022-03-01 00:04:36 -05:00
consistency Initial implementation for oauth and 2fa 2022-01-22 15:16:24 +00:00
controllers UAT account 0 creation 2022-03-02 22:37:16 -05:00
data/nginx UAT certs fixes 2022-03-02 22:23:28 -05:00
models allow null identifiers for drives 2022-03-02 22:43:34 -05:00
routes fix error missing controller 2022-03-02 22:42:46 -05:00
schema docker tweaks for fast setup on UAT 2022-03-02 18:46:03 -05:00
sql Working app locally using docker, removes config file for .env, fixes worker to only use Sequelize and fixes sequelize model type definitions 2022-03-01 00:04:36 -05:00
static TODO: initial retropilot-server commit 2021-05-16 04:35:18 +02:00
test Working app locally using docker, removes config file for .env, fixes worker to only use Sequelize and fixes sequelize model type definitions 2022-03-01 00:04:36 -05:00
websocket Tested server runs 2022-03-01 00:28:28 -05:00
.dockerignore Update Dockerfile, add .dockerignore 2022-01-21 00:02:18 +00:00
.editorconfig chore: add .editorconfig 2022-03-12 17:14:41 +00:00
.env.sample Signup fixes 2022-03-02 21:18:07 -05:00
.eslintignore lint: ignore config.js 2022-01-08 22:08:51 +00:00
.eslintrc.json misc 2022-01-20 23:56:41 +00:00
.gitignore Add https support 2022-03-02 21:59:12 -05:00
Dockerfile docker tweaks for fast setup on UAT 2022-03-02 18:46:03 -05:00
LICENSE Initial commit 2021-05-16 04:24:48 +02:00
README.md same token for dev 2022-03-02 20:03:32 -05:00
docker-compose.uat.yml UAT certs fixes 2022-03-02 22:23:28 -05:00
docker-compose.yml docker tweaks for fast setup on UAT 2022-03-02 18:46:03 -05:00
ecosystem.config.js docker tweaks for fast setup on UAT 2022-03-02 18:46:03 -05:00
init-letsencrypt.sh Add https support 2022-03-02 21:59:12 -05:00
package-lock.json Working app locally using docker, removes config file for .env, fixes worker to only use Sequelize and fixes sequelize model type definitions 2022-03-01 00:04:36 -05:00
package.json docker tweaks for fast setup on UAT 2022-03-02 18:46:03 -05:00
server.js logger 2022-03-02 21:29:13 -05:00
worker.js Changes for UAT 2022-03-02 18:24:35 -05:00

README.md

retropilot-server

Replacement for comma.ai backend and useradmin dashboard. Bundled with a modified version of comma's cabana to allow viewing & analyzing drives.

If you don't want to host your own instance, check out https://api.retropilot.org/useradmin for a hosted version of the backend, useradmin and cabana.

[Server] Summary

The server consists of 2 node scripts.

server.js is using expressjs and runs the backend (file upload / communication with openpilot) and the useradmin dashboard to manage / view / download drives & logs. worker.js is a background worker that is processing drives (analyzing video files & logs) to prepare drives for playback in cabana and to gather statistics. It automatically terminates itself after 60 minutes to make sure the video/log libraries do not cause memory leaks.

Both scripts can be started with a cronjob each minute, they use locking to make sure they run exclusively.

Attention: Minimum required node version is node 10.

[Server] Installation

npm install
cp config.sample.js config.js
cp database.empty.sqlite database.sqlite
> EDIT config.js

[Server] Running

node -r esm server.js
node -r esm worker.js

[Server] CABANA Support

A compiled version of a custom cabana fork (https://github.com/florianbrede-ayet/retropilot-cabana) is directly bundled in the cabana/ subdirectory and will be served by the express app. After starting server.js, cabana is ready to use.


[Device] Preparation / Enable Custom Server

On the device or in your fork's code, replace all API endpoints with your own server endpoint. This could be executed directly on the device in the shell to use https://api.retropilot.org as backend:

find /data/openpilot -type f -exec sed -i 's/https:\/\/api.commadotai.com/https:\/\/api.retropilot.org/g' {} +

[Device] Swapping Servers (Back)

To switch a device between different servers, you have to remove the old DongleId and reboot:

rm /data/params/d/DongleID
reboot

There is no need to backup the DongleId, as the new server will identify your device based on its imei, serial and public key.

[Device] Raw Drives Not Uploading (fcamera & rlog)

  1. Raw data is only uploaded if the device is sufficiently charged, not connected to an active panda (offroad) and there are no immediate files (boot, crash, qcamera, qlog) remaining.
  2. Your branch might have raw uploads disabled, check Device Settings > Upload Raw Logs.

If that doesn't help or the option is not available, try:

echo "1" > /data/params/d/IsUploadRawEnabled
echo "1" > /data/params/d/UploadRaw
reboot

Current Limitations

OpenPilot before 0.8.3 will not display any statistics or pairing status in the dashboard. The reason is that pre 0.8.3, the offroad.apk with react and comma-api would require recompilation to accept the new endpoints.

The athena websockets interface is not implemented yet, so the comma app and athena specific remote control commands (including "upload on demand") are not functional as of now.

Screenshots

image

image

image

image

UAT

Launch with:

docker-compose -f docker-compose.yml -f docker-compose.uat.yml up -d