# Web IDEs By default, Coder workspaces allow connections via: - Web terminal - SSH (plus any [SSH-compatible IDE](../ides.md)) It's common to also let developers to connect via web IDEs. ![Row of IDEs](../images/ide-row.png) In Coder, web IDEs are defined as [coder_app](https://registry.terraform.io/providers/coder/coder/latest/docs/resources/app) resources in the template. With our generic model, any web application can be used as a Coder application. For example: ```hcl # Add button to open Portainer in the workspace dashboard # Note: Portainer must be already running in the workspace resource "coder_app" "portainer" { agent_id = coder_agent.main.id slug = "portainer" display_name = "Portainer" icon = "https://simpleicons.org/icons/portainer.svg" url = "https://localhost:9443/api/status" healthcheck { url = "https://localhost:9443/api/status" interval = 6 threshold = 10 } } ``` ## code-server ![code-server in a workspace](../images/code-server-ide.png) [code-server](https://github.com/coder/coder) is our supported method of running VS Code in the web browser. A simple way to install code-server in Linux/macOS workspaces is via the Coder agent in your template: ```console # edit your template cd your-template/ vim main.tf ``` ```hcl resource "coder_agent" "main" { arch = "amd64" os = "linux" startup_script = < It is common to see latency and performance issues with Projector. We recommend using [JetBrains Gateway](https://youtrack.jetbrains.com/issues/GTW) whenever possible (also no Template edits required!) Workspace requirements: - JetBrains projector CLI - At least 4 CPU cores and 4 GB RAM - CLion - PyCharm - DataGrip - GoLand - IntelliJ IDEA Community - IntelliJ IDEA Ultimate - PhpStorm - PyCharm Community - PyCharm Professional - Rider - RubyMine - WebStorm **Pre-built templates:** You can reference/use these pre-built templates with JetBrains projector: - IntelliJ ([Kubernetes](https://github.com/sharkymark/v2-templates/tree/main/multi-projector-intellij)) - PyCharm ([Kubernetes](https://github.com/sharkymark/v2-templates/tree/main/multi-projector-pycharm)) > You need to have a valid `~/.kube/config` on your Coder host and a namespace > on a Kubernetes cluster to use the Kubernetes pod template examples. ======= ![PyCharm in Coder](../images/projector-pycharm.png) ## JupyterLab Configure your agent and `coder_app` like so to use Jupyter. Notice the `subdomain=true` configuration: ```hcl data "coder_workspace" "me" {} resource "coder_agent" "coder" { os = "linux" arch = "amd64" dir = "/home/coder" startup_script = <<-EOF pip3 install jupyterlab $HOME/.local/bin/jupyter lab --ServerApp.token='' --ip='*' EOF } resource "coder_app" "jupyter" { agent_id = coder_agent.coder.id slug = "jupyter" display_name = "JupyterLab" url = "http://localhost:8888" icon = "/icon/jupyter.svg" share = "owner" subdomain = true healthcheck { url = "http://localhost:8888/healthz" interval = 5 threshold = 10 } } ``` ![JupyterLab in Coder](../images/jupyter-on-docker.png) ## RStudio Configure your agent and `coder_app` like so to use RStudio. Notice the `subdomain=true` configuration: ```hcl resource "coder_agent" "coder" { os = "linux" arch = "amd64" dir = "/home/coder" startup_script = <