mirror of
https://github.com/HeyPuter/puter.git
synced 2026-11-13 20:12:57 -10:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
511cbcf054 |
No files matched your search
@@ -1 +0,0 @@
|
||||
github: ['HeyPuter']
|
||||
@@ -0,0 +1,25 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Issue Description**
|
||||
|
||||
**Steps to Reproduce**
|
||||
|
||||
**Expected & Actual Behavior**
|
||||
|
||||
**Addition Information or Screenshots (if applicable)**
|
||||
|
||||
**Deployment**
|
||||
- [ ] Production (puter.com)
|
||||
- [ ] Development (`npm run start`)
|
||||
- [ ] Docker (via `docker run`)
|
||||
- [ ] Docker (via `docker-compose`)
|
||||
|
||||
**Puter version (if accessible)**
|
||||
> Click the profile button on the top-right, then "Settings". The version number will be printed at the bottom
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for Puter
|
||||
title: ''
|
||||
labels: idea
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
name: Idea for Improvement
|
||||
about: An enhancement for an existing feature on Puter
|
||||
title: ''
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
|
||||
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs
|
||||
|
||||
name: Node.js CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "main" ]
|
||||
pull_request:
|
||||
branches: [ "main" ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [20.x, 21.x, 22.x]
|
||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
- run: npm ci
|
||||
- run: npm run build --if-present
|
||||
- run: npm test
|
||||
@@ -1,18 +0,0 @@
|
||||
name: Notify HeyPuter
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
notify:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Trigger heyputer build
|
||||
run: |
|
||||
curl -X POST \
|
||||
-H "Authorization: token ${{ secrets.HEYPUTER_DISPATCH_TOKEN }}" \
|
||||
-H "Accept: application/vnd.github.v3+json" \
|
||||
https://api.github.com/repos/HeyPuter/heyputer/dispatches \
|
||||
-d '{"event_type":"puter-main-updated","client_payload":{"puter_ref":"main"}}'
|
||||
@@ -1,94 +0,0 @@
|
||||
name: test
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["main"]
|
||||
paths-ignore:
|
||||
- "src/docs/**"
|
||||
pull_request:
|
||||
branches: ["main"]
|
||||
paths-ignore:
|
||||
- "src/docs/**"
|
||||
|
||||
jobs:
|
||||
test-backend:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [24.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
|
||||
- name: Backend Tests (with coverage)
|
||||
env:
|
||||
NODE_OPTIONS: "--max-old-space-size=4096"
|
||||
run: |
|
||||
npm ci
|
||||
npm run build
|
||||
npm run test:backend -- --coverage --coverage.reporter=json --coverage.reporter=json-summary --coverage.reporter=lcov
|
||||
|
||||
- name: Upload backend coverage report
|
||||
if: ${{ always() && hashFiles('coverage/**/coverage-summary.json') != '' }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: backend-coverage-${{ matrix.node-version }}
|
||||
path: coverage
|
||||
retention-days: 5
|
||||
|
||||
api-test:
|
||||
name: API tests (node env, api-test)
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [24.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
|
||||
- name: API Test
|
||||
run: |
|
||||
pip install -r ./tests/ci/requirements.txt
|
||||
./tests/ci/api-test.py
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
if: ${{ !cancelled() }}
|
||||
with:
|
||||
name: (api-test) server-logs
|
||||
path: /tmp/backend.log
|
||||
retention-days: 3
|
||||
|
||||
vitest:
|
||||
name: puterjs (node env, vitest)
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [24.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
|
||||
- name: Vitest Test
|
||||
run: |
|
||||
pip install -r ./tests/ci/requirements.txt
|
||||
./tests/ci/vitest.py
|
||||
+1
-38
@@ -16,6 +16,7 @@ dist/
|
||||
.vscode/**/*
|
||||
!.vscode/extensions.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
|
||||
# Local env files
|
||||
@@ -25,41 +26,3 @@ dist/
|
||||
# this is for jetbrain IDEs
|
||||
.idea/
|
||||
/puter
|
||||
|
||||
# Local Netlify folder
|
||||
.netlify
|
||||
src/emulator/release/
|
||||
|
||||
# ======================================================================
|
||||
# vscode
|
||||
# ======================================================================
|
||||
# vscode configuration
|
||||
.vscode/
|
||||
|
||||
# JS language server, ref: https://code.visualstudio.com/docs/languages/jsconfig
|
||||
jsconfig.json
|
||||
|
||||
# ======================================================================
|
||||
# playwright test (currently only test the file-system)
|
||||
# ======================================================================
|
||||
tests/client-config.yaml
|
||||
|
||||
# ======================================================================
|
||||
# python
|
||||
# ======================================================================
|
||||
__pycache__/
|
||||
|
||||
# ======================================================================
|
||||
# other
|
||||
# ======================================================================
|
||||
# AI STUFF
|
||||
AGENTS.md
|
||||
.roo
|
||||
|
||||
# source maps
|
||||
*.map
|
||||
|
||||
|
||||
coverage/
|
||||
*.log
|
||||
undefined
|
||||
-12
@@ -1,12 +0,0 @@
|
||||
[submodule "submodules/v86"]
|
||||
path = submodules/v86
|
||||
url = [email protected]:HeyPuter/v86.git
|
||||
[submodule "submodules/twisp"]
|
||||
path = submodules/twisp
|
||||
url = [email protected]:MercuryWorkshop/twisp.git
|
||||
[submodule "submodules/epoxy-tls"]
|
||||
path = submodules/epoxy-tls
|
||||
url = [email protected]:MercuryWorkshop/epoxy-tls.git
|
||||
[submodule "submodules/wiki"]
|
||||
path = submodules/wiki
|
||||
url = https://github.com/HeyPuter/puter.wiki.git
|
||||
@@ -1,13 +0,0 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
tmpfile="$(mktemp)"
|
||||
git diff --cached --name-only -z --diff-filter=ACMR -- \
|
||||
'*.js' '*.mjs' '*.cjs' '*.jsx' '*.ts' '*.tsx' '*.vue' \
|
||||
> "$tmpfile"
|
||||
|
||||
if [ -s "$tmpfile" ]; then
|
||||
xargs -0 eslint --fix < "$tmpfile" || true
|
||||
xargs -0 git add < "$tmpfile"
|
||||
fi
|
||||
|
||||
rm -f "$tmpfile"
|
||||
@@ -1,57 +0,0 @@
|
||||
# To learn more about how to use Nix to configure your environment
|
||||
# see: https://developers.google.com/idx/guides/customize-idx-env
|
||||
{ pkgs, ... }: {
|
||||
# Which nixpkgs channel to use.
|
||||
channel = "stable-25.05"; # or "unstable"
|
||||
|
||||
# Use https://search.nixos.org/packages to find packages
|
||||
packages = [
|
||||
pkgs.python3
|
||||
pkgs.nodejs_24
|
||||
];
|
||||
|
||||
# Sets environment variables in the workspace
|
||||
env = {};
|
||||
idx = {
|
||||
# Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
|
||||
extensions = [
|
||||
# "vscodevim.vim"
|
||||
];
|
||||
|
||||
# Enable previews and customize configuration
|
||||
previews = {
|
||||
# Currently disabled because the preview system wasn't working
|
||||
enable = false;
|
||||
previews = {
|
||||
web = {
|
||||
command = [
|
||||
"npm"
|
||||
"run"
|
||||
"start"
|
||||
"--"
|
||||
"--port"
|
||||
"$PORT"
|
||||
"--host"
|
||||
"0.0.0.0"
|
||||
"--disable-host-check"
|
||||
];
|
||||
manager = "web";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Workspace lifecycle hooks
|
||||
workspace = {
|
||||
# Runs when a workspace is first created
|
||||
onCreate = {
|
||||
# npm-install = "npm install";
|
||||
# Currently disabled because the preview system wasn't working
|
||||
};
|
||||
# Runs when the workspace is (re)started
|
||||
onStart = {
|
||||
# npm-install = "npm install";
|
||||
# Currently disabled because the preview system wasn't working
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 72 KiB |
@@ -1,3 +0,0 @@
|
||||
node_modules
|
||||
dist
|
||||
build
|
||||
@@ -1,66 +0,0 @@
|
||||
# Puter Bug Bounty Program
|
||||
|
||||
We at **Puter** are committed to maintaining a secure experience for our users and community. We greatly value the contributions of security researchers and welcome responsible disclosure of security issues.
|
||||
|
||||
## Scope
|
||||
|
||||
The following are in scope for this program:
|
||||
|
||||
* **The Puter open-source project** (available at [github.com/HeyPuter](https://github.com/HeyPuter/puter))
|
||||
* **`puter.com`**
|
||||
* **`api.puter.com`**
|
||||
|
||||
Out-of-scope:
|
||||
|
||||
* Third-party services, applications, or libraries not maintained by Puter.
|
||||
* Social engineering attacks (e.g., phishing against staff).
|
||||
* Denial of Service (DoS), spam, or volumetric attacks.
|
||||
* Physical security issues.
|
||||
|
||||
## Rules of Engagement
|
||||
|
||||
To participate, you must:
|
||||
|
||||
1. **Report responsibly**: Provide detailed steps to reproduce the issue, including proof-of-concept code or screenshots where applicable.
|
||||
2. **Do no harm**: Do not exfiltrate, modify, or delete data. Only access your own account or test data.
|
||||
3. **Respect availability**: Do not perform denial-of-service attacks or automated scans that degrade service.
|
||||
4. **Follow disclosure policy**: Do not publicly disclose vulnerabilities until we have confirmed and patched the issue.
|
||||
5. **Act in good faith**: Make every effort to avoid privacy violations, destruction of data, and interruption or degradation of services.
|
||||
|
||||
Reports that do not meet these guidelines may not be eligible for a reward.
|
||||
|
||||
## Reporting Process
|
||||
|
||||
To report a vulnerability, email us at: **[[email protected]](mailto:[email protected])**.
|
||||
Include:
|
||||
|
||||
* A description of the vulnerability
|
||||
* Steps to reproduce
|
||||
* Potential impact
|
||||
* Suggested remediation (if available)
|
||||
|
||||
We aim to acknowledge receipt within **72 hours** and provide a resolution timeline.
|
||||
|
||||
## Reward Structure
|
||||
|
||||
We offer monetary rewards based on the severity of the vulnerability, as determined by our internal assessment (using CVSS as a guide).
|
||||
|
||||
* **Critical: \$1,000 – \$2,000**
|
||||
* **High: \$500 – \$1,000**
|
||||
* **Medium: \$200 – \$500**
|
||||
* **Low: \$50 – \$100**
|
||||
|
||||
Non-security issues, suggestions, and best practices feedback are always welcome, but may not qualify for a reward.
|
||||
If multiple researchers report the same issue, the bounty will be awarded to the first eligible report we receive.
|
||||
|
||||
## Payments Disclaimer
|
||||
|
||||
All reward amounts are **guidelines only**. Final decisions about eligibility, severity classification, and payout amount are made at the sole discretion of the Puter security team. We reserve the right to determine whether a report qualifies for a bounty, and whether any payment will be issued at all. Submitting a report does not guarantee compensation.
|
||||
|
||||
### Payment Method Requirement
|
||||
|
||||
At this time, **payments will only be made via PayPal**. To be eligible to receive a bounty, researchers must have a valid PayPal account capable of receiving payments. We are unable to process payments through other services or methods at this time.
|
||||
|
||||
## Legal Safe Harbor
|
||||
|
||||
If you make a good-faith effort to comply with this policy, we will consider your research to be authorized. If you inadvertently access data outside your own account, stop immediately and include details in your report so we can investigate and remediate.
|
||||
+245
@@ -0,0 +1,245 @@
|
||||
# Changelog
|
||||
|
||||
## v2.4.1 (2024-07-11)
|
||||
|
||||
### Puter
|
||||
|
||||
|
||||
#### Features
|
||||
|
||||
- update BR translation ([42a6b39](https://github.com/HeyPuter/puter/commit/42a6b3938a588b8b4d1bd976c37e9c6e58408c75))
|
||||
- JSON support for kv driver ([3ed7916](https://github.com/HeyPuter/puter/commit/3ed7916856f03eafbe0891f2ab39c34d20d2bd24))
|
||||
|
||||
#### Translations
|
||||
|
||||
- Update bn.js file formatting ([cff488f](https://github.com/HeyPuter/puter/commit/cff488f4f4378ca6c7568a585a665f2a3b87b89c))
|
||||
- Issue#530 - Update bengali translations ([92abc99](https://github.com/HeyPuter/puter/commit/92abc9947f811f94f17a5ee5a4b73ee2b210900a))
|
||||
- Added missing Romanian translations. ([8440f56](https://github.com/HeyPuter/puter/commit/8440f566b91c9eb4f01addcb850061e3fbe3afc7))
|
||||
- Add 2FA Romanian translations ([473b651](https://github.com/HeyPuter/puter/commit/473b6512c697854e3f3badae1eb7b87742954da5))
|
||||
- Add Japanese Translation ([47ec74f](https://github.com/HeyPuter/puter/commit/47ec74f0aa6adb3952e6460909029a4acb0c3039))
|
||||
- Completing Italian translation based on English file ([f5a8ee1](https://github.com/HeyPuter/puter/commit/f5a8ee1c6ab950d62c90b6257791f026a508b4e4))
|
||||
- Completing Italian translation based on English file. ([a96abb5](https://github.com/HeyPuter/puter/commit/a96abb5793528d0dc56d75f95d771e1dcf5960d1))
|
||||
- Completing Arabic translation based on English file ([78a0ace](https://github.com/HeyPuter/puter/commit/78a0acea6980b6d491da4874edbd98e17c0d9577))
|
||||
- Update Arabic translations in src/gui/src/i18n/translations/ar.js to match English version in src/gui/src/i18n/translations/en.js ([fe5be7f](https://github.com/HeyPuter/puter/commit/fe5be7f3cf7f336730137293ba86a637e8d8591d))
|
||||
- Update Arabic translations in src/gui/src/i18n/translations/ar.js to match English version in src/gui/src/i18n/translations/en.js ([bffa192](https://github.com/HeyPuter/puter/commit/bffa192805216fc17045cd8d629f34784dca7f3f))
|
||||
- Ukrainian updated ([e61039f](https://github.com/HeyPuter/puter/commit/e61039faf409b0ad85c7513b0123f3f2e92ebe32))
|
||||
- Update ru.js issue #547 ([17145d0](https://github.com/HeyPuter/puter/commit/17145d0be6a9a1445947cc0c4bec8f16a475144c))
|
||||
- Russian translation fixed ([8836011](https://github.com/HeyPuter/puter/commit/883601142873f10d69c84874499065a7d29af054))
|
||||
|
||||
#### Bug Fixes
|
||||
|
||||
- remove flag that breaks puter-js webpack ([7aadae5](https://github.com/HeyPuter/puter/commit/7aadae58ce1a51f925bf64c3d65ac1fa6971b164))
|
||||
- Improve `getMimeType` to remove trailing dot in the extension if preset ([535475b](https://github.com/HeyPuter/puter/commit/535475b3c36a37e3319ed067a24fb671790dcda3))
|
||||
|
||||
|
||||
## 2.4.0 (2024-07-08)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add (pt-br) translation for system settings. ([77211c4](https://github.com/HeyPuter/puter/commit/77211c4f71b0285fb3060f7e5c8d493b4d7c4f0c))
|
||||
* add /group/list endpoint ([d55f38c](https://github.com/HeyPuter/puter/commit/d55f38ca68899c3574cfe328d2b206b1143ff0d4))
|
||||
* add /share/file-by-username endpoint ([5d214c7](https://github.com/HeyPuter/puter/commit/5d214c7b52887b594af6be497f1892baf7d77679))
|
||||
* add /sharelink/request endpoint ([742f625](https://github.com/HeyPuter/puter/commit/742f625309f9f4cfa70cf7d2fe5b03fd164913ea))
|
||||
* add /show urls ([079e25a](https://github.com/HeyPuter/puter/commit/079e25a9fe8e179f26d72378856058eb656e2314))
|
||||
* add app metadata ([f7216b9](https://github.com/HeyPuter/puter/commit/f7216b95672b38802b288ef5b022e947017ff311))
|
||||
* add appdata permission (if applicable) on app share ([9751fd9](https://github.com/HeyPuter/puter/commit/9751fd92a50e75385cffed0ca847d5076ba98c92))
|
||||
* add cookie for site token ([a813fbb](https://github.com/HeyPuter/puter/commit/a813fbbb88bcfb8b9a61976e2a4fc4aab943fc88))
|
||||
* add cross-server event broadcasting ([1207a15](https://github.com/HeyPuter/puter/commit/1207a158bdc88a90b14d31d03387ce353c176a9c))
|
||||
* add debug mod ([16b1649](https://github.com/HeyPuter/puter/commit/16b1649ff62fd87a4dda5d2e1c68941c864c5da4))
|
||||
* add endpoints for share tokens ([301ffaf](https://github.com/HeyPuter/puter/commit/301ffaf61dbb4fca1a855650ab80707ae6d9f602))
|
||||
* Add exit status code to apps ([7674da4](https://github.com/HeyPuter/puter/commit/7674da4cd225bcad34079251c5600fc32e32248b))
|
||||
* add external mod loading ([eb05fbd](https://github.com/HeyPuter/puter/commit/eb05fbd2dc4877553b5118a069a9afdc32bea137))
|
||||
* add group management endpoints ([4216346](https://github.com/HeyPuter/puter/commit/4216346384d90dcba429dbcb175e6f86482d19f4))
|
||||
* add group permission endpoints ([c374b0c](https://github.com/HeyPuter/puter/commit/c374b0cbca761e7c8a47d56a09551f2e9378066a))
|
||||
* add mark-read endpoint ([0101f42](https://github.com/HeyPuter/puter/commit/0101f425d480705c20df4919a76f66e987f5790f))
|
||||
* add permission rewriter for app by name ([16c4907](https://github.com/HeyPuter/puter/commit/16c4907be592dae31ed3c1aa3fac3b9655255d6f))
|
||||
* add protected apps ([f2f3d6f](https://github.com/HeyPuter/puter/commit/f2f3d6ff460932698fb8da7309fbce3e96132950))
|
||||
* add protected subdomains ([86fca17](https://github.com/HeyPuter/puter/commit/86fca17fb17c0c24397c29b49b133deadea1de8b))
|
||||
* add querystring-informed errors ([e7c0b83](https://github.com/HeyPuter/puter/commit/e7c0b8320a6829315d9154d6d513bab4491c47ea))
|
||||
* add readdir delegate for shares in a user directory ([8424d44](https://github.com/HeyPuter/puter/commit/8424d446099ac30ccf829c57d43eef1f235618e4))
|
||||
* add readdir delegate for sharing user homedirs ([19a5eb0](https://github.com/HeyPuter/puter/commit/19a5eb00763f3ac31df8483fb59cb7a96c448745))
|
||||
* add service for notifications ([a1e6887](https://github.com/HeyPuter/puter/commit/a1e6887bf93da21b9482040b3e30ee083fb23477))
|
||||
* add service to test file share logic ([332371f](https://github.com/HeyPuter/puter/commit/332371fccb198462948a440419adc7a26d671a23))
|
||||
* add share list to stat ([8c49ba2](https://github.com/HeyPuter/puter/commit/8c49ba2553ce6bee20eb5b6f2721bc80f639e98a))
|
||||
* add share service and share-by-email to /share ([db5990a](https://github.com/HeyPuter/puter/commit/db5990a98935817c0e16d30e921bb99c57a98fc8))
|
||||
* add subdomain permission (if applicable) on app share ([13e2f72](https://github.com/HeyPuter/puter/commit/13e2f72c9f33f485570f13f45341246b1a05879f))
|
||||
* add user-group permission check ([0014940](https://github.com/HeyPuter/puter/commit/00149402e041443aa3ac571fbe97a9a85f95564b))
|
||||
* **backend:** add script service ([30550fc](https://github.com/HeyPuter/puter/commit/30550fcddda18469735499546de502d29b85e2ad))
|
||||
* **backend:** Add tab completion to server console command arguments ([fa81dca](https://github.com/HeyPuter/puter/commit/fa81dca9507b7fa0f82099b75f2ab89c865626ac))
|
||||
* **backend:** Add tab-completion to server console command names ([e1e76c6](https://github.com/HeyPuter/puter/commit/e1e76c6be71fdeb3b6246307b626734d8dc26f86))
|
||||
* **backend:** add tip of day ([2d8e624](https://github.com/HeyPuter/puter/commit/2d8e6240c61dc6301f49cbdcd1c3b04736f9ca93))
|
||||
* **backend:** allow services to provide user properties ([522664d](https://github.com/HeyPuter/puter/commit/522664d415c33342500defec309c2ff15bc94804))
|
||||
* **backend:** allow services to provide whoami values ([fccabf1](https://github.com/HeyPuter/puter/commit/fccabf1bc0c4418f3599222616dd63bf98c14fe1))
|
||||
* **backend:** improve logger and reduce logs ([4bdad75](https://github.com/HeyPuter/puter/commit/4bdad75766d0617a164024b39b79bf5373c495a6))
|
||||
* Display app icon and description in embeds ([ef298ce](https://github.com/HeyPuter/puter/commit/ef298ce3aa3ce90224e883fb0ba33f9cd3a3da44))
|
||||
* get first test working on share-test service ([88d6bee](https://github.com/HeyPuter/puter/commit/88d6bee9546f36d689c53ec7fe95f01f772f5211))
|
||||
* **git:** Add --color and --no-color options ([d6dd1a5](https://github.com/HeyPuter/puter/commit/d6dd1a5bb0a2b2bba2cfe86d2e51ff2a6e42841c))
|
||||
* **git:** Add a --debug option, which sets the DEBUG global ([fa3df72](https://github.com/HeyPuter/puter/commit/fa3df72f6ed2d45a440ebc2aacbbae67bf042478))
|
||||
* **git:** Add authentication to clone, fetch, and pull. ([364d580](https://github.com/HeyPuter/puter/commit/364d580ff896691ee70d3735f495c720651a9f41))
|
||||
* **git:** Add diff display to `show` and `log` subcommands ([3cad1ec](https://github.com/HeyPuter/puter/commit/3cad1ec436f99a78f782ab9576325d4341284964))
|
||||
* **git:** Add start-revision and file arguments to `git log` ([49c2f16](https://github.com/HeyPuter/puter/commit/49c2f163515d2130c17a6f6a6a16bc27ea69336a))
|
||||
* **git:** Allow checking out a commit instead of a branch ([057b3ac](https://github.com/HeyPuter/puter/commit/057b3acf00af49c005b9bf7069c5d22983a32e1e))
|
||||
* **git:** Color output for `git status` files ([bab5204](https://github.com/HeyPuter/puter/commit/bab5204209aa2efc0c053643677a78db6ede0929))
|
||||
* **git:** Display file contents as a string for `git show FILE_OID` ([a680371](https://github.com/HeyPuter/puter/commit/a68037111a04580cfa2688694a68ef6ac7a495fa))
|
||||
* **git:** Display ref names in `git log` and `git show` ([45cdfcb](https://github.com/HeyPuter/puter/commit/45cdfcb5bfa66937b33054a127e0b17001f3faa4))
|
||||
* **git:** Format output closer to canonical git ([60976b1](https://github.com/HeyPuter/puter/commit/60976b1ed61984d9d290f3a0ae99dd97632e9909))
|
||||
* **git:** Handle detached HEAD in `git status` and `git branch --list` ([2c9b1a3](https://github.com/HeyPuter/puter/commit/2c9b1a3ffc3d5e282ffe5b83a86314e99445bbc6))
|
||||
* **git:** Implement `git branch` ([ad4f132](https://github.com/HeyPuter/puter/commit/ad4f13255d52f8226f22800c16b388cf0e6384d7))
|
||||
* **git:** Implement `git checkout` ([35e4453](https://github.com/HeyPuter/puter/commit/35e4453930bc4e151887f83c97efec19cc15da70))
|
||||
* **git:** Implement `git cherry-pick` ([2e4259d](https://github.com/HeyPuter/puter/commit/2e4259d267b3cfafd5cefc57a02643c6432fec4d))
|
||||
* **git:** Implement `git clone` ([95c8235](https://github.com/HeyPuter/puter/commit/95c8235a4a1fea39a46c40df04cb1004a2fe7b23))
|
||||
* **git:** Implement `git diff` ([622b6a9](https://github.com/HeyPuter/puter/commit/622b6a9b921c3c03efc0b519c9a26c6701d80e50))
|
||||
* **git:** Implement `git fetch` ([98a4b9e](https://github.com/HeyPuter/puter/commit/98a4b9ede39b94c0c6b6b8345d7551359961186a))
|
||||
* **git:** Implement `git pull` ([eb2b6a0](https://github.com/HeyPuter/puter/commit/eb2b6a08b03cee0612885412cd4b03c9564044e3))
|
||||
* **git:** Implement `git push` ([8c70229](https://github.com/HeyPuter/puter/commit/8c70229a188b743220db076a740a992fd7971301))
|
||||
* **git:** Implement `git remote` ([43ce0d5](https://github.com/HeyPuter/puter/commit/43ce0d5b45d4eb4f296afcaaa1ecadc125c53e89))
|
||||
* **git:** Implement `git restore` ([4ba8a32](https://github.com/HeyPuter/puter/commit/4ba8a32b45d395f28433572db5644d630776789e))
|
||||
* **git:** Make `git add` work for deleted files ([9551544](https://github.com/HeyPuter/puter/commit/955154468f48e45028dad2e916708d6a763affad))
|
||||
* **git:** Make shorten_hash() guaranteed to produce a unique hash ([dd10a37](https://github.com/HeyPuter/puter/commit/dd10a377493c0d8f10a1ac8779dc27f3f3bf6c37))
|
||||
* **git:** Resolve more forms of commit reference ([b6906bb](https://github.com/HeyPuter/puter/commit/b6906bbcaaa50fc8a8c60beb6d2d38bcb7dda758))
|
||||
* **git:** Understand references like `HEAD^` and `main~3` ([711dbc0](https://github.com/HeyPuter/puter/commit/711dbc0d2fde9c2ddc6c86f64fb4caa7837c9dcb))
|
||||
* implicit access from apps to shared appdata dirs ([31d4eb0](https://github.com/HeyPuter/puter/commit/31d4eb090efb340fdfb7cb6b751145e859624eeb))
|
||||
* introduce notification selection via driver ([c5334b0](https://github.com/HeyPuter/puter/commit/c5334b0e19cf9762f536ec482c3ff872e9c12399))
|
||||
* multi-recipient multi-file share endpoint ([846fdc2](https://github.com/HeyPuter/puter/commit/846fdc20d4a887a1f8a4f3bda4fafe41efab2733))
|
||||
* **parsely:** Add a fail() parser ([5656d9d](https://github.com/HeyPuter/puter/commit/5656d9d42f76202a534ad640d3a4e287e0e40418))
|
||||
* **parsely:** Add stringUntil() parser ([d46b043](https://github.com/HeyPuter/puter/commit/d46b043c5d16f1205d61de3f3ba43ed8ad7bff93))
|
||||
* **phoenix:** Add --dump and --file options to sed ([f250f86](https://github.com/HeyPuter/puter/commit/f250f86446a506f24fa2ad396328e3a2212a68d0))
|
||||
* **phoenix:** Add more commands to sed, including labels and branching ([306014a](https://github.com/HeyPuter/puter/commit/306014adc77a7ca155feb95d1146cb46ee075b52))
|
||||
* **phoenix:** Expose parsed arg tokens to apps that request them ([4067c82](https://github.com/HeyPuter/puter/commit/4067c82486c99cad20f41927ad39ebea438b717f))
|
||||
* **phoenix:** Implement an `exit` builtin ([3184d34](https://github.com/HeyPuter/puter/commit/3184d3482c7b95c0fd1fc0745555ff82fc9a8c99))
|
||||
* **phoenix:** Implement parsing of sed scripts ([0d4f907](https://github.com/HeyPuter/puter/commit/0d4f907b6675b15bd50a55f50aa28f0803b18b7b))
|
||||
* **phoenix:** Make `clear` clear scrollback unless `-x` is given ([75a989a](https://github.com/HeyPuter/puter/commit/75a989a7b69bfdfdf69e5f0365027c5b27d8bfc6))
|
||||
* **Phoenix:** Pass command line arguments and ENV when launching apps ([8f1c4fc](https://github.com/HeyPuter/puter/commit/8f1c4fcda98e72a7b970e8c6fc2fe39a5e012264))
|
||||
* **phoenix:** Respond to exit status codes ([5de3052](https://github.com/HeyPuter/puter/commit/5de305202656a172b187dac87543d6c1c69a2958))
|
||||
* **phoenix:** Show actual host name in prompt and neofetch ([4539408](https://github.com/HeyPuter/puter/commit/4539408a218a50244dc615cf7de56c29dcac53e6))
|
||||
* rate-limit for excessive groups ([4af279a](https://github.com/HeyPuter/puter/commit/4af279a72fc9de89ddc3ba51806ca3760a36265d))
|
||||
* re-send unreads on login ([02fc4d8](https://github.com/HeyPuter/puter/commit/02fc4d86b7166fb4803be5d28e2a593d6b7d9785))
|
||||
* register dev center to apps ([10f4d7d](https://github.com/HeyPuter/puter/commit/10f4d7d50ce9314f9c3888c74cb17c8ebbecee98))
|
||||
* send notification when file gets shared ([2f6c428](https://github.com/HeyPuter/puter/commit/2f6c428a403a006f7878861d2f0356c3294519be))
|
||||
* start directory index frame ([fb1e2f2](https://github.com/HeyPuter/puter/commit/fb1e2f21fb67aefe0602f6c978199c7cd019bbf7))
|
||||
* support canonical puter.js url in dev ([fd41ae2](https://github.com/HeyPuter/puter/commit/fd41ae217c7a9f7229326f62a829471580a744bd))
|
||||
* **ui:** add new components ([577bd59](https://github.com/HeyPuter/puter/commit/577bd59b6cc94810e851ad544f8234e25a4e6e27))
|
||||
* **ui:** add new components ([38ba425](https://github.com/HeyPuter/puter/commit/38ba42575ce9f3506f8ce219b9580202b3ed9993))
|
||||
* **ui:** allow component-based settings tabs ([1245960](https://github.com/HeyPuter/puter/commit/124596058a286241b51dd87ce2fc1a68478cb5b8))
|
||||
* update share endpoint to support more things ([dd5fde5](https://github.com/HeyPuter/puter/commit/dd5fde5130c1840ab598e6622766ae835142e58a))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* add app_uid param to kv interface ([f7a0549](https://github.com/HeyPuter/puter/commit/f7a054956b8739a3bc305a49faee929ea0da1e15))
|
||||
* add missing columns for public directory update ([b10302a](https://github.com/HeyPuter/puter/commit/b10302ad744fd9c58f9735743e075815183c772c))
|
||||
* Add missing file extension to 0009_app-prefix-fix.sql in DB init ([a8160a8](https://github.com/HeyPuter/puter/commit/a8160a8cdcdd6aff98728a6f1643d93386e6bb5a))
|
||||
* add permission implicator for file modes ([e63ab3a](https://github.com/HeyPuter/puter/commit/e63ab3a67f6555eb13d6af477a8da9f1b54d6608))
|
||||
* add stream limit ([ceba309](https://github.com/HeyPuter/puter/commit/ceba309dbd4df89f310d1a530f939a5b7991f4c7))
|
||||
* **backend:** remove a bad thing that really doesn't work ([8d22276](https://github.com/HeyPuter/puter/commit/8d22276f13106f7642d11da30b1500817a20ad43))
|
||||
* bug introduced when refactoring /share to Sequence ([ecb9978](https://github.com/HeyPuter/puter/commit/ecb997885c1efb766827c84d2ffb8dc6ddabe992))
|
||||
* check subdomain earlier for /apps ([4e3a24e](https://github.com/HeyPuter/puter/commit/4e3a24e6093e279e210765e07e436f4e63b74072))
|
||||
* column nullability blunder ([1429d6f](https://github.com/HeyPuter/puter/commit/1429d6f57c67dff51fc41ca0c2868f8d000845f1))
|
||||
* Correct APIError imports ([062e23b](https://github.com/HeyPuter/puter/commit/062e23b5c9673db1f8b0ff0469289d52dd1e3f99))
|
||||
* correct shown flag behavior ([632c536](https://github.com/HeyPuter/puter/commit/632c5366161ff8fbbd4d60c61dfbe52dad488a2c))
|
||||
* database migration ([9b39309](https://github.com/HeyPuter/puter/commit/9b39309e18a2927d25fe794d91da4e4d068c4bca))
|
||||
* do not delegate to select on read like ever that is really dumb ([a2a10b9](https://github.com/HeyPuter/puter/commit/a2a10b94be59403e03fb08bec5d7c056ce5b554f))
|
||||
* docker runtime fail because stdout columns ([94c0449](https://github.com/HeyPuter/puter/commit/94c0449437ce4cb26d00a15a3f277bc7b09367b4))
|
||||
* fix issues with apps in /share endpoint ([0cf90ee](https://github.com/HeyPuter/puter/commit/0cf90ee39af6548d271dec45ed8ee9e6df1cd14d))
|
||||
* fix owner ids for default apps ([283f409](https://github.com/HeyPuter/puter/commit/283f409a662d126e7f3ce811f1467ac6fab9a522))
|
||||
* fix permission cascade properly this time ([de58866](https://github.com/HeyPuter/puter/commit/de5886698e1eae2b250baac174b57029f3244e96))
|
||||
* Fix phoenix app prefix and TokenService test ([afb9d86](https://github.com/HeyPuter/puter/commit/afb9d866b5091058711db931cde904947e661c15))
|
||||
* fix that fix ([b126b67](https://github.com/HeyPuter/puter/commit/b126b670940a0e20cfe7bd0eba3db891bab5c142))
|
||||
* fix typo ([ce328b7](https://github.com/HeyPuter/puter/commit/ce328b7245ad741b64c5885f64f806fc98a55d84))
|
||||
* **git:** Make git commit display detached HEAD correctly ([73d0f5a](https://github.com/HeyPuter/puter/commit/73d0f5a90cb5dcbadfc6d0fd22f14e8bc0e61f86))
|
||||
* group permission audit table ([7d2f6d2](https://github.com/HeyPuter/puter/commit/7d2f6d256f56e30d752e9999c6e8bde68f9d9637))
|
||||
* handle subpaths under another user ([d128cee](https://github.com/HeyPuter/puter/commit/d128ceed6f4928fa0793815feb2e2715cd273ff8))
|
||||
* handling of batch requests with zero files ([c0063a8](https://github.com/HeyPuter/puter/commit/c0063a871fd891a1774f1bee00e86170fed249fa))
|
||||
* i forgot to test reloading ([7eabb43](https://github.com/HeyPuter/puter/commit/7eabb43bd4257b4129d67eaeda2aa27e8268dc78))
|
||||
* improve console experience on mac ([15465bf](https://github.com/HeyPuter/puter/commit/15465bfc5035a64762f7c86a3d38af8be6be5b59))
|
||||
* incorrect error from suggested_apps ([b648817](https://github.com/HeyPuter/puter/commit/b648817f2743c2b6214ebe4177d921c9b9027594))
|
||||
* Make polyfilled import.meta.filename getter a valid function ([85c6798](https://github.com/HeyPuter/puter/commit/85c679844869b6b05fcbda231d8dc7026a66da97))
|
||||
* null email in request to /share ([bf63144](https://github.com/HeyPuter/puter/commit/bf63144f7a79c48bd650ae851ddd0c8a10d748c3))
|
||||
* Only run Component initialization functions once ([5b43358](https://github.com/HeyPuter/puter/commit/5b43358219402bee3eadf4a0f184a4b924d3293b))
|
||||
* oops ([a136ee5](https://github.com/HeyPuter/puter/commit/a136ee5edd3149798a0d82f494f423f503b65f00))
|
||||
* **parsely:** Make Repeat parser work when no separator is given ([9b4d16f](https://github.com/HeyPuter/puter/commit/9b4d16fbe9d5698c57f9da725a22b528a7d7cac2))
|
||||
* peers array assumption ([10cbf08](https://github.com/HeyPuter/puter/commit/10cbf08233620440aa39f5302deaac4f59f02247))
|
||||
* **phoenix:** Add missing newlines to sed command output ([e047b0b](https://github.com/HeyPuter/puter/commit/e047b0bf302284da61e677432e4cc25b531b24f2))
|
||||
* **phoenix:** Gracefully handle completing a non-existent path ([d76e713](https://github.com/HeyPuter/puter/commit/d76e7130cba9f0ca05940abafe4fd1a41464aa83))
|
||||
* property validation on some permission endpoints ([0855f2b](https://github.com/HeyPuter/puter/commit/0855f2b36eca3bbdaa8429cbde3aa1242e8e96ee))
|
||||
* readdir on file ([a72ec97](https://github.com/HeyPuter/puter/commit/a72ec9799ac3bd76ceafa22cce149e373a13f3b9))
|
||||
* remove last component when share URL is file ([1166e69](https://github.com/HeyPuter/puter/commit/1166e69c76688d1811701c56cd4df9d38e286793))
|
||||
* remove legacy permission check in stat ([f2c6e01](https://github.com/HeyPuter/puter/commit/f2c6e01296e4214336e63bc2d69bcbf17f59890f))
|
||||
* Remove null or duplicate app entries from suggest_app_for_fsentry() ([6900233](https://github.com/HeyPuter/puter/commit/6900233c5aaa2d1a49f495e9f9a060796757a91e))
|
||||
* **security:** Move token for socket.io to request body ([49b257e](https://github.com/HeyPuter/puter/commit/49b257ecffbb1e12090b86a67528a5ad09da69db))
|
||||
* switch share notif username to sender ([cd65217](https://github.com/HeyPuter/puter/commit/cd65217f5cda1c986ee231e2eeeef5abefa36ecb))
|
||||
* **Terminal:** Accept input from Chrome on Android ([4ef3e53](https://github.com/HeyPuter/puter/commit/4ef3e53de34f0097950a7e707ca2483863beafb5))
|
||||
* Throw an error when readdir is called on a non-directory ([46eb4ed](https://github.com/HeyPuter/puter/commit/46eb4ed2b96c235e10e15645a30d2f192a1af0de))
|
||||
* type error in puter-site ([d96f924](https://github.com/HeyPuter/puter/commit/d96f924cad7a13ea6e9084bb0ebb79ecc5fcb8a3))
|
||||
* ui color input attributes ([d9c4fbb](https://github.com/HeyPuter/puter/commit/d9c4fbbd1dcce12ee05ee33652a5fa518196463d))
|
||||
* **ui:** improve Component base class ([f8780d0](https://github.com/HeyPuter/puter/commit/f8780d032b10138851c22af53b8610c578139acc))
|
||||
* update email share object ([9033f6f](https://github.com/HeyPuter/puter/commit/9033f6f8c74ef8739294d640ac1c7eba95519bbd))
|
||||
* update PD alert custom details ([2f16322](https://github.com/HeyPuter/puter/commit/2f163221bdde09425cae11ef7f8e4eb0b10c7103))
|
||||
* update test kernel ([55c609b](https://github.com/HeyPuter/puter/commit/55c609b3fec4ef018febc6e88c44a6277960d728))
|
||||
* validate size metadata ([2008db0](https://github.com/HeyPuter/puter/commit/2008db08524259264a0c8186a34fc75d7a133f5f))
|
||||
|
||||
## 2.3.0 (2024-05-22)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add /healthcheck endpoint ([c166560](https://github.com/HeyPuter/puter/commit/c166560ff4ab5a453d3ec4f97326c995deb7f522))
|
||||
* Add command names to phoenix tab-completion ([cf0eee1](https://github.com/HeyPuter/puter/commit/cf0eee1fa35328e05aefc8a425b5977efe5f4ec9))
|
||||
* add option to change desktop background to default ([03f05f3](https://github.com/HeyPuter/puter/commit/03f05f316f11e8afe5fcee40b2b80a0de5e6826f))
|
||||
* allow apps to add a menubar via puter.js ([331d9e7](https://github.com/HeyPuter/puter/commit/331d9e75428ec7609394f59b1755374c7340f83e))
|
||||
* Allow querying puter-apps driver by partial app names ([dc5b010](https://github.com/HeyPuter/puter/commit/dc5b010d0913d2151b4851f8da5df72d2c8f42e7))
|
||||
* Display upload errors in UIWindowProgress dialog ([edebbee](https://github.com/HeyPuter/puter/commit/edebbee9e7e9efbb33bf709b637c103be40d15a8))
|
||||
* Implement 'Like' predicate in entity storage ([a854a0d](https://github.com/HeyPuter/puter/commit/a854a0dc0aa79a31695db833184c5ca3698632a9))
|
||||
* improve password recovery experience ([04432df](https://github.com/HeyPuter/puter/commit/04432df5540811710ce1cc47ce6c136e5453bccb))
|
||||
* **security:** add ip rate limiting ([ccf1afc](https://github.com/HeyPuter/puter/commit/ccf1afc93c24ee7f9a126216209a185d6b4d9fe4))
|
||||
* Show "Deleting /foo" in progress window when deleting files ([f07c13a](https://github.com/HeyPuter/puter/commit/f07c13a50cee790eec44bce2f6e56fbcbf73f9b0))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* Add missing file extension to 0009_app-prefix-fix.sql in DB init ([a8160a8](https://github.com/HeyPuter/puter/commit/a8160a8cdcdd6aff98728a6f1643d93386e6bb5a))
|
||||
* Add missing TextEncoder to PTT ([8d4a1e0](https://github.com/HeyPuter/puter/commit/8d4a1e0ed3872e2c82b9e4be9b6d8b359e9cea09))
|
||||
* Correct APIError imports ([062e23b](https://github.com/HeyPuter/puter/commit/062e23b5c9673db1f8b0ff0469289d52dd1e3f99))
|
||||
* Correct grep output when asking for line numbers ([c8a20ca](https://github.com/HeyPuter/puter/commit/c8a20cadbfd539d185d32f4558916825fcf265ba))
|
||||
* Correct inverted instanceof check in SignalReader.read() ([d4c2b49](https://github.com/HeyPuter/puter/commit/d4c2b492ef4864804776d3cb7d24797fdc536886))
|
||||
* Correct variables used in errors in sign.js ([fa7c6be](https://github.com/HeyPuter/puter/commit/fa7c6bee9699527028be0ae9759155bc67c52324))
|
||||
* Eliminates duplicate translation keys ([5800350](https://github.com/HeyPuter/puter/commit/5800350b253994dea410afff64e3df2a171e7775))
|
||||
* fix error handling for outdated node versions ([4c1d5a4](https://github.com/HeyPuter/puter/commit/4c1d5a4b6d009ce075897d499d3517219bd745a4))
|
||||
* Fix phoenix app prefix and TokenService test ([afb9d86](https://github.com/HeyPuter/puter/commit/afb9d866b5091058711db931cde904947e661c15))
|
||||
* increase QR code size ([d2de46e](https://github.com/HeyPuter/puter/commit/d2de46edfbc05d132d5c929f6935b82515fbbda0))
|
||||
* Make PathCommandProvider reject queries with path separators ([d733119](https://github.com/HeyPuter/puter/commit/d73311945610417a1ebc7bb0723ced0a599594b4))
|
||||
* Make url variable accessible to all users of it ([2f30ae7](https://github.com/HeyPuter/puter/commit/2f30ae7a825adcd8da95888c38fe39c34acee0ff))
|
||||
* Only run Component initialization functions once ([5b43358](https://github.com/HeyPuter/puter/commit/5b43358219402bee3eadf4a0f184a4b924d3293b))
|
||||
* Parse octal echo escapes ([6ad8f5e](https://github.com/HeyPuter/puter/commit/6ad8f5e06abd050d319271f818d72debf5bc8e44))
|
||||
* reduce token lengths ([5a76bad](https://github.com/HeyPuter/puter/commit/5a76bad28dfd8ec89a309941e410a54927fae22d))
|
||||
* reliability issue :bug: ([1d546d9](https://github.com/HeyPuter/puter/commit/1d546d9ef70ef9066ad5838e9782ae330d289f29))
|
||||
* Remove null or duplicate app entries from suggest_app_for_fsentry() ([6900233](https://github.com/HeyPuter/puter/commit/6900233c5aaa2d1a49f495e9f9a060796757a91e))
|
||||
* **security:** always use application/octet-stream ([74e213a](https://github.com/HeyPuter/puter/commit/74e213a534dbf2844c8cebeee7eb59ec70de306e))
|
||||
* **security:** Fix session revocation ([eb166a6](https://github.com/HeyPuter/puter/commit/eb166a67a9f0caf4fd77f9e27dc8209c2fc51f4c))
|
||||
* **security:** Move token for socket.io to request body ([49b257e](https://github.com/HeyPuter/puter/commit/49b257ecffbb1e12090b86a67528a5ad09da69db))
|
||||
* **security:** Prevent email enumeration ([ed70314](https://github.com/HeyPuter/puter/commit/ed703146863f896df76c98fad7127c6748c0ef9b))
|
||||
* **security:** skip cache when checking old passwd ([7800ef6](https://github.com/HeyPuter/puter/commit/7800ef61029c8d1ba47491b4028a0cb972298725))
|
||||
* **Terminal:** Accept input from Chrome on Android ([4ef3e53](https://github.com/HeyPuter/puter/commit/4ef3e53de34f0097950a7e707ca2483863beafb5))
|
||||
* test release-please action [#3](https://github.com/HeyPuter/puter/issues/3) ([8fb0a66](https://github.com/HeyPuter/puter/commit/8fb0a66ef21921990e564e5f61c0e80e7f929dc7))
|
||||
* test release-please action [#4](https://github.com/HeyPuter/puter/issues/4) ([f392de7](https://github.com/HeyPuter/puter/commit/f392de722a5232b622ed91b656a31cdc443c2e84))
|
||||
* typographical error :bug: ([2949f71](https://github.com/HeyPuter/puter/commit/2949f71691eb0a258888c5d2a5bb496d2fe64a23))
|
||||
* typographical errors :bug: ([4d30740](https://github.com/HeyPuter/puter/commit/4d30740198402cd1cc61b9ea4c45e006b69ec87e))
|
||||
* Use correct variable for version number ([52d5299](https://github.com/HeyPuter/puter/commit/52d52993744dffa9f7f59a232da5df9077560731))
|
||||
* use primary read in signup ([30f17ad](https://github.com/HeyPuter/puter/commit/30f17ade3a893d2283316e581836607e2029f9b9))
|
||||
|
||||
## [2.2.0](https://github.com/HeyPuter/puter/compare/v2.1.1...v2.2.0) (2024-04-23)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add /healthcheck endpoint ([c166560](https://github.com/HeyPuter/puter/commit/c166560ff4ab5a453d3ec4f97326c995deb7f522))
|
||||
* allow apps to add a menubar via puter.js ([331d9e7](https://github.com/HeyPuter/puter/commit/331d9e75428ec7609394f59b1755374c7340f83e))
|
||||
|
||||
## [2.1.1](https://github.com/HeyPuter/puter/compare/v2.1.0...v2.1.1) (2024-04-22)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* test release-please action [#3](https://github.com/HeyPuter/puter/issues/3) ([8fb0a66](https://github.com/HeyPuter/puter/commit/8fb0a66ef21921990e564e5f61c0e80e7f929dc7))
|
||||
* test release-please action [#4](https://github.com/HeyPuter/puter/issues/4) ([f392de7](https://github.com/HeyPuter/puter/commit/f392de722a5232b622ed91b656a31cdc443c2e84))
|
||||
+29
-6
@@ -6,7 +6,7 @@ Welcome to Puter, the open-source distributed internet operating system. We're e
|
||||
|
||||
# Report bugs
|
||||
|
||||
Before reporting a bug, please check [the issues on our GitHub repository](https://github.com/HeyPuter/puter/issues) to see if the bug has already been reported. If it has, you can add a comment to the existing issue with any additional information you have.
|
||||
Before reporting a bug, please check our [the issues on our GitHub repository](https://github.com/HeyPuter/puter/issues) to see if the bug has already been reported. If it has, you can add a comment to the existing issue with any additional information you have.
|
||||
|
||||
If you find a new bug in Puter, please [open an issue on our GitHub repository](https://github.com/HeyPuter/puter/issues/new). We'll do our best to address the issue as soon as possible. When reporting a bug, please include as much information as possible, including:
|
||||
|
||||
@@ -45,14 +45,37 @@ If you'd like to contribute code to Puter, you need to fork the project and subm
|
||||
|
||||
We'll review your pull request and work with you to get your changes merged into the project.
|
||||
|
||||
## Your first code contribution
|
||||
|
||||
We maintain a list of issues that are good for first-time contributors. You can find these issues by searching for the [`good first issue`](https://github.com/HeyPuter/puter/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) label in our [GitHub repository](https://github.com/HeyPuter/puter). These issues are designed to be relatively easy to fix, and we're happy to help you get started. Pick an issue that interests you, and leave a comment on the issue to let us know you're working on it.
|
||||
|
||||
<br>
|
||||
|
||||
## PR Standards
|
||||
## Documentation for Contributors
|
||||
|
||||
We expect the following from pull requests (it makes things easier):
|
||||
- If you're closing an issue, please reference that issue in the PR description
|
||||
- Avoid whitespace changes
|
||||
- No regressions for "appspace" (Puter apps)
|
||||
See [doc/contributors/index.md](./doc/contributors/index.md) for more information.
|
||||
|
||||
<br>
|
||||
|
||||
## Commit Messages
|
||||
|
||||
Use the imperative, as is the convention in the Linux kernel:
|
||||
|
||||
- correct: `Improve performance of readdir`
|
||||
- incorrect: `Improved readdir`
|
||||
- incorrect: `Improving readdir`
|
||||
|
||||
We have the following exceptions to this rule:
|
||||
- If the commit message is in _past tense_, it's a shorthand for the following:
|
||||
- `Apply changes that would be applied after one had <past tense message>`
|
||||
- If the commit message is in _present tense_, it's shorthand for the following:
|
||||
- `Apply changes that would be applied after <present-tense message>`
|
||||
|
||||
For example, the following are correct:
|
||||
- `Improved readdir`
|
||||
- interpret this as: `Apply changes that would be applied after one had improved readdir`
|
||||
- `Improving readdir`
|
||||
- interpret this as: `Apply changes that would be applied after improving readdir`
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
+3
-22
@@ -8,7 +8,7 @@
|
||||
# worry about Docker unless the build/run process changes.
|
||||
|
||||
# Build stage
|
||||
FROM node:24-alpine AS build
|
||||
FROM node:21-alpine AS build
|
||||
|
||||
# Install build dependencies
|
||||
RUN apk add --no-cache git python3 make g++ \
|
||||
@@ -18,18 +18,11 @@ RUN apk add --no-cache git python3 make g++ \
|
||||
WORKDIR /app
|
||||
|
||||
# Copy package.json and package-lock.json
|
||||
COPY package.json package-lock.json ./
|
||||
|
||||
# Fail early if lockfile or manifest is missing
|
||||
RUN test -f package.json && test -f package-lock.json
|
||||
COPY package*.json ./
|
||||
|
||||
# Copy the source files
|
||||
COPY . .
|
||||
|
||||
# Install mocha
|
||||
RUN npm i -g npm@latest
|
||||
RUN npm install -g mocha
|
||||
|
||||
# Install node modules
|
||||
RUN npm cache clean --force && \
|
||||
for i in 1 2 3; do \
|
||||
@@ -37,14 +30,6 @@ RUN npm cache clean --force && \
|
||||
if [ $i -lt 3 ]; then \
|
||||
sleep 15; \
|
||||
else \
|
||||
LOG_DIR="$(npm config get cache | tr -d '\"')/_logs"; \
|
||||
echo "npm install failed; dumping logs from $LOG_DIR"; \
|
||||
if [ -d "$LOG_DIR" ]; then \
|
||||
ls -al "$LOG_DIR" || true; \
|
||||
cat "$LOG_DIR"/* || true; \
|
||||
else \
|
||||
echo "Log directory not found (npm cache: $(npm config get cache))"; \
|
||||
fi; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@@ -53,7 +38,7 @@ RUN npm cache clean --force && \
|
||||
RUN cd src/gui && npm run build && cd -
|
||||
|
||||
# Production stage
|
||||
FROM node:24-alpine
|
||||
FROM node:21-alpine
|
||||
|
||||
# Set labels
|
||||
LABEL repo="https://github.com/HeyPuter/puter"
|
||||
@@ -83,8 +68,4 @@ HEALTHCHECK --interval=30s --timeout=3s \
|
||||
|
||||
ENV NO_VAR_RUNTUME=1
|
||||
|
||||
# Attempt to fix `[email protected]` missing after build stage
|
||||
# by doing a redundant `npm install` at this stage
|
||||
RUN npm install
|
||||
|
||||
CMD ["npm", "start"]
|
||||
@@ -3,31 +3,29 @@
|
||||
<h3 align="center">The Internet OS! Free, Open-Source, and Self-Hostable.</h3>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://puter.com/?ref=github.com"><strong>« LIVE DEMO »</strong></a>
|
||||
<a href="https://puter.com/"><strong>« LIVE DEMO »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com/?ref=github.com">Puter.com</a>
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://apps.puter.com/">App Store</a>
|
||||
·
|
||||
<a href="https://developer.puter.com" target="_blank">Developers</a>
|
||||
·
|
||||
<a href="https://github.com/heyputer/puter-cli" target="_blank">CLI</a>
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X</a>
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
·
|
||||
<a href="https://hackerone.com/puter_h1b">Bug Bounty</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
<h3 align="center"><img width="700" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter is an advanced, open-source internet operating system designed to be feature-rich, fast, and highly extensible. Puter can be used as:
|
||||
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.
|
||||
@@ -48,29 +46,23 @@ cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
**→** This should launch Puter at
|
||||
<font color="red"> http://puter.localhost:4100 (or the next available port). </font>
|
||||
|
||||
|
||||
|
||||
If this does not work, see [First Run Issues](./doc/self-hosters/first-run-issues.md) for
|
||||
troubleshooting steps.
|
||||
This will launch Puter at http://localhost:4000 (or the next available port).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
**→** This should launch Puter at
|
||||
<font color="red"> http://puter.localhost:4100 (or the next available port). </font>
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
#### Linux/macOS
|
||||
|
||||
```bash
|
||||
mkdir -p puter/config puter/data
|
||||
@@ -78,30 +70,6 @@ sudo chown -R 1000:1000 puter
|
||||
wget https://raw.githubusercontent.com/HeyPuter/puter/main/docker-compose.yml
|
||||
docker compose up
|
||||
```
|
||||
**→** This should be available at
|
||||
<font color="red"> http://puter.localhost:4100 (or the next available port). </font>
|
||||
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
**→** This should launch Puter at
|
||||
<font color="red"> http://puter.localhost:4100 (or the next available port). </font>
|
||||
|
||||
<br/>
|
||||
|
||||
### 🚀 Self-Hosting
|
||||
|
||||
For detailed guides on self-hosting Puter, including configuration options and best practices, see our [Self-Hosting Documentation](https://github.com/HeyPuter/puter/blob/main/doc/self-hosters/instructions.md).
|
||||
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
@@ -110,70 +78,23 @@ Puter is available as a hosted service at [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## System Requirements
|
||||
|
||||
- **Operating Systems:** Linux, macOS, Windows
|
||||
- **RAM:** 2GB minimum (4GB recommended)
|
||||
- **Disk Space:** 1GB free space
|
||||
- **Node.js:** Version 24+
|
||||
- **npm:** Latest stable version
|
||||
|
||||
<br/>
|
||||
|
||||
## Support
|
||||
|
||||
Connect with the maintainers and community through these channels:
|
||||
|
||||
- Bug report or feature request? Please [open an issue](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Security issues? [[email protected]](mailto:[email protected])
|
||||
- Discord: [https://discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [https://x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [https://www.reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Email maintainers at [[email protected]](mailto:[email protected])
|
||||
|
||||
We are always happy to help you with any questions you may have. Don't hesitate to ask!
|
||||
|
||||
<br/>
|
||||
|
||||
## License
|
||||
|
||||
## License
|
||||
|
||||
This repository, including all its contents, sub-projects, modules, and components, is licensed under [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) unless explicitly stated otherwise. Third-party libraries included in this repository may be subject to their own licenses.
|
||||
|
||||
<br/>
|
||||
|
||||
## Translations
|
||||
|
||||
- [Arabic / العربية](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ar.md)
|
||||
- [Armenian / Հայերեն](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hy.md)
|
||||
- [Bengali / বাংলা](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.bn.md)
|
||||
- [Chinese / 中文](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.zh.md)
|
||||
- [Danish / Dansk](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.da.md)
|
||||
- [English](https://github.com/HeyPuter/puter/blob/main/README.md)
|
||||
- [Farsi / فارسی](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fa.md)
|
||||
- [Finnish / Suomi](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fi.md)
|
||||
- [French / Français](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fr.md)
|
||||
- [German / Deutsch](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.de.md)
|
||||
- [Hebrew/ עברית](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.he.md)
|
||||
- [Hindi / हिंदी](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hi.md)
|
||||
- [Hungarian / Magyar](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hu.md)
|
||||
- [Indonesian / Bahasa Indonesia](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.id.md)
|
||||
- [Italian / Italiano](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.it.md)
|
||||
- [Japanese / 日本語](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.jp.md)
|
||||
- [Korean / 한국어](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ko.md)
|
||||
- [Malay / Bahasa Malaysia](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.my.md)
|
||||
- [Malayalam / മലയാളം](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ml.md)
|
||||
- [Polish / Polski](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.pl.md)
|
||||
- [Portuguese / Português](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.pt.md)
|
||||
- [Punjabi / ਪੰਜਾਬੀ](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.pa.md)
|
||||
- [Romanian / Română](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ro.md)
|
||||
- [Russian / Русский](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ru.md)
|
||||
- [Spanish / Español](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.es.md)
|
||||
- [Swedish / Svenska](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.sv.md)
|
||||
- [Tamil / தமிழ்](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ta.md)
|
||||
- [Telugu / తెలుగు](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.te.md)
|
||||
- [Thai / ไทย](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.th.md)
|
||||
- [Turkish / Türkçe](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.tr.md)
|
||||
- [Ukrainian / Українська](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ua.md)
|
||||
- [Urdu / اردو](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ur.md)
|
||||
- [Vietnamese / Tiếng Việt](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.vi.md)
|
||||
@@ -3,7 +3,5 @@ We would like to thank the following security researchers for their responsible
|
||||
|
||||
# 2024
|
||||
|
||||
- Ritesh Sahu [GitHub](https://github.com/riteshs4hu/) | [X](https://x.com/riteshs4hu) | [Website](https://medium.com/@riteshs4hu)
|
||||
- Tim Suess: [GitHub](https://github.com/blackfortresslabs) | [Email]([email protected]) | [Website](https://www.blackfortresslabs.com)
|
||||
- Tim Suess: [GitHub](https://github.com/blackfortresslabs) | [Email]([email protected]) | [Website](blackfortresslabs.com)
|
||||
- xyzeva: [Github](https://github.com/xyzeva) | [Email](mailto:[email protected]) | [Website](https://kibty.town/)
|
||||
- Yusuf Kelany: [GitHub](https://github.com/YusufYaser) | [X](https://x.com/RealYusufYaser) | [Website](https://yusufyaser.xyz)
|
||||
+2
-2
@@ -14,8 +14,7 @@ If you believe you've found a security issue in software that is maintained in t
|
||||
|
||||
To submit a vulnerability report, please contact us at security@puter.com. Your submission will be reviewed and validated by a member of our team.
|
||||
|
||||
> [!WARNING]
|
||||
> Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests.
|
||||
**⚠ Please do not report security vulnerabilities through public GitHub issues, discussions, or pull requests. ⚠**
|
||||
|
||||
<br>
|
||||
|
||||
@@ -38,3 +37,4 @@ Please submit a report to us before engaging in conduct that may be inconsistent
|
||||
* Please provide detailed reports with reproducible steps and a clearly defined impact.
|
||||
* Include the version number of the vulnerable package in your report
|
||||
* Social engineering (e.g. phishing, vishing, smishing) is prohibited.
|
||||
|
||||
-214
@@ -1,214 +0,0 @@
|
||||
# Trademark Guidelines
|
||||
|
||||
Version 1.0 dated January 1, 2025
|
||||
|
||||
<img src="https://puter.com/images/logo.png" alt="Puter Technologies Inc. Logo" width="150"/>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
This trademark policy was prepared to help you understand how to use the Puter trademarks, service marks and logos with Puter Technologies Inc.'s Puter software.
|
||||
|
||||
While some of our software is available under a free and open source software license, that copyright license does not include a license to use our trademark, and this Policy is intended to explain how to use our marks consistent with background law and community expectation.
|
||||
|
||||
This Policy covers:
|
||||
|
||||
1. Our **word** trademarks and service marks: Puter Technologies Inc., Puter, Puter.com
|
||||
2. Our **logos**: The Puter Technologies Inc. logo at the top of this policy
|
||||
|
||||
This policy encompasses all trademarks and service marks, whether they are registered or not.
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
## 1. GENERAL GUIDELINES
|
||||
|
||||
Whenever you use one of our marks, you must always do so in a way that does not mislead anyone about what they are getting and from whom. For example, you cannot say you are providing the Puter software when you're providing a modified version of it, because recipients may not understand the differences between your modified versions and our own.
|
||||
|
||||
You also cannot use our logo on your website in a way that suggests that your website is an official website or that we endorse your website.
|
||||
|
||||
You can, though, say you like the Puter software, that you participate in the Puter community, that you are providing an unmodified version of the Puter software.
|
||||
|
||||
You may not use or register our marks, or variations of them as part of your own trademark, service mark, domain name, company name, trade name, product name or service name.
|
||||
|
||||
Trademark law does not allow your use of names or trademarks that are too similar to ours. You therefore may not use an obvious variation of any of our marks or any phonetic equivalent, foreign language equivalent, takeoff, or abbreviation for a similar or compatible product or service. We would consider the following too similar to one of our Marks:
|
||||
|
||||
- MyPuter
|
||||
- PuterFooBar
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
## 2. ACCEPTABLE USES
|
||||
|
||||
<br>
|
||||
|
||||
### Distribution of Unmodified Software
|
||||
|
||||
When you redistribute an unmodified copy of Puter software, you must retain all trademarks, logos, and notices we have placed on the software to identify its origin. This includes:
|
||||
|
||||
* Binary distributions exactly as we provide them
|
||||
* Source code distributions exactly as we provide them
|
||||
* Documentation and other materials directly from our official repositories
|
||||
|
||||
<br>
|
||||
|
||||
### Distribution of Modified Software
|
||||
|
||||
If you distribute a modified version of Puter software, you:
|
||||
|
||||
* Must remove all Puter logos from the modified software
|
||||
* May use our word marks (but not logos) to accurately describe the software's origin
|
||||
* Must clearly indicate that the software has been modified
|
||||
* Must include a notice stating: "This software is a modified version of Puter software and is not endorsed by Puter Technologies Inc."
|
||||
|
||||
Example of acceptable description: "This software is derived from Puter software and includes modifications for [describe your changes]."
|
||||
|
||||
<br>
|
||||
|
||||
### Compatibility Statements
|
||||
|
||||
You may use our word marks (but not logos) to accurately describe your software's compatibility with Puter software under these conditions:
|
||||
|
||||
* Your statements about compatibility must be accurate and not misleading
|
||||
* You must include the following notice: "Puter is a trademark of Puter Technologies Inc. This [product/service] is not affiliated with or endorsed by Puter Technologies Inc."
|
||||
* You may not suggest that Puter Technologies Inc. has certified or approved your software
|
||||
|
||||
|
||||
<br>
|
||||
|
||||
### Products Built for Puter
|
||||
|
||||
You may describe your product as working with or being built for Puter if:
|
||||
|
||||
* Your product is fully compatible with the documented Puter APIs
|
||||
* Your product name follows this format: "[Your Product Name] for Puter"
|
||||
* You include this notice in all materials: "Puter is a trademark of Puter Technologies Inc. [Your Product Name] is not affiliated with or endorsed by Puter Technologies Inc."
|
||||
* Your branding and marketing materials do not create confusion about the source of your product
|
||||
|
||||
<br>
|
||||
|
||||
### Open Source Projects
|
||||
|
||||
For open source projects that interact with or extend Puter software:
|
||||
|
||||
* You may use "puter" as part of your project name only if:
|
||||
* The name is in the format "[descriptor]-puter" (e.g., "auth-puter", "backup-puter")
|
||||
* The project's README clearly states it's not officially associated with Puter
|
||||
* The project maintains compatibility with current Puter APIs
|
||||
* You must not use our logos without explicit permission
|
||||
* You must include appropriate trademark attribution notices
|
||||
|
||||
<br>
|
||||
|
||||
### Community Activities
|
||||
|
||||
You may use our word marks (but not logos) for non-commercial community activities:
|
||||
|
||||
* User groups and meetups focused on Puter software
|
||||
* Educational content about Puter software
|
||||
* Blog posts, videos, articles, or tutorials about Puter software
|
||||
|
||||
Conditions for community use:
|
||||
|
||||
* Activities must be non-commercial
|
||||
* Any fees charged must only cover actual costs
|
||||
* You must include appropriate trademark attribution
|
||||
* You must not suggest official endorsement without explicit permission
|
||||
|
||||
<br>
|
||||
|
||||
### Merchandise and Promotional Items
|
||||
|
||||
You may not create merchandise or promotional items bearing our marks without explicit written permission from Puter Technologies Inc.
|
||||
|
||||
<br>
|
||||
|
||||
### Academic and Research Use
|
||||
|
||||
You may use our word marks (but not logos) in:
|
||||
|
||||
* Academic papers
|
||||
* Research publications
|
||||
* Technical documentation
|
||||
* Educational materials
|
||||
|
||||
Include appropriate citations and trademark attributions in such uses.
|
||||
|
||||
<br>
|
||||
|
||||
### Online Content and Social Media
|
||||
|
||||
When using our marks in online content:
|
||||
|
||||
* You may use our word marks in hashtags, handles, or usernames if:
|
||||
* The content is clearly about Puter software
|
||||
* You don't imply official status
|
||||
* You include appropriate trademark attribution
|
||||
* You must not register social media accounts that could be confused with official Puter accounts
|
||||
|
||||
<br>
|
||||
|
||||
### APIs and Development
|
||||
|
||||
When developing with Puter APIs:
|
||||
|
||||
* You may use our word marks to accurately describe your integration
|
||||
* You must not use our marks in a way that suggests your API or service is endorse by
|
||||
Puter or provided by Puter
|
||||
* You must include appropriate trademark attribution
|
||||
|
||||
All uses described above must also comply with the General Guidelines section of this policy and maintain the integrity of our marks as described in the How to Display Our Marks section.
|
||||
|
||||
<br>
|
||||
|
||||
### No Domain Names
|
||||
|
||||
You must not register any domain that includes our word marks or any variant or combination of them.
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
## 3. HOW TO DISPLAY OUR MARKS
|
||||
|
||||
When you have the right to use our mark, here is how to display it.
|
||||
|
||||
<br>
|
||||
|
||||
### Trademark marking and legends
|
||||
|
||||
The first or most prominent mention of a mark on a webpage, document, or documentation should be accompanied by a symbol indicating whether the mark is a registered trademark ("®") or an unregistered trademark ("™"). If you don't know which applies, contact us.
|
||||
|
||||
Place the following notice at the foot of the page where you have used the mark: "Puter is trademark of Puter Technologies Inc."
|
||||
|
||||
<br>
|
||||
|
||||
### Use of trademarks in text
|
||||
|
||||
**Always use trademarks in their exact form with the correct spelling, neither abbreviated, hyphenated, or combined with any other word or words.**
|
||||
|
||||
Unacceptable: Puter-DB
|
||||
|
||||
**Don't pluralize a trademark.**
|
||||
|
||||
Unacceptable: I have seventeen Puters running in my lab.
|
||||
|
||||
**Always use a trademark as an adjective modifying a noun.**
|
||||
|
||||
Unacceptable: This is a Puter.
|
||||
Acceptable: This is a Puter software application.
|
||||
|
||||
<br>
|
||||
|
||||
### Use of Logos
|
||||
|
||||
You may not change any logo except to scale it. This means you may not add decorative elements, change the colors, change the proportions, distort it, add elements, or combine it with other logos.
|
||||
|
||||
However, when the context requires the use of black-and-white graphics and the logo is color, you may reproduce the logo in a manner that produces a black-and-white image.
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
## This Document
|
||||
|
||||
These guidelines are based on the Model Trademark Guidelines, available at http://www.modeltrademarkguidelines.org., used under a Creative Commons Attribution 3.0 Unported license: https://creativecommons.org/licenses/by/3.0/deed.en_US.
|
||||
@@ -0,0 +1 @@
|
||||
header: doc/license_header.txt
|
||||
@@ -0,0 +1,14 @@
|
||||
# #DoesItRunPuter
|
||||
|
||||
- [Minecraft](https://twitter.com/HeyPuter/status/1771957571496092036) | [video](https://www.youtube.com/watch?v=GIowZUXkg5g)
|
||||
- [Samsung Watch](https://twitter.com/CharmunkDev/status/1781501714543030554)
|
||||
- [PlayStation 4](https://twitter.com/HeyPuter/status/1767978053014270059)
|
||||
- [Skyworth TV](https://twitter.com/ericalexdube/status/1767983049277411564)
|
||||
- [A Fridge!](https://twitter.com/HeyPuter/status/1778890003797745842)
|
||||
- [Oculus Quest 2](https://twitter.com/HeyPuter/status/1768664081756754012)
|
||||
- [Tesla Model 3](https://twitter.com/EricLighthall/status/1781479732997214501)
|
||||
- [Tesla Model S](https://twitter.com/HeyPuter/status/1767971178864587057)
|
||||
- [Tesla Model Y](https://twitter.com/HeyPuter/status/1772858333751636310)
|
||||
- [Nintendo Switch](https://twitter.com/HeyPuter/status/1780645795240538518)
|
||||
- [Steam Deck](https://twitter.com/everythingSung/status/1782162352403828793)
|
||||
- [Ladybird Browser](https://x.com/HeyPuter/status/1810783504503800035)
|
||||
@@ -1,38 +0,0 @@
|
||||
# Documentation for Robots
|
||||
|
||||
Hello, if you're an AI agent then you're reading the correct documentation.
|
||||
Here are a few important notes:
|
||||
- Puter is probably already cloned and configured, so avoid any setup
|
||||
or configuration steps unless explicitly asked to perform them.
|
||||
- Anything under `/src` (relative to the root of the repo) is probably
|
||||
a workspace module. That means different directories might have different
|
||||
code styles or use different import mechanisms (ESM vs CJS). Try to keep
|
||||
changes consistent in the scope of where they are.
|
||||
|
||||
# Backend
|
||||
|
||||
Any file under `src/backend` that extends **BaseService** is called a
|
||||
"backend service". Backend services can implement "traits". That looks
|
||||
like this:
|
||||
|
||||
```javascript
|
||||
class SomeClass extends BaseService {
|
||||
static IMPLEMENTS = {
|
||||
['name-of-interface']: {
|
||||
async some_method_name () {
|
||||
const instance_of_SomeClass = this;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Methods on traits are bound to the same "this" (instance variable) as
|
||||
methods on the class itself. Trait methods cannot be indexed from the
|
||||
instance variable; instead common functionality is usually moved to
|
||||
regular instance methods which typically have an underscore at the end
|
||||
of their name.
|
||||
|
||||
# Furher Documentation
|
||||
|
||||
Proceed to read the README.md document beside this file.
|
||||
@@ -1,214 +0,0 @@
|
||||
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36" version="25.0.1">
|
||||
<diagram name="Page-1" id="5LlmtnmR4draSSsTtYyD">
|
||||
<mxGraphModel grid="1" page="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" pageScale="1" pageWidth="1100" pageHeight="850" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-64" value="Legacy Notice" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=14;" vertex="1" parent="1">
|
||||
<mxGeometry x="540" y="555" width="130" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-8" value="only most important directories shown" style="rounded=1;whiteSpace=wrap;html=1;align=right;" vertex="1" parent="1">
|
||||
<mxGeometry x="380" y="50" width="230" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-1" value="src/" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="110" width="80" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-2" value="Puter Repository" style="rounded=0;whiteSpace=wrap;html=1;fontSize=18;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
|
||||
<mxGeometry x="240" y="40" width="160" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-4" value="Every directory under src/ is a node module." style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=14;align=left;" vertex="1" parent="1">
|
||||
<mxGeometry x="470" y="110" width="260" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-5" value="" style="endArrow=classic;html=1;rounded=0;edgeStyle=elbowEdgeStyle;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-2" target="skmebJAFKBwesmhEX21R-1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="490" y="260" as="sourcePoint" />
|
||||
<mxPoint x="540" y="210" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="320" y="125" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-6" value="backend/" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="190" width="80" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-7" value="gui/src/" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="1000" width="80" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-10" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-1" target="skmebJAFKBwesmhEX21R-4">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="490" y="260" as="sourcePoint" />
|
||||
<mxPoint x="540" y="210" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-12" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-1" target="skmebJAFKBwesmhEX21R-6">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="490" y="260" as="sourcePoint" />
|
||||
<mxPoint x="540" y="210" as="targetPoint" />
|
||||
<Array as="points">
|
||||
<mxPoint x="400" y="205" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-14" value="extensions/" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
|
||||
<mxGeometry x="520" y="1080" width="140" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-15" value="Puter GUI Extensions" style="rounded=1;whiteSpace=wrap;html=1;fontSize=16;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||
<mxGeometry x="730" y="1080" width="180" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-16" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-14" target="skmebJAFKBwesmhEX21R-15">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="530" y="980" as="sourcePoint" />
|
||||
<mxPoint x="580" y="930" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-15" target="skmebJAFKBwesmhEX21R-15">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-18" value="UI/" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
|
||||
<mxGeometry x="520" y="1120" width="140" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-19" value="Puter Desktop" style="rounded=1;whiteSpace=wrap;html=1;fontSize=16;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||
<mxGeometry x="730" y="1120" width="180" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-20" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-18" target="skmebJAFKBwesmhEX21R-19">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="670" y="1098" as="sourcePoint" />
|
||||
<mxPoint x="740" y="1098" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-21" value="services/" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
|
||||
<mxGeometry x="520" y="1160" width="140" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-22" value="Frontend Services" style="rounded=1;whiteSpace=wrap;html=1;fontSize=16;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||
<mxGeometry x="730" y="1160" width="180" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-23" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-21" target="skmebJAFKBwesmhEX21R-22">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="670" y="1138" as="sourcePoint" />
|
||||
<mxPoint x="740" y="1138" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-24" value="initgui.js" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
|
||||
<mxGeometry x="520" y="1200" width="140" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-25" value="Launches services and initializes the GUI" style="rounded=1;whiteSpace=wrap;html=1;fontSize=13;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||
<mxGeometry x="730" y="1200" width="180" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-26" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-24" target="skmebJAFKBwesmhEX21R-25">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="670" y="1185" as="sourcePoint" />
|
||||
<mxPoint x="740" y="1185" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-27" value="IPC.js" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
|
||||
<mxGeometry x="520" y="1240" width="140" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-28" value="Manages communication between Desktop and apps" style="rounded=1;whiteSpace=wrap;html=1;fontSize=13;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||
<mxGeometry x="730" y="1240" width="180" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-29" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-27" target="skmebJAFKBwesmhEX21R-28">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="670" y="1225" as="sourcePoint" />
|
||||
<mxPoint x="740" y="1225" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-46" value="modules/" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
|
||||
<mxGeometry x="520" y="280" width="140" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-47" value="New Code goes Here" style="rounded=1;whiteSpace=wrap;html=1;fontSize=16;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||
<mxGeometry x="730" y="280" width="180" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-48" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-46" target="skmebJAFKBwesmhEX21R-47">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="530" y="180" as="sourcePoint" />
|
||||
<mxPoint x="580" y="130" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-49" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-47" target="skmebJAFKBwesmhEX21R-47">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-50" value="services/" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
|
||||
<mxGeometry x="520" y="320" width="140" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-51" value="Core Module services" style="rounded=1;whiteSpace=wrap;html=1;fontSize=16;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||
<mxGeometry x="730" y="320" width="180" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-52" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-50" target="skmebJAFKBwesmhEX21R-51">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="670" y="298" as="sourcePoint" />
|
||||
<mxPoint x="740" y="298" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-53" value="routers/" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
|
||||
<mxGeometry x="520" y="480" width="140" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-54" value="HTTP endpoints" style="rounded=1;whiteSpace=wrap;html=1;fontSize=16;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||
<mxGeometry x="730" y="480" width="180" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-55" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-53" target="skmebJAFKBwesmhEX21R-54">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="670" y="458" as="sourcePoint" />
|
||||
<mxPoint x="740" y="458" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-62" value="<div><span style="background-color: initial;">This is the original directory where routes</span></div><div><span style="background-color: initial;">were placed. New services should use the</span></div><div><span style="background-color: initial;">"Endpoint" class to define routes.</span></div><div><span style="background-color: initial;"><br></span></div><div><span style="background-color: initial;">Examples:</span></div><div><span style="background-color: initial;">- PermissionAPIService.js</span></div><div><span style="background-color: initial;">- NotificationService.js</span><br></div><div>- KernelInfoService.js</div><div><span style="color: rgba(0, 0, 0, 0); font-family: monospace; font-size: 0px; text-wrap: nowrap;">%3CmxGraphModel%3E%3Croot%3E%3CmxCell%20id%3D%220%22%2F%3E%3CmxCell%20id%3D%221%22%20parent%3D%220%22%2F%3E%3CmxCell%20id%3D%222%22%20value%3D%22extensions%2F%22%20style%3D%22rounded%3D0%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3BfontSize%3D16%3BfillColor%3D%23e1d5e7%3BstrokeColor%3D%239673a6%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22520%22%20y%3D%22400%22%20width%3D%22140%22%20height%3D%2230%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%223%22%20value%3D%22Puter%20GUI%20Extensions%22%20style%3D%22rounded%3D1%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3BfontSize%3D16%3BfillColor%3D%23d5e8d4%3BstrokeColor%3D%2382b366%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22730%22%20y%3D%22400%22%20width%3D%22180%22%20height%3D%2230%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%224%22%20value%3D%22%22%20style%3D%22endArrow%3Dclassic%3Bhtml%3D1%3Brounded%3D0%3B%22%20edge%3D%221%22%20source%3D%222%22%20target%3D%223%22%20parent%3D%221%22%3E%3CmxGeometry%20width%3D%2250%22%20height%3D%2250%22%20relative%3D%221%22%20as%3D%22geometry%22%3E%3CmxPoint%20x%3D%22530%22%20y%3D%22300%22%20as%3D%22sourcePoint%22%2F%3E%3CmxPoint%20x%3D%22580%22%20y%3D%22250%22%20as%3D%22targetPoint%22%2F%3E%3C%2FmxGeometry%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%225%22%20style%3D%22edgeStyle%3DorthogonalEdgeStyle%3Brounded%3D0%3BorthogonalLoop%3D1%3BjettySize%3Dauto%3Bhtml%3D1%3BexitX%3D0.5%3BexitY%3D1%3BexitDx%3D0%3BexitDy%3D0%3B%22%20edge%3D%221%22%20source%3D%223%22%20target%3D%223%22%20parent%3D%221%22%3E%3CmxGeometry%20relative%3D%221%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%226%22%20value%3D%22UI%2F%22%20style%3D%22rounded%3D0%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3BfontSize%3D16%3BfillColor%3D%23e1d5e7%3BstrokeColor%3D%239673a6%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22520%22%20y%3D%22440%22%20width%3D%22140%22%20height%3D%2230%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%227%22%20value%3D%22Puter%20Desktop%22%20style%3D%22rounded%3D1%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3BfontSize%3D16%3BfillColor%3D%23d5e8d4%3BstrokeColor%3D%2382b366%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22730%22%20y%3D%22440%22%20width%3D%22180%22%20height%3D%2230%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%228%22%20value%3D%22%22%20style%3D%22endArrow%3Dclassic%3Bhtml%3D1%3Brounded%3D0%3B%22%20edge%3D%221%22%20source%3D%226%22%20target%3D%227%22%20parent%3D%221%22%3E%3CmxGeometry%20width%3D%2250%22%20height%3D%2250%22%20relative%3D%221%22%20as%3D%22geometry%22%3E%3CmxPoint%20x%3D%22670%22%20y%3D%22418%22%20as%3D%22sourcePoint%22%2F%3E%3CmxPoint%20x%3D%22740%22%20y%3D%22418%22%20as%3D%22targetPoint%22%2F%3E%3C%2FmxGeometry%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%229%22%20value%3D%22services%2F%22%20style%3D%22rounded%3D0%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3BfontSize%3D16%3BfillColor%3D%23e1d5e7%3BstrokeColor%3D%239673a6%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22520%22%20y%3D%22480%22%20width%3D%22140%22%20height%3D%2230%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%2210%22%20value%3D%22Frontend%20Services%22%20style%3D%22rounded%3D1%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3BfontSize%3D16%3BfillColor%3D%23d5e8d4%3BstrokeColor%3D%2382b366%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22730%22%20y%3D%22480%22%20width%3D%22180%22%20height%3D%2230%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%2211%22%20value%3D%22%22%20style%3D%22endArrow%3Dclassic%3Bhtml%3D1%3Brounded%3D0%3B%22%20edge%3D%221%22%20source%3D%229%22%20target%3D%2210%22%20parent%3D%221%22%3E%3CmxGeometry%20width%3D%2250%22%20height%3D%2250%22%20relative%3D%221%22%20as%3D%22geometry%22%3E%3CmxPoint%20x%3D%22670%22%20y%3D%22458%22%20as%3D%22sourcePoint%22%2F%3E%3CmxPoint%20x%3D%22740%22%20y%3D%22458%22%20as%3D%22targetPoint%22%2F%3E%3C%2FmLine truncated
|
||||
<mxGeometry x="645" y="545" width="270" height="135" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-63" value="" style="endArrow=classic;html=1;rounded=0;edgeStyle=elbowEdgeStyle;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-62" target="skmebJAFKBwesmhEX21R-54">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="730" y="560" as="sourcePoint" />
|
||||
<mxPoint x="780" y="510" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-65" value="structured/" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
|
||||
<mxGeometry x="520" y="700" width="140" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-66" value="unstructured/" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
|
||||
<mxGeometry x="520" y="720" width="140" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-68" value="<div>These directories mostly contain code for</div><div>the permission system to make it easier to maintain.</div><div><br></div><div>structured/&lt;pattern&gt;/ contains code that is formatted according to "&lt;pattern&gt;"</div><div><br></div><div>unstructured/ contains miscellaneous code used by the permission system.</div>" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=18;fillColor=#f5f5f5;strokeColor=#666666;align=left;verticalAlign=top;fontSize=13;fontColor=#333333;" vertex="1" parent="1">
|
||||
<mxGeometry x="730" y="700" width="270" height="150" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-69" value="" style="endArrow=classic;html=1;rounded=0;edgeStyle=elbowEdgeStyle;elbow=vertical;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-68" target="skmebJAFKBwesmhEX21R-65">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="730" y="680" as="sourcePoint" />
|
||||
<mxPoint x="780" y="630" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-70" value="" style="endArrow=classic;html=1;rounded=0;edgeStyle=elbowEdgeStyle;elbow=vertical;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-68" target="skmebJAFKBwesmhEX21R-66">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="740" y="720" as="sourcePoint" />
|
||||
<mxPoint x="670" y="720" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-71" value="these should go to:<div>modules/auth/</div><div>in the future</div>" style="rounded=1;whiteSpace=wrap;html=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
|
||||
<mxGeometry x="520" y="760" width="140" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-72" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-71" target="skmebJAFKBwesmhEX21R-66">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="730" y="680" as="sourcePoint" />
|
||||
<mxPoint x="780" y="630" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-73" value="util/" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
|
||||
<mxGeometry x="520" y="880" width="140" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-74" value="<div>Utilities used by various services in Puter's backend.</div><div><br></div><div>These should be incrementally moved to individual `lib` directories in modules/</div>" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=18;fillColor=#f5f5f5;strokeColor=#666666;align=left;verticalAlign=top;fontSize=13;fontColor=#333333;" vertex="1" parent="1">
|
||||
<mxGeometry x="730" y="880" width="270" height="90" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-75" value="" style="endArrow=classic;html=1;rounded=0;edgeStyle=elbowEdgeStyle;elbow=vertical;" edge="1" parent="1" source="skmebJAFKBwesmhEX21R-74" target="skmebJAFKBwesmhEX21R-73">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="740" y="740" as="sourcePoint" />
|
||||
<mxPoint x="670" y="740" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-76" value="Migration Notice" style="rounded=1;whiteSpace=wrap;html=1;align=left;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=14;" vertex="1" parent="1">
|
||||
<mxGeometry x="540" y="400" width="130" height="20" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="skmebJAFKBwesmhEX21R-77" value="<div>Services here should be incrementally</div><div>migrated into the modules/ directory.</div>" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=18;fillColor=#fff2cc;strokeColor=#d6b656;align=left;verticalAlign=top;fontSize=13;" vertex="1" parent="1">
|
||||
<mxGeometry x="650" y="390" width="270" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 187 KiB |
@@ -1,45 +0,0 @@
|
||||
# Puter Documentation
|
||||
|
||||
Hi, you've found Puter's wiki page on GitHub! If you were looking for
|
||||
something else, you might find it in the links below.
|
||||
All of the wiki docs are generated from `doc/` directories in the main
|
||||
repository, so it's best to edit docs there rather than here.
|
||||
|
||||
## Users
|
||||
|
||||
If you have general questions about using [Puter](https://puter.com),
|
||||
our [community Discord](https://discord.gg/PQcx7Teh8u) and
|
||||
[subreddit](https://www.reddit.com/r/puter/) are good places
|
||||
to ask questions.
|
||||
|
||||
## Deployers
|
||||
|
||||
- [Hosting Instructions](./self-hosters/instructions.md)
|
||||
- [Configuration](./self-hosters/config.md)
|
||||
- [Domain Setup](./self-hosters/domains.md)
|
||||
- [Support Levels](./self-hosters/support.md)
|
||||
|
||||
## App Developer Links
|
||||
- [developer.puter.com](https://developer.puter.com)
|
||||
- [docs.puter.com](https://docs.puter.com)
|
||||
- share your apps on [Reddit](https://www.reddit.com/r/puter/) or
|
||||
[Discord](https://discord.gg/PQcx7Teh8u)
|
||||
|
||||
## Contributor Documentation
|
||||
|
||||
### Where to Start
|
||||
|
||||
Start with [Repo Structure and Tooling](./contributors/structure.md).
|
||||
|
||||
### Index
|
||||
|
||||
- **Conventions**
|
||||
- [Repo Structure and Tooling](./contributors/structure.md)
|
||||
- How directories and files are organized in our GitHub repo
|
||||
- What tools are used to build parts of Puter
|
||||
- [Comment Prefixes](./contributors/comment_prefixes.md)
|
||||
- A convention we use for line comments in code
|
||||
|
||||
- [Frontend Documentation](/src/gui/doc)
|
||||
- [Backend Documentation](/src/backend/doc)
|
||||
- [Extensions](./contributors/extensions/)
|
||||
@@ -0,0 +1,9 @@
|
||||
# Share Links
|
||||
|
||||
A **share link** is a link to Puter's origin which contains a token
|
||||
in the query string (the key is `share_token`; ex:
|
||||
`http://puter.localhost:4100?share_token=...`).
|
||||
|
||||
This token can be used to apply permissions to the user of the
|
||||
current session **if and only if** this user's email is confirmed
|
||||
and matches the share link's associated email.
|
||||
@@ -1,60 +0,0 @@
|
||||
## Puter Drivers
|
||||
|
||||
### **POST** `/drivers/call`
|
||||
|
||||
#### Notes
|
||||
|
||||
- **HTTP response status** -
|
||||
A successful driver response, even if the response is an error message, will always have HTTP status `200`. Note that sometimes this will include rate limit and usage limit errors as well.
|
||||
|
||||
This endpoint allows you to call a Puter driver. Whether or not the
|
||||
driver call fails, this endpoint will respond with HTTP 200 OK.
|
||||
When a driver call fails, you will get a JSON response from the driver
|
||||
with
|
||||
|
||||
#### Parameters
|
||||
|
||||
Parameters are provided in the request body. The content type of the
|
||||
request should be `application/json`.
|
||||
|
||||
- **interface:** `string`
|
||||
- **description:** The type of driver to call. For example,
|
||||
LLMs use the interface called `puter-chat-completion`.
|
||||
- **service:** `string`
|
||||
- **description:** The name of the service to use. For example, the `claude` service might be used for `puter-chat-completion`.
|
||||
- **method:** `string`
|
||||
- **description:** The name of the method to call. For example, LLMs implement `complete` which does a chat completion, and `list` which lists models.
|
||||
- **args:** `object`
|
||||
- **description:** Parametized arguments for the driver call. For example, `puter-chat-completion`'s `complete` method supports the arguments `messages` and `temperature` (and others), so you might set this to `{ "messages": [...], "temperature": 1.2 }`
|
||||
|
||||
#### Example
|
||||
```json
|
||||
{
|
||||
"interface": "<name of interface>",
|
||||
"service": "<name of service>",
|
||||
"method": "<name of method>",
|
||||
"args": { "parametized": "arguments" }
|
||||
}
|
||||
```
|
||||
|
||||
#### Response
|
||||
|
||||
- **Error Response** - Driver error responses will always have **status 200**, content type `application/json`, and a response body in this format:
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"error": {
|
||||
"code": "string identifier for the error",
|
||||
"message": "some message about the error",
|
||||
}
|
||||
}
|
||||
```
|
||||
- **Success Response** - The success response is either a JSON response
|
||||
wrapped in `{ "success": true, "result": ___ }`, or a response with a
|
||||
`Content-Type` that is **not** `application/json`.
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"result": {}
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,26 @@
|
||||
# `{"$": "app-share"}` - File Share
|
||||
|
||||
## Structure
|
||||
- **name:** name of the app
|
||||
- **uid:** name of the app
|
||||
|
||||
## Notes
|
||||
- One of `name` or `uid` **must** be specified
|
||||
|
||||
## Examples
|
||||
|
||||
Share app by name
|
||||
```json
|
||||
{
|
||||
"$": "app-share",
|
||||
"name": "some-app-name"
|
||||
}
|
||||
```
|
||||
|
||||
Share app by uid
|
||||
```json
|
||||
{
|
||||
"$": "app-share",
|
||||
"uid": "app-0a7337f7-0f8a-49ca-b71a-38d39304fe04"
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,32 @@
|
||||
# `{"$": "file-share"}` - File Share
|
||||
|
||||
## Structure
|
||||
- **path:** file or directory's path or uuid
|
||||
- **access:** one of: `"read"`, `"write"` (default: `"read"`)
|
||||
|
||||
## Examples
|
||||
|
||||
Share with read access
|
||||
```json
|
||||
{
|
||||
"$": "file-share",
|
||||
"path": "/some/path"
|
||||
}
|
||||
```
|
||||
|
||||
Share with write access
|
||||
```json
|
||||
{
|
||||
"$": "file-share",
|
||||
"path": "/some/path",
|
||||
"access": "write"
|
||||
}
|
||||
```
|
||||
|
||||
Using a UUID
|
||||
```json
|
||||
{
|
||||
"$": "file-share",
|
||||
"path": "b912c381-0c0b-466c-95a6-f9a4fc680a7d"
|
||||
}
|
||||
```
|
||||
@@ -27,7 +27,4 @@ This document will be updated on an _as-needed_ basis.
|
||||
[track-comments.md](../devmeta/track-comments.md)
|
||||
- `wet:` is usesd to track anything that doesn't adhere
|
||||
to the DRY principle; the following message should describe
|
||||
where similar code is
|
||||
- `compare(<identifier>):` is used to note differences between other
|
||||
implementations of a similar idea
|
||||
- `name:` pedantic commentary on the name of something
|
||||
where similar code is
|
||||
@@ -1,105 +0,0 @@
|
||||
# Local Email Testing
|
||||
|
||||
This guide describes how to set up and use [MailHog](https://github.com/mailhog/MailHog) for local email testing in Puter development. MailHog provides a local email server that captures outgoing emails for testing purposes without actually sending them to real recipients.
|
||||
|
||||
## Setup
|
||||
|
||||
### 1. Configure Puter
|
||||
|
||||
Add the following configuration to your `volatile/config/config.json` file:
|
||||
|
||||
```json
|
||||
"email": {
|
||||
"host": "localhost",
|
||||
"port": 1025
|
||||
}
|
||||
```
|
||||
|
||||
### 2. Install MailHog
|
||||
|
||||
Download and run MailHog on your local machine:
|
||||
|
||||
```bash
|
||||
# Install MailHog
|
||||
wget https://github.com/mailhog/MailHog/releases/download/v1.0.1/MailHog_linux_amd64
|
||||
chmod +x MailHog_linux_amd64
|
||||
./MailHog_linux_amd64
|
||||
```
|
||||
|
||||
### 3. Install Nodemailer
|
||||
|
||||
Install Nodemailer to send test emails to the SMTP server:
|
||||
|
||||
```bash
|
||||
npm install nodemailer
|
||||
```
|
||||
|
||||
## Using MailHog
|
||||
|
||||
### Access Web Interface
|
||||
|
||||
Once MailHog is running, access the web interface at:
|
||||
[http://127.0.0.1:8025/](http://127.0.0.1:8025/)
|
||||
|
||||
All captured emails and their recipients will be displayed in this interface.
|
||||
|
||||
### Testing Your MailHog Setup with Nodemailer
|
||||
|
||||
You can verify that your MailHog instance is working correctly by creating a simple test script using Nodemailer. This allows you to send test emails that will be captured by MailHog without actually delivering them to real recipients.
|
||||
|
||||
Here's a sample script you can use to test your MailHog setup:
|
||||
|
||||
```javascript
|
||||
import nodemailer from "nodemailer";
|
||||
|
||||
// Configure transporter to use MailHog
|
||||
const transporter = nodemailer.createTransport({
|
||||
host: "localhost", // MailHog SMTP server address
|
||||
port: 1025, // Default MailHog SMTP port
|
||||
secure: false // No SSL/TLS required for MailHog
|
||||
});
|
||||
|
||||
// Define a test email
|
||||
const mailOptions = {
|
||||
from: "[email protected]",
|
||||
to: "[email protected]",
|
||||
subject: "Hello from Nodemailer!",
|
||||
text: "This is a test email sent using Nodemailer."
|
||||
};
|
||||
|
||||
// Send the test email
|
||||
transporter.sendMail(mailOptions)
|
||||
.then(info => console.log("Email sent:", info.response))
|
||||
.catch(error => console.error("Error:", error));
|
||||
```
|
||||
|
||||
After sending an email with this script, you can view it in the MailHog web interface:
|
||||
|
||||
### How Puter Uses Nodemailer
|
||||
|
||||
Puter itself uses Nodemailer for sending emails through its `EmailService` class located in `/src/backend/src/services/EmailService.js`. This service handles various email templates for:
|
||||
|
||||
- Account verification
|
||||
- Password recovery
|
||||
- Two-factor authentication notifications
|
||||
- File sharing notifications
|
||||
- App approval notifications
|
||||
- And more
|
||||
|
||||
The service creates a Nodemailer transport using the configuration from your `config.json` file, which is why setting up MailHog correctly is important for testing Puter's email functionality during development.
|
||||
|
||||
<img src="image.png" alt="Email in MailHog interface" width="300" height="200">
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If you encounter issues with MailHog:
|
||||
|
||||
1. Check if MailHog is running:
|
||||
```bash
|
||||
ps aux | grep MailHog
|
||||
```
|
||||
|
||||
2. Ensure the correct port configurations in both MailHog and your application.
|
||||
|
||||
3. Check for any error messages in the MailHog console output.
|
||||
|
||||
@@ -1,38 +1,2 @@
|
||||
# Puter Extensions
|
||||
|
||||
## Quickstart
|
||||
|
||||
Create and edit this file: `mods/mods_enabled/hello-puter.js`
|
||||
|
||||
```javascript
|
||||
const { UserActorType, AppUnderUserActorType } = use.core;
|
||||
|
||||
extension.get('/hello-puter', (req, res) => {
|
||||
const actor = req.actor;
|
||||
let who = 'unknown';
|
||||
if ( actor.type instanceof UserActorType ) {
|
||||
who = actor.type.user.username;
|
||||
}
|
||||
if ( actor.type instanceof AppUnderUserActorType ) {
|
||||
who = actor.type.app.name + ' on behalf of ' + actor.type.user.username;
|
||||
}
|
||||
res.send(`Hello, ${who}!`);
|
||||
});
|
||||
```
|
||||
|
||||
## Events
|
||||
|
||||
//
|
||||
|
||||
This is subject to change as we make efforts to simplify the process.
|
||||
|
||||
### Step 1: Configure a Mod Directory
|
||||
|
||||
Add this to your config:
|
||||
```json
|
||||
"mod_directories": [
|
||||
"{source}/../mods/mods_available"
|
||||
]
|
||||
```
|
||||
|
||||
This adds the `mods/mods_available` directory to this
|
||||
### `vscode`
|
||||
- `es6-string-html`
|
||||
@@ -1,89 +0,0 @@
|
||||
# Puter Extensions
|
||||
|
||||
## Quickstart
|
||||
|
||||
Create and edit this file: `mods/mods_enabled/hello-puter.js`
|
||||
|
||||
```javascript
|
||||
// You can get definitions exposed by Puter via `use`
|
||||
const { UserActorType, AppUnderUserActorType } = use.core;
|
||||
|
||||
// Endpoints can be registered directly on an extension
|
||||
extension.get('/hello-puter', (req, res) => {
|
||||
const actor = req.actor;
|
||||
|
||||
|
||||
// Make a string "who" which says:
|
||||
// "<username>", or:
|
||||
// "<app> acting on behalf of <username>"
|
||||
let who = 'unknown';
|
||||
if ( actor.type instanceof UserActorType ) {
|
||||
who = actor.type.user.username;
|
||||
}
|
||||
if ( actor.type instanceof AppUnderUserActorType ) {
|
||||
who = actor.type.app.name
|
||||
+ ' on behalf of '
|
||||
+ actor.type.user.username;
|
||||
}
|
||||
|
||||
res.send(`Hello, ${who}!`);
|
||||
});
|
||||
|
||||
// Extensions can listen to events and manipulate Puter's behavior
|
||||
extension.on('core.email.validate', event => {
|
||||
if ( event.email.includes('evil') ) {
|
||||
event.allow = false;
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
### Scope of `extension` and `use`
|
||||
|
||||
It is important to know that the `extension` global is temporary and does not
|
||||
exist after your extension is loaded. If you wish to access the extension
|
||||
object within a callback you will need to first bind it to a variable in
|
||||
your extension's scope.
|
||||
|
||||
```javascript
|
||||
const ext = extension;
|
||||
extension.on('some-event', () => {
|
||||
// This would throw an error
|
||||
// extension.something();
|
||||
|
||||
// This works
|
||||
ext.example();
|
||||
})
|
||||
```
|
||||
|
||||
The same is true for `use`. Calls to `use` should happen at the top of
|
||||
the file, just like imports in ES6.
|
||||
|
||||
## Database Access
|
||||
|
||||
A database access object is provided to the extension via `extension.db`.
|
||||
You **must** scope `extension` to another variable (`ext` in this example)
|
||||
in order to access `db` from callbacks.
|
||||
|
||||
```javascript
|
||||
const ext = extension;
|
||||
|
||||
extension.get('/user-count', { noauth: true, mw: [] }, (req, res) => {
|
||||
const [count] = await ext.db.read(
|
||||
'SELECT COUNT(*) as c FROM `user`'
|
||||
);
|
||||
});
|
||||
```
|
||||
|
||||
The database access object has the following methods:
|
||||
- `read(query, params)` - read from the database using a prepared statement. If read-replicas are enabled, this will use a replica.
|
||||
- `write(query, params)` - write to the database using a prepared statement. If read-replicas are enabled, this will write to the primary.
|
||||
- `pread(query, params)` - read from the database using a prepared statement. If read-replicas are enabled, this will read from the primary.
|
||||
- `requireRead(query, params)` - read from the database using a prepared statement. If read-replicas are enabled, this will try reading from the replica first. If there are no results, a second attempt will be made on the primary.
|
||||
|
||||
## Events
|
||||
|
||||
See [events.md](./events.md)
|
||||
|
||||
## Definitions
|
||||
|
||||
See [definitions.md](./definitions.md)
|
||||
@@ -1,14 +0,0 @@
|
||||
## Definitions
|
||||
|
||||
### `core.config` - Configuration
|
||||
|
||||
Puter's configuration object. This includes values from `config.json` or their
|
||||
defaults, and computed values like `origin` and `api_origin`.
|
||||
|
||||
```javascript
|
||||
const config = use('core.config');
|
||||
|
||||
extension.get('/get-origin', { noauth: true }, (req, res) => {
|
||||
res.send(config.origin);
|
||||
})
|
||||
```
|
||||
@@ -1,816 +0,0 @@
|
||||
export default [
|
||||
{
|
||||
properties: {
|
||||
completionId: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'completionId',
|
||||
notes: [],
|
||||
},
|
||||
allow: {
|
||||
type: 'boolean',
|
||||
mutability: 'mutable',
|
||||
summary: 'whether the operation is allowed',
|
||||
notes: [],
|
||||
},
|
||||
intended_service: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'intended service',
|
||||
notes: [],
|
||||
},
|
||||
parameters: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'parameters',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'ai.prompt.complete',
|
||||
description: `
|
||||
This event is emitted for ai prompt complete operations.
|
||||
`,
|
||||
properties: {
|
||||
intended_service: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'intended service',
|
||||
notes: [],
|
||||
},
|
||||
parameters: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'parameters',
|
||||
notes: [],
|
||||
},
|
||||
result: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'result',
|
||||
notes: [],
|
||||
},
|
||||
model_used: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'model used',
|
||||
notes: [],
|
||||
},
|
||||
service_used: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'service used',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'ai.prompt.cost-calculated',
|
||||
description: `
|
||||
This event is emitted for ai prompt cost calculated operations.
|
||||
`,
|
||||
},
|
||||
{
|
||||
id: 'ai.prompt.validate',
|
||||
description: `
|
||||
This event is emitted when a validate is being validated.
|
||||
The event can be used to block certain validates from being validated.
|
||||
`,
|
||||
properties: {
|
||||
completionId: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'completionId',
|
||||
notes: [],
|
||||
},
|
||||
allow: {
|
||||
type: 'boolean',
|
||||
mutability: 'mutable',
|
||||
summary: 'whether the operation is allowed',
|
||||
notes: [
|
||||
'If set to false, the ai will be considered invalid.',
|
||||
],
|
||||
},
|
||||
intended_service: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'intended service',
|
||||
notes: [],
|
||||
},
|
||||
parameters: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'parameters',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'app.new-icon',
|
||||
description: `
|
||||
This event is emitted for app new icon operations.
|
||||
`,
|
||||
properties: {
|
||||
data_url: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'data url',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'app.rename',
|
||||
description: `
|
||||
This event is emitted for app rename operations.
|
||||
`,
|
||||
properties: {
|
||||
data_url: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'data url',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'apps.invalidate',
|
||||
description: `
|
||||
This event is emitted when a invalidate is being validated.
|
||||
The event can be used to block certain invalidates from being validated.
|
||||
`,
|
||||
properties: {
|
||||
apps: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'apps',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'captcha.check',
|
||||
description: `
|
||||
This event is emitted for captcha check operations.
|
||||
`,
|
||||
properties: {
|
||||
required: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'required',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'core.email.validate',
|
||||
description: `
|
||||
This event is emitted when an email is being validated.
|
||||
The event can be used to block certain emails from being validated.
|
||||
`,
|
||||
properties: {
|
||||
email: {
|
||||
type: 'string',
|
||||
mutability: 'no-effect',
|
||||
summary: 'the email being validated',
|
||||
notes: [
|
||||
'The email may have already been cleaned.',
|
||||
],
|
||||
},
|
||||
allow: {
|
||||
type: 'boolean',
|
||||
mutability: 'mutable',
|
||||
summary: 'whether the email is allowed',
|
||||
notes: [
|
||||
'If set to false, the email will be considered invalid.',
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'core.fs.create.directory',
|
||||
description: `
|
||||
This event is emitted when a directory is created.
|
||||
`,
|
||||
properties: {
|
||||
node: {
|
||||
type: 'FSNodeContext',
|
||||
mutability: 'no-effect',
|
||||
summary: 'the directory that was created',
|
||||
},
|
||||
context: {
|
||||
type: 'Context',
|
||||
mutability: 'no-effect',
|
||||
summary: 'current context',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'core.request.measured',
|
||||
description: `
|
||||
This event is emitted when a requests incoming and outgoing bytes
|
||||
have been measured.
|
||||
`,
|
||||
example: {
|
||||
language: 'javascript',
|
||||
code: /*javascript*/`
|
||||
extension.on('core.request.measured', data => {
|
||||
const measurements = data.measurements;
|
||||
// measurements = { sz_incoming: integer, sz_outgoing: integer }
|
||||
|
||||
const actor = data.actor; // instance of Actor
|
||||
|
||||
console.log('\x1B[36;1m === MEASUREMENT ===\x1B[0m\n', {
|
||||
actor: data.actor.uid,
|
||||
measurements: data.measurements
|
||||
});
|
||||
});
|
||||
`,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'credit.check-available',
|
||||
description: `
|
||||
This event is emitted for credit check available operations.
|
||||
`,
|
||||
properties: {
|
||||
available: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'available',
|
||||
notes: [],
|
||||
},
|
||||
cost_uuid: {
|
||||
type: 'string',
|
||||
mutability: 'no-effect',
|
||||
summary: 'cost uuid',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'credit.funding-update',
|
||||
description: `
|
||||
This event is emitted when a funding-update is updated.
|
||||
`,
|
||||
properties: {
|
||||
available: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'available',
|
||||
notes: [],
|
||||
},
|
||||
cost_uuid: {
|
||||
type: 'string',
|
||||
mutability: 'no-effect',
|
||||
summary: 'cost uuid',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'credit.record-cost',
|
||||
description: `
|
||||
This event is emitted for credit record cost operations.
|
||||
`,
|
||||
properties: {
|
||||
available: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'available',
|
||||
notes: [],
|
||||
},
|
||||
cost_uuid: {
|
||||
type: 'string',
|
||||
mutability: 'no-effect',
|
||||
summary: 'cost uuid',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'driver.create-call-context',
|
||||
description: `
|
||||
This event is emitted when a create-call-context is created.
|
||||
`,
|
||||
properties: {
|
||||
usages: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'usages',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'email.validate',
|
||||
description: `
|
||||
This event is emitted when a validate is being validated.
|
||||
The event can be used to block certain validates from being validated.
|
||||
`,
|
||||
properties: {
|
||||
allow: {
|
||||
type: 'boolean',
|
||||
mutability: 'mutable',
|
||||
summary: 'whether the operation is allowed',
|
||||
notes: [
|
||||
'If set to false, the email will be considered invalid.',
|
||||
],
|
||||
},
|
||||
email: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'email',
|
||||
notes: [
|
||||
'The email may have already been cleaned.',
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'fs.create.directory',
|
||||
description: `
|
||||
This event is emitted when a directory is created.
|
||||
`,
|
||||
},
|
||||
{
|
||||
id: 'fs.create.file',
|
||||
description: `
|
||||
This event is emitted when a file is created.
|
||||
`,
|
||||
properties: {
|
||||
context: {
|
||||
type: 'Context',
|
||||
mutability: 'no-effect',
|
||||
summary: 'current context',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'fs.create.shortcut',
|
||||
description: `
|
||||
This event is emitted when a shortcut is created.
|
||||
`,
|
||||
},
|
||||
{
|
||||
id: 'fs.create.symlink',
|
||||
description: `
|
||||
This event is emitted when a symlink is created.
|
||||
`,
|
||||
},
|
||||
{
|
||||
id: 'fs.move.file',
|
||||
description: `
|
||||
This event is emitted for fs move file operations.
|
||||
`,
|
||||
properties: {
|
||||
moved: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'moved',
|
||||
notes: [],
|
||||
},
|
||||
old_path: {
|
||||
type: 'string',
|
||||
mutability: 'no-effect',
|
||||
summary: 'path to the affected resource',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'fs.pending.file',
|
||||
description: `
|
||||
This event is emitted for fs pending file operations.
|
||||
`,
|
||||
},
|
||||
{
|
||||
id: 'fs.storage.progress.copy',
|
||||
description: `
|
||||
This event reports progress of a copy operation.
|
||||
`,
|
||||
properties: {
|
||||
context: {
|
||||
type: 'Context',
|
||||
mutability: 'no-effect',
|
||||
summary: 'current context',
|
||||
notes: [],
|
||||
},
|
||||
meta: {
|
||||
type: 'object',
|
||||
mutability: 'no-effect',
|
||||
summary: 'additional metadata for the operation',
|
||||
notes: [],
|
||||
},
|
||||
item_path: {
|
||||
type: 'string',
|
||||
mutability: 'no-effect',
|
||||
summary: 'path to the affected resource',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'fs.storage.upload-progress',
|
||||
description: `
|
||||
This event reports progress of a upload-progress operation.
|
||||
`,
|
||||
},
|
||||
{
|
||||
id: 'fs.write.file',
|
||||
description: `
|
||||
This event is emitted when a file is updated.
|
||||
`,
|
||||
properties: {
|
||||
context: {
|
||||
type: 'Context',
|
||||
mutability: 'no-effect',
|
||||
summary: 'current context',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'ip.validate',
|
||||
description: `
|
||||
This event is emitted when a validate is being validated.
|
||||
The event can be used to block certain validates from being validated.
|
||||
`,
|
||||
properties: {
|
||||
res: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'res',
|
||||
notes: [],
|
||||
},
|
||||
end_: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'end ',
|
||||
notes: [],
|
||||
},
|
||||
end: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'end',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'outer.fs.write-hash',
|
||||
description: `
|
||||
This event is emitted when a write-hash is updated.
|
||||
`,
|
||||
properties: {
|
||||
uuid: {
|
||||
type: 'string',
|
||||
mutability: 'no-effect',
|
||||
summary: 'uuid',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'outer.gui.item.added',
|
||||
description: `
|
||||
This event is emitted for outer gui item added operations.
|
||||
`,
|
||||
properties: {
|
||||
response: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'response',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'outer.gui.item.moved',
|
||||
description: `
|
||||
This event is emitted for outer gui item moved operations.
|
||||
`,
|
||||
properties: {
|
||||
response: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'response',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'outer.gui.item.pending',
|
||||
description: `
|
||||
This event is emitted for outer gui item pending operations.
|
||||
`,
|
||||
properties: {
|
||||
response: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'response',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'outer.gui.item.updated',
|
||||
description: `
|
||||
This event is emitted when a updated is updated.
|
||||
`,
|
||||
properties: {
|
||||
response: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'response',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'outer.gui.notif.ack',
|
||||
description: `
|
||||
This event is emitted for outer gui notif ack operations.
|
||||
`,
|
||||
properties: {
|
||||
response: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'response',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'outer.gui.notif.message',
|
||||
description: `
|
||||
This event is emitted for outer gui notif message operations.
|
||||
`,
|
||||
properties: {
|
||||
response: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'response',
|
||||
notes: [],
|
||||
},
|
||||
notification: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'notification',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'outer.gui.notif.persisted',
|
||||
description: `
|
||||
This event is emitted for outer gui notif persisted operations.
|
||||
`,
|
||||
properties: {
|
||||
response: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'response',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'outer.gui.notif.unreads',
|
||||
description: `
|
||||
This event is emitted for outer gui notif unreads operations.
|
||||
`,
|
||||
properties: {
|
||||
response: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'response',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'outer.gui.submission.done',
|
||||
description: `
|
||||
This event is emitted for outer gui submission done operations.
|
||||
`,
|
||||
properties: {
|
||||
response: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'response',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'outer.gui.usage.update',
|
||||
description: `
|
||||
This event is emitted when a update is updated.
|
||||
`,
|
||||
},
|
||||
{
|
||||
id: 'outer.thread.notify-subscribers',
|
||||
description: `
|
||||
This event is emitted for outer thread notify subscribers operations.
|
||||
`,
|
||||
properties: {
|
||||
uid: {
|
||||
type: 'string',
|
||||
mutability: 'no-effect',
|
||||
summary: 'uid',
|
||||
notes: [],
|
||||
},
|
||||
action: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'action',
|
||||
notes: [],
|
||||
},
|
||||
data: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'data',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'puter.signup',
|
||||
description: `
|
||||
This event is emitted for puter signup operations.
|
||||
`,
|
||||
properties: {
|
||||
ip: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'ip',
|
||||
notes: [],
|
||||
},
|
||||
user_agent: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'user agent',
|
||||
notes: [],
|
||||
},
|
||||
body: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'body',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'request.measured',
|
||||
description: `
|
||||
This event is emitted for request measured operations.
|
||||
`,
|
||||
properties: {
|
||||
req: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'req',
|
||||
notes: [],
|
||||
},
|
||||
res: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'res',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'request.will-be-handled',
|
||||
description: `
|
||||
This event is emitted for request will be handled operations.
|
||||
`,
|
||||
properties: {
|
||||
res: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'res',
|
||||
notes: [],
|
||||
},
|
||||
end_: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'end ',
|
||||
notes: [],
|
||||
},
|
||||
end: {
|
||||
type: 'any',
|
||||
mutability: 'mutable',
|
||||
summary: 'end',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'template-service.hello',
|
||||
description: `
|
||||
This event is emitted for template-service hello operations.
|
||||
`,
|
||||
},
|
||||
{
|
||||
id: 'usages.query',
|
||||
description: `
|
||||
This event is emitted for usages query operations.
|
||||
`,
|
||||
properties: {
|
||||
usages: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'usages',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'user.email-changed',
|
||||
description: `
|
||||
This event is emitted for user email changed operations.
|
||||
`,
|
||||
properties: {
|
||||
new_email: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'new email',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'user.email-confirmed',
|
||||
description: `
|
||||
This event is emitted for user email confirmed operations.
|
||||
`,
|
||||
properties: {
|
||||
email: {
|
||||
type: 'any',
|
||||
mutability: 'no-effect',
|
||||
summary: 'email',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'user.save_account',
|
||||
description: `
|
||||
This event is emitted for user save_account operations.
|
||||
`,
|
||||
properties: {
|
||||
user: {
|
||||
type: 'User',
|
||||
mutability: 'no-effect',
|
||||
summary: 'user associated with the operation',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'web.socket.connected',
|
||||
description: `
|
||||
This event is emitted for web socket connected operations.
|
||||
`,
|
||||
properties: {
|
||||
user: {
|
||||
type: 'User',
|
||||
mutability: 'mutable',
|
||||
summary: 'user associated with the operation',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'web.socket.user-connected',
|
||||
description: `
|
||||
This event is emitted for web socket user connected operations.
|
||||
`,
|
||||
properties: {
|
||||
user: {
|
||||
type: 'User',
|
||||
mutability: 'mutable',
|
||||
summary: 'user associated with the operation',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'wisp.get-policy',
|
||||
description: `
|
||||
This event is emitted for wisp get policy operations.
|
||||
`,
|
||||
properties: {
|
||||
policy: {
|
||||
type: 'Policy',
|
||||
mutability: 'mutable',
|
||||
summary: 'policy information for the operation',
|
||||
notes: [],
|
||||
},
|
||||
},
|
||||
},
|
||||
];
|
||||
@@ -1,761 +0,0 @@
|
||||
#### Property `completionId`
|
||||
|
||||
completionId
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
#### Property `allow`
|
||||
|
||||
whether the operation is allowed
|
||||
- **Type**: boolean
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
#### Property `intended_service`
|
||||
|
||||
intended service
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
#### Property `parameters`
|
||||
|
||||
parameters
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `ai.prompt.complete`
|
||||
|
||||
This event is emitted for ai prompt complete operations.
|
||||
|
||||
#### Property `intended_service`
|
||||
|
||||
intended service
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
#### Property `parameters`
|
||||
|
||||
parameters
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
#### Property `result`
|
||||
|
||||
result
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
#### Property `model_used`
|
||||
|
||||
model used
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
#### Property `service_used`
|
||||
|
||||
service used
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `ai.prompt.cost-calculated`
|
||||
|
||||
This event is emitted for ai prompt cost calculated operations.
|
||||
|
||||
|
||||
### `ai.prompt.validate`
|
||||
|
||||
This event is emitted when a validate is being validated.
|
||||
The event can be used to block certain validates from being validated.
|
||||
|
||||
#### Property `completionId`
|
||||
|
||||
completionId
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
#### Property `allow`
|
||||
|
||||
whether the operation is allowed
|
||||
- **Type**: boolean
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
- If set to false, the ai will be considered invalid.
|
||||
|
||||
#### Property `intended_service`
|
||||
|
||||
intended service
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
#### Property `parameters`
|
||||
|
||||
parameters
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `app.new-icon`
|
||||
|
||||
This event is emitted for app new icon operations.
|
||||
|
||||
#### Property `data_url`
|
||||
|
||||
data url
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `app.rename`
|
||||
|
||||
This event is emitted for app rename operations.
|
||||
|
||||
#### Property `data_url`
|
||||
|
||||
data url
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `apps.invalidate`
|
||||
|
||||
This event is emitted when a invalidate is being validated.
|
||||
The event can be used to block certain invalidates from being validated.
|
||||
|
||||
#### Property `apps`
|
||||
|
||||
apps
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `captcha.check`
|
||||
|
||||
This event is emitted for captcha check operations.
|
||||
|
||||
#### Property `required`
|
||||
|
||||
required
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `core.email.validate`
|
||||
|
||||
This event is emitted when an email is being validated.
|
||||
The event can be used to block certain emails from being validated.
|
||||
|
||||
#### Property `email`
|
||||
|
||||
the email being validated
|
||||
- **Type**: string
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
- The email may have already been cleaned.
|
||||
|
||||
#### Property `allow`
|
||||
|
||||
whether the email is allowed
|
||||
- **Type**: boolean
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
- If set to false, the email will be considered invalid.
|
||||
|
||||
|
||||
### `core.fs.create.directory`
|
||||
|
||||
This event is emitted when a directory is created.
|
||||
|
||||
#### Property `node`
|
||||
|
||||
the directory that was created
|
||||
- **Type**: FSNodeContext
|
||||
- **Mutability**: no-effect
|
||||
|
||||
#### Property `context`
|
||||
|
||||
current context
|
||||
- **Type**: Context
|
||||
- **Mutability**: no-effect
|
||||
|
||||
|
||||
### `core.request.measured`
|
||||
|
||||
This event is emitted when a requests incoming and outgoing bytes
|
||||
have been measured.
|
||||
|
||||
#### Example
|
||||
|
||||
```javascript
|
||||
extension.on('core.request.measured', data => {
|
||||
const measurements = data.measurements;
|
||||
// measurements = { sz_incoming: integer, sz_outgoing: integer }
|
||||
|
||||
const actor = data.actor; // instance of Actor
|
||||
|
||||
console.log('[36;1m === MEASUREMENT ===[0m
|
||||
', {
|
||||
actor: data.actor.uid,
|
||||
measurements: data.measurements
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
### `credit.check-available`
|
||||
|
||||
This event is emitted for credit check available operations.
|
||||
|
||||
#### Property `available`
|
||||
|
||||
available
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
#### Property `cost_uuid`
|
||||
|
||||
cost uuid
|
||||
- **Type**: string
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `credit.funding-update`
|
||||
|
||||
This event is emitted when a funding-update is updated.
|
||||
|
||||
#### Property `available`
|
||||
|
||||
available
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
#### Property `cost_uuid`
|
||||
|
||||
cost uuid
|
||||
- **Type**: string
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `credit.record-cost`
|
||||
|
||||
This event is emitted for credit record cost operations.
|
||||
|
||||
#### Property `available`
|
||||
|
||||
available
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
#### Property `cost_uuid`
|
||||
|
||||
cost uuid
|
||||
- **Type**: string
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `driver.create-call-context`
|
||||
|
||||
This event is emitted when a create-call-context is created.
|
||||
|
||||
#### Property `usages`
|
||||
|
||||
usages
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `email.validate`
|
||||
|
||||
This event is emitted when a validate is being validated.
|
||||
The event can be used to block certain validates from being validated.
|
||||
|
||||
#### Property `allow`
|
||||
|
||||
whether the operation is allowed
|
||||
- **Type**: boolean
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
- If set to false, the email will be considered invalid.
|
||||
|
||||
#### Property `email`
|
||||
|
||||
email
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
- The email may have already been cleaned.
|
||||
|
||||
|
||||
### `fs.create.directory`
|
||||
|
||||
This event is emitted when a directory is created.
|
||||
|
||||
|
||||
### `fs.create.file`
|
||||
|
||||
This event is emitted when a file is created.
|
||||
|
||||
#### Property `context`
|
||||
|
||||
current context
|
||||
- **Type**: Context
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `fs.create.shortcut`
|
||||
|
||||
This event is emitted when a shortcut is created.
|
||||
|
||||
|
||||
### `fs.create.symlink`
|
||||
|
||||
This event is emitted when a symlink is created.
|
||||
|
||||
|
||||
### `fs.move.file`
|
||||
|
||||
This event is emitted for fs move file operations.
|
||||
|
||||
#### Property `moved`
|
||||
|
||||
moved
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
#### Property `old_path`
|
||||
|
||||
path to the affected resource
|
||||
- **Type**: string
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `fs.pending.file`
|
||||
|
||||
This event is emitted for fs pending file operations.
|
||||
|
||||
|
||||
### `fs.storage.progress.copy`
|
||||
|
||||
This event reports progress of a copy operation.
|
||||
|
||||
#### Property `context`
|
||||
|
||||
current context
|
||||
- **Type**: Context
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
#### Property `meta`
|
||||
|
||||
additional metadata for the operation
|
||||
- **Type**: object
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
#### Property `item_path`
|
||||
|
||||
path to the affected resource
|
||||
- **Type**: string
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `fs.storage.upload-progress`
|
||||
|
||||
This event reports progress of a upload-progress operation.
|
||||
|
||||
|
||||
### `fs.write.file`
|
||||
|
||||
This event is emitted when a file is updated.
|
||||
|
||||
#### Property `context`
|
||||
|
||||
current context
|
||||
- **Type**: Context
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `ip.validate`
|
||||
|
||||
This event is emitted when a validate is being validated.
|
||||
The event can be used to block certain validates from being validated.
|
||||
|
||||
#### Property `res`
|
||||
|
||||
res
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
#### Property `end_`
|
||||
|
||||
end
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
#### Property `end`
|
||||
|
||||
end
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `outer.fs.write-hash`
|
||||
|
||||
This event is emitted when a write-hash is updated.
|
||||
|
||||
#### Property `uuid`
|
||||
|
||||
uuid
|
||||
- **Type**: string
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `outer.gui.item.added`
|
||||
|
||||
This event is emitted for outer gui item added operations.
|
||||
|
||||
#### Property `response`
|
||||
|
||||
response
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `outer.gui.item.moved`
|
||||
|
||||
This event is emitted for outer gui item moved operations.
|
||||
|
||||
#### Property `response`
|
||||
|
||||
response
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `outer.gui.item.pending`
|
||||
|
||||
This event is emitted for outer gui item pending operations.
|
||||
|
||||
#### Property `response`
|
||||
|
||||
response
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `outer.gui.item.updated`
|
||||
|
||||
This event is emitted when a updated is updated.
|
||||
|
||||
#### Property `response`
|
||||
|
||||
response
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `outer.gui.notif.ack`
|
||||
|
||||
This event is emitted for outer gui notif ack operations.
|
||||
|
||||
#### Property `response`
|
||||
|
||||
response
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `outer.gui.notif.message`
|
||||
|
||||
This event is emitted for outer gui notif message operations.
|
||||
|
||||
#### Property `response`
|
||||
|
||||
response
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
#### Property `notification`
|
||||
|
||||
notification
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `outer.gui.notif.persisted`
|
||||
|
||||
This event is emitted for outer gui notif persisted operations.
|
||||
|
||||
#### Property `response`
|
||||
|
||||
response
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `outer.gui.notif.unreads`
|
||||
|
||||
This event is emitted for outer gui notif unreads operations.
|
||||
|
||||
#### Property `response`
|
||||
|
||||
response
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `outer.gui.submission.done`
|
||||
|
||||
This event is emitted for outer gui submission done operations.
|
||||
|
||||
#### Property `response`
|
||||
|
||||
response
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `outer.gui.usage.update`
|
||||
|
||||
This event is emitted when a update is updated.
|
||||
|
||||
|
||||
### `outer.thread.notify-subscribers`
|
||||
|
||||
This event is emitted for outer thread notify subscribers operations.
|
||||
|
||||
#### Property `uid`
|
||||
|
||||
uid
|
||||
- **Type**: string
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
#### Property `action`
|
||||
|
||||
action
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
#### Property `data`
|
||||
|
||||
data
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `puter.signup`
|
||||
|
||||
This event is emitted for puter signup operations.
|
||||
|
||||
#### Property `ip`
|
||||
|
||||
ip
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
#### Property `user_agent`
|
||||
|
||||
user agent
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
#### Property `body`
|
||||
|
||||
body
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `request.measured`
|
||||
|
||||
This event is emitted for request measured operations.
|
||||
|
||||
#### Property `req`
|
||||
|
||||
req
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
#### Property `res`
|
||||
|
||||
res
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `request.will-be-handled`
|
||||
|
||||
This event is emitted for request will be handled operations.
|
||||
|
||||
#### Property `res`
|
||||
|
||||
res
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
#### Property `end_`
|
||||
|
||||
end
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
#### Property `end`
|
||||
|
||||
end
|
||||
- **Type**: any
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `sns`
|
||||
|
||||
This event is emitted for sns operations.
|
||||
|
||||
#### Property `message`
|
||||
|
||||
message
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `template-service.hello`
|
||||
|
||||
This event is emitted for template-service hello operations.
|
||||
|
||||
|
||||
### `usages.query`
|
||||
|
||||
This event is emitted for usages query operations.
|
||||
|
||||
#### Property `usages`
|
||||
|
||||
usages
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `user.email-changed`
|
||||
|
||||
This event is emitted for user email changed operations.
|
||||
|
||||
#### Property `new_email`
|
||||
|
||||
new email
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `user.email-confirmed`
|
||||
|
||||
This event is emitted for user email confirmed operations.
|
||||
|
||||
#### Property `email`
|
||||
|
||||
email
|
||||
- **Type**: any
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `user.save_account`
|
||||
|
||||
This event is emitted for user save_account operations.
|
||||
|
||||
#### Property `user`
|
||||
|
||||
user associated with the operation
|
||||
- **Type**: User
|
||||
- **Mutability**: no-effect
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `web.socket.connected`
|
||||
|
||||
This event is emitted for web socket connected operations.
|
||||
|
||||
#### Property `user`
|
||||
|
||||
user associated with the operation
|
||||
- **Type**: User
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `web.socket.user-connected`
|
||||
|
||||
This event is emitted for web socket user connected operations.
|
||||
|
||||
#### Property `user`
|
||||
|
||||
user associated with the operation
|
||||
- **Type**: User
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
|
||||
### `wisp.get-policy`
|
||||
|
||||
This event is emitted for wisp get policy operations.
|
||||
|
||||
#### Property `policy`
|
||||
|
||||
policy information for the operation
|
||||
- **Type**: Policy
|
||||
- **Mutability**: mutable
|
||||
- **Notes**:
|
||||
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
import dedent from 'dedent';
|
||||
import events from './events.json.js';
|
||||
|
||||
const mdlib = {};
|
||||
mdlib.h = (out, n, str) => {
|
||||
out(`${'#'.repeat(n)} ${str}\n\n`);
|
||||
};
|
||||
|
||||
const N_START = 3;
|
||||
|
||||
const out = str => process.stdout.write(str);
|
||||
for ( const event of events ) {
|
||||
mdlib.h(out, N_START, `\`${event.id}\``);
|
||||
out(`${dedent(event.description) }\n\n`);
|
||||
|
||||
for ( const k in event.properties ) {
|
||||
const prop = event.properties[k];
|
||||
mdlib.h(out, N_START + 1, `Property \`${k}\``);
|
||||
out(`${prop.summary }\n`);
|
||||
out(`- **Type**: ${prop.type}\n`);
|
||||
out(`- **Mutability**: ${prop.mutability}\n`);
|
||||
if ( prop.notes ) {
|
||||
out('- **Notes**:\n');
|
||||
for ( const note of prop.notes ) {
|
||||
out(` - ${note}\n`);
|
||||
}
|
||||
}
|
||||
out('\n');
|
||||
}
|
||||
|
||||
if ( event.example ) {
|
||||
mdlib.h(out, N_START + 1, 'Example');
|
||||
out(`\`\`\`${event.example.language}\n${dedent(event.example.code)}\n\`\`\`\n`);
|
||||
}
|
||||
|
||||
out('\n');
|
||||
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
export default [
|
||||
{
|
||||
id: 'core.email.validate',
|
||||
description: `
|
||||
This event is emitted when an email is being validated.
|
||||
The event can be used to block certain emails from being validated.
|
||||
`,
|
||||
properties: {
|
||||
email: {
|
||||
type: 'string',
|
||||
mutability: 'no-effect',
|
||||
summary: 'the email being validated',
|
||||
notes: [
|
||||
'The email may have already been cleaned.',
|
||||
],
|
||||
},
|
||||
allow: {
|
||||
type: 'boolean',
|
||||
mutability: 'mutable',
|
||||
summary: 'whether the email is allowed',
|
||||
notes: [
|
||||
'If set to false, the email will be considered invalid.',
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'core.request.measured',
|
||||
description: `
|
||||
This event is emitted when a requests incoming and outgoing bytes
|
||||
have been measured.
|
||||
`,
|
||||
example: {
|
||||
language: 'javascript',
|
||||
code: /*javascript*/`
|
||||
extension.on('core.request.measured', data => {
|
||||
const measurements = data.measurements;
|
||||
// measurements = { sz_incoming: integer, sz_outgoing: integer }
|
||||
|
||||
const actor = data.actor; // instance of Actor
|
||||
|
||||
console.log('\\x1B[36;1m === MEASUREMENT ===\\x1B[0m\\n', {
|
||||
actor: data.actor.uid,
|
||||
measurements: data.measurements
|
||||
});
|
||||
});
|
||||
`,
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'core.fs.create.directory',
|
||||
description: `
|
||||
This event is emitted when a directory is created.
|
||||
`,
|
||||
properties: {
|
||||
node: {
|
||||
type: 'FSNodeContext',
|
||||
mutability: 'no-effect',
|
||||
summary: 'the directory that was created',
|
||||
},
|
||||
context: {
|
||||
type: 'Context',
|
||||
mutability: 'no-effect',
|
||||
summary: 'current context',
|
||||
},
|
||||
},
|
||||
},
|
||||
];
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 112 KiB |
@@ -0,0 +1,25 @@
|
||||
# Contributing to Puter
|
||||
|
||||
## Essential / General Knowledge
|
||||
|
||||
### Repository Dichotomy
|
||||
|
||||
- Puter's GUI is at the root; `/src` is the GUI
|
||||
- Puter's backend is a workspace npm package;
|
||||
it resides in `packages/backend(/src)`
|
||||
|
||||
The above may seem counter-intuitive; backend and frontend are siblings, right?
|
||||
Consider this: by a different intuition, the backend is at a "deeper" level
|
||||
of function; this directory structure better adheres to soon-to-be contributors
|
||||
sifting around through the files to discover "what's what".
|
||||
|
||||
The directory `volatile` exists _for your convenience_ to simplify running
|
||||
Puter for development. When Puter is run
|
||||
run with the backend with this repository as its working directory, it
|
||||
will use `volatile/config` and `volatile/runtime` instead of
|
||||
`/etc/puter` and `/var/puter`.
|
||||
|
||||
## See Next
|
||||
|
||||
- [Backend Documentation](../../packages/backend/doc/contributors/index.md)
|
||||
<!-- - [Frontend Documentation](./frontend.md) -->
|
||||
@@ -1,64 +0,0 @@
|
||||
# Repository Structure and Tooling
|
||||
|
||||
Puter has many of its parts in a single [monorepo](https://en.wikipedia.org/wiki/Monorepo),
|
||||
rather than a single repository for each cohesive part.
|
||||
We feel this makes it easier for new contributors to develop Puter since you don't
|
||||
need to figure out how to tie the parts together or how to work with Git submodules.
|
||||
It also makes it easier for us to maintain project-wide conventions and tooling.
|
||||
|
||||
Some tools, like [puter-cli](https://github.com/HeyPuter/puter-cli), exist in separate
|
||||
repositories. The `puter-cli` tool is used externally and can communicate with Puter's
|
||||
API on our production (puter.com) instance or your own instance of Puter, so there's
|
||||
not really any advantage to putting it in the monorepo.
|
||||
|
||||
## Top-Level directories
|
||||
|
||||
### The `doc` directory
|
||||
|
||||
The top-level `doc` directory contains the file you're reading right now.
|
||||
Its scope is documentation for using and contributing to Puter in general,
|
||||
and linking to more specific documentation in other places.
|
||||
|
||||
All `doc` directories will have a `README.md` which should be considered as
|
||||
the index file for the documentation. All documentation under a `doc`
|
||||
directory should be accessible via a path of links starting from `README.md`.
|
||||
|
||||
### The `src` directory
|
||||
|
||||
Every directory under `/tools` is [an npm "workspaces" module](https://docs.npmjs.com/cli/v8/using-npm/workspaces). Every direct child of this directory (generally) has a `package.json` and a `src` directory.
|
||||
|
||||
Some of these modules are core pieces of Puter:
|
||||
- **Puter's backend** is [`/src/backend`](/src/backend)
|
||||
- See [key locations in backend documentation](/src/backend/doc/contributors/structure.md)
|
||||
- **Puter's GUI** is [`/src/gui`](/src/gui)
|
||||
|
||||
Some of these modules are apps:
|
||||
- **Puter's Terminal**: [`/src/terminal`](/src/terminal)
|
||||
- **Puter's Shell**: [`/src/phoenix`](/src/phoenix)
|
||||
|
||||
Some of these modules are libraries:
|
||||
- **common javascript**: [`/src/putility`](/src/putility)
|
||||
- **runtime import mechanism**: [`/src/useapi`](/src/useapi)
|
||||
- **Puter's "puter.js" browser SDK**: [`/src/puter-js`](/src/puter-js)
|
||||
|
||||
### The `volatile` directory
|
||||
|
||||
When you're running Puter with development instructions (i.e. `npm start`),
|
||||
Puter's configuration directory will be `volatile/config` and Puter's
|
||||
runtime directory will be `volatile/runtime`, instead of the standard
|
||||
`/etc/puter` and `/var/puter` directories in production installations.
|
||||
|
||||
We should probably rename this directory, actually, but it would inconvenience
|
||||
a lot of people right now if we did.
|
||||
|
||||
### The `tools` directory
|
||||
|
||||
Every directory under `/tools` is [an npm "workspaces" module](https://docs.npmjs.com/cli/v8/using-npm/workspaces).
|
||||
|
||||
This is where `run-selfhosted.js` is. That's the entrypoint for `npm start`.
|
||||
|
||||
These tools are underdocumented and may not behave well if they're not executed
|
||||
from the correct working directory (which is different for different tools).
|
||||
Consider this a work-in-progress. If you want to use or contribute to anything
|
||||
under this directory, for now you should
|
||||
[tag @KernelDeimos on the community Discord](https://discord.gg/PQcx7Teh8u).
|
||||
@@ -1,2 +0,0 @@
|
||||
### `vscode`
|
||||
- `es6-string-html`
|
||||
-103
@@ -1,103 +0,0 @@
|
||||
## 2024-10-16
|
||||
|
||||
### Considerations for Mountpoints Feature
|
||||
|
||||
- `_storage_upload` takes paramter `uuid` instead of `path`
|
||||
- S3 bucket strategy needs the UUID
|
||||
- If we do hashes, 10MB chunks should be fine
|
||||
- we're already able to smooth out bursty traffic using the
|
||||
EWA algorithm
|
||||
- Use of `systemFSEntryService`
|
||||
- Is that normalized? Does everything go through this interface?
|
||||
- Storage interface has methods like `post_insert`
|
||||
- as far as I can tell this doesn't pose any issue
|
||||
-
|
||||
|
||||
### Brainstorming Migration Strategies
|
||||
|
||||
#### Interface boundary at HL<->LL filesystem methods
|
||||
|
||||
-- **tags:** brainstorming
|
||||
|
||||
From the perspectice of a trait-oriented implementation,
|
||||
which is not how LL/HL filesystem operations are currently implemented,
|
||||
the LL-class operations are implemented in separate traits.
|
||||
|
||||
The composite trait containing all of these traits would be the trait
|
||||
that represents a filesystem implementation itself.
|
||||
|
||||
Other filesystem interfaces that I've seen, such as FUSE and 9p,
|
||||
all usually have a monolithic interface - that is to say, an interface
|
||||
which includes all of the filesystem operations, rather than several
|
||||
interfaces each implementing a single filesystem operaiton.
|
||||
|
||||
Something about the fact that the LL-class operations are in separate
|
||||
classes makes it difficult to reason about how to move.
|
||||
Is it simply that multiple files in a directory is just more
|
||||
annoying to think about? Maybe, but there must be something more.
|
||||
|
||||
Perhaps it's that there are several references. Each implementation
|
||||
(that is, implemenation of a single filesystem operation) could have
|
||||
any number of different references across any number of different files.
|
||||
This would not be the case with a monolithic interface.
|
||||
|
||||
I think the best of both worlds would be to have an interface representing
|
||||
the entire filesystem and, in one place, link of of the individual
|
||||
operation implementations to compose a filesystem implementation
|
||||
|
||||
### Filesystem Brainstorming
|
||||
|
||||
Puter's backend uses a service architecture. Each service is an instance
|
||||
of a class extending "Service". A service can listen to events of the
|
||||
backend's lifecycle, interact with other services, and interact with
|
||||
external interfaces such as APIs and databases.
|
||||
|
||||
Puter's current filesystem, let's call it PuterFSv1, exists as the result
|
||||
of multiple services working together. We have LocalDiskStorageService
|
||||
which mimics an S3 bucket on a local system, and we have
|
||||
DatabaseFSEntryService which manages information about files, directories,
|
||||
and their relationships within the database, and therefore depends on
|
||||
DatabaseAccessService.
|
||||
|
||||
It is now time to introduce a MountpointService. This will allow another
|
||||
service or a user's configuration to assign an instance of a filesystem
|
||||
implementation (such as PuterFSv1) to a specific path.
|
||||
|
||||
The trouble here is that PuterFSv1 is composed of services, and the nature
|
||||
of a service is such that it exists for the lifecycle of the application.
|
||||
The class for a particular service can be re-used and registered with
|
||||
multiple names (creating multiple services with the same implementation
|
||||
but perhaps different configuration), but that's only a clean scenario when
|
||||
there is just one service. PuterFSv1, on the other hand, is like an
|
||||
imaginary service composed of other services.
|
||||
|
||||
The following possibilities then should be discussed:
|
||||
- CompositeService base class for a service that is composed of
|
||||
more than one service.
|
||||
- Refactor filesystem to not use service architecture.
|
||||
- Each filesystem service can manage state and configuration
|
||||
for multiple mountpoints
|
||||
(I don't like this idea; it feels messy. I wonder what software
|
||||
principles this violates)
|
||||
|
||||
We can take advantage of traits/interfaces here.
|
||||
PuterFSv1 depends on two interfaces:
|
||||
- An S3-like data storage implementation
|
||||
- An fsentry storage implementation
|
||||
|
||||
Counterintuitively from what I first thought, "Refactor the filesystem"
|
||||
actually looks like the best solution, and it doens't even look like it
|
||||
will be that difficult. In fact, it'll likely make the filesystem easier
|
||||
to maintain and more robust as a result.
|
||||
|
||||
Additionally, we can introduce PuterFSv2, which will introduce storing
|
||||
data in chunks identified by their hashes, and associated hashes with
|
||||
fsentries.
|
||||
|
||||
PuterFSService will be a new service which registers 'PuterFSv1' with
|
||||
FilesystemService.
|
||||
|
||||
An instance of a filesystem needs to be separate from a mountpoint.
|
||||
For example, PuterFSv1 will usually have only one instance but it may
|
||||
be mounted several different times. `/some-user` on Puter's VFS could
|
||||
be a mountpoint for `/some-user` in the instance of PuterFSv1.
|
||||
@@ -57,6 +57,3 @@ Comments beginning with `// track:`. See
|
||||
It may be applicable to write an iterator in the
|
||||
future, or something will come up that require
|
||||
these to be handled with a modular approach instead.
|
||||
- `track: checkpoint`
|
||||
A location where some statement about the state of the
|
||||
software must hold true.
|
||||
+5
-38
@@ -1,45 +1,12 @@
|
||||
# Meta Documentation
|
||||
|
||||
Guidelines for documentation.
|
||||
## Notes
|
||||
|
||||
## How documentation is organized
|
||||
- > This document is a work-in-progress
|
||||
|
||||
This documentation exists in the Puter repository.
|
||||
You may be reading this on the GitHub wiki instead, which we generate
|
||||
from the repository docs. These docs are always under a directory
|
||||
named `doc/`.
|
||||
|
||||
From [./contributors/structure.md](./contributors/structure.md):
|
||||
> The top-level `doc` directory contains the file you're reading right now.
|
||||
> Its scope is documentation for using and contributing to Puter in general,
|
||||
> and linking to more specific documentation in other places.
|
||||
>
|
||||
> All `doc` directories will have a `README.md` which should be considered as
|
||||
> the index file for the documentation. All documentation under a `doc`
|
||||
> directory should be accessible via a path of links starting from `README.md`.
|
||||
|
||||
### Documentation Structure
|
||||
|
||||
The top-level `doc` directory contains the following subdirectories:
|
||||
|
||||
- `api/` - API documentation for Puter services
|
||||
- `contributors/` - Documentation for contributors to the Puter project
|
||||
- `devmeta/` - Meta documentation for developers
|
||||
- `i18n/` - Internationalization documentation
|
||||
- `planning/` - Project planning documentation
|
||||
- `self-hosters/` - Documentation for self-hosting Puter
|
||||
- `uncategorized/` - Miscellaneous documentation
|
||||
|
||||
As well as some files:
|
||||
|
||||
- `README.md` - Documentation overview optimized for humans.
|
||||
- `AI.md` - Documentation overview optimized for AI/LLM agents.
|
||||
|
||||
Module-specific documentation follows a similar structure, with each module having its own `doc` directory. For contributor-specific documentation within a module, use a `contributors` subdirectory within the module's `doc` directory.
|
||||
|
||||
## Docs Styleguide
|
||||
## Rules
|
||||
|
||||
### "is" and "is not"
|
||||
|
||||
- When "A is B", bold "is": "A **is** B" (`A **is** B`)
|
||||
- When "A is not B", bold "not": "A is **not** B" (`A is **not** B`)
|
||||
- When "A is B", always bold "is": "A **is** B" (`A **is** B`)
|
||||
- When "A is not B", always bold "not": "A is **not** B" (`A is **not** B`)
|
||||
@@ -1,129 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com، الحاسوب السحابي الشخصي: جميع ملفاتك وتطبيقاتك وألعابك في مكان واحد يمكن الوصول إليه من أي مكان في أي وقت." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">نظام تشغيل الإنترنت! مجاني ومفتوح المصدر وقابل للاستضافة الذاتية.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Release" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub License" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« عرض توضيحي مباشر »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">مجموعة أدوات التطوير</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">ديسكورد</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">ريديت</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">إكس (تويتر)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="لقطة شاشة" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## بيوتر
|
||||
|
||||
<div dir="rtl">
|
||||
<p>بيوتر هو نظام تشغيل إنترنت متقدم ومفتوح المصدر، مصمم ليكون غنيًا بالميزات وسريعًا بشكل استثنائي وقابلًا للتوسع بدرجة كبيرة. يمكن استخدام بيوتر كـ:</p>
|
||||
|
||||
<ul>
|
||||
<li>سحابة شخصية تعطي الأولوية للخصوصية لحفظ جميع ملفاتك وتطبيقاتك وألعابك في مكان آمن واحد، يمكن الوصول إليه من أي مكان وفي أي وقت.</li>
|
||||
<li>منصة لبناء ونشر المواقع الإلكترونية وتطبيقات الويب والألعاب</li>
|
||||
<li>بديل لـ Dropbox وGoogle Drive وOneDrive وغيرها، مع واجهة جديدة وميزات قوية.</li>
|
||||
<li>بيئة سطح مكتب عن بُعد للخوادم ومحطات العمل.</li>
|
||||
<li>مشروع ومجتمع ودود ومفتوح المصدر للتعلم عن تطوير الويب والحوسبة السحابية والأنظمة الموزعة والكثير غير ذلك!</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
|
||||
## البدء
|
||||
|
||||
### 💻 التطوير المحلي
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
سيؤدي هذا إلى تشغيل Puter على http://puter.localhost:4100 (أو المنفذ التالي المتاح).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 دوكر
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐙 دوكر كومبوز
|
||||
|
||||
#### لينكس/ماك
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
#### ويندوز
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
### ☁️ موقع Puter.com
|
||||
|
||||
متاح Puter كخدمة مستضافة على[**puter.com**](https://puter.com)الموقع
|
||||
|
||||
<br/>
|
||||
|
||||
## متطلبات النظام
|
||||
|
||||
- **Operating Systems:** لينكس، ماك، ويندوز
|
||||
- **RAM** ٢ جيجابايت كحد أدنى (يوصى بـ ٤ جيجابايت)
|
||||
- **Disk Space:** ١ جيجابايت مساحة حرة
|
||||
- **Node.js:** الإصدار ١٦+ (يوصى بالإصدار ٢٢+)
|
||||
- **npm:** أحدث إصدار مستقر
|
||||
|
||||
<br/>
|
||||
|
||||
## الدعم
|
||||
|
||||
تواصل مع المشرفين والمجتمع من خلال هذه القنوات:
|
||||
|
||||
- تقرير عن خطأ أو طلب ميزة؟ الرجاء [فتح مشكلة](https://github.com/HeyPuter/puter/issues/new/choose)
|
||||
|
||||
- دسكورد: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- إكس (تويتر): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- ريديت: [/reddit.com/r/puter](https://www.reddit.com/r/puter/)
|
||||
- ماستودون: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- مشاكل أمنية؟ [[email protected]](mailto:[email protected])
|
||||
- البريد الإلكتروني للمشرفين [[email protected]](mailto:[email protected])
|
||||
|
||||
نحن دائمًا سعداء لمساعدتك في أي أسئلة قد تكون لديك. لا تتردد في السؤال!
|
||||
|
||||
<br/>
|
||||
|
||||
## الترخيص
|
||||
|
||||
هذا المستودع، بما في ذلك جميع محتوياته ومشاريعه الفرعية ووحداته ومكوناته، مرخص تحت [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) ما لم ينص على خلاف ذلك صراحةً. قد تخضع المكتبات الخارجية المدرجة في هذا المستودع لتراخيصها الخاصة.
|
||||
|
||||
<br/>
|
||||
@@ -1,124 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, ব্যক্তিগত ক্লাউড কম্পিউটার: আপনার সমস্ত ফাইল, অ্যাপস, এবং গেম এক জায়গায়, যেকোনো সময়, যেকোনো স্থান থেকে অ্যাক্সেসযোগ্য।" src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">ইন্টারনেট ওএস! ফ্রি, ওপেন-সোর্স, এবং সেল্ফ-হোস্টেবল।</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub রেপোর আকার " src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub রিলিজ" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub লাইসেন্স" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« লাইভ ডেমো »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">এসডিকে</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">ডিসকর্ড</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">রেডিট</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (টুইটার)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="স্ক্রিনশট" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter একটি উন্নত, ওপেন-সোর্স ইন্টারনেট অপারেটিং সিস্টেম যা বৈশিষ্ট্যপূর্ণ, অত্যন্ত দ্রুত এবং উচ্চ মাত্রায় সম্প্রসারণযোগ্য। Puter ব্যবহার করা যেতে পারে:
|
||||
|
||||
- একটি প্রাইভেসি-প্রথম পার্সোনাল ক্লাউড হিসাবে যা আপনার সমস্ত ফাইল, অ্যাপস এবং গেমসকে এক জায়গায় নিরাপদে রাখে, যেকোনো সময় যেকোনো স্থান থেকে অ্যাক্সেসযোগ্য।
|
||||
- ওয়েবসাইট, ওয়েব অ্যাপ এবং গেম তৈরি ও প্রকাশ করার একটি প্ল্যাটফর্ম হিসাবে।
|
||||
- ড্রপবক্স, গুগল ড্রাইভ, ওয়ানড্রাইভ ইত্যাদির বিকল্প হিসাবে একটি নতুন ইন্টারফেস এবং শক্তিশালী বৈশিষ্ট্য সহ।
|
||||
- সার্ভার এবং ওয়ার্কস্টেশনের জন্য একটি রিমোট ডেস্কটপ এনভায়রনমেন্ট হিসাবে।
|
||||
- ওয়েব ডেভেলপমেন্ট, ক্লাউড কম্পিউটিং, ডিস্ট্রিবিউটেড সিস্টেম এবং আরও অনেক কিছু শিখতে একটি বন্ধুত্বপূর্ণ, ওপেন-সোর্স প্রকল্প এবং কমিউনিটি হিসাবে!
|
||||
|
||||
<br/>
|
||||
|
||||
## শুরু করার জন্য
|
||||
|
||||
## 💻 লোকাল ডেভেলপমেন্ট
|
||||
|
||||
```bash
|
||||
Copy code
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
এটি Puter কে http://puter.localhost:4100 (অথবা পরবর্তী উপলব্ধ পোর্টে) চালু করবে।
|
||||
|
||||
<br/>
|
||||
|
||||
## 🐳 ডকার
|
||||
|
||||
```bash
|
||||
Copy code
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
## 🐙 ডকার কম্পোজ
|
||||
|
||||
## লিনাক্স/ম্যাকওএস
|
||||
|
||||
```bash
|
||||
Copy code
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
## উইন্ডোজ
|
||||
|
||||
```powershell
|
||||
Copy code
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
## ☁️ Puter.com
|
||||
Puter [**puter.com**](https://puter.com) এ হোস্টেড সার্ভিস হিসেবে উপলব্ধ।
|
||||
|
||||
<br/>
|
||||
|
||||
## সিস্টেম রিকোয়ারমেন্টস
|
||||
|
||||
- **অপারেটিং সিস্টেম:** লিনাক্স, ম্যাকওএস, উইন্ডোজ
|
||||
- **র্যাম:** ২জিবি ন্যূনতম (৪জিবি প্রস্তাবিত)
|
||||
- **ডিস্ক স্পেস:** ১জিবি ফ্রি স্পেস
|
||||
- **Node.js:** সংস্করণ ১৬+ (সংস্করণ ২২+ প্রস্তাবিত)
|
||||
- **npm:** সর্বশেষ স্থিতিশীল সংস্করণ
|
||||
|
||||
<br/>
|
||||
|
||||
## সাপোর্ট
|
||||
|
||||
মেইনটেইনার এবং কমিউনিটির সাথে এই চ্যানেলগুলির মাধ্যমে সংযোগ করুন:
|
||||
|
||||
- বাগ রিপোর্ট বা ফিচার রিকোয়েস্ট? অনুগ্রহ করে একটি ইস্যু খুলুন।
|
||||
- ডিসকর্ড: discord.com/invite/PQcx7Teh8u
|
||||
- X (টুইটার): x.com/HeyPuter
|
||||
- রেডিট: reddit.com/r/puter/
|
||||
- মাস্টডন: mastodon.social/@puter
|
||||
- সিকিউরিটি ইস্যু? security@puter.com
|
||||
- মেইনটেইনারদের ইমেইল করুন hi@puter.com এ
|
||||
|
||||
আপনার যেকোনো প্রশ্নের জন্য আমরা সবসময় সাহায্য করতে প্রস্তুত। জিজ্ঞাসা করতে দ্বিধা করবেন না!
|
||||
|
||||
<br/>
|
||||
|
||||
## লাইসেন্স
|
||||
|
||||
এই রিপোজিটরি, এর সমস্ত বিষয়বস্তু, সাব-প্রকল্প, মডিউল, এবং কম্পোনেন্ট সহ [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) লাইসেন্সের অধীনে লাইসেন্সকৃত, যদি অন্যথায় স্পষ্টভাবে উল্লেখ না করা হয়। এই রিপোজিটরিতে অন্তর্ভুক্ত তৃতীয় পক্ষের লাইব্রেরিগুলি তাদের নিজস্ব লাইসেন্সের অধীনে হতে পারে।
|
||||
|
||||
<br/>
|
||||
@@ -1,127 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, Den Personlige Cloudcomputer: Alle dine filer, apps og spil på ét sted tilgængelige fra hvor som helst til enhver tid." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">Internet OS'et! Gratis, Open-Source og kan selvhostes.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo størrelse" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Udgivelse" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub Licens" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« LIVE DEMO »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="skærmbillede" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter er et avanceret, open-source internetoperativsystem designet til at være funktionsrigt, exceptionelt hurtigt og meget udvideligt. Puter kan bruges som:
|
||||
|
||||
- En privatlivsfokuseret personlig sky til at opbevare alle dine filer, apps og spil på ét sikkert sted, tilgængeligt hvor som helst og når som helst.
|
||||
- En platform til at bygge og publicere hjemmesider, webapplikationer og spil.
|
||||
- Et alternativ til Dropbox, Google Drive, OneDrive osv. med et friskt interface og kraftfulde funktioner.
|
||||
- Et fjernskrivebordsmiljø for servere og arbejdsstationer.
|
||||
- Et venligt, open-source projekt og fællesskab til at lære om webudvikling, cloud computing, distribuerede systemer og meget mere!
|
||||
|
||||
<br/>
|
||||
|
||||
## Kom godt i gang
|
||||
|
||||
|
||||
### 💻 Lokal Udvikling
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
Dette vil starte Puter på http://puter.localhost:4100 (eller den næste tilgængelige port).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter er tilgængelig som en hosted tjeneste på [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## Systemkrav
|
||||
|
||||
- **Operativsystemer:** Linux, macOS, Windows
|
||||
- **RAM:** 2GB minimum (4GB anbefales)
|
||||
- **Diskplads:** 1GB fri plads
|
||||
- **Node.js:** Version 16+ (Version 22+ anbefales)
|
||||
- **npm:** Seneste stabile version
|
||||
|
||||
<br/>
|
||||
|
||||
## Support
|
||||
|
||||
Kom i kontakt med vedligeholderne og fællesskabet gennem disse kanaler:
|
||||
|
||||
- Bugrapport eller funktionønske? Åbn [venligst en sag](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Sikkerhedsspørgsmål? [[email protected]](mailto:[email protected])
|
||||
- Send email til vedligeholdere på [[email protected]](mailto:[email protected])
|
||||
|
||||
Vi er altid glade for at hjælpe dig med eventuelle spørgsmål, du måtte have. Tøv ikke med at spørge!
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## Licens
|
||||
|
||||
Dette repository, inklusive alt dets indhold, underprojekter, moduler og komponenter, er licenseret under [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt), medmindre andet er udtrykkeligt angivet. Tredjepartsbiblioteker inkluderet i dette repository kan være underlagt deres egne licenser.
|
||||
|
||||
<br/>
|
||||
@@ -1,127 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, Der persönliche Cloud-Computer: Alle Ihre Dateien, Apps und Spiele an einem Ort, jederzeit und überall zugänglich." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">Das Internet-Betriebssystem! Kostenlos, Open-Source und selbst hostbar.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub Repo-Größe" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Veröffentlichung" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=neueste%20Version"> <img alt="GitHub Lizenz" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« LIVE DEMO »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="Bildschirmfoto" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter ist ein fortschrittliches, Open-Source-Internet-Betriebssystem, das funktionsreich, außergewöhnlich schnell und hochgradig erweiterbar konzipiert wurde. Puter kann verwendet werden als:
|
||||
|
||||
- Eine datenschutzfreundliche persönliche Cloud, um alle Ihre Dateien, Apps und Spiele an einem sicheren Ort aufzubewahren, jederzeit und überall zugänglich.
|
||||
- Eine Plattform zum Erstellen und Veröffentlichen von Websites, Webanwendungen und Spielen.
|
||||
- Eine Alternative zu Dropbox, Google Drive, OneDrive usw. mit einer frischen Benutzeroberfläche und leistungsstarken Funktionen.
|
||||
- Eine Remote-Desktop-Umgebung für Server und Workstations.
|
||||
- Ein freundliches, Open-Source-Projekt und eine Community, um mehr über Webentwicklung, Cloud Computing, verteilte Systeme und vieles mehr zu lernen!
|
||||
|
||||
<br/>
|
||||
|
||||
## Erste Schritte
|
||||
|
||||
|
||||
### 💻 Lokale Entwicklung
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
Dies startet Puter unter http://puter.localhost:4100 (oder dem nächsten verfügbaren Port).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter ist als gehosteter Dienst unter [**puter.com**](https://puter.com) verfügbar.
|
||||
|
||||
<br/>
|
||||
|
||||
## Systemanforderungen
|
||||
|
||||
- **Betriebssysteme:** Linux, macOS, Windows
|
||||
- **RAM:** Mindestens 2GB (4GB empfohlen)
|
||||
- **Festplattenspeicher:** 1GB freier Speicherplatz
|
||||
- **Node.js:** Version 16+ (Version 22+ empfohlen)
|
||||
- **npm:** Neueste stabile Version
|
||||
|
||||
<br/>
|
||||
|
||||
## Unterstützung
|
||||
|
||||
Verbinden Sie sich mit den Maintainern und der Community über diese Kanäle:
|
||||
|
||||
- Fehlerbericht oder Funktionsanfrage? Bitte [öffnen Sie ein Issue](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Sicherheitsprobleme? [[email protected]](mailto:[email protected])
|
||||
- E-Mail an die Maintainer: [[email protected]](mailto:[email protected])
|
||||
|
||||
Wir helfen Ihnen gerne bei allen Fragen, die Sie haben könnten. Zögern Sie nicht zu fragen!
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## Lizenz
|
||||
|
||||
Dieses Repository, einschließlich aller Inhalte, Unterprojekte, Module und Komponenten, ist unter [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) lizenziert, sofern nicht ausdrücklich anders angegeben. In diesem Repository enthaltene Bibliotheken von Drittanbietern können ihren eigenen Lizenzen unterliegen.
|
||||
|
||||
<br/>
|
||||
@@ -1,127 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, The Personal Cloud Computer: All your files, apps, and games in one place accessible from anywhere at any time." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">The Internet OS! Free, Open-Source, and Self-Hostable.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Release" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub License" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« LIVE DEMO »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## 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!
|
||||
|
||||
<br/>
|
||||
|
||||
## Getting Started
|
||||
|
||||
|
||||
### 💻 Local Development
|
||||
|
||||
```bash
|
||||
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).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter is available as a hosted service at [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## 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
|
||||
|
||||
<br/>
|
||||
|
||||
## Support
|
||||
|
||||
Connect with the maintainers and community through these channels:
|
||||
|
||||
- Bug report or feature request? Please [open an issue](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Security issues? [[email protected]](mailto:[email protected])
|
||||
- Email maintainers at [[email protected]](mailto:[email protected])
|
||||
|
||||
We are always happy to help you with any questions you may have. Don't hesitate to ask!
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## License
|
||||
|
||||
This repository, including all its contents, sub-projects, modules, and components, is licensed under [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) unless explicitly stated otherwise. Third-party libraries included in this repository may be subject to their own licenses.
|
||||
|
||||
<br/>
|
||||
@@ -1,171 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, El Computador Personal en Nube: Todos tus archivos, apps y juegos en un solo lugar accesible desde cualquier lugar en cualquier momento" src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">El Sistema Operativo de Internet! Gratis, de Código abierto, y Autohospedable.</h3>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« DEMO EN VIVO »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://apps.puter.com/">App Store</a>
|
||||
·
|
||||
<a href="https://developer.puter.com" target="_blank">Developers</a>
|
||||
·
|
||||
<a href="https://github.com/heyputer/puter-cli" target="_blank">CLI</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://x.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter es un sistema operativo en internet avanzado y de código abierto, diseñado para ser rico en funcionalidades, excepcionalmente rápido y altamente extensible. Puter puede ser usado como:
|
||||
|
||||
- Una nube personal privada para almacenar todos tus archivos, aplicaciones y juegos en un lugar seguro, accesible y desde cualquier lugar en cualquier momento.
|
||||
- Una plataforma para construir y publicar páginas web, aplicativos sobre la web y juegos.
|
||||
- Una alternativa a Dropbox, Google Drive, OneDrive, etc. con una interfaz fresca y llena de funcionalidades.
|
||||
- Un entorno de escritorio remoto para servidores y estaciones de trabajo.
|
||||
- Un proyecto y comunidad abiertas y amigables para aprender sobre desarrollo web, computación en la nube, sistemas distribuidos y mucho más!
|
||||
|
||||
<br/>
|
||||
|
||||
## Primeros Pasos
|
||||
|
||||
|
||||
### 💻 Desarrollo Local
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
✨ Esto ejecutará Puter en http://puter.localhost:4100 (o el siguiente puerto disponible).
|
||||
|
||||
Si esto no funciona, consulta [First Run Issues](./doc/self-hosters/first-run-issues.md) para obtener pasos de solución de problemas.
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
✨ Esto ejecutará Puter en http://puter.localhost:4100 (o el siguiente puerto disponible).
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
✨ Esto ejecutará Puter en http://puter.localhost:4100 (o el siguiente puerto disponible).
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
✨ Esto ejecutará Puter en http://puter.localhost:4100 (o el siguiente puerto disponible).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🚀 Auto-Hospedaje
|
||||
|
||||
Para guías detalladas sobre cómo auto-hospedar Puter, incluyendo opciones de configuración y mejores prácticas, consulta nuestra [Documentación de Auto-Hospedaje](https://github.com/HeyPuter/puter/blob/main/doc/self-hosters/instructions.md).
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter está disponible como servicio alojado en [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## Requerimientos del sistema
|
||||
|
||||
- **Sistemas operativos:** Linux, macOS, Windows
|
||||
- **RAM:** 2GB mínimo (4GB recomendados)
|
||||
- **Almacenamiento:** 1GB de espacio libre
|
||||
- **Node.js:** Versión 16+ (Versión 23+ recomendada)
|
||||
- **npm:** Última version estable
|
||||
|
||||
<br/>
|
||||
|
||||
## Soporte
|
||||
|
||||
Conéctate con los mantenedores y la comunidad a través de estos canales:
|
||||
|
||||
- Reporte de bug o solicitud de funcionalidad? Por favor [abrir un issue](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Problemas de seguridad? [[email protected]](mailto:[email protected])
|
||||
- Envia un email a los mantenedores en [[email protected]](mailto:[email protected])
|
||||
|
||||
Estamos siempre felices de ayudar con cualquier pregunta que puedas tener. No dudes en preguntar!
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## Licencia
|
||||
|
||||
Este repositorio, incluyendo todo su contenido, sub-proyectos, modulos y componentes, esta licenciado bajo [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) a menos que se indique explícitamente lo contrario. Librerías de terceros incluidos en este repositorio pueden estar sujetas a sus propias licencias.
|
||||
|
||||
<br/>
|
||||
|
||||
## Traducciones
|
||||
|
||||
- [Arabic / العربية](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ar.md)
|
||||
- [Armenian / Հայերեն](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hy.md)
|
||||
- [Bengali / বাংলা](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.bn.md)
|
||||
- [Chinese / 中文](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.zh.md)
|
||||
- [Danish / Dansk](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.da.md)
|
||||
- [English](https://github.com/HeyPuter/puter/blob/main/README.md)
|
||||
- [Farsi / فارسی](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fa.md)
|
||||
- [Finnish / Suomi](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fi.md)
|
||||
- [French / Français](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fr.md)
|
||||
- [German/ Deutsch](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.de.md)
|
||||
- [Hebrew/ עברית](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.he.md)
|
||||
- [Hindi / हिंदी](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hi.md)
|
||||
- [Hungarian / Magyar](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hu.md)
|
||||
- [Indonesian / Bahasa Indonesia](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.id.md)
|
||||
- [Italian / Italiano](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.it.md)
|
||||
- [Japanese / 日本語](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.jp.md)
|
||||
- [Korean / 한국어](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ko.md)
|
||||
- [Malayalam / മലയാളം](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ml.md)
|
||||
- [Polish / Polski](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.pl.md)
|
||||
- [Portuguese / Português](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.pt.md)
|
||||
- [Romanian / Română](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ro.md)
|
||||
- [Russian / Русский](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ru.md)
|
||||
- [Spanish / Español](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.es.md)
|
||||
- [Swedish / Svenska](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.sv.md)
|
||||
- [Tamil / தமிழ்](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ta.md)
|
||||
- [Telugu / తెలుగు](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.te.md)
|
||||
- [Thai / ไทย](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.th.md)
|
||||
- [Turkish / Türkçe](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.tr.md)
|
||||
- [Ukrainian / Українська](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ua.md)
|
||||
- [Urdu / اردو](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ur.md)
|
||||
- [Vietnamese / Tiếng Việt](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.vi.md)
|
||||
@@ -1,133 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com، رایانش ابری شخصی: همه فایلها، برنامهها و بازیهای شما در یک مکان قابل دسترسی از هر جا و در هر زمان." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">سیستمعامل اینترنت! رایگان، متنباز، و قابل میزبانی شخصی.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Release" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub License" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« نسخه نمایشی زنده »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">مستندات توسعهدهندگان</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">دیسکورد</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">ردیت</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">ایکس (توییتر)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="عکس صفحه" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## پیوتر
|
||||
|
||||
<div dir="rtl">
|
||||
<p>پیوتر یک سیستم عامل تحت وب پیشرفتهی متنباز است که به منظور ایجاد ویژگیهای متنوع، سرعت بسیار بالا، و مقیاسپذیری طراحی شده است. از پیوتر میتوان بهعنوان:</p>
|
||||
|
||||
<ul>
|
||||
<li>یک فضای ابری شخصی که بر حریم خصوصی تمرکز دارد و تمام فایلها، برنامهها، و بازیهای شما را در یک مکان امن ذخیره میکند، قابل دسترسی از هر جا و در هر زمان.</li>
|
||||
<li>پلتفرمی برای ساخت و انتشار وبسایتها، اپلیکیشنهای وب، و بازیها.</li>
|
||||
<li>جایگزینی برای Dropbox، Google Drive، OneDrive، و سایر موارد، با یک رابط کاربری مدرن و قابلیتهای قدرتمند.</li>
|
||||
<li>یک محیط دسکتاپ از راه دور برای سرورها و ایستگاههای کاری.</li>
|
||||
<li> یک پروژه و جامعهی متنباز دوستانه برای یادگیری توسعه وب، رایانش ابری، سیستمهای توزیعشده، و موارد دیگر نام برد!</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
|
||||
## نحوهی استفاده
|
||||
|
||||
### 💻 توسعهی محلی
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
این کار پیوتر را در http://puter.localhost:4100 (یا پورت در دسترس بعدی) اجرا میکند.
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 داکر
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 داکر کامپوز
|
||||
|
||||
|
||||
#### لینوکس/مک
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### ویندوز
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ وبگاه Puter.com
|
||||
|
||||
پیوتر بهعنوان یک سرویس میزبانیشده در وبگاه [**puter.com**](https://puter.com) موجود است.
|
||||
|
||||
|
||||
## پیشنیازهای سیستم
|
||||
|
||||
- **سیستمعاملها:** لینوکس، مک، ویندوز
|
||||
- **RAM** حداقل ۲ گیگابایت (پیشنهاد: ۴ گیگابایت)
|
||||
- **فضای دیسک:** ۱ گیگابایت فضای خالی
|
||||
- **Node.js:** نسخه ۱۶+ (پیشنهاد: نسخه ۲۲+)
|
||||
- **npm:** آخرین نسخه پایدار
|
||||
|
||||
<br/>
|
||||
|
||||
## پشتیبانی
|
||||
|
||||
با مدیران و انجمن از طریق این کانالها در تماس باشید:
|
||||
|
||||
- گزارش اشکال یا درخواست ویژگی؟ لطفاً [Isuue باز کنید](https://github.com/HeyPuter/puter/issues/new/choose)
|
||||
|
||||
- دیسکورد: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
|
||||
- ایکس (توییتر): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
|
||||
- ردیت: [/reddit.com/r/puter](https://www.reddit.com/r/puter/)
|
||||
|
||||
- ماستودون: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
|
||||
- مشکلات امنیتی؟ [[email protected]](mailto:[email protected])
|
||||
|
||||
- ایمیل مدیران: [[email protected]](mailto:[email protected])
|
||||
|
||||
|
||||
ما همیشه از پاسخگویی به سوالات شما خرسند هستیم. در سوال پرسیدن درنگ نکنید!
|
||||
|
||||
## گواهی
|
||||
|
||||
این مخزن، شامل تمام محتویات، پروژههای فرعی، ماژولها و اجزای آن، تحت مجوز [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) است مگر آنکه خلاف آن بهطور صریح ذکر شده باشد. کتابخانههای خارجی ممکن است گواهیهای جداگانه داشته باشند.
|
||||
|
||||
<br/>
|
||||
@@ -1,126 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, The Personal Cloud Computer: All your files, apps, and games in one place accessible from anywhere at any time." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
<h3 align="center">Internetin käyttöjärjestelmä! Ilmainen, avoimen lähdekoodin ja itse isännöitävä.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Release" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=viimeisin%20versio"> <img alt="GitHub License" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« LIVE DEMO »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="näyttökuva" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter on kehittynyt, avoimen lähdekoodin internetin käyttöjärjestelmä, joka on suunniteltu olemaan ominaisuuksiltaan rikas, poikkeuksellisen nopea ja erittäin laajennettava. Puteria voidaan käyttää:
|
||||
|
||||
- Yksityisyyttä kunnioittavana henkilökohtaisena pilvenä, johon voit tallentaa kaikki tiedostosi, sovelluksesi ja pelisi turvallisesti yhdessä paikassa, josta ne ovat saatavilla missä tahansa ja milloin tahansa.
|
||||
- Alustana verkkosivustojen, web-sovellusten ja pelien rakentamiseen ja julkaisemiseen.
|
||||
- Vaihtoehtona Dropboxille, Google Drivelle, OneDrivelle jne. tuoreella käyttöliittymällä ja tehokkailla ominaisuuksilla.
|
||||
- Etätyöpöytäympäristönä palvelimille ja työasemille.
|
||||
- Ystävällisenä, avoimen lähdekoodin projektina ja yhteisönä, jossa voit oppia verkkokehityksestä, pilvipalveluista, hajautetuista järjestelmistä ja paljon muusta!
|
||||
|
||||
<br/>
|
||||
|
||||
## Aloittaminen
|
||||
|
||||
|
||||
### 💻 Paikallinen kehitys
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
Tämä käynnistää Puterin osoitteessa http://puter.localhost:4100 (tai seuraavassa vapaassa portissa).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter on saatavilla isännöitynä palveluna osoitteessa [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## Järjestelmävaatimukset
|
||||
|
||||
- **Käyttöjärjestelmät:** Linux, macOS, Windows
|
||||
- **RAM:** Vähintään 2GB (Suositeltu 4GB)
|
||||
- **Levytila:** 1GB vapaata tilaa
|
||||
- **Node.js:** Versio 16+ (Suositeltu versio 22+)
|
||||
- **npm:** Uusin vakaa versio
|
||||
|
||||
<br/>
|
||||
|
||||
## Tuki
|
||||
|
||||
Ota yhteyttä ylläpitäjiin ja yhteisöön näiden kanavien kautta:
|
||||
|
||||
- Onko sinulla virheraportti tai ominaisuuspyyntö? Ole hyvä ja [avaa uusi issue](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Turvallisuusongelmat? [[email protected]](mailto:[email protected])
|
||||
- Ota yhteyttä ylläpitäjiin sähköpostitse osoitteessa [[email protected]](mailto:[email protected])
|
||||
|
||||
Olemme aina valmiita auttamaan sinua kaikissa kysymyksissäsi. Älä epäröi kysyä!
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## Lisenssi
|
||||
|
||||
Tämä repository, mukaan lukien kaikki sen sisältö, aliprojektit, moduulit ja komponentit, on lisensoitu [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt)-lisenssillä, ellei toisin mainita. Tämän repositoryn mukana tulevat kolmannen osapuolen kirjastot voivat olla omien lisenssiensä alaisia.
|
||||
|
||||
<br/>
|
||||
@@ -1,125 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, L'ordinateur cloud personnel : Tous vos fichiers, applications et jeux en un seul endroit accessible de partout à tout moment." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">L'OS Internet ! Gratuit, open-source et auto-hébergeable.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="Taille du dépôt GitHub" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="Version GitHub" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=derni%C3%A8re%20version"> <img alt="Licence GitHub" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« DÉMO EN DIRECT »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="capture d'écran" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter est un système d'exploitation internet avancé, open-source, conçu pour être riche en fonctionnalités, extrêmement rapide et hautement extensible. Puter peut être utilisé comme :
|
||||
|
||||
- Un cloud personnel axé sur la confidentialité pour garder tous vos fichiers, applications et jeux en un seul endroit sécurisé, accessible de partout à tout moment.
|
||||
- Une plateforme pour créer et publier des sites web, des applications web et des jeux.
|
||||
- Une alternative à Dropbox, Google Drive, OneDrive, etc. avec une interface renouvelée et des fonctionnalités puissantes.
|
||||
- Un environnement de bureau à distance pour serveurs et stations de travail.
|
||||
- Un projet et une communauté open-source accueillants pour apprendre le développement web, l'informatique en nuage, les systèmes distribués, et bien plus encore !
|
||||
|
||||
<br/>
|
||||
|
||||
## Démarrage
|
||||
|
||||
|
||||
### 💻 Développement Local
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
Cela lancera Puter à http://puter.localhost:4100 (ou au port disponible suivant).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
#### Linux/macOS
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter est disponible en tant que service hébergé sur [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## Configuration système requise
|
||||
- **Systèmes d'exploitation:** Linux, macOS, Windows
|
||||
- **RAM:** Minimum 2 Go (4 Go recommandés)
|
||||
- **Espace disque:** 1 Go d'espace libre
|
||||
- **Node.js:** Version 16+ (Version 22+ recommandée)
|
||||
- **npm:** Dernière version stable
|
||||
|
||||
<br/>
|
||||
|
||||
## Support
|
||||
|
||||
Connectez-vous avec les mainteneurs et la communauté via ces canaux :
|
||||
|
||||
- Un bug ou une demande de fonctionnalité ? Veuillez [ouvrir une issue](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Problèmes de sécurité ? [[email protected]](mailto:[email protected])
|
||||
- Email des mainteneurs à [[email protected]](mailto:[email protected])
|
||||
|
||||
Nous sommes toujours heureux de vous aider avec toutes les questions que vous pourriez avoir. N'hésitez pas à nous demander !
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## License
|
||||
|
||||
Ce dépôt, y compris tout son contenu, sous-projets, modules et composants, est licencié sous [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) sauf indication contraire explicite. Les bibliothèques tierces incluses dans ce dépôt peuvent être soumises à leurs propres licences.
|
||||
|
||||
<br/>
|
||||
|
||||
@@ -1,130 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com,
|
||||
הענן הפרטי: כל הקבצים, האפליקציות והמשחקים שלך במקום אחד נגיש מכל מקום ובכל זמן." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center" dir="rtl">מערכת ההפעלה של האינטרנט! חינמית, קוד פתוח וניתנת לאחסון עצמאי.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub גודל ספרית" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub גרסא" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub רישיון" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« הדגמה לייב »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="צילום מסך" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
<div dir="rtl">
|
||||
<p div="rtl">
|
||||
מערכת ההפעלה Puter הינה ספרית קוד פתוח, מתקדמת, עשירה בתכנים, מהירה במיוחד וניתנת להרחבה.
|
||||
אפשר להישתמש ב Puter כ:</p>
|
||||
<ul>
|
||||
<li>ענן אישי עם פרטיות מקסימלית, לשמירת הקבצים, האפליקציות והמשחקים שלך במקום מאובטח אחד, נגיש מכל מקום ובכל זמן.</li>
|
||||
<li>פלטפורמה לבניית ופרסום אתרים, אפליקציות ומשחקים.</li>
|
||||
<li>אלטרנטיבה ל-Dropbox, Google Drive, OneDrive וכו' עם ממשק מרענן ותכנים חזקים.</li>
|
||||
<li>סביבה לעבודה מרחוק לשרתים ותחנות עבודה.</li>
|
||||
<li>פרוייקט ידידותי, קוד פתוח וקהילה ללמידה על פיתוח אינטרנט, פיתוח בענן, מערכות מבוזרות ועוד הרבה!</li>
|
||||
<ul>
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
|
||||
## בוא נתחיל
|
||||
|
||||
### 💻 פיתוח מקומי (Localhost)
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
פקודה זו תפעיל את Puter בכתובת http://puter.localhost:4100 (או בפורט הפנוי הבא).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
#### Linux/macOS
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
מערכת ההפעלה Puter זמינה כשירות אחסון ב- [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## דרישות מערכת
|
||||
|
||||
- **מערכות הפעלה:** Linux, macOS, Windows
|
||||
- **RAM:** לפחות 2GB, מומלץ 4GB
|
||||
- **מקום פנוי בדיסק:** 1GB
|
||||
- **Node.js:** גרסה 16+ (מומלץ גרסה 22+)
|
||||
- **npm:** הגרסה היציבה האחרונה
|
||||
|
||||
<br/>
|
||||
|
||||
## תמיכה
|
||||
|
||||
צור קשר עם המפתחים והקהילה דרך הערוצים הבאים:
|
||||
|
||||
- דיווח על באג או בקשה לתוכן? אנא [פתח פניה](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter](https://www.reddit.com/r/puter.)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- בעיות אבטחה? [[email protected]](mailto:[email protected])
|
||||
- שלח אימייל למפתחים ב [[email protected]](mailto:[email protected])
|
||||
|
||||
אנחנו תמיד שמחים לעזור עם כל שאלה שיש. אל תהסס לשאול!
|
||||
|
||||
<br/>
|
||||
|
||||
## רישיון
|
||||
|
||||
ספריה זו, כולל כל התכנים שלה, תתי הפרויקטים, המודולים והרכיבים שלה, מורשית תחת [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) אלא אם נאמר אחרת במפורש. לספריות צד שלישי הכלולות בספרייה זו עשויות להיות רישיונות משלהן.
|
||||
|
||||
<br/>
|
||||
@@ -1,182 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, The Personal Cloud Computer: आपकी सारी फाइलें, ऐप्स, और गेम एक ही जगह, जिसे कहीं से भी कभी भी एक्सेस किया जा सकता है।" src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">इंटरनेट ओएस! फ्री, ओपन-सोर्स, और सेल्फ-होस्टेबल।</h3>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://puter.com/?ref=github.com"><strong>« लाइव डेमो »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com/?ref=github.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://apps.puter.com/">ऐप स्टोर</a>
|
||||
·
|
||||
<a href="https://developer.puter.com" target="_blank">डेवलपर्स</a>
|
||||
·
|
||||
<a href="https://github.com/heyputer/puter-cli" target="_blank">CLI</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter क्या है?
|
||||
|
||||
Puter एक एडवांस्ड, ओपन-सोर्स इंटरनेट ऑपरेटिंग सिस्टम है जिसे फीचर-रिच, तेज़ और एक्सटेंडेबल बनाने के लिए डिज़ाइन किया गया है। Puter का उपयोग आप निम्नलिखित चीजों के लिए कर सकते हैं:
|
||||
|
||||
- एक प्राइवेसी-फर्स्ट पर्सनल क्लाउड, जो आपकी सभी फाइलों, ऐप्स और गेम्स को एक सेफ जगह पर रखता है, जिसे आप कहीं से भी कभी भी एक्सेस कर सकते हैं।
|
||||
- वेबसाइट्स, वेब ऐप्स और गेम्स बनाने और पब्लिश करने का एक प्लेटफ़ॉर्म।
|
||||
- Dropbox, Google Drive, OneDrive आदि का एक शानदार और पावरफुल इंटरफ़ेस वाला विकल्प।
|
||||
- सर्वर और वर्कस्टेशन के लिए एक रिमोट डेस्कटॉप एनवायरनमेंट।
|
||||
- एक फ्रेंडली ओपन-सोर्स प्रोजेक्ट और कम्युनिटी, जहां आप वेब डेवलपमेंट, क्लाउड कंप्यूटिंग, डिस्ट्रीब्यूटेड सिस्टम्स और बहुत कुछ सीख सकते हैं।
|
||||
|
||||
<br/>
|
||||
|
||||
## शुरुआत कैसे करें?
|
||||
|
||||
### 💻 लोकल डेवलपमेंट
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
✨ यह Puter को
|
||||
<font color="red"> http://puter.localhost:4100 </font> (या अगले उपलब्ध पोर्ट) पर लॉन्च करेगा।
|
||||
|
||||
|
||||
अगर यह काम नहीं करता, तो [First Run Issues](./doc/self-hosters/first-run-issues.md) देखें।
|
||||
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
✨ यह Puter को
|
||||
<font color="red"> http://puter.localhost:4100</font> (या अगले उपलब्ध पोर्ट) पर लॉन्च करेगा।
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
#### Linux/macOS
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
✨ यह <font color="red"> http://puter.localhost:4100 </font>
|
||||
(या अगले उपलब्ध पोर्ट) पर उपलब्ध होगा।
|
||||
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
|
||||
✨ यह Puter को
|
||||
<font color="red"> http://puter.localhost:4100 (or the next available port). </font> (या अगले उपलब्ध पोर्ट) पर लॉन्च करेगा।
|
||||
|
||||
<br/>
|
||||
|
||||
### 🚀 सेल्फ-होस्टिंग
|
||||
|
||||
सेल्फ-होस्टिंग के लिए विस्तृत गाइड, कॉन्फ़िगरेशन ऑप्शन्स और बेस्ट प्रैक्टिसेज जानने के लिए हमारी [Self-Hosting Documentation](https://github.com/HeyPuter/puter/blob/main/doc/self-hosters/instructions.md) देखें।
|
||||
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter [**puter.com**](https://puter.com) पर एक होस्टेड सर्विस के रूप में भी उपलब्ध है।
|
||||
|
||||
<br/>
|
||||
|
||||
## सिस्टम आवश्यकताएँ
|
||||
|
||||
* **ऑपरेटिंग सिस्टम्स:** Linux, macOS, Windows
|
||||
* **RAM:** कम से कम 2GB (4GB रिकमेंडेड)
|
||||
* **डिस्क स्पेस:** 1GB फ्री स्पेस
|
||||
* **Node.js:** वर्जन 16+ (वर्जन 23+ रिकमेंडेड)
|
||||
* **npm:** लेटेस्ट स्टेबल वर्जन
|
||||
|
||||
<br/>
|
||||
|
||||
## सपोर्ट
|
||||
|
||||
नीचे दिए गए माध्यमों से आप मेंटेनर्स और कम्युनिटी से जुड़ सकते हैं:
|
||||
|
||||
* बग रिपोर्ट या फीचर रिक्वेस्ट? [यहाँ issue खोलें](https://github.com/HeyPuter/puter/issues/new/choose)।
|
||||
* Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
* X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
* Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
* Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
* सिक्योरिटी इशूज़? [[email protected]](mailto:[email protected])
|
||||
* ईमेल करें: [[email protected]](mailto:[email protected])
|
||||
|
||||
आपके किसी भी सवाल में मदद करने के लिए हम हमेशा तैयार हैं!
|
||||
|
||||
<br/>
|
||||
|
||||
## लाइसेंस
|
||||
|
||||
यह रिपॉज़िटरी और इसके सभी कंटेंट्स [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) लाइसेंस के अंतर्गत आते हैं जब तक कि कुछ और स्पष्ट रूप से ना लिखा हो। इसमें शामिल थर्ड-पार्टी लाइब्रेरीज़ अपने-अपने लाइसेंस के अधीन हो सकती हैं।
|
||||
|
||||
<br/>
|
||||
|
||||
## अनुवाद
|
||||
|
||||
Puter के डॉक्यूमेंटेशन कई भाषाओं में उपलब्ध हैं, जिनमें शामिल हैं:
|
||||
|
||||
- [Arabic / العربية](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ar.md)
|
||||
- [Armenian / Հայերեն](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hy.md)
|
||||
- [Bengali / বাংলা](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.bn.md)
|
||||
- [Chinese / 中文](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.zh.md)
|
||||
- [Danish / Dansk](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.da.md)
|
||||
- [English](https://github.com/HeyPuter/puter/blob/main/README.md)
|
||||
- [Farsi / فارسی](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fa.md)
|
||||
- [Finnish / Suomi](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fi.md)
|
||||
- [French / Français](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fr.md)
|
||||
- [German/ Deutsch](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.de.md)
|
||||
- [Hebrew/ עברית](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.he.md)
|
||||
- [Hindi / हिंदी](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hi.md)
|
||||
- [Hungarian / Magyar](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hu.md)
|
||||
- [Indonesian / Bahasa Indonesia](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.id.md)
|
||||
- [Italian / Italiano](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.it.md)
|
||||
- [Japanese / 日本語](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.jp.md)
|
||||
- [Korean / 한국어](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ko.md)
|
||||
- [Malayalam / മലയാളം](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ml.md)
|
||||
- [Polish / Polski](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.pl.md)
|
||||
- [Portuguese / Português](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.pt.md)
|
||||
- [Romanian / Română](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ro.md)
|
||||
- [Russian / Русский](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ru.md)
|
||||
- [Spanish / Español](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.es.md)
|
||||
- [Swedish / Svenska](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.sv.md)
|
||||
- [Tamil / தமிழ்](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ta.md)
|
||||
- [Telugu / తెలుగు](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.te.md)
|
||||
- [Thai / ไทย](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.th.md)
|
||||
- [Turkish / Türkçe](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.tr.md)
|
||||
- [Ukrainian / Українська](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ua.md)
|
||||
- [Urdu / اردو](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ur.md)
|
||||
- [Vietnamese / Tiếng Việt](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.vi.md)
|
||||
|
||||
@@ -1,128 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, A személyi felhő számítógép: Minden fájl, alkalmazás és játék egy helyen elérhető bárhonnan, bármikor." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">Az internetes oprendszer! Ingyenes, nyílt-forráskódú, saját szerveren futtatható.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Release" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub License" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« ÉLŐ DEMO »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
A Puter egy fejlett, nyílt forráskódú internetes operációs rendszer, amelyet úgy terveztek, hogy funkciókban gazdag, kivételesen gyors és nagymértékben bővíthető legyen. A Puter a következőképpen használható:
|
||||
|
||||
- Egy adatvédelmet előtérbe helyező személyes felhő, amely minden fájlt, alkalmazást és játékot egy biztonságos helyen tart. Bárhonnan és bármikor elérhető.
|
||||
- Egy platform weboldalak, web-appok, és játékok készítéséhez/közzétételéhez.
|
||||
- A Dropbox, Google Drive, OneDrive (stb.) alternatívája megújult felülettel és hatékony funkciókkal.
|
||||
- Egy távoli desktop-környezet szervereknek és workstation-öknek.
|
||||
- Egy barátságos, nyílt forráskódú projekt és közösség, amely a webfejlesztéssel, a felhőalapú számítástechnikával, elosztott rendszerekkel és sok más érdekes témával foglalkozik!
|
||||
|
||||
<br/>
|
||||
|
||||
## Első lépések
|
||||
|
||||
|
||||
### 💻 Helyi (lokális) fejlesztés
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
Ezzel a http://puter.localhost:4100 -on futtatjuk Putert. (vagy a legközelebbi elérhető porton).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
A Puter elérhető hostolt szolgáltatásként a [**puter.com**](https://puter.com) címen.
|
||||
|
||||
<br/>
|
||||
|
||||
## Rendszerkövetelmények
|
||||
|
||||
- **Operációs rendszerek:** Linux, macOS, Windows
|
||||
- **RAM:** 2GB minimum (4GB ajánlott)
|
||||
- **Tárhely:** 1GB szabad tárhely
|
||||
- **Node.js:** 16+ (22+ verzió ajánlott)
|
||||
- **npm:** legújabb stabil verzió
|
||||
|
||||
<br/>
|
||||
|
||||
## Támogatás
|
||||
|
||||
Lépj kapcsolatba a fejlesztőkkel és a közösséggel az alábbi platformokon:
|
||||
|
||||
- Észrevételeid/javaslataid vannak? Az [alábbi linken](https://github.com/HeyPuter/puter/issues/new/choose) megoszthatod velünk.
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Biztonsági hibák? [[email protected]](mailto:[email protected])
|
||||
- A fejlesztőket a [[email protected]](mailto:[email protected]) email címen érheted el.
|
||||
|
||||
|
||||
Mindig örömmel segítünk bármilyen felmerülő kérdésben. Bátran kérdezz tőlünk!
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## License
|
||||
|
||||
|
||||
Ez a repo, beleértve annak minden tartalmát, alprojektjeit, moduljait és komponenseit, az [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) licenc alatt áll, hacsak másképp nem rendelkeznek róla. A repoban szereplő harmadik fél által fejlesztett könyvtárak saját licencfeltételek alá eshetnek.
|
||||
|
||||
<br/>
|
||||
@@ -1,127 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, The Personal Cloud Computer: All your files, apps, and games in one place accessible from anywhere at any time." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">Ինտերնետ ՕՀ! Անվճար, բաց կոդով և ինքնահոսթ հնարավորությամբ։</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Release" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub License" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« Օնլայն դեմո »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter-ը առաջադեմ, բաց կոդով ինտերնետային օպերացիոն համակարգ է, որը նախագծված է լինել ֆունկցիոնալ հարուստ, բացառիկ արագ և բարձր ընդլայնելի։ Puter-ը կարող է օգտագործվել հետևյալ կերպ․
|
||||
|
||||
- Անձնական ամպային համակարգ՝ առաջնային գաղտնիությամբ, որը թույլ է տալիս պահել ձեր բոլոր ֆայլերը, հավելվածները և խաղերը մեկ անվտանգ վայրում, որը հասանելի է ցանկացած վայրից և ցանկացած ժամանակ։
|
||||
- Պլատֆորմ կայքերի, վեբ հավելվածների և խաղերի ստեղծման և հրապարակման համար։
|
||||
- Dropbox, Google Drive, OneDrive և այլ ծառայությունների այլընտրանք՝ նոր ինտերֆեյսով և հզոր գործառույթներով։
|
||||
- Հեռավոր աշխատասեղանի միջավայր սերվերների և աշխատանքային կայանների համար։
|
||||
- Պարզ, բաց կոդով նախագիծ և համայնք՝ վեբ ծրագրավորման, ամպային հաշվարկների, բաշխված համակարգերի և այլ թեմաների մասին սովորելու համար։
|
||||
|
||||
<br/>
|
||||
|
||||
## Սկսել
|
||||
|
||||
|
||||
### 💻 Լոկալ ծրագրավորում
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
Սա կգործակի Puter-ը հետևյալ հասցեով՝ http://puter.localhost:4100 (կամ հաջորդ հասանելի պորտով)։
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter-ը հասանելի է որպես հյուրընկալվող ծառայություն [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## System Requirements
|
||||
|
||||
- **Օպերացիոն համակարգ:** Linux, macOS, Windows
|
||||
- **Օպերատիվ հիշողություն:** 2GB նվազագույնը (4GB խորհուրդ է տրվում)
|
||||
- **Համակարգչի հիշողություն:** 1GB ազատ տարածություն
|
||||
- **Node.js:** Տարբերակ 16+ (Տարբերակ 22+ խորհուրդ է տրվում)
|
||||
- **npm:** Վերջին կայուն տարբերակը
|
||||
|
||||
<br/>
|
||||
|
||||
## Աջակցություն
|
||||
|
||||
Կապվեք համակարգողների և համայնքի հետ այս կայքերի միջոցով՝
|
||||
|
||||
- Սխալների կամ գործառույթի հարցում՝ (https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Անվտանգության խնդիրներ՝ [[email protected]](mailto:[email protected])
|
||||
- Email maintainers at [[email protected]](mailto:[email protected])
|
||||
|
||||
Մենք միշտ ուրախ ենք օգնել ձեզ ցանկացած հարցում։ Մի կաշկանդվեք հարցնել։
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## Լիցենզիա
|
||||
|
||||
Այս պահոցարանը, ներառյալ բոլոր իր բովանդակությունը, ենթա-պրոյեկտները, մոդուլները և բաղադրիչները, լիցենզավորվում են [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) լիցենզիայի տակ, եթե այլ կերպ հստակ նշված չէ։ Այս պահոցարանում ներառված երրորդ կողմի գրադարանները կարող են ենթարկվել իրենց սեփական լիցենզիաներին։
|
||||
|
||||
<br/>
|
||||
@@ -1,127 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, Komputer Cloud Pribadi: Semua file, aplikasi, dan permainan Anda berada di satu tempat yang dapat diakses dari mana saja kapan saja." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">Sistem Operasi Internet! Gratis, Sumber Terbuka, dan Dapat Dihosting Sendiri.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Release" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub License" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« LIVE DEMO »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter adalah sistem operasi internet canggih, open-source, yang dirancang untuk menjadi kaya fitur, sangat cepat, dan sangat dapat diperluas. Puter dapat digunakan sebagai:
|
||||
|
||||
- Cloud pribadi yang mengutamakan privasi untuk menyimpan semua file, aplikasi, dan permainan Anda di satu tempat yang aman, yang dapat diakses dari mana saja kapan saja.
|
||||
- Platform untuk membangun dan mempublikasikan situs web, aplikasi web, dan permainan.
|
||||
- Alternatif untuk Dropbox, Google Drive, OneDrive, dll. Dengan antarmuka baru dan fitur-fitur canggih.
|
||||
- Lingkungan desktop jarak jauh untuk server dan workstation.
|
||||
- Proyek dan komunitas open-source yang ramah untuk belajar tentang pengembangan web, komputasi gemawan (cloud), sistem terdistribusi, dan banyak lagi!
|
||||
|
||||
<br/>
|
||||
|
||||
## Memulai
|
||||
|
||||
|
||||
### 💻 Pengembangan Lokal
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
Ini akan menjalankan Puter di http://puter.localhost:4100 (atau di port berikutnya yang tersedia)
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter tersedia sebagai layanan yang telah dihosting di [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## Persyaratan Sistem
|
||||
|
||||
- **Sistem Operasi:** Linux, macOS, Windows
|
||||
- **RAM:** 2GB minimal (rekomendasi 4GB)
|
||||
- **Penyimpanan:** 1GB ruang tersedia
|
||||
- **Node.js:** Version 16+ (rekomendasi versi 22+)
|
||||
- **npm:** Versi stabil termutakhir
|
||||
|
||||
<br/>
|
||||
|
||||
## Dukuangan
|
||||
|
||||
Terhubung dengan maintainer dan komunitas melalui saluran-saluran berikut:
|
||||
|
||||
- Laporan bug atau permintaan fitur? Silakan [buat issue](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Isu keamanan? [[email protected]](mailto:[email protected])
|
||||
- Email maintainers di [[email protected]](mailto:[email protected])
|
||||
|
||||
Kami selalu senang membantu Anda dengan pertanyaan apa pun yang Anda miliki. Jangan ragu untuk bertanya!
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## Lisensi
|
||||
|
||||
Repositori ini, termasuk semua isinya, sub-proyek, modul, dan komponen, dilisensikan di bawah [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) kecuali dinyatakan sebaliknya secara eksplisit. Perpustakaan pihak ketiga yang termasuk dalam repositori ini mungkin tunduk pada lisensinya sendiri.
|
||||
|
||||
<br/>
|
||||
@@ -1,128 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, The Personal Cloud Computer: All your files, apps, and games in one place accessible from anywhere at any time." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">Il sistema operativo di Internet! Gratuito, Open-Source e Auto-Hostabile.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Release" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub License" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« LIVE DEMO »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter è un sistema operativo di Internet avanzato e open-source, progettato per essere ricco di funzionalità, eccezionalmente veloce e altamente estensibile. Puter può essere utilizzato come:
|
||||
|
||||
- Un cloud personale che tiene conto della privacy per conservare tutti i file, le app e i giochi in un luogo sicuro, accessibile da qualsiasi luogo e in qualsiasi momento.
|
||||
- Una piattaforma per creare e pubblicare siti web, app e giochi.
|
||||
- Un'alternativa a Dropbox, Google Drive, OneDrive, ecc. con un'interfaccia nuova e funzioni potenti.
|
||||
- Un ambiente desktop remoto per server e workstation.
|
||||
- Un progetto e una comunità open-source amichevole per imparare lo sviluppo web, il cloud computing, i sistemi distribuiti e molto altro ancora!
|
||||
|
||||
<br/>
|
||||
|
||||
## Getting Started
|
||||
|
||||
|
||||
### 💻 Local Development
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
In questo modo Puter verrà avviato all'indirizzo http://puter.localhost:4100 (o alla prossima porta disponibile).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter è disponibile come servizio in hosting su [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## Requisiti di Sistema
|
||||
|
||||
- **Sistema Operativo:** Linux, macOS, Windows
|
||||
- **RAM:** 2GB minimi (4GB raccomandati)
|
||||
- **Spazio su Disco:** 1GB liberi
|
||||
- **Node.js:** Versione 16+ (Versione 22+ raccomandati)
|
||||
- **npm:** Ultima versione stabile
|
||||
|
||||
<br/>
|
||||
|
||||
## Supporto
|
||||
|
||||
Collegatevi con i maintainers e la comunità attraverso questi canali:
|
||||
|
||||
- Segnalazione di bug o richiesta di funzionalità? Perfavore [aprire una issue](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Problemi di sicurezza? [[email protected]](mailto:[email protected])
|
||||
- Email maintainers a [[email protected]](mailto:[email protected])
|
||||
|
||||
Siamo sempre felici di aiutarvi con qualsiasi domanda. Non esitate a chiedere!
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## Licenza
|
||||
|
||||
Questo repository, compresi tutti i suoi contenuti, sottoprogetti, moduli e componenti, è concesso in licenza [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt), a meno che non sia esplicitamente indicato diversamente. Le librerie di terze parti incluse in questo repository possono essere soggette alle loro licenze.
|
||||
|
||||
<br/>
|
||||
|
||||
@@ -1,123 +0,0 @@
|
||||
|
||||
<h3 align="center"><img width="80" alt="Puter.com, あなたのファイル、アプリ、ゲームをどこからでもアクセス可能にするパーソナルクラウドコンピュータ" src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">インターネットOS!無料、オープンソース、セルフホスト可能。</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub リポジトリサイズ" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub リリース" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=%E6%9C%80%E6%96%B0%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3"> <img alt="GitHub ライセンス" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« ライブデモ »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="スクリーンショット" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puterは、機能豊富で非常に高速、そして高い拡張性を持つ、先進的なオープンソースのインターネットオペレーティングシステムです。Puterは以下の用途に利用できます:
|
||||
|
||||
- プライバシーを最優先するパーソナルクラウドとして、あなたのファイル、アプリ、ゲームを一か所で安全に管理し、どこからでもアクセス可能に。
|
||||
- ウェブサイト、ウェブアプリ、ゲームの作成と公開のためのプラットフォーム。
|
||||
- Dropbox、Google Drive、OneDriveなどの代替として、新しいインターフェースと強力な機能を提供。
|
||||
- サーバーやワークステーションのためのリモートデスクトップ環境。
|
||||
- ウェブ開発、クラウドコンピューティング、分散システムなどを学ぶための、フレンドリーでオープンなコミュニティとプロジェクト。
|
||||
|
||||
<br/>
|
||||
|
||||
## はじめに
|
||||
|
||||
|
||||
### 💻 ローカル開発
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
これでPuterが http://puter.localhost:4100 (または次に利用可能なポート)で起動します。
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puterは[**puter.com**](https://puter.com)でホストサービスとして利用可能です。
|
||||
|
||||
<br/>
|
||||
|
||||
## システム要件
|
||||
|
||||
- **オペレーティングシステム:** Linux, macOS, Windows
|
||||
- **RAM:** 最小2GB(推奨4GB)
|
||||
- **ディスクスペース:** 1GBの空き容量
|
||||
- **Node.js:** バージョン16以上(推奨バージョン22以上)
|
||||
- **npm:** 最新の安定バージョン
|
||||
|
||||
<br/>
|
||||
|
||||
## サポート
|
||||
|
||||
メンテナーやコミュニティと以下のチャンネルを通じてつながりましょう:
|
||||
|
||||
- バグ報告や機能リクエストがありますか? [issueを開く](https://github.com/HeyPuter/puter/issues/new/choose) してください。
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- セキュリティの問題? [[email protected]](mailto:[email protected])
|
||||
- メンテナーへのメールは [[email protected]](mailto:[email protected]) まで
|
||||
|
||||
質問があれば、いつでもお気軽にお問い合わせください!
|
||||
|
||||
<br/>
|
||||
|
||||
## ライセンス
|
||||
|
||||
このリポジトリ、ならびにそのすべてのコンテンツ、サブプロジェクト、モジュール、コンポーネントは、[AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt)の下でライセンスされています。明示的に異なるライセンスが示されている場合を除きます。このリポジトリに含まれるサードパーティのライブラリは、それぞれのライセンスが適用される場合があります。
|
||||
|
||||
<br/>
|
||||
@@ -1,127 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, The Personal Cloud Computer: All your files, apps, and games in one place accessible from anywhere at any time." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">Puter: 인터넷 OS! 무료이고 오픈소스이며 자체 호스팅이 가능합니다.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Release" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub License" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« 시연 영상 »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter는 오픈소스 인터넷 운영 체제로, 매우 빠르고 확장성이 뛰어나며 새로운 인터페이스와 다양한 기능을 갖추고 있습니다. Puter는 다음과 같이 사용될 수 있습니다:
|
||||
|
||||
- 모든 파일, 앱, 게임을 한 곳에 안전하게 보관하고 언제 어디서나 접근할 수 있는 프라이버시 중심의 개인 클라우드로 사용할 수 있습니다.
|
||||
- 웹사이트, 웹 앱, 게임을 구축하고 배포하는 플랫폼으로 활용할 수 있습니다.
|
||||
- Dropbox, Google Drive, OneDrive 등의 대안으로 사용할 수 있으며 보다 발전된 기능과 인터페이스를 제공합니다.
|
||||
- 서버와 워크스테이션을 위한 원격 데스크톱 환경으로 활용할 수 있습니다.
|
||||
- 웹 개발, 클라우드 컴퓨팅, 분산 시스템 등에 대해 배울 수 있는 친근한 오픈소스 프로젝트이자 커뮤니티입니다!
|
||||
|
||||
<br/>
|
||||
|
||||
## 시작하기
|
||||
|
||||
|
||||
### 💻 로컬 환경 개발
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
위처럼 실행할 시 Puter는 http://puter.localhost:4100 (또는 사용 가능한 다음 포트)에서 실행됩니다.
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter는 [**puter.com**](https://puter.com)에서 호스팅 서비스로 이용할 수 있습니다.
|
||||
|
||||
<br/>
|
||||
|
||||
## 시스템 요구사항
|
||||
|
||||
- **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
|
||||
|
||||
<br/>
|
||||
|
||||
## 지원
|
||||
|
||||
다음 채널을 통해 관리자 및 커뮤니티와 소통하세요:
|
||||
|
||||
- 버그 신고나 기능 요청이 있으신가요? [이슈를 열어주세요.](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- 보안 관련 문제는 [[email protected]](mailto:[email protected]) 으로 연락주세요.
|
||||
- 관리자에게 이메일 보내기: [[email protected]](mailto:[email protected])
|
||||
|
||||
어떤 질문이든 기꺼이 도와드리겠습니다. 언제든 물어보세요!
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## 라이선스
|
||||
|
||||
이 저장소는 모든 내용, 하위 프로젝트, 모듈 및 구성 요소를 포함하여 명시적으로 달리 명시되지 않는 한 [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) 라이선스 하에 제공됩니다. 이 저장소에 포함된 제3자 라이브러리는 해당 라이브러리의 고유 라이선스를 따를 수 있습니다.
|
||||
|
||||
<br/>
|
||||
@@ -1,128 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, The Personal Cloud Computer: All your files, apps, and games in one place accessible from anywhere at any time." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">ഇന്റർനെറ്റ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റം!<br> സൗജന്യവും, ഓപ്പൺ സോഴ്സും സ്വയം ഹോസ്റ്റ് ചെയ്യാൻ പറ്റുന്നതും</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Release" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub License" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« ലൈവ് ഡെമോ »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## പ്യൂട്ടർ (Puter)
|
||||
|
||||
ഫീച്ചറുകളാൽ സമ്പുഷ്ടവും അസാധാരണമാംവിധം വേഗതയേറിയതും,വളരെ വിപുലീകരിക്കാവുന്നതുമായ ഒരു നൂതന, ഓപ്പൺ സോഴ്സ് ഇന്റർനെറ്റ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റമാണ് പ്യൂട്ടർ. പ്യൂട്ടർ ഇനിപ്പറയുന്ന രീതിയിൽ ഉപയോഗിക്കാം:
|
||||
|
||||
- നിങ്ങളുടെ എല്ലാ ഫയലുകളും ആപ്പുകളും ഗെയിമുകളും ഒരു സുരക്ഷിത സ്ഥലത്ത് സൂക്ഷിക്കുന്നതിനുള്ള, സ്വകാര്യതയ്ക്ക് മുൻഗണന കൊടുക്കുന്ന ആദ്യത്തെ വ്യക്തിഗത ക്ലൗഡ്, എവിടെ നിന്നും എപ്പോൾ വേണമെങ്കിലും ആക്സസ് ചെയ്യാൻ കഴിയും.
|
||||
- വെബ്സൈറ്റുകൾ, വെബ് ആപ്പുകൾ, ഗെയിമുകൾ എന്നിവ നിർമ്മിക്കുന്നതിനും പ്രസിദ്ധീകരിക്കുന്നതിനുമുള്ള ഒരു പ്ലാറ്റ്ഫോം.
|
||||
- പുതിയ ഇന്റർഫേസും, ശക്തമായ ഫീച്ചറുകളും അടങ്ങിയ, ഡ്രോപ്പ്ബോക്സ്, ഗൂഗിൾ ഡ്രൈവ്, വൺഡ്രൈവ് മുതലായവയ്ക്കുള്ള ബദൽ.
|
||||
- സെർവറുകൾക്കും വർക്ക്സ്റ്റേഷനുകൾക്കും, ഒരു വിദൂര ഡെസ്ക്ടോപ്പ് പരിസ്ഥിതി.
|
||||
- വെബ് ഡെവലപ്മെന്റ്, ക്ലൗഡ് കംപ്യൂട്ടിംഗ്, ഡിസ്ട്രിബ്യൂട്ടഡ് സിസ്റ്റങ്ങൾ എന്നിവയെ കുറിച്ചും, അതിലേറെ കാര്യങ്ങളെ കുറിച്ചും അറിയാനുള്ള സൗഹൃദപരവും ഓപ്പൺ സോഴ്സുമായ പ്രോജക്റ്റും കമ്മ്യൂണിറ്റിയും!
|
||||
|
||||
<br/>
|
||||
|
||||
## തുടങ്ങാനായി
|
||||
|
||||
|
||||
### 💻 ലോക്കൽ ഡെവലപ്മെന്റ്
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
|
||||
ഇത് http://puter.localhost:4100 (അല്ലെങ്കിൽ അടുത്ത ലഭ്യമായ പോർട്ടിൽ) എന്നതിൽ Puter സമാരംഭിക്കും
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
പ്യൂട്ടർ [**puter.com**](https://puter.com) എന്നതിൽ ഹോസ്റ്റ് ചെയ്ത സേവനമായി ലഭ്യമാണ്.
|
||||
|
||||
<br/>
|
||||
|
||||
## സിസ്റ്റത്തിന്റെ ആവശ്യകതകൾ
|
||||
|
||||
- **ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങൾ:** ലിനക്സ്, മാക്ക് ഒഎസ്, വിൻഡോസ്
|
||||
- **RAM:** 2GB കുറഞ്ഞത് (4GB ശുപാർശ ചെയ്യുന്നു)
|
||||
- **ഡിസ്ക് സ്പേസ്:** 1GB ഒഴിഞ്ഞ ഇടം
|
||||
- **Node.js:** Version 16+ (Version 22+ ശുപാർശ ചെയ്യുന്നു)
|
||||
- **npm:** ഏറ്റവും പുതിയ സ്ഥിരതയുള്ള പതിപ്പ്
|
||||
|
||||
<br/>
|
||||
|
||||
## പിന്തുണ
|
||||
|
||||
ഈ ചാനലുകളിലൂടെ പരിപാലിക്കുന്നവരുമായും കമ്മ്യൂണിറ്റിയുമായും ബന്ധപ്പെടുക:
|
||||
|
||||
- ബഗ്ഗ് റിപ്പോർട്ടോ, ഫീച്ചർ റിക്ക്വസ്റ്റോ ഉണ്ടോ? ദയവുചെയ്ത് [ഒരു ഇഷ്യൂ തുടങ്ങുക](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- ഡിസ്കോർഡ്: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- എക്സ് (ട്വിറ്റർ): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- റെഡ്ഡിറ്റ്: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- മാസ്റ്റഡൺ: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- സുരക്ഷാ പ്രശ്നങ്ങളുണ്ടോ? [[email protected]](mailto:[email protected])
|
||||
- ഇമെയിൽ മെയിന്റൈനർമാർ: [[email protected]](mailto:[email protected])
|
||||
|
||||
നിങ്ങൾക്ക് ഉണ്ടായേക്കാവുന്ന ഏത് ചോദ്യങ്ങളിലും നിങ്ങളെ സഹായിക്കുന്നതിൽ ഞങ്ങൾക്ക് എപ്പോഴും സന്തോഷമുണ്ട്. ചോദിക്കാൻ മടിക്കേണ്ട!
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## ലൈസൻസ്
|
||||
|
||||
ഈ ശേഖരം, അതിന്റെ എല്ലാ ഉള്ളടക്കങ്ങളും, ഉപപദ്ധതികളും, മൊഡ്യൂളുകളും, ഘടകങ്ങളും ഉൾപ്പെടെ, [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) എന്നതിന് കീഴിൽ ലൈസൻസുള്ളതാണ്. ഈ ശേഖരത്തിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന മൂന്നാം കക്ഷി ലൈബ്രറികൾ അവരുടെ സ്വന്തം ലൈസൻസുകൾക്ക് വിധേയമായിരിക്കാം.
|
||||
|
||||
<br/>
|
||||
@@ -1,127 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, The Personal Cloud Computer: Semua fail, apl, dan permainan anda di satu tempat yang boleh diakses dari mana sahaja pada bila-bila masa." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">Sistem Operasi Internet! Percuma, Sumber Terbuka, dan Boleh Dihoskan Sendiri.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="Saiz repo GitHub" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="Terbitan GitHub" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="Lesen GitHub" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« DEMO SECARA LANGSUNG »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter ialah sistem operasi internet sumber terbuka yang maju dan direka untuk kaya dengan ciri kefungsian, kepantasan luar biasa dan kebolehluasan yang tinggi. Puter boleh digunakan sebagai:
|
||||
|
||||
- Storan awan peribadi yang mendahulukan privasi untuk menyimpan semua fail, aplikasi dan permainan anda di satu tempat yang selamat dan boleh diakses dari mana sahaja pada bila-bila masa.
|
||||
- Platform untuk membina dan menerbitkan laman web, aplikasi web dan permainan.
|
||||
- Alternatif kepada Dropbox, Google Drive, OneDrive, dan lain-lain dengan antara muka yang baharu dan ciri kefungsian berkuasa tinggi.
|
||||
- Persekitaran desktop awan untuk server dan stesen kerja.
|
||||
- Projek dan komuniti sumber terbuka yang mesra untuk mempelajari pembangunan laman web, pengkomputeran awan, sistem teragih, dan banyak lagi!
|
||||
|
||||
<br/>
|
||||
|
||||
## Mulakan
|
||||
|
||||
|
||||
### 💻 Pembangunan Lokal
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
Ini akan melancarkan Puter di http://puter.localhost:4100 (atau port seterusnya yang tersedia).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter tersedia sebagai perkhidmatan terhos di [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## Keperluan Sistem
|
||||
|
||||
- **Sistem Operasi:** Linux, macOS, Windows
|
||||
- **RAM:** Minimum 2GB (sebaiknya 4GB)
|
||||
- **Ruang Storan:** 1GB ruang kosong
|
||||
- **Node.js:** Versi 16+ (sebaiknya Versi 22+)
|
||||
- **npm:** Versi stabil yang terkini
|
||||
|
||||
<br/>
|
||||
|
||||
## Sokongan
|
||||
|
||||
Berhubung dengan penyelenggara dan komuniti melalui saluran berikut:
|
||||
|
||||
- Laporan pepijat atau permintaan ciri? Sila [buka isu baharu](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Isu keselamatan? [[email protected]](mailto:[email protected])
|
||||
- Emel penyelenggara melalui [[email protected]](mailto:[email protected])
|
||||
|
||||
Kami sentiasa gembira untuk membantu anda dengan apa-apa soalan. Jangan takut untuk bertanya!
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## Lesen
|
||||
|
||||
Repositori ini, termasuklah kandungannya, subprojek, modul dan komponen, dilesenkan di bawah [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) melainkan dinyatakan sebaliknya. *Library* pihak ketiga yang terkandung dalam repositori ini tertakluk kepada lesen mereka sendiri.
|
||||
<!-- The word `Library` is kept as is to avoid confusion since the direct translation `Perpustakaan/Pustaka` is never used in the tech context and doesn't convey the same meaning among Malay community if used in this situation -->
|
||||
<br/>
|
||||
@@ -1,127 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, De Persoonlijke Cloud Computer: Al je bestanden, apps en games op één plek, overal en altijd toegankelijk." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">Het Internet OS! Gratis, Open-Source en Zelf te Hosten.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo grootte" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Release" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=laatste%20versie"> <img alt="GitHub Licentie" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« LIVE DEMO »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter is een geavanceerd, open-source internetbesturingssysteem ontworpen om functierijk, uitzonderlijk snel en zeer uitbreidbaar te zijn. Puter kan worden gebruikt als:
|
||||
|
||||
- Een privacy-gerichte persoonlijke cloud om al je bestanden, apps en games op één veilige plek te bewaren, overal en altijd toegankelijk.
|
||||
- Een platform voor het bouwen en publiceren van websites, web-apps en games.
|
||||
- Een alternatief voor Dropbox, Google Drive, OneDrive, etc. met een frisse interface en krachtige functies.
|
||||
- Een externe desktopomgeving voor servers en werkstations.
|
||||
- Een vriendelijk, open-source project en gemeenschap om te leren over webontwikkeling, cloud computing, gedistribueerde systemen en veel meer!
|
||||
|
||||
<br/>
|
||||
|
||||
## Aan de slag
|
||||
|
||||
|
||||
### 💻 Lokale Ontwikkeling
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
Dit zal Puter starten op http://puter.localhost:4100 (of de eerstvolgende beschikbare poort).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter is beschikbaar als een gehoste service op [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## Systeemvereisten
|
||||
|
||||
- **Besturingssystemen:** Linux, macOS, Windows
|
||||
- **RAM:** 2GB minimum (4GB aanbevolen)
|
||||
- **Schijfruimte:** 1GB vrije ruimte
|
||||
- **Node.js:** Versie 16+ (Versie 22+ aanbevolen)
|
||||
- **npm:** Laatste stabiele versie
|
||||
|
||||
<br/>
|
||||
|
||||
## Ondersteuning
|
||||
|
||||
Verbind met de onderhouders en de gemeenschap via deze kanalen:
|
||||
|
||||
- Bug rapport of functieverzoek? [Open een issue](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Beveiligingsproblemen? [[email protected]](mailto:[email protected])
|
||||
- E-mail onderhouders op [[email protected]](mailto:[email protected])
|
||||
|
||||
We helpen je graag met al je vragen. Aarzel niet om te vragen!
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## Licentie
|
||||
|
||||
Deze repository, inclusief alle inhoud, subprojecten, modules en componenten, is gelicentieerd onder [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) tenzij expliciet anders vermeld. Bibliotheken van derden die in deze repository zijn opgenomen, kunnen onderworpen zijn aan hun eigen licenties.
|
||||
|
||||
<br/>
|
||||
@@ -1,148 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, The Personal Cloud Computer: All your files, apps, and games in one place accessible from anywhere at any time." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">ଇଣ୍ଟରନେଟ OS! ନିଶୁଳ୍କ, ଖୋଲା-ମୂଳ (Open-Source), ଏବଂ ସ୍ୱୟଂ-ହୋଷ୍ଟ କରିପାରିବା।</h3>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://puter.com/?ref=github.com"><strong>« LIVE ଡେମୋ »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com/?ref=github.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://apps.puter.com/">App Store</a>
|
||||
·
|
||||
<a href="https://developer.puter.com" target="_blank">Developers</a>
|
||||
·
|
||||
<a href="https://github.com/heyputer/puter-cli" target="_blank">CLI</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter ହେଉଛି ଗୋଟିଏ ଉନ୍ନତ, ଖୋଲା-ମୂଳ ଇଣ୍ଟରନେଟ ଅପରେଟିଂ ସିଷ୍ଟମ, ଯାହାକି ବିଶେଷତାସମୃଦ୍ଧ, ଶୀଘ୍ର ଏବଂ ଏକ୍ସଟେନ୍ସିବଲ ଭାବେ ଡିଜାଇନ୍ କରାଯାଇଛି। Puter କୁ ନିମ୍ନ ପ୍ରକାରେ ବ୍ୟବହାର କରିପାରିବେ:
|
||||
|
||||
- ଗୋଟିଏ ପ୍ରାଇଭେସି-ପ୍ରଥମ (privacy-first) ପର୍ସନାଲ କ୍ଲାଉଡ୍ ଭାବେ — ଯେଉଁଠାରେ ଆପଣଙ୍କ ସମସ୍ତ ଫାଇଲ୍, ଆପ୍ସ ଏବଂ ଗେମ୍ସ ଗୋଟିଏ ସୁରକ୍ଷିତ ସ୍ଥାନରେ ରହିବ, ଯାହାକୁ କେଉଁଠୁ ସମୟରେ ଆକ୍ସେସ୍ କରିପାରିବେ।
|
||||
- ୱେବସାଇଟ୍, ୱେବ ଆପ୍ସ, ଏବଂ ଗେମ୍ ତିଆରି ଏବଂ ପ୍ରକାଶ ପାଇଁ ଗୋଟିଏ ପ୍ଲାଟଫର୍ମ।
|
||||
- Dropbox, Google Drive, OneDrive ଇତ୍ୟାଦିଙ୍କ ବିକଳ୍ପ ଭାବେ — ଏକ ସୁନ୍ଦର ଇଣ୍ଟରଫେସ୍ ଏବଂ ଶକ୍ତିଶାଳୀ ବୈଶିଷ୍ଟ ସହିତ।
|
||||
- ସର୍ଭର ଏବଂ ଓର୍କସ୍ଟେସନ୍ ପାଇଁ ଗୋଟିଏ ରିମୋଟ୍ ଡେସ୍କଟପ୍ ଇନ୍ଭାୟରମେଣ୍ଟ।
|
||||
- ୱେବ୍ ଡିଭେଲପମେଣ୍ଟ, କ୍ଲାଉଡ୍ କମ୍ପ୍ୟୁଟିଙ୍ଗ, ବିତରିତ ସିଷ୍ଟମ (distributed systems) ଇତ୍ୟାଦି ଶିଖିବା ପାଇଁ ଗୋଟିଏ ସହଜ-ମନୋଭାବୀ ଖୋଲା-ମୂଳ ସମୁଦାୟ।
|
||||
|
||||
<br/>
|
||||
|
||||
## ପ୍ରାରମ୍ଭ (Getting Started)
|
||||
|
||||
### 💻 Local Development
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
**→** ଏହା Puter କୁ ଲଞ୍ଚ କରିବ:
|
||||
<font color="red"> http://puter.localhost:4100 (ଅଥବା ଅନ୍ୟ ଉପଲବ୍ଧ ପୋର୍ଟ୍) </font>
|
||||
|
||||
ଯଦି ଏହା କାମ କରୁନାହିଁ, ତେବେ [First Run Issues](./doc/self-hosters/first-run-issues.md) କୁ ଦେଖନ୍ତୁ।
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
**→** ଏହା Puter କୁ ଲଞ୍ଚ କରିବ:
|
||||
<font color="red"> http://puter.localhost:4100 (ଅଥବା ଅନ୍ୟ ଉପଲବ୍ଧ ପୋର୍ଟ୍) </font>
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
#### Linux/macOS
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
**→** ଏହା ଉପଲବ୍ଧ ହେବ:
|
||||
<font color="red"> http://puter.localhost:4100 (ଅଥବା ଅନ୍ୟ ଉପଲବ୍ଧ ପୋର୍ଟ୍) </font>
|
||||
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
**→** ଏହା Puter କୁ ଲଞ୍ଚ କରିବ:
|
||||
<font color="red"> http://puter.localhost:4100 (ଅଥବା ଅନ୍ୟ ଉପଲବ୍ଧ ପୋର୍ଟ୍) </font>
|
||||
|
||||
<br/>
|
||||
|
||||
### 🚀 Self-Hosting
|
||||
|
||||
Self-Hosting ପାଇଁ ବିସ୍ତୃତ ଗାଇଡ୍, କନଫିଗୁରେସନ୍ ଅପ୍ସନ୍ ଏବଂ ବେଷ୍ଟ-ପ୍ରାକ୍ଟିସ୍ ପାଇଁ ଏଠାରେ ଯାଆନ୍ତୁ:
|
||||
[Self-Hosting Documentation](https://github.com/HeyPuter/puter/blob/main/doc/self-hosters/instructions.md)
|
||||
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter ହୋଷ୍ଟେଡ୍ ସର୍ଭିସ୍ ଭାବେ ଉପଲବ୍ଧ ଅଛି: [**puter.com**](https://puter.com)
|
||||
|
||||
<br/>
|
||||
|
||||
## ସିଷ୍ଟମ ଆବଶ୍ୟକତା (System Requirements)
|
||||
|
||||
- **Operating Systems:** Linux, macOS, Windows
|
||||
- **RAM:** ଅନ୍ୟୁନ 2GB (ପରାମର୍ଶ 4GB)
|
||||
- **Disk Space:** 1GB ଖାଲି ସ୍ଥାନ
|
||||
- **Node.js:** ସଂସ୍କରଣ 20.19.5+ (ପରାମର୍ଶ 23+)
|
||||
- **npm:** ନବୀନତମ ସ୍ଥିର ସଂସ୍କରଣ
|
||||
|
||||
<br/>
|
||||
|
||||
## ସହଯୋଗ (Support)
|
||||
|
||||
ମେଣ୍ଟେନର୍ ଏବଂ ସମୁଦାୟ ସହିତ ଯୋଡ଼ିବା ପାଇଁ:
|
||||
|
||||
- Bug report କିମ୍ବା ନୂଆ feature ବାବଦରେ? [open an issue](https://github.com/HeyPuter/puter/issues/new/choose)
|
||||
- Discord: https://discord.com/invite/PQcx7Teh8u
|
||||
- X (Twitter): https://x.com/HeyPuter
|
||||
- Reddit: https://www.reddit.com/r/puter/
|
||||
- Mastodon: https://mastodon.social/@puter
|
||||
- Security issues? [[email protected]](mailto:[email protected])
|
||||
- Maintainer Email: [[email protected]](mailto:[email protected])
|
||||
|
||||
ଆମେ ସମସ୍ତେ ସହାୟତା ପାଇଁ ସଦା ପ୍ରସ୍ତୁତ।
|
||||
|
||||
<br/>
|
||||
|
||||
## ଲାଇସେନ୍ସ (License)
|
||||
|
||||
ଏହି ରିପୋଜିଟୋରୀ, ସମସ୍ତ ସବ୍-ପ୍ରୋଜେକ୍ଟ, ମୋଡ୍ୟୁଲ୍ ଏବଂ କମ୍ପୋନେଣ୍ଟ ସହିତ **AGPL-3.0** ଲାଇସେନ୍ସ ଅଧୀନରେ ରହିଛି।
|
||||
ତୃତୀୟ ପକ୍ଷ ଲାଇବ୍ରେରି ନିଜସ୍ୱ ଲାଇସେନ୍ସ ଅଧୀନରେ ଥାଇପାରେ।
|
||||
|
||||
<br/>
|
||||
|
||||
## ଅନ୍ୟ README ଲିଙ୍କ୍ (Links to Other READMEs)
|
||||
|
||||
### Backend
|
||||
- [PuterAI Module](./src/backend/doc/modules/puterai/README.md)
|
||||
- [Metering Service](./src/backend/src/services/MeteringService/README.md)
|
||||
- [Extensions Development Guide](./extensions/README.md)
|
||||
@@ -1,182 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, The Personal Cloud Computer: All your files, apps, and games in one place accessible from anywhere at any time." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">ਇੰਟਰਨੇਟ ਓਐਸ! ਮੁਫ਼ਤ, ਖੁੱਲ੍ਹੇ ਸਰੋਤ ਵਾਲਾ, ਅਤੇ ਆਪ ਸਵੈ-ਹੋਸਟ ਕਰ ਸਕਦੇ ਹੋ।</h3>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://puter.com/?ref=github.com"><strong>« LIVE DEMO »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com/?ref=github.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://apps.puter.com/">ਐਪ ਸਟੋਰ</a>
|
||||
·
|
||||
<a href="https://developer.puter.com" target="_blank">ਡਿਵੈਲਪਰ</a>
|
||||
·
|
||||
<a href="https://github.com/heyputer/puter-cli" target="_blank">CLI</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter ਇੱਕ ਵਿਕਸਤ, ਖੁੱਲ੍ਹਾ-ਸਰੋਤ ਇੰਟਰਨੇਟ ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਹੈ ਜੋ ਫੀਚਰ-ਭਰਪੂਰ, ਬਹੁਤ ਤੇਜ਼, ਅਤੇ ਵਧੀਆ ਤਰੀਕੇ ਨਾਲ ਵਧਾਏ ਜਾਣ ਵਾਲਾ ਬਣਾਇਆ ਗਿਆ ਹੈ। Puter ਇਸ ਤਰ੍ਹਾਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ:
|
||||
|
||||
- ਇੱਕ ਪਰਾਈਵੇਸੀ-ਪਹਿਲਾਂ ਨਿੱਜੀ ਕਲਾਊਡ ਵਜੋਂ ਜਿੱਥੇ ਤੁਹਾਡੀਆਂ ਸਾਰੀਆਂ ਫਾਈਲਾਂ, ਐਪਸ, ਅਤੇ ਗੇਮਜ਼ ਇੱਕ ਸੁਰੱਖਿਅਤ ਜਗ੍ਹਾ 'ਤੇ, ਕਿਸੇ ਵੀ ਸਮੇਂ-ਕਿਤੇ ਵੀ ਤੋਂ ਪਹੁੰਚਯੋਗ।
|
||||
- ਵੈਬਸਾਈਟਾਂ, ਵੈਬ ਐਪਸ, ਅਤੇ ਗੇਮ ਬਣਾਉਣ ਅਤੇ ਪ੍ਰਕਾਸ਼ਿਤ ਕਰਨ ਲਈ ਇੱਕ ਪਲੇਟਫਾਰਮ।
|
||||
- Dropbox, Google Drive, OneDrive ਆਦਿ ਦਾ ਇੱਕ ਆਧੁਨਿਕ ਵਿਕਲਪ, ਨਵੀਂ ਇੰਟਰਫੇਸ ਅਤੇ ਸ਼ਕਤੀਸ਼ਾਲੀ ਫੀਚਰਾਂ ਨਾਲ।
|
||||
- ਸਰਵਰਾਂ ਅਤੇ ਵਰਕਸਟੇਸ਼ਨਾਂ ਲਈ ਰਿਮੋਟ ਡੈਸਕਟਾਪ Environment।
|
||||
- ਵੈਬ ਡਿਵੈਲਪਮੈਂਟ, ਕਲਾਊਡ ਕੰਪਿਊਟਿੰਗ, ਡਿਸਟ੍ਰੀਬਿਊਟਡ ਸਿਸਟਮ ਅਤੇ ਹੋਰ ਬਹੁਤ ਕੁਝ ਸਿੱਖਣ ਲਈ ਇੱਕ ਮਿੱਤਰਤਾਪੂ, ਖੁੱਲ੍ਹੇ-ਸਰੋਤ ਵਾਲਾ ਪ੍ਰੋਜੈਕਟ ਅਤੇ ਸਮੂਹ!
|
||||
|
||||
<br/>
|
||||
|
||||
## Getting Started
|
||||
|
||||
### 💻 Local Development
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
**→** ਇਹ Puter ਨੂੰ ਇਸ ਪਤੇ 'ਤੇ ਚਲਾਉਣਾ ਚਾਹੀਦਾ ਹੈ
|
||||
<font color="red"> http://puter.localhost:4100 (ਜਾਂ ਅਗਲਾ ਉਪਲਬਧ ਪੋਰਟ). </font>
|
||||
|
||||
ਜੇ ਇਹ ਕੰਮ ਨਹੀਂ ਕਰਦਾ, ਤਾੰ [First Run Issues](./doc/self-hosters/first-run-issues.md) ਵੇਖੋ
|
||||
ਟ੍ਰਬਲਸ਼ੂਟਿੰਗ ਲਈ।
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
**→** ਇਹ Puter ਨੂੰ ਇਸ ਪਤੇ 'ਤੇ ਚਲਾਉਣਾ ਚਾਹੀਦਾ ਹੈ
|
||||
<font color="red"> http://puter.localhost:4100 (ਜਾਂ ਅਗਲਾ ਉਪਲਬਧ ਪੋਰਟ). </font>
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
#### Linux/macOS
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
**→** ਇਹ ਇਸ ਪਤੇ 'ਤੇ ਉਪਲਬਧ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ
|
||||
<font color="red"> http://puter.localhost:4100 (ਜਾਂ ਅਗਲਾ ਉਪਲਬਧ ਪੋਰਟ). </font>
|
||||
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
**→** ਇਹ Puter ਨੂੰ ਇਸ ਪਤੇ 'ਤੇ ਚਲਾਉਣਾ ਚਾਹੀਦਾ ਹੈ
|
||||
<font color="red"> http://puter.localhost:4100 (ਜਾਂ ਅਗਲਾ ਉਪਲਬਧ ਪੋਰਟ). </font>
|
||||
|
||||
<br/>
|
||||
|
||||
### 🚀 Self-Hosting
|
||||
|
||||
Puter ਨੂੰ ਖੁਦ ਹੋਸਟ ਕਰਨ ਲਈ, ਕਨਫਿਗੁਰੇਸ਼ਨ ਵਿਕਲਪ ਅਤੇ ਬਿਹਤਰੀਨ ਕਾਇਦੇ, ਸਾਰੇ ਵਿਸਥਾਰ ਲਈ ਸਾਡੇ [Self-Hosting Documentation](https://github.com/HeyPuter/puter/blob/main/doc/self-hosters/instructions.md) ਵੇਖੋ।
|
||||
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter [**puter.com**](https://puter.com) 'ਤੇ ਇੱਕ ਹੋਸਟ ਕੀਤੀ ਸੇਵਾ ਵਜੋਂ ਉਪਲਬਧ ਹੈ।
|
||||
|
||||
<br/>
|
||||
|
||||
## System Requirements
|
||||
|
||||
- **Operating Systems:** Linux, macOS, Windows
|
||||
- **RAM:** ਘੱਟੋ-ਘੱਟ 2GB (4GB ਸਿਫ਼ਾਰਸ਼ੀ)
|
||||
- **Disk Space:** 1GB ਖਾਲੀ ਜਗ੍ਹਾ
|
||||
- **Node.js:** Version 24+
|
||||
- **npm:** ਨਵੀਨਤਮ ਸਥਿਰ ਵਰਜਨ
|
||||
|
||||
<br/>
|
||||
|
||||
## Support
|
||||
|
||||
ਮੈਂਟੇਨਰਾਂ ਅਤੇ ਕਮਿਊਨਿਟੀ ਨਾਲ ਇੱਥੇ ਸੰਪਰਕ ਕਰੋ:
|
||||
|
||||
- ਬੱਗ ਜਾਂ ਫੀਚਰ ਰਿਕਵੇਸਟ? ਕਿਰਪਾ ਕਰਕੇ [issue ਖੋਲ੍ਹੋ](https://github.com/HeyPuter/puter/issues/new/choose)।
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- ਸੁਰੱਖਿਆ ਮਸਲੇ? [[email protected]](mailto:[email protected])
|
||||
- ਮੇਂਟੇਨਰਾਂ ਨੂੰ ਈਮੇਲ ਕਰੋ [[email protected]](mailto:[email protected])
|
||||
|
||||
ਅਸੀਂ ਹਮੇਸ਼ਾ ਤੁਹਾਡੀਆਂ ਕਿਸੇ ਵੀ ਪ੍ਰਸ਼ਨਾਂ ਵਿੱਚ ਮਦਦ ਕਰਨ ਲਈ ਤਿਆਰ ਹਾਂ। ਬੇਝਿਝਕ ਪੁੱਛੋ!
|
||||
|
||||
<br/>
|
||||
|
||||
## License
|
||||
|
||||
ਇਹ ਰਿਪੋਜ਼ਟਰੀ, ਆਪਣੇ ਸਾਰੇ ਸਮੱਗਰੀ, ਸਬ-ਪ੍ਰੋਜੈਕਟ, ਮੋਡੀਊਲ, ਅਤੇ ਕੰਪੋਨੈਂਟ ਸਮੇਤ, [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) ਅਧੀਨ ਲਾਇਸੈਂਸਡ ਹੈ ਜੇ ਤਕ ਹੋਰ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਨਹੀਂ ਕਿਹਾ ਗਿਆ। ਤੀਜੀ ਪੱਖ ਦੀਆਂ ਲਾਇਬ੍ਰੇਰੀਆਂ ਆਪਣੇ ਲਾਇਸੈਂਸਾਂ ਅਨੁਸਾਰ ਹੋ ਸਕਦੀਆਂ ਹਨ।
|
||||
|
||||
<br/>
|
||||
|
||||
## Translations
|
||||
|
||||
- [Arabic / العربية](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ar.md)
|
||||
- [Armenian / Հայերեն](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hy.md)
|
||||
- [Bengali / বাংলা](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.bn.md)
|
||||
- [Chinese / 中文](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.zh.md)
|
||||
- [Danish / Dansk](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.da.md)
|
||||
- [English](https://github.com/HeyPuter/puter/blob/main/README.md)
|
||||
- [Farsi / فارسی](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fa.md)
|
||||
- [Finnish / Suomi](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fi.md)
|
||||
- [French / Français](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fr.md)
|
||||
- [German / Deutsch](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.de.md)
|
||||
- [Hebrew/ עברית](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.he.md)
|
||||
- [Hindi / हिंदी](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hi.md)
|
||||
- [Hungarian / Magyar](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hu.md)
|
||||
- [Indonesian / Bahasa Indonesia](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.id.md)
|
||||
- [Italian / Italiano](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.it.md)
|
||||
- [Japanese / 日本語](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.jp.md)
|
||||
- [Korean / 한국어](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ko.md)
|
||||
- [Malay / Bahasa Malaysia](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.my.md)
|
||||
- [Malayalam / മലയാളം](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ml.md)
|
||||
- [Punjabi / ਪੰਜਾਬੀ](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.pa.md)
|
||||
- [Polish / Polski](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.pl.md)
|
||||
- [Portuguese / Português](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.pt.md)
|
||||
- [Romanian / Română](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ro.md)
|
||||
- [Russian / Русский](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ru.md)
|
||||
- [Spanish / Español](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.es.md)
|
||||
- [Swedish / Svenska](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.sv.md)
|
||||
- [Tamil / தமிழ்](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ta.md)
|
||||
- [Telugu / తెలుగు](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.te.md)
|
||||
- [Thai / ไทย](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.th.md)
|
||||
- [Turkish / Türkçe](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.tr.md)
|
||||
- [Ukrainian / Українська](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ua.md)
|
||||
- [Urdu / اردو](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ur.md)
|
||||
- [Vietnamese / Tiếng Việt](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.vi.md)
|
||||
|
||||
## Links to Other READMEs
|
||||
### Backend
|
||||
- [PuterAI Module](./src/backend/doc/modules/puterai/README.md)
|
||||
- [Metering Service](./src/backend/src/services/MeteringService/README.md)
|
||||
- [Extensions Development Guide](./extensions/README.md)
|
||||
@@ -1,119 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, Osobisty Komputer Chmurowy: Wszystkie twoje pliki, aplikacje i gry w jednym miejscu, dostępne z dowolnego miejsca o dowolnej porze." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
<h3 align="center"> System Operacyjny Internet! Darmowy, Open-Source i Możliwy do Samodzielnego Hostowania.</h3>
|
||||
<p align="center">
|
||||
<img alt="Rozmiar repozytorium GitHub" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="Wydanie GitHub" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="Licencja GitHub" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« DEMO NA ŻYWO »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="zrzut ekranu" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter to zaawansowany, open-source'owy internetowy system operacyjny, zaprojektowany tak, aby był bogaty w funkcje, wyjątkowo szybki i wysoce rozszerzalny. Puter może być używany jako:
|
||||
|
||||
- Prywatna chmura osobista do przechowywania wszystkich plików, aplikacji i gier w jednym bezpiecznym miejscu, dostępnym z dowolnego miejsca o dowolnej porze.
|
||||
- Platforma do budowania i publikowania stron internetowych, aplikacji webowych i gier.
|
||||
- Alternatywa dla Dropbox, Google Drive, OneDrive itp. ze świeżym interfejsem i potężnymi funkcjami.
|
||||
- Zdalne środowisko pulpitu dla serwerów i stacji roboczych.
|
||||
- Przyjazny, open-source'owy projekt i społeczność do nauki o tworzeniu stron internetowych, chmurze obliczeniowej, systemach rozproszonych i wielu innych!
|
||||
|
||||
<br/>
|
||||
|
||||
## Rozpoczęcie pracy
|
||||
## 💻 Lokalne środowisko developerskie
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
To uruchomi Puter na http://puter.localhost:4100 (lub na następnym dostępnym porcie).
|
||||
|
||||
<br/>
|
||||
|
||||
## 🐳 Docker
|
||||
|
||||
```bash
|
||||
Copy code
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
## 🐙 Docker Compose
|
||||
## Linux/macOS
|
||||
|
||||
```bash
|
||||
Copy code
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
## Windows
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
## ☁️ Puter.com
|
||||
Puter jest dostępny jako usługa hostowana na [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## Wymagania systemowe
|
||||
|
||||
- **Systemy operacyjne:** Linux, macOS, Windows
|
||||
- **RAM:** Minimum 2GB (zalecane 4GB)
|
||||
- **Przestrzeń dyskowa:** 1GB wolnego miejsca
|
||||
- **Node.js:** Wersja 16+ (zalecana wersja 22+)
|
||||
- **npm:** Najnowsza stabilna wersja
|
||||
|
||||
<br/>
|
||||
|
||||
## Wsparcie
|
||||
|
||||
Skontaktuj się z opiekunami i społecznością przez te kanały:
|
||||
|
||||
- Raport o błędzie lub prośba o funkcję? Proszę otworzyć zgłoszenie.
|
||||
- Discord: discord.com/invite/PQcx7Teh8u
|
||||
- X (Twitter): x.com/HeyPuter
|
||||
- Reddit: reddit.com/r/puter/
|
||||
- Mastodon: mastodon.social/@puter
|
||||
- Problemy z bezpieczeństwem? security@puter.com
|
||||
- Email do opiekunów: hi@puter.com
|
||||
|
||||
Zawsze chętnie pomożemy Ci z wszelkimi pytaniami, jakie możesz mieć. Nie wahaj się pytać!
|
||||
<br/>
|
||||
|
||||
## Licencja
|
||||
|
||||
To repozytorium, w tym cała jego zawartość, podprojekty, moduły i komponenty, jest licencjonowane na podstawie [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt), chyba że wyraźnie zaznaczono inaczej. Biblioteki stron trzecich zawarte w tym repozytorium mogą podlegać własnym licencjom.
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,173 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, O Computador Pessoal em Nuvem: Todos os seus arquivos, aplicativos e jogos em um único lugar, acessíveis de qualquer lugar e a qualquer hora." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">O Sistema Operacional da Internet! Gratuito, de Código Aberto e Auto-Hospedável.</h3>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« DEMONSTRAÇÃO AO VIVO »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://apps.puter.com/">App Store</a>
|
||||
·
|
||||
<a href="https://developer.puter.com" target="_blank">Developers</a>
|
||||
·
|
||||
<a href="https://github.com/heyputer/puter-cli" target="_blank">CLI</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://x.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter é um sistema operacional de internet avançado e de código aberto, projetado para ser rico em recursos, excepcionalmente rápido e altamente extensível. Puter pode ser usado como:
|
||||
|
||||
- Um serviço de nuvem pessoal com foco na privacidade para manter todos os seus arquivos, aplicativos e jogos em um local seguro, acessível de qualquer lugar e a qualquer hora.
|
||||
- Uma plataforma para construir e publicar websites, aplicativos web e jogos.
|
||||
- Uma alternativa ao Dropbox, Google Drive, OneDrive, etc., com uma interface renovada e recursos poderosos.
|
||||
- Um ambiente de desktop remoto para servidores e estações de trabalho.
|
||||
- Um projeto e comunidade de código aberto e amigável para aprender sobre desenvolvimento web, computação em nuvem, sistemas distribuídos e muito mais!
|
||||
|
||||
<br/>
|
||||
|
||||
## Iniciando o Projeto
|
||||
|
||||
|
||||
### 💻 Desenvolvimento Local
|
||||
```
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
✨ Isso iniciará o Puter em http://puter.localhost:4100 (ou na próxima porta disponível).
|
||||
|
||||
|
||||
Se isso não funcionar, consulte [First Run Issues](./doc/self-hosters/first-run-issues.md) para solucionar os problemas.
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
✨ Isso iniciará o Puter em http://puter.localhost:4100 (ou na próxima porta disponível).
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
✨ Isso iniciará o Puter em http://puter.localhost:4100 (ou na próxima porta disponível).
|
||||
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
✨ Isso iniciará o Puter em http://puter.localhost:4100 (ou na próxima porta disponível).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🚀 Auto-Hospedagem
|
||||
|
||||
Para guia detalhados sobre como auto-hospedar o Puter, incluindo opções de configuração e melhores práticas, consulte nossa [Documentação de Auto-Hospedagem](https://github.com/HeyPuter/puter/blob/main/doc/self-hosters/instructions.md).
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
O Puter está disponível como um serviço hospedado em [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## Requerimentos do sistema
|
||||
|
||||
- **Sistema operacional:** Linux, macOS, Windows
|
||||
- **RAM:** 2GB mínimo (4GB recomendado)
|
||||
- **Espaço de disco:** 1GB de espaço disponível
|
||||
- **Node.js:** Versão 16+ (Versão 23+ recomendada)
|
||||
- **npm:** Última versão estável
|
||||
|
||||
<br/>
|
||||
|
||||
## Suporte
|
||||
|
||||
Conecte-se com os mantenedores e a comunidade através destes canais:
|
||||
|
||||
- Relato de bug ou solicitação de recurso? Por favor, [abra um tópico](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Problemas de segurança? [[email protected]](mailto:[email protected])
|
||||
- Envie um email para os mantenedores em [[email protected]](mailto:[email protected])
|
||||
|
||||
Estamos sempre felizes em ajudá-lo com quaisquer perguntas que você possa ter. Não hesite em perguntar!
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## Licença
|
||||
|
||||
Este repositório, incluindo todos os seus conteúdos, subprojetos, módulos e componentes, está licenciado sob [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) a menos que explicitamente indicado de outra forma. Bibliotecas de terceiros incluídas neste repositório podem estar sujeitas às suas próprias licenças.
|
||||
|
||||
<br/>
|
||||
|
||||
## Traduções
|
||||
|
||||
- [Arabic / العربية](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ar.md)
|
||||
- [Armenian / Հայերեն](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hy.md)
|
||||
- [Bengali / বাংলা](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.bn.md)
|
||||
- [Chinese / 中文](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.zh.md)
|
||||
- [Danish / Dansk](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.da.md)
|
||||
- [English](https://github.com/HeyPuter/puter/blob/main/README.md)
|
||||
- [Farsi / فارسی](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fa.md)
|
||||
- [Finnish / Suomi](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fi.md)
|
||||
- [French / Français](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fr.md)
|
||||
- [German/ Deutsch](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.de.md)
|
||||
- [Hebrew/ עברית](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.he.md)
|
||||
- [Hindi / हिंदी](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hi.md)
|
||||
- [Hungarian / Magyar](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hu.md)
|
||||
- [Indonesian / Bahasa Indonesia](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.id.md)
|
||||
- [Italian / Italiano](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.it.md)
|
||||
- [Japanese / 日本語](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.jp.md)
|
||||
- [Korean / 한국어](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ko.md)
|
||||
- [Malayalam / മലയാളം](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ml.md)
|
||||
- [Polish / Polski](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.pl.md)
|
||||
- [Portuguese / Português](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.pt.md)
|
||||
- [Romanian / Română](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ro.md)
|
||||
- [Russian / Русский](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ru.md)
|
||||
- [Spanish / Español](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.es.md)
|
||||
- [Swedish / Svenska](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.sv.md)
|
||||
- [Tamil / தமிழ்](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ta.md)
|
||||
- [Telugu / తెలుగు](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.te.md)
|
||||
- [Thai / ไทย](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.th.md)
|
||||
- [Turkish / Türkçe](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.tr.md)
|
||||
- [Ukrainian / Українська](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ua.md)
|
||||
- [Urdu / اردو](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ur.md)
|
||||
- [Vietnamese / Tiếng Việt](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.vi.md)
|
||||
@@ -1,129 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, calculatorul personal în cloud: toate fișierele, aplicațiile și jocurile tale într-un singur loc, accesibile de oriunde și oricând." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">Sistemul de operare al internetului! Gratuit, open-source și găzduibil autonom.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="Dimensiunea repoului GitHub" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="Versiunea de pe GitHub" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=ultima%20versiune"> <img alt="Licență GitHub" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« DEMO LIVE »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://www.youtube.com/@EricsPuterVideos">YouTube</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
·
|
||||
<a href="https://hackerone.com/puter_h1b">Program de recompense pentru identificarea bugurilor</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="captură de ecran" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter este un sistem de operare pe internet, avansat, open-source, conceput să fie bogat în funcționalități, excepțional de rapid și foarte extensibil. Puter poate fi folosit ca:
|
||||
|
||||
* Un cloud personal cu accent pe confidențialitate, pentru a-ți păstra toate fișierele, aplicațiile și jocurile într-un singur loc securizat, accesibil de oriunde și oricând.
|
||||
* O platformă pentru a construi și publica site-uri, aplicații web și jocuri.
|
||||
* O alternativă la Dropbox, Google Drive, OneDrive etc., cu o interfață nouă și funcționalități puternice.
|
||||
* Un mediu desktop la distanță pentru servere și stații de lucru.
|
||||
* Un proiect și o comunitate, open-source și prietenoase, pentru a învăța despre dezvoltare web, cloud computing, sisteme distribuite și multe altele!
|
||||
|
||||
<br/>
|
||||
|
||||
## Fă primii pași
|
||||
|
||||
### 💻 Dezvoltare locală
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
Aceasta va porni Puter la [http://puter.localhost:4100](http://puter.localhost:4100) (sau pe următorul port disponibil).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
#### Linux/macOS
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter este disponibil ca serviciu găzduit la adresa [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## Cerințe de sistem
|
||||
|
||||
* **Sisteme de operare:** Linux, macOS, Windows
|
||||
* **RAM:** minimum 2GB (recomandat 4GB)
|
||||
* **Spațiu pe disc:** 1GB spațiu liber
|
||||
* **Node.js:** versiunea 16+ (versiunea 22+ recomandată)
|
||||
* **npm:** ultima versiune stabilă
|
||||
|
||||
<br/>
|
||||
|
||||
## Suport
|
||||
|
||||
Ia legătura cu cei care asigură mentenanța proiectului și cu comunitatea prin aceste canale:
|
||||
|
||||
* Vrei să raportezi un bug sau să ceri o funcționalitate? Te rugăm să [deschizi o problemă](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
* Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
* X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
* Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
* Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
* Probleme de securitate? [[email protected]](mailto:[email protected])
|
||||
* Trimite un e-mail celor care asigură mentenanța proiectului la [[email protected]](mailto:[email protected])
|
||||
|
||||
Suntem întotdeauna bucuroși să te ajutăm cu orice întrebări ai. Nu ezita să ne pui întrebări!
|
||||
|
||||
<br/>
|
||||
|
||||
## Licență
|
||||
|
||||
Acest repository, inclusiv tot conținutul său, subproiectele, modulele și componentele, este licențiat sub [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt), cu excepția cazurilor în care se menționează explicit altfel. Bibliotecile terțe incluse în acest repository pot fi supuse propriilor lor licențe.
|
||||
|
||||
<br/>
|
||||
|
||||
@@ -1,127 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, персональный облачный компьютер: все ваши файлы, приложения и игры в одном месте, доступные из любой точки мира в любое время." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">Интернет ОС! Бесплатная, с открытым исходным кодом и возможностью самостоятельной установки.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="Размер репозитория GitHub" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="Релиз GitHub" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="Лицензия GitHub" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« ЖИВОЕ ДЕМО »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter — это передовая операционная система с открытым исходным кодом, разработанная для обеспечения широкого функционала, исключительной скорости и высокой масштабируемости. Puter можно использовать как:
|
||||
|
||||
- Персональное облако с приоритетом конфиденциальности для хранения всех ваших файлов, приложений и игр в одном безопасном месте, доступном из любой точки мира в любое время.
|
||||
- Платформа для создания и публикации веб-сайтов, веб-приложений и игр.
|
||||
- Альтернатива Dropbox, Google Drive, OneDrive и т. д. с новым интерфейсом и мощными функциями.
|
||||
- Удаленное рабочее окружение для серверов и рабочих станций.
|
||||
- Дружественный проект с открытым исходным кодом и сообщество для изучения веб-разработки, облачных вычислений, распределенных систем и многого другого!
|
||||
|
||||
<br/>
|
||||
|
||||
## Начало работы
|
||||
|
||||
|
||||
### 💻 Локальная разработка
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
Это запустит Puter по адресу http://puter.localhost:4100 (или на следующем доступном порту).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter доступен как облачный сервис на [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## Системные требования
|
||||
|
||||
- **Операционные системы:** Linux, macOS, Windows
|
||||
- **ОЗУ:** минимум 2 ГБ (рекомендуется 4 ГБ)
|
||||
- **Место на диске:** 1 ГБ свободного места
|
||||
- **Node.js:** Версия 16+ (рекомендуется версия 22+)
|
||||
- **npm:** Последняя стабильная версия
|
||||
|
||||
<br/>
|
||||
|
||||
## Поддержка
|
||||
|
||||
Свяжитесь с разработчиками и сообществом этими способами:
|
||||
|
||||
- Отчет об ошибке или запрос функции? Пожалуйста, [откройте вопрос](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Проблемы безопасности? [[email protected]](mailto:[email protected])
|
||||
- Свяжитесь с разработчиками по адресу [[email protected]](mailto:[email protected])
|
||||
|
||||
Мы всегда рады помочь вам с любыми вопросами. Не стесняйтесь спрашивать!
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## Лицензия
|
||||
|
||||
Этот репозиторий, включая все его содержимое, подпроекты, модули и компоненты, лицензирован в соответствии с [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt), если явно не указано иное. Сторонние библиотеки, включенные в этот репозиторий, могут подпадать под действие их собственных лицензий.
|
||||
|
||||
<br/>
|
||||
@@ -1,125 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, Den personliga molndatorn: Alla dina filer, appar och spel på ett ställe tillgängliga var som helst när som helst." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">Internet OS! Gratis, öppen källkod och självhostad.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo storlek" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Utgåva" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=senaste%20versionen"> <img alt="GitHub Licens" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« LIVE DEMO »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="skärmdump" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter är ett avancerat, öppen källkod internetoperativsystem designat för att vara funktionsrikt, exceptionellt snabbt och mycket utbyggbart. Puter kan användas som:
|
||||
|
||||
- Ett integritetsfokuserat personligt moln för att hålla alla dina filer, appar och spel på ett säkert ställe, tillgängligt var som helst när som helst.
|
||||
- En plattform för att bygga och publicera webbplatser, webbappar och spel.
|
||||
- Ett alternativ till Dropbox, Google Drive, OneDrive, etc. med ett fräscht gränssnitt och kraftfulla funktioner.
|
||||
- En fjärrskrivbordsmiljö för servrar och arbetsstationer.
|
||||
- Ett vänligt, öppen källkod-projekt och gemenskap för att lära sig om webbutveckling, molndatorer, distribuerade system och mycket mer!
|
||||
|
||||
<br/>
|
||||
|
||||
## Komma igång
|
||||
|
||||
### 💻 Lokal Utveckling
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
Detta kommer att starta Puter på http://puter.localhost:4100 (eller nästa lediga port).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
#### Linux/macOS
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter är tillgängligt som en värdtjänst på [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## Systemkrav
|
||||
|
||||
- **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
|
||||
|
||||
<br/>
|
||||
|
||||
## Support
|
||||
|
||||
Anslut med underhållarna och gemenskapen genom dessa kanaler:
|
||||
|
||||
- Buggrapport eller funktionsförfrågan? Vänligen [öppna ett ärende](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Säkerhetsproblem? [[email protected]](mailto:[email protected])
|
||||
- E-posta underhållarna på [[email protected]](mailto:[email protected])
|
||||
|
||||
Vi hjälper dig gärna med eventuella frågor du kan ha. Tveka inte att fråga!
|
||||
|
||||
<br/>
|
||||
|
||||
## Licens
|
||||
|
||||
Detta arkiv, inklusive allt dess innehåll, delprojekt, moduler och komponenter, är licensierat under [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) om inte annat uttryckligen anges. Tredjepartsbibliotek som ingår i detta arkiv kan vara föremål för sina egna licenser.
|
||||
|
||||
<br/>
|
||||
|
||||
@@ -1,123 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, The Personal Cloud Computer: உங்கள் கோப்புகள், ஆப்ஸ் மற்றும் கேம்கள் அனைத்தும் ஒரே இடத்தில் எங்கிருந்தும் எந்த நேரத்திலும் அணுகலாம்." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">இன்டர்நெட் OS! இலவசம், ஓப்பன் சோர்ஸ் மற்றும் Self-Hostable</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Release" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub உரிமம்" src="https://img.shields.io/github/license/HeyPuter/puter" >
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« லைவ் டெமோ »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## புட்டர் (Putter)
|
||||
|
||||
புட்டர்(putter) என்பது ஒரு மேம்பட்ட, திறந்த மூல இலவசமாக இணைய இயக்க முறைமையாகும், இது அம்சம் நிறைந்ததாகவும், விதிவிலக்காக வேகமாகவும், அதிக விரிவாக்கக்கூடியதாகவும் வடிவமைக்கப்பட்டுள்ளது. புட்டரை இவ்வாறு பயன்படுத்தலாம்:
|
||||
|
||||
- உங்கள் கோப்புகள், பயன்பாடுகள் மற்றும் கேம்கள் அனைத்தையும் ஒரே பாதுகாப்பான இடத்தில் வைத்திருக்க, எந்த நேரத்திலும் எங்கிருந்தும் அணுகக்கூடிய தனியுரிமை-முதல் தனிப்பட்ட கிளவுட்.
|
||||
- இணையதளங்கள், இணைய பயன்பாடுகள் மற்றும் கேம்களை உருவாக்கி வெளியிடுவதற்கான தளம் இதுவாகும்.
|
||||
- புதிய இடைமுகம் மற்றும் சக்திவாய்ந்த அம்சங்களுடன் Dropbox, Google Drive, OneDrive போன்றவற்றுக்கு மாற்றீடாக உபயோகிக்க கூடியது.
|
||||
- சர்வர்கள் மற்றும் பணிநிலையங்களுக்கான தொலைநிலை டெஸ்க்டாப்(desktop) சூழல்.
|
||||
- வலை மேம்பாடு, கிளவுட் கம்ப்யூட்டிங், விநியோகிக்கப்பட்ட அமைப்புகள் மற்றும் பலவற்றைப் பற்றி அறிந்து ஒரு நட்பு ரீதியான, திறந்த மூல திட்டம் மற்றும் சமூக அறிவியலில் சார்ந்த ஒன்று.
|
||||
|
||||
<br/>
|
||||
|
||||
## தொடங்குதல்
|
||||
|
||||
### 💻 உள்ளூர் வளர்ச்சி
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
``` தொடக்கம்
|
||||
```
|
||||
|
||||
இது புட்டரை <http://puter.localhost:4100> இல் தொடங்கும் (அல்லது அடுத்து கிடைக்கும் இடம்).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐙 டோக்கர் கம்போஸ்
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
புட்டர் ஹோஸ்ட் செய்யப்பட்ட சேவையாக [**puter.com**](https://puter.com) இல் கிடைக்கிறது.
|
||||
|
||||
<br/>
|
||||
|
||||
## கணினி தேவைகள்
|
||||
|
||||
- **இயக்க முறைமைகள்:** Linux, macOS, Windows
|
||||
- **ரேம்:** குறைந்தபட்சம் 2 ஜிபி (4 ஜிபி பரிந்துரைக்கப்படுகிறது)
|
||||
- **வட்டு இடம்:** 1GB இலவச இடம்
|
||||
- **Node.js:** Version 16+ (Version 22+ recommended)
|
||||
- **npm:** சமீபத்திய நிலையான பதிப்பு(Latest stable version)
|
||||
|
||||
<br/>
|
||||
|
||||
## ஆதரவு
|
||||
|
||||
இந்த சேனல்கள் மூலம் பராமரிப்பாளர்கள் மற்றும் சமூகத்துடன் சமூக இணைப்பாளர்:
|
||||
|
||||
- பிழை அறிக்கை அல்லது மாற்றுதல் கோரிக்கை? தயவுசெய்து [சிக்கலைத் திறக்கவும்](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- கருத்து வேறுபாடு: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- பாதுகாப்பு பிரச்சினைகள்? [[email protected]](mailto:[email protected])
|
||||
- மின்னஞ்சல் பராமரிப்பாளர்களுக்கு [[email protected]](mailto:[email protected])
|
||||
|
||||
உங்களுக்கு ஏதேனும் கேள்விகள் இருந்தால் உங்களுக்கு உதவ நாங்கள் எப்போதும் மகிழ்ச்சியடைகிறோம். தயங்காமல் கேளுங்கள்!
|
||||
|
||||
<br/>
|
||||
|
||||
## உரிமம்
|
||||
|
||||
இந்தக் களஞ்சியமானது, அதன் அனைத்து உள்ளடக்கங்கள், துணைத் திட்டங்கள், தொகுதிகள் மற்றும் கூறுகள் உட்பட, வெளிப்படையாகக் கூறப்படாவிட்டால், [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) இன் கீழ் உரிமம் பெற்றுள்ளது. . இந்தக் களஞ்சியத்தில் சேர்க்கப்பட்டுள்ள மூன்றாம் தரப்பு நூலகங்கள் அவற்றின் சொந்த உரிமங்களுக்கு உட்பட்டதாக இருக்கும்.
|
||||
|
||||
<br/>
|
||||
@@ -1,161 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, The Personal Cloud Computer: మీ అన్ని ఫైల్లు, యాప్లు మరియు గేమ్లను ఒకే స్థలంలో ఎక్కడి నుండైనా ఎప్పుడైనా యాక్సెస్ చేయవచ్చు." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center"> ఇంటర్నెట్ OS! ఉచిత, ఓపెన్ సోర్స్, and Self-Hostable.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Release" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub License" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« ప్రత్యక్ష ప్రదర్శన »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## పుటర్ (Puter)
|
||||
|
||||
పుటర్ అనేది అధునాతన, ఓపెన్ సోర్స్ ఇంటర్నెట్ ఆపరేటింగ్ సిస్టమ్, ఇది ఫీచర్-రిచ్, అనూహ్యంగా వేగవంతమైన మరియు అత్యంత విస్తరించదగినదిగా రూపొందించబడింది. పుటర్ను ఇలా ఉపయోగించవచ్చు:
|
||||
|
||||
- మీ అన్ని ఫైల్లు, యాప్లు మరియు గేమ్లను ఒకే సురక్షిత స్థలంలో ఉంచడానికి గోప్యత-మొదటి వ్యక్తిగత క్లౌడ్, ఎప్పుడైనా ఎక్కడి నుండైనా యాక్సెస్ చేయవచ్చు.
|
||||
- వెబ్సైట్లు, వెబ్ యాప్లు మరియు గేమ్లను రూపొందించడానికి మరియు ప్రచురించడానికి ఒక వేదిక.
|
||||
- తాజా ఇంటర్ఫేస్ మరియు శక్తివంతమైన ఫీచర్లతో Dropbox, Google Drive, OneDrive మొదలైన వాటికి ప్రత్యామ్నాయం.
|
||||
- సర్వర్లు మరియు వర్క్స్టేషన్ల కోసం రిమోట్ డెస్క్టాప్ వాతావరణం.
|
||||
- వెబ్ డెవలప్మెంట్, క్లౌడ్ కంప్యూటింగ్, డిస్ట్రిబ్యూట్ సిస్టమ్లు మరియు మరిన్నింటి గురించి తెలుసుకోవడానికి స్నేహపూర్వక, ఓపెన్ సోర్స్ ప్రాజెక్ట్ మరియు కమ్యూనిటీ!
|
||||
|
||||
<br/>
|
||||
|
||||
## ప్రారంభించడం
|
||||
|
||||
### లోకల్ డెవలప్మెంట్
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
ఇది http://puter.localhost:4100 (లేదా తదుపరి అందుబాటులో ఉన్న పోర్ట్) వద్ద పుటర్ని ప్రారంభిస్తుంది.
|
||||
|
||||
ఇది పని చేయకపోతే, దీని కోసం [మొదటి రన్ సమస్యలు](./doc/first-run-issues.md) చూడండి
|
||||
ట్రబుల్షూటింగ్ దశలు.
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 డోకర్
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐙 డోకర్ Compose
|
||||
|
||||
#### లినక్స్/ macOS
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
#### విండోస్
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
పుటర్ [**puter.com**](https://puter.com)లో హోస్ట్ చేయబడి ఉంది.
|
||||
|
||||
<br/>
|
||||
|
||||
## System Requirements
|
||||
|
||||
- **ఆపరేటింగ్ సిస్టమ్స్:** లినక్స్, macOS, విండోస్
|
||||
- **RAM:** 2GB కనీసం(4GB recommended)
|
||||
- **Disk Space:** 1GB ఖాళీ
|
||||
- **Node.js:** Version 16+ (Version 22+ recommended)
|
||||
- **npm:** Latest stable version
|
||||
|
||||
<br/>
|
||||
|
||||
## Support
|
||||
|
||||
ఈ ఛానెల్ల ద్వారా నిర్వాహకులు మరియు సంఘంతో కనెక్ట్ అవ్వండి:
|
||||
|
||||
- బగ్ నివేదిక లేదా ఫీచర్ అభ్యర్థన? దయచేసి [open an issue](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Security issues? [[email protected]](mailto:[email protected])
|
||||
- Email maintainers at [[email protected]](mailto:[email protected])
|
||||
|
||||
మీకు ఏవైనా సందేహాలు ఉంటే మీకు సహాయం చేయడానికి మేము ఎల్లప్పుడూ సంతోషిస్తాము. అడగడానికి సంకోచించకండి!
|
||||
|
||||
<br/>
|
||||
|
||||
## లైసెన్సు
|
||||
|
||||
ఈ రిపోజిటరీ, దాని మొత్తం కంటెంట్లు, ఉప-ప్రాజెక్ట్లు, మాడ్యూల్స్ మరియు కాంపోనెంట్లతో సహా, [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) కింద లైసెన్స్ని కలిగి ఉంటుంది. . ఈ రిపోజిటరీలో చేర్చబడిన థర్డ్-పార్టీ లైబ్రరీలు వాటి స్వంత లైసెన్స్లకు లోబడి ఉండవచ్చు.
|
||||
|
||||
<br/>
|
||||
|
||||
## అనువాదాలు
|
||||
|
||||
- [Arabic / العربية](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ar.md)
|
||||
- [Armenian / Հայերեն](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hy.md)
|
||||
- [Bengali / বাংলা](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.bn.md)
|
||||
- [Chinese / 中文](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.zh.md)
|
||||
- [Danish / Dansk](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.da.md)
|
||||
- [English](https://github.com/HeyPuter/puter/blob/main/README.md)
|
||||
- [Farsi / فارسی](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fa.md)
|
||||
- [Finnish / Suomi](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fi.md)
|
||||
- [French / Français](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.fr.md)
|
||||
- [German/ Deutsch](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.de.md)
|
||||
- [Hebrew/ עברית](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.he.md)
|
||||
- [Hindi / हिंदी](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hi.md)
|
||||
- [Hungarian / Magyar](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.hu.md)
|
||||
- [Indonesian / Bahasa Indonesia](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.id.md)
|
||||
- [Italian / Italiano](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.it.md)
|
||||
- [Japanese / 日本語](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.jp.md)
|
||||
- [Korean / 한국어](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ko.md)
|
||||
- [Malayalam / മലയാളം](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ml.md)
|
||||
- [Polish / Polski](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.pl.md)
|
||||
- [Portuguese / Português](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.pt.md)
|
||||
- [Romanian / Română](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ro.md)
|
||||
- [Russian / Русский](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ru.md)
|
||||
- [Spanish / Español](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.es.md)
|
||||
- [Swedish / Svenska](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.sv.md)
|
||||
- [Tamil / தமிழ்](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ta.md)
|
||||
- [Telugu / తెలుగు](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.te.md)
|
||||
- [Thai / ไทย](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.th.md)
|
||||
- [Turkish / Türkçe](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.tr.md)
|
||||
- [Ukrainian / Українська](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ua.md)
|
||||
- [Urdu / اردو](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.ur.md)
|
||||
- [Vietnamese / Tiếng Việt](https://github.com/HeyPuter/puter/blob/main/doc/i18n/README.vi.md)
|
||||
@@ -1,127 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, The Personal Cloud Computer: All your files, apps, and games in one place accessible from anywhere at any time." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">ระบบปฏิบัติการอินเทอร์เน็ต ฟรี, โอเพ่นซอร์ส, และสามารถโฮสต์ได้ด้วยตนเอง</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Release" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub License" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« การสาธิตสด »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">ชุดพัฒนาโปรแกรม</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">ดิสคอร์ด</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">เรดดิท</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (ทวิตเตอร์)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## พิวเตอร์
|
||||
|
||||
พิวเตอร์ เป็นระบบปฏิบัติการอินเทอร์เน็ตขั้นสูงแบบโอเพ่นซอร์สที่ออกแบบมาให้มีฟีเจอร์ครบถ้วน ความเร็วสูง และมีความสามารถที่จะขยายได้สูง. พิวเตอร์ สามารถใช้ได้เป็น:
|
||||
|
||||
- คลาวด์ส่วนตัว เพื่อเก็บไฟล์, แอพพลิเคชัน, และเกมทั้งหมดของคุณในที่เดียวที่ปลอดภัยและสามารถเข้าถึงได้ทุกที่ทุกเวลา
|
||||
- แพลตฟอร์มสำหรับการสร้างและเผยแพร่เว็บไซต์, เว็บแอปพลิเคชัน, และเกม
|
||||
- ทางเลือกอีกหนึ่งทางที่สามารถใช้แทน Dropbox, Google Drive, OneDrive ฯลฯ โดยที่มีอินเทอร์เฟซใหม่และฟีเจอร์ที่ทรงพลัง
|
||||
- สภาพแวดล้อมสำหรับเดสก์ท็อประยะไกลที่ใช้กับเซิร์ฟเวอร์และสถานีทำงาน
|
||||
- โครงการโอเพ่นซอร์สและชุมชนที่เป็นมิตรที่คุณสามารถเรียนรู้เกี่ยวกับการพัฒนาเว็บ, คลาวด์คอมพิวติ้ง, ระบบกระจาย, และอีกมากมาย
|
||||
|
||||
<br/>
|
||||
|
||||
## การเริ่มต้นใช้งาน
|
||||
|
||||
|
||||
### 💻 การพัฒนาภายในเครื่อง
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
พิวเตอร์ จะถูกเปิดใช้งานที่ http://puter.localhost:4100 (หรือพอร์ตถัดไปที่ว่าง).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 ด็อกเกอร์
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 ด็อกเกอร์ คอมโพส
|
||||
|
||||
|
||||
#### ลินุกซ์/แมคโอเอส
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### วินโดวส์
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
สามารถใช้งาน พิวเตอร์ ได้ในรูปแบบบริการโฮสต์ที่ [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## ข้อกำหนดของระบบ
|
||||
|
||||
- **ระบบปฏิบัติการ:** ลินุกซ์ แมคโอเอส วินโดวส์
|
||||
- **แรม:** อย่างน้อย 2GB (แนะนำ 4GB)
|
||||
- **พื้นที่เก็บข้อมูล:** พื้นที่ว่าง 1GB
|
||||
- **Node.js:** เวอร์ชัน 16+ (แนะนำเวอร์ชัน 22+)
|
||||
- **npm:** เวอร์ชันล่าสุดที่เสถียร
|
||||
|
||||
<br/>
|
||||
|
||||
## การช่วยเหลือ
|
||||
|
||||
ติดต่อกับผู้ดูแลระบบและชุมชนผ่านช่องทางเหล่านี้:
|
||||
|
||||
- พบข้อผิดพลาดหรือขอฟีเจอร์ใหม่? กรุณา [เปิดปัญหา](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- ดิสคอร์ด: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (ทวิตเตอร์): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- เรดดิท: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- มาสตอดอน: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- ปัญหาด้านความปลอดภัย [[email protected]](mailto:[email protected])
|
||||
- ส่งอีเมลถึงผู้ดูแลระบบได้ที่ [[email protected]](mailto:[email protected])
|
||||
|
||||
เรายินดีเสมอที่จะช่วยเหลือคุณกับทุกทุกคำถามที่คุณมี อย่าลังเลที่จะถาม
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## ลิขสิทธิ์
|
||||
|
||||
ที่เก็บข้อมูลนี้ รวมถึงเนื้อหาทั้งหมด, โครงการย่อย, โมดูล, และส่วนประกอบต่างๆ ได้รับใบอนุญาตภายใต้ [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) เว้นแต่จะมีการระบุไว้เป็นอย่างอื่นอย่างชัดเจน ไลบรารีจากบุคคลที่สามที่รวมอยู่ในที่เก็บข้อมูลนี้อาจอยู่ภายใต้ใบอนุญาตของตนเอง
|
||||
|
||||
<br/>
|
||||
@@ -1,127 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, Kişisel Bulut Bilgisayar: Tüm dosyalarınız, uygulamalarınız ve oyunlarınız her zaman her yerden erişilebilen tek bir yerde." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">İnternet İşletim Sistemi! Ücretsiz, Açık Kaynaklı ve Kendi Kendine Barındırılabilir</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub Depo Boyutu" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Yayınlamak" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub Lisans" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« CANLI DEMO »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter, zengin özelliklere sahip, son derece hızlı ve son derece genişletilebilir olacak şekilde tasarlanmış gelişmiş, açık kaynaklı bir internet işletim sistemidir. Puter şu şekilde kullanılabilir:
|
||||
|
||||
- Tüm dosyalarınızı, uygulamalarınızı ve oyunlarınızı tek bir güvenli yerde tutmak için gizlilik öncelikli bir kişisel bulut, her yerden her zaman erişilebilir.
|
||||
- Web siteleri, web uygulamaları ve oyunlar oluşturmak ve yayınlamak için bir platform.
|
||||
- Yeni bir arayüz ve güçlü özelliklerle Dropbox, Google Drive, OneDrive vb. uygulamalara bir alternatif.
|
||||
- Sunucular ve iş istasyonları için bir uzak masaüstü ortamı.
|
||||
- Web geliştirme, bulut bilişim, dağıtık sistemler ve çok daha fazlası hakkında bilgi edinmek için dost canlısı, açık kaynaklı bir proje ve topluluk!
|
||||
|
||||
<br/>
|
||||
|
||||
## Başlarken
|
||||
|
||||
|
||||
### 💻 Yerel Geliştirme
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
Bu, Puter'ı http://puter.localhost:4100 adresinde (veya bir sonraki kullanılabilir portta) başlatacaktır.
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter, [**puter.com**](https://puter.com) adresinde barındırılan bir hizmet olarak kullanılabilir.
|
||||
|
||||
<br/>
|
||||
|
||||
## Sistem Gereksinimleri
|
||||
|
||||
- **İşletim Sistemleri:** Linux, macOS, Windows
|
||||
- **RAM:** 2GB Minimum (4GB önerilir)
|
||||
- **Disk Alanı:** 1GB boş alan
|
||||
- **Node.js:** Sürüm 16+ (Sürüm 22+ önerilir)
|
||||
- **npm:** En son stabil sürüm
|
||||
|
||||
<br/>
|
||||
|
||||
## Destek
|
||||
|
||||
Bakımcılarla ve toplulukla şu kanallar aracılığıyla iletişim kurabilirsiniz:
|
||||
|
||||
- Hata raporu veya özellik isteği? Lütfen [yeni bir issue açın](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Güvenlik sorunları? [[email protected]](mailto:[email protected])
|
||||
- Bakımcılara şu adresten e-posta gönderin [[email protected]](mailto:[email protected])
|
||||
|
||||
Sorularınız varsa size her zaman yardımcı olmaktan mutluluk duyarız. Sormaktan çekinmeyin!
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## Lisans
|
||||
|
||||
Bu depo, tüm içeriği, alt projeleri, modülleri ve bileşenleri dahil olmak üzere, aksi açıkça belirtilmedikçe [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) altında lisanslanmıştır. Bu depoda yer alan üçüncü taraf kütüphaneler kendi lisanslarına tabi olabilir.
|
||||
|
||||
<br/>
|
||||
@@ -1,125 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, The Personal Cloud Computer: Всі ваші файли, додатки та ігри в одному місці, доступні з будь-якого куточка світу в будь-який час." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">Інтернет ОС! Безкоштовна, відкрита та self-hosted.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="Розмір репозиторію на GitHub" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="Остання версія на GitHub" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="Ліцензія GitHub" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« Онлайн ДЕМО »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="скріншот" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter — це просунута, інтернет-ОС, з відкритим кодом, створена для того, щоб бути багатофункціональною, надзвичайно швидкою та розширюваною. Puter може використовуватися як:
|
||||
|
||||
- Приватний хмарний сервіс для збереження всіх ваших файлів, додатків і ігор у безпечному місці, доступному в будь-який час з будь-якого місця.
|
||||
- Платформа для створення та публікації вебсайтів, вебдодатків і ігор.
|
||||
- Альтернатива Dropbox, Google Drive, OneDrive і тд, з свіженьким інтерфейсом та потужними функціями.
|
||||
- Віддалене робоче середовище для серверів і робочих станцій.
|
||||
- Дружній, відкритий проєкт та спільнота для вивчення веброзробки, хмарних обчислень, розподілених систем і багато іншого!
|
||||
|
||||
<br/>
|
||||
|
||||
## Початок роботи
|
||||
|
||||
### Локальна розробка
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
Це запустить Puter на http://puter.localhost:4100 (або на наступному доступному порті).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter доступний як hosted service на [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## Системні вимоги
|
||||
|
||||
- **Операційні Системи:** Linux, macOS, Windows
|
||||
- **RAM:** 2GB мінімум (4GB рекомендовано)
|
||||
- **Місце на диску:** 1GB вільного місця
|
||||
- **Node.js:** Version 16+ (Version 22+ рекомендовано)
|
||||
- **npm:** остання "stable" версія
|
||||
|
||||
<br/>
|
||||
|
||||
## Підтримка
|
||||
|
||||
Зв'язатися з розробниками та спільнотою можна через такі канали:
|
||||
|
||||
- Повідомити про помилку, або запит щодо нової фічі? Будь ласка, [створіть issue](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- Питання щодо Security? [[email protected]](mailto:[email protected])
|
||||
- Написати розробникам [[email protected]](mailto:[email protected])
|
||||
|
||||
Ми завжди готові допомогти Вам з будь-якими питаннями, що можуть виникнути. Не соромтеся ставити нам питання!
|
||||
<br/>
|
||||
|
||||
|
||||
## License
|
||||
|
||||
Цей репорзиторій, включаючи увесь його контент, дочірні проєкти, модулі, і компоненти, ліцензовано за [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt), якщо явно не вказано інше. Сторонні бібліотеки, включені в цей репозиторій, можуть підпадати під дію інших ліцензій.
|
||||
|
||||
<br/>
|
||||
@@ -1,121 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, ذاتی کلاؤڈ کمپیوٹر: آپ کی تمام فائلیں، ایپس، اور کھیل ایک جگہ پر، کہیں سے بھی اور کسی بھی وقت قابل رسائی۔" src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">انٹرنیٹ OS! مفت، اوپن سورس، اور خود میزبان.</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Release" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub License" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« لائیو ڈیمو »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">ڈسکورڈ</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">ریڈڈٹ</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">ایکس (ٹوئٹر)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="اسکرین شاٹ" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
ایک جدید، اوپن سورس انٹرنیٹ آپریٹنگ سسٹم ہے جو کہ خصوصیات سے بھرپور، بہت تیز، اور انتہائی توسیع پذیر ہے۔ Puter
|
||||
|
||||
: کو استعمال کیا جا سکتا ہے Puter
|
||||
|
||||
- ایک پرائیویسی فرسٹ ذاتی کلاؤڈ کے طور پر تاکہ آپ کی تمام فائلیں، ایپس، اور کھیل ایک محفوظ جگہ پر رکھی جا سکیں، کہیں سے بھی اور کسی بھی وقت قابل رسائی ہوں۔
|
||||
- ویب سائٹس، ویب ایپس، اور کھیل بنانے اور شائع کرنے کے لئے ایک پلیٹ فارم کے طور پر۔
|
||||
- وغیرہ کا متبادل، نئے انٹرفیس اور طاقتور خصوصیات کے ساتھ۔ Dropbox، Google Drive، OneDrive
|
||||
- سرورز اور ورک اسٹیشنز کے لیے ایک ریموٹ ڈیسک ٹاپ ماحول کے طور پر۔
|
||||
- ویب ڈویلپمنٹ، کلاؤڈ کمپیوٹنگ، تقسیم شدہ نظاموں، اور بہت کچھ سیکھنے کے لیے ایک دوستانہ، اوپن سورس پروجیکٹ اور کمیونٹی!
|
||||
|
||||
<br/>
|
||||
|
||||
## شروع کرنے کا طریقہ
|
||||
|
||||
### 💻 مقامی ترقی
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
یہ Puter کو http://puter.localhost:4100 (یا اگلے دستیاب پورٹ) پر لانچ کرے گا۔
|
||||
|
||||
<br/>
|
||||
🐳 Docker
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
🐙 Docker Compose
|
||||
Linux/macOS
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
Windows
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter کو [**puter.com**](https://puter.com) پر میزبان سروس کے طور پر دستیاب ہے۔
|
||||
|
||||
<br/>
|
||||
|
||||
## نظام کی ضروریات
|
||||
|
||||
- **آپریٹنگ سسٹمز:** لینکس، macOS، ونڈوز
|
||||
- **RAM:** کم از کم 2GB (4GB تجویز کردہ)
|
||||
- **ڈسک کی جگہ:** 1GB خالی جگہ
|
||||
- **Node.js:** ورژن 16+ (ورژن 22+ تجویز کردہ)
|
||||
- **npm:** تازہ ترین مستحکم ورژن
|
||||
|
||||
<br/>
|
||||
|
||||
## سپورٹ
|
||||
|
||||
منتظمین اور کمیونٹی سے جڑنے کے لیے یہ چینلز استعمال کریں:
|
||||
|
||||
- بگ رپورٹ یا فیچر درخواست؟ براہ کرم [ایک مسئلہ کھولیں](https://github.com/HeyPuter/puter/issues/new/choose).
|
||||
- ڈسکورڈ: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- ایکس (ٹوئٹر): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- ریڈڈٹ: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- ماسٹڈون: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- سیکیورٹی کے مسائل؟ [[email protected]](mailto:[email protected])
|
||||
- منتظمین کو ای میل کریں [[email protected]](mailto:[email protected])
|
||||
|
||||
ہم ہمیشہ آپ کی مدد کے لیے خوش ہیں۔ سوالات پوچھنے میں ہچکچاہٹ نہ کریں
|
||||
!
|
||||
<br/>
|
||||
|
||||
## لائسنس
|
||||
|
||||
اس ریپوزٹری، بشمول اس کے تمام مواد، ذیلی پروجیکٹس، ماڈیولز، اور کمپوننٹس، کو [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) کے تحت لائسنس کیا گیا ہے جب تک کہ واضح طور پر کہیں اور نہ کہا گیا ہو۔ اس ریپوزٹری میں شامل تھرڈ پارٹی لائبریریاں اپنی لائسنس کے تابع ہو سکتی ہیں۔
|
||||
|
||||
<br/>
|
||||
@@ -1,125 +0,0 @@
|
||||
<h3 align="center"><img width="80" alt="Puter.com, Máy Tính Đám Mây Cá Nhân: Tất cả các tệp, ứng dụng, và trò chơi của bạn ở một nơi, có thể truy cập từ bất cứ đâu vào bất kỳ lúc nào." src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
<h3 align="center">Hệ điều hành Internet! Miễn phí, Mã nguồn mở và Có thể tự lưu trữ.</h3>
|
||||
<p align="center">
|
||||
<img alt="Kích thước repo GitHub" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="Phiên bản phát hành GitHub" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=Phi%C3%AAn%20b%E1%BA%A3n%20ph%C3%A1t%20h%C3%A0nh%20GitHub"> <img alt="Giấy phép GitHub" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« DEMO TRỰC TIẾP »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="chụp màn hình" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter là một hệ điều hành internet tiên tiến, mã nguồn mở được thiết kế để có nhiều tính năng, tốc độ vượt trội và khả năng mở rộng cao. Puter có thể được sử dụng như:
|
||||
|
||||
- Một đám mây cá nhân ưu tiên quyền riêng tư để lưu trữ tất cả các tệp, ứng dụng và trò chơi của bạn ở một nơi an toàn, có thể truy cập từ bất cứ đâu, bất cứ lúc nào.
|
||||
- Một nền tảng để xây dựng và xuất bản các trang web, ứng dụng web và trò chơi.
|
||||
- Một sự thay thế cho Dropbox, Google Drive, OneDrive, v.v. với giao diện mới mẻ và nhiều tính năng mạnh mẽ.
|
||||
- Một môi trường máy tính từ xa cho các máy chủ và máy trạm.
|
||||
- Một dự án thân thiện, mã nguồn mở và cộng đồng để học hỏi về phát triển web, điện toán đám mây, hệ thống phân tán và nhiều hơn nữa!
|
||||
|
||||
<br/>
|
||||
|
||||
## Bắt Đầu
|
||||
|
||||
## 💻 Phát Triển Cục Bộ
|
||||
|
||||
```bash
|
||||
Copy code
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
Điều này sẽ khởi chạy Puter tại http://puter.localhost:4100 (hoặc cổng kế tiếp có sẵn).
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
Copy code
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
## 🐙 Docker Compose
|
||||
|
||||
## Linux/macOS
|
||||
|
||||
``` bash
|
||||
Copy code
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
## Windows
|
||||
|
||||
```powershell
|
||||
Copy code
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
## ☁️ Puter.com
|
||||
|
||||
Puter có sẵn dưới dạng dịch vụ lưu trữ tại [**puter.com**](https://puter.com).
|
||||
|
||||
<br/>
|
||||
|
||||
## Yêu Cầu Hệ Thống
|
||||
|
||||
- **Hệ Điều Hành:** Linux, macOS, Windows
|
||||
- **RAM:** Tối thiểu 2GB (Khuyến nghị 4GB)
|
||||
- **Dung Lượng Ổ Cứng:** Còn trống 1GB
|
||||
- **Node.js:** Phiên bản 16+ (Khuyến nghị phiên bản 22+)
|
||||
- **npm:** Phiên bản ổn định mới nhất
|
||||
|
||||
<br/>
|
||||
|
||||
## Hỗ Trợ
|
||||
|
||||
Kết nối với các nhà bảo trì và cộng đồng thông qua các kênh sau:
|
||||
|
||||
- Báo cáo lỗi hoặc yêu cầu tính năng? Vui lòng mở một vấn đề.
|
||||
- Discord: discord.com/invite/PQcx7Teh8u
|
||||
- X (Twitter): x.com/HeyPuter
|
||||
- Reddit: reddit.com/r/puter/
|
||||
- Mastodon: mastodon.social/@puter
|
||||
- Vấn đề bảo mật? security@puter.com
|
||||
- Email các nhà bảo trì tại hi@puter.com
|
||||
|
||||
Chúng tôi luôn sẵn sàng giúp đỡ bạn với bất kỳ câu hỏi nào bạn có. Đừng ngần ngại hỏi!
|
||||
|
||||
<br/>
|
||||
|
||||
## Giấy Phép
|
||||
|
||||
Kho lưu trữ này, bao gồm tất cả nội dung, dự án con, mô-đun và thành phần của nó, được cấp phép theo [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt), trừ khi được tuyên bố rõ ràng khác. Các thư viện của bên thứ ba được bao gồm trong kho lưu trữ này có thể phải tuân theo các giấy phép riêng của chúng.
|
||||
|
||||
<br/>
|
||||
@@ -1,138 +0,0 @@
|
||||
|
||||
<h3 align="center"><img width="80" alt="Puter.com,个人云计算机:所有文件、应用程序和游戏在一个地方,随时随地可访问。" src="https://assets.puter.site/puter-logo.png"></h3>
|
||||
|
||||
<h3 align="center">互联网操作系统!免费、开源且可自行托管。</h3>
|
||||
|
||||
<p align="center">
|
||||
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/HeyPuter/puter"> <img alt="GitHub Release" src="https://img.shields.io/github/v/release/HeyPuter/puter?label=latest%20version"> <img alt="GitHub License" src="https://img.shields.io/github/license/HeyPuter/puter">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://puter.com/"><strong>« 在线演示 »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://puter.com">Puter.com</a>
|
||||
·
|
||||
<a href="https://docs.puter.com" target="_blank">SDK</a>
|
||||
·
|
||||
<a href="https://discord.com/invite/PQcx7Teh8u">Discord</a>
|
||||
·
|
||||
<a href="https://reddit.com/r/puter">Reddit</a>
|
||||
·
|
||||
<a href="https://twitter.com/HeyPuter">X (Twitter)</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center"><img width="800" style="border-radius:5px;" alt="screenshot" src="https://assets.puter.site/puter.com-screenshot-3.webp"></h3>
|
||||
|
||||
<br/>
|
||||
|
||||
## Puter
|
||||
|
||||
Puter 是一个先进的开源互联网操作系统,设计为功能丰富、速度极快且高度可扩展。Puter 可用作:
|
||||
|
||||
- 一个以隐私为优先的个人云,将所有文件、应用程序和游戏保存在一个安全的地方,随时随地可访问。
|
||||
- 构建和发布网站、Web 应用程序和游戏的平台。
|
||||
- Dropbox、Google Drive、OneDrive 等的替代品,具有全新的界面和强大的功能。
|
||||
- 服务器和工作站的远程桌面环境。
|
||||
- 一个友好的开源项目和社区,学习 Web 开发、云计算、分布式系统等更多内容!
|
||||
|
||||
<br/>
|
||||
|
||||
## 入门指南
|
||||
|
||||
|
||||
### 💻 本地开发
|
||||
|
||||
```bash
|
||||
git clone https://github.com/HeyPuter/puter
|
||||
cd puter
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
这将会在 http://puter.localhost:4100(或下一个可用端口)启动 Puter。
|
||||
|
||||
<br/>
|
||||
|
||||
### 🐳 Docker
|
||||
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
### 🐙 Docker Compose
|
||||
|
||||
|
||||
#### Linux/macOS
|
||||
```bash
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
#### Windows
|
||||
|
||||
|
||||
```powershell
|
||||
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
|
||||
```
|
||||
<br/>
|
||||
|
||||
## 宝塔面板Docker一键部署(推荐)
|
||||
|
||||
1. 安装宝塔面板9.2.0及以上版本,前往 [宝塔面板](https://www.bt.cn/new/download.html?r=dk_puter) 官网,选择正式版的脚本下载安装
|
||||
|
||||
2. 安装后登录宝塔面板,在左侧菜单栏中点击 `Docker`,首次进入会提示安装`Docker`服务,点击立即安装,按提示完成安装
|
||||
|
||||
3. 安装完成后在应用商店中搜索`puter`,点击安装,配置域名等基本信息即可完成安装
|
||||
|
||||
|
||||
### ☁️ Puter.com
|
||||
|
||||
Puter 可以作为托管服务使用,访问 [**puter.com**](https://puter.com)。
|
||||
|
||||
<br/>
|
||||
|
||||
## 系统要求
|
||||
|
||||
- **操作系统:** Linux, macOS, Windows
|
||||
- **内存:** 最低 2GB(推荐 4GB)
|
||||
- **磁盘空间:** 1GB 可用空间
|
||||
- **Node.js:** 版本 16+(推荐 22+)
|
||||
- **npm:** 最新稳定版本
|
||||
|
||||
<br/>
|
||||
|
||||
## 支持
|
||||
|
||||
通过以下渠道与维护者和社区联系:
|
||||
|
||||
- 有 Bug 报告或功能请求?请 [提交问题](https://github.com/HeyPuter/puter/issues/new/choose)。
|
||||
- Discord: [discord.com/invite/PQcx7Teh8u](https://discord.com/invite/PQcx7Teh8u)
|
||||
- X (Twitter): [x.com/HeyPuter](https://x.com/HeyPuter)
|
||||
- Reddit: [reddit.com/r/puter/](https://www.reddit.com/r/puter/)
|
||||
- Mastodon: [mastodon.social/@puter](https://mastodon.social/@puter)
|
||||
- 安全问题?请联系 [[email protected]](mailto:[email protected])
|
||||
- 电子邮件维护者 [[email protected]](mailto:[email protected])
|
||||
|
||||
我们随时乐意帮助您解答任何问题,欢迎随时联系!
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
## 许可证
|
||||
|
||||
本仓库,包括其所有内容、子项目、模块和组件,除非另有明确说明,否则均遵循 [AGPL-3.0](https://github.com/HeyPuter/puter/blob/main/LICENSE.txt) 许可证。 本仓库中包含的第三方库可能受其各自的许可证约束。
|
||||
|
||||
<br/>
|
||||
@@ -0,0 +1,136 @@
|
||||
### Problem
|
||||
|
||||
When sending metadata along with arbitrary JSON objects,
|
||||
a collision of property names may occur. For example, the
|
||||
driver system can't place a "type" property on an arbitrary
|
||||
response coming from a driver because that might also be
|
||||
the name of a property in the response.
|
||||
|
||||
|
||||
#### Example:
|
||||
```json
|
||||
{
|
||||
"type": "api:thing",
|
||||
"version": "v1.0.0",
|
||||
"some": "info"
|
||||
}
|
||||
```
|
||||
|
||||
#### Awful Solution
|
||||
|
||||
Reserved words. Drivers need to know their response can't have
|
||||
keys like `type` or `version`. If we'd like to add more meta
|
||||
keys in the future we need to verify that no existing drivers
|
||||
use the new key we'd like to reserve. If we have have such features
|
||||
as user-submitted drivers this will be impossibe.
|
||||
A `meta` key as a single reserved word could work, which is one
|
||||
of the solutions discussed below.
|
||||
|
||||
#### Obvious Solution:
|
||||
|
||||
The obvious solution is to return an object with a
|
||||
`head` property and a `body` propery:
|
||||
|
||||
```json
|
||||
{
|
||||
"head": {
|
||||
"type": "api:thing",
|
||||
"version": "v1.0.0"
|
||||
},
|
||||
"body": {
|
||||
"some": "info"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
I don't mind this solution. I've come up with some alternatives though,
|
||||
because this solution has a couple drawbacks:
|
||||
- it looks a little verbose
|
||||
- it's not backwards-compatible with arbitrary JSON-object responses
|
||||
|
||||
## Solutions
|
||||
|
||||
### Dollar-Sign Convention
|
||||
|
||||
- Objects have two classes of keys:
|
||||
- "meta" keys begin with "$"
|
||||
- other keys must validate against the
|
||||
usual identifier rules: `/[A-Za-z_][A-Za-z0-9_]*/`
|
||||
- The meta key `$` indicates the schema or class of
|
||||
the object.
|
||||
- Example:
|
||||
```json
|
||||
{
|
||||
"$": "api:thing",
|
||||
"$version": "v1.0.0",
|
||||
|
||||
"some": "info"
|
||||
}
|
||||
```
|
||||
- what sucks about it:
|
||||
- `$` might be surprising or confusing
|
||||
- response is a subset of valid JSON keys
|
||||
(those not including `$`)
|
||||
- what's nice about it:
|
||||
- backwards-compatible with arbitrary JSON-object responses
|
||||
which don't already use `$`
|
||||
|
||||
### Underscore Convention
|
||||
- Same as above, but `_` instead of `$`
|
||||
```json
|
||||
{
|
||||
"_": "api:thing",
|
||||
"_version": "v1.0.0",
|
||||
|
||||
"some": "info"
|
||||
}
|
||||
```
|
||||
- what sucks about it:
|
||||
- `_` might be confusing
|
||||
- response is a subset of valid JSON keys
|
||||
(those not including `_`)
|
||||
- what's nice about it:
|
||||
- `_` is conventionally used for private property names,
|
||||
so this might be a little less surprising
|
||||
- backwards-compatible with arbitrary JSON-object responses
|
||||
which don't already use `_`
|
||||
|
||||
### Nesting Convention, simplified
|
||||
|
||||
- Similar to the "obvious solution" except
|
||||
metadata fields are lifted up a level.
|
||||
It's relatively inconsequential if meta keys
|
||||
have reserved words compared to value keys.
|
||||
```json
|
||||
{
|
||||
"type": "api:thing",
|
||||
"version": "v1.0.0",
|
||||
"value": {
|
||||
"some": "info"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Modified Dollar/Underscore convention
|
||||
- Using `_` in this example, but instead of prefixing
|
||||
meta properties they all go under one key.
|
||||
```json
|
||||
{
|
||||
"_": {
|
||||
"type": "api:thing",
|
||||
"version": "v1.0.0"
|
||||
},
|
||||
|
||||
"some": "info"
|
||||
}
|
||||
```
|
||||
- what sucks about it:
|
||||
- `_` might be confusing
|
||||
- response is a subset of valid JSON keys
|
||||
(those not **exactly** `_`)
|
||||
- what's nice about it:
|
||||
- `_` is conventionally used for private property names,
|
||||
so this might be a little less surprising
|
||||
- backwards-compatible with arbitrary JSON-object responses
|
||||
which don't already use `_` as an exact key
|
||||
- only one reserved key
|
||||
@@ -0,0 +1,12 @@
|
||||
# Micro Modules
|
||||
|
||||
**CoreModule** has a large number of services. Each service handles
|
||||
a general concern, like "notifications", but increasing this granularity
|
||||
a little put more could allow a lot more code re-use.
|
||||
|
||||
One specific example that comes to mind is services that provide
|
||||
CRUD operations for a database table. The **EntityStoreService** can
|
||||
be used for a lot of these even though right now it's specifically
|
||||
used for drivers. Having a common class of service like this can also
|
||||
allow quickly configuring the equivalent service for providing those
|
||||
CRUD operations through an API.
|
||||
@@ -1,84 +0,0 @@
|
||||
export default [
|
||||
{
|
||||
key: 'domain',
|
||||
description: `
|
||||
Domain name of the Puter instance. This may be used to generate URLs
|
||||
in the UI. If "allow_all_host_values" is false or undefined, the domain
|
||||
will be used to validate the host header of incoming requests.
|
||||
`,
|
||||
example_values: [
|
||||
'example.com',
|
||||
'subdomain.example.com',
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'protocol',
|
||||
description: `
|
||||
The protocol to use for URLs. This should be either "http" or "https".
|
||||
`,
|
||||
example_values: [
|
||||
'http',
|
||||
'https',
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 'static_hosting_domain',
|
||||
description: `
|
||||
This domain name will be used for public site URLs. For example: when
|
||||
you right-click a directory and choose "Publish as Website".
|
||||
This domain should point to the same server. If you have a LAN configuration
|
||||
you could set this to something like
|
||||
\`site.192.168.555.12.nip.io\`, replacing
|
||||
\`192.168.555.12\` with a valid IP address belonging to the server.
|
||||
`,
|
||||
},
|
||||
{
|
||||
key: 'allow_all_host_values',
|
||||
description: `
|
||||
If true, Puter will accept any host header value in incoming requests.
|
||||
This is useful for development, but should be disabled in production.
|
||||
`,
|
||||
},
|
||||
{
|
||||
key: 'allow_nipio_domains',
|
||||
description: `
|
||||
If true, Puter will allow requests with host headers that end in nip.io.
|
||||
This is useful for development, LAN, and VPN configurations.
|
||||
`,
|
||||
},
|
||||
{
|
||||
key: 'http_port',
|
||||
description: `
|
||||
The port to listen on for HTTP requests.
|
||||
`,
|
||||
},
|
||||
{
|
||||
key: 'enable_public_folders',
|
||||
description: `
|
||||
If true, any /username/Public directory will be available to all
|
||||
users, including anonymous users.
|
||||
`,
|
||||
},
|
||||
{
|
||||
key: 'disable_temp_users',
|
||||
description: `
|
||||
If true, new users will see the login/signup page instead of being
|
||||
automatically logged in as a temporary user.
|
||||
`,
|
||||
},
|
||||
{
|
||||
key: 'disable_user_signup',
|
||||
description: `
|
||||
If true, the signup page will be disabled and the backend will not
|
||||
accept new user registrations.
|
||||
`,
|
||||
},
|
||||
{
|
||||
key: 'disable_fallback_mechanisms',
|
||||
description: `
|
||||
A general setting to prevent any fallback behavior that might
|
||||
"hide" errors. It is recommended to set this to true when
|
||||
debugging, testing, or developing new features.
|
||||
`,
|
||||
},
|
||||
];
|
||||
@@ -1,81 +0,0 @@
|
||||
# Configuring Puter
|
||||
|
||||
## Terminology
|
||||
|
||||
- **root** - the "top level" of configuration; if a key-value pair is in/at "the root"
|
||||
that means it is **not in a nested object**
|
||||
(ex: values under "services" are **not** at the root).
|
||||
|
||||
## Config Locations
|
||||
|
||||
Running the server will generate a configuration file in one of these locations:
|
||||
- `config/config.json` when [Using Docker](#using-docker)
|
||||
- `volatile/config/config.json` in [Local Development](#local-development)
|
||||
- `/etc/puter/config.json` on a server (or within a Docker container)
|
||||
|
||||
## Editing Configuration
|
||||
|
||||
For a list of all possible config values, see [config_values.md](./config_values.md)
|
||||
|
||||
Instead of editing the generated `config.json`, you can make a config file
|
||||
that references it. This makes it easier to maintain if you frequently update
|
||||
Puter, since you can then just delete `config.json` to get new defaults.
|
||||
|
||||
For example, a `local.json` might look like this:
|
||||
|
||||
```json
|
||||
{
|
||||
// Always include this header
|
||||
"$version": "v1.1.0",
|
||||
"$requires": [
|
||||
"config.json"
|
||||
],
|
||||
"config_name": "local",
|
||||
|
||||
// Your custom configuration
|
||||
"domain": "my-puter.example.com"
|
||||
}
|
||||
```
|
||||
|
||||
To use `local.json` instead of `config.json` you will need to set the
|
||||
environment variable `PUTER_CONFIG_PROFILE=local` in the context where
|
||||
you are running Puter.
|
||||
|
||||
## Sample Configuration
|
||||
|
||||
The default configuration generated by Puter will look
|
||||
something like the following (updated 2025-02-26):
|
||||
|
||||
```json
|
||||
{
|
||||
"config_name": "generated default config",
|
||||
"mod_directories": [
|
||||
"{source}/../extensions"
|
||||
],
|
||||
"env": "dev",
|
||||
"nginx_mode": true,
|
||||
"server_id": "localhost",
|
||||
"http_port": "auto",
|
||||
"domain": "puter.localhost",
|
||||
"protocol": "http",
|
||||
"contact_email": "[email protected]",
|
||||
"services": {
|
||||
"database": {
|
||||
"engine": "sqlite",
|
||||
"path": "puter-database.sqlite"
|
||||
},
|
||||
"dynamo" :{"path":"./puter-ddb"}
|
||||
},
|
||||
"cookie_name": "...",
|
||||
"jwt_secret": "...",
|
||||
"url_signature_secret": "...",
|
||||
"private_uid_secret": "...",
|
||||
"private_uid_namespace": "...",
|
||||
"": null
|
||||
}
|
||||
```
|
||||
|
||||
## Root-Level Parameters
|
||||
|
||||
- **domain** - origin for Puter. Do **not** include URL schema (the 'http(s)://' portion)
|
||||
-
|
||||
@@ -1,72 +0,0 @@
|
||||
### `domain`
|
||||
|
||||
Domain name of the Puter instance. This may be used to generate URLs
|
||||
in the UI. If "allow_all_host_values" is false or undefined, the domain
|
||||
will be used to validate the host header of incoming requests.
|
||||
|
||||
#### Examples
|
||||
|
||||
- `"domain": "example.com"`
|
||||
- `"domain": "subdomain.example.com"`
|
||||
|
||||
### `protocol`
|
||||
|
||||
The protocol to use for URLs. This should be either "http" or "https".
|
||||
|
||||
#### Examples
|
||||
|
||||
- `"protocol": "http"`
|
||||
- `"protocol": "https"`
|
||||
|
||||
### `static_hosting_domain`
|
||||
|
||||
This domain name will be used for public site URLs. For example: when
|
||||
you right-click a directory and choose "Publish as Website".
|
||||
This domain should point to the same server. If you have a LAN configuration
|
||||
you could set this to something like
|
||||
`site.192.168.555.12.nip.io`, replacing
|
||||
`192.168.555.12` with a valid IP address belonging to the server.
|
||||
|
||||
|
||||
### `allow_all_host_values`
|
||||
|
||||
If true, Puter will accept any host header value in incoming requests.
|
||||
This is useful for development, but should be disabled in production.
|
||||
|
||||
|
||||
### `allow_nipio_domains`
|
||||
|
||||
If true, Puter will allow requests with host headers that end in nip.io.
|
||||
This is useful for development, LAN, and VPN configurations.
|
||||
|
||||
|
||||
### `http_port`
|
||||
|
||||
The port to listen on for HTTP requests.
|
||||
|
||||
|
||||
### `enable_public_folders`
|
||||
|
||||
If true, any /username/Public directory will be available to all
|
||||
users, including anonymous users.
|
||||
|
||||
|
||||
### `disable_temp_users`
|
||||
|
||||
If true, new users will see the login/signup page instead of being
|
||||
automatically logged in as a temporary user.
|
||||
|
||||
|
||||
### `disable_user_signup`
|
||||
|
||||
If true, the signup page will be disabled and the backend will not
|
||||
accept new user registrations.
|
||||
|
||||
|
||||
### `disable_fallback_mechanisms`
|
||||
|
||||
A general setting to prevent any fallback behavior that might
|
||||
"hide" errors. It is recommended to set this to true when
|
||||
debugging, testing, or developing new features.
|
||||
|
||||
|
||||
@@ -6,19 +6,6 @@
|
||||
|
||||
Ensure the hosting device has a static IP address to prevent potential connectivity issues due to IP changes. This setup will enable seamless access to Puter and its services across your local network.
|
||||
|
||||
### Using `nip.io`
|
||||
|
||||
We recommend this configuration for LAN setups. All you need to do is set the following
|
||||
at root level in your configuration file:
|
||||
|
||||
```json
|
||||
"allow_nipio_domains": true
|
||||
```
|
||||
|
||||
Puter requires multiple origins to work correctly. `nip.io` is a wildcard DNS for IP addresses,
|
||||
so Puter can still have multiple subdomains and you don't need to configure your own DNS or
|
||||
hosts file.
|
||||
|
||||
### Using Hosts Files
|
||||
|
||||
The hosts file is a straightforward way to map domain names to IP addresses on individual devices. It's simple to set up but requires manual changes on each device that needs access to the domains.
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
# First Run Issues
|
||||
|
||||
## "Cannot find package '@heyputer/backend'"
|
||||
|
||||
Scenario: You see the following output:
|
||||
|
||||
```
|
||||
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Cannot find package '@heyputer/backend' ┃
|
||||
┃ 📝 this usually happens if you forget `npm install` ┃
|
||||
┃ Suggestions: ┃
|
||||
┃ - try running `npm install` ┃
|
||||
┃ Technical Notes: ┃
|
||||
┃ - @heyputer/backend is in an npm workspace ┃
|
||||
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
||||
```
|
||||
|
||||
1. Ensure you have run `npm install`.
|
||||
2. [Install build essentials for your distro](#installing-build-essentials),
|
||||
then run `npm install` again.
|
||||
|
||||
## Installing Build Essentials
|
||||
|
||||
### Debian-based distros
|
||||
|
||||
```
|
||||
sudo apt update
|
||||
sudo apt install build-essential
|
||||
```
|
||||
|
||||
### RHEL-family distros (Fedora, Rocky, etc)
|
||||
|
||||
For distros using dnf5 (Fedora 41+):
|
||||
```
|
||||
sudo dnf install @development-tools
|
||||
```
|
||||
|
||||
Otherwise:
|
||||
```
|
||||
sudo dnf groupinstall "Development Tools"
|
||||
```
|
||||
|
||||
### "I use Arch btw"
|
||||
|
||||
```
|
||||
sudo pacman -S base-devel
|
||||
```
|
||||
|
||||
### Alpine
|
||||
|
||||
If you're running in Puter's Alpine image then this is already installed.
|
||||
|
||||
```
|
||||
sudo apk add build-base
|
||||
```
|
||||
|
||||
### Gentoo
|
||||
|
||||
You know what you're doing; you just wanted to see if we mentioned Gentoo.
|
||||
|
||||
## "Could not load the "sharp" module using the freebsd-x64 runtime"
|
||||
|
||||
In order to get it to work on FreeBSD, you will need to build sharp from source and link it to the project.
|
||||
|
||||
```
|
||||
pkg install vips
|
||||
git clone --depth=1 https://github.com/lovell/sharp.git
|
||||
cd sharp
|
||||
yarn install
|
||||
sudo npm link
|
||||
```
|
||||
|
||||
After `npm install` you can link the prebuilt module
|
||||
|
||||
```
|
||||
# cd puter
|
||||
# npm install
|
||||
npm link sharp
|
||||
npm start
|
||||
```
|
||||
@@ -1,25 +0,0 @@
|
||||
import dedent from 'dedent';
|
||||
import configVals from './config-vals.json.js';
|
||||
|
||||
const mdlib = {};
|
||||
mdlib.h = (out, n, str) => {
|
||||
out(`${'#'.repeat(n)} ${str}\n\n`);
|
||||
};
|
||||
|
||||
const N_START = 3;
|
||||
|
||||
const out = str => process.stdout.write(str);
|
||||
for ( const configVal of configVals ) {
|
||||
mdlib.h(out, N_START, `\`${configVal.key}\``);
|
||||
out(`${dedent(configVal.description) }\n\n`);
|
||||
|
||||
if ( configVal.example_values ) {
|
||||
mdlib.h(out, N_START + 1, 'Examples');
|
||||
for ( const example of configVal.example_values ) {
|
||||
out(`- \`"${configVal.key}": ${JSON.stringify(example)}\`\n`);
|
||||
}
|
||||
}
|
||||
|
||||
out('\n');
|
||||
|
||||
}
|
||||
@@ -5,18 +5,22 @@
|
||||
|
||||
### Self-Hosting Differences
|
||||
Currently, the self-hosted version of Puter is different in a few ways from [Puter.com](https://puter.com):
|
||||
- There is no built-in way to access apps from puter.com (see below)
|
||||
- Several "core" apps are missing, such as **Code** or **Draw**
|
||||
- Some assets are different
|
||||
- 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 is still possible to add apps using the **Dev Center** app.
|
||||
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.
|
||||
|
||||
<br/>
|
||||
|
||||
## Configuration
|
||||
|
||||
Running the server will generate a [configuration file](./config.md) in one of these locations:
|
||||
Running the server will generate a configuration file in one of these locations:
|
||||
- `config/config.json` when [Using Docker](#using-docker)
|
||||
- `volatile/config/config.json` in [Local Development](#local-development)
|
||||
- `/etc/puter/config.json` on a server (or within a Docker container)
|
||||
@@ -26,11 +30,6 @@ Running the server will generate a [configuration file](./config.md) in one of t
|
||||
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 on LAN, enable the following configuration:
|
||||
```json
|
||||
"allow_nipio_domains": true
|
||||
```
|
||||
|
||||
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
|
||||
@@ -56,4 +55,4 @@ 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.
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
@@ -0,0 +1,9 @@
|
||||
# Uncategorized Documentation
|
||||
|
||||
Any document in this directory may be moved in the future to
|
||||
a more suitable location. This is a good place to put any
|
||||
documentation that needs to be written when it's unclear what
|
||||
the best place for it is. This is to avoid situations where
|
||||
documentation _doesn't_ get written simply because it's not clear
|
||||
where it belongs (something which the author of this very document
|
||||
has been guilty of at times).
|
||||
@@ -0,0 +1,46 @@
|
||||
# Notes about ES6 Class Syntax
|
||||
|
||||
## Document Meta
|
||||
|
||||
> **backend focus:** This documentation is more relevant to
|
||||
> Puter's backend than frontend, but is placed here because
|
||||
> it could apply to other areas in the future.
|
||||
|
||||
## Expressions as Methods
|
||||
|
||||
One important shortcoming in the ES6 class syntax to be aware of
|
||||
is that it discourages the use of expressions as methods.
|
||||
|
||||
For example:
|
||||
|
||||
```javascript
|
||||
class ExampleClass extends SomeBase {
|
||||
intuitive_method_definition () {}
|
||||
|
||||
constructor () {
|
||||
this.less_intuitive = some_expr();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Even if it is known that the return type of `some_expr` is a function,
|
||||
it is still unclear whether it's being used as a callback or
|
||||
as a method without other context in the code, since this is
|
||||
how we typically assign instance members rather than methods.
|
||||
|
||||
We solve this in Puter's backend using a **trait** called
|
||||
[AssignableMethodsTrait](../../packages/backend/src/traits/AssignableMethodsTrait.js)
|
||||
which allows a static member called `METHODS` to contain
|
||||
method definitions.
|
||||
|
||||
### Uses for Expressions as Methods
|
||||
|
||||
#### Method Composition
|
||||
|
||||
Method Composition is the act of composing methods from other
|
||||
constituents. For example,
|
||||
[Sequence](../../packages/backend/src/codex/Sequence.js)
|
||||
allows composing a method from smaller functions, allowing
|
||||
easier definition of "in-betwewen-each" behaviors and ways
|
||||
to track which values from the arguments are actually read
|
||||
during a particular call.
|
||||
@@ -0,0 +1,66 @@
|
||||
# Puter Mods
|
||||
|
||||
## What is a Puter Mod?
|
||||
|
||||
Currently, the definition of a Puter mod is:
|
||||
|
||||
> A [Module](../../packages/backend/doc/contributors/modules.md)
|
||||
> which is exported by a package directory which itself exists
|
||||
> within a directory specified in the `mod_directories` array
|
||||
> in `config.json`.
|
||||
|
||||
## Enabling Puter Mods
|
||||
|
||||
### Step 1: Update Configuration
|
||||
|
||||
First update the configuration (usually at `./volatile/config.json`
|
||||
or `/var/puter/config.json`) to specify mod directories.
|
||||
|
||||
```json
|
||||
{
|
||||
"config_name": "example config",
|
||||
|
||||
"mod_directories": [
|
||||
"{source}/mods/mods_enabled"
|
||||
]
|
||||
|
||||
// ... other config options
|
||||
}
|
||||
```
|
||||
|
||||
The first path you'll want to add is
|
||||
`"{source}/mods/mods_enabled"`
|
||||
which adds all the mods included in Puter's official repository.
|
||||
You don't need to change `{source}` unless your entry javascript
|
||||
file is in a different location than the default.
|
||||
|
||||
If you want to enable all the mods, you can change the path above
|
||||
to `mods_available` instead and skip step 2 below.
|
||||
|
||||
### Step 2: Select Mods
|
||||
|
||||
To enable a Puter mod, create a symbolic link (AKA symlink) in
|
||||
`mods/mods_enabled`, pointing to
|
||||
a directory in `mods/mods_available`. This follows the same convention
|
||||
as managing sites/mods in Apache or Nginx servers.
|
||||
|
||||
For example to enable KDMOD (which you can read as "Kernel Dev" mod,
|
||||
or "the mod that GitHub user KernelDeimos created to help with testing")
|
||||
you would run this command:
|
||||
```sh
|
||||
ln -rs ./mods/mods_available/kdmod ./mods/mods_enabled/
|
||||
```
|
||||
|
||||
This will create a symlink at `./mods/mods_enabled/kdmod` pointing
|
||||
to the directory `./mods/mods_available/kdmod`.
|
||||
|
||||
> **note:** here are some helpful tips for the `ln` command:
|
||||
> - You can remember `ln`'s first argument is the unaffected
|
||||
> source file by remembering `cp` and `mv` are the same in
|
||||
> this way.
|
||||
> - If you don't add `-s` you get a hard link. You will rarely
|
||||
> find yourself needing to do that.
|
||||
> - The `-r` flag allows you to write both paths relative to
|
||||
> the directory from which you are calling the command, which
|
||||
> is sometimes more intuitive.
|
||||
|
||||
+135
-200
@@ -1,204 +1,139 @@
|
||||
import js from '@eslint/js';
|
||||
import stylistic from '@stylistic/eslint-plugin';
|
||||
import tseslintPlugin from '@typescript-eslint/eslint-plugin';
|
||||
import tseslintParser from '@typescript-eslint/parser';
|
||||
import { defineConfig } from 'eslint/config';
|
||||
import globals from 'globals';
|
||||
import bangSpaceIf from './eslint/bang-space-if.js';
|
||||
import controlStructureSpacing from './eslint/control-structure-spacing.js';
|
||||
import spaceUnaryOpsWithException from './eslint/space-unary-ops-with-exception.js';
|
||||
import js from "@eslint/js";
|
||||
import globals from "globals";
|
||||
|
||||
export const rules = {
|
||||
'no-invalid-this': 'error',
|
||||
'no-unused-vars': ['error', {
|
||||
vars: 'all',
|
||||
args: 'after-used',
|
||||
caughtErrors: 'none',
|
||||
ignoreRestSiblings: false,
|
||||
ignoreUsingDeclarations: false,
|
||||
reportUsedIgnorePattern: false,
|
||||
argsIgnorePattern: '^_',
|
||||
destructuredArrayIgnorePattern: '^_',
|
||||
export default [
|
||||
js.configs.recommended,
|
||||
|
||||
}],
|
||||
curly: ['error', 'multi-line'],
|
||||
'@stylistic/curly-newline': ['error', 'always'],
|
||||
'@stylistic/object-curly-spacing': ['error', 'always'],
|
||||
'@stylistic/indent': ['error', 4, {
|
||||
SwitchCase: 1,
|
||||
CallExpression: {
|
||||
arguments: 1,
|
||||
},
|
||||
}],
|
||||
'@stylistic/indent-binary-ops': ['error', 4],
|
||||
'@stylistic/array-bracket-newline': ['error', 'consistent'],
|
||||
'@stylistic/semi': ['error', 'always'],
|
||||
'@stylistic/quotes': ['error', 'single', { 'avoidEscape': true }],
|
||||
'@stylistic/function-call-argument-newline': ['error', 'consistent'],
|
||||
'@stylistic/function-paren-newline': ['error', 'multiline-arguments'],
|
||||
'@stylistic/arrow-spacing': ['error', { before: true, after: true }],
|
||||
'@stylistic/space-before-function-paren': 'error',
|
||||
'@stylistic/key-spacing': ['error', { 'beforeColon': false, 'afterColon': true }],
|
||||
'@stylistic/keyword-spacing': ['error', { 'before': true, 'after': true }],
|
||||
'@stylistic/no-multiple-empty-lines': ['error', { max: 1, maxEOF: 0 }],
|
||||
'@stylistic/comma-spacing': ['error', { 'before': false, 'after': true }],
|
||||
'@stylistic/comma-dangle': ['error', 'always-multiline'],
|
||||
'@stylistic/object-property-newline': ['error', { allowAllPropertiesOnSameLine: true }],
|
||||
'@stylistic/dot-location': ['error', 'property'],
|
||||
'@stylistic/space-infix-ops': ['error'],
|
||||
'no-undef': 'error',
|
||||
'custom/control-structure-spacing': 'error',
|
||||
'custom/bang-space-if': 'error',
|
||||
'@stylistic/no-trailing-spaces': 'error',
|
||||
'@stylistic/space-before-blocks': ['error', 'always'],
|
||||
'prefer-template': 'error',
|
||||
'@stylistic/no-mixed-spaces-and-tabs': ['error', 'smart-tabs'],
|
||||
'custom/space-unary-ops-with-exception': ['error', { words: true, nonwords: false }],
|
||||
'@stylistic/no-multi-spaces': ['error', { exceptions: { 'VariableDeclarator': true } }],
|
||||
'@stylistic/type-annotation-spacing': 'error',
|
||||
'@stylistic/type-generic-spacing': 'error',
|
||||
'@stylistic/type-named-tuple-spacing': ['error'],
|
||||
'no-use-before-define': ['error', {
|
||||
'functions': false,
|
||||
}],
|
||||
'@stylistic/array-bracket-spacing': ['error', 'never'],
|
||||
'@stylistic/linebreak-style': ['error', 'unix'],
|
||||
'no-useless-computed-key': 'error',
|
||||
'no-sequences': [
|
||||
'error', {
|
||||
allowInParentheses: false,
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const tsRules = {
|
||||
'@typescript-eslint/no-explicit-any': 'warn',
|
||||
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', caughtErrors: 'none' }],
|
||||
'@typescript-eslint/ban-ts-comment': 'warn',
|
||||
'@typescript-eslint/consistent-type-definitions': ['error', 'interface'],
|
||||
};
|
||||
|
||||
const sharedPlugins = {
|
||||
js,
|
||||
'@stylistic': stylistic,
|
||||
custom: {
|
||||
{
|
||||
// Global ignores
|
||||
ignores: [
|
||||
"**/*.min.js",
|
||||
"**/src/lib/**",
|
||||
"**/dist/",
|
||||
"src/backend/src/public/assets/**",
|
||||
"incubator/**"
|
||||
],
|
||||
},
|
||||
{
|
||||
// Top-level and tools use Node
|
||||
files: [
|
||||
"tools/**/*.js",
|
||||
],
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.node,
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
// Back end
|
||||
files: [
|
||||
"src/backend/**/*.js",
|
||||
"mods/**/*.js",
|
||||
"dev-server.js",
|
||||
"utils.js",
|
||||
],
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.node,
|
||||
"kv": true,
|
||||
"def": true,
|
||||
"use": true,
|
||||
"ll":true,
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
// Front end
|
||||
files: [
|
||||
"src/**/*.js",
|
||||
],
|
||||
ignores: [
|
||||
"src/backend/**/*.js",
|
||||
],
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.browser,
|
||||
...globals.commonjs,
|
||||
// Weird false positives
|
||||
"Buffer": true,
|
||||
// Puter Common
|
||||
"puter": true,
|
||||
"i18n": true,
|
||||
"html_encode": true,
|
||||
"html_decode": true,
|
||||
"isMobile": true,
|
||||
// Class Registry
|
||||
"logger": true,
|
||||
"def": true,
|
||||
"use": true,
|
||||
// Libraries
|
||||
"saveAs": true, // FileSaver
|
||||
"iro": true, // iro.js color picker
|
||||
"$": true, // jQuery
|
||||
"jQuery": true, // jQuery
|
||||
"JSZip": true, // JSZip
|
||||
"_": true, // lodash
|
||||
"QRCode": true, // qrcode
|
||||
"io": true, // socket.io
|
||||
"timeago": true, // timeago
|
||||
"SelectionArea": true, // viselect
|
||||
// Puter GUI Globals
|
||||
"set_menu_item_prop": true,
|
||||
"determine_active_container_parent": true,
|
||||
"privacy_aware_path": true,
|
||||
"api_origin": true,
|
||||
"auth_token": true,
|
||||
"logout": true,
|
||||
"is_email": true,
|
||||
"select_ctxmenu_item": true,
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
// Mods
|
||||
// NOTE: Mods have backend and frontend parts, so this just includes the globals for both.
|
||||
files: [
|
||||
"mods/**/*.js",
|
||||
],
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.node,
|
||||
"use": true,
|
||||
"window": true,
|
||||
"puter": true,
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
// Tests
|
||||
files: [
|
||||
"**/test/**/*.js",
|
||||
],
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.mocha,
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
// Phoenix
|
||||
files: [
|
||||
"src/phoenix/**/*.js",
|
||||
],
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.node,
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
// Global rule settings
|
||||
rules: {
|
||||
'control-structure-spacing': controlStructureSpacing,
|
||||
'bang-space-if': bangSpaceIf,
|
||||
'space-unary-ops-with-exception': spaceUnaryOpsWithException,
|
||||
},
|
||||
"no-prototype-builtins": "off", // Complains about any use of hasOwnProperty()
|
||||
"no-unused-vars": "off", // Temporary, we just have a lot of these
|
||||
"no-debugger": "warn",
|
||||
"no-async-promise-executor": "off", // We do this quite often and it's fine
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
const sharedJsConfig = {
|
||||
rules,
|
||||
plugins: sharedPlugins,
|
||||
};
|
||||
|
||||
const recommendedJsConfig = {
|
||||
...sharedJsConfig,
|
||||
extends: ['js/recommended'],
|
||||
};
|
||||
|
||||
const createTsConfig = ({ files, project, ignores = [], globals: tsGlobals }) => ({
|
||||
files,
|
||||
ignores,
|
||||
languageOptions: {
|
||||
parser: tseslintParser,
|
||||
...(tsGlobals ? { globals: tsGlobals } : {}),
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
project,
|
||||
},
|
||||
},
|
||||
plugins: {
|
||||
'@typescript-eslint': tseslintPlugin,
|
||||
},
|
||||
rules: tsRules,
|
||||
});
|
||||
|
||||
const backendConfig = {
|
||||
...recommendedJsConfig,
|
||||
files: [
|
||||
'src/backend/**/*.{js,mjs,cjs,ts}',
|
||||
'src/putility/**/*.{js,mjs,cjs,ts}',
|
||||
],
|
||||
ignores: [
|
||||
'**/*.test.js',
|
||||
'**/*.test.ts',
|
||||
'**/*.test.mts',
|
||||
],
|
||||
languageOptions: { globals: globals.node },
|
||||
};
|
||||
|
||||
const testConfig = {
|
||||
...sharedJsConfig,
|
||||
files: [
|
||||
'**/*.test.js',
|
||||
'**/*.test.ts',
|
||||
'**/*.test.mts',
|
||||
],
|
||||
languageOptions: { globals: { ...globals.node, ...globals.vitest } },
|
||||
};
|
||||
|
||||
const extensionConfig = {
|
||||
...recommendedJsConfig,
|
||||
files: ['extensions/**/*.{js,mjs,cjs,ts}'],
|
||||
languageOptions: {
|
||||
globals: {
|
||||
extension: 'readonly',
|
||||
config: 'readonly',
|
||||
global_config: 'readonly',
|
||||
...globals.node,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
const frontendConfig = {
|
||||
...recommendedJsConfig,
|
||||
files: ['**/*.{js,mjs,cjs,ts}', 'src/gui/src/**/*.js'],
|
||||
ignores: [
|
||||
'src/backend/**/*.{js,mjs,cjs,ts}',
|
||||
'extensions/**/*.{js,mjs,cjs,ts}',
|
||||
'submodules/**',
|
||||
'**/*.test.{js,ts,mts,mjs}',
|
||||
'**/*.min.js',
|
||||
'**/*.min.cjs',
|
||||
'**/*.min.mjs',
|
||||
'**/socket.io.js',
|
||||
'**/dist/*.js',
|
||||
'src/gui/src/lib/**',
|
||||
'src/gui/dist/**',
|
||||
],
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.browser,
|
||||
...globals.jquery,
|
||||
i18n: 'readonly',
|
||||
puter: 'readonly',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default defineConfig([
|
||||
createTsConfig({
|
||||
files: ['**/*.test.ts', '**/*.test.mts', '**/*.test.setup.ts'],
|
||||
ignores: ['tests/playwright/tests/**/*.ts'],
|
||||
project: './tests/tsconfig.json',
|
||||
globals: { ...globals.node, ...globals.vitest },
|
||||
}),
|
||||
createTsConfig({
|
||||
files: ['**/*.ts'],
|
||||
ignores: ['**/*.test.ts', '**/*.test.mts', 'extensions/**/*.ts'],
|
||||
project: './tsconfig.json',
|
||||
}),
|
||||
createTsConfig({
|
||||
files: ['extensions/**/*.ts'],
|
||||
project: './extensions/tsconfig.json',
|
||||
}),
|
||||
backendConfig,
|
||||
testConfig,
|
||||
extensionConfig,
|
||||
frontendConfig,
|
||||
]);
|
||||
];
|
||||
@@ -1,69 +0,0 @@
|
||||
// eslint-plugin-bang-space-if/index.js
|
||||
'use strict';
|
||||
|
||||
/** @type {import('eslint').ESLint.Plugin} */
|
||||
export default {
|
||||
meta: {
|
||||
type: 'layout',
|
||||
docs: {
|
||||
description:
|
||||
"Require a space after a top-level '!' in an if(...) condition (e.g., `if ( ! entry )`).",
|
||||
recommended: false,
|
||||
},
|
||||
fixable: 'whitespace',
|
||||
schema: [], // no options
|
||||
},
|
||||
create (context) {
|
||||
const source = context.getSourceCode();
|
||||
|
||||
// Unwrap ParenthesizedExpression layers, if any
|
||||
function unwrapParens (node) {
|
||||
let n = node;
|
||||
// ESLint/ESTree: ParenthesizedExpression is supported by espree
|
||||
while ( n && n.type === 'ParenthesizedExpression' ) {
|
||||
n = n.expression;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
return {
|
||||
IfStatement (ifNode) {
|
||||
const testRaw = ifNode.test;
|
||||
if ( ! testRaw ) return;
|
||||
|
||||
const test = unwrapParens(testRaw);
|
||||
if ( !test || test.type !== 'UnaryExpression' || test.operator !== '!' ) {
|
||||
return; // only top-level `!` expressions
|
||||
}
|
||||
|
||||
// Ignore boolean-cast `!!x` cases to avoid producing `! !x`
|
||||
if ( test.argument && test.argument.type === 'UnaryExpression' && test.argument.operator === '!' ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Grab operator and argument tokens
|
||||
const opToken = source.getFirstToken(test); // should be '!'
|
||||
const argToken = source.getTokenAfter(opToken, { includeComments: false });
|
||||
if ( !opToken || !argToken ) return;
|
||||
|
||||
// Compute current whitespace between '!' and the argument
|
||||
const between = source.text.slice(opToken.range[1], argToken.range[0]);
|
||||
|
||||
// We want exactly one space
|
||||
if ( between === ' ' ) return;
|
||||
|
||||
context.report({
|
||||
node: test,
|
||||
loc: {
|
||||
start: opToken.loc.end,
|
||||
end: argToken.loc.start,
|
||||
},
|
||||
message: "Expected a single space after top-level '!' in if(...) condition.",
|
||||
fix (fixer) {
|
||||
return fixer.replaceTextRange([opToken.range[1], argToken.range[0]], ' ');
|
||||
},
|
||||
});
|
||||
},
|
||||
};
|
||||
},
|
||||
};;;;
|
||||
@@ -1,206 +0,0 @@
|
||||
export default {
|
||||
meta: {
|
||||
type: 'layout',
|
||||
docs: {
|
||||
description: 'enforce spacing inside parentheses for control structures only',
|
||||
category: 'Stylistic Issues',
|
||||
},
|
||||
fixable: 'whitespace',
|
||||
schema: [],
|
||||
messages: {
|
||||
missingSpaceAfterOpen: 'Missing space after opening parenthesis in control structure.',
|
||||
missingSpaceBeforeClose: 'Missing space before closing parenthesis in control structure.',
|
||||
unexpectedSpaceAfterOpen: 'Unexpected space after opening parenthesis in function call.',
|
||||
unexpectedSpaceBeforeClose: 'Unexpected space before closing parenthesis in function call.',
|
||||
},
|
||||
},
|
||||
|
||||
create (context) {
|
||||
const sourceCode = context.getSourceCode();
|
||||
|
||||
function checkControlStructureSpacing (node) {
|
||||
// For control structures, we need to find the parentheses around the condition/test
|
||||
let conditionNode;
|
||||
|
||||
if ( node.type === 'IfStatement' || node.type === 'WhileStatement' || node.type === 'DoWhileStatement' ) {
|
||||
conditionNode = node.test;
|
||||
} else if ( node.type === 'ForStatement' || node.type === 'ForInStatement' || node.type === 'ForOfStatement' ) {
|
||||
// For loops, we want the parentheses around the entire for clause
|
||||
conditionNode = node;
|
||||
} else if ( node.type === 'SwitchStatement' ) {
|
||||
conditionNode = node.discriminant;
|
||||
} else if ( node.type === 'CatchClause' ) {
|
||||
conditionNode = node.param;
|
||||
}
|
||||
|
||||
if ( ! conditionNode ) return;
|
||||
|
||||
// Find the opening paren - it should be right before the condition starts
|
||||
const openParen = sourceCode.getTokenBefore(conditionNode, token => token.value === '(');
|
||||
if ( !openParen || openParen.value !== '(' ) return;
|
||||
|
||||
// Find the closing paren - it should be right after the condition ends
|
||||
const closeParen = sourceCode.getTokenAfter(conditionNode, token => token.value === ')');
|
||||
if ( !closeParen || closeParen.value !== ')' ) return;
|
||||
|
||||
const afterOpen = sourceCode.getTokenAfter(openParen);
|
||||
const beforeClose = sourceCode.getTokenBefore(closeParen);
|
||||
|
||||
{
|
||||
const contentBetweenParens = sourceCode.getText().slice(openParen.range[1], closeParen.range[0]);
|
||||
const isSingleCharVariable = /^\s*[a-zA-Z_$]\s*$/.test(contentBetweenParens);
|
||||
|
||||
// Skip spacing requirements for single character variables
|
||||
if ( isSingleCharVariable ) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Control structures should have spacing
|
||||
if ( afterOpen && openParen.range[1] === afterOpen.range[0] ) {
|
||||
context.report({
|
||||
node,
|
||||
loc: openParen.loc,
|
||||
messageId: 'missingSpaceAfterOpen',
|
||||
fix (fixer) {
|
||||
return fixer.insertTextAfter(openParen, ' ');
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
if ( beforeClose && beforeClose.range[1] === closeParen.range[0] ) {
|
||||
context.report({
|
||||
node,
|
||||
loc: closeParen.loc,
|
||||
messageId: 'missingSpaceBeforeClose',
|
||||
fix (fixer) {
|
||||
return fixer.insertTextBefore(closeParen, ' ');
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function checkForLoopSpacing (node) {
|
||||
// For loops are special - we need to find the opening paren after the 'for' keyword
|
||||
// and the closing paren before the body
|
||||
const forKeyword = sourceCode.getFirstToken(node);
|
||||
if ( !forKeyword || forKeyword.value !== 'for' ) return;
|
||||
|
||||
const openParen = sourceCode.getTokenAfter(forKeyword, token => token.value === '(');
|
||||
if ( ! openParen ) return;
|
||||
|
||||
// The closing paren should be right before the body
|
||||
const closeParen = sourceCode.getTokenBefore(node.body, token => token.value === ')');
|
||||
if ( ! closeParen ) return;
|
||||
|
||||
const afterOpen = sourceCode.getTokenAfter(openParen);
|
||||
const beforeClose = sourceCode.getTokenBefore(closeParen);
|
||||
|
||||
if ( afterOpen && openParen.range[1] === afterOpen.range[0] ) {
|
||||
context.report({
|
||||
node,
|
||||
loc: openParen.loc,
|
||||
messageId: 'missingSpaceAfterOpen',
|
||||
fix (fixer) {
|
||||
return fixer.insertTextAfter(openParen, ' ');
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
if ( beforeClose && beforeClose.range[1] === closeParen.range[0] ) {
|
||||
context.report({
|
||||
node,
|
||||
loc: closeParen.loc,
|
||||
messageId: 'missingSpaceBeforeClose',
|
||||
fix (fixer) {
|
||||
return fixer.insertTextBefore(closeParen, ' ');
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function checkFunctionCallSpacing (node) {
|
||||
// Find the opening parenthesis for this function call
|
||||
const openParen = sourceCode.getFirstToken(node, token => token.value === '(');
|
||||
const closeParen = sourceCode.getLastToken(node, token => token.value === ')');
|
||||
|
||||
if ( !openParen || !closeParen ) return;
|
||||
// Defer multi-line call/new formatting to stylistic paren/argument rules.
|
||||
if ( openParen.loc.start.line !== closeParen.loc.end.line ) return;
|
||||
|
||||
const afterOpen = sourceCode.getTokenAfter(openParen);
|
||||
const beforeClose = sourceCode.getTokenBefore(closeParen);
|
||||
|
||||
// Function calls should NOT have spacing on the same line (multi-line calls are allowed)
|
||||
if ( afterOpen && openParen.range[1] !== afterOpen.range[0] ) {
|
||||
const spaceAfter = sourceCode.getText().slice(openParen.range[1], afterOpen.range[0]);
|
||||
if ( /^\s+$/.test(spaceAfter) && !spaceAfter.includes('\n') ) {
|
||||
context.report({
|
||||
node,
|
||||
loc: openParen.loc,
|
||||
messageId: 'unexpectedSpaceAfterOpen',
|
||||
fix (fixer) {
|
||||
return fixer.removeRange([openParen.range[1], afterOpen.range[0]]);
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if ( beforeClose && beforeClose.range[1] !== closeParen.range[0] ) {
|
||||
const spaceBefore = sourceCode.getText().slice(beforeClose.range[1], closeParen.range[0]);
|
||||
if ( /^\s+$/.test(spaceBefore) && !spaceBefore.includes('\n') ) {
|
||||
context.report({
|
||||
node,
|
||||
loc: closeParen.loc,
|
||||
messageId: 'unexpectedSpaceBeforeClose',
|
||||
fix (fixer) {
|
||||
return fixer.removeRange([beforeClose.range[1], closeParen.range[0]]);
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
// Control structures that should have spacing
|
||||
IfStatement (node) {
|
||||
checkControlStructureSpacing(node);
|
||||
},
|
||||
WhileStatement (node) {
|
||||
checkControlStructureSpacing(node);
|
||||
},
|
||||
DoWhileStatement (node) {
|
||||
checkControlStructureSpacing(node);
|
||||
},
|
||||
SwitchStatement (node) {
|
||||
checkControlStructureSpacing(node);
|
||||
},
|
||||
CatchClause (node) {
|
||||
if ( node.param ) {
|
||||
checkControlStructureSpacing(node);
|
||||
}
|
||||
},
|
||||
|
||||
// For loops need special handling
|
||||
ForStatement (node) {
|
||||
checkForLoopSpacing(node);
|
||||
},
|
||||
ForInStatement (node) {
|
||||
checkForLoopSpacing(node);
|
||||
},
|
||||
ForOfStatement (node) {
|
||||
checkForLoopSpacing(node);
|
||||
},
|
||||
|
||||
// Function calls that should NOT have spacing
|
||||
CallExpression (node) {
|
||||
checkFunctionCallSpacing(node);
|
||||
},
|
||||
NewExpression (node) {
|
||||
if ( node.arguments.length > 0 || sourceCode.getLastToken(node).value === ')' ) {
|
||||
checkFunctionCallSpacing(node);
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
};
|
||||
@@ -1,86 +0,0 @@
|
||||
import tseslintPlugin from '@typescript-eslint/eslint-plugin';
|
||||
import { defineConfig } from 'eslint/config';
|
||||
import globals from 'globals';
|
||||
|
||||
const backendLanguageOptions = {
|
||||
globals: {
|
||||
// Current, intentionally supported globals
|
||||
extension: 'readonly',
|
||||
config: 'readonly',
|
||||
global_config: 'readonly',
|
||||
|
||||
// Older not entirely ideal globals
|
||||
use: 'readonly', // <-- older import mechanism
|
||||
def: 'readonly', // <-- older import mechanism
|
||||
kv: 'readonly', // <-- should be passed/imported
|
||||
ll: 'readonly', // <-- questionable
|
||||
|
||||
// Language/environment globals
|
||||
...globals.node,
|
||||
},
|
||||
};
|
||||
|
||||
const mandatoryRules = {
|
||||
'no-undef': 'error',
|
||||
'no-use-before-define': ['error', {
|
||||
'functions': false,
|
||||
}],
|
||||
'no-invalid-this': 'warn',
|
||||
};
|
||||
|
||||
export default defineConfig([
|
||||
{
|
||||
ignores: [
|
||||
'src/backend/src/modules/apps/AppInformationService.js', // TEMPORARY - SHOULD BE FIXED!
|
||||
'src/backend/src/services/worker/WorkerService.js', // TEMPORARY - SHOULD BE FIXED!
|
||||
'src/backend/src/public/**/*', // We may be able to delete this! I don't think it's used
|
||||
|
||||
// These files run in the worker environment, so these rules don't apply
|
||||
'src/backend/src/services/worker/dist/**/*.{js,cjs,mjs}',
|
||||
'src/backend/src/services/worker/src/**/*.{js,cjs,mjs}',
|
||||
'src/backend/src/services/worker/template/puter-portable.js',
|
||||
],
|
||||
},
|
||||
{
|
||||
plugins: {
|
||||
'@typescript-eslint': tseslintPlugin,
|
||||
},
|
||||
},
|
||||
{
|
||||
files: [
|
||||
'src/backend/**/*.{js,mjc,cjs}',
|
||||
'extensions/**/*.{js,mjc,cjs}',
|
||||
],
|
||||
ignores: [
|
||||
'src/backend/src/services/database/sqlite_setup/**/*.js',
|
||||
],
|
||||
rules: mandatoryRules,
|
||||
languageOptions: {
|
||||
...backendLanguageOptions,
|
||||
},
|
||||
},
|
||||
{
|
||||
files: [
|
||||
'src/backend/src/services/database/sqlite_setup/**/*.js',
|
||||
],
|
||||
rules: mandatoryRules,
|
||||
languageOptions: {
|
||||
globals: {
|
||||
read: 'readonly',
|
||||
write: 'readonly',
|
||||
log: 'readonly',
|
||||
...globals.node,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
files: [
|
||||
'src/backend/**/*.{ts}',
|
||||
'extensions/**/*.{ts}',
|
||||
],
|
||||
rules: mandatoryRules,
|
||||
languageOptions: {
|
||||
...backendLanguageOptions,
|
||||
},
|
||||
},
|
||||
]);
|
||||
@@ -1,37 +0,0 @@
|
||||
import ruleComposer from 'eslint-rule-composer';
|
||||
|
||||
// Adjust this require to match the package you use for the rule.
|
||||
// For eslint-stylistic v2+ the package is "@stylistic/eslint-plugin"
|
||||
import stylistic from '@stylistic/eslint-plugin';
|
||||
const baseRule = stylistic.rules['space-unary-ops'];
|
||||
|
||||
// unwrap nested parentheses
|
||||
function unwrapParens (node) {
|
||||
let n = node;
|
||||
while ( n && n.type === 'ParenthesizedExpression' ) n = n.expression;
|
||||
return n;
|
||||
}
|
||||
|
||||
function isTopLevelBangInIfTest (node) {
|
||||
if ( !node || node.type !== 'UnaryExpression' || node.operator !== '!' ) return false;
|
||||
|
||||
// Walk up through ancestors manually using .parent (safe in ESLint)
|
||||
let current = node;
|
||||
let parent = current.parent;
|
||||
|
||||
// Skip ParenthesizedExpression layers
|
||||
while ( parent && parent.type === 'ParenthesizedExpression' ) {
|
||||
current = parent;
|
||||
parent = parent.parent;
|
||||
}
|
||||
|
||||
return parent && parent.type === 'IfStatement' && unwrapParens(parent.test) === node;
|
||||
}
|
||||
|
||||
// Filter out ONLY the reports for top-level ! inside if(...) condition
|
||||
export default ruleComposer.filterReports(baseRule, (problem, context) => {
|
||||
const { node } = problem;
|
||||
// If this particular report is about a top-level ! in an if(...) test,
|
||||
// suppress it. Otherwise, keep the original report.
|
||||
return !isTopLevelBangInIfTest(node, context);
|
||||
});
|
||||
Loaded 100 of 2173 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user