Git Product home page Git Product logo

keepass4web's Introduction

⚠ [DEPRECATED]

This repo is not maintained anymore.

Please see the (not yet feature-complete) rewrite in Rust. The rewrite has better security and supports kdbx4 databases.

Table of Contents generated with DocToc

KeePass4Web

A mobile-friendly web application which serves KeePass database entries on a web frontend.

Written in Perl and JavaScript.

FEATURES

  • Users need to authenticate with one of the auth backends (LDAP, Htpasswd, SQL, ...) before they can open a database
  • Server can fetch databases from various locations (Filesystem, Seafile, Dropbox, ...)
  • Either all users get access to the same database or each user gets access to his/her own
  • Doesn't save master password, uses a new and unique encryption key to cache the database
  • Caches encrypted databases in shared memory (so it works with multiple web server workers)
  • Encryption key is stored in the kernel keyring and therefore doesn't swap to disk
  • Passwords, protected fields and files are encrypted separately (also the ones in history). The web server only decrypts requested information. This way other passwords don't stay in memory in plain text and don't leave the server
  • Server revokes encryption keys after a configurable user idle time, effectively removing access to the cached database
  • Web interface offers entry search and access to files stored inside the database. Also displays custom entry icons
  • Highly configurable

Login

App

INSTALL

BUILD FRONTEND

