{"id":16271882,"url":"https://github.com/ozgrozer/jaydon","last_synced_at":"2025-07-26T21:13:58.107Z","repository":{"id":55864803,"uuid":"207021721","full_name":"ozgrozer/jaydon","owner":"ozgrozer","description":"Nginx control panel","archived":false,"fork":false,"pushed_at":"2024-10-03T00:05:26.000Z","size":805,"stargazers_count":19,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-12-29T13:45:15.522Z","etag":null,"topics":["control-panel","nginx"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ozgrozer.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-09-07T20:22:13.000Z","updated_at":"2024-10-03T00:05:29.000Z","dependencies_parsed_at":"2024-08-12T22:34:17.233Z","dependency_job_id":"6e7aa045-bc82-452f-8d69-ecf67fa8f8e6","html_url":"https://github.com/ozgrozer/jaydon","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozgrozer%2Fjaydon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozgrozer%2Fjaydon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozgrozer%2Fjaydon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ozgrozer%2Fjaydon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ozgrozer","download_url":"https://codeload.github.com/ozgrozer/jaydon/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232121548,"owners_count":18475572,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["control-panel","nginx"],"created_at":"2024-10-10T18:15:05.746Z","updated_at":"2025-01-01T20:17:49.857Z","avatar_url":"https://github.com/ozgrozer.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jaydon\n\n[![tag](https://img.shields.io/github/tag/ozgrozer/jaydon.svg?style=flat-square)](https://github.com/ozgrozer/jaydon/tags)\n[![license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://github.com/ozgrozer/jaydon/blob/master/license)\n\nNginx Control Panel\n\n\u003e This is an experimental control panel written for a niche reason. Use at your own risk.\n\n## Quick Installation\n\nUbuntu v24\n\n```\ncurl -L https://raw.githubusercontent.com/ozgrozer/jaydon/master/install24.sh | bash\n```\n\nUbuntu v22\n\n```\ncurl -L https://raw.githubusercontent.com/ozgrozer/jaydon/master/install22.sh | bash\n```\n\n## Before Installation\n\n\u003e Unlike other control panels with Jaydon you control the versions of your softwares such as Nginx, Node.js etc.\n\nBefore you install Jaydon you need:\n\n- [MongoDB](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/)\n- [Certbot](https://certbot.eff.org/lets-encrypt/ubuntubionic-nginx)\n- [Nginx](https://www.nginx.com/resources/wiki/start/topics/tutorials/install/)\n- [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)\n- [Node.js](https://nodejs.org/en/download/package-manager/) \u0026 [NPM](https://www.npmjs.com/get-npm)\n- [Yarn](https://www.npmjs.com/package/yarn)\n- [PM2](https://www.npmjs.com/package/pm2)\n\nUbuntu v24\n\n```\n# Install essential tools\nsudo apt-get update\nsudo apt-get install build-essential -y\n\n# Install MongoDB\nsudo apt-get install gnupg curl -y\ncurl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-8.0.gpg\necho \"deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse\" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list\nsudo apt update\nsudo apt install mongodb-org -y\nsudo systemctl start mongod\nsudo systemctl enable mongod\n\n# Install Certbot\nsudo snap install core\nsudo snap refresh core\nsudo snap install --classic certbot\nsudo ln -s /snap/bin/certbot /usr/bin/certbot\n\n# Install Nginx\nsudo apt install nginx -y\n\n# Install Git\nsudo apt install git -y\n\n# Install Node.js\ncurl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -\nsudo apt install nodejs -y\n\n# Install Yarn\nsudo npm i -g yarn\n\n# Install PM2\nsudo npm i -g pm2\n```\n\nUbuntu v22\n\n```\n# Install essential tools\nsudo apt-get update\nsudo apt-get install build-essential -y\n\n# Install MongoDB\ncurl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | sudo gpg --dearmor -o /usr/share/keyrings/mongodb-archive-keyring.gpg\necho \"deb [signed-by=/usr/share/keyrings/mongodb-archive-keyring.gpg arch=amd64,arm64] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse\" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list\nsudo apt update\nsudo apt install mongodb-org -y\nsudo systemctl start mongod\nsudo systemctl enable mongod\n\n# Install Certbot\nsudo snap install core\nsudo snap refresh core\nsudo snap install --classic certbot -y\nsudo ln -s /snap/bin/certbot /usr/bin/certbot\n\n# Install Nginx\nsudo apt install nginx -y\n\n# Install Git\nsudo apt install git -y\n\n# Install Node.js\ncurl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -\nsudo apt install nodejs -y\n\n# Install Yarn\nsudo npm i -g yarn\n\n# Install PM2\nsudo npm i -g pm2\n```\n\n## Installation\n\nIf you have all the dependencies above now you can install Jaydon.\n\n```\n# Clone Git repository\ngit clone https://github.com/ozgrozer/jaydon.git \u0026\u0026 cd jaydon\n\n# Install dependencies\nyarn install\n\n# Build React app\nyarn build\n\n# Create necessary database tables\nyarn run first-run\n\n# Start server with PM2\npm2 start ./src/backend/server.js --name jaydon\npm2 startup\npm2 save\n\n# Open your browser and go to\nhttp://your-ip:1148\n```\n\n## Update\n\nMake sure update.sh is executable.\n\n```\nchmod +x update.sh\n```\n\nAnd just run it.\n\n```\n./update.sh\n```\n\n## API\n\nJaydon API built on [REST](https://en.wikipedia.org/wiki/Representational_state_transfer). It accepts requests as JSON and returns responses as JSON too.\n\nBase URL.\n\n```\nhttp://your-ip:1148/api/v1\n```\n\nExample POST request.\n\n```json\n{\n  \"meta\": {\n    \"apiKey\": \"YOUR_API_KEY\",\n    \"category\": \"domain|cronJob\",\n    \"event\": \"create|read|update|delete\"\n  },\n  \"data\": {\n  }\n}\n```\n\n\"data\" object.\n\n```json\n// create domain\n\"data\": {\n  \"domain\": \"example.com\",\n  \"gitSupport\": true,\n  \"sslSupport\": true,\n  \"nginxConf\": \"configuration\"\n}\n\n// read a domain\n\"data\": {\n  \"id\": \"domain id\"\n}\n// read domains\n\"data\": {\n}\n\n// update domain\n\"data\": {\n  \"id\": \"domain id\",\n  \"domain\": \"example.com\",\n  \"gitSupport\": false,\n  \"sslSupport\": false,\n  \"nginxConf\": \"configuration\"\n}\n\n// delete domain\n\"data\": {\n  \"id\": \"domain id\"\n}\n\n---\n\n// create cron job\n\"data\": {\n  \"command\": \"node script.js\",\n  \"schedule\": \"* * * * *\"\n}\n\n// read a cron job\n\"data\": {\n  \"id\": \"cron job id\"\n}\n// read cron jobs\n\"data\": {\n}\n\n// update cron job\n\"data\": {\n  \"id\": \"cron job id\",\n  \"command\": \"node script.js\",\n  \"schedule\": \"* * * * *\"\n}\n\n// delete cron job\n\"data\": {\n  \"id\": \"cron job id\"\n}\n```\n\nExample 1: Create a domain with cURL.\n\n```bash\ncurl http://your-ip:1148/api/v1 \\\n-X POST \\\n-H \"Content-Type: application/json\" \\\n--data-binary @- \u003c\u003c EOF\n{\n  \"meta\": { \"apiKey\": \"YOUR_API_KEY\", \"category\": \"domain\", \"event\": \"create\" },\n  \"data\": { \"domain\": \"test.com\", \"gitSupport\": false }\n}\nEOF\n# {\"success\":true}\n# {\"success\":false,\"error\":\"error\"}\n```\n\nExample 2: Update a cron job with Axios.\n\n```js\nconst axios = require('axios')\n\nconst postUrl = 'http://your-ip:1148/api/v1'\nconst postData = {\n  meta: { apiKey: 'YOUR_API_KEY', category: 'cronJob', event: 'update' },\n  data: { id: 'CRON_JOB_ID', command: '/usr/bin/node ~/script.js', schedule: '0 * * * *' }\n}\naxios\n  .post(postUrl, postData)\n  .then(res =\u003e {\n    console.log(res.data)\n    // {\"success\":true}\n    // {\"success\":false,\"error\":\"error\"}\n  })\n  .catch(err =\u003e {\n    console.log(err)\n  })\n```\n\n## Preview\n\n\u003cimg src=\"./preview/domains.jpg\" alt=\"\" width=\"600\" /\u003e\n\u003cimg src=\"./preview/edit-domain.jpg\" alt=\"\" width=\"600\" /\u003e\n\n## Todo\n\n- [ ] Domains\n- [ ] Git\n- [ ] SSL\n- [ ] Cron Jobs\n- [ ] DNS\n- [ ] Logs\n- [ ] Monitor\n- [ ] API\n\n## Contribution\n\nFeel free to contribute. Open a new [issue](https://github.com/ozgrozer/jaydon/issues), or make a [pull request](https://github.com/ozgrozer/jaydon/pulls).\n\n## License\n\n[MIT](license)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fozgrozer%2Fjaydon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fozgrozer%2Fjaydon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fozgrozer%2Fjaydon/lists"}