{"id":29193879,"url":"https://github.com/transfusion/deployapp-platform","last_synced_at":"2026-02-07T09:31:58.084Z","repository":{"id":150965928,"uuid":"601186467","full_name":"Transfusion/deployapp-platform","owner":"Transfusion","description":"All DeployApp services started from a single repository with docker-compose.","archived":false,"fork":false,"pushed_at":"2023-03-28T15:15:08.000Z","size":27,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2025-08-02T23:23:46.091Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://deploy.plan.ovh","language":null,"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/Transfusion.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}},"created_at":"2023-02-13T14:48:16.000Z","updated_at":"2023-03-28T15:08:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"521e9e22-d0fb-4d88-906a-33ba116c0829","html_url":"https://github.com/Transfusion/deployapp-platform","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Transfusion/deployapp-platform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Transfusion%2Fdeployapp-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Transfusion%2Fdeployapp-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Transfusion%2Fdeployapp-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Transfusion%2Fdeployapp-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Transfusion","download_url":"https://codeload.github.com/Transfusion/deployapp-platform/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Transfusion%2Fdeployapp-platform/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29191401,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T07:37:03.739Z","status":"ssl_error","status_checked_at":"2026-02-07T07:37:03.029Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":[],"created_at":"2025-07-02T03:30:23.489Z","updated_at":"2026-02-07T09:31:58.068Z","avatar_url":"https://github.com/Transfusion.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# [DeployApp](https://deploy.plan.ovh)\nYet another `.ipa` / `.apk` beta app distribution platform - that uploads to and serves from your own cloud storage. Installs are quicker and apps do not expire.\n\n\u003cp align=\"middle\"\u003e\n  \u003ca href=\"https://user-images.githubusercontent.com/3119646/225541054-6da31bf5-b689-47a2-a21c-f68d3ebe8ced.png\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://user-images.githubusercontent.com/3119646/225541054-6da31bf5-b689-47a2-a21c-f68d3ebe8ced.png\" width=\"40%\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://user-images.githubusercontent.com/3119646/225541297-be81cea5-99e0-4311-b343-8e55b5a48e7e.png\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://user-images.githubusercontent.com/3119646/225541297-be81cea5-99e0-4311-b343-8e55b5a48e7e.png\" width=\"59%\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca target=\"_blank\" href=\"https://deploy.plan.ovh\"\u003eLive site!\u003c/a\u003e\n  \u003cspan\u003e • \u003c/span\u003e\n  \u003ca href=\"#architecture\"\u003eArchitecture Diagram\u003c/a\u003e\n  \u003cspan\u003e • \u003c/span\u003e\n  \u003ca href=\"https://github.com/Transfusion/deployapp-backend/\"\u003eMain Backend Service\u003c/a\u003e\n  \u003cspan\u003e • \u003c/span\u003e\n  \u003ca href=\"https://github.com/Transfusion/deployapp-storage-service\"\u003eStorage Service\u003c/a\u003e\n  \u003cspan\u003e • \u003c/span\u003e\n  \u003ca href=\"https://github.com/Transfusion/deployapp-frontend\"\u003eFrontend\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n## Running (Development)\n1. Install [`docker-sync`](http://docker-sync.io/) and [`mkcert`](https://github.com/FiloSottile/mkcert)\n2. Clone this repository\n3. Edit [`docker-compose-dev.yml`](https://github.com/Transfusion/deployapp-platform/blob/dev/docker-compose-dev.yml)\n- Create a [GitHub Personal access token](https://github.com/settings/tokens/) with the `read:packages` permission.\n- Set `GPR_USERNAME` to your own GH username and `GPR_PAT` accordingly.\n4. Point a domain to your machine for the OAuth2 social login and iOS OTA install features to work. The `.local` mDNS special-use domain name works too.\n- Generate a TLS cert for your domain. Self-signed works too. Do not change `deployapp.local.key` and `deployapp.local.crt`; they are used in `deployapp-web-config/nginx.conf`.\n\n      cd deployapp-web-config/certs \u0026\u0026 mkcert -cert-file deployapp.local.crt -key-file deployapp.local.key CHANGE_THIS.local\n\n5. Edit `deployapp-backend-config/application-dev.yml`.\n- Set `spring.mail.*`. Used during user registration and password reset.\n- Set `security.oauth2.client.registration.*`. Used during OAuth2 social login.\n  - Create the respective OAuth applications, e.g. a Google Cloud Platform project and a new OAuth 2.0 Client ID.\n  - Google does not allow `.local` as a valid TLD in its redirect URLs. https://redirectmeto.com is a workaround.\n  - E.g. `https://redirectmeto.com/https://CHANGE_THIS.local:12346/login/oauth2/code/google`\n  - Set `client-id`, `client-secret`, and `redirect-uri` for the social providers that you want enabled.\n\n- Add `https://CHANGE_THIS.local:12346` (see Ports Overview below) to the comma-separated `custom_cors.origins`.\n\n6. Edit `deployapp-storage-service-config/application-dev.yml`.\n- Add `https://CHANGE_THIS.local:12346` (see Ports Overview below) to the comma-separated `custom_cors.origins`, identical to `deployapp-backend-config/application-dev.yml`.\n\n7. Edit `deployapp-frontend-config/.dev.env`.\n- `REACT_APP_BASE_URL` is the root backend endpoint. \n  - Set it to `https://CHANGE_THIS.local:12346/`.\n  - In development, we reverse proxy the frontend through NGINX under the same port for simplicity (the concept of subdomains doesn't apply to `.local` mDNS, etc.)\n  - In production, `dapp-backend` and `dapp-storage-service` are reverse proxied under their own subdomain; `https://api.deploy.plan.ovh`.\n- `REACT_APP_OAUTH_REDIRECT_BASE_URL` is the root frontend endpoint.\n  - Set it to `https://CHANGE_THIS.local:12346/` for the same reasons above.\n- Set `REACT_APP_GOOGLE_AUTH_URL` to the value of `REACT_APP_BASE_URL` + `/oauth2/authorize/google?redirect_uri=`.\n- Set `REACT_APP_GITHUB_AUTH_URL` in the same manner.\n\n8. `docker-sync start`\n9. `docker-compose compose -f docker-compose-dev.yml up`\n\nFollow [the `mkcert` instructions](https://github.com/FiloSottile/mkcert/blob/master/README.md) to install the CA into your system trust store or that of your other devices.\n\nDeployApp will be available at `https://CHANGE_THIS.local:12346`.\n\n## Running (Release)\n\nTBD\n\n## Production Details\nThe live instance of DeployApp currently runs in a K8s cluster. At least 1.5 GB of free memory is recommended for each replica of the storage service.\n\n![Kubernetes Dashboard Pods](https://user-images.githubusercontent.com/3119646/225543390-02adf83a-434b-496f-9c41-14a88e1ed6ab.png)\n\nAll the `.yaml` objects [can be found here](https://github.com/Transfusion/deployapp-platform/wiki/Deployment-to-K8S).\n\n## Architecture\n![DeployApp Architecture Diagram](https://user-images.githubusercontent.com/3119646/222884535-bc5f823d-32bd-4347-a57e-b7ae4ab9e1f2.png)\n\n\n## Ports Overview\n\nRabbitMQ (`dapp-rabbitmq`)\n- `15672:5672`\n- `25672:15672` Web management console.\n  - Default creds: `guest:guest`\n\nRedis (`dapp-redis`)\n- `16379:6379`\n  - Default password: `password`\n\nPostgreSQL (`dapp-db`)\n- `15432:5432`\n  - Default creds: `postgres:password`\n  - Default databases: `deployapp_dev_1,deployapp_storage_dev_1`\n\nBackend service (`dapp-backend`)\n- `18080:8080` HTTP\n- `18082:8082` [JobRunr](https://www.jobrunr.io/en/) Dashboard\n- `15010:5010` JDWP debug\n\nStorage service (`dapp-storage-service`)\n- `19080:8080` HTTP\n- `16010:5010` JDWP debug\n\nFrontend (`dapp-frontend`)\n- Not exposed; listens internally on port `3000`.\n\nNGINX reverse proxy (`dapp-web`)\n- `12345:12345` HTTP (for debugging purposes)\n- `12346:12346` HTTPS (self-signed)\n\n\\* `dapp-frontend` is pointed to `12346/https` by default.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftransfusion%2Fdeployapp-platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftransfusion%2Fdeployapp-platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftransfusion%2Fdeployapp-platform/lists"}