Web Development on Android Using UserLAnd and CX File Explorer (Node.js)

October 15, 2025
4 min read
Web Development on Android Using UserLAnd and CX File Explorer (Node.js)

If you don't have a laptop or a PC, learning web development or starting freelancing is no longer impossible! UserLAnd is an excellent solution for creating a complete development environment using an Android phone. This app allows you to run a Linux operating system without needing to root your phone.

Linux is the foundation of web servers and hosting. By setting up Linux on your phone, you get the opportunity to develop any type of website—such as Node.js, PHP, Laravel, WordPress, e-commerce, or a blog. Follow this guide to transform your Android phone into a coding laptop.


🧩 Step 1: Install UserLAnd App and Initial Setup

  1. Open the Google Play Store.
  2. Search for 👉 UserLAnd, install, and open the app.
  3. The first time you open it, choose a Linux Distribution. Select Ubuntu as it is easy and popular for developers.
  4. After selecting Ubuntu, choose the Minimal and Terminal options.

    Uploaded image
    Uploaded image
    Uploaded image

🧩 Step 2: Ubuntu System Setup and Download

The necessary files will begin downloading. This step may take some time depending on your internet speed (approximately 1 GB of data). Once the download and setup are complete, a Terminal window will open automatically.

🧩 Step 3: Update System Packages

It's crucial to update all packages in the Linux system first. Type the following command in the terminal:

sudo apt update && sudo apt upgrade -y

Note: This process may take some time to complete for the first time. Please be patient.

🧩 Step 4: Install Node.js

Node.js is very popular for web development. Install Node.js and npm (Node Package Manager) by running the following commands sequentially:

First, install curl:

sudo apt update && sudo apt install -y curl

Then, install Node.js (LTS Version):

curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs

Verify Installation:

Check the Node and npm versions to see if the installation was successful:

node -v
npm -v 

If a version number is displayed (e.g., v22.10.0), then Node.js has been set up successfully. ✅

🧩 Step 5: File Editing with CX File Explorer (FTP Setup)

To easily edit files, we will use CX File Explorer and an FTP server.

  1. Install CX File Explorer from the Google Play Store.
  2. Install the FTP Server in the UserLAnd Terminal:
    sudo apt update
    sudo apt install python3 python3-pip -y
    sudo pip3 install pyftpdlib
    
  3. Start the FTP Server (Port 2141 is used):
    nohup python3 -m pyftpdlib -p 2141 -w -d /home/userland&
    
  4. Set up the FTP Connection in CX File Explorer:
    • Open CX File Explorer.
    • Go to the Network option.
    • In the Remote section, tap "New connection/location" (or the + icon).
    • Connection Type: FTP
    • Host: localhost
    • Port: 2141
    • Anonymous: Check the box.
    • Tap OK or Connect.

Now you can easily manage the files in your Linux environment.

🧩 Step 6: Create and Run a Node.js Web App

Now we will create a simple Express.js server:

1. Create Project Folder (myapp 📂) and Setup:

mkdir myapp
cd myapp
npm init -y
npm install express

2. Create and Edit File:

Create a file named server.js inside the myapp folder using CX File Explorer. Copy, paste, and save the code below:

const express = require('express');
const app = express();
const PORT = 3000;

// Root route
app.get('/', (req, res) => {
  res.send(`
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Node.js Mobile Demo</title>
      <style>
        body {
          margin: 0;
          font-family: Arial, sans-serif;
          display: flex;
          justify-content: center;
          align-items: center;
          height: 100vh;
          text-align: center;
          background-color: #f0f0f0;
          color: #333;
        }
        a {
          color: #007bff;
          text-decoration: none;
        }
        a:hover {
          text-decoration: underline;
        }
      </style>
    </head>
    <body>
      <div>
        <h1>✨ Hello! ✨</h1>
        <p>I am running <strong>Node.js</strong> from mobile 😎</p>
        <p>Server is running on <a href="http://localhost:${PORT}">http://localhost:${PORT}</a></p>
      </div>
    </body>
    </html>
  `);
});

// Start server
app.listen(PORT, () => {
  console.log(`🚀 Server running at http://localhost:${PORT}`);
});

3. Start the server in UserLAnd:

node server.js 

4. View in Browser:

After seeing the message in the terminal, go to your phone's browser: http://localhost:3000. Your web server is running! 🎉


📱➡️💻 Your phone is now your coding laptop!

With this setup, you can develop not only Node.js but also PHP, Next.js, and Python applications. Develop anywhere, anytime! 😎🔥

Recent Articles

How I Fixed My CI/CD: Fast, Optimized, and Pro-Level Deploys (Hugo + Cloudflare)

January 14, 2026

We’ve all been there: you push a tiny CSS tweak, and then you sit… and wait… and watch the GitHub Actions logs spin. My Hugo site was taking nearly a minute to deploy. Not …

Deploy Hugo + Tailwind v4 to Cloudflare: Super Fast GitHub Workflow

January 13, 2026

So you want your Hugo site to fly, right? Like, blink-and-it’s-live kind of speed. I got you. We’re gonna set up a GitHub Actions workflow that takes your Hugo code (rocking Tailwind v4), builds it …

Is Tailwind CSS Dying in 2026? Why v4 Might Be the Framework's Final Masterpiece

January 13, 2026

Hope you’re doing good! Honestly, there’s some pretty wild news in the Tailwind world right now. It’s a mix of “the tech is amazing” and “the business is in trouble.” …

Why Hugo is the best Static Site Generators in 2026

January 13, 2026

Thinking about building a site in 2026? Honestly, the “shiny object syndrome” is real with all these frameworks, but Hugo is still the low-key king for anyone who wants a site that just …

Windows 11 vs. The Linux Crew: Why It’s Time to Jump Ship

January 13, 2026

If you’re tired of Windows 11 acting like that one overbearing landlord who enters your apartment without knocking, it’s time we talk about Linux. Switching OSs sounds like a massive headache, but …

Upgrading openSUSE Leap 16.0 to Kernel 6.18 (LTS) via Backports

January 12, 2026

Look, openSUSE Leap 16.0 is awesome. It’s stable, it’s enterprise-grade, and it doesn’t crash. But sometimes, “stable” feels a little too much like “driving your …