Я бы делал по Accept-Language, ведь именно эта настройка доступна пользователю в браузере, плюс обязательно давал бы выбрать и устанавливал в куку или в профиль.
В самом реакте все понятно, если у тебя путь /admin не описан в роуте, то ссылка на него будет работать как обычная ссылка и тянуть страницу с сервера
В нгинксе location /admin должен быть расположен выше чем location для всего приложения.
Ты использушь относительные пути, и по ходу в момент выполнения команды находишься бог весть где
Зайди в папку sites-enabled и уже внутри выполни команду
sudo ln -s ../sites-available/deploy.vue ./deploy.vue
1) Смотрите логи самого пререндера
2)Если логи не создаются, ставите пререндер локально, запускаете, пропускаете главную страницу и смотрите чего он в консоль сыпет.