Normalmente os arquivos estáticos não são coletados por dois motivos: ou o caminho para os arquivos está incorreto, ou você não os coletou usando "python manage.py collectstatic".
Sempre faço o deploy de minhas aplicações em máquinas virtuais do Google Cloud usando Ubuntu.
Uso Nginx e Gunicorn, não tem estresse.
Já perdi horas tentando encontrar o motivo dos meus arquivos estáticos e de mídia não estarem carregando. Quando fui ver, muitas vezes era algo simples, como a falta de uma barra final no caminho para os arquivos kkk.
Uma dica. Nas versões mais recentes do Django você não precisa usar os.path.join para fazer joins. Pode simplesmente usar uma barra.
Ex: MEDIA_ROOT = BASE_DIR / 'media'