Stars: 182
Forks: 39
Pull Requests: 16
Issues: 41
Watchers: 10
Last Updated: 2023-09-13 08:19:11
Self-hosted Password Manager based on Laravel 10 + PHP 8 + MySQL 8. Gestor de Contraseñas basado en Laravel 10 + PHP 8 + MySQL 8.
License: MIT License
Languages: Shell, PHP, HTML, Blade, Dockerfile
This application allows complete password management for multiple types of services (web, ssh, phones, wifi, etc ...).
The data of each application is stored encrypted in the database.
The encryption of this data is done using the value of
APP_KEY
as salt, so it is very important not to regenerate this key or you will lose access to all registered applications.
Don't even think about installing this project in an environment without HTTPS protection
The main features are:
This project has an extension for Google Chrome that you can download at https://github.com/eusonlito/Password-Manager-Chrome
If PHP 8.1 is not the default PHP version on your system you must use the binary prefix to execute composer
and artisan
, for example:
php8.1 /usr/local/bin/composer install --no-dev --optimize-autoloader --classmap-authoritative --ansi
php8.1 artisan key:generate
Create the database in MySQL.
Clone the repository.
git clone https://github.com/eusonlito/Password-Manager.git
.env.example
file as .env
and fill in the necessary variables.cp .env.example .env
composer install --no-dev --optimize-autoloader --classmap-authoritative --ansi
.env
> APP_KEY
).php artisan key:generate
composer artisan-cache
php artisan migrate
php artisan db:seed --class=Database\\Seeders\\Database
* * * * * cd /var/www/password.domain.com && php artisan schedule:run >> storage/logs/artisan-schedule-run.log 2>&1
php artisan user:create [email protected] --name=Admin --password=StrongPassword2 --admin
Configure the server for web access with DOCUMENT_ROOT
in public
.
Profit!
The platform update can be done easily with the composer deploy
command executed by the user who manages that project (usually www-data
).
Currently only for testing (no certificate support).
git clone https://github.com/eusonlito/Password-Manager.git
docker/.env.example
to .env
and configure your own settingscp docker/.env.example .env
docker/docker-compose.yml.example
to docker/docker-compose.yml
and configure your own settingscp docker/docker-compose.yml.example docker/docker-compose.yml
./docker/build.sh
./docker/run.sh
./docker/user.sh
Open your web browser and goto http://localhost:8080
Remember to add a web server (apache2, nginx, etc...) as a proxy to add features as SSL.
git pull
./docker/build.sh
./docker/run.sh
In order to authenticate with a certificate, we must add the following configuration in Apache's VirtualHost
:
<Location /user/profile/certificate>
SSLVerifyClient require
SSLVerifyDepth 2
SSLOptions +StdEnvVars +ExportCertData +OptRenegotiate
</Location>
<Location /user/auth/certificate>
SSLVerifyClient require
SSLVerifyDepth 2
SSLOptions +StdEnvVars +ExportCertData +OptRenegotiate
</Location>
SSLCACertificateFile /var/www/password.domain.com/resources/certificates/certificates.pem
The /user/profile/certificate
location allows obtaining the certificate identifier automatically from the user profile itself, and /user/auth/certificate
is the authentication path by certificate.
The OptRenegotiate
option allows Apache to independently renegotiate the connection per path, something that nginx does not support.
Create User:
php artisan user:create {--email=} {--name=} {--password=} {--admin} {--readonly} {--teams=}
User update:
php artisan user:update {--id=} {--email=} {--name=} {--password=} {--certificate=} {--tfa_enabled=} {--admin=} {- readonly=} {--enabled=} {--teams=}
I need help to improve english translations on this project.
Default locale files are located in resources/lang/es
and should be translated into resources/lang/en
.
Also, I need to translate the English Readme.
Thanks!