从GitHub下载cloud-server代码
https://github.com/TurboWarp/cloud-serverg
根据README文档部署云变量服务
cloud-server是一个为Scratch 3设计的云数据服务器,被forkphorus和TurboWarp使用。
它使用的协议与Scratch 3的云变量协议非常相似。更多详细信息请参阅doc/protocol.md。
限制
该服务器未实现长期变量存储功能。所有数据仅存储在内存中(从不写入磁盘),并且当房间清空或服务器重启时会被立即移除。
该服务器也未实现历史日志功能。
设置
需要Node.js和npm。
git clone https://github.com/TurboWarp/cloud-server cd cloud-server npm install npm start
默认情况下,服务器监听地址为 ws://localhost:9080/。要更改端口或启用wss://,请阅读下文。
要在forkphorus中使用本地云变量服务器,您可以使用chost URL参数,例如:https://forkphorus.github.io/?chost=ws://localhost:9080/。
您可以在TurboWarp中通过cloud_host URL参数进行类似操作:https://turbowarp.org/?cloud_host=ws://localhost:9080/。
配置
HTTP请求将提供public目录中的静态文件。
src/config.js
src/config.js是cloud-server的配置文件。
port属性(或PORT环境变量)配置要监听的端口。
在类Unix系统上,端口也可以是Unix套接字的路径。默认情况下,cloud-server会将Unix套接字的权限设置为777。这可以通过unixSocketPermissions进行配置。
如果您使用反向代理,请将trustProxy属性(或TRUST_PROXY环境变量)设置为true,以便日志中包含用户的IP地址而不是您代理的IP地址。
如果您不希望记录IP地址,请将anonymizeAddresses设置为true。
将perMessageDeflate设置为一个对象以启用"permessage-deflate",它使用压缩来减少数据传输的带宽。在Linux上,这可能导致性能不佳和灾难性的内存碎片化 (nodejs/node#8871)。选项请参阅:https://github.com/websockets/ws/blob/master/doc/ws.md#new-websocketserveroptions-callback (查找perMessageDeflate)。
您可以通过src/config.js的logging属性配置日志记录。默认情况下,cloud-server会记录到stdout和logs文件夹中的文件。可以通过将logging.console设置为false来禁用stdout日志记录。文件日志记录通过logging.rotation配置,选项请参阅:https://github.com/winstonjs/winston-daily-rotate-file#options。设置为false以禁用。
生产环境设置
cloud-server被认为是生产就绪的,因为它已经在生产环境中使用了数月而没有出现问题。也就是说,不提供任何担保。如果cloud-server中的错误导致您损失数百万美元,那也只能自认倒霉。(更多详情请参阅LICENSE)
在生产环境中,您可能应该使用像nginx或caddy这样的反向代理。
在此设置中,cloud-server应监听一个高端口(例如9080)甚至是Unix套接字,您的代理将处理HTTP(S)连接并将请求转发到云服务器。您应确保cloud-server正在监听的端口没有对外开放。
以下是一个使用SSL保护连接的示例nginx配置:
server {listen 443 ssl http2;ssl_certificate /path/to/your/ssl/cert;ssl_certificate_key /path/to/your/ssl/key;server_name clouddata.yourdomain.com;location / {proxy_pass http://127.0.0.1:9080;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
PS:不想自己部署云变量服务,也能直接使用其他已部署云变量服务的平台。
例如:希妈阿Q 在线 Scratch平台 https://scratch.momq.tech/
https://scratch.momq.tech/