puter/README.md
2024-08-25 18:06:21 +02:00

7.1 KiB
Raw Blame History

Puter.com, The Personal Cloud Computer: All your files, apps, and games in one place accessible from anywhere at any time.

The Internet OS! Free, Open-Source, and Self-Hostable.

GitHub repo size GitHub Release GitHub License

« LIVE DEMO »

Puter.com · SDK · Discord · YouTube · Reddit · X (Twitter) · Bug Bounty

screenshot


Puter

Puter is an advanced, open-source internet operating system designed to be feature-rich, exceptionally fast, and highly extensible. Puter can be used as:

  • A privacy-first personal cloud to keep all your files, apps, and games in one secure place, accessible from anywhere at any time.
  • A platform for building and publishing websites, web apps, and games.
  • An alternative to Dropbox, Google Drive, OneDrive, etc. with a fresh interface and powerful features.
  • A remote desktop environment for servers and workstations.
  • A friendly, open-source project and community to learn about web development, cloud computing, distributed systems, and much more!

Getting Started

💻 Local Development

git clone https://github.com/HeyPuter/puter
cd puter
npm install
npm start

This will launch Puter at http://puter.localhost:4100 (or the next available port).


🐳 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

Linux/macOS

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

Windows

mkdir -p puter
cd puter
New-Item -Path "puter\config" -ItemType Directory -Force
New-Item -Path "puter\data" -ItemType Directory -Force
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/HeyPuter/puter/main/docker-compose.yml" -OutFile "docker-compose.yml"
docker compose up

🌎 Installation on public server

Subdomain is puter. Replace "domain.com" with your domain name.

-Create DNS entries for puter.domain.com and api.puter.domain.com, both pointing to the same IP.

-Create apache domain configs for puter.domain.com and api.puter.domain.com and add reverse proxy entries for both subdomains

$ a2enmod proxy $ a2enmod proxy_http

/etc/apache/sites-enabled/--configfile---
ProxyPass / http://localhost:4100/
ProxyPassReverse / http://localhost:4100/

-Edit ./src/backend/src/config.js

Add after let config = {};

config.api_base_url = 'https://api.puter.domain.com';
config.origin='https://puter.domain.com';
config.http_port=443;´
config.pub_port=443;
config.protocol='https';

-Edit ./node_modules/@heyputer/backend/src/services/WebServerService.js and ./src/backend/src/services/WebServerService.js

Search for if (allowedDomains.some(allowedDomain => hostName === and change the line to if (allowedDomains.some(allowedDomain => hostName === "puter.domain.com" || hostName.endsWith('.' + allowedDomain))) {

-Edit ./volatile/config/config.json

Change "domain": "puter.localhost" to "domain": "puter.domain.com"

-Run sed to replace the domain in all remaining files

grep -rl "puter.localhost:4100" . | xargs sed -i 's/puter.localhost:4001/puter.domain.com/g'

☁️ Puter.com

Puter is available as a hosted service at puter.com.


System Requirements

  • Operating Systems: Linux, macOS, Windows
  • RAM: 2GB minimum (4GB recommended)
  • Disk Space: 1GB free space
  • Node.js: Version 16+ (Version 22+ recommended)
  • npm: Latest stable version

Support

Connect with the maintainers and community through these channels:

We are always happy to help you with any questions you may have. Don't hesitate to ask!


License

This repository, including all its contents, sub-projects, modules, and components, is licensed under AGPL-3.0 unless explicitly stated otherwise. Third-party libraries included in this repository may be subject to their own licenses.


Translations