{"id":47958528,"url":"https://github.com/ersinkoc/simpledeploy","last_synced_at":"2026-04-05T10:00:48.819Z","repository":{"id":347860060,"uuid":"1195383845","full_name":"ersinkoc/SimpleDeploy","owner":"ersinkoc","description":"Single-Binary PaaS CLI — Deploy apps to your server in seconds.","archived":false,"fork":false,"pushed_at":"2026-04-03T08:20:57.000Z","size":961,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-04T09:45:34.504Z","etag":null,"topics":["deploy","docker"],"latest_commit_sha":null,"homepage":"https://simpledeploy.dev","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ersinkoc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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":"2026-03-29T15:56:39.000Z","updated_at":"2026-04-03T08:21:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"e006c6f7-79ed-41b3-b947-1b9878d4a2a8","html_url":"https://github.com/ersinkoc/SimpleDeploy","commit_stats":null,"previous_names":["ersinkoc/simpledeploy"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/ersinkoc/SimpleDeploy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ersinkoc%2FSimpleDeploy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ersinkoc%2FSimpleDeploy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ersinkoc%2FSimpleDeploy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ersinkoc%2FSimpleDeploy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ersinkoc","download_url":"https://codeload.github.com/ersinkoc/SimpleDeploy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ersinkoc%2FSimpleDeploy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31431451,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T08:13:15.228Z","status":"ssl_error","status_checked_at":"2026-04-05T08:13:11.839Z","response_time":75,"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":["deploy","docker"],"created_at":"2026-04-04T09:38:20.852Z","updated_at":"2026-04-05T10:00:48.812Z","avatar_url":"https://github.com/ersinkoc.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SimpleDeploy\n\n**Single-Binary PaaS CLI — Deploy apps to your server in seconds.**\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/simple_deploy.jpeg\" alt=\"SimpleDeploy Logo\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n\u003e **Note:** This project is currently in development and not yet ready for production use.\n\nSimpleDeploy is a zero-external-dependency PaaS tool written in Go. Provide a Git repo URL, and it handles the rest: Docker setup, image build, database provisioning, reverse proxy (Traefik or Caddy), SSL certificates, and auto-deploy via webhooks.\n\n## Philosophy\n\n`#NOFORKANYMORE` — Do what Coolify/Dokploy does with clean, minimal Go code. Generate docker-compose.yml, that's it.\n\n## Features\n\n- **Single binary** — No runtime dependencies. Static Go binary.\n- **Interactive wizards** — `init` and `deploy` walk you through everything.\n- **Auto-detection** — Detects Node.js, Go, PHP, Python, Ruby, static sites, or uses your Dockerfile.\n- **Database provisioning** — MySQL 8, PostgreSQL 16, MariaDB 11, MongoDB 7, Redis 7.\n- **Reverse proxy** — Traefik (auto-discovery) or Caddy (auto-SSL).\n- **Let's Encrypt** — Automatic SSL certificate provisioning.\n- **Webhook auto-deploy** — Push to GitHub/GitLab/Gitea → instant redeploy with signature verification.\n- **Encrypted secrets** — AES-256-GCM encryption for tokens and passwords.\n- **Security headers** — Automatic security headers on every app.\n- **Service mode** — Run SimpleDeploy itself as a Docker container.\n- **Zero-downtime** — Rolling deploys with health checks.\n\n## Quick Start\n\n```bash\n# Install\ncurl -fsSL https://simpledeploy.dev/install | sh\n\n# First-time setup\nsimpledeploy init\n\n# Deploy your first app\nsimpledeploy deploy\n\n# Push to GitHub → auto-deploy!\n```\n\n## CLI Commands\n\n```bash\nsimpledeploy init                # First-time setup (interactive wizard)\nsimpledeploy deploy              # Deploy a new application\nsimpledeploy list                # List deployed applications\nsimpledeploy redeploy \u003capp\u003e      # Redeploy an application\nsimpledeploy remove \u003capp\u003e        # Remove an application\nsimpledeploy restart \u003capp\u003e       # Restart an application\nsimpledeploy stop \u003capp\u003e          # Stop an application\nsimpledeploy exec \u003capp\u003e \u003ccmd\u003e    # Execute command in app container\nsimpledeploy logs \u003capp\u003e          # Show application logs\nsimpledeploy status              # Show SimpleDeploy status\nsimpledeploy service install     # Install as Docker service\nsimpledeploy service start       # Start the service\nsimpledeploy service stop        # Stop the service\nsimpledeploy webhook start       # Start webhook server\nsimpledeploy version             # Show version\n```\n\n## How It Works\n\n1. **`simpledeploy init`** — Checks Docker, sets up Traefik/Caddy, configures domain, SSL, and webhook secret.\n2. **`simpledeploy deploy`** — Clones your repo, detects the framework, builds a Docker image, generates docker-compose.yml, starts containers behind the reverse proxy.\n3. **Webhook** — Receives GitHub/GitLab/Gitea push events, verifies signature, pulls latest code, rebuilds, and redeploys.\n\n## Architecture\n\n```\nsimpledeploy (single binary)\n├── internal/\n│   ├── cli/         → CLI command handlers\n│   ├── wizard/      → Interactive prompts \u0026 ANSI colors\n│   ├── git/         → Git clone/pull\n│   ├── docker/      → Docker install, build, compose\n│   ├── compose/     → YAML generator\n│   ├── proxy/       → Traefik / Caddy setup\n│   ├── webhook/     → HTTP webhook server (GitHub/GitLab/Gitea)\n│   ├── db/          → Database provisioning\n│   ├── state/       → JSON state management + AES crypto\n│   ├── buildpack/   → Auto-detect \u0026 generate Dockerfiles\n│   └── runner/      → Self-containerization\n└── templates/       → Embedded templates\n```\n\n## Runtime File Structure\n\n```\n~/.simpledeploy/\n└── state.json               → All apps' state + global config\n\n/opt/simpledeploy/\n├── proxy/\n│   └── docker-compose.yml   → Traefik/Caddy compose\n├── apps/\n│   └── \u003capp-name\u003e/\n│       ├── source/           → Git clone\n│       ├── docker-compose.yml → Generated compose\n│       ├── .env              → Environment variables\n│       └── deploy.log        → Deploy history\n└── service/\n    └── docker-compose.yml    → SimpleDeploy's own compose\n```\n\n## Supported Stacks\n\n| Type      | Detection          | Default Port |\n|-----------|-------------------|--------------|\n| Node.js   | `package.json`    | 3000         |\n| Go        | `go.mod`          | 8080         |\n| PHP       | `composer.json` / `.php` | 80   |\n| Python    | `requirements.txt` / `pyproject.toml` | 8000 |\n| Ruby      | `Gemfile`         | 3000         |\n| Static    | `.html` files     | 80           |\n| Docker    | `Dockerfile`      | 3000         |\n\n## Build from Source\n\n```bash\ngit clone https://github.com/ersinkoc/SimpleDeploy.git\ncd SimpleDeploy\nCGO_ENABLED=0 go build -o simpledeploy .\n```\n\n## Test Coverage\n\n| Package | Coverage |\n|---------|----------|\n| main | 100.0% |\n| buildpack | 100.0% |\n| cli | 97.9% |\n| compose | 98.8% |\n| config | 100.0% |\n| db | 100.0% |\n| docker | 99.5% |\n| git | 100.0% |\n| proxy | 100.0% |\n| runner | 100.0% |\n| state | 98.2% |\n| webhook | 98.6% |\n| wizard | 100.0% |\n\n**Average: ~99.4%** — 13/13 packages passing.\n\n## Build as Docker Image\n\n```bash\ndocker build -t simpledeploy:latest .\n```\n\n## Requirements\n\n- Linux server (Ubuntu/Debian/CentOS/Fedora recommended)\n- Go 1.23+ (for building)\n- Docker Engine (auto-installed by `simpledeploy init`)\n\n## Security\n\n- Git tokens and DB passwords encrypted with AES-256-GCM\n- Machine-id-based encryption key\n- HMAC-SHA256 webhook verification (GitHub, Gitea)\n- Token-based webhook verification (GitLab)\n- Automatic security headers on every application\n- Docker socket access restricted to SimpleDeploy container\n\n## Author\n\n**Ersin KOC**\n- GitHub: [ersinkoc](https://github.com/ersinkoc)\n- X: [@ersinkoc](https://x.com/ersinkoc)\n\n## License\n\nMIT License — see [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fersinkoc%2Fsimpledeploy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fersinkoc%2Fsimpledeploy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fersinkoc%2Fsimpledeploy/lists"}