Today we want to set the host name of our VPS so that it still existed after a reboot. Some vendors reset the hostname after a reboot, so we bypass with a script that makes the adjustments for us.
First we have to create a file called set_vps_hostname.service in /etc/systemd/system/
sudo nano /etc/systemd/system/set_vps_hostname.service
content:
[Unit] Description=Set my hostname on boot Before=rsyslog.service [Service] Type=oneshot ExecStart=/usr/local/bin/set_vps_hostname [Install] WantedBy=multi-user.target
Now we have to create the script set_vps_hostname (adjust the hostname to yours) :
sudo nano /usr/local/bin/set_vps_hostname
content:
#!/bin/bash HOSTNAME=www.markus-blog.de # <---adjust hostname here [ -f /etc/hostname ] && echo $HOSTNAME > /etc/hostname [ -f /etc/HOSTNAME ] && echo $HOSTNAME > /etc/HOSTNAME [ -f /etc/mailname ] && echo $HOSTNAME > /etc/mailname [ -f /etc/sysconfig/network ] && sed -i.hebackup s/HOSTNAME=".*"/HOSTNAME="$HOSTNAME"/ /etc/sysconfig/network /bin/hostname $HOSTNAME [ -f /etc/my.resolv.conf ] && cp /etc/my.resolv.conf /etc/resolv.conf [ -f /etc/my.hosts ] && cp /etc/my.hosts /etc/hosts exit 0
Now we make the script executable:
sudo chmod +x /usr/local/bin/set_vps_hostname
Next we want to set the hostname in /etc/hosts file too:
sudo nano /etc/hosts
change the name to the hostname we need and copy the file to /etc/my.hosts to make it persistent:
sudo cp /etc/hosts /etc/my.hosts
if we use our own nameserver, we had to adjust the resolv.conf too:
sudo nano /etc/resolv.conf
and we copy the file to /etc/my.resolv.conf:
sudo cp /etc/resolv.conf /etc/my.resolv.conf
Now we have to enable our service and reboot to set the hostname with the following command (please be aware, this command will Reboot your VPS):
sudo systemctl daemon-reload && sudo systemctl enable set_vps_hostname.service && sudo systemctl start set_vps_hostname.service && sudo systemctl restart rsyslog && sudo reboot
after reboot we check the hostname with:
cat /etc/hostname cat /etc/mailname
That’s it and have fun 🙂
8 Gedanken zu „How to change your VPS hostname and mailname on Ubuntu 16.04 LTS permanently“
Hallo Markus,
ich wollte gerade auf meinem neuen vServer von Strato das Script nutzen (Jürgens letzte Version) jedoch ist nach einem Neustart der hostname wieder der alte.
Hast du vielleicht eine Idee was angepasst werden muss? (Ich nutze Ubuntu 18.04 LTS)
Hallo,
ich habe es erst letzte Woche mit meinem Script aus dem Artikel durchgeführt (Strato vServer Ubuntu 18). Prüfe mal mit „systemctl status set_vps_hostname.service“.
Gruß
Markus
Hat das jemand erfolgreich auf einem strato vps server einsetzen können?
Das Skript scheint an sich zu funktionieren: In /etc/hosts und /etc/hostname stehen nun die Werte die ich will. Aber ein Aufruf von „hostname“ in der shell zeigt immer noch h123123123.stratoserver.net an.
Jemand eine Ahnung woran das liegt? Danke
Ja. Gestern erst wieder. Prüfe mal den Status vom Dienst.
Hi Markus, mein Server läuft mittlerweile unter ubuntu 18.04 und Plesk Obsidian. Leider funktioniert jetzt Dein Skript nicht mehr.
Das sind die Fehlermeldungen:
set_vps_hostname.service – Set my hostname on boot
Loaded: loaded (/etc/systemd/system/set_vps_hostname.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2019-10-16 14:33:11 CEST; 3s ago
Process: 8493 ExecStart=/usr/local/bin/set_vps_hostname (code=exited, status=203/EXEC)
Main PID: 8493 (code=exited, status=203/EXEC)
Okt 16 14:33:11 h2828820.stratoserver.net systemd[1]: Starting Set my hostname on boot…
Okt 16 14:33:11 h2828820.stratoserver.net systemd[8493]: set_vps_hostname.service: Failed to execute command: No such file or directory
Okt 16 14:33:11 h2828820.stratoserver.net systemd[8493]: set_vps_hostname.service: Failed at step EXEC spawning /usr/local/bin/set_vps_hostname: No
Okt 16 14:33:11 h2828820.stratoserver.net systemd[1]: set_vps_hostname.service: Main process exited, code=exited, status=203/EXEC
Okt 16 14:33:11 h2828820.stratoserver.net systemd[1]: set_vps_hostname.service: Failed with result ‚exit-code‘.
Okt 16 14:33:11 h2828820.stratoserver.net systemd[1]: Failed to start Set my hostname on boot.
Weißt Du, was man hier ändern muss?
Hi Jürgen,
Nimm mal die Zeile mit /etc/sysconfig/network aus dem Script und schau dann mal, ob der Fehler weg ist.
Gruß Markus
Hallo Markus, nach einem Serverwechsel richte ich zur Zeit alles neu ein, u.a. auch Dein Skript um Plesk davon abzubringen, immer wieder nach einem reboot den „alten“ Servernamen zu verwenden. Bei meinem alten Server hat dies tadelos geklappt. Bei dem neuen Server steht leider nach einem reboot wieder der alte Name da,
So sieht mein skript aus:
#!/bin/bash
HOSTNAME=www.kulturmensch.eu # /etc/hostname [ -f /etc/HOSTNAME ] && echo $HOSTNAME
> /etc/HOSTNAME
[ -f /etc/mailname ] && echo $HOSTNAME > /etc/mailname [ -f /etc/sysconfig/network ] && sed -i.hebackup s/HOSTNAME=“.*“/HOSTNAME=“$HOSTNAME“/
/etc/sysconfig/network /bin/hostname $HOSTNAME [ -f /etc/my.resolv.conf ] && cp /etc/my.resolv.conf /etc/resolv.conf [ -f /etc/my.hosts ] && cp
/etc/my.hosts /etc/hosts
exit 0
und so die service-datei:
[Unit]
Description=Set my hostname on boot
Before=rsyslog.service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/set_vps_hostname
[Install]
WantedBy=multi-user.target
Fällt Dir ein Fehler auf?
Hallo Jürgen,
Hinter dem Hostnamen die Raute weg und den Rest in die nächste Zeile.
Gruß Markus