Self-Hosted Journaling

I've been looking for a self hosted journaling solution for a few weeks now on and off and have tried a few. But today I've settled on SilverBullet. It's incredibly flexible and developer-friendly.

It's also really easy to host in k8s, here's a quick intro into what it can do:

Here's my no frills deployment: (I don't think you really need any frills to be fair)

You probably want to change the PVC storageClassName unless you also use Longhorn.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: silverbullet-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: longhorn

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: silverbullet
spec:
  replicas: 1
  selector:
    matchLabels:
      app: silverbullet
  template:
    metadata:
      labels:
        app: silverbullet
    spec:
      containers:
        - name: silverbullet
          image: ghcr.io/silverbulletmd/silverbullet:v2
          ports:
            - containerPort: 3000
          volumeMounts:
            - mountPath: /space
              name: silverbullet-data
      volumes:
        - name: silverbullet-data
          persistentVolumeClaim:
            claimName: silverbullet-pvc

---
apiVersion: v1
kind: Service
metadata:
  name: silverbullet
spec:
  type: ClusterIP
  selector:
    app: silverbullet
  ports:
    - protocol: TCP
      port: 3000
      targetPort: 3000

All of my services run as ClusterIP as I expose them externally with a Cloudflared Tunnel from inside the cluster. If just using locally then NodePort would suffice.