Benedikt Meurer JavaScript Engine Hacker and Programming Language Enthusiast.

How to fix the hostname of your Strato V-Server

The Strato Linux V-Servers always reset their hostnames to hXXXXXX.stratoserver.net on boot, no matter what you put in /etc/hostname and there's no way to fix this (it's actually intended behavior). If you happen to have a Strato V-Server running Debian, here's a simple failsafe way to fix the hostname early during boot and have all daemons use your desired hostname.

Assuming that your desired fully qualified hostname is www.example.org, then create a new file /etc/init.d/strato-hostname-fix.sh with the following content

#! /bin/sh
### BEGIN INIT INFO
# Provides: strato-hostname-fix
# Required-Start:
# Required-Stop:
# Default-Start: S
# Default-Stop:
# X-Start-Before: hostname
# Short-Description: Fix the Strato overwritten hostname.
# Description: Fix the hostname in /etc/hostname and /etc/hosts that
# was previously overwritten by the Strato V-Server.
### END INIT INFO

PATH=/sbin:/bin

. /lib/init/vars.sh
. /lib/lsb/init-functions

do_start () {
sed -i \
-e 's/h[0-9][0-9]*/www/g' \
-e 's/stratoserver\.net/example.org/g' \
/etc/hostname \
/etc/hosts
exit $?
}

case "$1" in
start|"")
do_start
;;
status|restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
# No-op
;;
*)
echo "Usage: strato-hostname-fix.sh [start|stop]" >&2
exit 3
;;
esac

:

and setup the script using the following command:

sudo insserv /etc/init.d/strato-hostname-fix.sh

Afterwards just reboot the machine. The above was successfully tested with Debian 6.0.4 (squeeze), and should also work with recent Ubuntu versions.