Some time I could done to upgrade PGSQL cluster by below code, but another time, on another server it failed, so the easy way to upgrade PGSQL for single Ubuntu VPS server all in one is:
– just backup old database to .sql file
– remove old version of Postgresql
– install new version
– restore .sql database file back to new created database,

By the way if you would try automatic cluster upgrade, below code it could do one:

sudo pg_lsclusters
apt install postgresql-16
apt install postgresql-contrib
sudo pg_lsclusters
sudo pg_dropcluster 16 main --stop
sudo pg_lsclusters
sudo pg_upgradecluster 12 main
sudo locale-gen "en_US.UTF-8"
sudo pg_upgradecluster 12 main
sudo locale-gen "vi_VN.UTF-8"
sudo pg_upgradecluster 12 main
sudo pg_lsclusters
systemctl status postgresql-16
sudo pg_dropcluster 12 main --stop
sudo pg_lsclusters
systemctl status postgresql
systemctl restart postgresql
systemctl status postgresql
reboot
sudo apt purge postgresql-15 postgresql-client-15
sudo apt purge postgresql-12 postgresql-client-12
sudo service postgresql restart
reboot

Tal