Reelora docs
v1.1.0
Live demo Get help
● Ship · Fixes

Troubleshooting.
Symptoms and fixes.

The most common problems and how to solve them. Console → Status and Console → Media jobs usually tell you the exact cause first.

Console → StatusMedia jobsServer log

01Where to look first

Windows

Commands on this page are for macOS or Linux. On Windows, run them in WSL (Windows Subsystem for Linux) or Git Bash.

  • Console → Status: failing checks with what to set.
  • Console → Media jobs: the exact error of each conversion or AI job, with Retry.
  • The server log: journalctl -u reelora, pm2 logs reelora or docker logs reelora.
  • Health check: curl https://<your domain>/healthz should answer {"ok":true}.

02Server and console

SymptomFix
Uploads stay "processing" or failInstall ffmpeg (or set FFMPEG_PATH / FFPROBE_PATH); open Media jobs for the exact error and retry.
Upload fails at once behind nginxRaise client_max_body_size to your largest upload.
Videos do not play on the webCheck Media & CDN → Public server address. With a CDN, check the pull zone origin. A 403 in the browser console means an expired link: reload.
With BunnyCDN token mode every video failsThe edge rule must send x-origin-secret with exactly the value of ORIGIN_PULL_SECRET; restart the server after changing .env.
Stripe payments do not arriveThe webhook endpoint must be https://<domain>/api/webhooks/stripe with the three events listed on Payments and the signing secret saved in Integrations.
A viewer forgot their passwordViewers see "Forgot your password?" on the sign-in screen, which tells them to write to your support e-mail (Console → Brand → Support e-mail) from the account's address. Check that the e-mail matches, then open Viewers, the viewer, Reset password, and give a reason. The console shows a new one-time password once; send it to the viewer. The viewer is signed out everywhere and the reset is in the audit log. Coins, VIP days and purchases stay on the account.
Console says "Too many sign-in attempts"Wait 15 minutes, or reset the owner password on the server (reset-owner). Behind a proxy, set TRUST_PROXY_HOPS so that one visitor does not slow sign-in for everyone.
Saved secrets cannot be read after a moveThe new server has a different ADMIN_SECRET_KEY. Restore the original key, or enter the secrets again.
Warning "ADMIN_SECRET_KEY is not set"Set it in .env (how). Until then a generated key file in the data folder is used.
npm ci fails building better-sqlite3Install python3, make and g++ (or use the Docker image).
seed:sample failsIt needs ffmpeg and ImageMagick 7 (magick, or set MAGICK_PATH).
Blocked countries has no effectSet COUNTRY_HEADER to the header your CDN fills (Cloudflare: cf-ipcountry) and restart.

03"Too many attempts" when opening the app or web player

Guest accounts are limited to 30 per IP address per hour (server/src/api.ts). Real viewers never reach it, but repeated test runs or many devices behind one office IP can. Wait an hour, or on a test server (stopped, test data folder only) run npm run e2e:prepare, which clears the guest sign-up limit but also changes missions and series for the test suite. Behind a proxy, make sure TRUST_PROXY_HOPS is set, otherwise every viewer appears to come from the proxy's address.

04Mobile app

SymptomFix
"No connection to the server"Build with --dart-define=API_BASE_URL=https://… and check the server is reachable over https from the phone.
Android emulator cannot reach the local serverThe emulator reaches your computer as 10.0.2.2; that is the default without API_BASE_URL.
Store shows no productsPayments must be on, the mode for that platform must include store purchases, and the product ids in Console → Store must match App Store Connect / Play Console exactly. New products can take a while to appear in the stores.
Purchases fail verificationCheck iOS bundle id and App Store environment (sandbox needs "Sandbox and Production"), Android package name and the Google Play service account (use Test in Integrations).
No ads in a release buildSet the AdMob unit ids in the console and your own app ids in the platform files; turn Rewarded ads on.
Ad watched but no rewardThe SSV callback URL in AdMob must be https://<domain>/api/ads/admob/ssv.
No push notificationsAll Firebase defines passed at build time, Push on in the console, service account saved; on iOS the APNs key uploaded and the Push Notifications capability added.
Share links open the browser, not the appConsole → App links filled in, appLinkHost set (Android), Associated Domains added (iOS). Check https://<domain>/.well-known/assetlinks.json.

05Xcode 27: simulator build fails

flutter build ios --simulator fails on Xcode 27. Run the app on the simulator with flutter run, or open app/ios/Runner.xcworkspace in Xcode and press Run. Device and archive builds (flutter build ipa, Product → Archive) are separate from this.

The project already contains the SceneDelegate that recent iOS versions expect (app/ios/Runner/SceneDelegate.swift); keep it when you change the iOS project.

06CocoaPods errors

cd app/ios && pod install --repo-update
cd .. && flutter clean && flutter pub get