Hosting a server from home can be a good idea if you are planning on having a whitelisted server with little traffic. (Of course, this is dependent on the fact that most ISPs do not allow servers. It's buried in their terms and conditions, but a Minecraft server on it's own might be alright because it isn't HTTP traffic. I take zero responsibility if your ISP terminates your internet service.)
When I mean little traffic, I mean less than 8 Mb/sec (Mbps). A typical client - when standing still - will use about 32 Kb/sec (Kbps) (this is from my observations). In theory, you can host up to 32 players for every megabit of upload bandwidth, but this is the real world. A Minecraft server can at times send up to 1 Mbps if you are flying at /speed 10, so in that case, you'd have only 1 player for every 1 Mbps. That's a worst-case scenario, though, and you should plan for 128Kbps average data per player. Just know that if you have a few people flying at /speed 10, your server will appear to become laggy to others connected because it will start dropping packets due to your upload speed bottleneck.
Bottlenecks bring me to another point: denial of service. You are extremely susceptible to denial of service (DoS) attacks. Even if you had a state-of-the-art Cisco ASA firewall that filters even the nastiest of DoS attacks, I'm pretty sure that unless you have Google Fiber or top-tier Verizon FIOS, none of your traffic will actually get out. Think about it like this:
You have a Schedule 80 PVC pipe rated for 400 PSI, and you are feeding water through it at 250 PSI. The regulator at the end of the pipe has an input rating of 1,000 PSI and outputs water at 60 PSI, typical household water pressure. All of a sudden, a hacker gains control of the water pumping system upstream and forces 500 PSI into the pipes. The pipe bursts, and you only have a small trickle of water going to your house.
Your internet won't break permanently unlike the pipe, but nearly all the legitimate traffic will be dropped because it's being overwhelmed. That's one of the major risks of hosting your server at home.
Anyways, if I haven't scared you yet (and if you accept the risk of DoS), and you still want to host a small server at home, find some dedicated hardware to host on. For vanilla servers, a Raspberry Pi would fit the bill. The Generation 3 RPi has a 1.2 GHz 4 core ARM running on 1 GB. The small amount of RAM is a limiting factor; at boot the standard graphical OS uses about half the RAM. You may want to install a minimal non-GUI OS, such as Arch Linux because it uses very little RAM at boot. When I ran a test server on my RPi on Arch Linux, I was able to allocate 940 MB to the Minecraft instance. As you can see, getting a server running on a RPi takes a few more steps, but it may be worth it because it's only $35 and all you need is a flash drive or a cheap USB hard drive if you don't want to spend a lot of money or if you don't have dedicated hardware.
If you either have a fiber optic connection at home to run a high-traffic vanilla server or you are going to run a modded server, you need more than a RPi. A cheap all-in-one desktop would fit the bill, as long as it has at least 4 GB RAM. There are some modpacks that take a ton of RAM to run, especially the ones with Galacticraft because the mod has to load several "worlds" (planets).
But as server owner requirements differ, I can't quite list all the hardware here, because it'll be a mile long. As a rule of thumb, though, if your server is going to have 60 or more players per Java VM instance (a single server), you'll probably need a 3.0 GHz processor or better. If you want a cheap high clock speed CPU, buy a 2-core AMD. If you want a lot of cores and high clock speed, buy an Intel i7-4690k and overclock it to whatever frequency you need. And if your server needs continuous chunk loading and long-range view distance, get a motherboard/CPU combo that accepts a lot of RAM. Depending on how well your plugins are coded (because of garbage collection), every 2,500 loaded chunks is roughly 1GB of RAM.