Web interface to configure Laboratory door access. This web application is made for Raspberry Pi devices. It use the GPIOs.
Features:
- Admin interface to manage Users, RFID Tags, ...
- API to conect with external RDIF Reader service
# Previous steps
## MANDATORY: generate a secret key
python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'
## MANDATORY: create .prod.env and modify the values
cp example.env .prod.env
## Recommended edit `.prod.env` and add superuser email and password
## Optional Provisioning: just for the first time
## Provision RFID tags
## folder: ./provision/
cp provision/tags.example.json provision/tags.json
vi provision/tags.json
## Deploy
docker compose --env-file .prod.env up -d
# Docker
## Build & tag image
poetry export -f requirements.txt --output requirements-prod.txt --without-hashes
docker build -t rodmosh/door-access-mgm:0.2.0 . \
&& docker push rodmosh/door-access-mgm:0.2.0 \
&& docker tag rodmosh/door-access-mgm:0.2.0 rodmosh/door-access-mgm:latest \
&& docker push rodmosh/door-access-mgm:latest \
&& docker tag rodmosh/door-access-mgm:0.2.0 rodmosh/door-access-mgm:production \
&& docker push rodmosh/door-access-mgm:production
# PostreSQL
docker run --rm --name pg \
-e POSTGRES_PASSWORD=postgres -e POSTGRES_USER=postgres -e POSTGRES_DB=postgres \
-p 5432:5432 -d \
postgres:16-alpine
# Django
docker run --privileged --rm -p 8000:8000 \
--device /dev/gpiomem \
-e DJANGO_SECRET_KEY='django-insecure-yck2)0pdsmgl=!&l*1t0w5!6h9)*@*&v)$%a8(07@8-+=!gvd9' \
-e DJANGO_ALLOWED_HOSTS='*' \
rodmosh/door-access-mgm gunicorn --pythonpath ./proj proj.wsgi --bind 0.0.0.0:8000
# Local Dev
docker compose -f compose.local.yml up -d
python proj/manage.py migrate
python proj/manage.py runserver 0.0.0.0:8000
Docker Access to Raspberry Pi GPIO Pins https://stackoverflow.com/questions/30059784/docker-access-to-raspberry-pi-gpio-pins
Some problems can occur with poetry and gnome kerying in development machine. In that case, you should disable kerying python-poetry/poetry#8623
export PYTHON_KEYRING_BACKEND="keyring.backends.fail.Keyring"
# for permanent add this to ~/.bashrc