概述
今天看到我的 Goland 可以更新了,于是简单看了一下 Release Note,发现了一个似乎期待已久的功能:Code With Me,这个功能有点类似于 VSCode 中的 Remote Developer,但是 Jetbrains 以自己的方式实现成另外一种形式,于是我就体验了一把,顺便写了一下入坑指南。
那首先,如果你需要玩这个功能,你得升级你的 IDE 到 2020.3 版本,这是当前最新的版本了。
简单使用
简单使用其实就是 JetBrains 家的指导了,真的很简单了,只需要复制一个分享链接,然后给别人,别人在浏览器打开就可以了,后续直接就等待客户端安装之类的,不一会就连接上了,具体的步骤为:
共享方
安装 “Code With Me ”插件
在界面上点击共享按钮
然后选择分享的权限,复制分享链接,然后发给对方即可
我是全选的,你可以按照自己的需求来。
在对方接入之后,记得 “同意”对方接入,这样双方就可以看到同样的项目界面了。
接入方
如果你想看别人的项目的话,那么基本上差不多,首先你得有别人的分享链接,然后:
安装 “Code With Me ”插件
在界面上点击加入别人的项目
等待别人确认就可以加入了
内网玩法
这个才是我的重头戏,默认情况下如“简单使用”中的介绍使用的都是公网的连接,速度很可能不尽人意,最好还是可以公司局域网才是真的好,所以这里我就介绍一下如何通过局域网来玩。
和公网的区别就在于局域网的需要你自己搭建一个服务器,然后大家通过这个私有的服务器接入,这同时也要求所有的参与者都要能访问这个服务器。自建服务器需要 Docker 和 Docker-Compose 支持,如果你本地没有安装的话,可以参考一下我的文章进行安装:
还有一些关于 SSL 的部分,如果不了解,可以看一下我的这份指导:
自建 CWM 服务器
下载私有服务器
打开地址:https://surveys.jetbrains.com/s3/code-with-me-server,然后填写你的邮箱(这个邮箱无需紧要,因为填完就可以直接下载了,不需要接收邮件)
目录结构
下载下来之后,我的文件目录是这样的:
[[email protected]]# ls -al -rw-r--r-- 1 root root 54M Dec 4 16:25 lobby-server-linux-x64.1165.tar.gz -rw-r--r-- 1 root root 14M Dec 4 16:25 ws-relayd1038
然后需要稍作调整:
[[email protected]]# mkdir relay [[email protected]]# cp ws-relayd1038 relay/ws-relayd [[email protected]]# mkdir lobby [[email protected]]# cp lobby-server-linux-x64.1165.tar.gz lobby/lobby-server-linux-x64.tar.gz
设置 SSL 证书
接下来就是运行服务器了,我这台服务器的 IP 是 192.168.63.154,所以你需要替换后面的一些配置的 IP 地址为你自己的服务器 IP。
[[email protected]]# openssl ecparam -name secp384r1 -genkey -noout -out lobby/lobby_private.pem [[email protected]]# openssl ec -in lobby/lobby_private.pem -pubout -out lobby/lobby_public.pem [[email protected]]# openssl req -new -key lobby/lobby_private.pem -out lobby/lobby.csr -config lobby/ssl.conf [[email protected]]# openssl x509 -req -days 365 -in lobby/lobby.csr -signkey lobby/lobby_private.pem -out lobby/lobby.crt -extensions v3_req -extfile lobby/ssl.conf [[email protected]]# openssl ecparam -name secp384r1 -genkey -noout -out relay/relay_private.pem [[email protected]]# openssl ec -in relay/relay_private.pem -pubout -out relay/relay_public.pem [[email protected]]# openssl req -new -key relay/relay_private.pem -out relay/relay.csr -config relay/ssl.conf [[email protected]]# openssl x509 -req -days 365 -in relay/relay.csr -signkey relay/relay_private.pem -out relay/relay.crt -extensions v3_req -extfile relay/ssl.conf
创建 relay Dockerfile
[[email protected]]# cat > relay/Dockerfile << EOF FROM alpine:latest ARG DISTRIBUTION_VERSION="" COPY ws-relayd /ws-relayd RUN chmod +x /ws-relayd COPY relay_public.pem /relay_public.pem CMD /ws-relayd -addr relay:3274 -jwt-key-type ecdsa -jwt-key-file /relay_public.pem EOF
创建 lobby Dockerfile
[[email protected]]# cat > lobby/Dockerfile << EOF FROM debian:buster-slim ARG DISTRIBUTION_VERSION="" ADD lobby-server-linux-x64.tar.gz /home/lobby-server COPY lobby_private.pem /home/lobby-server/lobby_private.pem RUN apt-get update && apt-get install -y unzip net-tools procps && apt-get clean WORKDIR /home/lobby-server ENV JAVA_HOME /home/lobby-server/jbr ENV SERVER_PORT 2093 ENV BASE_URL https://lobby.cwm.internal ENV ENABLED_FEATURES p2p_quic,direct_tcp,ws_relay ENV FORCE_RELAY_URI wss://relay.cwm.internal ENV RELAYS_ECDSA_JWT_KEY_FILE /home/lobby-server/lobby_private.pem ENV REDIS_HOST redis ENV REDIS_PORT 6379 ENTRYPOINT ["bin/lobby-server"] EOF
创建 Nginx 配置
[[email protected]]# mkdir -p nginx/ssl [[email protected]]# cp lobby/lobby.crt nginx/ssl/ [[email protected]]# cp lobby/lobby_private.pem nginx/ssl/ [[email protected]]# cp relay/relay.crt nginx/ssl/ [[email protected]]# cp relay/relay_private.pem nginx/ssl/ [[email protected]]# cat > nginx/nginx.conf << EOF events {} http { server { listen 443 ssl; server_name relay.cwm.internal; ssl_certificate /etc/ssl/nginx/relay.crt; ssl_certificate_key /etc/ssl/nginx/relay_private.key; location / { proxy_pass http://relay:3274; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $host; } } server { listen 443 ssl; server_name lobby.cwm.internal; ssl_certificate /etc/ssl/nginx/lobby.crt; ssl_certificate_key /etc/ssl/nginx/lobby_private.key; location / { proxy_pass http://lobby:2093; } } } EOF
运行服务
[[email protected]]# mkdir -p redis/data [[email protected]]# cat > docker-compose.yaml << EOF version: "3.8" services: nginx: image: nginx:latest volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro - ./nginx/ssl:/etc/ssl/nginx:ro ports: - 443:443 relay: build: context: ./relay args: DISTRIBUTION_VERSION: 1.0 lobby: build: context: ./lobby args: DISTRIBUTION_VERSION: 1.0 redis: image: redis:latest command: ["redis-server", "--appendonly", "yes"] volumes: - ./redis/data:/data EOF [[email protected]]# docker-compose up
然后就坐等运行完毕了。
使用自建服务器
要使用自建服务器就非常简单了,只需要在设置页面中将自己的服务器地址填入即可:
然后就和普通的一样使用了: