93 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# passbook
 | 
						|
 | 
						|

 | 
						|

 | 
						|

 | 
						|

 | 
						|

 | 
						|

 | 
						|
 | 
						|
## What is passbook?
 | 
						|
 | 
						|
passbook is an open-source Identity Provider focused on flexibility and versatility. You can use passbook in an existing environment to add support for new protocols. passbook is also a great solution for implementing signup/recovery/etc in your application, so you don't have to deal with it.
 | 
						|
 | 
						|
## Installation
 | 
						|
 | 
						|
For small/test setups it is recommended to use docker-compose.
 | 
						|
 | 
						|
```
 | 
						|
wget https://raw.githubusercontent.com/BeryJu/passbook/master/docker-compose.yml
 | 
						|
# Optionally enable Error-reporting
 | 
						|
# export PASSBOOK_ERROR_REPORTING=true
 | 
						|
# Optionally deploy a different version
 | 
						|
# export PASSBOOK_TAG=0.8.15-beta
 | 
						|
# If this is a productive installation, set a different PostgreSQL Password
 | 
						|
# export PG_PASS=$(pwgen 40 1)
 | 
						|
docker-compose pull
 | 
						|
docker-compose up -d
 | 
						|
docker-compose exec server ./manage.py migrate
 | 
						|
```
 | 
						|
 | 
						|
For bigger setups, there is a Helm Chart in the `helm/` directory. This is documented [here](https://beryju.github.io/passbook/installation/kubernetes/)
 | 
						|
 | 
						|
## Screenshots
 | 
						|
 | 
						|

 | 
						|

 | 
						|
 | 
						|
## Development
 | 
						|
 | 
						|
To develop on passbook, you need a system with Python 3.7+ (3.8 is recommended). passbook uses [pipenv](https://pipenv.pypa.io/en/latest/) for managing dependencies.
 | 
						|
 | 
						|
To get started, run
 | 
						|
 | 
						|
```
 | 
						|
python3 -m pip install pipenv
 | 
						|
git clone https://github.com/BeryJu/passbook.git
 | 
						|
cd passbook
 | 
						|
pipenv shell
 | 
						|
pipenv sync -d
 | 
						|
```
 | 
						|
 | 
						|
Since passbook uses PostgreSQL-specific fields, you also need a local PostgreSQL instance to develop. passbook also uses redis for caching and message queueing.
 | 
						|
For these databases you can use [Postgres.app](https://postgresapp.com/) and [Redis.app](https://jpadilla.github.io/redisapp/) on macOS or use it via docker-comppose:
 | 
						|
 | 
						|
```yaml
 | 
						|
version: '3.7'
 | 
						|
 | 
						|
services:
 | 
						|
  postgresql:
 | 
						|
    container_name: postgres
 | 
						|
    image: postgres:11
 | 
						|
    volumes:
 | 
						|
    - db-data:/var/lib/postgresql/data
 | 
						|
    ports:
 | 
						|
    - 127.0.0.1:5432:5432
 | 
						|
    restart: always
 | 
						|
  redis:
 | 
						|
    container_name: redis
 | 
						|
    image: redis
 | 
						|
    ports:
 | 
						|
    - 127.0.0.1:6379:6379
 | 
						|
    restart: always
 | 
						|
 | 
						|
volumes:
 | 
						|
  db-data:
 | 
						|
    driver: local
 | 
						|
```
 | 
						|
 | 
						|
To tell passbook about these databases, create a file in the project root called `local.env.yml` with the following contents:
 | 
						|
 | 
						|
```yaml
 | 
						|
debug: true
 | 
						|
postgresql:
 | 
						|
  user: postgres
 | 
						|
 | 
						|
log_level: debug
 | 
						|
error_reporting: false
 | 
						|
```
 | 
						|
 | 
						|
## Security
 | 
						|
 | 
						|
See [SECURITY.md](SECURITY.md)
 |