A self-hosted password manager with a Python/Flask backend and a SvelteKit frontend.
- Docker and Docker Compose installed on the target machine
-
Clone the repository
git clone <repository-url> cd Password-Manager
-
Open
docker-compose.ymland fill in the required valuesVariable Description How to generate SECRET_FLASK_KEYFlask session secret openssl rand -hex 32SECRET_JWT_KEYJWT signing secret openssl rand -hex 32ENCRYPTION_KEYFernet key for encrypting stored passwords python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"PUBLIC_API_URLURL the browser uses to reach the API Your server IP or domain + backend port, e.g. http://192.168.1.100:5000 -
Start the application
docker compose up -d --build
The frontend is available at
http://your-server-ip:3000. The backend API is available athttp://your-server-ip:5000.
git pull
docker compose up -d --buildIf
PUBLIC_API_URLchanged, a rebuild is required (--build). For changes to secrets only, a restart is sufficient (docker compose up -d).
- Python 3.11+
- Node.js 20+
-
Copy the environment template and fill in the values
cp .env.example .env
Open
.envand set all required values. See the comments in.env.examplefor instructions on generating each value. -
Install backend dependencies
python3 -m venv .venv source .venv/bin/activate pip install -r reqirements.txt -
Install frontend dependencies
cd app npm install -
Start the backend
# from the project root, with .venv active python server.py -
Start the frontend dev server
cd app npm run devThe frontend dev server is available at
http://localhost:5173. SetPUBLIC_API_URL=http://localhost:5000in your.envfor local development.