In one of my previous posts we deployed the Joplin server using docker-compose. Now we will deploy it on the Kubernetes cluster using ArgoCD.
Because I couldn't find an easy helm chart for Joplin, I created my own. You can find it in my helmcharts repository. If you want to add this repo to ArgoCD, go to
repositories. There you can choose
Connect Repo using SSH or
Connect Repo using HTTPS. If you have a GitHub account with a ssh key connected, you could use the SSH option and fill in your SSH private key. If you don't you'll have to use HTTPS. Copy the link from the GitHub repo in the correct field and choose a project to attach the repo to.
Later you could scope that repository to multiple projects.
Now you can go back to the home page of ArgoCD and click
New App. Choose a name for your deployment. Choose the
default project as we've added the repo to that project.
Sync Policy can be set to
Automatic if you want changes to be deployed automatically, but as I like more control I chose the
Manual option. Check
Auto-Create Namespace if you want ArgoCD to create the namespace for you.
source pane, select the just created repository and pick the
joplin chart. I pick the latest version, which is
5.0.0 at the time of writing this. At
Destination you can pick your cluster and choose a namespace to deploy to.
Now we have to fill in the correct values for our environment. We can overwrite specific values in the overview below, but for the ease of copy-pasting we'll write it in
Values field. The values and explenation can be found here and here.
global: storageClass: "nfs-client" app_url: "joplin.example.com" postgresql: auth: password: "ChangeMe!" postgresPassword: "ChangeMe!" postgresql: enabled: true ingress: enabled: true tls: true annotations: "kubernetes.io/ingress.class": "public" "cert-manager.io/cluster-issuer": "letsencrypt-prd" "nginx.ingress.kubernetes.io/proxy-body-size": 16m mail: enabled: true host: "smtp.example.com" port: "587" encryption: "starttls" username: "username" password: "password" from: "firstname.lastname@example.org" from_name: "Joplin"
Filled in, it will look something like this:
Once you've clicked
Create, you'll get an overview of what will be created.
Now you can click on
Sync to bring the application to its desired configuration
Joplin should now be reachable using the url you used in the values file. Now you can log in using the default credentials (user:
admin). Change those credentials!. Now you can start adding users and syncing data to it.
Syncing notes & Migrating Old Data
I don't want to lose the data I already had on my existing Joplin server. But as everything is also stored locally, I just had to make sure everything was synced. Next I changed my sync target in Joplin to the new server. It uploaded everything to the new server.