{"id":47880430,"url":"https://github.com/getditto/helm-charts","last_synced_at":"2026-04-04T01:44:38.376Z","repository":{"id":261860089,"uuid":"863791942","full_name":"getditto/helm-charts","owner":"getditto","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-12T16:54:49.000Z","size":287,"stargazers_count":4,"open_issues_count":2,"forks_count":1,"subscribers_count":23,"default_branch":"main","last_synced_at":"2026-04-04T01:44:31.153Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Smarty","has_issues":false,"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/getditto.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-09-26T23:30:21.000Z","updated_at":"2025-11-12T16:54:53.000Z","dependencies_parsed_at":"2024-11-08T21:26:27.651Z","dependency_job_id":"6921a277-c6d5-424f-b2c2-ec89cc9239ba","html_url":"https://github.com/getditto/helm-charts","commit_stats":null,"previous_names":["getditto/helm-charts"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/getditto/helm-charts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getditto%2Fhelm-charts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getditto%2Fhelm-charts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getditto%2Fhelm-charts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getditto%2Fhelm-charts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getditto","download_url":"https://codeload.github.com/getditto/helm-charts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getditto%2Fhelm-charts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31384845,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T01:22:39.193Z","status":"ssl_error","status_checked_at":"2026-04-04T01:22:33.970Z","response_time":107,"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":"2026-04-04T01:44:37.679Z","updated_at":"2026-04-04T01:44:38.358Z","avatar_url":"https://github.com/getditto.png","language":"Smarty","funding_links":[],"categories":[],"sub_categories":[],"readme":"# helm-charts\n\nThe home for public Helm charts for Ditto.\n\n## Self hosting a Big Peer\n\nDitto offers a Helm chart for deploying a Big Peer on Kubernetes.\nTo install the chart, add the Ditto Helm repository:\n\n```bash\n  helm repo add ditto https://getditto.github.io/helm-charts/\n```\n\nWe will then need to install some CRDs that are required for the Big Peer to run:\n\n```bash\n  kubectl apply --server-side --force-conflicts -f https://github.com/cert-manager/cert-manager/releases/download/v1.6.1/cert-manager.crds.yaml\n  kubectl apply --server-side -f https://raw.githubusercontent.com/getditto/helm-charts/refs/heads/main/charts/big-peer/crds/ditto_v1alpha3_hydracluster_crd.yaml\n  kubectl apply --server-side -f https://raw.githubusercontent.com/getditto/helm-charts/refs/heads/main/charts/big-peer/crds/ditto_v1alpha3_hydrapartition_crd.yaml\n\n```\n\nThen using  the values file\n[values.yaml](https://github.com/getditto/helm-charts/blob/main/charts/big-peer/values.yaml) \nwhich can be modified to suit your needs, install the chart:\n\n```bash\n  helm install ditto-bp ditto/big-peer -f values.yaml\n```\n\nThis above command will install the Big Peer chart with the release name `ditto-bp`.\n\n### Ports\n\nWe expose the following ports in the Big Peer chart via the service named `ditto-bp-hydra-subscription`:\n\n- 8080: The port for the Big Peer to listen on for incoming connections from Small Peers.\n- 4040: The port for the Big Peer to listen on for incoming connections from other Big Peers.\n- 10080: The port for the Big Peer to listen on for incoming HTTP API calls.\n\n### Getting started in the cloud\n\nIf you are wanting to deploy a simple cloud environment that you can connect your small peers to.\nWe recommend creating a vm with a public ip in AWS, or your favorite cloud provider, and then following the guide\nto install K3s on that vm. https://docs.k3s.io/quick-start\n\nThis will provide a simple kubernetes cluster that you can deploy\nthe Big Peer to following the same instructions above.\n\nYou can then set `ingress.enabled` to `true` and change the `ingress.hosts` to the ip of your vm or dns name if you have it.\nThis should leave you with a Big Peer that is accessible from the internet via `http://\u003cip\u003e:80`\n\nTo Connect a small peer to your newly created big peer follow the instructions in the section below.\n\n### Notes on dependencies\n\nThe `big-peer` chart has a few third-party dependencies that we include in the chart for ease of use and to ensure compatibility. but if you have these dependencies already installed in your cluster, you can disable the installation of these dependencies by setting the `enable` values to `false` in the values file for the respective dependency.\n\nBy default the following dependencies are enabled:\n\n- [Strimzi Kafka Operator](https://strimzi.io/)\n- [Cert Manager](https://github.com/cert-manager/cert-manager)\n\n\n\n### Deploy in EKS Cluster\n\n\n#### Ingress Config \n\n- In order to be able to access the big peer externally you need to configure the ingress in the values.yaml with a valid host name. To do this you will need to create a **CNAME** record that points to the loadbalancer created in the ingress service that has the type `LoadBalancer`.\n\n- Then in your values.yaml file you will need to enable the ingress and update the `host` value with the hostname you created as shown below;\n\n```yaml\ningress:\n  main:\n    # -- Enables or disables the ingress\n    enabled: true\n\n    # -- Make this the primary ingress (used in probes, notes, etc...).\n    # If there is more than 1 ingress, make sure that only 1 ingress is marked as primary.\n    primary: true\n\n    # -- Override the name suffix that is used for this ingress.\n    nameOverride:\n\n    # -- Provide additional annotations which may be required.\n    annotations:\n      {}\n      # kubernetes.io/ingress.class: traefik\n      # kubernetes.io/tls-acme: \"true\"\n\n    # -- Provide additional labels which may be required.\n    labels: {}\n\n    # -- Set the ingressClass that is used for this ingress.\n    # Requires Kubernetes \u003e=1.19\n    ingressClassName: alb # \"traefik\"\n\n    ## Configure the hosts for the ingress\n    hosts:\n      - # -- Host address. Helm template can be passed.\n        host: eks.ditto-umbrella.live\n        ## Configure the paths for the host\n```\n\nThis will create an ingress pointing to the ingress-controller's loadbalancer. See the full values file in [here](./values/eks-values.yaml)\n\n\u003cbr/\u003e\n\n\n### Big Peer in Production\n\nComing Soon...\n\n\n\n\n### Connecting to a Big Peer with a small peer\n\nIf you are deploying to something like Kubernetes for Docker Desktop, you will have to port-forward port 8080 from the \nditto-bp-hydra-subscription service to your local machine.\n```bash\n  kubectl port-forward svc/ditto-bp-hydra-subscription 8080\n```\n\nNext in your small peer client you will need to change a few configuration items to connect to the Big Peer running on your laptop.\nthese examples are in kotlin for Android but should work similarly for other platforms.\n\nIn your Ditto object you will need to setup an identity that looks like this.\n```kotlin\n OnlineWithAuthentication(\n    dependencies = androidDependencies,\n    appId = \"your-app-id\",\n    customAuthUrl = \"http://10.0.2.2:8080\",\n    enableDittoCloudSync = true,\n    callback = AuthCallback(),\n    //10.0.2.2 is the localhost for the Android emulator\n),\n```\n\nNext you will need to create an AuthCallback class that looks like this:\n\n```kotlin\nclass AuthCallback: DittoAuthenticationCallback {\n    override fun authenticationRequired(authenticator: DittoAuthenticator) {\n        println(\"Login request.\")\n        authenticator.login(\"full_access\", \"dummy-provider\", { token, error -\u003e\n            if (error != null) {\n              println(\"Login failed.\")\n            } else {\n              println(\"Login successful.\")\n            }\n        })\n    }\n\n    override fun authenticationExpiringSoon(\n        authenticator: DittoAuthenticator,\n        secondsRemaining: Long\n    ) {\n        println(\"Auth token expiring in $secondsRemaining seconds\")\n    }\n}\n```\n\nYou will also need to setup the DittoTransportConfig\nto have a custom URL for the Big Peer.\n\n```kotlin\nval conf = DittoTransportConfig()\nconf.connect.websocketUrls.add(\"ws://localhost:8080/\")\n\nditto?.let { ditto -\u003e\n    ditto.transportConfig = conf\n    ditto.startSync()\n}\n\n```\n\n### Live Query Example\n\nLive Query can be enabled on big-peer cluster to allow users to stream transactions in real-time. to other systems.\n\nTo enable this feature you will need to pre-define an app in the values file like below\n\n```yaml\napps:\n  myApp:\n    enabled: true\n    id: 891c1bdb-71c6-40d5-9374-128e467c367e # uuid generated via uuidgen \n\n    liveQuery:\n      enabled: true\n      queries:\n        - name: \"all_the_things\"\n          enabled: true\n          queryFilterExpression: \"true\"\n          schema: untyped\n          sinks:\n            kafka:\n              enabled: true\n            webhook:\n              enabled: true\n              url: \"http://myapp.com/rimshot\"\n```\nThis will create an app with the given id and setup up a live query stream that streams all the data in that app to both a kafka topic and a webhook.\n\nThe kafka topic can be consumed by any system in k8s using the created KafkaUser credentials or can be exposed outside using an ingress object much like exposing the big-peer itself.\n\n### Big Peer to Big Peer communication\n\nWith Two separate installations of the big peer helm chart in separate namespaces you can set them up to communicate with each other,\nyou will need to setup a few things.\n\nYou will have to know the \"App ID\" you intend to operator under. \nThis can be generated by creating a v4 UUID as long as it is the same for all of the peers in you network (Big and Small).\n\nadd the following to the `additionalEnv` section of the values.yaml file for the `hydra-subscription` deployment.\n\n```yaml\nPEER_APP_ID: \"your-app-id\"\n```\n\nvia the HTTP API (see the ports section we will make a few different calls.\n\n```bash\ncurl -v --request POST \\\n      --url http://\u003cbig-peer\u003e:10080/${app_id}/sub/v1/peer/connections \\\n      --header 'content-type: application/json' \\\n      --data '{ \"addr\": \"localhost:4040\" }'\n```\n\nNext we will need to make a call to setup the subscription query so that we sync the data between the two peers.\n\n```bash\ncurl -v --request POST \\\n--url http://\u003cbig-peer\u003e:10080/${app_id}/sub/v1/peer/subscriptions \\\n--header 'content-type: application/json' \\\n--data '{\n           \"queries\": {\n             \"my_collection\": [\"true\"]\n           }\n        }'\n\n```\n\nWe should now see the two peers syncing data between each other.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetditto%2Fhelm-charts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetditto%2Fhelm-charts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetditto%2Fhelm-charts/lists"}