-
-
Notifications
You must be signed in to change notification settings - Fork 24
FAQ
Common questions about MediKeep.
MediKeep is an open-source medical records management system that helps individuals and families organize their health information in one secure place.
Yes, MediKeep is free and open source. You can self-host it on your own server or use Docker to run it locally.
MediKeep stores all data in your own PostgreSQL database. Your data never leaves your server. The application uses:
- JWT authentication
- Password hashing (bcrypt)
- HTTPS encryption (when configured)
- Role-based access control
Yes! MediKeep supports multiple patient profiles, so you can manage records for yourself, your spouse, children, parents, or anyone else you care for.
Minimum requirements:
- Docker and Docker Compose (recommended), OR
- Python 3.12+ and Node.js 18+
- PostgreSQL 15+
- 2GB RAM, 2 CPU cores, 20GB disk space
The easiest way is with Docker:
# Clone the repository
git clone https://github.com/afairgiant/MediKeep.git
cd MediKeep
# Copy and edit environment file (change passwords and SECRET_KEY)
cp docker/.env.example .env
# Start the application
cd docker
docker compose up -dSee the Installation Guide for detailed instructions.
cd docker
docker compose pull
docker compose up -dCurrently, MediKeep doesn't have automated import from other medical record systems. You can manually enter your data or upload documents.
MediKeep is designed for personal record keeping. It doesn't integrate directly with healthcare provider systems (EHRs). You can manually add information from your provider visits.
Yes! You can:
- Generate PDF reports for any patient
- Export data via the API
- Access the PostgreSQL database directly for backups
Yes. MediKeep supports 10 languages: English, French, German, Spanish, Italian, Portuguese, Russian, Swedish, Dutch, and Polish.
The recipient must already have an account on your MediKeep instance. To share:
- Go to the patient's page → Sharing
- Enter the recipient's username or email to look them up
- Choose a permission level and send the invitation
- The recipient will see the invitation in their account and can accept or decline
- View - Can see records but not modify
- Edit - Can view and modify records
- Full - Full access to the patient's records
Go to the patient's sharing settings and remove their access.
There is no self-service password reset. An administrator can reset your password through the admin panel.
If your admin account was demoted, deleted, or you never had one on a fresh install, MediKeep ships with an emergency recovery script that runs against the database directly.
One-liner recovery for the default admin account:
docker exec -it <container_name> python app/scripts/create_emergency_admin.py --username adminThe script detects whether the user exists and either promotes the existing user to admin (preserving their current password — no reset) or creates a new admin user if no account with that username exists. It asks for confirmation before making any changes and writes both a security-log entry and an activity-log row for audit purposes.
Full documentation including all flags, scenarios (lost default admin, non-default username, creating an additional admin), exit codes, and troubleshooting is in app/scripts/README_EMERGENCY_ADMIN.md.
MediKeep also runs a startup self-check that logs a prominent WARNING with the recovery command whenever it detects zero admin users in a non-empty database, so if you missed the lockout, you'll see it in logs/security.log on the next restart.
Try:
- Check your server resources (CPU, RAM)
- Ensure PostgreSQL has adequate memory
- Check for large numbers of records that may need pagination
Check:
- File size limit (default 15MB)
- Allowed file types (images, PDFs)
- Storage permissions on the server
CORS is configured to allow all origins. If you're seeing CORS errors in development, make sure the backend is actually running on port 8000.
See the Contributing Guide for code standards and workflow.
Open an issue on GitHub Issues.
Yes! MediKeep has a comprehensive REST API. See the API Reference for documentation.
- GitHub Discussions - Ask the community
- GitHub Issues - Report problems
Resources