d39fd8659e
And also add some missing imports. /puter/src/UI/UIWindow.js 33:20 error 'global_element_id' is not defined no-undef 34:5 error 'last_window_zindex' is not defined no-undef 48:5 error 'window_stack' is not defined no-undef 69:52 error 'uuidv4' is not defined no-undef 90:9 error 'is_embedded' is not defined no-undef 174:52 error 'last_window_zindex' is not defined no-undef 174:94 error 'last_window_zindex' is not defined no-undef 244:77 error 'is_embedded' is not defined no-undef 289:57 error 'navbar_path' is not defined no-undef 436:25 error 'launch_app' is not defined no-undef 456:9 error 'window_nav_history' is not defined no-undef 457:9 error 'window_nav_history_current_position' is not defined no-undef 524:9 error 'animate_window_opening' is not defined no-undef 599:17 error 'validate_fsentry_name' is not defined no-undef 790:9 error 'navbar_path_droppable' is not defined no-undef 791:9 error 'sidebar_item_droppable' is not defined no-undef 801:33 error 'window_nav_history' is not defined no-undef 801:63 error 'window_nav_history_current_position' is not defined no-undef 804:46 error 'root_dirname' is not defined no-undef 812:17 error 'window_nav_history_current_position' is not defined no-undef 812:68 error 'window_nav_history_current_position' is not defined no-undef 813:34 error 'window_nav_history' is not defined no-undef 813:64 error 'window_nav_history_current_position' is not defined no-undef 815:17 error 'update_window_path' is not defined no-undef 825:29 error 'window_nav_history_current_position' is not defined no-undef 826:38 error 'window_nav_history' is not defined no-undef 834:25 error 'window_nav_history_current_position' is not defined no-undef 835:42 error 'window_nav_history' is not defined no-undef 835:72 error 'window_nav_history_current_position' is not defined no-undef 840:59 error 'root_dirname' is not defined no-undef 847:29 error 'update_window_path' is not defined no-undef 869:33 error 'window_nav_history' is not defined no-undef 869:63 error 'window_nav_history_current_position' is not defined no-undef 872:46 error 'root_dirname' is not defined no-undef 880:17 error 'window_nav_history_current_position' is not defined no-undef 882:37 error 'window_nav_history' is not defined no-undef 882:67 error 'window_nav_history_current_position' is not defined no-undef 885:21 error 'update_window_path' is not defined no-undef 896:29 error 'window_nav_history_current_position' is not defined no-undef 896:86 error 'window_nav_history' is not defined no-undef 897:38 error 'window_nav_history' is not defined no-undef 905:25 error 'window_nav_history_current_position' is not defined no-undef 906:42 error 'window_nav_history' is not defined no-undef 906:72 error 'window_nav_history_current_position' is not defined no-undef 911:59 error 'root_dirname' is not defined no-undef 918:29 error 'update_window_path' is not defined no-undef 941:50 error 'root_dirname' is not defined no-undef 950:17 error 'window_nav_history' is not defined no-undef 950:46 error 'window_nav_history' is not defined no-undef 950:82 error 'window_nav_history_current_position' is not defined no-undef 951:17 error 'window_nav_history' is not defined no-undef 952:17 error 'window_nav_history_current_position' is not defined no-undef 954:17 error 'update_window_path' is not defined no-undef 968:25 error 'update_window_layout' is not defined no-undef 983:25 error 'update_window_layout' is not defined no-undef 986:25 error 'update_window_layout' is not defined no-undef 997:13 error 'is_auth' is not defined no-undef 1023:13 error 'update_explorer_footer_selected_items_count' is not defined no-undef 1106:21 error 'active_element' is not defined no-undef 1117:13 error 'update_explorer_footer_selected_items_count' is not defined no-undef 1143:18 error 'mouseover_window' is not defined no-undef 1205:82 error 'mouseX' is not defined no-undef 1205:107 error 'mouseY' is not defined no-undef 1219:83 error 'mouseover_window' is not defined no-undef 1244:31 error 'mouseover_window' is not defined no-undef 1246:17 error 'copy_items' is not defined no-undef 1246:45 error 'mouseover_window' is not defined no-undef 1252:21 error 'create_shortcut' is not defined no-undef 1255:27 error 'mouseover_window' is not defined no-undef 1264:17 error 'move_items' is not defined no-undef 1264:45 error 'mouseover_window' is not defined no-undef 1286:13 error 'scale_window' is not defined no-undef 1302:13 error 'scale_window' is not defined no-undef 1359:21 error 'upload_items' is not defined no-undef 1413:47 error 'window_width_threshold_for_sidebar' is not defined no-undef 1414:49 error 'window_width_threshold_for_sidebar' is not defined no-undef 1420:53 error 'window_width_threshold_for_sidebar' is not defined no-undef 1435:17 error 'last_window_zindex' is not defined no-undef 1460:29 error 'current_active_snap_zone' is not defined no-undef 1469:50 error 'current_active_snap_zone' is not defined no-undef 1473:43 error 'desktop_height' is not defined no-undef 1474:40 error 'toolbar_height' is not defined no-undef 1476:44 error 'last_window_zindex' is not defined no-undef 1480:55 error 'current_active_snap_zone' is not defined no-undef 1484:43 error 'desktop_height' is not defined no-undef 1485:40 error 'toolbar_height' is not defined no-undef 1487:44 error 'last_window_zindex' is not defined no-undef 1491:55 error 'current_active_snap_zone' is not defined no-undef 1495:43 error 'desktop_height' is not defined no-undef 1496:40 error 'toolbar_height' is not defined no-undef 1497:41 error 'desktop_width' is not defined no-undef 1498:44 error 'last_window_zindex' is not defined no-undef 1502:55 error 'current_active_snap_zone' is not defined no-undef 1506:43 error 'desktop_height' is not defined no-undef 1507:40 error 'toolbar_height' is not defined no-undef 1510:44 error 'last_window_zindex' is not defined no-undef 1514:55 error 'current_active_snap_zone' is not defined no-undef 1517:42 error 'desktop_width' is not defined no-undef 1518:43 error 'desktop_height' is not defined no-undef 1519:40 error 'toolbar_height' is not defined no-undef 1521:44 error 'last_window_zindex' is not defined no-undef 1525:55 error 'current_active_snap_zone' is not defined no-undef 1528:40 error 'toolbar_height' is not defined no-undef 1528:57 error 'desktop_height' is not defined no-undef 1531:43 error 'desktop_height' is not defined no-undef 1532:44 error 'last_window_zindex' is not defined no-undef 1536:55 error 'current_active_snap_zone' is not defined no-undef 1539:40 error 'toolbar_height' is not defined no-undef 1539:57 error 'desktop_height' is not defined no-undef 1540:41 error 'desktop_width' is not defined no-undef 1542:43 error 'desktop_height' is not defined no-undef 1543:44 error 'last_window_zindex' is not defined no-undef 1559:52 error 'current_active_snap_zone' is not defined no-undef 1590:28 error 'current_active_snap_zone' is not defined no-undef 1592:40 error 'toolbar_height' is not defined no-undef 1595:43 error 'desktop_height' is not defined no-undef 1599:33 error 'current_active_snap_zone' is not defined no-undef 1601:40 error 'toolbar_height' is not defined no-undef 1604:43 error 'desktop_height' is not defined no-undef 1608:33 error 'current_active_snap_zone' is not defined no-undef 1610:40 error 'toolbar_height' is not defined no-undef 1613:43 error 'desktop_height' is not defined no-undef 1617:33 error 'current_active_snap_zone' is not defined no-undef 1619:40 error 'toolbar_height' is not defined no-undef 1619:57 error 'desktop_height' is not defined no-undef 1622:43 error 'desktop_height' is not defined no-undef 1626:33 error 'current_active_snap_zone' is not defined no-undef 1628:40 error 'toolbar_height' is not defined no-undef 1628:57 error 'desktop_height' is not defined no-undef 1629:41 error 'desktop_width' is not defined no-undef 1631:43 error 'desktop_height' is not defined no-undef 1635:33 error 'current_active_snap_zone' is not defined no-undef 1637:40 error 'toolbar_height' is not defined no-undef 1640:43 error 'desktop_height' is not defined no-undef 1644:33 error 'current_active_snap_zone' is not defined no-undef 1645:29 error 'scale_window' is not defined no-undef 1656:51 error 'window_width_threshold_for_sidebar' is not defined no-undef 1657:53 error 'window_width_threshold_for_sidebar' is not defined no-undef 1663:57 error 'window_width_threshold_for_sidebar' is not defined no-undef 1674:71 error 'taskbar_height' is not defined no-undef 1676:51 error 'taskbar_height' is not defined no-undef 1703:35 error 'window_width_threshold_for_sidebar' is not defined no-undef 1718:36 error 'window_width_threshold_for_sidebar' is not defined no-undef 1719:49 error 'window_width_threshold_for_sidebar' is not defined no-undef 1725:42 error 'window_width_threshold_for_sidebar' is not defined no-undef 1733:50 error 'toolbar_height' is not defined no-undef 1734:38 error 'toolbar_height' is not defined no-undef 1736:32 error 'toolbar_height' is not defined no-undef 1773:13 error 'setItem' is not defined no-undef 1820:21 error 'scale_window' is not defined no-undef 1867:51 error 'trash_path' is not defined no-undef 1881:41 error 'sort_items' is not defined no-undef 1882:41 error 'set_sort_by' is not defined no-undef 1889:41 error 'sort_items' is not defined no-undef 1890:41 error 'set_sort_by' is not defined no-undef 1897:41 error 'sort_items' is not defined no-undef 1898:41 error 'set_sort_by' is not defined no-undef 1905:41 error 'sort_items' is not defined no-undef 1906:41 error 'set_sort_by' is not defined no-undef 1918:41 error 'sort_items' is not defined no-undef 1919:41 error 'set_sort_by' is not defined no-undef 1927:41 error 'sort_items' is not defined no-undef 1928:41 error 'set_sort_by' is not defined no-undef 1973:40 error 'clipboard' is not defined no-undef 1975:36 error 'clipboard_op' is not defined no-undef 1976:37 error 'copy_clipboard_items' is not defined no-undef 1977:41 error 'clipboard_op' is not defined no-undef 1978:37 error 'move_clipboard_items' is not defined no-undef 1986:39 error 'actions_history' is not defined no-undef 1988:33 error 'undo_last_action' is not defined no-undef 1998:33 error 'init_upload_using_dialog' is not defined no-undef 2014:48 error 'UIWindowSaveAccount' is not defined no-undef 2023:85 error 'UIWindowEmailConfirmationRequired' is not defined no-undef 2036:33 error 'launch_app' is not defined no-undef 2059:44 error 'mouseX' is not defined no-undef 2063:43 error 'mouseY' is not defined no-undef 2102:68 error 'trash_path' is not defined no-undef 2103:37 error 'delete_item' is not defined no-undef 2110:67 error 'trash_path' is not defined no-undef 2110:128 error 'trash_path' is not defined no-undef 2146:21 error 'upload_items' is not defined no-undef 2163:13 error 'enter_fullpage_mode' is not defined no-undef 2173:8 error 'active_element' is not defined no-undef 2174:9 error 'active_element' is not defined no-undef 2195:25 error 'item_icon' is not defined no-undef 2210:9 error 'window_nav_history' is not defined no-undef 2210:45 error 'window_nav_history' is not defined no-undef 2210:88 error 'window_nav_history_current_position' is not defined no-undef 2211:9 error 'window_nav_history' is not defined no-undef 2212:9 error 'window_nav_history_current_position' is not defined no-undef 2214:9 error 'update_window_path' is not defined no-undef 2257:37 error 'item_icon' is not defined no-undef 2364:9 error 'update_window_path' is not defined no-undef 2380:38 error 'root_dirname' is not defined no-undef 2389:9 error 'window_nav_history' is not defined no-undef 2389:45 error 'window_nav_history' is not defined no-undef 2389:88 error 'window_nav_history_current_position' is not defined no-undef 2390:9 error 'window_nav_history' is not defined no-undef 2391:9 error 'window_nav_history_current_position' is not defined no-undef 2391:62 error 'window_nav_history' is not defined no-undef 2392:9 error 'update_window_path' is not defined no-undef 2436:59 error 'root_dirname' is not defined no-undef 2453:19 error 'clipboard' is not defined no-undef 2455:16 error 'clipboard_op' is not defined no-undef 2456:17 error 'copy_clipboard_items' is not defined no-undef 2457:21 error 'clipboard_op' is not defined no-undef 2458:17 error 'move_clipboard_items' is not defined no-undef 2484:18 error 'mouseover_window' is not defined no-undef 2503:21 error 'create_shortcut' is not defined no-undef 2515:17 error 'move_items' is not defined no-undef 2525:18 error 'mouseover_window' is not defined no-undef 2605:12 error 'window_nav_history' is not defined no-undef 2605:42 error 'window_nav_history' is not defined no-undef 2605:84 error 'window_nav_history_current_position' is not defined no-undef 2612:12 error 'window_nav_history_current_position' is not defined no-undef 2626:55 error 'navbar_path' is not defined no-undef 2687:17 error 'update_window_layout' is not defined no-undef 2690:21 error 'update_details_layout_sort_visuals' is not defined no-undef 2698:13 error 'update_window_path' is not defined no-undef 2707:54 error 'root_dirname' is not defined no-undef 2712:9 error 'navbar_path_droppable' is not defined no-undef 2715:5 error 'update_explorer_footer_selected_items_count' is not defined no-undef 2727:18 error 'mouseover_window' is not defined no-undef 2746:21 error 'create_shortcut' is not defined no-undef 2758:17 error 'move_items' is not defined no-undef 2768:18 error 'mouseover_window' is not defined no-undef 2807:36 error 'sendWindowWillCloseMsg' is not defined no-undef 2819:23 error 'window_stack' is not defined no-undef 2829:17 error 'remove_taskbar_item' is not defined no-undef 2836:17 error 'exit_fullpage_mode' is not defined no-undef 2853:31 error 'window_stack' is not defined no-undef 2854:73 error 'window_stack' is not defined no-undef 2854:86 error 'window_stack' is not defined no-undef 2857:47 error 'window_stack' is not defined no-undef 2857:60 error 'window_stack' is not defined no-undef 2916:22 error 'window_stack' is not defined no-undef 2924:13 error 'active_item_container' is not defined no-undef 2949:20 error 'toolbar_height' is not defined no-undef 3007:14 error 'api_origin' is not defined no-undef 3017:40 error 'auth_token' is not defined no-undef 3021:17 error 'logout' is not defined no-undef 3083:43 error 'last_window_zindex' is not defined no-undef 3123:38 error 'last_window_zindex' is not defined no-undef 3127:98 error 'last_window_zindex' is not defined no-undef 3131:100 error 'last_window_zindex' is not defined no-undef 3147:81 error 'mouseX' is not defined no-undef 3147:106 error 'mouseY' is not defined no-undef 3151:9 error 'active_item_container' is not defined no-undef 3153:34 error 'active_item_container' is not defined no-undef 3155:9 error 'window_stack' is not defined no-undef 3157:11 error 'active_item_container' is not defined no-undef 3252:5 error 'sort_items' is not defined no-undef 3253:5 error 'set_sort_by' is not defined no-undef 3258:14 error 'api_origin' is not defined no-undef 3267:40 error 'auth_token' is not defined no-undef 3271:17 error 'logout' is not defined no-undef 3280:21 error 'update_details_layout_sort_visuals' 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.