Makie can be used remotely and it supports working headless systems (such as CI servers).
In this scenario you need an X server on the remote and you will have to connect to the remote server with
ssh -X user@host
See here about more details about X11 forwarding.
The first step is to install VirtualGL on the remote server (Linux only) and on the local client. If you need to establish the connection to the server via a secondary intermediate server, VirtualGL also needs to be installed there. On the remote server you will need to configure the VirtualGL server. Be sure to check that the configuration is ok.
After everything is set up, you can connect to the remote server via
/opt/VirtualGL/bin/vglconnect -s user@server
and then you will have to start julia via VirtualGL
You can also use GLMakie on CI or servers without a GPU by using
xvfb for software rendering. This procedure is used in the GLMakie tests.
For WGLMakie, you can setup a server with JSServe and serve the content from a remote server. This also works for creating interactive plots with Documenter. Check out the docs for more details about this.
If you want to use WGLMakie in VS Code on a remote server, you will have to forward the port used by WGLMakie in order for the plot pane integration to work. If you don't need to change the port on which WGLMakie, you will just have to forward the 9284 port.
If you want to change the port on which WGLMakie runs on the remote, say
8081, you will have to use the following
using JSServe JSServe.configure_server!(listen_port=8081)
before any plotting commands with WGLMakie.
If you also need to use a different port than
8081 on the local machine, say
8081, you will also need to set the
forwarded_port like this:
using JSServe JSServe.configure_server!(listen_port=8081, forwarded_port=8080)
For CairoMakie there shouldn't be any difference in using it on a remote or locally.