Installing Joplin in kubernetes for free evernote like notetaking.

May 03, 2023
I was doing this competitive strategy building for my technology consulting firm. And I needed to document a lot of notes with grate support for attaching screenshots and images. Was going over ken bruke's guide to competitive strategy building.  I could not find a nice binder to document all of my competiton to build a competitive analysis sheet. So decided to go digital, Now I have used various tools before for notetaking. (evernote, apple notes, mkdocs, Markdown systems .. etc ) .  But one of my current goals is to move away from apple products and services and host my own data. I decided to search for a free and open source self hosted options. Also was playing around with k3s and traefik.
Quick google led me to joplin, which seemed like a nice alternative and quite mature too.  I wanted to see if there were any pre-built helm charts.   Came across a nice well maintained chart here

Let's add above repo into our repo list in our local machine with following commands.
helm repo add qjoly 

Now I want to look at the values. 
helm show values qjoly/joplin >> values.yaml

Here was the values.yaml . 
replicaCount: 1

  repository: joplin/server
  pullPolicy: IfNotPresent
  tag: "2.10.9-beta"

  dbname: joplindb
  dbuser: joplinuser
  dbpassword: veryhugepasswordhere
    repository: postgres
    pullPolicy: IfNotPresent
    tag: 15

  base_url: http://ur-domain.tld:22300

  enabled: false
  host: mailserver
  noreplymail: noreply@mailserver
  noreplyname: noreplyname@mailserver
  port: 25
  user: usermail
  password: password
  security: none #  none / TLS / STARTLS

imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""

podAnnotations: {}

  fsGroup: 2000

  # capabilities:
  #   drop:
  #   - ALL
  # readOnlyRootFilesystem: true
  # runAsNonRoot: true
  #  runAsUser: 1000

    type: ClusterIP
    port: 22300
    type: ClusterIP
    port: 5432

  storageClassName: "" # leave empty if you want to use default
  enabled: true
  size: "1Gi" # We recommend to allocate a minimum of 1GB if you do not use attachments
# Uncomment if you want to use an existing PVC
#  pvcClaim: ur_pvc

  isIngressRoute: false
  enabled: true
  className: "" # Only if you use ingress
  annotations: {}
  domain: ur-domain.tld
  entrypoint: websecure # Useless if you use ingressroute
  certresolver: letsencrypt

resources: {}
  # limits:
  #   cpu: 100m
  #   memory: 128Mi
  # requests:
  #   cpu: 100m
  #   memory: 128Mi

nodeSelector: {}

tolerations: []

affinity: {}

Since I mostly use for keeping track of my apps instead of remembering specific ports. ( I Know i should host heimdall, Perhaps someday ) . I needed to change a few configurations there. 

Let's change the base_url for our joplin_app first. and I hate to have ports in my cluster 

I do not use Nginx reverse proxy but use traefik
So I quickly wrote up an ingressroute. 
kind: IngressRoute
  name: joplin-ingress-route
  - web
  - websecure
  - kind: Rule
    match: Host("")
    - name: joplin-app
      port: 22300

Now I need to apply this ingress route 
kubectl apply -f ingressroute.yaml
and tada .
Going over to the url and using default username and password (i.e : admin@localhost and admin ) .
Screenshot 2023-05-03 at 13.40.08.png 292 KB

Now I Needed a client . I downloaded a client in my 2018 macbook pro. and followed instructions as shown above, Quite happy with results so far.
Screenshot 2023-05-03 at 13.42.16.png 755 KB

There you go , Have a free version of evernote like notetaking capabilities forever,  If you need help or have opinions regarding this. Feel free to reach out.