How do I start VNC Server on boot?
How do I create a system-wide autostart file? This would be on a cloud server running the desktop version of Maverick.
I logged in as root and created an autostart file using System/Preferences/StartupApplications
but it ended up in /root/.config/autostart
and did not execute (as far as I can tell) upon rebooting. The autostart file is to invoke a bash script that invokes the VNC server.
I copied the .desktop autostart file from /root/.config/autostart
to /etc/xdg/autostart
and rebooted. This did not seem to make a difference.
Edit As mentioned in a comment, the objective is to run my bash script which starts the VNC server upon boot; not upon a login.
Solution 1:
First, install the TightVNC server
sudo apt-get install tightvncserver
.-
Set up the VNC server for the user you wish to log in as. When you run "vncserver" for the first time, it will ask you to set a password. only allow SSH tunnelled or VPN connections. To launch programs or a session when your VNC session starts, modify
~/.vnc/xstartup
. Here is an example.#!/bin/sh xrdb $HOME/.Xresources xsetroot -solid black /opt/azureus/azureus & k3b & icewm-session &
-
Copy the following into
/etc/init.d/vncserver
. The easiest way to do it is to copy it to your clipboard, runsudo -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
.- Finally, connect to your server with a VNC client on port 590X, where X is the value of "DISPLAY" in the vncserver script. On OS X, I like to use Chicken of the VNC. On Windows and Linux, the TightVNC client works nicely.
Source
Solution 2:
One possibility: /etc/rc.local
The content says it:
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing
The execution bits are set to 755 on my system already. (chmod 755 /etc/rc.local)
You can put any command in there, which will be executed as root.
This is ok for your purpose as long as you do not change runlevels, I guess. (If you do not know what runlevels are, nevermind).
Solution 3:
this seems to be an old post but the topic might be still interesting for some users. To have vnc to start at boot up, you will need to
- install a vnc server software (here we will be using x11vnc)
- configure a startup script (used to start the vnc service)
Step 1 - install x11vnc server
from a command line, type
sudo apt-get install x11vnc
To add security, you should set a pwd
sudo x11vnc -storepasswd
Step 2 - Configure your startup script
- if your ubuntu version is lower 15.04,
you create the config file under /etc/init.d/x11vnc.conf
and populate it with the correct commands to be executed
start on login-session-start
script
/usr/bin/x11vnc -xkb -auth
/var/run/lightdm/root/:0
-noxrecord -noxfixes -noxdamage
-rfbauth /etc/x11vnc.pass
-forever -bg -rfbport 5900 -o /var/log/x11vnc.log
end script
- if your ubuntu version is 15.04 or later,
these systems are using systemd and you will need to create your service unit file under /lib/systemd/system/x11vnc.service
and populate it with the correct commands to be executed
[Unit] Description=Start x11vnc at startup. After=multi-user.target
[Service] Type=simple ExecStart=/usr/bin/x11vnc -auth guess -forever
-loop -noxdamage -repeat -rfbauth /home/USERNAME/.vnc/passwd -rfbport 5900 -shared
[Install] WantedBy=multi-user.target
Reload the service
sudo systemctl daemon-reload
sudo systemctl enable x11vnc.service
You can find detailed information on Help Ubuntu Community wiki page (see here) or you can try to use this quick to use recipice
- For Ubuntu version lower than 15.04, check this post
- For Ubuntu version 15.04 or later, check this post
Hope this is helpful
Solution 4:
If you're using TigerVNC then it installs /etc/init.d/vncserver
which starts all vncservers configured in /etc/sysconfig/vncservers
E.g. following would start 2 instances on display 1 & 2 at start up.
# <display>:<user>
VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1920x1080"
VNCSERVERS="2:guest"
VNCSERVERARGS[2]="-geometry 800x600 -SecurityTypes None"