This blog - https://androidblog.a.pinggy.io is being served from my $180 Android phone running Android 11. This post describes how I turned my Android device into a web server which can be accessed from a public URL, and how you can do it too.
I used Termux, which is an Android terminal emulator on which we can run a web server such as a Node.js http-server, and Pinggy for obtaining public URLs for accessing that server.
To give you a glimpse of the setup, here are some photos. The first image shows the Node.js http-server running, while the second image displays Pinggy’s terminal user interface showing the live requests to the website as they arrive.
Follow these simple steps to serve your own webpage from your Android phone.
Step 1. Install Termux
Termux
is an application for Android that emulates a terminal and Linux environment. Unlike other similar apps, it does not require rooting or any additional setup. It comes with a basic system, and you can install more packages using the APT package manager.
You can get the Termux app on F-Droid through this F-Droid link.
You can directly download the Termux APK from the website.
Simply click on the "Download APK" link located at the bottom of each version section. Read more in this GitHub link.
Note that it is NOT necessary to download the F-Droid app (from the "Download F-Droid" link) to install Termux.
Step 2. Install Packages
In order to serve a webpage, we need to install a web server on our device. We also install openssh client which will help us in sharing the website later.
Update packages:
pkg update
pkg upgrade
Install openssh client and Node.js:
pkg install openssh
pkg install nodejs-lts
Once these are installed correctly, you will be able to check the versions of node
and npm
using node --version
and npm --version
Step 3. Start server and Pinggy tunnel
You can first create a sample HTML page by creating an index.html
file as follows:
echo "<h1>Hello World!</h1>" > index.html
You can use the nano
editor to edit the webpage from the terminal: nano index.html
. If you prefer vim then you can also install that.
Now start the http-server:
npx http-server &
Note: we add a &
at the end of the command. This will allow the http server to run in background. Use the fg
command to bring it to foreground and press Ctrl + C to stop it.
This will start the server on port 8080
by default. Check the output to confirm.
Start Pinggy to get a public URL:
ssh -p 443 -R0:localhost:8080 a.pinggy.io
You will get a public URL such as https://ranxyzxxxx.a.pinggy.io, which you can use to access your server running on your phone! Next we will discuss how to use a domain or subdomain of your choice.
In case you get a different port than 8080
on the above command, change it in the Pinggy command also. You can use Ctrl + C to stop the tunnel.
Now share your URL with your friends and watch live stats of visitors on the Pinggy terminal user interface. You can also hit the return key to see details about the the request and response headers including user agent, etc.
The first image above shows the Node.js http-server running and listening on port 8080. The second screenshot shows the Pinggy tunnel starting and providing a public URL. It is also showing the live visitor requests to the server. The third screenshot shows more details about a particular request.
Connect it to your own domain
You can also use your own domain or choose a subdomain for accessing this server. Or you can also choose a suitable subdomain such as https://myandroidblog.a.pinggy.io .
First you need to sign-up for Pinggy
and subscribe to Pinggy Pro. Then go to the dashboard and click on Custom Domains on the nav bar.
Put your own custom domain that you want to use and Pinggy will provide a CNAME record that you need to configure in your DNS settings of the domain.
After the CNAME record is set, just click Validate followed by Issue Certificate button to finish configuring the custom domain.
Once the custom domain is configured, just use the token from Pinggy dashboard in the pinggy tunnel command:
ssh -p 443 -R0:localhost:8080 <put your pinggy token here>@a.pinggy.io
In conclusion, hosting a website or blog from an Android device may seem like an impossible feat, but with the right tools, it is quite achievable. In this blog post, we have explored the steps required to turn your Android device into a web server that can be accessed from a public URL or your own domain. By using an Android terminal emulator like Termux and obtaining a public URL through Pinggy, you can easily create and share your content with the world. So, why not give it a try and see what creative ideas you can bring to life on your own personal web server?
Top comments (0)