feat: 🎸 install (#1784)

now made easy

# Description

Please include a summary of the changes and the related issue. Please
also include relevant motivation and context.

## Checklist before requesting a review

Please delete options that are not relevant.

- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my code
- [ ] I have commented hard-to-understand areas
- [ ] I have ideally added tests that prove my fix is effective or that
my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged

## Screenshots (if appropriate):
This commit is contained in:
Stan Girard 2023-12-02 14:50:57 +01:00 committed by GitHub
parent 8650fdca77
commit 9e0bc0749f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 74 additions and 45 deletions

View File

@ -2,6 +2,9 @@
OPENAI_API_KEY=CHANGE_ME OPENAI_API_KEY=CHANGE_ME
CREATE_FIRST_USER=true # set to false if you want to create the first user manually by default it will create a user with the following credentials:
# login: admin@quivr.app
# password: admin

View File

@ -58,72 +58,66 @@ Ensure you have the following installed:
git clone git@github.com:StanGirard/Quivr.git && cd Quivr git clone git@github.com:StanGirard/Quivr.git && cd Quivr
``` ```
- **Step 2**: Install prerequisites:
```bash - **Step 2**: Copy the `.env.example` files
brew install gum # Windows (via Scoop) scoop install charm-gum
brew install postgresql # Windows (via Scoop) scoop install postgresql
```
- **Step 3**: Copy the `.env.example` files
```bash ```bash
cp .env.example .env cp .env.example .env
``` ```
- **Step 4**: Update the `.env` files - **Step 3**: Update the `.env` files
Update **OPENAI_API_KEY** in the `.env` file. ```bash
vim .env # or emacs or vscode or nano
```
You just need to update the `OPENAI_API_KEY` variable in the `.env` file. You can get your API key [here](https://platform.openai.com/api-keys). You need to create an account first. And put your credit card information. Don't worry, you won't be charged unless you use the API. You can find more information about the pricing [here](https://openai.com/pricing/). Update **OPENAI_API_KEY** in the `.env` file.
```bash You just need to update the `OPENAI_API_KEY` variable in the `.env` file. You can get your API key [here](https://platform.openai.com/api-keys). You need to create an account first. And put your credit card information. Don't worry, you won't be charged unless you use the API. You can find more information about the pricing [here](https://openai.com/pricing/).
vim .env # or emacs or vscode or nano
```
Quivr can be installed offline and is compatible with [Ollama.ai](https://ollama.ai) , in order to do so, follow the instructions [here](https://brain.quivr.app/docs/Developers/selfHosted/run_fully_local). It requires some technical expertise. If you need help, feel free to join our [Discord](https://discord.gg/HUpRgp2HG8) and ask for help. The OPENAI_API_KEY is still required if you install Quivr offline but you can put whatever you want in the `.env` file.
- **Step 5**: Launch the db Want to use [Ollama.ai](https://ollama.ai) instead, in order to do so, follow the instructions [here](https://brain.quivr.app/docs/Developers/selfHosted/run_fully_local).
- **Step 4**: Launch the project
```bash ```bash
docker compose pull docker compose pull
docker compose up --build
docker compose up db -d
``` ```
- **Step 6**: Use the `migration.sh` script to run the migration scripts
- **Step 5**: Login to the app
You can now sign in to the app with your new user. You can access the app at [http://localhost:3000/login](http://localhost:3000/login).
Email: `admin@quivr.app`
Password: `admin`
You can also connect to the supabase database at [http://localhost:8080](http://localhost:8080) with the following credentials: admin/admin in order to create new users.
You can access Quivr backend API at [http://localhost:5050/](http://localhost:5050/)
## Updating Quivr 🚀
- **Step 1**: Pull the latest changes
```bash
git pull
```
- **Step 2**: Use the `migration.sh` script to run the migration scripts
```bash ```bash
chmod +x migration.sh chmod +x migration.sh
./migration.sh ./migration.sh
# Select 1) Create all tables # Select 2) Run migrations
``` ```
Choose either `Create all tables` if it's your first time or `Run migrations`
if you are updating your database.
Alternatively, you can run the script on the Supabase database via the web Alternatively, you can run the script on the Supabase database via the web
interface (SQL Editor -> `New query` -> paste the script -> `Run`) interface (SQL Editor -> `New query` -> paste the script -> `Run`)
All the scripts can be found in the [scripts](scripts/) folder All the scripts can be found in the [scripts](scripts/) folder
- **Step 7**: Launch the app
```bash
docker compose up --build
```
- **Step 8**: Navigate to `localhost:8000` in your browser
Once Quivr is running, you need to create an account to access the app. User is `admin` and password is `admin`. Go to [http://localhost:8000/project/default/auth/users](http://localhost:8000/project/default/auth/users) and create a new user in the `Users` section. You can then log in with your new user.
- **Step 9**: Login to the app
You can now sign in to the app with your new user. You can access the app at [http://localhost:3000/login](http://localhost:3000/login).
## Contributors ✨ ## Contributors ✨
Thanks go to these wonderful people: Thanks go to these wonderful people:

View File

@ -1,6 +1,6 @@
import os import os
from fastapi import FastAPI
from packages.utils import handle_request_validation_error
if __name__ == "__main__": if __name__ == "__main__":
# import needed here when running main.py to debug backend # import needed here when running main.py to debug backend
@ -26,6 +26,8 @@ from routes.brain_routes import brain_router
from routes.chat_routes import chat_router from routes.chat_routes import chat_router
from routes.crawl_routes import crawl_router from routes.crawl_routes import crawl_router
from routes.subscription_routes import subscription_router from routes.subscription_routes import subscription_router
from logger import get_logger
from packages.utils import handle_request_validation_error
from sentry_sdk.integrations.fastapi import FastApiIntegration from sentry_sdk.integrations.fastapi import FastApiIntegration
from sentry_sdk.integrations.starlette import StarletteIntegration from sentry_sdk.integrations.starlette import StarletteIntegration
@ -50,6 +52,24 @@ if sentry_dsn:
], ],
) )
if CREATE_FIRST_USER := os.getenv("CREATE_FIRST_USER", "False").lower() == "true":
try:
from supabase import create_client
supabase_client_auth = create_client(
os.getenv("SUPABASE_URL"), os.getenv("SUPABASE_SERVICE_KEY")
)
res = supabase_client_auth.from_('users').select('*').eq('email', "admin@quivr.app").execute()
if len(res.data) == 0:
supabase_client_auth.auth.admin.create_user({"email": "admin@quivr.app","email_confirm": True, "password": "admin"})
logger.info("👨‍💻 Created first user")
else:
logger.info("👨‍💻 First user already exists")
except Exception as e:
logger.error("👨‍💻 Error while creating first user")
logger.error(e)
telemetry_disabled = os.getenv("TELEMETRY_DISABLED", "False").lower() == "true" telemetry_disabled = os.getenv("TELEMETRY_DISABLED", "False").lower() == "true"
if not telemetry_disabled: if not telemetry_disabled:
try: try:

View File

@ -13,6 +13,8 @@ services:
- NEXT_PUBLIC_CMS_URL=${NEXT_PUBLIC_CMS_URL} - NEXT_PUBLIC_CMS_URL=${NEXT_PUBLIC_CMS_URL}
- NEXT_PUBLIC_FRONTEND_URL=${NEXT_PUBLIC_FRONTEND_URL} - NEXT_PUBLIC_FRONTEND_URL=${NEXT_PUBLIC_FRONTEND_URL}
container_name: web container_name: web
depends_on:
- backend-core
restart: always restart: always
ports: ports:
- 3000:3000 - 3000:3000
@ -26,11 +28,21 @@ services:
context: backend context: backend
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: backend-core container_name: backend-core
command:
- "uvicorn"
- "main:app"
- "--host"
- "0.0.0.0"
- "--port"
- "5050"
- "--workers"
- "1"
restart: always restart: always
depends_on: depends_on:
- redis db:
- worker condition: service_healthy
- beat kong:
condition: service_healthy
ports: ports:
- 5050:5050 - 5050:5050
@ -463,7 +475,7 @@ services:
- ./volumes/db/data:/var/lib/postgresql/data:Z - ./volumes/db/data:/var/lib/postgresql/data:Z
# Changes required for Analytics support # Changes required for Analytics support
- ./volumes/db/logs.sql:/docker-entrypoint-initdb.d/migrations/99-logs.sql:Z - ./volumes/db/logs.sql:/docker-entrypoint-initdb.d/migrations/99-logs.sql:Z
- ./volumes/db/init/data.sql:/docker-entrypoint-initdb.d/seed.sql - ./scripts/tables.sql:/docker-entrypoint-initdb.d/seed.sql
vector: vector:
container_name: supabase-vector container_name: supabase-vector