Hey r/androiddev! 👋
I’ve been building ChikiChat, a native Android social media application (written in Kotlin) with its own custom Node.js backend. The app handles real-time messaging, a social feed ("Circles"), user profiles, custom media sharing, and video streaming.
Up to this point, I’ve been running the backend locally on a laptop acting as a server, exposing it using ngrok. However, I’ve hit a architectural wall and I'm moving away from ngrok. I wanted to share why local/ngrok doesn't cut it anymore for this kind of app and see how others would approach the cloud migration given my constraints.
🏗️ What ChikiChat's Backend Actually Does:Unlike a simple CRUD app, ChikiChat's server (server.js) handles workloads that require a permanent, stable infrastructure:
- HTTP
206 Partial ContentVideo Streaming: To make heavy videos load instantly and support smooth seeking (jumping back and forth on the timeline) without crashing the app, the server implements custom byte-range chunk streaming. - State & File Persistence: The backend manages local JSON-based state databases (
usuarios.json,mensajes.json,publicaciones.json,relaciones.json) and a local file storage directory (uploads/) for profile pictures, compressed images, and video posts. - Push Notifications & Background Sync: It integrates Firebase Admin SDK (
serviceAccountKey.json) to trigger FCM background notifications when a message or interaction occurs.
- Tunnel Expiration & URL Changes: Every time the tunnel restarts or the session expires, hardcoded URLs break unless managed dynamically.
- Uptime Dependency: Keeping a laptop running 24/7 as a home server introduces risks with power outages, Wi-Fi drops, and thermal throttling.
- Network Overhead for Media: Streaming video chunks through a free ngrok tunnel introduces noticeable latency and throttling under poor mobile network conditions.
I’m looking to migrate this backend to a cloud environment, but I’ve faced a major roadblock: Cloud providers like Oracle Cloud (Always Free) rejected my identity verification due to banking/credit card constraints.
Because of this, I need a reliable, free, or low-cost cloud strategy where:
- The server remains active 24/7 without shutting down unpredictably.
- Data isn't lost on restart (ephemeral filesystems wiping the
uploads/folder or JSON databases).
How would you architect or deploy a Node.js backend with local file/JSON dependencies without hitting credit card paywalls? Are you using reverse proxies like Cloudflare Tunnels on a dedicated home rig, or migrating the JSON/uploads structure to a hybrid cloud setup (like Supabase + Cloudinary)?
Would love to hear your thoughts or how you've solved similar self-hosted vs. cloud dilemmas for indie Android projects!
submitted by /u/Huge_Profession_1697[link] [comments]