How can I start a VNC server before log on?
I would like to run x11vnc (or another VNC server) on my desktop, but I'm unable to find a way to get it to start before any users log in. Back when I was using vanilla Ubuntu 10.10 Vino did this by default. However, I can't find a way to do it now in Xubuntu.
Solution 1:
I usually suggest an alternate VNC server, x11vncserver or FreeNX.
FreeNX how to and download info
x11 VNC and docs
This assumes that VNC is setup and run-able:
Copy the code block below into /etc/init.d/vncserver
. The easiest way to do it is to copy it to your clipboard, run sudo -i && cat > /etc/init.d/vncserver && exit
in a terminal, paste it in, and type Ctrl-D`. Be sure to change the USER variable to whatever user you want the VNC server to run under.
#!/bin/sh -e
### BEGIN INIT INFO
# Provides: vncserver
# Required-Start: networking
# Default-Start: 3 4 5
# Default-Stop: 0 6
### END INIT INFO
PATH="$PATH:/usr/X11R6/bin/"
# The Username:Group that will run VNC
export USER="mythtv"
#${RUNAS}
# The display that VNC will use
DISPLAY="1"
# Color depth (between 8 and 32)
DEPTH="16"
# The Desktop geometry to use.
#GEOMETRY="<WIDTH>x<HEIGHT>"
#GEOMETRY="800x600"
GEOMETRY="1024x768"
#GEOMETRY="1280x1024"
# The name that the VNC Desktop will have.
NAME="my-vnc-server"
OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
. /lib/lsb/init-functions
case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;
stop)
log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;
restart)
$0 stop
$0 start
;;
esac
exit 0
Make the script executable with sudo chmod +x /etc/init.d/vncserver
.
Then, run sudo update-rc.d vncserver defaults
. This adds the appropriate symlinks to the vncserver script so that it is sent the start and stop commands at the appropriate time.
Note: you may need to use sudo update-rc.d vncserver 99
instead if the job is running too early in the boot process.
To start the server without rebooting, run sudo /etc/init.d/vncserver start
Finally, connect to your server with a VNC client on port 590X, where X is the value of "DISPLAY" in the vncserver script
source
Solution 2:
My solution:
- Go to the desktop sharing and allow it to sharing and put a good password. (click off to allow permissions)
- Go to the Screen and set it to lock after 30 seconds.
- Go to users and allow an automatic login.
The vino server starts and you should be able to attach to it. You can use ssh to create a tunnel for VNC if you need to secure it (I used PUTTY and that worked very well). You can also enable the firewall and just allow traffic from a specific address. This solution has worked for me in over 20 Ubuntu boxes.