{"id":28960410,"url":"https://github.com/potlock/curatedotfun-deploy","last_synced_at":"2026-02-03T16:03:40.999Z","repository":{"id":291671816,"uuid":"978393433","full_name":"PotLock/curatedotfun-deploy","owner":"PotLock","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-06T11:27:29.000Z","size":11,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-12T21:56:44.745Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Smarty","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/PotLock.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":"2025-05-05T23:18:44.000Z","updated_at":"2025-05-06T11:27:33.000Z","dependencies_parsed_at":"2025-05-06T00:30:00.822Z","dependency_job_id":"ef7e5912-99b5-4eae-b70c-d222c398b95f","html_url":"https://github.com/PotLock/curatedotfun-deploy","commit_stats":null,"previous_names":["potlock/curatedotfun-deploy"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/PotLock/curatedotfun-deploy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PotLock%2Fcuratedotfun-deploy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PotLock%2Fcuratedotfun-deploy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PotLock%2Fcuratedotfun-deploy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PotLock%2Fcuratedotfun-deploy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PotLock","download_url":"https://codeload.github.com/PotLock/curatedotfun-deploy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PotLock%2Fcuratedotfun-deploy/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261584267,"owners_count":23180679,"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":"2025-06-24T01:13:03.263Z","updated_at":"2026-02-03T16:03:40.940Z","avatar_url":"https://github.com/PotLock.png","language":"Smarty","readme":"# curatedotfun-deploy\n\n[Kubernetes](https://kubernetes.io/) deployment for [curatedotfun](https://github.com/PotLock/curatedotfun) using [Helm](https://helm.sh/) charts. This repository offers a hosted service of curatedotfun bots, each with their own PostgreSQL database.\n\n## Architecture\n\nThe deployment architecture consists of multiple bot instances, each with its own PostgreSQL database. Each bot is exposed via an Ingress resource.\n\n```mermaid\nflowchart TD\n    subgraph \"Kubernetes Cluster\"\n        subgraph \"Bot 1 Namespace\"\n            B1[Bot 1 Deployment] --\u003e BS1[Bot 1 Service]\n            BS1 --\u003e I1[Ingress]\n            I1 --\u003e E1[External Access]\n            B1 --\u003e P1[PostgreSQL 1]\n            P1 --\u003e PS1[PostgreSQL 1 Service]\n            CM1[ConfigMap] --\u003e B1\n            S1[Secrets] --\u003e B1\n            S1 --\u003e P1\n        end\n        \n        subgraph \"Bot 2 Namespace\"\n            B2[Bot 2 Deployment] --\u003e BS2[Bot 2 Service]\n            BS2 --\u003e I2[Ingress]\n            I2 --\u003e E2[External Access]\n            B2 --\u003e P2[PostgreSQL 2]\n            P2 --\u003e PS2[PostgreSQL 2 Service]\n            CM2[ConfigMap] --\u003e B2\n            S2[Secrets] --\u003e B2\n            S2 --\u003e P2\n        end\n    end\n```\n\n## Prerequisites\n\nBefore you begin, you'll need to set up your local environment:\n\n### MacOS\n\n1. Install either:\n   - [Docker Desktop](https://www.docker.com/products/docker-desktop/) with Kubernetes enabled, or\n   - [Orbstack](https://orbstack.dev/) (a lightweight alternative)\n\n2. Install command-line tools:\n\n   ```bash\n   brew install kubectl helm\n   ```\n\n### Windows\n\n1. Install [Docker Desktop](https://www.docker.com/products/docker-desktop/) with Kubernetes enabled\n\n2. Install command-line tools:\n   - [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/)\n   - [Helm](https://helm.sh/docs/intro/install/#from-chocolatey-windows)\n\n   ```bash\n   choco install kubernetes-cli\n   choco install kubernetes-helm\n   ```\n\n## Configuration\n\nThe deployment is configured via the `values.yaml` file. This file contains the configuration for all bot instances and their associated PostgreSQL databases.\n\n### Bot Configuration\n\nEach bot is configured in the `bots` array in the `values.yaml` file:\n\n```yaml\nbots:\n- name: bot1\n  domain: bot1.example.com\n  postgresUser: botuser1\n  postgresDB: botdb1\n  # dbPassword and encryptionKey are auto-generated\n```\n\nYou can add as many bots as needed by adding more entries to the `bots` array.\n\n### Default Configuration\n\nDefault configuration for all bots is specified in the `botDefaults` section:\n\n```yaml\nbotDefaults:\n  bot:\n    image: your-registry/bot-image:latest\n    replicaCount: 1\n    servicePort: 8080\n    resources:\n      requests:\n        cpu: 200m\n        memory: 512Mi\n      limits:\n        cpu: 500m\n        memory: 1Gi\n```\n\n\n## Deployment\n\nTo deploy the Helm chart:\n\n```bash\nhelm install curatedotfun ./\n```\n\nTo upgrade an existing deployment (when you've made changes to the configuration or when a new version is available):\n\n```bash\nhelm upgrade curatedotfun ./\n```\n\nThis allows you to update your deployment without downtime, applying only the changes that are needed while preserving the state of your application.\n\nTo uninstall the deployment:\n\n```bash\nhelm uninstall curatedotfun\n```\n\n## Accessing the Application\n\nEach bot is exposed via an Ingress resource at the domain specified in the `bots` array. For example, if you have a bot with `domain: bot1.example.com`, you can access it at `http://bot1.example.com`.\n\nMake sure your DNS is configured to point to your Kubernetes cluster's ingress controller.\n\n## Troubleshooting\n\n### Check Pod Status\n\nTo check the status of your pods:\n\n```bash\nkubectl get pods\n```\n\n### View Pod Logs\n\nTo view the logs of a specific pod:\n\n```bash\nkubectl logs \u003cpod-name\u003e\n```\n\n### Check Ingress Status\n\nTo check the status of your ingress resources:\n\n```bash\nkubectl get ingress\n```\n\n### Common Issues\n\n1. **Pods in CrashLoopBackOff state**: Check the pod logs for errors.\n2. **Database connection issues**: Check the pod logs for database connection errors.\n3. **Ingress not working**: Ensure your ingress controller is properly configured and your DNS is pointing to the correct IP address.\n\n## Useful Links\n\n- [Kubernetes Documentation](https://kubernetes.io/docs/home/)\n- [Helm Documentation](https://helm.sh/docs/)\n- [Nginx Ingress Controller](https://kubernetes.github.io/ingress-nginx/)\n- [PostgreSQL Documentation](https://www.postgresql.org/docs/)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpotlock%2Fcuratedotfun-deploy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpotlock%2Fcuratedotfun-deploy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpotlock%2Fcuratedotfun-deploy/lists"}