docstore/README.md
2021-02-18 22:52:36 +01:00

2.5 KiB

DocStore - document server and indexing engine

Building

Requirements:

  • Go (golang) >= 1.16

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 <address>:<port>
	"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
  • 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://<ip>:<port>/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) and unveil(2).

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.