Added "Installation on public server"
7.1 KiB
The Internet OS! Free, Open-Source, and Self-Hostable.
« LIVE DEMO »
Puter.com
·
SDK
·
Discord
·
YouTube
·
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. 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.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.localost"
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:
- Bug report or feature request? Please open an issue.
- Discord: discord.com/invite/PQcx7Teh8u
- X (Twitter): x.com/HeyPuter
- Reddit: reddit.com/r/puter/
- Mastodon: mastodon.social/@puter
- Security issues? security@puter.com
- Email maintainers at hi@puter.com
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.