Você pode usar um cron job para executar um desligamento do sistema no horário desejado.
Para iniciar o computador novamente, você pode usar o alarme do BIOS RTC do sistema, se tiver um. Isso pode ser difícil de mudar, por isso é melhor que você sempre inicie novamente na mesma hora do dia.
NVRAM-WakeUp é uma das poucas ferramentas que podem alterar o tempo de inicialização do BIOS a partir do Linux, mas cada placa-mãe vai reagir de forma diferente. YMMV
O Wake on LAN é uma boa solução para startups sob demanda, mas requer acesso a outro computador que possa enviar Magic Packets para o endereço de hardware da NIC. Isso normalmente significa um computador na mesma rede física.