28 KiB
Premix Repository
"Premix" is a private git repository available to GitHub sponsors, which includes:
- Necessary docker-compose and env files for all published recipes
- Ansible playbook for deploying the cookbook stack, as well as individual recipes
- Helm charts for deploying recipes into Kubernetes
The intention of Premix is that sponsors can launch any recipe with just a git pull followed by ansible-playbook ... (Docker Swarm or Kubernetes), docker stack deploy ... (Docker Swarm), or helm install ... (Kubernetes).
Data Layout
Generally, each recipe with necessary files is contained within its own folder. The intention is that a sponsor could run git clone git@github.com:funkypenguin/geek-cookbook-premix.git /var/data/config, and the recipes would be laid out per the data layout.
Here's a sample of the directory structure:
??? "What will I find in the pre-mix?" ```bash . ├── README.md ├── ansible │ ├── README.md │ ├── ansible.cfg │ ├── carefully_destroy.yml │ ├── deploy.yml │ ├── deploy_swarm.yml │ ├── group_vars │ │ └── all │ │ ├── 01_fake_vault.yml │ │ ├── main.yml │ │ └── vault.yml │ ├── hosts.example │ └── roles │ ├── ceph │ │ ├── tasks │ │ │ ├── docker-swarm.yml │ │ │ ├── kubernetes.yml │ │ │ └── main.yml │ │ └── templates │ │ ├── cluster.yaml.j2 │ │ ├── storageclass.yaml.j2 │ │ └── toolbox.yaml.j2 │ ├── destroy-proxmox │ │ ├── defaults │ │ │ └── main.yml │ │ ├── tasks │ │ │ └── main.yml │ │ └── templates │ │ ├── main.tf.j2 │ │ └── swarm_node.tf.j2 │ ├── docker-stack │ │ ├── defaults │ │ │ └── main.yml │ │ ├── tasks │ │ │ └── main.yml │ │ └── vars │ │ └── default.yaml │ ├── docker-swarm │ │ └── tasks │ │ └── main.yml │ ├── helm │ │ └── tasks │ │ └── main.yml │ ├── helm-chart │ │ ├── defaults │ │ │ └── main.yml │ │ ├── tasks │ │ │ └── main.yml │ │ └── vars │ │ └── default.yaml │ ├── k3s-master │ │ ├── README.md │ │ ├── defaults │ │ │ └── main.yml │ │ ├── handlers │ │ │ └── main.yml │ │ ├── meta │ │ │ └── main.yml │ │ ├── tasks │ │ │ └── main.yml │ │ ├── tests │ │ │ ├── inventory │ │ │ └── test.yml │ │ └── vars │ │ └── main.yml │ ├── k3s-worker │ │ ├── README.md │ │ ├── defaults │ │ │ └── main.yml │ │ ├── handlers │ │ │ └── main.yml │ │ ├── meta │ │ │ └── main.yml │ │ ├── tasks │ │ │ └── main.yml │ │ ├── tests │ │ │ ├── inventory │ │ │ └── test.yml │ │ └── vars │ │ └── main.yml │ ├── keepalived │ │ └── tasks │ │ └── main.yml │ ├── proxmox │ │ ├── defaults │ │ │ └── main.yml │ │ ├── tasks │ │ │ └── main.yml │ │ └── templates │ │ ├── main.tf.j2 │ │ └── swarm_node.tf.j2 │ ├── traefik │ │ └── tasks │ │ └── main.yml │ ├── traefik-forward-auth │ │ └── tasks │ │ └── main.yml │ └── traefikv1 │ └── tasks │ └── main.yml ├── autopirate │ ├── authenticated-emails.txt-sample │ ├── autopirate.yml │ ├── bazarr.env-sample │ ├── headphones.env-sample │ ├── heimdall.env-sample │ ├── lazylibrarian.env-sample │ ├── lidarr.env-sample │ ├── mylar.env-sample │ ├── nzbget.env-sample │ ├── nzbhydra.env-sample │ ├── ombi.env-sample │ ├── oscarr.env-sample │ ├── radarr.env-sample │ ├── sabnzbd.env-sample │ └── sonarr.env-sample ├── bitwarden │ ├── bitwarden.yml │ └── readme.md ├── bookstack │ ├── authenticated-emails-sample.txt │ ├── bookstack.env-sample │ └── bookstack.yml ├── calibre-web │ ├── authenticated-emails-sample.txt │ ├── calibre-web.env-sample │ └── calibre-web.yml ├── ceph ├── charts │ ├── autopirate │ │ ├── Chart.yaml │ │ ├── README.MD │ │ ├── charts │ │ │ └── funkycore-1.0.0.tgz │ │ ├── templates │ │ │ ├── NOTES.txt │ │ │ ├──_helpers.tpl │ │ │ ├── apps │ │ │ │ ├── bazarr │ │ │ │ │ ├── config-pvc.yaml │ │ │ │ │ ├── deployment.yaml │ │ │ │ │ └── service.yaml │ │ │ │ ├── headphones │ │ │ │ │ ├── config-pvc.yaml │ │ │ │ │ ├── deployment.yaml │ │ │ │ │ └── service.yaml │ │ │ │ ├── lazylibrarian │ │ │ │ │ ├── config-pvc.yaml │ │ │ │ │ ├── deployment.yaml │ │ │ │ │ └── service.yaml │ │ │ │ ├── lidarr │ │ │ │ │ ├── config-pvc.yaml │ │ │ │ │ ├── deployment.yaml │ │ │ │ │ └── service.yaml │ │ │ │ ├── mylar │ │ │ │ │ ├── config-pvc.yaml │ │ │ │ │ ├── deployment.yaml │ │ │ │ │ └── service.yaml │ │ │ │ ├── nzbget │ │ │ │ │ ├── config-pvc.yaml │ │ │ │ │ ├── configmap.yaml │ │ │ │ │ ├── deployment.yaml │ │ │ │ │ └── service.yaml │ │ │ │ ├── nzbhydra │ │ │ │ │ ├── config-pvc.yaml │ │ │ │ │ ├── deployment.yaml │ │ │ │ │ └── service.yaml │ │ │ │ ├── ombi │ │ │ │ │ ├── config-pvc.yaml │ │ │ │ │ ├── deployment.yaml │ │ │ │ │ └── service.yaml │ │ │ │ ├── radarr │ │ │ │ │ ├── config-pvc.yaml │ │ │ │ │ ├── deployment.yaml │ │ │ │ │ └── service.yaml │ │ │ │ ├── rtorrent │ │ │ │ │ ├── config-pvc.yaml │ │ │ │ │ ├── deployment.yaml │ │ │ │ │ └── service.yaml │ │ │ │ ├── sabnzbd │ │ │ │ │ ├── config-pvc.yaml │ │ │ │ │ ├── configmap.yaml │ │ │ │ │ ├── deployment.yaml │ │ │ │ │ └── service.yaml │ │ │ │ └── sonarr │ │ │ │ ├── config-pvc.yaml │ │ │ │ ├── deployment.yaml │ │ │ │ └── service.yaml │ │ │ ├── download-pvc.yaml │ │ │ ├── ingress │ │ │ │ ├── kube.yaml │ │ │ │ └── traefik.yaml │ │ │ └── media-pvc.yaml │ │ └── values.yaml │ ├── autopirate-storage │ │ └── Chart.lock │ ├── funkycore │ │ ├── Chart.yaml │ │ ├── templates │ │ │ └── _helpers.tpl │ │ └── values.yaml │ ├── heimdall │ │ └── Chart.lock │ ├── huginn │ │ ├── Chart.yaml │ │ ├── README.MD │ │ ├── charts │ │ │ └── postgresql-8.3.0.tgz │ │ ├── myvalues.yaml │ │ ├── templates │ │ │ ├──_helpers.tpl │ │ │ ├── deployment.yaml │ │ │ ├── ingress │ │ │ │ ├── kube.yaml │ │ │ │ └── traefik.yaml │ │ │ ├── secret.yaml │ │ │ └── service.yaml │ │ └── values.yaml │ ├── lidarr │ │ └── Chart.lock │ ├── rtorrent │ │ └── Chart.lock │ └── wash-hands │ ├── Chart.yaml │ ├── charts │ │ ├── cert-manager-v0.13.0.tgz │ │ ├── goldilocks-2.1.0.tgz │ │ ├── grafana-1.2.5.tgz │ │ ├── kube-eagle-1.1.5.tgz │ │ ├── kured-1.4.2.tgz │ │ ├── loki-0.25.0.tgz │ │ ├── nginx-ingress-1.30.1.tgz │ │ ├── prometheus-operator-0.11.1.tgz │ │ └── promtail-0.18.0.tgz │ ├── manifests │ │ └── wash-hands │ │ ├── charts │ │ │ ├── cert-manager │ │ │ │ └── templates │ │ │ │ ├── cainjector-deployment.yaml │ │ │ │ ├── cainjector-rbac.yaml │ │ │ │ ├── cainjector-serviceaccount.yaml │ │ │ │ ├── deployment.yaml │ │ │ │ ├── rbac.yaml │ │ │ │ ├── service.yaml │ │ │ │ ├── serviceaccount.yaml │ │ │ │ ├── webhook-deployment.yaml │ │ │ │ ├── webhook-mutating-webhook.yaml │ │ │ │ ├── webhook-rbac.yaml │ │ │ │ ├── webhook-service.yaml │ │ │ │ ├── webhook-serviceaccount.yaml │ │ │ │ └── webhook-validating-webhook.yaml │ │ │ ├── goldilocks │ │ │ │ └── templates │ │ │ │ ├── controller-clusterrole.yaml │ │ │ │ ├── controller-clusterrolebinding.yaml │ │ │ │ ├── controller-deployment.yaml │ │ │ │ ├── controller-serviceaccount.yaml │ │ │ │ ├── dashboard-clusterrole.yaml │ │ │ │ ├── dashboard-clusterrolebinding.yaml │ │ │ │ ├── dashboard-deployment.yaml │ │ │ │ ├── dashboard-service.yaml │ │ │ │ └── dashboard-serviceaccount.yaml │ │ │ ├── kured │ │ │ │ └── templates │ │ │ │ ├── clusterrole.yaml │ │ │ │ ├── clusterrolebinding.yaml │ │ │ │ ├── daemonset.yaml │ │ │ │ ├── role.yaml │ │ │ │ ├── rolebinding.yaml │ │ │ │ └── serviceaccount.yaml │ │ │ └── nginx-ingress │ │ │ └── templates │ │ │ ├── clusterrole.yaml │ │ │ ├── clusterrolebinding.yaml │ │ │ ├── controller-deployment.yaml │ │ │ ├── controller-role.yaml │ │ │ ├── controller-rolebinding.yaml │ │ │ ├── controller-service.yaml │ │ │ ├── controller-serviceaccount.yaml │ │ │ ├── default-backend-deployment.yaml │ │ │ ├── default-backend-service.yaml │ │ │ └── default-backend-serviceaccount.yaml │ │ └── templates │ │ ├── issuer-letsencrypt-staging-cloudflare.yaml │ │ ├── issuer-letsencrypt-staging.yaml │ │ ├── secret.yaml │ │ └── test.yaml │ ├── myvalues.yaml │ ├── templates │ │ ├── issuer-letsencrypt-prod.yaml │ │ ├── issuer-letsencrypt-staging.yaml │ │ └── secret.yaml │ └── values.yaml ├── cryptominer │ ├── monitor-gpu.sh │ └── stats-to-influxdb.sh ├── dex │ ├── README.md │ ├── config.yml.example │ └── dex.yml ├── diskover │ ├── diskover.env-sample │ ├── diskover.yml │ └── diskoverdash.env-sample ├── docker-cleanup │ ├── docker-cleanup.env-sample │ └── docker-cleanup.yml ├── dozzle │ ├── authenticated-emails.txt-sample │ ├── dozzle.env-sample │ └── dozzle.yml ├── duplicacy │ ├── authenticated-emails.txt-sample │ ├── duplicacy.env │ └── duplicacy.yml ├── duplicity │ ├── duplicity.env-sample │ └── duplicity.yml ├── elkarbackup │ ├── elkarbackup.env-sample │ ├── elkarbackup.yml │ └── elkarbackup.yml.proxy ├── emby │ ├── emby.env-sample │ └── emby.yml ├── filebrowser │ ├── README.md │ ├── config.json │ ├── filebrowser.env.sample │ ├── filebrowser.yml │ ├── hostname │ ├── hosts │ └── resolv.conf ├── ghost │ └── ghost.yml ├── gitlab │ └── gitlab.yml ├── gollum │ ├── authenticated-emails-sample.txt │ ├── gollum.env-sample │ └── gollum.yml ├── hackmd │ ├── authenticated-emails-sample.txt │ ├── hackmd-backup.env │ ├── hackmd.env │ └── hackmd.yml ├── homeassistant │ ├── README.md │ ├── grafana.env-sample │ ├── homeassistant.env-sample │ └── homeassistant.yml ├── huginn │ ├── huginn.env-sample │ ├── huginn.yml │ └── kubernetes │ ├── app.yml │ ├── db-persistent-volumeclaim.yml │ ├── db.yml │ ├── ingress.yml │ └── namespace.yml ├── instapy │ └── instapy.yml ├── jellyfin │ ├── jellyfin.env-sample │ ├── jellyfin.yml │ └── readme.md ├── kanboard │ ├── authenticated-emails-sample.txt │ ├── kanboard.env-sample │ ├── kanboard.yml │ └── kubernetes │ ├── app-persistent-volumeclaim.yml │ ├── app.yml │ ├── config.php │ ├── ingress.yml │ └── namespace.yml ├── keycloak │ ├── keycloak-backup.env-sample │ ├── keycloak.env-sample │ └── keycloak.yml ├── mailserver │ ├── mailserver.env-sample │ └── mailserver.yml ├── mastodon │ └── mastodon.yml ├── mattermost │ ├── mattermost-backup.env-sample │ ├── mattermost.env-sample │ └── mattermost.yml ├── mayan │ ├── authenticated-emails-sample.txt │ ├── mayan-backup.env │ ├── mayan.env │ └── mayan.yml ├── miniflux │ ├── kubernetes │ │ ├── app.yml │ │ ├── db-persistent-volumeclaim.yml │ │ ├── db.yml │ │ ├── ingress.yml │ │ └── namespace.yml │ ├── miniflux-backup.env-sample │ ├── miniflux.env-sample │ └── miniflux.yml ├── minio │ ├── minio.env-sample │ └── minio.yml ├── munin │ ├── munin.env-sample │ └── munin.yml ├── nextcloud │ ├── kubernetes │ │ ├── app-persistent-volumeclaim.yml │ │ ├── app.yml │ │ ├── db-persistent-volumeclaim.yml │ │ ├── db.yml │ │ ├── ingress.yml │ │ └── namespace.yml │ ├── nextcloud.env-sample │ └── nextcloud.yml ├── owntracks │ ├── owntracks.env │ └── owntracks.yml ├── phpipam │ ├── nginx.conf-sample │ ├── phpipam-backup.env-sample │ ├── phpipam.env-sample │ └── phpipam.yml ├── piwik │ └── piwik.yml ├── plex │ ├── nowshowing.env-sample │ ├── plex.env-sample │ ├── plex.yml │ └── tautulli.env-sample ├── portainer │ ├── portainer-agent-stack.yml │ ├── portainer.env-sample │ ├── portainer.yml │ └── portainer_with_oauth.yml ├── privatebin │ ├── authenticated-emails.txt-sample │ ├── privatebin.env-sample │ └── privatebin.yml ├── realms │ ├── authenticated-emails-sample.txt │ ├── bookstack_authenticated-emails-sample.txt │ ├── realms.env │ └── realms.yml ├── registry │ ├── registry-mirror-config.yml │ └── registry.yml ├── shaarli │ ├── authenticated-emails-sample.txt │ ├── shaarli.env │ ├── shaarli.env-sample │ └── shaarli.yml ├── shepherd │ ├── shepherd.env-sample │ └── shepherd.yml ├── swarmprom │ ├── Caddyfile │ ├── alertmanager.env-sample │ ├── grafana.env-sample │ ├── prometheus.env-sample │ ├── swarm_node.rules.yml │ ├── swarm_task.rules.yml │ ├── swarmprom.yml │ └── unsee.env-sample ├── tools │ ├── README.MD.TEMPLATE │ ├── aliases.sh │ ├── chart.sh │ ├── helm-boilerplate │ │ ├── Chart.yaml │ │ ├── templates │ │ │ ├── NOTES.TXT │ │ │ ├──_helpers.tpl │ │ │ ├── deployment.yaml │ │ │ ├── ingress │ │ │ │ ├── kube.yaml │ │ │ │ └── traefik.yaml │ │ │ ├── secret.yaml │ │ │ └── service.yaml │ │ └── values.yaml │ └── mkreadme.py ├── traefik │ ├── traefik.env-sample │ └── traefik.yml ├── traefik-forward-auth │ ├── README-traefik-with-non-swarm-backends.txt │ ├── traefik-forward-auth.env-sample │ └── traefik-forward-auth.yml ├── traefikv1 │ ├── README-traefik-with-non-swarm-backends.txt │ ├── authenticated-emails.txt-sample │ ├── traefik.toml-sample │ ├── traefikv1.env-sample │ └── traefikv1.yml ├── ttrss │ ├── ttrss.env-sample │ └── ttrss.yml ├── turtle-pool │ └── kubernetes │ ├── README.md │ ├── config.js │ ├── custom.css │ ├── daemon-persistent-volumeclaim.yml │ ├── daemon.yml │ ├── namespace.yml │ ├── pool-ingress.yml │ ├── pool-persistent-volumeclaim.yml │ ├── pool-service-nodeport.yml │ ├── pool-service.yml │ ├── pool.yml │ ├── redis-persistent-volumeclaim.yml │ ├── redis.conf │ ├── redis.yml │ ├── trtl.json-example │ ├── wallet-persistent-volumeclaim.yml │ ├── wallet.conf-example │ ├── wallet.yml │ └── webhook_token.secret-example ├── unifi │ ├── authenticated-emails-sample.txt │ ├── kubernetes │ │ ├── authenticated-emails-sample.txt │ │ ├── controller-persistent-volumeclaim.yml │ │ ├── ingress.yml │ │ ├── namespace.yml │ │ ├── proxy.yaml │ │ ├── service-controller-external.yml │ │ └── unifi.yaml │ ├── unifi.yml │ └── unifi_with_proxy.yml ├── wallabag │ ├── authenticated-emails.txt-sample │ ├── wallabag-backup.env-sample │ ├── wallabag.env-sample │ └── wallabag.yml ├── wash-hands │ ├── README.md │ ├── azure-pipelines.yml │ ├── manifests │ │ └── wash-hands │ │ └── charts │ │ ├── goldilocks │ │ │ └── templates │ │ │ ├── controller-clusterrole.yaml │ │ │ ├── controller-clusterrolebinding.yaml │ │ │ ├── controller-deployment.yaml │ │ │ ├── controller-serviceaccount.yaml │ │ │ ├── dashboard-clusterrole.yaml │ │ │ ├── dashboard-clusterrolebinding.yaml │ │ │ ├── dashboard-deployment.yaml │ │ │ ├── dashboard-service.yaml │ │ │ └── dashboard-serviceaccount.yaml │ │ ├── kured │ │ │ └── templates │ │ │ ├── clusterrole.yaml │ │ │ ├── clusterrolebinding.yaml │ │ │ ├── daemonset.yaml │ │ │ ├── role.yaml │ │ │ ├── rolebinding.yaml │ │ │ └── serviceaccount.yaml │ │ └── nginx-ingress │ │ └── templates │ │ ├── clusterrole.yaml │ │ ├── clusterrolebinding.yaml │ │ ├── controller-deployment.yaml │ │ ├── controller-role.yaml │ │ ├── controller-rolebinding.yaml │ │ ├── controller-service.yaml │ │ ├── controller-serviceaccount.yaml │ │ ├── default-backend-deployment.yaml │ │ ├── default-backend-service.yaml │ │ └── default-backend-serviceaccount.yaml │ └── scripts │ └── local-ci.sh ├── wekan │ ├── authenticated-emails-sample.txt │ ├── wekan.env-sample │ └── wekan.yml └── wetty ├── wetty.env-sample └── wetty.yml
166 directories, 422 files
```