{"id":35357858,"url":"https://github.com/bluedynamics/cdk8s-mailu","last_synced_at":"2026-05-11T19:02:34.425Z","repository":{"id":323242279,"uuid":"1092598939","full_name":"bluedynamics/cdk8s-mailu","owner":"bluedynamics","description":"Mailu email setup as cdk8s-chart","archived":false,"fork":false,"pushed_at":"2026-02-03T01:21:11.000Z","size":1486,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-03T15:34:23.525Z","etag":null,"topics":["cdk8s","chart","email","kubernetes","kubernetes-deployment","mail"],"latest_commit_sha":null,"homepage":"https://bluedynamics.github.io/cdk8s-mailu/","language":"TypeScript","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/bluedynamics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2025-11-08T23:30:30.000Z","updated_at":"2026-01-26T09:22:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/bluedynamics/cdk8s-mailu","commit_stats":null,"previous_names":["bluedynamics/cdk8s-mailu"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/bluedynamics/cdk8s-mailu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluedynamics%2Fcdk8s-mailu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluedynamics%2Fcdk8s-mailu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluedynamics%2Fcdk8s-mailu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluedynamics%2Fcdk8s-mailu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bluedynamics","download_url":"https://codeload.github.com/bluedynamics/cdk8s-mailu/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluedynamics%2Fcdk8s-mailu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29101776,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-04T22:44:52.815Z","status":"ssl_error","status_checked_at":"2026-02-04T22:44:16.428Z","response_time":62,"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":["cdk8s","chart","email","kubernetes","kubernetes-deployment","mail"],"created_at":"2026-01-01T23:34:52.737Z","updated_at":"2026-02-05T00:01:44.968Z","avatar_url":"https://github.com/bluedynamics.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cdk8s-mailu\n\n\u003ctable style=\"width: 100%; border: none;\"\u003e\n\u003ctr\u003e\n\u003ctd style=\"border: none;\"\u003e\n\u003cem\u003eCDK8S construct library for deploying Mailu mail server to Kubernetes\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd align=\"right\" style=\"border: none;\"\u003e\n\u003cimg src=\"mailu-logo.png\" alt=\"Mailu Logo\" width=\"100\"/\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)\n\n📚 **[Full Documentation](https://bluedynamics.github.io/cdk8s-mailu/)** | [Quick Start](#quick-start) | [Architecture](https://bluedynamics.github.io/cdk8s-mailu/explanation/architecture.html)\n\n## Overview\n\n`cdk8s-mailu` is a [CDK8S](https://cdk8s.io/) construct library that provides a **type-safe, production-grade** way to deploy [Mailu](https://mailu.io/) mail server to Kubernetes. Generate complete Kubernetes manifests from TypeScript code with compile-time validation and IDE autocomplete.\n\n## Why cdk8s-mailu?\n\n- **Type-Safe Configuration** - Catch errors at compile time, not deploy time\n- **Production-Grade Defaults** - Resource limits and storage sizes based on real deployments\n- **Modular Architecture** - Enable/disable components with simple flags\n- **Dedicated Dovecot Submission Service** - Solves webmail email sending with clean architecture\n- **Well-Documented** - Comprehensive documentation following Diátaxis framework\n- **Battle-Tested** - Production deployment at kup6s.com with AMD64/ARM64 mixed nodes\n\n**[See Complete Architecture →](https://bluedynamics.github.io/cdk8s-mailu/explanation/architecture.html)**\n\n## Installation\n\n```bash\nnpm install cdk8s-mailu\n# or\nyarn add cdk8s-mailu\n```\n\n**Prerequisites**: Kubernetes 1.28+, PostgreSQL, Redis, Node.js 18+\n\n**[Full Prerequisites →](https://bluedynamics.github.io/cdk8s-mailu/tutorials/01-quick-start.html#prerequisites)**\n\n## Quick Start\n\nCreate `mailu.ts`:\n\n```typescript\nimport { App } from 'cdk8s';\nimport { MailuChart } from 'cdk8s-mailu';\n\nconst app = new App();\n\nnew MailuChart(app, 'mailu', {\n  namespace: 'mailu',\n  domain: 'example.com',\n  hostnames: ['mail.example.com'],\n  subnet: '10.42.0.0/16',  // Your Kubernetes pod CIDR\n  timezone: 'UTC',\n\n  database: {\n    type: 'postgresql',\n    postgresql: {\n      host: 'postgres-rw',\n      port: 5432,\n      database: 'mailu',\n      secretName: 'postgres-app',\n      secretKeys: {\n        username: 'username',\n        password: 'password',\n      },\n    },\n  },\n\n  redis: {\n    host: 'redis',\n    port: 6379,\n  },\n\n  secrets: {\n    mailuSecretKey: 'mailu-secrets',\n    initialAdminPassword: 'mailu-secrets',\n  },\n\n  components: {\n    webmail: true,   // Roundcube webmail\n    clamav: false,   // Antivirus (requires ~1GB RAM)\n  },\n\n  storage: {\n    storageClass: 'longhorn',\n    dovecot: { size: '50Gi' },  // Mailbox storage\n  },\n\n  // Optional: Traefik ingress (requires Traefik installed)\n  ingress: {\n    enabled: true,\n    type: 'traefik',\n    traefik: {\n      hostname: 'mail.example.com',\n      certIssuer: 'letsencrypt-cluster-issuer',\n      enableTcp: true,  // SMTP/IMAP/POP3 routes\n    },\n  },\n});\n\napp.synth();\n```\n\nGenerate and deploy:\n\n```bash\nnpx ts-node mailu.ts\nkubectl apply -f dist/mailu.k8s.yaml\n```\n\n**[Complete Tutorial with Secrets \u0026 DNS →](https://bluedynamics.github.io/cdk8s-mailu/tutorials/01-quick-start.html)**\n\n## Documentation\n\nComprehensive documentation following the [Diátaxis](https://diataxis.fr/) framework:\n\n### **[📘 Tutorials](https://bluedynamics.github.io/cdk8s-mailu/tutorials/)** - Learn by doing\n- [Quick Start: Deploy Your First Instance](https://bluedynamics.github.io/cdk8s-mailu/tutorials/01-quick-start.html)\n\n### **[🔧 How-To Guides](https://bluedynamics.github.io/cdk8s-mailu/how-to/)** - Practical solutions\n- Configure components\n- Customize resources\n- Set up TLS termination\n\n### **[💡 Explanation](https://bluedynamics.github.io/cdk8s-mailu/explanation/)** - Understanding the design\n- [Architecture Overview](https://bluedynamics.github.io/cdk8s-mailu/explanation/architecture.html) - Component relationships and CDK8S patterns\n- [Dovecot Submission Service](https://bluedynamics.github.io/cdk8s-mailu/explanation/dovecot-submission.html) - How webmail email sending works\n- [CDK8S Patterns](https://bluedynamics.github.io/cdk8s-mailu/explanation/cdk8s-patterns.html) - Construct design patterns\n\n### **[📚 Reference](https://bluedynamics.github.io/cdk8s-mailu/reference/)** - Technical specifications\n- Configuration API reference\n- Component options\n- Resource defaults\n\n## Development\n\n```bash\nnpm run build      # Compile + test + synth\nnpm run test       # Run tests (\u003e96% coverage)\nnpm run synth      # Generate manifests only\n```\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## License\n\nApache License 2.0 - see [LICENSE](LICENSE) file for details.\n\n## Acknowledgments\n\n- [Mailu](https://mailu.io/) - The mail server software\n- [CDK8S](https://cdk8s.io/) - Cloud Development Kit for Kubernetes\n\n---\n\n**[📚 Full Documentation](https://bluedynamics.github.io/cdk8s-mailu/) | [🚀 Quick Start](https://bluedynamics.github.io/cdk8s-mailu/tutorials/01-quick-start.html) | [🏗️ Architecture](https://bluedynamics.github.io/cdk8s-mailu/explanation/architecture.html)**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluedynamics%2Fcdk8s-mailu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbluedynamics%2Fcdk8s-mailu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluedynamics%2Fcdk8s-mailu/lists"}