diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise
index fc94441ceb6cad47d995c085aaa5baea06b9ee3a..657d1aaa5687f304049faa23d389eef6f3caa4dd 100755
--- a/src/freedombone-image-customise
+++ b/src/freedombone-image-customise
@@ -1073,7 +1073,7 @@ function mesh_web_server {
 
 	chroot "$rootdir" apt-get -y install nginx
 
-	if [ ! -d /etc/nginx ]; then
+	if [ ! -d $rootdir/etc/nginx ]; then
 		echo $'Unable to install web server'
 		exit 346825
 	fi
diff --git a/src/freedombone-image-mesh b/src/freedombone-image-mesh
index 8366f7e1e9fe087ba5eb8e11aeb8441900744e7c..a06a086914750daa154d906f923ad3f4933525e1 100755
--- a/src/freedombone-image-mesh
+++ b/src/freedombone-image-mesh
@@ -302,6 +302,71 @@ function configure_zeronet_forum {
 	echo $'Update of ZeroNet Forum completed' >> $INSTALL_LOG
 }
 
+function configure_zeronet_id {
+	echo $'Updating ZeroID' >> $INSTALL_LOG
+
+	cd /opt/zeronet
+	python zeronet.py --batch siteCreate 2> /opt/zeronet/zeroid.txt
+	if [ ! -f /opt/zeronet/zeroid.txt ]; then
+		echo $'Unable to create ZeroID' >> $INSTALL_LOG
+		exit 47962
+	fi
+	zeroid_address=$(cat zeroid.txt | grep "Site address" | awk -F ':' '{print $2}')
+	zeroid_private_key=$(cat zeroid.txt | grep "Site private key" | awk -F ':' '{print $2}')
+	ZERONET_ID_ADDRESS=${zeroid_address//[[:blank:]]/}
+	ZERONET_ID_PRIVATE_KEY=${zeroid_private_key//[[:blank:]]/}
+
+	if [ ${#ZERONET_ID_ADDRESS} -lt 20 ]; then
+		echo $"Address:    $ZERONET_ID_ADDRESS" >> $INSTALL_LOG
+		echo $"Public key: $ZERONET_ID_PRIVATE_KEY" >> $INSTALL_LOG
+		echo $'Unable to create ZeroID address' >> $INSTALL_LOG
+		exit 76352
+	fi
+
+	if [ ${#ZERONET_ID_PRIVATE_KEY} -lt 20 ]; then
+		echo $"Address:    $ZERONET_ID_ADDRESS" >> $INSTALL_LOG
+		echo $"Public key: $ZERONET_ID_PRIVATE_KEY" >> $INSTALL_LOG
+		echo $'Unable to create ZeroID private key' >> $INSTALL_LOG
+		exit 87356
+	fi
+
+	if [ ! -d "/opt/zeronet/data/$ZERONET_ID_ADDRESS" ]; then
+		echo $"Unable to find site directory: /opt/zeronet/data/$ZERONET_ID_ADDRESS" >> $INSTALL_LOG
+		exit 378434
+	fi
+
+	echo $"ZeroID address:     $ZERONET_ID_ADDRESS"
+	echo $"ZeroID private key: $ZERONET_ID_PRIVATE_KEY"
+	cp -r /opt/zeronet/ZeroID/* /opt/zeronet/data/$ZERONET_ID_ADDRESS
+	# TODO
+	sed -i "s///g" /opt/zeronet/data/$ZERONET_ID_ADDRESS/content.json
+	python zeronet.py siteSign $ZERONET_ID_ADDRESS $ZERONET_ID_PRIVATE_KEY --inner_path data/users/content.json
+
+	# Add an avahi service
+	echo '<?xml version="1.0" standalone="no"?><!--*-nxml-*-->' > /tmp/zeronet-id.service
+	echo '<!DOCTYPE service-group SYSTEM "avahi-service.dtd">' >> /tmp/zeronet-id.service
+	echo '<service-group>' >> /tmp/zeronet-id.service
+	echo '  <name replace-wildcards="yes">%h ZeroID</name>' >> /tmp/zeronet-id.service
+	echo '  <service>' >> /tmp/zeronet-id.service
+	echo '    <type>_zeronet._udp</type>' >> /tmp/zeronet-id.service
+	echo "    <port>$ZERONET_PORT</port>" >> /tmp/zeronet-id.service
+	echo "    <txt-record>$ZERONET_URL/$ZERONET_ID_ADDRESS</txt-record>" >> /tmp/zeronet-id.service
+	echo '  </service>' >> /tmp/zeronet-id.service
+	echo '</service-group>' >> /tmp/zeronet-id.service
+	sudo cp /tmp/zeronet-id.service /etc/avahi/services/zeronet-id.service
+
+	if [ ! -d /home/$MY_USERNAME/.config/zeronet ]; then
+		mkdir -p /home/$MY_USERNAME/.config/zeronet
+		chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.config
+	fi
+	echo "$ZERONET_URL/$ZERONET_ID_ADDRESS" > /home/$MY_USERNAME/.config/zeronet/myzeroid
+
+	sed -i "s|ZeroID address.*|ZeroID address: $ZERONET_ID_ADDRESS|g" /home/$MY_USERNAME/README
+	sed -i "s|ZeroID private key.*|ZeroID private key: $ZERONET_ID_PRIVATE_KEY|g" /home/$MY_USERNAME/README
+
+	echo $'Update of ZeroID completed' >> $INSTALL_LOG
+}
+
 function configure_toxcore {
 	echo $'Configuring toxcore' >> $INSTALL_LOG
 
@@ -382,6 +447,7 @@ if [ -f /root/.initial_mesh_setup ]; then
 	configure_zeronet_blog
 	configure_zeronet_mail
 	configure_zeronet_forum
+	configure_zeronet_id
 	configure_toxcore
 	configure_zeronet
 	disable_password_logins