Awesome
Inspired by linkding on fly.io
Storing the state in s3
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.
Contents of manifest.yaml
- 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.
Setup
$ 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