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
.envfile 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 yourNEXT_PUBLIC_FIREBASE_API_KEYand related variables in your.envfile 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 -> signingReportand run it. Copy the generatedSHA1string. 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 newgoogle-services.jsonfile and place it in yourAndroid 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.xmlunder thecom.google.android.gms.ads.APPLICATION_IDmeta-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.