# DocStore - document server and indexing engine ## Building **Requirements:** * Go (golang) >= 1.12 Linux: ``` make or offline make vendor ``` OpenBSD: ``` GOOS=openbsd make or offline GOOS=openbsd make vendor ``` ## Install **Requirements:** * tesseract * pdftotext See the `scripts/` directory on how to install docstore on Linux or OpenBSD. ## Config ``` { "run_dir": "/var/lib/docstore", // running directory. data will be stored here "user": "docstore", // drop privileges to user "group": "docstore", // drop privileges to group "listen_addr": "127.0.0.1:8080", // listening
: "log_file": "docstore.log", // log file (use - for stdout, this only works in combination with 'foreground: true') "secret": "", // static hmac secret (at least 64 chars, used for JWT signing) "langs": ["deu", "eng"], // languages for tesseract ocr "cmd_timeout": 600, // timeout in seconds for executed teseract and pdftotext commands "tesseract_threads": 1, // tesseract thread limit "tesseract_oem": 1, // tesseract oem value "foreground": false, // do not fork into the background "secure_cookie": false, // enable secure cookie flag "debug": false, // enable debugging "webdav": false // enable webdav upload } ``` ## Features * Fulltext indexing of documents * Query Syntax: https://github.com/bcampbell/qs/blob/master/syntax.md * The `Index All` button tries add every file not already indexed to the index * Custom regex based tags (see https://golang.org/pkg/regexp/syntax/) * The `Retag All` button will reapply the current tags to all indexed documents * Optional WebDav upload functionality * WebDav can be accessed at `http://:/webdav` * This WebDav does only permit writing files **once** (reading files or creating directories is not allowed) * Password hashing using BCrypt * 2FA using TOTP * Content Security Policy * No Javascript (yet) ### DocStore on OpenBSD DocStore makes use of the OpenBSD native security features [pledge(2)](https://man.openbsd.org/pledge) and [unveil(2)](https://man.openbsd.org/unveil). ## Usage DocStore manages all files and directories under the `$run_dir/data` directory. Do not delete or move files around in the `$run_dir/data` directory using the filesystem as this messes with the index mapping. You can however add more files and directories using the underlying file system.