Skip to content

obsidian-livesync

Note: When setting up for the first time you need to create the directories for both the etc and the data and make sure they are owned by the same UID as the CouchDB container (default 5984) to avoid permission issues.

Below are the configuration files for this service. For details on how to deploy or customize, refer to the README above or the official documentation for the service.

Docker Compose Configuration

services:
  couchdb:
    image: couchdb:latest
    container_name: obsidian-livesync
    restart: unless-stopped
    environment:
      - COUCHDB_USER=${COUCHDB_USER}
      - COUCHDB_PASSWORD=${COUCHDB_PASSWORD}
    volumes:
      - ${STORAGE_PATH}/obsidian-livesync/data:/opt/couchdb/data
      - ${STORAGE_PATH}/obsidian-livesync/local.ini:/opt/couchdb/etc/local.d
    ports:
      - 5984:5984
    labels:
      - "traefik.enable=true"
        # The Traefik Network
      - "traefik.docker.network=web"
      # Don't forget to replace 'obsidian-livesync.example.org' with your own domain
      - "traefik.http.routers.obsidian-livesync.rule=Host(`obsidian-livesync.${DOMAIN}`)"
      # The 'websecure' entryPoint is basically your HTTPS entrypoint. Check the next code snippet if you are encountering problems only; you probably have a working traefik configuration if this is not your first container you are reverse proxying.
      - "traefik.http.routers.obsidian-livesync.entrypoints=websecure"
      - "traefik.http.routers.obsidian-livesync.service=obsidian-livesync"
      - "traefik.http.services.obsidian-livesync.loadbalancer.server.port=5984"
      - "traefik.http.routers.obsidian-livesync.tls=true"
      # Replace the string 'letsencrypt' with your own certificate resolver
      - "traefik.http.routers.obsidian-livesync.tls.certresolver=letsencrypt"
      - "traefik.http.middlewares.obsidiancors.headers.accessControlAllowOriginList=app://obsidian.md,capacitor://localhost,http://localhost"
      - "traefik.http.middlewares.obsidiancors.headers.accessControlAllowMethods=GET,POST,PUT,DELETE,OPTIONS,HEAD"
      - "traefik.http.middlewares.obsidiancors.headers.accessControlAllowHeaders=Authorization,Content-Type,Accept,Origin,X-Requested-With"
      - "traefik.http.middlewares.obsidiancors.headers.accessControlAllowCredentials=true"
      - "traefik.http.middlewares.obsidiancors.headers.accessControlMaxAge=86400"
      - "traefik.http.middlewares.obsidiancors.headers.addVaryHeader=true"
      - "traefik.http.routers.obsidian-livesync.middlewares=obsidiancors"
    networks:
      - web
networks:
  web:
    external: true

Environment Variables (.env.example)

# obsidian/.env
# Copy to .env and fill in real values. NEVER commit .env.

COUCHDB_USER=admin
COUCHDB_PASSWORD=REPLACE_WITH_STRONG_PASSWORD