Если провайдер дает динамический внешний ("белый") IP адрес, то достаточно будет настроить DDNS на роутере + пробросить 80 и 443 порт на ваш домашний сервер (ещё нужно сделать в настройках роутера статичный DHCP lease для компа).
Если же провайдер использует "двойной NAT" и "серые" IP, то придётся покупать внешний IP или менять провайдера.
В плане софта советую начать с LAMP сервера (это сборка всего необходимого для простого сайта). Легко запустить и начать пользоваться. Когда понадобятся какие-то специфичные штуки, будете отдельно изучать Apache, Nginx, mysql, php...