This is the 12th post in a series about protecting your privacy by self-hosting while attempting to maintain the conveniences of public cloud services.
See the bottom of this post for a list.
Another Note-Taking App?
This isn’t the first in this series to cover self-hosting a note-taking app. Back in the third post in this series, I covered how to set up Nextcloud and Syncthing. With that solution, note-taking worked quite well on my desktop or laptop. However, on my phone, I found that over time it was insufficient for my needs.
I recently discovered a new app called Notea. It is still early in development but is quite usable and simple in its design. Using on a desktop browser works well, as does the app in a mobile browser on my iPhone (tip: use Safari and Add to Home Screen). The app even supports the upload and display of images inline in your notes.
First, we’ll set up the containers needed to run the app.
Notea relies on an AWS S3-style bucket. Luckily, there is an easy-to-set-up local implementation of this called Minio. One nice thing about this setup is that notes are saved as simple Markdown files on your server and can be easily backed up.
We’ll setup a
notea/docker-compose.yml that contains both Notea and Minio:
version: "3" services: notea-webapp: image: cinwell/notea container_name: notea-webapp ports: - "3000:3000" environment: - STORE_ACCESS_KEY=YOUR_ACCESS_KEY - STORE_SECRET_KEY=YOUR_SECRET_KEY - STORE_BUCKET=notea - STORE_END_POINT=http://YOUR_SERVER:9000 - STORE_FORCE_PATH_STYLE=true - PASSWORD=YOUR_PASSWORD - COOKIE_SECURE=true - BASE_URL="http://YOUR_SERVER:3000/" notea-db: image: minio/minio container_name: notea-db ports: - "9000:9000" volumes: - /PATH_TO_YOUR_DATA/notea:/data command: server /data
Next, we’ll have to create a bucket in our Minio server to store our data. Let’s create a
export MINIO_DOCKER_NAME=notea-db export MINIO_ACCESS_KEY=YOUR_ACCESS_KEY export MINIO_SECRET_KEY=YOUR_SECRET_KEY export MINIO_BUCKET=notea docker run --name $MINIO_DOCKER_NAME -d -p 9000:9000 -e MINIO_ACCESS_KEY=$MINIO_ACCESS_KEY -e MINIO_SECRET_KEY=$MINIO_SECRET_KEY minio/minio server /data docker run --rm --link $MINIO_DOCKER_NAME:minio -e MINIO_BUCKET=$MINIO_BUCKET --entrypoint sh minio/mc -c "\ while ! nc -z minio 9000; do echo 'Wait minio to startup...' && sleep 0.1; done; \ sleep 5 && \ mc config host add myminio http://YOUR_SERVER:9000 \$MINIO_ENV_MINIO_ACCESS_KEY \$MINIO_ENV_MINIO_SECRET_KEY && \ mc rm -r --force myminio/\$MINIO_BUCKET || true && \ mc mb myminio/\$MINIO_BUCKET && \ mc policy download myminio/\$MINIO_BUCKET \ "
Startup and Access
notea$ docker-compose up -d notea$ chmod +x create-buckets.sh notea$ ./create-buckets.sh
You should now be able to visit the URL you specified earlier (
http://YOUR_SERVER:3000/), and enter the password you specified to begin using the app.
As this app is under active development, you might want to regularly update. A simple way to do this is to run the following to pull the latest version of the images:
notea$ docker-compose down notea$ docker-compose pull notea$ docker-compose up -d
Self-Hosting Your Own Cloud
- Setting up OpenVPN
- SMB File Server with Automated Backups using Rsync/Rclone
- Note-taking with Nextcloud & Syncthing
- Movies and Music using Emby
- Protect Yourself Online with Privacy Tools
- Ad and Tracker Blocking with Pi-Hole
- Building a Personal Private Network with WireGuard
- Monitoring Your Internet Traffic with ntopng
- Building a NAS with ZFS
- Photos and Videos
- Monthly Optical Data Backups
- Note-taking with Notea (this post)