From what i understand you're having the following problems:
1 - Unable to access the web server (using the FQDN, "fully qualified domain name" www.cokongwu.com) from inside the LAN?
2 - You're unable to verify functionality of the website from the outside?
1 - Access to the web server from the inside using FQDN.
I can't see in your question from where you're trying to access the web server, so i'll asume it's from a separate client inside the LAN.
Since you're most likely using an external dns server, your request for www.cokongwu.com will resolve the publicly available IP number, meaning the outside of your your internet router(see below). Since that router wont route traffic coming to the external IP number from the inside back to the inside, traffic will stop at that point.
For things to work inside the network, www.cokongwu.com wil have to be resolved as your internal IP number (192.168.0.105). You can try to browse the web server using the internal IP number, but since you plan to use SSL, eventually that will require you to access the web server using the FQDN or you will get certificate errors.
The "hard way" to fix internal name resolution is to setup an internal DNS server, but the above will work trouble shooting and small scale deployments. You seem no stranger to google and if you want to set up an internal DNS server, there are many guides to that on the internet.
Once internal name resolution gives you the internal IP address, browsing to the web server will give the same reply as if you we're a client coming from the outside.
2 - external access to the web server.
Resolving www.cokongwu.com with dig www.cokongwu.com +noall +answer
gave me the following reply.
www.cokongwu.com. 0 IN CNAME cokongwu.com.
cokongwu.com. 59 IN A 69.171.137.28
This shows that the www host is a cname (alias) pointing towards cokongwu.com which is a A-record. Doing a reverse lookup on 69.171.137.28 with dig -x 69.171.137.28 +short
gives:
dsl-69-171-137-28.acanac.net
This looks like a dynamic host. If the dyndns update is working, that should be your current public IP address. Verify this with the following command at a command line:
curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
(shamelesly stolen from here) Or by browsing to www.whatismyip.com
Assuming this is your current, browsing to www.cokongwu.com should work from the outside ...
I tried that and it didn't work, which could mean any or a combination of the following:
A - The dyndns service hasn't updated your IP address
B - The forwarding in your outside router isn't working
C - The web server isn't replying
Doing a quick test using telnet <ip number> <port number>
gives no replies from any of the port numbers you listed above. This would lead me to believe that the reason should be A or B. If it is B, it could be that you either didnt port forward correctly or if you're using a router in conjunction with your modem, you haven't properly bridged the modem to the router to allow it to handle all portforwarding requests.
Some further thoughts
I notice that you mentioned port 53 as one of the ports forwarded to the web server. Port 53 UDP is the standard for incoming dns requests. Unless you actually have a dns server running on the web server machine, you can safely close this port ... it wont serve any purpose anyway.
I also noticed you mention using ssh and ftp, but opened port 21 and 23 in the firewall and forwarded to the web server.
Port 23 is the telnet port and port 21 is the FTP port.
I would strongly advise using neither of these services, since they're both unsafe protocols that will transmit everything in clear text, including usernames and passwords.
I recommend only opening and forwarding port 22 in the firewall. Port 22 is used by ssh, which is the encryopted replacement to telnet. Port 22 is also used by the scp service, which use the ssh service for file transfer. Using ssh and scp instead of telnet and ftp will keep all your traffic to and from the web server secure.
A further recommendation would be to use a different port for incoming ssh, preferably a port number over 1000, like port 1522 (just an example). This is to avoid the incoming ssh service to be discovered by external port scans. Simply change the incoming port from 22 to a higher port number (i.e. 1522), but still keep it forwarded to port 22 on the web server. Then access the ssh server from the outside using the high port number (1522) and from the inside using port 22.
I hope this is of any use to you and hope you solve your problem =)
Best Answer
There are many "reasonable" and "practical" ways to go about hosting a website using your domain name on a VPS running Ubuntu.
I offer this guide for a straight-forward walkthrough on setting up a hardened Ubuntu LAMP Server to power a site: http://blog.al4.co.nz/2011/05/setting-up-a-secure-ubuntu-lamp-server/
In regards to setting up a Nameserver.... Just don't do that :) use the free dns services offered by most registrars or use a service like Afraid.org or Cloudflare to handle DNS.