We recommend using EC2 Instance for the deployment as it is the simplest to set-up.

If you want to deploy Xyne on AWS instead of your local machine, this document will give you a detailed guide to do so. Follow the steps listed below to get started :

Connect to the instance remotely:

Once you have your instance up and running, you can use your terminal to connect to your instance remotely. Use this command to connect to your instance :

ssh -i ~/path/to/your-private-key-file.pem ec2-user@public-ipv4-address

Install the required dependencies :

Deployment of Xyne on AWS EC2 using docker image requires you to only install Docker and Docker Compose:

Once you have installed the dependencies, you can use the following steps to set up the instance.

Ensure you have an instance with enough storage to store the dependencies and run the Xyne Application

Clone the repository :

Use the following git command to clone the Xyne repository.

git clone https://github.com/xynehq/xyne.git

Pre Execution Setup [Environment Variables]:

For enabling Google Authentication for your application you need to create your google credentials and setup some environment variables:

You can obtain the GOOGLE_CLIENT_ID and GOOGLE_SECRET by following guide :

Setup Google Credentials

Setup your Google Credentials for the application.

Server side:

Inside the server folder of the xyne folder, you will find a .env.default file, this is the .env file that our docker uses. For the moment you will find some default generated environment variables that we’ve set up for the app to work.

We strictly recommend generating your own ENCRYPTION_KEY, SERVICE_ACCOUNT_ENCRYPTION_KEY and JWT_SECRET values for security.
Due to our agentic RAG implementation, the maximum TPM limit exceeds for Open AI’s gpt4o model. For the best experience, we recommend using AWS Bedrock or Claude, as it enhances performance and accuracy.

In the .env.default file, you can modify the following and replace the missing values with your own :

.env.default file
ENCRYPTION_KEY=<YOUR_ENCRYPTION_KEY>
SERVICE_ACCOUNT_ENCRYPTION_KEY=<YOUR_SERVICE_ACCOUNT_ENCRYPTION_KEY> 

  
GOOGLE_CLIENT_ID=<YOUR_GOOGLE_CLIENT_ID>
GOOGLE_CLIENT_SECRET=<YOUR_GOOGLE_CLIENT_SECRET>
GOOGLE_REDIRECT_URI=http://localhost:3001/v1/auth/callback
GOOGLE_PROD_REDIRECT_URI=<YOUR_Public_IPv4_DNS_ADDRESS>/v1/auth/callback

JWT_SECRET=<YOUR_JWT_SECRET>


DATABASE_HOST=xyne-db
VESPA_HOST=vespa


## If using AWS Bedrock
AWS_ACCESS_KEY=<YOUR_AWS_ACCESS_KEY>
AWS_SECRET_KEY=<YOUR_AWS_ACCESS_SECRET>
AWS_REGION=<YOUR_AWS_REGION>
  
## OR [ If using Open AI ]
OPENAI_API_KEY=<YOUR_OPEN_API_KEY>

## OR [ If using Ollama ] 
OLLAMA_MODEL=<YOUR_OLLAMA_MODEL_NAME> 

## OR  [ If using Together AI ] 
TOGETHER_API_KEY=<YOUR_TOGETHER_API_KEY>
TOGETHER_MODEL=<YOUR_TOGETHER_MODEL>
TOGETHER_FAST_MODEL=<YOUR_TOGETHER_FAST_MODEL>

## OR  [ If using Fireworks AI ] 
FIREWORKS_API_KEY=<YOUR_FIREWORKS_API_KEY>
FIREWORKS_MODEL=<YOUR_FIREWORKS_MODEL>
FIREWORKS_FAST_MODEL=<YOUR_FIREWORKS_FAST_MODEL>


HOST=<YOUR_Public_IPv4_DNS_ADDRESS>
Ensure that these IPv4 address is the same as the one you’ve added in your Google Cloud Project
To use the chat feature of Xyne, you need any one AI provider (AWS, Ollama, OpenAI Together AI or Fireworks AI). Missing keys will disable chat functionality.

You can checkout the AI Providers section for better clarity :

Setup AI Providers for Xyne

Setup your AI Provider.

Chat will be unavailable without a Service Account or OAuth Account connection.

Deploy Xyne with Docker :

Run the following command to run the application :

docker-compose -f deployment/docker-compose.selfhost.yml up 

Your application is now deployed :

Your application is now running and will be available in your EC2 Public IPv4 DNS address.

Post Execution Setup [ Frontend Environment Variables]

After you have deployed your application, you need to setup some frontend variables for your application. For this create a .env.production in your application, and then add the following :

 VITE_API_BASE_URL=http://<YOUR_AWS_INSTANCE_IPv4_DNS>
 VITE_WS_BASE_URL=wss://<YOUR_AWS_INSTANCE_IPv4_DNS>

Ensure that these IPv4 address is the same as the one you’ve added in your Google Cloud Project
Save the file.

Now you need to add this to the docker container running the app, for this use :

docker cp /path/to/your/.env.production xyne-app:usr/src/app/frontend/.env.production

And then rebuild the frontend using :

docker exec -it xyne-app sh -c "cd /usr/src/app/frontend && bun run build"

Ingesting data

Follow the guide below to learn more about ingesting data into Xyne app:

Ingest data in Xyne app

Ingest data into Xyne app.