Skip to content

Comments

Add a Helm Chart for Plik#558

Merged
bodji merged 4 commits intoroot-gg:masterfrom
bodji:helm-chart
Feb 20, 2026
Merged

Add a Helm Chart for Plik#558
bodji merged 4 commits intoroot-gg:masterfrom
bodji:helm-chart

Conversation

@bodji
Copy link
Member

@bodji bodji commented Feb 13, 2026

Feat: add Helm Chart for Plik

Description

This PR introduces a comprehensive Helm chart to deploy Plik on Kubernetes.

It aims to provide a flexible and production-ready deployment method, supporting both stateless Deployment (for S3/GCS/Swift backends) and stateful StatefulSet (for local file backend with persistence) architectures.

Key Features

  • Flexible Architecture: Toggle between Deployment and StatefulSet via .Values.kind.
  • Configuration: Fully automated plikd.cfg generation from values.yaml via ConfigMap.
  • Secret Management: Sensitive configuration (DB passwords, Cloud credentials) is extracted to a Secret resource and injected as environment variables. Supports using an existingSecret for enhanced security.
  • Persistence: Optional PVC support for the file backend.
  • CI/CD: Includes a GitHub Action (pages.yml) to automatically build VitePress documentation and release the Helm chart to GitHub Pages on every push to master.
  • Documentation: Includes a CHANGELOG.md and detailed guide in docs/guide/helm.md.

Changelog

[0.1.1] - 2024-02-13

  • Fixed release workflow configuration

[0.1.0] - 2024-02-13

  • Initial Chart Implementation

Configuration

The values.yaml file mirrors the default plikd.cfg configuration, making it intuitive for existing Plik users to migrate.

Verification

The chart has been linted with helm lint.

To test the chart locally:

helm install plik ./charts/plik

@bodji bodji changed the title featt: Add a Helm Chart for Plik wip: Add a Helm Chart for Plik Feb 13, 2026
@bodji bodji force-pushed the helm-chart branch 7 times, most recently from ac1e1df to f4e07e1 Compare February 15, 2026 17:21
@bodji bodji changed the title wip: Add a Helm Chart for Plik wip: add a Helm Chart for Plik Feb 15, 2026
@bodji bodji force-pushed the helm-chart branch 2 times, most recently from c418caa to 62bb840 Compare February 16, 2026 13:05
@bodji
Copy link
Member Author

bodji commented Feb 16, 2026

docker build

@github-actions
Copy link

✅ Docker build and push successful!

Image: rootgg/plik:pr-558

@bodji
Copy link
Member Author

bodji commented Feb 16, 2026

docker deploy

@github-actions
Copy link

🚀 Deployment Successful!

The instance at plik.root.gg has been redeployed with image rootgg/plik:pr-558.

@bodji
Copy link
Member Author

bodji commented Feb 16, 2026

docker deploy

@github-actions
Copy link

🚀 Deployment Successful!

The instance at plik.root.gg has been redeployed with image rootgg/plik:pr-558.

@bodji
Copy link
Member Author

bodji commented Feb 16, 2026

docker deploy

@github-actions
Copy link

🚀 Deployment Successful!

The instance at plik.root.gg has been redeployed with image rootgg/plik:pr-558.

@bodji
Copy link
Member Author

bodji commented Feb 16, 2026

docker build

@github-actions
Copy link

✅ Docker build and push successful!

Image: rootgg/plik:pr-558

@camathieu camathieu force-pushed the helm-chart branch 3 times, most recently from 36669da to 86579a5 Compare February 20, 2026 09:40
- Add missing ingress.yaml template (was dead config in values.yaml)
- Rewrite configmap.yaml with explicit key ordering (fix non-deterministic rendering)
- Add NOTES.txt for post-install instructions
- Add missing config fields: FeatureLocalLogin, FeatureDeleteAccount, OvhApiKey,
  OIDCProviderName, OIDCRequireVerifiedEmail
- Fix DisableLocalLogin -> FeatureLocalLogin (match plikd config naming)
- Add OvhApiKey env var injection to secret.yaml
- Bump appVersion to 1.4-RC3
- Upgrade actions: gh-pages v4, setup-helm v4, chart-releaser v1.7.0
- Narrow .gitignore from */plik to client/plik (with comment)
- Polish docs/guide/kubernetes.md
- Update ARCHITECTURE.md, AGENTS.md, releaser/ARCHITECTURE.md with Helm references
- Add .github/ARCHITECTURE.md documenting all workflows
- ReadWriteOnce
size: 10Gi
# annotations: {}
path: /home/plik/server/files
Copy link

@kastl-ars kastl-ars Feb 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just tested this and I think this is not working as expected.

I installed the chart using persistence, uploaded a file and deleted the plik-0 pod. Afterwards the files are present in the PV, but of course the database (which is in /home/plik/server/) was gone, so the files were not known to Plik.

Unfortunately, just changing the path to /home/plik/server/ is not enough, as the executable and the configuration are also in this directory (and are being shadowed by the volumeMount....

As a crude hack I changed the database location to the files directory:

plikd:
  MetadataBackendConfig:
    ConnectionString: "/home/plik/server/files/plik.db"

This preserves the database as well as the files and a share survives a pod restart.

A cleaner solution would be a second PVC for the database...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right, I'll prepare this :)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here it is :
1ae0175

Can you validate on your side ? :)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using the following values.yaml it worked out of the box:

kind: StatefulSet
ingress:
  enabled: true
  hosts:
    - host: plik.example.org
      paths:
        - path: /
          pathType: ImplementationSpecific
persistence:
  enabled: true
  size: 1Gi
dbPersistence:
  enabled: true
  size: 1Gi

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah 🎉

We'll merge it soon for the 1.4-RC4 :)

Add a dedicated PersistentVolumeClaim for the SQLite metadata database,
independent of the file data PVC. Previously, when persistence was
enabled, the PVC only covered /home/plik/server/files. The database
(plik.db) lived at /home/plik/server/plik.db which was not on the PV,
causing all metadata to be lost on pod restart.

Changes:
- Add dbPersistence block to values.yaml (disabled by default, 1Gi,
  mounts at /home/plik/server/db)
- Add second PVC <release>-db in pvc.yaml (Deployment kind only)
- Add db volumeMount + volume in deployment.yaml (emptyDir or PVC)
- Add db volumeClaimTemplate in StatefulSet spec
- Change default MetadataBackendConfig.ConnectionString from relative
  'plik.db' to absolute '/home/plik/server/db/plik.db'
- Bump chart version to 0.3.0

The new path does not shadow the server binary or config in
/home/plik/server/. Both persistence and dbPersistence default to
emptyDir when disabled, making this fully backward-compatible.
@camathieu camathieu changed the title wip: add a Helm Chart for Plik Add a Helm Chart for Plik Feb 20, 2026
Copy link
Member

@camathieu camathieu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@bodji bodji merged commit 2269f73 into root-gg:master Feb 20, 2026
4 checks passed
@bodji bodji deleted the helm-chart branch February 20, 2026 15:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants