First off, you'll ideally need a static IP address. Dynamic IPs make this more involved than it needs to be.
Secondly, you'll need to run a name server in order to host your own domain.
Check out The Linux Documentation Project http://www.tldp.org/
You're looking for the BIND how-to. Pretty much all you need to know to set up your name server.
Check with your ISP whether or not they have an option for static IP addresses.