Ride is a self-hosted file manager with users, sharing, search, previews, backups, and ONLYOFFICE editing. It runs as a local Docker stack with Web, API, SQLite storage, and ONLYOFFICE Docs. Use it as a private Drive-style workspace for files, folders, and office documents.
To install the Android app, please download it from the Releases page.
- Docker
- Node.js 24 or later
- At least 1 GB of RAM
cp .env.example .env
npm run devThe first start tries to generate a local HTTPS certificate, downloads the local ONLYOFFICE Docs Docker image if it is not already available, and starts the Docker stack. Ride keeps ONLYOFFICE running locally in Docker; the large image archive is not committed to Git.
On a clean Docker install, the stack also prepares Docker volumes for node_modules before starting the Web and API containers.
Open:
https://127.0.0.1:3443The default certificate is signed by Ride's local CA, so browsers will show a trust warning until you trust or replace the certificate.
If certificate generation fails, npm run dev continues in HTTP fallback mode at http://127.0.0.1:5173.
For LAN or domain access, edit .env before starting and include every hostname/IP that browsers will use:
RIDE_HTTPS_HOSTS=your-domain-or-ip,localhost,127.0.0.1
PUBLIC_APP_URL=https://your-domain-or-ip:3443
PUBLIC_API_URL=https://your-domain-or-ip:3443/api
# Keep the Document Server download/callback URL on the internal Docker network.
DOCKER_PUBLIC_API_URL=http://api:3333/api
VITE_API_URL=/api
CORS_ORIGINS=https://your-domain-or-ip:3443,https://127.0.0.1:3443,https://localhost:3443
ONLYOFFICE_DOCUMENT_SERVER_URL=https://your-domain-or-ip:8443
RIDE_ACCESS_TICKET_SECRET=change-this
ONLYOFFICE_JWT_SECRET=change-this-tooThen regenerate the certificate:
FORCE_RENEW=1 npm run https:certs
npm run devFor Android, the app uses the API and ONLYOFFICE directly over HTTP to avoid local certificate setup. Set API_BIND_ADDRESS=0.0.0.0 and ONLYOFFICE_BIND_ADDRESS=0.0.0.0, keep API_HOST_PORT=3333 and ONLYOFFICE_PORT=8082, restart Ride, then enter the PC LAN address in the app:
192.168.1.199The app completes the API as http://192.168.1.199:3333/api and opens ONLYOFFICE inside the app through http://192.168.1.199:8082. Do not use 127.0.0.1 on the phone because it points to the phone itself.
For ONLYOFFICE editing from PC and Android at the same time, make the API URL sent to ONLYOFFICE reachable from both the browser and the Document Server container:
DOCKER_PUBLIC_API_URL=http://192.168.1.199:3333/api
ONLYOFFICE_DOCUMENT_SERVER_URL=http://192.168.1.199:8082
CORS_ORIGINS=https://192.168.1.199:3443,http://192.168.1.199:8082,https://192.168.1.199:8443,http://192.168.1.199:3333Stop:
npm run docker:downFor normal use, prefer production mode after the first configuration is working:
npm run prodProduction mode keeps the same local data folder and the same public HTTPS ports, but runs:
API compiled NestJS app
Web static Svelte build served by NginxThat avoids the Vite development server and API watch mode, so CPU and memory usage are lower and static assets are cached/compressed. Open:
https://127.0.0.1:3443Use npm run dev when editing code and npm run prod when you want the faster local server. Both modes use apps/api/data; switching modes does not reset accounts or files.
The in-app PDF reader renders pages on demand. Large PDFs, manga, and scanned books open the first page first, then load nearby pages while you scroll. Rendered pages are cached locally in:
apps/api/data/pdf-cacheTune quality versus speed in .env:
PDF_RENDER_DPI=120
PDF_RENDER_MAX_BUFFER_MB=64Higher DPI makes pages sharper but increases CPU, RAM, and load time. 120 is the default for faster large-file previews.
Ride exposes only two public HTTPS ports by default:
3443 Ride Web + API
8443 ONLYOFFICE DocsFor Android on the same LAN, expose the API HTTP port:
3333 API for Android app
8082 ONLYOFFICE for Android appThe Docker-only development ports can stay bound to localhost when Android access is not needed:
5173 Web dev server
8082 ONLYOFFICE HTTPIf the HTTPS certificate cannot be generated or validated, Ride skips the HTTPS proxy and starts only the fallback ports above. Fix OpenSSL/certificate configuration and run npm run dev again to return to HTTPS mode.
The generated certificate files live in:
docker/proxy/certs/ride-local.crt
docker/proxy/certs/ride-local.keyThey are ignored by Git. To renew the local certificate manually:
FORCE_RENEW=1 npm run https:certs
docker compose restart proxyIf you change domains, LAN IPs, or HTTPS ports, update .env, regenerate the certificate, and restart the stack:
FORCE_RENEW=1 npm run https:certs
npm run docker:down
npm run devFor a publicly trusted certificate, place your certificate and private key in docker/proxy/certs, point RIDE_TLS_CERT_FILE and RIDE_TLS_KEY_FILE to those filenames, and set:
RIDE_SKIP_CERT_GENERATION=trueOn the first start, Ride opens the account creation screen. The API stores local SQLite data and uploaded objects in:
apps/api/dataThat folder is ignored by Git. To reset Ride back to first-account setup, stop the stack and remove that local data folder. Docker dependency volumes can be recreated safely; they do not contain Ride accounts or files.
To pre-cache the ONLYOFFICE base image for later local reuse:
Create a host folder:
sudo mkdir -p /srv/ride-backups
sudo chown -R "$USER:$USER" /srv/ride-backupsCreated and maintained by Adham Cabral.

