9fc983f54a
/puter/src/UI/UIDesktop.js 44:24 error 'gui_origin' is not defined no-undef 46:25 error 'auth_token' is not defined no-undef 86:5 error 'socket' is not defined no-undef 95:5 error 'socket' is not defined no-undef 104:5 error 'socket' is not defined no-undef 105:43 error 'trash_path' is not defined no-undef 106:45 error 'trash_path' is not defined no-undef 109:49 error 'trash_path' is not defined no-undef 112:5 error 'socket' is not defined no-undef 118:9 error 'launch_apps' is not defined no-undef 121:9 error 'launch_apps' is not defined no-undef 121:39 error 'launch_apps' is not defined no-undef 124:9 error 'launch_apps' is not defined no-undef 124:30 error 'launch_apps' is not defined no-undef 127:5 error 'socket' is not defined no-undef 146:5 error 'socket' is not defined no-undef 153:85 error 'truncate_filename' is not defined no-undef 153:114 error 'TRUNCATE_LENGTH' is not defined no-undef 156:77 error 'item_icon' is not defined no-undef 192:13 error 'update_window_path' is not defined no-undef 199:13 error 'sort_items' is not defined no-undef 203:5 error 'socket' is not defined no-undef 206:9 error 'sendItemChangeEventToWatchingApps' is not defined no-undef 220:25 error 'fsentry.path' is assigned to itself no-self-assign 233:17 error 'update_explorer_footer_item_count' is not defined no-undef 234:17 error 'update_explorer_footer_selected_items_count' is not defined no-undef 239:26 error 'trash_path' is not defined no-undef 249:17 error 'update_window_path' is not defined no-undef 253:26 error 'trash_path' is not defined no-undef 280:25 error 'item_icon' is not defined no-undef 281:34 error 'trash_path' is not defined no-undef 287:39 error 'trash_path' is not defined no-undef 308:37 error 'item_icon' is not defined no-undef 319:17 error 'sort_items' is not defined no-undef 324:13 error 'sort_items' is not defined no-undef 328:5 error 'socket' is not defined no-undef 333:9 error 'refresh_user_data' is not defined no-undef 336:5 error 'socket' is not defined no-undef 341:9 error 'refresh_user_data' is not defined no-undef 344:5 error 'socket' is not defined no-undef 346:9 error 'sendItemChangeEventToWatchingApps' is not defined no-undef 360:85 error 'truncate_filename' is not defined no-undef 360:114 error 'TRUNCATE_LENGTH' is not defined no-undef 363:77 error 'item_icon' is not defined no-undef 398:13 error 'update_window_path' is not defined no-undef 405:13 error 'sort_items' is not defined no-undef 409:5 error 'socket' is not defined no-undef 415:9 error 'sendItemChangeEventToWatchingApps' is not defined no-undef 440:81 error 'item_icon' is not defined no-undef 445:17 error 'sort_items' is not defined no-undef 455:29 error 'item_icon' is not defined no-undef 463:17 error Duplicate key 'associated_app_name' no-dupe-keys 470:17 error 'sort_items' is not defined no-undef 491:42 error 'desktop_path' is not defined no-undef 496:5 error 'getItem' is not defined no-undef 508:8 error 'url_query_params' is not defined no-undef 525:9 error 'update_user_preferences' is not defined no-undef 560:17 error 'upload_items' is not defined no-undef 560:52 error 'desktop_path' is not defined no-undef 577:16 error 'mouseover_window' is not defined no-undef 585:69 error 'desktop_path' is not defined no-undef 613:17 error 'copy_items' is not defined no-undef 613:43 error 'desktop_path' is not defined no-undef 617:17 error 'move_items' is not defined no-undef 617:43 error 'desktop_path' is not defined no-undef 649:39 error 'is_auto_arrange_enabled' is not defined no-undef 651:37 error 'is_auto_arrange_enabled' is not defined no-undef 651:64 error 'is_auto_arrange_enabled' is not defined no-undef 652:37 error 'store_auto_arrange_preference' is not defined no-undef 652:67 error 'is_auto_arrange_enabled' is not defined no-undef 653:40 error 'is_auto_arrange_enabled' is not defined no-undef 654:41 error 'sort_items' is not defined no-undef 655:41 error 'set_sort_by' is not defined no-undef 656:41 error 'clear_desktop_item_positions' is not defined no-undef 658:41 error 'set_desktop_item_positions' is not defined no-undef 668:44 error 'is_auto_arrange_enabled' is not defined no-undef 671:37 error 'sort_items' is not defined no-undef 672:37 error 'set_sort_by' is not defined no-undef 677:44 error 'is_auto_arrange_enabled' is not defined no-undef 680:37 error 'sort_items' is not defined no-undef 681:37 error 'set_sort_by' is not defined no-undef 686:44 error 'is_auto_arrange_enabled' is not defined no-undef 689:37 error 'sort_items' is not defined no-undef 690:37 error 'set_sort_by' is not defined no-undef 695:44 error 'is_auto_arrange_enabled' is not defined no-undef 698:37 error 'sort_items' is not defined no-undef 699:37 error 'set_sort_by' is not defined no-undef 708:44 error 'is_auto_arrange_enabled' is not defined no-undef 712:37 error 'sort_items' is not defined no-undef 713:37 error 'set_sort_by' is not defined no-undef 718:44 error 'is_auto_arrange_enabled' is not defined no-undef 722:37 error 'sort_items' is not defined no-undef 723:37 error 'set_sort_by' is not defined no-undef 757:43 error 'desktop_path' is not defined no-undef 767:35 error 'clipboard' is not defined no-undef 769:32 error 'clipboard_op' is not defined no-undef 770:33 error 'copy_clipboard_items' is not defined no-undef 770:54 error 'desktop_path' is not defined no-undef 771:37 error 'clipboard_op' is not defined no-undef 772:33 error 'move_clipboard_items' is not defined no-undef 780:35 error 'actions_history' is not defined no-undef 782:29 error 'undo_last_action' is not defined no-undef 791:29 error 'init_upload_using_dialog' is not defined no-undef 818:9 error 'is_embedded' is not defined no-undef 911:12 error 'user' is not defined no-undef 922:13 error 'is_embedded' is not defined no-undef 940:8 error 'url_query_params' is not defined no-undef 941:28 error 'url_query_params' is not defined no-undef 943:35 error 'home_path' is not defined no-undef 944:16 error 'url_query_params' is not defined no-undef 945:34 error 'url_query_params' is not defined no-undef 950:29 error 'item_icon' is not defined no-undef 966:13 error 'launch_app' is not defined no-undef 967:23 error 'app_launched_from_url' is not defined no-undef 970:25 error 'app_query_params' is not defined no-undef 1017:40 error 'taskbar_height' is not defined no-undef 1023:40 error 'user' is not defined no-undef 1024:9 error 'getItem' is not defined no-undef 1031:21 error 'setItem' is not defined no-undef 1125:47 error 'user' is not defined no-undef 1128:48 error 'user' is not defined no-undef 1131:25 error 'update_auth_data' is not defined no-undef 1170:37 error 'listSupportedLanguages' is not defined no-undef 1249:29 error 'logout' is not defined no-undef 1253:25 error 'logout' is not defined no-undef 1261:9 error 'is_fullscreen' is not defined no-undef 1308:5 error 'launch_app' is not defined no-undef 1381:9 error 'launch_apps' is not defined no-undef 1460:14 error 'api_origin' is not defined no-undef 1468:40 error 'auth_token' is not defined no-undef 1488:14 error 'toolbar_height' is not defined no-undef 1502:9 error 'reset_window_size_and_position' is not defined no-undef 1513:5 error 'refresh_desktop_background' is not defined no-undef 1520:26 error 'window_border_radius' is not defined no-undef |
||
---|---|---|
.github | ||
doc | ||
incubator/x86emu | ||
packages | ||
src | ||
tools | ||
volatile | ||
.commit | ||
.dockerignore | ||
.env.example | ||
.gitattributes | ||
.gitignore | ||
.is_puter_repository | ||
build.js | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
dev-server.js | ||
docker-compose.yml | ||
Dockerfile | ||
eslint.config.js | ||
exports.js | ||
l_checker_config.json | ||
LICENSE.txt | ||
package-lock.json | ||
package.json | ||
puter-gui.json | ||
README.md | ||
run-selfhosted.js | ||
SECURITY-ACKNOWLEDGEMENTS.md | ||
SECURITY.md | ||
test.txt | ||
utils.js |
The Internet OS! Free, Open-Source, and Self-Hostable.
« LIVE DEMO »
Puter.com
·
SDK
·
Discord
·
Reddit
·
X (Twitter)
·
Bug Bounty
Puter
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.
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.
Local Development
git clone https://github.com/HeyPuter/puter
cd puter
npm install
npm start
This will launch Puter at http://localhost:4000 (or the next available port).
Using Docker
note: it is not necessary to run this within a clone of this repository. For contributors, it is recommended to use the Local Development instructions.
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
note: it is not necessary to run this within a clone of this repository. For contributors, it is recommended to use the Local Development instructions.
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
See Configuration for next steps.
⚠️ 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.
Self-Hosting Differences
Currently, the self-hosted version of Puter is different in a few ways from Puter.com:
- There is no built-in way to install or create other apps (see below)
- Several "core" apps are missing, such as Code or Draw, because we can't include them in this repository
- Some icons are different
Work is ongoing to improve the App Center and make it available on self-hosted.
Until then, it's possible to add other apps by manually editing the database file.
This process is not recommended unless you know what you are doing.
The file will appear after you first launch Puter, and should be found in puter/data/puter-database.sqlite
for Docker,
or volatile/runtime/puter-database.sqlite
otherwise.
You will need a database tool that can understand SQLite databases.
Configuration
Running the server will generate a configuration file in one of these locations:
config/config.json
when Using Dockervolatile/config/config.json
in Local Development/etc/puter/config.json
on a server (or within a Docker container)
Domain Name
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 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 (usually443
) - If you have HTTPS enabled on your reverse-proxy, ensure that
protocol
in config.json is set accordingly
Default User
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
password is changed. Please login to this user and change the password as
your first step.
License
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.
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.
- Remote desktop environment for servers and workstations.
- 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!
❓ 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, Photopea, and OnlyOffice.
❓ 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.
#DoesItRunPuter
- Minecraft | video
- Samsung Watch
- PlayStation 4
- Skyworth TV
- A Fridge!
- Oculus Quest 2
- Tesla Model 3
- Tesla Model S
- Tesla Model Y
- Nintendo Switch
- Steam Deck
Credits
The default wallpaper is created by Milad Fakurian and published on Unsplash.
Icons by Papirus under GPL-3.0 license.
Icons by Iconoir under MIT license.
Icons by Elementary Icons under GPL-3.0 license.
Icons by Tabler Icons under MIT license.
Icons by bootstrap-icons under MIT license.