diff --git a/sk1/README.md b/sk1/README.md index d485f80..5cc8657 100644 --- a/sk1/README.md +++ b/sk1/README.md @@ -7,12 +7,12 @@ Health AI Assistant je webová aplikácia, ktorá umožňuje používateľom reg ## Použité cloudové a kontajnerové technológie - **Verejný cloud:** - Aplikácia je nasadená na AWS EC2, pričom bol použitý Elastic IP, aby bol verejný IP adresa statická. + Aplikácia je nasadená na AWS EC2, pričom bol použitý Elastic IP, aby bola verejná IP adresa statická. - **Docker:** Nasadenie aplikácie je plne založené na Docker kontajneroch. Použité sú kontajnery pre: - **Elasticsearch** – pre fulltext vyhľadávanie a ukladanie indexov. - **PostgreSQL** – ako databáza s perzistentným zväzkom (volume `pgdata`). - - **Backend** – Flask aplikácia, ktorá spracúva API požiadavky. + - **Backend** – Flask aplikácia, ktorá spracúvala API požiadavky. - **Frontend** – klientská časť, ktorá komunikuje s backendom. - **Nginx:** Ako reverzný proxy server je nastavený Nginx pre zabezpečený prístup cez HTTPS. Certifikát je získaný pomocou Certbot (Let's Encrypt). @@ -21,62 +21,86 @@ Health AI Assistant je webová aplikácia, ktorá umožňuje používateľom reg ## Obsah odovzdávaných súborov a konfigurácia -V repozitári su nasledovné súbory a adresáre: -- **docker-compose.yml** – Definuje štyri služby (elasticsearch, postgres, backend, frontend) a sieť `app-network`. +V repozitári sú nasledovné súbory a adresáre: + +- **docker-compose.yml** – definuje štyri služby (elasticsearch, postgres, backend, frontend) a sieť `app-network`. - Pre každú službu je definovaný aj parameter `restart: always`, ktorý zabezpečuje automatický reštart v prípade chyby. - - Pre postgres je definovaný persistent volume `pgdata`. + - Pre Postgres je definovaný persistent volume `pgdata`. + - **Dockerfile** pre jednotlivé komponenty: - - `./elasticsearch/Dockerfile` – Konfigurácia Elasticsearch, vrátane nastavení environmentálnych premenných. - - `./Backend/Dockerfile` – Konfigurácia backendovej Flask aplikácie. - - `./frontend/Dockerfile` – Konfigurácia frontendovej aplikácie. + - `./elasticsearch/Dockerfile` + - `./Backend/Dockerfile` + - `./frontend/Dockerfile` + - **Skripty:** - - **prepare-app.sh** – Skript, ktorý zostaví (build) a spustí celú aplikáciu pomocou docker-compose. - - **stop-app.sh** – Skript, ktorý zastaví všetky služby. - - **start-app.sh** – Skript, ktorý spustí služby, ktoré boli len zastavené. - - **remove-app.sh** – Skript, ktorý úplne odstráni všetky kontajnery, siete a volume, čím zabezpečí, že aplikáciu je možné rýchlo zrušiť. -- **Nginx konfigurácia** + - `prepare-app.sh` – zostaví a spustí aplikáciu pomocou `docker-compose up --build -d` + - `stop-app.sh` – zastaví bežiace kontajnery + - `start-app.sh` – spustí zastavené kontajnery + - `remove-app.sh` – odstráni kontajnery, siete a volume + +- **Nginx konfigurácia**: Súbor `/etc/nginx/sites-available/healthai-tuke.com` (nasadený na AWS) zabezpečuje: - Presmerovanie HTTP na HTTPS. - - Reverzný proxy, ktorý smeruje požiadavky: - - `/api/` na backend (Flask, port 5000). - - Ostatné požiadavky na frontend (port 5173). + - Reverzný proxy pre `/api/` na backend (port 5000), a ostatné na frontend (port 5173). + +## AWS EC2 Deployment Automatization + +Pre jednoduché nasadenie, správu a odstránenie inštancií v AWS EC2 boli pridané skripty do adresára `aws config`: + +| Skript | Popis | +|--------|-------| +| `deploy-instance.sh` | Vytvorí nový EC2 inštanciu, priradí k nej Elastic IP a vypíše jej IP adresu. | +| `setup-docker.sh` | Nainštaluje Docker, Docker Compose a Git na čerstvo nasadený EC2 server. | +| `setup-nginx-certs.sh` | Skopíruje certifikáty z Let's Encrypt na server a nakonfiguruje Nginx ako reverzný proxy s HTTPS. | +| `start-instance.sh` | Spustí poslednú zastavenú EC2 inštanciu. | +| `stop-instance.sh` | Zastaví poslednú bežiacu EC2 inštanciu. | +| `terminate.sh` | Zastaví a odstráni poslednú bežiacu EC2 inštanciu. | +| `connect.sh` | Pripojí sa k bežiacej EC2 inštancii cez SSH pomocou `.pem` kľúča. | + +### Požiadavky + +- Nainštalovaný AWS CLI +- Prístup k `.pem` súkromnému kľúču +- Nastavené identifikátory: `eipalloc-...`, `subnet-...`, `ami-...`, `sg-...` + +### Ukážka použitia + +```bash +# Vytvorenie a pripojenie inštancie +./aws\ config/deploy-instance.sh +./aws\ config/setup-docker.sh +./aws\ config/setup-nginx-certs.sh + +# Pripojenie +./aws\ config/connect.sh + +# Zastavenie alebo zrušenie +./aws\ config/stop-instance.sh +./aws\ config/terminate.sh +``` ## Ako pozrieť a použiť aplikáciu 1. Otvorte webový prehliadač a zadajte adresu: `https://healthai-tuke.com` - -2. Používateľské rozhranie vám umožní: - - Registráciu a prihlásenie. - - Spustenie chatu so systémom. - - Prezeranie histórie konverzácií. -3. Pre prístup k API môžu používatelia testovať požiadavky pomocou nástrojov ako Postman, curl alebo priamo cez Frontend, ktorý komunikuje s backendom. +2. Funkcie aplikácie: + - Registrácia a prihlásenie + - Interaktívny chat + - Prezeranie histórie konverzácií -## Podmienky pre spustenie skriptov - -- **prepare-app.sh:** - Tento skript zostaví a spustí celú aplikáciu pomocou príkazu `docker-compose up --build -d`. Skript by sa mal spúšťať z koreňového adresára repozitára, kde sa nachádza súbor `docker-compose.yml`. - -- **stop-app.sh:** - Skript zastaví všetky bežiace kontajnery pomocou príkazu `docker-compose stop`. - -- **start-app.sh:** - Tento skript spustí kontajnery, ktoré boli len zastavené, pomocou príkazu `docker-compose start`. - -- **remove-app.sh:** - Skript úplne odstráni vytvorené kontajnery, siete a persistent volume príkazom `docker-compose down --volumes --remove-orphans`. +3. API rozhranie je možné použiť pomocou: + - curl + - Postman + - čalšie frontend požiadavky ## Zoznam externých zdrojov - -- **Externé zdroje a dokumentácia:** - - [Docker Documentation](https://docs.docker.com) - - [Docker Compose Documentation](https://docs.docker.com/compose/) - - [Nginx Documentation](https://nginx.org/en/docs/) - - [Let's Encrypt Certbot Documentation](https://certbot.eff.org) - - [Google OAuth 2.0](https://developers.google.com/identity/protocols/oauth2) - - [PostgreSQL Documentation](https://www.postgresql.org/docs/) - - [Sentence Transformers Documentation](https://www.sbert.net) - - [Hugging Face Hub Documentation](https://huggingface.co/docs) ---- +- [Docker Documentation](https://docs.docker.com) +- [Docker Compose Documentation](https://docs.docker.com/compose/) +- [Nginx Documentation](https://nginx.org/en/docs/) +- [Let's Encrypt Certbot Documentation](https://certbot.eff.org) +- [Google OAuth 2.0](https://developers.google.com/identity/protocols/oauth2) +- [PostgreSQL Documentation](https://www.postgresql.org/docs/) +- [Sentence Transformers Documentation](https://www.sbert.net) +- [Hugging Face Hub Documentation](https://huggingface.co/docs) \ No newline at end of file