A Docker repository to have a simple Caddy+Keeweb+Webdav solution
Find a file
2024-07-20 18:10:57 +00:00
.github/workflows chore: move to new way of setting variables 2023-06-21 15:53:42 +02:00
.vscode chore: cleanup & ignore for words in vscode spellcheck 2022-01-09 22:37:52 +01:00
versions Caddy: v2.8.4 - Keeweb: v1.18.7 2024-07-20 18:10:57 +00:00
.gitignore feat: work with caddy v2 2022-01-09 17:50:58 +01:00
Caddyfile feat: remove kdbx folder as it's not useful anymore 2022-01-09 18:18:28 +01:00
config.json Better presets 2019-08-07 14:44:33 +02:00
Dockerfile chore: Echo $apkArch 2023-03-07 14:20:28 +01:00
LICENSE Create LICENSE 2019-04-18 22:00:55 +02:00
README.md chore: cleanup & ignore for words in vscode spellcheck 2022-01-09 22:37:52 +01:00

A docker solution for Keeweb+WebDav

A Docker repository to have a simple Caddy+Keeweb+Webdav solution.

The focus of this repository is simplicity so you can roll your own auto hosted Keeweb and Webdav solution.

You can use Keepass synchronisation with the following url: https://example.com/database.kdbx

Technical stack

Pretty simple:

  • Caddy in http mode with webdav extension;
  • Keeweb with a special config removing unused options by default.

Caddy is configured to serve all files ending in .kdbx through webdav without authentication, for ease of use.

Trial run in docker

⚠ This will not be secured by https! ⚠

docker run -p 8080:8080 slurdge/keewebdav

Run in docker-compose with a traefik load balancer (https)

You can use the following docker-compose.yml file with traefik v2:

version: '2'
services:
  keeweb:
    image: slurdge/keewebdav:latest
    container_name: keeweb
    restart: always
    volumes:
      - ./data:/srv/dav
    labels:
      - "traefik.http.routers.keeweb.rule=Host(`example.com`)"
      - "traefik.http.routers.keeweb.tls.certresolver=le"
    networks:
      - proxy

networks:
  proxy:
    external: true

You can use the following docker-compose.yml file with traefik v1:

version: '2'
services:
  keeweb:
    image: slurdge/keewebdav:latest
    container_name: keeweb
    restart: always
    volumes:
      - ./data:/srv/dav
    labels:
      - "traefik.enable=true"
      - "traefik.port=8080"
      - "traefik.frontend.rule=Host:example.com"
      - "traefik.docker.network=proxy"
    networks:
      - proxy

networks:
  proxy:
    external: true

Both examples supposes that there is a network named 'proxy' that is used by traefik.

Extensions

It's pretty easy to add http-auth to caddy and even https. Please send PR if you want this functionality included.