FAQ & HELP

Troubleshooting Guide

Find quick answers to the most common configuration questions and issues customers face during setup, organized by category.

☁️ GadoHost Setup

Q: I see a "500 Internal Error" after completing the installation on GadoHost

Cause: The server environment needs to be re-initialized after writing the new .env file during setup.

Solutions:

  • Go to your GadoHost hosting dashboard.
  • Navigate to the Node.js apps section.
  • Find your SnapReels application and click Stop, then click Re-launch (or Restart).

Restarting the app right after the installation wizard finishes will properly initialize the environment variables and resolve the 500 Error.

🖥️ VPS & Server

Q: Database Connection Failed (MongoServerSelectionError)

Cause: The application cannot establish a connection with your MongoDB database. This usually happens due to incorrect connection strings or firewalls.

Solutions:

  • If using MongoDB Atlas (Cloud), make sure you have whitelisted the IP address of your VPS in your Atlas Console under Security > Network Access > Allow Access From Anywhere (0.0.0.0/0).
  • If using a Local MongoDB on the VPS, verify that the MongoDB service is running:
    systemctl status mongod
  • Ensure your connection string in your .env file is correctly formatted:
    MONGODB_URI="mongodb://user:password@127.0.0.1:27017/dbname?authSource=admin"

Q: Cloud Storage Uploads Fail or Video Playback is Extremely Slow

Cause: Incorrect cloud bucket endpoints, secret keys, or video codecs.

Solutions:

  • If using **S3/Cloudflare R2/GCS**, verify that your CORS configurations allow read/write methods from your domain name.
  • Verify all credentials (Access Key, Secret Key, Region, Bucket Name, and Custom Endpoint URL) are set correctly in the Admin Dashboard > Settings > Storage.
  • Ensure video files uploaded are formatted in **H.264 MP4** format. High-bitrate 4K videos or raw formats will fail to stream smoothly on mobile networks.

Q: Video Player Shows "Retrying Connection" or Spins Forever

Cause: The video URL is inaccessible, blocked by CORS, or the Embed Code is malformed.

Solutions:

  • Direct Links: Ensure the direct `.mp4` or `.m3u8` link is publicly accessible in a browser and not protected by hotlink protection.
  • Embed Codes: If you are embedding a YouTube or Dailymotion video, ensure you copied the exact `<iframe>` embed code and not just the watch URL.
  • Local Uploads: Check your VPS storage capacity. If the disk is full, the chunking video API will fail to serve the stream.

📱 Android App & Firebase

Q: Firebase Authentication Errors / Email and Google Sign-in Fail

Cause: Google Sign-In requires both the web and Android domains/fingerprints to be perfectly aligned in the Firebase Console.

Solutions:

  • Web Login Fails: Go to your Firebase Console > Authentication > Settings > Authorized Domains. Click Add Domain and insert your live website domain (e.g., yourdomain.com). Also, ensure your NEXT_PUBLIC_FIREBASE_API_KEY and related variables in your .env file exactly match your Firebase Project Settings > General > Web App snippet.
  • Android App Login Fails ("Developer Error" / "Code 10"): You must generate your SHA-1 Fingerprint. In Android Studio, open the right-side Gradle panel, navigate to SnapReels -> app -> Tasks -> android -> signingReport and run it. Copy the generated SHA1 string. Go to your Firebase Console > Project Settings > General, select your Android App, and click Add fingerprint. Paste the SHA-1 and save. Lastly, download the new google-services.json file and place it in your Android App/app/ folder.

Q: In-App Purchase / Google Play Coins Purchase Fails

Cause: Google Play Billing requires matching Product IDs between your Google Play Console and the website Admin Dashboard.

Solutions:

  • Go to your Google Play Console > Products > In-App Products or Subscriptions, and create your items. Copy their Product ID.
  • Open your **Admin Panel** > Coin Packs. Edit or create a Coin Pack and paste the exact Product ID into the **Google Product ID** field.
  • Verify your Android application uses the correct **Package Name** matching your Google Play Console application listing.
  • Make sure your Google Play Console Merchant Profile is active and you are using a Google Account listed under your testers list to execute sandbox test purchases.

Q: Rewarded Ads do not load / display in the Mobile App

Cause: Incomplete AdMob setup, missing App ID in AndroidManifest.xml, or empty inventory blocks.

Solutions:

  • Make sure you have added your **AdMob App ID** in your Android Studio project's app/src/main/AndroidManifest.xml under the com.google.android.gms.ads.APPLICATION_ID meta-data tag.
  • In the website **Admin Panel** > Settings > Mobile App, make sure AdMob is selected, the statuses are toggled **ON**, and valid **Ad Unit IDs** (for Banner, Interstitial, or Reward) are entered exactly as provided by your Google AdMob Dashboard.
  • **Important:** New AdMob accounts and newly created Ad Unit IDs can take 24-48 hours to start serving live ads. During testing, it is highly recommended to use **Google AdMob Test Unit IDs**.

⚙️ Admin Panel & Payments

Q: "Why is my payment failing?" / Stripe or Flutterwave Error

Cause: The payment gateway API keys entered in the Admin Panel are invalid, mismatching, or your server cannot reach the gateway webhooks.

Solutions:

  • Stripe: Log in to your Stripe Dashboard. Go to Developers > API Keys. Copy your Publishable key and Secret key. In your SnapReels Admin Panel, navigate to Settings > Payment Gateways > Stripe and paste them exactly. Ensure there are no leading or trailing spaces.
  • Flutterwave: Log in to your Flutterwave Dashboard. Go to Settings > API. Copy your Public Key and Secret Key. In the Admin Panel, go to Settings > Payment Gateways > Flutterwave and save them.
  • Currency Mismatch: Go to the Admin Panel > Settings > General and check your Currency Code (e.g., USD, NGN). Ensure that your active payment gateway actually supports processing the currency you have selected.