diff options
Diffstat (limited to 'bundles/cal')
| -rw-r--r-- | bundles/cal/files/kube.yaml | 115 | ||||
| -rw-r--r-- | bundles/cal/files/radicale.conf | 7 | ||||
| -rw-r--r-- | bundles/cal/files/secret.yaml | 9 | ||||
| -rw-r--r-- | bundles/cal/items.py | 20 | ||||
| -rw-r--r-- | bundles/cal/metadata.py | 11 |
5 files changed, 162 insertions, 0 deletions
diff --git a/bundles/cal/files/kube.yaml b/bundles/cal/files/kube.yaml new file mode 100644 index 0000000..eece518 --- /dev/null +++ b/bundles/cal/files/kube.yaml @@ -0,0 +1,115 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: cal +data: + NEXTAUTH_URL: https://cal.gzr.im/web/ + NEXT_PUBLIC_APP_URL: https://cal.gzr.im/web/ + NEXT_PUBLIC_SITE_URL: https://cal.gzr.im/web/ + NEXT_PUBLIC_ENABLE_SAAS_FEATURES: false +--- +apiVersion: v1 +kind: Pod +metadata: + name: cal + labels: + traefik.enable: true + # radicale + traefik.http.routers.radicale.tls: true + traefik.http.routers.radicale.tls.certresolver: le + traefik.http.routers.radicale.entrypoints: http,https + traefik.http.routers.radicale.rule: Host(`cal.gzr.im`) && PathPrefix(`/dav`) + traefik.http.middlewares.radicale-headers.headers.customrequestheaders.X-Script-Name: /dav + traefik.http.middlewares.radicale-stripprefix.stripprefix.prefixes: /dav + traefik.http.routers.radicale.middlewares: radicale-stripprefix@docker + traefik.http.routers.radicale.service: radicale + traefik.http.services.radicale.loadbalancer.server.port: 5232 + # fluidcal + traefik.http.routers.fluidcal.tls: true + traefik.http.routers.fluidcal.tls.certresolver: le + traefik.http.routers.fluidcal.entrypoints: http,https + traefik.http.routers.fluidcal.rule: Host(`cal.gzr.im`) && PathPrefix(`/`) + traefik.http.routers.fluidcal.service: fluidcal + traefik.http.services.fluidcal.loadbalancer.server.port: 3000 + # well-known + traefik.http.middlewares.wellknowncarddav-redirect.redirectregex.regex: ^https://cal.gzr.im/.well-known/carddav + traefik.http.middlewares.wellknowncarddav-redirect.redirectregex.replacement: https://cal.gzr.im/dav/ + traefik.http.middlewares.wellknowncaldav-redirect.redirectregex.regex: ^https://cal.gzr.im/.well-known/caldav + traefik.http.middlewares.wellknowncaldav-redirect.redirectregex.replacement: https://cal.gzr.im/dav/ + traefik.http.routers.fluidcal.middlewares: wellknowncarddav-redirect,wellknowncaldav-redirect +spec: + restartPolicy: Never + dnsPolicy: Default + containers: + - name: radicale + image: index.docker.io/grepular/radicale:3.5 + volumeMounts: + - name: radicale-config + mountPath: /etc/radicale + readOnly: true + - name: radicale-data + mountPath: /var/lib/radicale + ports: + - containerPort: 5232 + protocol: TCP + # livenessProbe: + # httpGet: + # path: / + # port: 5232 + resources: + requests: + cpu: 10m + memory: 25Mi + limits: + cpu: 100m + memory: 128Mi + + # - name: fluidcal + # image: index.docker.io/eibrahim/fluid-calendar:1.4 + # ports: + # - containerPort: 3000 + # protocol: TCP + # envFrom: + # - configMapRef: + # name: cal + # - secretRef: + # name: cal + # livenessProbe: + # httpGet: + # path: / + # port: 3000 + # # resources: + # # limits: + # # cpu: 100m + # # memory: 128Mi + # + # - name: postgres + # image: docker.io/library/postgres:15-alpine + # volumeMounts: + # - name: pg-data + # mountPath: /var/lib/postgresql/data + # envFrom: + # - secretRef: + # name: cal + # livenessProbe: + # exec: + # command: ["pg_isready", "-U", "cal"] + # initialDelaySeconds: 5 + # # resources: + # # limits: + # # cpu: 100m + # # memory: 128Mi + + volumes: + - name: radicale-config + hostPath: + path: /etc/radicale + type: DirectoryOrCreate + - name: radicale-data + hostPath: + path: /var/lib/radicale + type: DirectoryOrCreate + - name: pg-data + hostPath: + path: /var/lib/fluidcal + type: DirectoryOrCreate diff --git a/bundles/cal/files/radicale.conf b/bundles/cal/files/radicale.conf new file mode 100644 index 0000000..e5933ee --- /dev/null +++ b/bundles/cal/files/radicale.conf @@ -0,0 +1,7 @@ +[server] +# Bind all addresses +hosts = 0.0.0.0:5232, [::]:5232 +script_name = /dav + +[auth] +type = none diff --git a/bundles/cal/files/secret.yaml b/bundles/cal/files/secret.yaml new file mode 100644 index 0000000..ddf91fe --- /dev/null +++ b/bundles/cal/files/secret.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: cal +data: + NEXTAUTH_SECRET: ${repo.vault.password_for("cal_fluidcalendar_secret").b64encode().value} + POSTGRES_USER: ${repo.libs.util.base64("cal")} + POSTGRES_PASSWORD: ${repo.vault.password_for("cal_db_pw").b64encode().value} + DATABASE_URL: ${repo.libs.util.base64(f"postgresql://cal:{repo.vault.password_for("cal_db_pw")}@localhost/fluid_calendar")} diff --git a/bundles/cal/items.py b/bundles/cal/items.py new file mode 100644 index 0000000..5836213 --- /dev/null +++ b/bundles/cal/items.py @@ -0,0 +1,20 @@ +directories = { + "/var/lib/radicale/collections": { + "owner": "1000", + "group": "1000", + }, +} +files = { + "/etc/deployments/cal/kube.yaml": { + "triggers": {"svc_s6rc:cal:restart"}, + }, + "/etc/deployments/cal/secret.yaml": { + "content_type": "mako", + "mode": "0600", + "triggers": {"svc_s6rc:cal:restart"}, + }, + "/etc/radicale/config": { + "source": "radicale.conf", + "triggers": {"svc_s6rc:cal:restart"}, + }, +} diff --git a/bundles/cal/metadata.py b/bundles/cal/metadata.py new file mode 100644 index 0000000..7021b95 --- /dev/null +++ b/bundles/cal/metadata.py @@ -0,0 +1,11 @@ +defaults = { + "backup": { + "includes": { + "/var/lib/radicale", + # "/var/lib/fluidcal", + } + }, + "containers": { + "cal": {}, + }, +} |