{"id":19690515,"url":"https://github.com/edgetx/cloudbuild","last_synced_at":"2025-06-13T01:31:47.951Z","repository":{"id":42484796,"uuid":"418159104","full_name":"EdgeTX/cloudbuild","owner":"EdgeTX","description":"Building EdgeTx in the cloud","archived":false,"fork":false,"pushed_at":"2025-06-03T09:21:22.000Z","size":728,"stargazers_count":10,"open_issues_count":5,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-06-12T01:33:56.125Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EdgeTX.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,"zenodo":null},"funding":{"open_collective":"edgetx"}},"created_at":"2021-10-17T14:33:59.000Z","updated_at":"2025-05-25T02:47:49.000Z","dependencies_parsed_at":"2023-10-24T07:29:37.201Z","dependency_job_id":"ec19e640-6074-4d3f-9fdd-ee42f9318aab","html_url":"https://github.com/EdgeTX/cloudbuild","commit_stats":{"total_commits":100,"total_committers":9,"mean_commits":11.11111111111111,"dds":0.69,"last_synced_commit":"f7ae1ecab3f87ded0b0807ede7adebc7ccc8423d"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/EdgeTX/cloudbuild","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdgeTX%2Fcloudbuild","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdgeTX%2Fcloudbuild/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdgeTX%2Fcloudbuild/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdgeTX%2Fcloudbuild/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EdgeTX","download_url":"https://codeload.github.com/EdgeTX/cloudbuild/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EdgeTX%2Fcloudbuild/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259561729,"owners_count":22876873,"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":[],"created_at":"2024-11-11T19:05:47.831Z","updated_at":"2025-06-13T01:31:47.911Z","avatar_url":"https://github.com/EdgeTX.png","language":"Go","funding_links":["https://opencollective.com/edgetx"],"categories":[],"sub_categories":[],"readme":"# EdgeTX CloudBuild\n\nEdgeTX CloudBuild is an open-source EdgeTX firmware build service.\n\nIt is not meant to be run directly connected to the internet, but instead be behind a\nproxy that will only allow the following endpoint prefixes toward the public interface:\n- `/api/*`: public and authenticated endpoints.\n\nIf you are using the local file system storage (not recommended in production), you will need\nto allow the download URL as well:\n- `/firmwares/*`\n\nThe administrative UI is accessible from the root endpoint `/`. The static content endpoints are\n**not** authenticated.\n\n## Public API\n\nThe public API is documented [here](doc/PublicAPI.md).\n\n\n## Build and run locally\n\nIt is possible to use this tool from command line as well.\n\n### Prerequisites\n\nLinux operating system with:\n- `docker` (including `docker-compose` plugin).\n- `git` (required only to checkout this repository).\n\n### Setup\n\nFirst clone this repository:\n\n``` shell\ngit clone https://github.com/EdgeTX/cloudbuild.git\n```\n\nThen you will need to configure some things:\n\n``` shell\n# Create config from template\ncp api.env.example api.env\n```\n\nFor a quick test, all you need to edit is external URL (as it will be seen by web client)\nand the directory in which the firmwares are stored (which should be shared among all \ncontainers as a volume).\n\n```\nEBUILD_STORAGE_PATH=/home/rootless/src/static/firmwares\nEBUILD_DOWNLOAD_URL=http://localhost:3000/firmwares\n```\n\n### Build container image\n\nThe runtime container image can be built with:\n\n``` shell\ndocker compose build api\n```\n\n### Run the containers\n\n#### On the very first start, or after a database schema change\n\nStart the database first:\n\n``` shell\ndocker compose up -d db\n```\n\nThen start the API:\n\n``` shell\ndocker compose up -d api\n```\n\nAnd setup the database schema with:\n\n``` shell\ndocker exec -it cloudbuild-api-1 ./ebuild db migrate\n```\n\nOnce the database is setup, proceed to the next step to start the workers as well.\n\n#### After the first time\n\nThen the rest of the stack can be run all together:\n\n``` shell\ndocker compose up -d --scale worker=2\n```\n\nYou can increase the number of workers if you want to build more firmwares in parallel.\n\n\n## Using S3 compatible storage\n\nTo offload serving the firmware files to a S3 compatible storage, a few configuration\nparameters need to be set additionally in the environment file (`api.env`):\n\n```\n# Common settings for all provider\nEBUILD_STORAGE_TYPE: S3\nEBUILD_S3_ACCESS_KEY: myAccessKey\nEBUILD_S3_SECRET_KEY: super-secret-key\n\n# These settings depend on the provider:\nEBUILD_S3_URL: https://s3.super-provider.com\nEBUILD_S3_URL_IMMUTABLE: true\n\n# Public download URL prefix (object key is appended to create download link)\nEBUILD_DOWNLOAD_URL: https://bucket.s3.super-provider.com\n```\n\n## Generating a token to access the UI\n\nTo be able to use the administrative UI, a token must be generated for every user:\n\n``` shell\ndocker exec -it cloudbuild-api-1 ./ebuild auth create [some name]\nAccessKey: [some access key]\nSecretKey: [very secret key]\n```\n\nThe token can be later removed:\n\n``` shell\ndocker exec -it cloudbuild-api-1 ./ebuild auth remove [Access Key]\ntoken [Access Key] removed\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedgetx%2Fcloudbuild","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedgetx%2Fcloudbuild","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedgetx%2Fcloudbuild/lists"}