Puter 是一个高级的开源互联网操作系统,旨在功能丰富、异常快速且高度可扩展。它可以用于构建远程桌面环境,或作为云存储服务、远程服务器、Web托管平台等的界面。
开始使用
阅读本节后,请继续阅读下面的 自托管 和 配置 部分。 请仔细阅读这些说明,否则由于设置无效,您可能会看到错误。
本地开发
git clone https://github.com/HeyPuter/puter
cd puter
npm install
npm start
这将在 http://localhost:4000(或下一个可用端口)启动 Puter。
使用 Docker
注意: 没有必要在克隆此仓库内运行此命令。对于贡献者,建议使用 本地开发 说明。
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
注意: 没有必要在克隆此仓库内运行此命令。对于贡献者,建议使用 本地开发 说明。
mkdir -p puter/config puter/data
sudo chown -R 1000:1000 puter
wget https://raw.githubusercontent.com/HeyPuter/puter/main/docker-compose.yml
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 构建的。此外,我们希望避免复杂的抽象,并尽可能控制整个栈。
部分灵感来自我们最喜欢的一些非框架构建的项目:VSCode、Photopea 和 OnlyOffice。
❓ 为什么使用 jQuery?
Puter 直接与 DOM 交互,jQuery 提供了一个优雅而强大的 API 来操作 DOM、处理事件等。它也很快、成熟且经过实战考验。