diff --git a/README.md b/README.md index f66539372..5059c8646 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,45 @@ For detailed guides on self-hosting Puter, including configuration options and b
+### ๐ŸŒŽ 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**](https://puter.com). diff --git a/src/backend/src/routers/signup.js b/src/backend/src/routers/signup.js index f061d66d5..fd5cb6c97 100644 --- a/src/backend/src/routers/signup.js +++ b/src/backend/src/routers/signup.js @@ -66,6 +66,10 @@ module.exports = eggspress(['/signup'], { body: req.body, }); + if( config.registration_closed == true ) { + return res.status(403).send('Registration is closed.'); + } + // check bot trap, if `p102xyzname` is anything but an empty string it means // that a bot has filled the form // doesn't apply to temp users @@ -228,7 +232,7 @@ module.exports = eggspress(['/signup'], { 'UPDATE `user` SET `last_activity_ts` = now() WHERE id=? LIMIT 1', [insert_res.insertId] ); - + // TODO: cache group id const svc_group = req.services.get('group'); await svc_group.add_users({ @@ -348,5 +352,5 @@ module.exports = eggspress(['/signup'], { taskbar_items: await get_taskbar_items(user), referral_code, } - }) + }) });