docker.recipes

Logseq Sync Alternative

intermediate

Self-hosted file sync for Logseq using WebDAV server for cross-device synchronization.

Overview

WebDAV (Web Distributed Authoring and Versioning) is an HTTP protocol extension that enables collaborative editing and file management on remote web servers. Developed in the late 1990s as RFC 4918, WebDAV transforms any HTTP server into a network file system, allowing clients to perform operations like creating, changing, and moving documents on a server. This makes it an ideal protocol for synchronizing files across devices, particularly for applications like note-taking tools that require consistent data availability. This stack combines the lightweight Bytemark WebDAV server with NGINX as a reverse proxy to create a robust file synchronization service specifically optimized for Logseq. The Bytemark WebDAV container provides a standards-compliant WebDAV implementation with HTTP Basic authentication, while NGINX handles SSL termination, request routing, and provides additional security layers. Together, they create a self-hosted alternative to commercial sync services, giving users complete control over their note data and synchronization infrastructure. This solution is perfect for privacy-conscious knowledge workers, teams requiring data sovereignty, and organizations that need to keep sensitive research or business notes within their own infrastructure. The combination offers enterprise-grade reliability while remaining simple enough for individual users to deploy on personal servers, making it an excellent choice for anyone seeking independence from cloud-based sync services without sacrificing functionality or cross-platform compatibility.

Key Features

  • RFC 4918 compliant WebDAV server supporting standard file operations across all major operating systems
  • HTTP Basic authentication with configurable username/password pairs for secure access control
  • NGINX reverse proxy providing SSL/TLS termination and HTTP/2 support for encrypted synchronization
  • Event-driven NGINX architecture optimizing performance for concurrent Logseq client connections
  • WebDAV PROPFIND and PROPPATCH support enabling Logseq metadata synchronization and conflict resolution
  • NGINX rate limiting and connection management preventing sync conflicts during high-frequency updates
  • Cross-platform compatibility supporting Logseq desktop, mobile, and web clients simultaneously
  • WebDAV LOCK/UNLOCK mechanisms ensuring data integrity during concurrent editing sessions

Common Use Cases

  • 1Personal knowledge management with Logseq synchronization across desktop and mobile devices
  • 2Small research teams sharing and collaborating on interconnected notes and documentation
  • 3Academic institutions providing students with self-hosted note synchronization infrastructure
  • 4Consulting firms maintaining client confidentiality by keeping project notes on private servers
  • 5Privacy-focused individuals avoiding commercial sync services like iCloud or Dropbox for personal data
  • 6Remote development teams synchronizing technical documentation and meeting notes across time zones
  • 7Healthcare organizations maintaining HIPAA-compliant patient note synchronization for authorized staff

Prerequisites

  • Minimum 256MB RAM for NGINX Alpine container and WebDAV server concurrent operation
  • Ports 80, 443, and 8080 available for HTTP, HTTPS, and direct WebDAV access respectively
  • SSL certificates configured for production HTTPS access (Let's Encrypt or commercial CA)
  • Basic understanding of WebDAV protocol and Logseq sync configuration settings
  • Network firewall rules allowing WebDAV traffic on configured ports from client devices
  • WEBDAV_USER and WEBDAV_PASSWORD environment variables configured for authentication

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 webdav:
3 image: bytemark/webdav:latest
4 ports:
5 - "8080:80"
6 environment:
7 AUTH_TYPE: Basic
8 USERNAME: ${WEBDAV_USER}
9 PASSWORD: ${WEBDAV_PASSWORD}
10 volumes:
11 - webdav_data:/var/lib/dav
12 networks:
13 - logseq-net
14 restart: unless-stopped
15
16 nginx:
17 image: nginx:alpine
18 ports:
19 - "80:80"
20 - "443:443"
21 volumes:
22 - ./nginx.conf:/etc/nginx/nginx.conf:ro
23 depends_on:
24 - webdav
25 networks:
26 - logseq-net
27 restart: unless-stopped
28
29volumes:
30 webdav_data:
31
32networks:
33 logseq-net:
34 driver: bridge

.env Template

.env
1# WebDAV Credentials
2WEBDAV_USER=logseq
3WEBDAV_PASSWORD=secure_password

Usage Notes

  1. 1WebDAV at http://localhost:8080
  2. 2Configure Logseq sync settings
  3. 3Works with any WebDAV client
  4. 4Cross-platform synchronization

Individual Services(2 services)

Copy individual services to mix and match with your existing compose files.

webdav
webdav:
  image: bytemark/webdav:latest
  ports:
    - "8080:80"
  environment:
    AUTH_TYPE: Basic
    USERNAME: ${WEBDAV_USER}
    PASSWORD: ${WEBDAV_PASSWORD}
  volumes:
    - webdav_data:/var/lib/dav
  networks:
    - logseq-net
  restart: unless-stopped
nginx
nginx:
  image: nginx:alpine
  ports:
    - "80:80"
    - "443:443"
  volumes:
    - ./nginx.conf:/etc/nginx/nginx.conf:ro
  depends_on:
    - webdav
  networks:
    - logseq-net
  restart: unless-stopped

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 webdav:
5 image: bytemark/webdav:latest
6 ports:
7 - "8080:80"
8 environment:
9 AUTH_TYPE: Basic
10 USERNAME: ${WEBDAV_USER}
11 PASSWORD: ${WEBDAV_PASSWORD}
12 volumes:
13 - webdav_data:/var/lib/dav
14 networks:
15 - logseq-net
16 restart: unless-stopped
17
18 nginx:
19 image: nginx:alpine
20 ports:
21 - "80:80"
22 - "443:443"
23 volumes:
24 - ./nginx.conf:/etc/nginx/nginx.conf:ro
25 depends_on:
26 - webdav
27 networks:
28 - logseq-net
29 restart: unless-stopped
30
31volumes:
32 webdav_data:
33
34networks:
35 logseq-net:
36 driver: bridge
37EOF
38
39# 2. Create the .env file
40cat > .env << 'EOF'
41# WebDAV Credentials
42WEBDAV_USER=logseq
43WEBDAV_PASSWORD=secure_password
44EOF
45
46# 3. Start the services
47docker compose up -d
48
49# 4. View logs
50docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/logseq-sync-server/run | bash

Troubleshooting

  • 401 Unauthorized errors: Verify WEBDAV_USER and WEBDAV_PASSWORD environment variables match Logseq client credentials
  • Logseq sync timeout failures: Increase NGINX proxy_read_timeout and proxy_send_timeout values in nginx.conf
  • WebDAV PROPFIND method not allowed: Ensure nginx.conf allows WebDAV methods (PROPFIND, PROPPATCH, MKCOL, DELETE)
  • File corruption during sync: Check WebDAV container disk space and verify volume mount permissions are correctly set
  • SSL certificate verification errors: Configure proper SSL certificates in NGINX or disable certificate verification in Logseq client for self-signed certificates
  • High memory usage during large graph sync: Adjust NGINX worker processes and implement request rate limiting for WebDAV endpoints

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Ad Space