Syncing Joplin with AWS S3
TLDR; I have written a script that automates the process of creating an S3 bucket and accompanying resources on my Github. Note that you will need to install the AWS CLI in order to run the script.
Why Joplin?
I have found that Joplin makes the creation of notes very seamless. There are three main reasons that make the note taking process so simple.
The first is that the interface is extremely simple and easy to use. You can create folders and subfolders for organising your notes and you can create a note. All these actions are very intuitive on all the clients I have used.
The second is that there is minimal note styling, and all the styling is done with Markdown. This benefit may be quite specific to me, but I find Markdown very easy to write once you know the basics.
The third is that you can sync your notes with a centralised server, meaning you can share the notes across mutiple devices. This takes away the physical barrier of needing to have the correct note taking device with you when a thought comes to your head. If you’re at your PC you can open the MacOS, Windows or Linux client. If you’re out of the house you can just open the Joplin app on your phone.
Some other benefits are that Joplin is free and all notes are End to End Encrypted, meaning that notes on the server can not be read by any malicious actors.
How to set up Joplin using AWS S3 for Synchronisation
Another reminder I have written a script to automate the creation of the AWS resources needed by Joplin.
There are several AWS resources needed to allow Joplin to Sync with AWS:
S3 Bucket
S3 is AWS' object storage solution. It is essentially cloud file storage. Joplin Synchronises with S3 by pushing the encrypted markdown files to S3, along with some other files containing metadata. A bucket is the highest level of organising objects that you push to S3, where an object is a file with some attached metadata.
IAM policy
IAM is AWS' access management service, and lets you control access to your AWS resources. An IAM policy defines a list of actions and resources. A policy can be attached to an identity, for example a user to grant them permission to perform the actions on the resources specified in the policy.
IAM Service Account
This is a user that we can attach a policy to. We can also create access keys for the account so that Joplin is able to act as the account and use the permissions to act on the objects in the S3 bucket.
Using the script
In order to use the script, you need to have set up the AWS CLI and authorised with your root account. You then just need to run the script with the bucket name as the first argument and the script will return all the data needed in the Joplin Synchronisation settings.
./create-bucket.sh joplin-test-notes
==== JOPLIN SYNC SETTINGS ===
Sync Target: S3
Bucket: joplin-test-notes
URL: https://s3.eu-west-2.amazonaws.com
Region: eu-west-2
Access Key: AKIA5xxxxxxxSLRC4Y
Secret Key: d7l6RWrCPxxxxxxxxxuO2kQUBIqYNtS3