puter/README.md

180 lines
7.0 KiB
Markdown
Raw Normal View History

<h3 align="center"><img width="80" alt="Puter.com, The Personal Cloud Computer: All your files, apps, and games in one place accessible from anywhere at any time." src="https://assets.puter.site/puter-logo.png"></h3>
2024-03-03 02:39:14 +00:00
2024-03-30 23:09:52 +00:00
<h3 align="center">The Internet OS! Free, Open-Source, and Self-Hostable!</h3>
2024-03-03 02:39:14 +00:00
<p align="center">
<a href="https://puter.com/"><strong>« LIVE DEMO »</strong></a>
<br />
<br />
<a href="https://puter.com">Puter.com</a>
·
<a href="https://docs.puter.com" target="_blank">SDK</a>
·
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
·
<a href="https://reddit.com/r/puter">Reddit</a>
·
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
</p>
2024-03-03 07:24:15 +00:00
<h3 align="center"><img width="700" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-2.webp"></h3>
2024-03-03 02:39:14 +00:00
<br/>
2024-03-04 04:46:43 +00:00
## Puter
2024-03-31 04:14:40 +00:00
Puter is an advanced, open-source internet operating system designed to be feature-rich, exceptionally fast, and highly extensible. It can be used to build remote desktop environments or serve as an interface for cloud storage services, remote servers, web hosting platforms, and more.
2024-03-04 04:46:43 +00:00
2024-03-04 06:15:23 +00:00
<br/>
2024-03-03 02:39:14 +00:00
## Getting Started
After reading this section, please proceed to **Self-Hosting** and **Configuration** below.
Read these instructions carefully or you may see errors due to
an invalid setup.
2024-03-07 08:00:42 +00:00
### Local Development
2024-03-03 02:39:14 +00:00
```bash
2024-03-04 06:18:22 +00:00
git clone https://github.com/HeyPuter/puter
cd puter
2024-03-03 02:39:14 +00:00
npm install
npm start
```
2024-03-04 04:46:43 +00:00
This will launch Puter at http://localhost:4000 (or the next available port).
2024-03-03 02:39:14 +00:00
<br/>
2024-03-07 08:00:42 +00:00
### Using Docker
2024-04-02 06:09:36 +00:00
**note:** it is **not** necessary to run this within a clone of this repository. For contributors, it is recommended to use the [Local Development](#local-development) instructions.
2024-03-07 08:00:42 +00:00
```bash
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
```
### Using Docker Compose
2024-04-02 06:09:36 +00:00
**note:** it is **not** necessary to run this within a clone of this repository. For contributors, it is recommended to use the [Local Development](#local-development) instructions.
```bash
mkdir -p puter/config puter/data
sudo chown -R 1000:1000 puter
wget https://raw.githubusercontent.com/HeyPuter/puter/main/docker-compose.yml
2024-03-07 16:50:30 +00:00
docker compose up
2024-03-07 08:00:42 +00:00
```
<br/>
2024-04-01 02:42:11 +00:00
See [Configuration](#configuration) for next steps.
<br/>
2024-03-30 23:08:03 +00:00
## ⚠️ Self-Hosting ⚠️
The self-hosted version of Puter is currently in alpha stage and should not be used in production yet. It is under active development and may contain bugs, other issues. Please exercise caution and use it for testing and evaluation purposes only.
2024-03-03 02:39:14 +00:00
<br/>
2024-04-01 02:42:11 +00:00
## Configuration
Running the server will generate a configuration file in one of these locations:
- `config/config.json` when [Using Docker](#using-docker)
- `volatile/config/config.json` in [Local Development](#local-development)
- `/etc/puter/config.json` on a server (or within a Docker container)
2024-04-01 02:42:11 +00:00
2024-04-01 02:47:13 +00:00
### Domain Name
2024-04-01 02:42:11 +00:00
To access Puter on your device, you can simply go to the address printed in
the server console (usually `puter.localhost:4100`).
To access Puter from another device, a domain name must be configured, as well as
an `api` subdomain. For example, `example.local` might be the domain name pointing
to the IP address of the server running puter, and `api.example.com` must point to
this address as well. This domain must be specified in the configuration file
(usually `volatile/config/config.json`) as well.
See [domain configuration](./doc/self-hosters/domains.md) for more information.
### Configure the Port
- You can specify a custom port by setting `http_port` to a desired value
- If you're using a reverse-proxy such as nginx or cloudflare, you should
also set `pub_port` to the public (external) port (usually `443`)
2024-04-04 23:08:31 +00:00
- If you have HTTPS enabled on your reverse-proxy, ensure that
`protocol` in config.json is set accordingly
2024-04-01 02:47:13 +00:00
### Default User
2024-04-02 04:33:02 +00:00
By default, Puter will create a user called `default_user`.
This user will have a randomly generated password, which will be printed
in the development console.
A warning will persist in the dev console until this user's
2024-04-01 02:47:13 +00:00
password is changed. Please login to this user and change the password as
2024-04-15 07:50:46 +00:00
your first step.
2024-04-01 02:47:13 +00:00
2024-03-03 02:39:14 +00:00
<br/>
2024-04-11 23:40:50 +00:00
## License
2024-04-21 03:34:52 +00:00
This repository is licensed under AGPL-3.0; However, our SDK (puter.js) is also available under Apache 2.0, as indicated by the license file in that section (packages/puter-js) of this repository.
2024-04-11 23:40:50 +00:00
<br/>
2024-03-03 02:39:14 +00:00
## FAQ
### ❓ What's the use case for Puter?
Puter can be used as:
- An alternative to Dropbox, Google Drive, OneDrive, etc. with a fresh interface and powerful features.
2024-03-04 04:46:43 +00:00
- Remote desktop environment for servers and workstations.
2024-03-03 02:39:14 +00:00
- A platform for building and hosting websites, web apps, and games.
- A friendly, open-source project and community to learn about web development, cloud computing, distributed systems, and much more!
2024-03-04 19:53:40 +00:00
<br/>
2024-03-03 02:39:14 +00:00
### ❓ Why isn't Puter built with React, Angular, Vue, etc.?
For performance reasons, Puter is built with vanilla JavaScript and jQuery. Additionally, we'd like to avoid complex abstractions and to remain in control of the entire stack, as much as possible.
Also partly inspired by some of our favorite projects that are not built with frameworks: [VSCode](https://github.com/microsoft/vscode), [Photopea](https://www.photopea.com/), and [OnlyOffice](https://www.onlyoffice.com/).
2024-03-04 19:53:40 +00:00
<br/>
2024-03-03 02:39:14 +00:00
### ❓ Why jQuery?
Puter interacts directly with the DOM and jQuery provides an elegant yet powerful API to manipulate the DOM, handle events, and much more. It's also fast, mature, and battle-tested.
<br/>
2024-03-24 17:46:38 +00:00
## #DoesItRunPuter
2024-03-26 05:53:34 +00:00
- [Minecraft](https://twitter.com/HeyPuter/status/1771957571496092036) | [video](https://www.youtube.com/watch?v=GIowZUXkg5g)
2024-04-20 06:52:41 +00:00
- [Samsung Watch](https://twitter.com/CharmunkDev/status/1781501714543030554)
2024-03-24 17:46:38 +00:00
- [PlayStation 4](https://twitter.com/HeyPuter/status/1767978053014270059)
- [Skyworth TV](https://twitter.com/ericalexdube/status/1767983049277411564)
- [A Fridge!](https://twitter.com/HeyPuter/status/1778890003797745842)
2024-03-24 17:46:38 +00:00
- [Oculus Quest 2](https://twitter.com/HeyPuter/status/1768664081756754012)
2024-03-27 14:47:49 +00:00
- [Tesla Model S](https://twitter.com/HeyPuter/status/1767971178864587057)
- [Tesla Model Y](https://twitter.com/HeyPuter/status/1772858333751636310)
2024-04-17 17:14:10 +00:00
- [Nintendo Switch](https://twitter.com/HeyPuter/status/1780645795240538518)
2024-04-20 06:52:41 +00:00
- [Tesla Model 3](https://twitter.com/EricLighthall/status/1781479732997214501)
2024-03-24 17:46:38 +00:00
2024-03-24 17:50:23 +00:00
<br/>
2024-03-24 17:46:38 +00:00
2024-03-03 02:39:14 +00:00
## Credits
The default wallpaper is created by [Milad Fakurian](https://unsplash.com/photos/blue-orange-and-yellow-wallpaper-E8Ufcyxz514) and published on [Unsplash](https://unsplash.com/).
Icons by [Papirus](https://github.com/PapirusDevelopmentTeam/papirus-icon-theme) under GPL-3.0 license.
Icons by [Iconoir](https://iconoir.com/) under MIT license.
Icons by [Elementary Icons](https://github.com/elementary/icons) under GPL-3.0 license.
Icons by [Tabler Icons](https://tabler.io/) under MIT license.
2024-03-03 03:45:36 +00:00
Icons by [bootstrap-icons](https://icons.getbootstrap.com/) under MIT license.