En sikker, personlig helsejournal for organisering av medisinske dokumenter
HelseJournal er en selvhostet webapplikasjon for Γ₯ organisere, sΓΈke i og administrere personlige medisinske dokumenter med fulltekstsΓΈk, PDF-visning, notater og sikker deling.
| Komponent | Spesifikasjon |
|---|---|
| Plattform | LXC Container pΓ₯ Proxmox |
| GPU | 2x NVIDIA A2 + 1x NVIDIA T4 |
| RAM | 512 GB |
| Lagring | 20 TB |
| IP-adresse | 192.168.30.10 |
- CPU: 2 kjerner
- RAM: 4 GB (8 GB anbefalt)
- Lagring: 10 GB + dokumentlagring
- Docker: 20.10+
- Docker Compose: 2.0+
curl -fsSL https://raw.githubusercontent.com/dinbruker/helsejournal/main/auto-install.sh | bash# 1. Klon repository
git clone https://github.com/dinbruker/helsejournal.git
cd helsejournal
# 2. KjΓΈr installasjonsscript
chmod +x install.sh
./install.sh
# 3. Start tjenester
docker-compose up -d| Funksjon | Beskrivelse | Status |
|---|---|---|
| π Tema | Dark/Light mode med sol/mΓ₯ne-knapp | β |
| π SprΓ₯k | Engelsk og Norsk med flagg-knapper | β |
| π³ Tre-struktur | Γ r β Sykehus/Lege β Dokumenter | β |
| π PDF-visning | Innebygd PDF-leser pΓ₯ hΓΈyre side | β |
| π FulltekstsΓΈk | SΓΈk i alle dokumenter med Elasticsearch | β |
| β¬οΈ Opplasting | Last opp nye PDF-er direkte | β |
| π Autentisering | Sikker innlogging (Γ©n bruker) | β |
| π Notater | Legg til notater til dokumenter | β |
| π Varsler | FΓ₯ varsler om nye dokumenter | β |
| π Deling | Lag sikre delingslenker | β |
| πΎ Backup | Automatisk backup til NAS/Cloud | β |
| π± Responsiv | Mobilvennlig design | β |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Docker Compose β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββ β
β β Nginx β β React β β FastAPI β β
β β (Proxy) ββββ Frontend ββββ Backend β β
β β :80/:443 β β :3000 β β :8000 β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββ β
β β β
β βββββββββββββββ βββββββββββββββ βββββββββββΌβββββββββββ β
β β PostgreSQL β βElasticsearchβ β PDF Storage β β
β β :5432 β β :9200 β β (Volume) β β
β βββββββββββββββ βββββββββββββββ ββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Opprett en .env fil i rotmappen:
# Database
POSTGRES_USER=helsejournal
POSTGRES_PASSWORD=din_sikre_passord
POSTGRES_DB=helsejournal
# JWT Secret
JWT_SECRET_KEY=din_hemmelige_nΓΈkkel_minst_32_tegn
JWT_ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=1440
# Elasticsearch
ELASTICSEARCH_URL=http://elasticsearch:9200
# App Settings
APP_NAME=HelseJournal
APP_VERSION=1.0.0
UPLOAD_DIR=/app/uploads
MAX_FILE_SIZE=50MB
# Backup
BACKUP_ENABLED=true
BACKUP_SCHEDULE=0 2 * * *
BACKUP_DESTINATION=/backupFor OCR med GPU-akselerasjon, aktiver i docker-compose.yml:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]helsejournal/
βββ docker-compose.yml # Hoved Docker Compose
βββ README.md # Denne filen
βββ install.sh # Installasjonsscript
βββ auto-install.sh # One-liner installer
βββ .env.example # Eksempel pΓ₯ miljΓΈvariabler
βββ backend/ # FastAPI backend
β βββ Dockerfile
β βββ requirements.txt
β βββ app/
β βββ main.py
β βββ config.py
β βββ database/
β βββ auth/
β βββ documents/
β βββ pdf_processor/
βββ frontend/ # React frontend
βββ Dockerfile
βββ package.json
βββ tsconfig.json
βββ tailwind.config.js
βββ src/
βββ main.tsx
βββ App.tsx
βββ components/
# Backend
cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
# Frontend
cd frontend
npm install
npm run dev# Backend tester
cd backend
pytest
# Frontend tester
cd frontend
npm test- β JWT-basert autentisering
- β Passord hashing med bcrypt
- β HTTPS-stΓΈtte
- β Sikre delingslenker med utlΓΈpstid
- β Input-validering
- β SQL-injeksjon beskyttelse
- β XSS-beskyttelse
Backup kjΓΈres automatisk daglig kl. 02:00:
# Manuell backup
docker-compose exec backend python -m app.backup# Gjenopprett fra backup
docker-compose exec backend python -m app.restore /backup/helsejournal_YYYYMMDD.tar.gz# Alle tjenester
docker-compose logs -f
# Spesifikk tjeneste
docker-compose logs -f backend
docker-compose logs -f frontend
docker-compose logs -f elasticsearchProblem: Elasticsearch starter ikke
LΓΈsning: Γk vm.max_map_count:
sudo sysctl -w vm.max_map_count=262144Problem: Port 80 er opptatt
LΓΈsning: Endre port i docker-compose.yml:
ports:
- "8080:80"Dette prosjektet er lisensiert under MIT License - se LICENSE for detaljer.
- FastAPI - Moderne Python web-rammeverk
- React - JavaScript-bibliotek for brukergrensesnitt
- Tailwind CSS - Utility-first CSS-rammeverk
- Elasticsearch - Distribuert sΓΈk og analyse
- PostgreSQL - Γ pen kildekode relasjonsdatabase
For spΓΈrsmΓ₯l eller problemer, opprett en GitHub Issue.
Laget med β€οΈ i Norge