The minified, bundled file will be written to public/scripts/bundle.js

  • Install Node/npm, e.g. for Ubuntu

    sudo apt-get install npm

  • Install js modules

    npm install

  • Copy bootstrap font files

    cp node_modules/bootstrap/fonts/* public/fonts/

  • Build js bundle

    npm run build

  • For a non-uglified version you can run

    npm run dev

MODULE INSTALLATION

E.g. for Ubuntu 22.04 with mod_perl2:

  • Install distro packages

    sudo apt-get install build-essential libkeyutils-dev libkeyutils1 libmagic1 libmagic-dev libapache2-mod-perl2 cpanminus

  • Install dependencies with all backends, the recommended modules (for performance) and the suggested session engine (Cookie)

    cpanm --sudo --installdeps . --with-all-features --with-recommends --with-suggests

  • Alternatively, install dependencies with selected backends only

    cpanm --sudo --installdeps . --with-feature Dropbox --with-feature LDAP --with-recommends

CONFIGURATION

  • Copy or rename config.yml to config_local.yml

    cp config.yml config_local.yml

  • Make changes in config_local.yml. Settings in config_local.yml override those in config.yml

  • Change session_cookie_key to a long and random value if using Cookie in session, e.g.

    pwgen -ysN1 128

DEPLOYMENT

Container

See GitHub Packages

The image ships with the default config in /conf/config.yml, which should be overwritten with a mount/volume.

The app makes use of the Linux kernel keyring.

The keyring is currently not namespaced, hence container tooling deactivate the specific syscalls by default. To make the app run you will need to activate the syscalls by creating a custom seccomp profile and passing the path to the container runtime:

A base file for extension can be found here, see the syscalls section.

The required syscalls are:

  • keyctl
  • add_key
  • request_key

Make sure no other containers are running under the same user, or they will be able to access keys stored for keepass4web.

This is best achieved by running rootless containers with a dedicated user for keepass4web.

Classic

Running this app on a web server with mod_perl2 or fcgi is recommended but running as standalone app is possible as well (with Dancer2's capabilities).

  • Create the log directory (as defined in config_local.yml)

    sudo mkdir /var/log/keepass4web/

  • The directory the app lives in has to be readable by the user running the web server, e.g.

    sudo chown -R root:www-data /opt/keepass4web/ /var/log/keepass4web/

    chmod g+r -R /opt/keepass4web/

  • Addtionally, it needs write permissions on the log directory, e.g.

    chmod g+w /var/log/keepass4web/

  • Remove permissions on sensitive data for everyone else

    chmod o= /opt/keepass4web/config*.yml /var/log/keepass4web/

  • For apache, enable the perl mod and ssl

    sudo a2enmod perl

    sudo a2enmod ssl

    sudo a2ensite default-ssl

Running apache2 using mod_perl2/Plack with TLS:

Example config default-ssl:

PerlSwitches -I/opt/keepass4web/lib/
PerlModule KeePass4Web::Apache2
PerlPostConfigHandler KeePass4Web::Apache2::post_config

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
    ServerName example.org

    SSLEngine on
    SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

    PerlOptions +Parent
    <Location /keepass/>
        SetHandler perl-script
        PerlResponseHandler Plack::Handler::Apache2
        PerlSetVar psgi_app /opt/keepass4web/bin/app.psgi
    </Location>


    </VirtualHost>
</IfModule>
Using the standalone server
  • Run (as correct user)

    plackup bin/app.psgi --port 8080 --host localhost

  • Or

    DANCER_PORT=8080 DANCER_SERVER=localhost bin/app.psgi

  • Options for plackup can be found in man plackup or online

  • As there is no TLS, it is recommonded to run a front-end web server with reverse proxy, example config for apache:

    <IfModule mod_ssl.c>
        <VirtualHost _default_:443>
        ServerName example.org
    
        SSLEngine on
        SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    
        ProxyPass        /keepass/ http://localhost:8080/
        ProxyPassReverse /keepass/ http://localhost:8080/
    
    
        </VirtualHost>
    </IfModule>
Open https://<domain>/keepass/ (notice the trailing slash)
Refer to Dancer2::Manual::Deployment for more options.

BUNDLING

Output will be a KeePass4Web-{VERSION}.tar.gz file, which includes all files required to run the app but without the development/build files

  • Follow BUILDING first, then run the perl make file

    perl Makefile.PL

  • Bundle the app to a tar

    make dist

  • Clean up afterwards

    make clean

BACKENDS

Authentication

Credentials may be further passed to the database backend via auth_reuse_cred config option. This way users don't have to enter their credentials twice (for auth backend and database backend) if they are identical. Useful when the database backend server uses the same auth backend internally.

LDAP

Attempts to authenticate the user against an (external, not built-in) LDAP server (Microsoft AD, 389 Directory Server, OpenLDAP, ...)

Htpasswd

Authentication using apache htpasswd files. Support for plain, sha1, crypt, md5 and bcrypt. Only bcrypt is considered secure.

PAM (planned)
SQL (planned)

Database

Filesystem

Grabs the KeePass database from the local filesystem. No support for local key files if configured statically (in config_local.yml). Can get database and key file location from auth backend. Web server needs read access to the files.

Seafile

KeePass database is stored in the private cloud.

Locations for the database and the key file can be configured in config_local.yml (global for all users) or fetched from auth backend (individually per user). Location syntax is '<repository-id>/<path-to-database>', see config_local.yml for an example.

The server uses the (possibly auth backend) credentials to fetch a token from Seafile which is used for consequent requests. No user credentials are saved anywhere at any time!

Right now the server does all Seafile requests. It is planned to migrate to a model where the client fetches the token from the Seafile server (if on the same domain) and passes it to the app server. Logging into some service on behalf of the user is an anti-pattern, therefore it is not recommended for non private servers.

LWP

Backend to fetch database from http, ftp or any other protocol supported by the LWP module collection (see LWP NETWORK SUPPORT). Additional protocols can be added by installing corresponding modules (see LWP::Protocol modules). Supports per-user database and key file location from auth backend. No support for key files if configured statically (in config_local.yml). Basic auth is supported for http, but only globally (same for all users, even if urls differ). Otherwise it would be necessary to store the user credentials in the session, which might be not a good idea. Database upload (saving) is only implemented for http right now.

Username and password may also be supplied in the form of ftp://username:[email protected]/db.kdbx

Dropbox

First you need to register the app with Dropbox: Create App. Choose the type of access you need, give it a name (e.g. KeePass4Web). Add an redirect url pointing to you application, followed by callback, e.g. https://example.org/keepass/callback. Optionally, generate an access token. Putting the token into the config will limit all users to that one Dropbox account (unless they open the Dropbox link by themselves, for which they would need to know the app key). Put the displayed app key, the app secret and the redirect url into config_local.yml.

Now, once users log into the web application, they will be redirected to the Dropbox login page (unless already logged in). After logging in and granting the app access to Dropbox, they will be redirected back to the app.

The backend also can fetch key files from Dropbox, if per-user databases are supported by the auth backend.

For the format to use in config_local.yml/db_location or the auth backend see the Dropbox HTTP doc under Path formats or HTTP download next to Paramaters

WebDAV (planned)

MISCELLANEOUS

  • Show currently used shared segments

    sudo ipcs

  • Removing segments (effectively closing user databases)

    sudo ipcrm -M key

  • Show kernel keyrings in use (as root)

    sudo cat /proc/keys

    sudo cat /proc/key-users

  • Adding users to .htpasswd, using bcrypt (needs apache2-utils/httpd-tools)

    touch .htpasswd # create file

    htpasswd -B .htpasswd

    sudo chown root:www-data .htpasswd # change group

    chmod g+r,o-rwx .htpasswd # remove permission of others, add read to webserver user

LIMITATIONS

  • Doesn't support kdbx 4 yet

  • KeePass databases are read-only for now

  • Caching of KeePass databases happens in SysV IPC shared memory, whose maximum size depends on the OS. Defined by shmall and shmmni kernel variables

    sudo cat /proc/sys/kernel/shmmni

    sudo cat /proc/sys/kernel/shmall

  • Limits of kernel keyring apply

  • Right now all cached databases are seralised and deserialised together. This means more simultaneously active users will make fetching databases from IPC slower for every user. A better approach would be using one shared segment per user, which would make one roundtrip perpetual

BUGS / CAVEATS / TODO

  • Using mod_perl, apache may create two kernel session keyrings, because it restarts directly after startup, effectively executing KeePass4Web::KeePass twice

  • Log may have 'Key has been revoked' messages: happens when session keyring gets revoked once user (who (re)started the server) logs out. Please file a bug report in this case.

  • More tests

APP DETAILS / BACKGROUND

Sequence of client/server operations

Client                                                       Server


Load website /
                              request KeePass tree
                              -------------------->

                                                        Check sesssion

                              not authenticated
                              <--------------------

Redirect to /user_login
Show credentials dialog

                              user credentials
                              -------------------->

                                                        User auth (LDAP, SQL, ...)

                                           login OK
                              <--------------------

Redirect to /backend_login
Show backend login dialog

                              backend credentials
                              -------------------->

                                                        Init DB backend / receive backend token
                                           login OK
                              <--------------------

Redirect to /db_login
Show KeePass password dialog

                              KeePass credentials
                              -------------------->
                                                        Possibly decrypt backend repo
                                                        Get KeePass database from backend
                                                        Possibly get Key file from backend
                                                        Decrypt KeePass database with master key + key file
                                                        Encrypt all password fields
                                                        Encrypt serialised string with newly generated key
                                                        Put encryption key into kernel keyring
                                                        Write keyring ids to session
                                                        Put encrypted database into IPC shared memory
                                      decryption OK
                              <--------------------

Redirect to /
                              request KeePass tree
                              -------------------->

                                                        Get database from IPC shared memory
                                                        Get encryption key from session
                                                        Decrypt database with key

                                  Send KeePass tree
                              <--------------------
Show KeePass tree

...

Password request by user
                              Request pw entry
                              -------------------->

                                                        Get keyring id from session
                                                        Get encryption key from kernel keyring
                                                        Get database from IPC shared memory
                                                        Decrypt database
                                                        Decrypt requested password

                                  Send pw entry
                              <--------------------
Show cleartext pw



...


Page reload

                              Request KeePass tree
                              -------------------->
                                                        Get database from IPC shared memory

                                  Send KeePass tree
                              <--------------------
Show KeePass tree

Packages used

Libraries / Packages
  • build-essential (building XS modules)
  • libkeyutils-dev
  • libkeyutils1
  • libapache2-mod-perl2 (if running mod_perl2 with apache2)
  • libmagic1
  • libmagic-dev
  • cpanminus (module installation)
Perl modules
Core
  • Kernel::Keyring
  • Dancer2
  • Dancer2::Plugin::Ajax
  • Dancer2::Session::Cookie (default session engine, Cookie in config)
  • IPC::ShareLite
  • File::KeePass
  • Crypt::URandom
  • File::LibMagic
  • Sereal::Encoder
  • Sereal::Decoder
  • Crypt::Mode::CBC
  • Crypt::Mac::HMAC
  • URI::Escape
Backend LDAP
  • Net::LDAP
Backend Htpasswd
  • Crypt::Eksblowfish::Bcrypt (bcrypt)
  • Authen::Htpasswd (md5, sha1, crypt, plain)
Backend Seafile
  • JSON
  • REST::Client
  • URI::Escape
Backend LWP
  • LWP::UserAgent
  • HTTP::Request::Common
  • URI::Escape
Backend Dropbox
  • WebService::Dropbox
Bundled modules, may become external
  • File::KeePass::Web
  • Auth::LDAP
  • Seafile::Client::REST

COPYRIGHT AND LICENSING

This software is copyright (c) by Viktor Liu. It is released under the terms of the GPL version 3.

Most of the icons in the public/img/icons directory are released under the LGPL version 2, the licence can be found in the same directory. The remaining icons are public domain. As these icons are the same as the ones used by the original KeePass software, you can refer to the info there: Icon Acknowledgements.

The Seafile logo is copyright (c) by Seafile Ltd.

keepass4web's People

Contributors

dependabot[bot] avatar lixmal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

keepass4web's Issues

Fresh install on Ubuntu 16.04 not working

When I use the PPA install method on Ubuntu 16.04 it doesn't appear as if the configuration settings are getting loaded. I get the attached error. The error log just shows a break at line 7. So I loaded up perl and ran everything manually. Not sure if that is an effective way to get a better error message or not.

screen shot 2018-07-20 at 4 02 05 pm

[Feature Request] ACL Support

Hello,

would it be possible to implement ACLs for the entries?
So that one can delegate specific passwords to specific group memberships or users on the backend (ldap).
Also support for NTLM hashes and Kerberos tickets would be nice.
Keepass4web is the only KeePass variant, that runs server-side, so it's the only one that can implement a group based delegation system without adding additional cryptographic layers and complexity to the database.
Currently there is no free and open password manager that allows assigning permissions to separate entries. So I would be happy to see it implemented some day in an open source software.

Error - npm run build

root@ubuntu:/opt/keepass4web# npm run build

> [email protected] build /opt/keepass4web
> NODE_ENV=production ./node_modules/.bin/browserify -t browserify-css -p [ minifyify --no-map ] -t [ babelify --presets [ es2015 react ] ] src/scripts/app.js -o public/scripts/bundle.js; sed -i 's/node_modules\/bootstrap\/dist\///g' public/scripts/bundle.js

Error: Cannot find module 'history' from '/opt/keepass4web/src/scripts'
    at /opt/keepass4web/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:46:17
    at process (/opt/keepass4web/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:173:43)
    at ondir (/opt/keepass4web/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:188:17)
    at load (/opt/keepass4web/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:69:43)
    at onex (/opt/keepass4web/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:92:31)
    at /opt/keepass4web/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:22:47
    at Object.oncomplete (fs.js:107:15)

Can you help me?

Install modules

How can i install...

File::KeePass::Web
Auth::LDAP
Seafile::Client::REST

Docker

Looking at the installation guide, this project could greatly benefit from having a Docker implementation. Such a complicated guide is just screaming for a Dockerfile. For those unfamiliar with Docker: basically it's a way to install an application, and have it work, always. Super easy to update as well. Works on any Docker-capable computer, which is practically every Linux box, even virtualized ones.

Can't install from Ubuntu PPA due to missing installation candidate

Hi, I tried installing keepass4web from Ubuntu PPA as described in the Readme on Ubuntu 18.04. Everything works fine, except that it does not find the installation candidate for "libdancer2-session-cookie-perl":

Reading package lists... Done
Building dependency tree
Reading state information... Done
Package libdancer2-session-cookie-perl is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'libdancer2-session-cookie-perl' has no installation candidate

I did make sure to add the PPA beforehand with this command:

sudo add-apt-repository ppa:lixmal/keepass4web
sudo apt-get update

Why is it not found?

ghcr.io link in README.md 404's, and Dockerfile fails build.

And it looks like the ghcr.io link 404's, at least to me when I try and hit it (specifically, it redirects to https://github.com/-/lixmal/packages/container/package/keepass4web, which itself 404's.)

I've tried just building the Dockerfile (on an Ubuntu 22.04.3 system, but that should not matter - I'm setting up a cluster of self-hosted applications using docker-compose, so building the Dockerfile is the first step), and it fails:

csjewell@csjewell-desktop:~/homelab/keepass4web$ docker build -t keepass4web .
[+] Building 517.3s (17/17) FINISHED                                                                                                                                     docker:default
 => [internal] load .dockerignore                                                                                                                                                  0.0s
 => => transferring context: 241B                                                                                                                                                  0.0s
 => [internal] load build definition from Dockerfile                                                                                                                               0.0s
 => => transferring dockerfile: 1.97kB                                                                                                                                             0.0s
 => [internal] load metadata for docker.io/library/alpine:latest                                                                                                                   0.6s
 => CACHED [stage-1 1/8] FROM docker.io/library/alpine@sha256:7144f7bab3d4c2648d7e59409f15ec52a18006a128c733fcff20d3a4a54ba44a                                                     0.0s
 => [internal] load build context                                                                                                                                                  0.1s
 => => transferring context: 605.23kB                                                                                                                                              0.0s
 => [build 2/6] WORKDIR /workspace                                                                                                                                                 0.1s
 => [stage-1 2/8] WORKDIR /keepass4web                                                                                                                                             0.1s
 => [build 3/6] COPY src src                                                                                                                                                       0.1s
 => [stage-1 3/8] COPY cpanfile .                                                                                                                                                  0.0s
 => [stage-1 4/8] COPY bin bin                                                                                                                                                     0.0s
 => [build 4/6] COPY package*.json config.yml ./                                                                                                                                   0.1s
 => [stage-1 5/8] COPY lib lib                                                                                                                                                     0.0s
 => [build 5/6] COPY public public                                                                                                                                                 0.1s
 => [build 6/6] RUN apk add --no-cache npm     && npm install     && cp node_modules/bootstrap/fonts/* public/fonts/     && rm public/dispatch*     && npm run build              13.2s
 => [stage-1 6/8] COPY --from=build /workspace/public /keepass4web/public                                                                                                          0.1s 
 => [stage-1 7/8] COPY --from=build /workspace/config.yml /conf/                                                                                                                   0.0s 
 => ERROR [stage-1 8/8] RUN apk add --no-cache --virtual .build-deps         alpine-sdk        
...
502.6 Successfully installed Dancer2-Session-Cookie-0.009
502.7 ! Installing the dependencies failed: Module 'WebService::Dropbox' is not installed, Module 'REST::Client' is not installed
502.7 ! Bailing out the installation for ..
502.7 269 distributions installed
------
Dockerfile:27
--------------------
  26 |     
  27 | >>> RUN apk add --no-cache --virtual .build-deps \
  28 | >>>     # install build tools
  29 | >>>         alpine-sdk \
...

Reloading Page crashes App

Hi lixmal,
are you aware of a bug, that crashes the app after pressing F5 or reloading the page?

This happens in my docker conatianer as well as on a freshly installed VM, with the ubuntu package, apache, ... in default configuration. after logging in with my user credentials and then unlocking the DB it can happen that the server crashes by pressing F5. Sometimes this occures after one press sometimes after spamming the key. the following error is shown.
By the way, auth_backend is LDAP and db_backend is Filesystem.

Undefined subroutine &Scope::Upper::unwind called at /usr/share/keepass4web/bin/../lib/Return/MultiLevel.pm line 34.

/usr/share/keepass4web/bin/../lib/Return/MultiLevel.pm around line 34

29	            and confess
30	                $canary[0] eq '-'
31	                    ? ""
32	                    : "Captured stack:\n$canary[0]\n",
33	                "Attempt to re-enter dead call frame"
34	        ;
35	        Scope::Upper::unwind(@_, $ctx);
36	    })
37	}
38	EOT
39	

Stack

main in -e l. 0
main in -e l. 0
Plack::Handler::Apache2 in /usr/share/perl5/Plack/Handler/Apache2.pm l. 126
Plack::Handler::Apache2 in /usr/share/perl5/Plack/Handler/Apache2.pm l. 87
Dancer2::Core::Runner in /usr/share/keepass4web/bin/../lib/Dancer2/Core/Runner.pm l. 214
Dancer2::Core::Dispatcher in /usr/share/keepass4web/bin/../lib/Dancer2/Core/Dispatcher.pm l. 36
Plack::Component in /usr/share/keepass4web/bin/../lib/Plack/Component.pm l. 50
Plack::Middleware::Head in /usr/share/keepass4web/bin/../lib/Plack/Middleware/Head.pm l. 10
Plack::Component in /usr/share/keepass4web/bin/../lib/Plack/Component.pm l. 50
Plack::Middleware::Conditional in /usr/share/keepass4web/bin/../lib/Plack/Middleware/Conditional.pm l. 16
Plack::Component in /usr/share/keepass4web/bin/../lib/Plack/Component.pm l. 50
Plack::Middleware::FixMissingBodyInRedirect in /usr/share/keepass4web/bin/../lib/Plack/Middleware/FixMissingBodyInRedirect.pm l. 50
Dancer2::Core::App in /usr/share/keepass4web/bin/../lib/Dancer2/Core/App.pm l. 1388
Dancer2::Core::App in /usr/share/keepass4web/bin/../lib/Dancer2/Core/App.pm l. 1386
Dancer2::Core::App in /usr/share/keepass4web/bin/../lib/Dancer2/Core/App.pm l. 36
Dancer2::Core::App in /usr/share/keepass4web/bin/../lib/Dancer2/Core/App.pm l. 1386
Dancer2::Core::App in /usr/share/keepass4web/bin/../lib/Dancer2/Core/App.pm l. 1473
Return::MultiLevel in /usr/share/keepass4web/bin/../lib/Return/MultiLevel.pm l. 36
Dancer2::Core::App in /usr/share/keepass4web/bin/../lib/Dancer2/Core/App.pm l. 1472
Dancer2::Core::App in /usr/share/keepass4web/bin/../lib/Dancer2/Core/App.pm l. 1595
Dancer2::Core::App in /usr/share/keepass4web/bin/../lib/Dancer2/Core/App.pm l. 1627
Dancer2::Core::Error in /usr/share/keepass4web/bin/../lib/Dancer2/Core/Error.pm l. 302
Method::Generate::Accessor::_Generated in (eval 159) l. 20
Dancer2::Core::Error in /usr/share/keepass4web/bin/../lib/Dancer2/Core/Error.pm l. 289
Dancer2::Core::Error in /usr/share/keepass4web/bin/../lib/Dancer2/Core/Error.pm l. 110
Dancer2::Core::Error in /usr/share/keepass4web/bin/../lib/Dancer2/Core/Error.pm l. 159
Dancer2::Core::Error in /usr/share/keepass4web/bin/../lib/Dancer2/Core/Error.pm l. 385

LDAP - Default password

Hi,
I am stuck at the first screen, looking for the default/admin password.
I use ldap module .

Could-you provide this default password or tell how to get success at first authentication?

thx

Run app

what I doing wrong?

root@ubuntu:/usr/share/keepass4web# plackup bin/app.psgi --port 8080 --host localhost
String found where operator expected at /usr/share/keepass4web/bin/../lib/KeePass4Web/KeePass.pm line 529, near "request_header 'If-None-Match'"
        (Do you need to predeclare request_header?)
String found where operator expected at /usr/share/keepass4web/bin/../lib/KeePass4Web/KeePass.pm line 556, near "response_header 'Cache-Control'"
        (Do you need to predeclare response_header?)
String found where operator expected at /usr/share/keepass4web/bin/../lib/KeePass4Web/KeePass.pm line 557, near "response_header 'ETag'"
        (Do you need to predeclare response_header?)
Error while loading /usr/share/keepass4web/bin/app.psgi: syntax error at /usr/share/keepass4web/bin/../lib/KeePass4Web/KeePass.pm line 529, near "request_header 'If-None-Match'"
Global symbol "$matchheader" requires explicit package name at /usr/share/keepass4web/bin/../lib/KeePass4Web/KeePass.pm line 530.
Global symbol "$matchheader" requires explicit package name at /usr/share/keepass4web/bin/../lib/KeePass4Web/KeePass.pm line 530.
syntax error at /usr/share/keepass4web/bin/../lib/KeePass4Web/KeePass.pm line 556, near "response_header 'Cache-Control'"
Compilation failed in require at /usr/share/keepass4web/bin/../lib/KeePass4Web.pm line 18.
BEGIN failed--compilation aborted at /usr/share/keepass4web/bin/../lib/KeePass4Web.pm line 18.
Compilation failed in require at /usr/share/keepass4web/bin/app.psgi line 7.
BEGIN failed--compilation aborted at /usr/share/keepass4web/bin/app.psgi line 7.

I thought unloaded modules

Database Filesystem generation

Hello, I have follow your topic and create my server. with package installation

It's works until master password request
I don't found how create the database Filesystem at the first launch . I have check the config_local.yml locate in /usr/share/keepass4web/

db.kdbx is locate in /etc/keepass4web like config information in yml file and I have grant to www-data for read and writ on this folder
I have imagine like standard keepass woftware that db will be create automatically, but something wrong and I don't found where or how create the db file

I have try to create a db with windows program and upload on my serveur (without success)
Thanks for your help

[Feature request] one-off PIN code instead master password

I want to use it on "alien" PC
I fear keyloggers and aids. I propose to show the number and wait for answer is the correct PIN-code. Mathematical formula to calculate the Pin-code from the displayed number and know it'll just be me.

For example number=11, the formula = number*5-3, and waiting for response 52.
After the incorrect PIN, the service should be unavailable for 10 min.

DB decryption failed

I have the docker file up and running.

I copied my kdbx file to the /conf/keepass4web folder using Filesystem.
But when I enter the master password for the db I get "DB decryption failed"
Is there something I need to do, does it need to have certain permissions?

Any help would be appreciated

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.