{"id":22679093,"url":"https://github.com/janlauber/one-click","last_synced_at":"2025-04-12T14:42:20.879Z","repository":{"id":203046929,"uuid":"708682740","full_name":"janlauber/one-click","owner":"janlauber","description":"One-Click: Deploy your favourite container with a single click in Kubernetes.","archived":false,"fork":false,"pushed_at":"2025-03-21T22:30:04.000Z","size":36116,"stargazers_count":29,"open_issues_count":33,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-26T09:12:35.598Z","etag":null,"topics":["docker","golang","kubernetes","one-click","pocketbase","self-service","svelte"],"latest_commit_sha":null,"homepage":"https://one-click.dev","language":"Svelte","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/janlauber.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-23T07:11:10.000Z","updated_at":"2025-02-01T19:00:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"8ad57a4f-fff1-4e5f-b2a2-10ba9d44ae7f","html_url":"https://github.com/janlauber/one-click","commit_stats":null,"previous_names":["janlauber/one-click"],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janlauber%2Fone-click","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janlauber%2Fone-click/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janlauber%2Fone-click/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janlauber%2Fone-click/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/janlauber","download_url":"https://codeload.github.com/janlauber/one-click/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248583157,"owners_count":21128527,"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":["docker","golang","kubernetes","one-click","pocketbase","self-service","svelte"],"created_at":"2024-12-09T18:20:35.972Z","updated_at":"2025-04-12T14:42:20.873Z","avatar_url":"https://github.com/janlauber.png","language":"Svelte","funding_links":[],"categories":[],"sub_categories":[],"readme":"# One-Click OSS Deployment Platform\n\n[![CodeFactor](https://www.codefactor.io/repository/github/janlauber/one-click/badge)](https://www.codefactor.io/repository/github/janlauber/one-click)\n\n## Introduction\n\nWelcome to the One-Click Deployment Platform. This project aims to provide a user-friendly interface for deploying dockerized containers on a Kubernetes cluster.  \nIt's built with the following technologies:\n\n- **Frontend**: [Sveltekit](https://kit.svelte.dev/)\n- **Backend**: [Go](https://golang.org/) \u0026 [Pocketbase](https://pocketbase.io/)\n- **Operator**: [Operator SDK](https://sdk.operatorframework.io/) -\u003e [one-click-operator](https://github.com/janlauber/one-click-operator)\n\n\u003cdiv align=\"center\"\u003e\n\t\u003cimg src=\"./docs/assets/images/gif/one-click-new.gif\" alt=\"One-Click\"\u003e\n\u003c/div\u003e\n\n## Features\n\n- **Simplified Deployment**: Deploy your favorite dockerized container with a single click.\n- **Kubernetes Integration**: Utilizes Kubernetes for efficient container orchestration.\n- **User-Friendly Interface**: Intuitive UI for users without a technical background.\n- **Customizable**: Customize your deployment with a variety of options.\n- **Blueprints**: Create and share your own deployment blueprints.\n\n## Getting Started\n\n### Prerequisites\n\nYou will need the following to run this project:\n\n- [Kubernetes](https://kubernetes.io/) cluster\n- [Docker](https://www.docker.com/) daemon\n- [Node.js](https://nodejs.org/en/) v18.16.0 or higher\n- [npm](https://www.npmjs.com/) v9.5.1 or higher\n- [Go](https://golang.org/)\n- [Kubectl](https://kubernetes.io/docs/tasks/tools/)\n- [Kustomize](https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/)\n\n### Installation\n\n1. Install the Operator\n   Follow the installation instructions provided in the [one-click-operator repository](https://github.com/janlauber/one-click-operator).\n\n2. Install the UI \u0026 Backend\n    Check out the [deployment](./deployment/) folder and change the values for your environment. Then run the following commands:\n    ```sh\n    cd deployment\n    kubectl apply -k .\n    ```\n\n3. Access the UI\n    ```sh\n    # if you are using an ingress\n    kubectl get ingress -n one-click\n    # if you want to use port-forwarding\n    kubectl port-forward -n one-click svc/one-click-ui 8080:80\n    ```\n\n4. Access Pocketbase on your URL or localhost:8080 with `/_` as the path. Example: `localhost:8080/_`. You should see the Pocketbase UI and set your admin user. Then create a new user under `users` collection. You can now login with your new user.\n\n## Usage\n\n### Blueprints\n\nBlueprints are an abstraction of a deployment. They contain some predefined values and can be used to deploy a certain container with a single click. You can create your own blueprints and share them with others.\n\nCheck out the [blueprints](./docs/blueprints/) folder for examples.\n\n### Projects\n\nYou can create projects which their id's will be the name of the namespace inside the Kubernetes cluster. You can tag these projects to make it more easy to filter (e.g. by environment).\n\n### Deployments\n\nDeployments are based on blueprints. You **must** create a deployment from a blueprint and customize it to your needs.\nEach configuration is stored in a rollout. A rollout is a version of a deployment configuration (like a snapshot). So each time you change a configuration, a new rollout is created. You can then rollback to a previous rollout. Deployments within the same project will get created in the same namespace. So keep in mind to not use the same ingress hosts.\n\n## Roadmap\n\nSee the [open issues](https://github.com/janlauber/one-click/issues) for a list of proposed features (and known issues).\n\n## Contributing\n\nContributions are what make the open-source community such an amazing place to be, learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\n1. Fork the project\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Submit your PR\n\n### Custom CA Certificates\n\nIf you need to connect to services with custom/self-signed SSL certificates (like private S3 storage for Pocketbase backups), you can add your CA certificates in two ways:\n\n1. **Using Environment Variable:**\n   ```bash\n   # Add your CA certificate through environment variable\n   docker run -e CUSTOM_CA_CERT=\"$(cat your-ca-cert.pem)\" -p 8090:8090 one-click\n   ```\n\n   For Kubernetes deployment, add this to your deployment manifest:\n   ```yaml\n   spec:\n     template:\n       spec:\n         containers:\n         - name: one-click\n           env:\n           - name: CUSTOM_CA_CERT\n             valueFrom:\n               secretKeyRef:\n                 name: ca-cert-secret\n                 key: ca.crt\n   ```\n\n2. **Using Volume Mount:**\n   ```bash\n   # Mount your certificates directory\n   docker run -v /path/to/your/certs:/usr/local/share/ca-certificates:ro -p 8090:8090 one-click\n   ```\n\n   For Kubernetes deployment, use a volume mount:\n   ```yaml\n   spec:\n     template:\n       spec:\n         volumes:\n         - name: ca-certs\n           secret:\n             secretName: ca-cert-secret\n         containers:\n         - name: one-click\n           volumeMounts:\n           - name: ca-certs\n             mountPath: /usr/local/share/ca-certificates\n             readOnly: true\n   ```\n\nThis is particularly useful when setting up Pocketbase backups to an S3 storage with self-signed or private CA certificates. The certificates will be automatically added to the system's certificate store when the container starts.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjanlauber%2Fone-click","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjanlauber%2Fone-click","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjanlauber%2Fone-click/lists"}