Inspired by linkding on fly.io
You'll an s3 compatible bucket, like backblaze, aws, cloudflare or any compatible provider. Litestream will restore the bucket in an emptyDir
. Then during operation a litestream
sidecar will live replicate the changes to s3.
- a
Namespace
for the project - a
ConfigMap
containinglitestream.yml
config- replace
$S3_ENDPOINT
with your bucket config
- replace
- a
StatefulSet
containing- an
initContainer
to restore the sqlite db - a
Pod
withlinkding
+litestream
official images
- an
- a
Service
to expose the pods- I'm using tailscale annotations, replace these with traefik or your favorite ingress controller stuff.
$ export S3_ENDPOINT=<REPLACE ME>
$ export S3_BUCKET=<REPLACE ME>
$ export S3_PATH=<REPLACE ME>
$ export S3_ACCESS_KEY_ID=<REPLACE ME>
$ export S3_SECRET_ACCESS_KEY=<REPLACE ME>
$ envsubst <manifest.yaml | kubectl apply -f -
$ kubectl create secret -n linkding generic litestream-s3 \
--from-literal=LITESTREAM_ACCESS_KEY_ID=$S3_ACCESS_KEY_ID \
--from-literal=LITESTREAM_SECRET_ACCESS_KEY=$S3_SECRET_ACCESS_KEY