背景:

算法开发想要远程开发调试服务器的代码,使用PyCharm自带的ssh功能连接堡垒机,会无法列出有权限的机器,导致无法正常远程开发,开发直连又会有安全风险。

解决方案:

在 Ubuntu 上部署 JetBrains Projector,并把 PyCharm 跑在浏览器里实现“Web PyCharm 远程开发”。
整套方案不依赖本地 JetBrains 客户端,只要有浏览器就能写代码,非常适合在平板、低配笔记本或公司跳板机上直接开发。

下载安装

sudo mkdir -p /opt/jetbrains
cd /opt/jetbrains

# 下载 PyCharm 2021.3.3
sudo wget -O pycharm-2021.3.3.tar.gz https://download.jetbrains.com/python/pycharm-professional-2021.3.3.tar.gz
sudo tar -xzf pycharm-2021.3.3.tar.gz

# 下载 projector-server v1.8.1(GitHub release 还留着)
sudo wget -O projector-server-v1.8.1.zip https://github.com/JetBrains/projector-server/releases/download/v1.8.1/projector-server-v1.8.1.zip
sudo unzip -o projector-server-v1.8.1.zip -d pycharm-2021.3.3/

修改启动脚本

sudo nano pycharm-2021.3.3/bin/pycharm.sh

新增配置

CLASSPATH="$IDE_HOME/lib/util.jar"
CLASSPATH="$CLASSPATH:$IDE_HOME/lib/bootstrap.jar"
# 1.加入配置
CLASSPATH="$CLASSPATH:/opt/jetbrains/pycharm-2021.3.3/projector-server-1.8.1/lib/*"

更改配置

"$JAVA_BIN" \
-classpath "$CLASSPATH" \
${VM_OPTIONS} \
"-XX:ErrorFile=$HOME/java_error_in_pycharm_%p.log" \
"-XX:HeapDumpPath=$HOME/java_error_in_pycharm_.hprof" \
"-Djb.vmOptionsFile=${USER_VM_OPTIONS_FILE:-${VM_OPTIONS_FILE}}" \
${IDE_PROPERTIES_PROPERTY} \
-Djava.system.class.loader=com.intellij.util.lang.PathClassLoader -Didea.vendor.name=JetBrains -Didea.paths.selector=PyCharm2021.3 -Didea.platform.prefix=Python -Dsplash=true \
# 2.替换配置 com.intellij.idea.Main 为 -Dorg.jetbrains.projector.server.classToLaunch=com.intellij.idea.Main org.jetbrains.projector.server.ProjectorLauncher
-Dorg.jetbrains.projector.server.classToLaunch=com.intellij.idea.Main org.jetbrains.projector.server.ProjectorLauncher \
"$@"

启动服务

ubuntu: sudo chmod +x  pycharm-2021.3.3/bin/pycharm.sh
ubuntu: /opt/jetbrains$ sudo ./pycharm-2021.3.3/bin/pycharm.sh
[DEBUG] :: IdeState :: Starting attempts to Init ProjectorClassLoader
[DEBUG] :: util.agent.MiscKt :: dynamically attaching agent: jar=/tmp/projector-agent13168037892774388622.jar, args=isAgent=false;mdPanelClass=org.jetbrains.projector.server.core.ij.md.ProjectorMarkdownPanel;isIdeAttached=true
[DEBUG] :: IjInjectorAgent :: IjInjectorAgent agentmain start, args=isAgent=false;mdPanelClass=org.jetbrains.projector.server.core.ij.md.ProjectorMarkdownPanel;isIdeAttached=true
[DEBUG] :: ProjectorBatchTransformer :: Success (State: Initial): [IjAwtTransformer: (java.awt.GraphicsEnvironment)]
[DEBUG] :: IdeState :: Starting attempts to run transformations
[DEBUG] :: IjInjectorAgent :: IjInjectorAgent agentmain finish
[DEBUG] :: util.agent.MiscKt :: dynamically attaching agent is done: jar=/tmp/projector-agent13168037892774388622.jar, args=isAgent=false;mdPanelClass=org.jetbrains.projector.server.core.ij.md.ProjectorMarkdownPanel;isIdeAttached=true
[DEBUG] :: IdeState :: Starting attempts to initialize IDEA: fix AA and disable smooth scrolling (at start)
[DEBUG] :: IdeState :: Starting attempts to Forbid platform updates and plugin update notifications
[DEBUG] :: IdeState :: Starting attempts to Getting IDE colors
[DEBUG] :: IdeState :: Starting attempts to search for editors
[DEBUG] :: ProjectorServer :: Daemon thread starts
[INFO] :: WebsocketServer :: ProjectorServer is starting on host 0.0.0.0/0.0.0.0 and port 8887
[INFO] :: HttpWsServerBuilder :: WebSocket SSL is disabled
[INFO] :: HttpWsServer :: Server started on host 0.0.0.0/0.0.0.0 and port 8887
[DEBUG] :: IdeState :: "Init ProjectorClassLoader" is done
Jan 06, 2026 2:47:22 PM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.

访问页面

浏览器打开http://10.2.1.1:8887

踩坑记录

刚开始通过projector+PyCharm Professional 安装失败,查询文档得知JetBrains 的 Projector 项目 2022 年起就停止维护,官方把仓库归档、CDN 也陆续下线,只好通过旧包进行部署