{"id":13509600,"url":"https://github.com/atlassian/nucleus","last_synced_at":"2025-03-30T13:32:33.168Z","repository":{"id":39737619,"uuid":"111344666","full_name":"atlassian/nucleus","owner":"atlassian","description":"A configurable and versatile update server for all your Electron apps","archived":false,"fork":false,"pushed_at":"2023-12-15T08:25:34.000Z","size":954,"stargazers_count":390,"open_issues_count":73,"forks_count":92,"subscribers_count":36,"default_branch":"master","last_synced_at":"2024-08-02T02:14:21.032Z","etag":null,"topics":["electron","electron-forge","s3","update-server"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atlassian.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-11-20T00:44:33.000Z","updated_at":"2024-07-10T07:43:23.000Z","dependencies_parsed_at":"2023-12-15T09:31:22.983Z","dependency_job_id":"8a0d8e45-c255-4b7e-8c31-0c2c8cfd64e7","html_url":"https://github.com/atlassian/nucleus","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atlassian%2Fnucleus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atlassian%2Fnucleus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atlassian%2Fnucleus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atlassian%2Fnucleus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atlassian","download_url":"https://codeload.github.com/atlassian/nucleus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222552938,"owners_count":17002160,"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":["electron","electron-forge","s3","update-server"],"created_at":"2024-08-01T02:01:10.138Z","updated_at":"2024-11-01T09:31:49.824Z","avatar_url":"https://github.com/atlassian.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# Nucleus Server\n\n[![Build Status](https://travis-ci.org/atlassian/nucleus.svg?branch=enable-travis)](https://travis-ci.org/atlassian/nucleus) [![npm](https://img.shields.io/npm/v/nucleus-server.svg)](https://www.npmjs.com/package/nucleus-server) ![status](https://img.shields.io/badge/Status-%20Ready%20for%20Awesome-red.svg)\n\nA configurable and versatile update server for all your Electron apps\n\n## Features\n\n* Multiple applications\n* Multiple channels for each application\n* Companion publisher for [electron-forge](https://github.com/electron-userland/electron-forge) to greatly simplify release publishing\n* Backed by a static file store so minimal server costs\n* One command to run so insanely simple to set up\n* [Staged Rollouts](docs/Staged%20Rollouts.md)\n  * macOS\n  * Windows\n* [Latest Downloads](docs/Latest%20Releases.md) - Static URL's for downloading the latest version of your application\n* Platform Support:\n  * macOS\n  * Windows\n  * Linux - RedHat\n  * Linux - Debian\n\n## Electron Version Requirements\n\nPlease note that using Nucleus requires that you use Electron `\u003e=2.0.0`.\n\n## Setup\n\n### Docker\n\nYou'll need to set up your own docker image using a Dockefile like below.\n\n```docker\nFROM atlassian/nucleus\n\nCOPY config.js /opt/service/config.js\n```\n\nThen running your built docker image will run nucleus on port 8080.\n\n### Manual\n\n```bash\ngit clone https://github.com/atlassian/nucleus.git nucleus-server\ncd nucleus-server\ncp config.template.js config.js\nyarn\nyarn dev\n```\n\nThis will launch Nucleus running on your local machine with a local\nfile store and a SQLite database.\n\n## Configuration\n\nAll the config options are thoroughly documented and explained in the\n[config.template.js](config.template.js) file in this repository.\n\n## Uploading Releases\n\nRelease uploading is explained inside Nucleus itself, for more advanced\ninformation check out the [Uploading Docs](docs/Uploading.md).\n\n## More Information\n\nPlease see the following documents for more information on Nucleus and how it works.\n\n* [Internal Endpoints](docs/Endpoints.md)\n* [Uploading Releases](docs/Uploading.md)\n* [Architecture](docs/Architecture.md)\n* [Versioned Public API](docs/API.md)\n* [Staged Rollouts](docs/Staged%20Rollouts.md)\n* [Latest Releases](docs/Latest%20Releases.md)\n\n## FAQ\n\n### Why does this use a static file store, why not use a traditional update server?\n\n$$$, static file stores quite simply cost less to run than arrays of update servers\n\n### Can I use CloudFront to speed up my downloads?\n\nYes, check out the CloudFront section of the S3 config inside [config.template.js](config.template.js).\n\n### How do I switch to this from Update Server X?\n\nSwitching update servers in an Electron app is quite simple\n\n1. Modify your autoUpdater code to point to this server (follow the instructions\non your app page inside Nucleus)\n2. Release a new update for your application on your existing update server with this change\n3. Release all future updates on Nucleus :)\n\n### Is this really awesome?\n\nPretty sure it is :D\n\n### How do I set this up in a production environment?\n\nYou can use the published version of this module `nucleus-server` which has\nan exported CLI command (`nucleus`).  You then run the command with the first\nargument being a path to your config file.  E.g.\n\n```bash\nNODE_ENV=production nucleus path/to/config.js\n```\n\nPlease ensure you add redis session config and a proper (not local) authentication\nmethod when running in a production environment.\n\nTo enable logging you need to set `DEBUG=nucleus*`.\n\n## System Requirements\n\n* Node \u003e= 8\n* Yarn\n* Linux\n  * `createrepo`\n  * `rpmsign`\n  * `dpkg-scanpackages`\n  * `dpkg-scansources`\n  * `gpg`\n  * `apt-ftparchive`\n* macOS / Windows\n  * `docker`\n  * `gpg`\n\n## Contributors\n\nPull requests, issues and comments welcome. For pull requests:\n\n* Add tests for new features and bug fixes\n* Follow the existing style\n* Separate unrelated changes into multiple pull requests\n\nSee the existing issues for things to start contributing.\n\nFor bigger changes, make sure you start a discussion first by creating\nan issue and explaining the intended change.\n\nAtlassian requires contributors to sign a Contributor License Agreement,\nknown as a CLA. This serves as a record stating that the contributor is\nentitled to contribute the code/documentation/translation to the project\nand is willing to have it used in distributions and derivative works\n(or is willing to transfer ownership).\n\nPrior to accepting your contributions we ask that you please follow the appropriate\nlink below to digitally sign the CLA. The Corporate CLA is for those who are\ncontributing as a member of an organization and the individual CLA is for\nthose contributing as an individual.\n\n* [CLA for corporate contributors](https://na2.docusign.net/Member/PowerFormSigning.aspx?PowerFormId=e1c17c66-ca4d-4aab-a953-2c231af4a20b)\n* [CLA for individuals](https://na2.docusign.net/Member/PowerFormSigning.aspx?PowerFormId=3f94fbdc-2fbe-46ac-b14c-5d152700ae5d)\n\n## Team\n\n| [![Samuel Attard](https://s.gravatar.com/avatar/1576c987b53868acf73d6ccb08110a78?s=144)](https://samuelattard.com) |\n|---|\n| [Samuel Attard](https://samuelattard.com) |\n\n## License\n\nApache 2.0 © Atlassian Pty Ltd\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatlassian%2Fnucleus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatlassian%2Fnucleus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatlassian%2Fnucleus/lists"}