Run any application or IDE in Coder
In Coder v1.23, we added the ability to configure workspace applications. This makes it possible to add anything to the workspace applications panel in the Coder dashboard, through a config file. Before this, Coder supported the most IDEs of any cloud-powered remote development solution – and now you can bring any IDE or desktop application along with you.
In this blog post, we’ll explore a few ways this new functionality can be used to power up and customize your remote workspaces.
Remote Desktop (VNC)
Coder’s VNC image now includes a custom “Desktop” application This launches a VNC client in the web browser, giving developers access to full desktop applications. We also have instructions to build your own VNC image.
Desktop applications and IDEs
To take it one step further, it’s possible to configure and launch a single desktop application as a full-screen application through VNC.
You can also add desktop-only IDEs to your workspace, such as Eclipse or Spyder (we have guide for that). I’ve found that the latency can be quite low if you have a good connection to the Coder workspace. In the future, I’d love to try x2go or GTK Broadway to reduce overhead and improve speeds.
Web-based tools and IDEs (Portainer, JupyterLab, code-server)
As long as you add it to the image, you can configure & launch any web application through it’s specified icon in Coder.
With custom applications, you can also do things like share an internal tool with your development team, such an onboarding app.
The application can run as a web server in Coder image, which could redirect to an external URL.
How to configure workspace applications in Coder
First, make sure you have the feature flag on!
In most cases, you’ll want to use a custom image in Coder to add applications to your workspaces.
Our application specs go into the full details, but a
/coder/apps/config.yaml in the image provides the icons and start scripts for applications.
You can use this image as a reference, as it has all the apps mentioned below.
Desktop apps (e.g Insomnia)
This script will start an application on the VNC desktop and make it full screen. I saved it as
/coder/apps/start_insomnia.sh and made sure the file is executable.
#!/bin/sh # start Insomnia app on the VNC desktop DISPLAY=:90 insomnia& # make it fullscreen sleep 2 DISPLAY=:90 xdotool key F11
Portainer is a container management GUI, which makes it easier to develop with containers. As long as CVM workspaces are enabled, we can add it to the apps panel:
# saved in: /coder/apps/config.yaml apps: - name: Portainer scheme: http port: 9000 # Working directory working-directory: /home/coder # File path to icon used in application launcher icon-path: /coder/apps/portainer.svg # VNC server will be started by default in this image command: "/usr/bin/docker" # Array of arguments for command args: [ "run", "-d", "--publish=8000:8000", "--publish=9000:9000", "--name=portainer", "--volume=/var/run/docker.sock:/var/run/docker.sock", "--restart=always", "--volume=portainer_data:$HOME/portainer", "portainer/portainer-ce:latest" ] health-check: http: scheme: "http" path: "/" port: 9000
code-server (different version or patch)
# saved in: /coder/apps/config.yaml apps: - name: code-server scheme: http port: 8080 # Working directory working-directory: /home/coder # File path to icon used in application launcher icon-path: /coder/apps/code.png # VNC server will be started by default in this image command: "code-server" # Array of arguments for command args: [ "--auth=none" ] health-check: http: scheme: "http" path: "/" port: 8080
JupyterLab (different version or patch)
You may find that some applications run better as a subdomain. Such is the case for JupyterLab. See this example on redirecting to a dev URL.
We’re looking forward to hearing how you customize Coder with this new functionality. Join our community Slack to chat about use cases you’re exploring, feedback you have, or any questions you have along the way. Happy building!