There are several Ethereum nodes now, but I've had the best luck with Geth
OPTIONAL: open ports 30303 tcp and udp on your router to allow incoming network connections. this will use more CPU and bandwidth, but I've also had better luck syncing with it open.
DO NOT open ports 8545 or 8546. Those are for your own use on localhost only. If you do open these ports, you should put some sort of authentication in front of your node and probably enable less api modules.
OPTIONAL: add --snapshot
to the geth command. it's an experimental feature that takes 15 GB more disk space, but it should make eth_calls faster. Be careful stopping your node abruptly or this state will have to be regenerated. If generation is going especially slow, start your node with --maxpeers 0
, let the state generate, then restart without --maxpeers