{"id":33310727,"url":"https://github.com/mathieu-benoit/deploy-backstage-with-score","last_synced_at":"2026-03-12T23:01:28.088Z","repository":{"id":267308588,"uuid":"900845811","full_name":"mathieu-benoit/deploy-backstage-with-score","owner":"mathieu-benoit","description":"Deploy Backstage with Score via score-compose and score-k8s","archived":false,"fork":false,"pushed_at":"2026-01-29T03:49:08.000Z","size":9664,"stargazers_count":4,"open_issues_count":9,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-29T20:12:46.603Z","etag":null,"topics":["backstage","docker","docker-compose","kubernetes","score"],"latest_commit_sha":null,"homepage":"https://medium.com/@mabenoit/deploy-backstage-with-score-45bb2d7c2d90","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mathieu-benoit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-12-09T15:20:58.000Z","updated_at":"2026-01-29T05:24:20.000Z","dependencies_parsed_at":"2025-06-04T22:03:52.109Z","dependency_job_id":"de52cb39-d5dd-4f0a-8241-64556b0b30a7","html_url":"https://github.com/mathieu-benoit/deploy-backstage-with-score","commit_stats":null,"previous_names":["mathieu-benoit/deploy-backstage-with-score"],"tags_count":52,"template":false,"template_full_name":null,"purl":"pkg:github/mathieu-benoit/deploy-backstage-with-score","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathieu-benoit%2Fdeploy-backstage-with-score","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathieu-benoit%2Fdeploy-backstage-with-score/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathieu-benoit%2Fdeploy-backstage-with-score/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathieu-benoit%2Fdeploy-backstage-with-score/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mathieu-benoit","download_url":"https://codeload.github.com/mathieu-benoit/deploy-backstage-with-score/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathieu-benoit%2Fdeploy-backstage-with-score/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29137754,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T23:02:30.544Z","status":"ssl_error","status_checked_at":"2026-02-05T23:02:24.945Z","response_time":65,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["backstage","docker","docker-compose","kubernetes","score"],"created_at":"2025-11-19T04:00:55.922Z","updated_at":"2026-03-12T23:01:28.081Z","avatar_url":"https://github.com/mathieu-benoit.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"This [Backstage](https://backstage.io) application is used as part of these blog posts:\n- [Deploy Backstage with Score, from local to Kubernetes](https://medium.com/@mabenoit/deploy-backstage-with-score-45bb2d7c2d90).\n- [Docker Hardened Images (DHI) for your Backstage app: go distroless and get more!](https://itnext.io/go-distroless-with-your-backstage-app-with-docker-hardened-images-dhi-b61539ffbf00)\n\nYou can deploy this Backstage application in different ways:\n- [With `yarn`](#with-yarn)\n- [With `docker`/`podman`](#with-dockerpodman)\n- [With `score-compose`](#with-score-compose)\n- [More advanced](#more-advanced)\n\n## With `yarn`\n\nTo start the app, run:\n\n```sh\nyarn install\nyarn start\n```\n\nThen navigate to http://localhost:3000.\n\n## With `docker`/`podman`\n\n### By building new container images\n\n```sh\ndocker image build -t backstage-backend:local .\ndocker run -d \\\n    -u 65532 \\\n    --cap-drop=ALL \\\n    --read-only \\\n    --tmpfs /tmp \\\n    -e APP_CONFIG_backend_database_client='better-sqlite3' \\\n    -e APP_CONFIG_backend_database_connection=':memory:' \\\n    -p 7007:7007 \\\n    backstage-backend:local\n\ndocker image build -f Dockerfile.frontend -t backstage-frontend:local .\ndocker run -d \\\n    -u 65532 \\\n    --cap-drop=ALL \\\n    -p 3000:8080 \\\n    backstage-frontend:local\n```\n\n### By using the pre-built container image\n\n```sh\ndocker run -d \\\n    -u 65532 \\\n    --cap-drop=ALL \\\n    --read-only \\\n    --tmpfs /tmp \\\n    -e APP_CONFIG_backend_database_client='better-sqlite3' \\\n    -e APP_CONFIG_backend_database_connection=':memory:' \\\n    -p 7007:7007 \\\n    ghcr.io/mathieu-benoit/backstage-backend:latest\n\ndocker run -d \\\n    -u 65532 \\\n    --cap-drop=ALL \\\n    -p 3000:8080 \\\n    ghcr.io/mathieu-benoit/backstage-frontend:latest\n```\n\nThen navigate to http://localhost:3000.\n\n## With `score-compose`\n\n```bash\nscore-compose init --no-sample \t\\\n    --patch-templates https://raw.githubusercontent.com/score-spec/community-patchers/refs/heads/main/score-compose/unprivileged.tpl \\\n    --provisioners https://raw.githubusercontent.com/score-spec/community-provisioners/refs/heads/main/service/score-compose/10-service.provisioners.yaml\n```\n\n### By building a new container image\n\n```bash\nscore-compose generate score-backend.light.yaml \\\n    --build 'backend={\"context\":\".\",\"tags\":[\"backstage-backend:local\"]}'\n\nscore-compose generate score-frontend.light.yaml \\\n    --build 'frontend={\"context\":\".\",\"dockerfile\":\"Dockerfile.frontend\",\"tags\":[\"backstage-frontend:local\"]}' \\\n    --publish 7007:backend:7007 \\\n    --publish 3000:frontend:8080\n\nsudo yq e -i '.services.frontend-frontend.read_only = false' compose.yaml\n```\n\n```bash\ndocker compose up --build -d\n```\n\n### By using the pre-built container image\n\n```bash\nscore-compose generate score-backend.light.yaml \\\n    --image ghcr.io/mathieu-benoit/backstage-backend:latest\n\nscore-compose generate score-frontend.light.yaml \\\n    --image ghcr.io/mathieu-benoit/backstage-frontend:latest \\\n    --publish 7007:backend:7007 \\\n    --publish 3000:frontend:8080\n\nsudo yq e -i '.services.frontend-frontend.read_only = false' compose.yaml\n```\n\n```bash\ndocker compose up -d\n```\n\nThen navigate to http://localhost:3000.\n\n## More advanced with `score-compose` and `score-k8s`\n\nFor more advanced setup, follow this blog post: [Deploy Backstage with Score, from local to Kubernetes](https://medium.com/@mabenoit/deploy-backstage-with-score-45bb2d7c2d90).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmathieu-benoit%2Fdeploy-backstage-with-score","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmathieu-benoit%2Fdeploy-backstage-with-score","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmathieu-benoit%2Fdeploy-backstage-with-score/lists"}