Skip to content

Latest commit

 

History

History
63 lines (41 loc) · 1.99 KB

README.md

File metadata and controls

63 lines (41 loc) · 1.99 KB

WebDAV server

A minimal WebDAV server for Simple Notes Sync, based on hacdias/webdav. Any other WebDAV server works too, this one is just the shortest way to get started.

Setup

cp config.yml.example config.yml

Edit config.yml and set a password under users:. The container does not start without this file. config.yml is in .gitignore, so your password stays out of git.

docker compose up -d

Check that it answers (expects 207 Multi-Status, a wrong password gives 401):

curl -u noteuser:YOUR_PASSWORD -X PROPFIND -H "Depth: 1" http://localhost:8080/

In the app, enter http://SERVER-IP:8080/ as the server URL.

Port

The server listens on 8080. To change it, create .env in this folder:

WEBDAV_PORT=9090

Day to day

docker compose logs -f                          # logs
docker compose pull && docker compose up -d     # update
docker compose down                             # stop

Data and backup

The notes are plain files in ./notes-data/: JSON in notes/, images in notes-assets/ and, if you turned them on, Markdown copies in notes-md/. To back them up, copy the folder:

tar -czf notes-backup-$(date +%Y%m%d).tar.gz notes-data/

HTTPS

The container speaks plain HTTP. That is fine inside your home network. The app refuses http:// for anything else, so for access from outside put a reverse proxy with a certificate in front of it. With Caddy, for example:

notes.example.com {
    reverse_proxy localhost:8080
}

Then use https://notes.example.com/ in the app.

Conflict detection does not depend on the server

This server ignores write preconditions: a PUT with a stale If-Match header overwrites the file instead of answering 412. That is fine. Before uploading, the app lists the folder and compares the E-Tags itself, which works with any WebDAV server. Servers that do honor If-Match (Nextcloud, ownCloud) get it as an extra safeguard.