Jan 202020
 
 January 20, 2020  Posted by at 11:36 pm Tutorial Tagged with: , ,  Add comments

The reason I use x11vnc is that it connects to the existing graphical session. Most other vnc servers will spawn an entirely new graphical session. While that is super cool, I don’t want that feature. This is for remote support, where I want the user and the supporter to share the same session. I use the ‘-auth guess’ to have x11vnc guess the XAUTHORITY file‐name and use it appropriately. This avoids the annoying hard coding of gdm, lightdm, xdm or specific users .Xauthority.

Install x11vnc
# apt-get install x11vnc

The following should work for any distro that uses systemd, just the apt bits are Debian specific.

Generate the password and store it under etc so no users can change this password, only root. You can do this under your users home so that its not managed by root. In my case I didn’t want the user to be able to change or accidentally delete the password.
# x11vnc -storepasswd /etc/x11vnc.pwd

edit (create new) the following file
use whatever text editor you prefer, here I use vi
# vi /etc/systemd/system/x11vnc.service

And add the following, making any changes you want to the x11vnc ExecStart
See the man page for explanations of the switches

[Unit]
Description=Start x11vnc at startup.
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pwd -rfbport 5900 -shared -o /var/log/x11vnc.log

[Install]
WantedBy=multi-user.target

Now enable the above, start it and verify its running and listening properly
# systemctl enable x11vnc
# systemctl start x11vnc
# netstat -pat
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 2806/x11vnc

Now that the server is all setup lets move onto the client
apt-get install tigervnc-viewer
vncviewer [remote host ip or hostname]

done;

  12 Responses to “Setup x11vnc server with systemd auto start up”

  1. best explanation and fastest install to install an x11vncserver under Debian

    Michael ,

  2. Question: do I need a network.target in the After=

    like this, After=multi-user.target network.target

    thx

  3. Hi pavlos
    You won’t need the network.target because vnc can run without the network being up. It listens on any interface so you can bring up the network any time and it will be listening and ready for connections.

  4. spot on!

  5. Awesome. Thanks for sharing this.

  6. By far the best explanation and working guide. This one actually works at boot instead of at login. It also doesn’t shutdown after 1st login like another I had tried with the same -forever in the line.

    Thank you, Sir!

  7. make sure you use lightdm and not gdm3 for display(xauth will fail)and netstat -pat will not show x11vnc service even if systemctl will report the service up and running.

  8. Thank you! I got it work fine so fast with this explanation.

  9. Thank you so much!

    Perfect!

  10. Excellent write-up on this process. Succinct and to the point.

  11. Trying to follow these instructions on a Debian 11 install and running into the following issue:

    systemctl start x11vnc results in
    Failed to start x11vnc.service: Unit x11vnc.service has a bad unit file setting.
    See system logs and ‘systemctl status x11vnc.service’ for details.

    Running systemctl status x11vnc.service results in

    Warning: The unit file, source configuration file or drop-ins of x11vnc.service changed on disk. R>
    ● x11vnc.service – Start x11vnc at startup.
    Loaded: bad-setting (Reason: Unit x11vnc.service has a bad unit file setting.)
    Active: inactive (dead)

    I created x11vnc.service using direct copy paste so I’m not sure whats happening or what I have done wrong.

    Any pointer greatly appreciated.

  12. a Duck It search of “unit .service has a bad unit file setting” had this at the top https://unix.stackexchange.com/questions/642828/why-does-this-systemd-unit-file-generate-an-error-service-has-a-bad-unit-file-s
    do you have spaces around the =?

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)