Reelora docs
v1.1.0
Live demo Get help
● Ship · Server, web and stores

Deployment.
From your computer to the stores.

A production checklist for the server and web player, and the steps to publish the iOS and Android apps. The server and the web player go live together; the apps follow once the server is reachable over https.

One server, one domainHTTPSApp StoreGoogle Play

01Recommended order

  1. Server on your domain with HTTPS (Install).
  2. Console setup: brand, legal links, public server address, CDN.
  3. Content: remove the sample, add your series (Content).
  4. Money: store products, payments, ads, only what you sell.
  5. Apps: build with your server address and submit to the stores.

02Server production checklist

  • ADMIN_SECRET_KEY and MEDIA_SIGNING_KEY set in .env and backed up.
  • DEMO_MODE=false and ADMIN_DEMO_PASSWORD empty.
  • HTTPS proxy in front, TRUST_PROXY_HOPS matching the number of proxies.
  • Console → Media & CDN → Public server address set to your https address.
  • ffmpeg installed (Console → Status).
  • Owner two-factor on; team members added with the smallest role they need.
  • Legal links (terms, privacy) and the content report address set.
  • The sample catalogue removed.
  • Backups of server/data/ and .env scheduled (how).
  • Console → Status shows no failing checks.

03Web player

The web player is part of the server: build it (cd web && npm run build) before you start the server and it is live at / on your domain. With Docker the image builds it for you.

04Publishing the apps

Before both stores

  • Your own bundle id / application id, app name and icon (App setup).
  • API_BASE_URL pointing at your https server.
  • Your own AdMob app ids instead of Google's test ids, if you use ads.
  • sh tool/check_release.sh in app/ reports nothing left to replace (release check).
  • In-app products created and their ids entered in Console → Store, if you sell.
  • A privacy policy URL; App Store privacy details and Google Play Data safety form filled in (accounts, purchases, ads, push).
  • Content rights and an age rating that matches your catalogue (rights).

Google Play

  1. Replace the debug signing with your upload key (how).
  2. Build flutter build appbundle --dart-define=API_BASE_URL=https://… (plus Firebase defines if you use push).
  3. Upload app/build/app/outputs/bundle/release/app-release.aab in Play Console, start with internal testing.
  4. Test purchases with license testers, then copy the app signing SHA-256 into Console → App links.

App Store

  1. Open app/ios/Runner.xcworkspace in Xcode, choose your team, bundle id and capabilities (Push Notifications, Associated Domains if used).
  2. Build flutter build ipa --dart-define=API_BASE_URL=https://…, or Product → Archive in Xcode.
  3. Upload the archive with Xcode or Transporter and test in TestFlight. For sandbox purchases set Console → Payments → App Store environment to "Sandbox and Production" while testing, then back to "Production only".
  4. Submit for review with the payment mode you actually use and demo account notes for the reviewer if needed.
Store review

Both stores review streaming apps for the rights to their content and for mature content. Have your licences ready and set a content notice in Content & languages where needed.

05What this costs you

Costs

Going live means paying your own providers: the server or container host, disk for the databases and video, bandwidth (usually the largest cost of a video service), an optional CDN, the domain, backups, and the Apple and Google developer accounts. Check your host's and CDN's pricing pages for traffic and storage rates. See Costs not included.

06A public demo host (optional)

To show the product to others without real money, run a separate server with the settings in server/demo.env.example: DEMO_MODE=true simulates ads and purchases, and ADMIN_DEMO_PASSWORD publishes a read-only demo console account. Never use these on your live service.