How to host a website from my local machine?
I understand that this is very commonly asked question. I too found tons of related thread but trying their solution didnt work for me. So i decided to ask it again.
ProblemI would like to host my website from my laptop (on temporary basis. Once hosted from local machine i will switch to AWS free tier). But I am not able to do so.
What i have tried ?
My domain name: seaglegroup.co.inMy ip addr: 116.202.34.38
Mapped the IP of the domain to my IP address. To confirm same, now when I do
ping seaglegroup.co.in, I getPING seaglegroup.co.in (116.202.34.38) 56(84) bytes of data. From 10.228.1.25 icmp_seq=1 Time to live exceededNow I changed the
/etc/hostsfile added following entries.127.0.0.1 localhost 127.0.0.1 116.202.34.38 127.0.0.1 seaglegroup.co.inNow I ran my
node.jsapplication which return HTML page.Now when I type in browser, I am not getting anything.
Also when I run in browser, page doesn't load as request is not coming to Node.js program.
Just to eliminate Node.js issue, I ran localhost:8080 in browser and my web page loaded as expected.
I am not able to figure out where the issue is.
I just saw output of
sudo ufw statusStatus: inactiveI enabled the port by
sudo ufw enableCheck the status again:
sudo ufw statusStatus: active To Action From -- ------ ---- 80/tcp ALLOW Anywhere 80/tcp (v6) ALLOW Anywhere (v6)- Restart my Node.js server, but still same problem persist.
EDIT2
My question doesnt look duplicate of linked question as
- Linked question is about LAmp server whereas i have Node.js involved.
- I am facing issue in some very specific area and linked question seems broader.
- Solution to linked question doesnot resolve my problem.
2 Answers
There are two things here you are doing/trying to do.
1) Hosting on local machine (your laptop) for only your laptop with domain.
2) Hosting on local machine (your laptop) for everyone else (internet) with domain.
Choose the single appropriate solution
For first case:
Edit/Add in the /etc/hosts file to
127.0.0.1 seaglegroup.co.inremove the
127.0.0.1 116.202.34.38In the browser you will have to put something like
For second case:
If you want the internet to see your website you will have to port forward in the router settings. Find your local IP address of your laptop something like 192.168.number.number
Make the local laptop IP address permanent in the router (DHCP Reservation)
Add port forward in your router to your local laptop IP (192.168.number.number)
Internal port - 8080
External port - 8080
IP address - Local laptop IP (192.168.number.number)
Google "what is my ip". This is your internet IP Address.
Add DNS in GoDaddy @ pointing to your Internet IP Address
Your Internet IP might not be static and might change each time. So you will have to update the DNS every time.
Give some time for the DNS changes to propogate then in the browser you will have to put something like
1Normally ISP's don't like you hosting websites locally. But that said, I think you need to have your public IP forwarded to your local 192.168.X.X:8080 Configure that in your router.
Before you do that, make sure you can ping your public IP from an external source...maybe your smartphone?