Puter 是一个高级的开源互联网操作系统,旨在功能丰富、异常快速且高度可扩展。它可以用于构建远程桌面环境,或作为云存储服务、远程服务器、Web托管平台等的界面。

开始使用

阅读本节后,请继续阅读下面的 自托管配置 部分。 请仔细阅读这些说明,否则由于设置无效,您可能会看到错误。

本地开发

  1. git clone https://github.com/HeyPuter/puter
  2. cd puter
  3. npm install
  4. npm start

这将在 http://localhost:4000(或下一个可用端口)启动 Puter。

使用 Docker

注意: 没有必要在克隆此仓库内运行此命令。对于贡献者,建议使用 本地开发 说明。

  1. mkdir puter && cd puter && mkdir -p puter/config puter/data && sudo chown -R 1000:1000 puter && docker run --rm -p 4100:4100 -v `pwd`/puter/config:/etc/puter -v `pwd`/puter/data:/var/puter ghcr.io/heyputer/puter

使用 Docker Compose

注意: 没有必要在克隆此仓库内运行此命令。对于贡献者,建议使用 本地开发 说明。

  1. mkdir -p puter/config puter/data
  2. sudo chown -R 1000:1000 puter
  3. wget https://raw.githubusercontent.com/HeyPuter/puter/main/docker-compose.yml
  4. docker compose up

查看 配置 了解下一步操作。

⚠️ 自托管 ⚠️

Puter 的自托管版本目前处于 Alpha 阶段,尚不建议在生产环境中使用。它正在积极开发中,可能包含错误、其他问题。请谨慎使用,仅用于测试和评估目的。

配置

运行服务器将在以下位置之一生成配置文件:

  • 使用 Docker 时为 config/config.json
  • 本地开发 中为 volatile/config/config.json
  • 在服务器上(或 Docker 容器内)为 /etc/puter/config.json

域名

要访问设备上的 Puter,您可以直接转到服务器控制台中打印的地址(通常是 puter.localhost:4100)。

要从另一台设备访问 Puter,必须配置一个域名,以及一个 api 子域名。例如,example.local 可能是指向运行 puter 的服务器 IP 地址的域名,api.example.com 也必须指向此地址。此域名还必须在配置文件中指定(通常是 volatile/config/config.json)。

有关更多信息,请参见 域名配置

配置端口

  • 您可以通过设置 http_port 为所需值来指定自定义端口
  • 如果您使用的是 nginx 或 Cloudflare 等反向代理,您还应该将 pub_port 设置为公共(外部)端口(通常是 443
  • 如果您的反向代理上启用了 HTTPS,请确保 config.json 中的 protocol 也相应设置

默认用户

默认情况下,Puter 将创建一个名为 default_user 的用户。 此用户将有一个随机生成的密码,该密码将在开发控制台中打印。 在开发控制台中,直到此用户的密码被更改,将一直显示警告。请登录此用户并更改密码作为您的第一步。

许可证

本仓库根据 AGPL-3.0 许可证授权;然而,我们的 SDK(puter.js)也在 Apache 2.0 许可证下可用,如该部分(packages/puter-js)的许可证文件所示。

常见问题解答

❓ Puter 的用例是什么?

Puter 可以用作:

  • 带有新鲜界面和强大功能的 Dropbox、Google Drive、OneDrive 等的替代品。
  • 服务器和工作站的远程桌面环境。
  • 构建和托管网站、Web 应用程序和游戏的平台。
  • 一个友好的开源项目和社区,了解 Web 开发、云计算、分布式系统等的知识和经验!

❓ 为什么 Puter 不是用 React、Angular、Vue 等构建的?

出于性能原因,Puter 是用纯 JavaScript 和 jQuery 构建的。此外,我们希望避免复杂的抽象,并尽可能控制整个栈。

部分灵感来自我们最喜欢的一些非框架构建的项目:VSCodePhotopeaOnlyOffice

❓ 为什么使用 jQuery?

Puter 直接与 DOM 交互,jQuery 提供了一个优雅而强大的 API 来操作 DOM、处理事件等。它也很快、成熟且经过实战考验。