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.