mirror of
https://github.com/Mintplex-Labs/anything-llm.git
synced 2024-10-05 18:30:09 +02:00
Aws docker fixes (#309)
* WIP aws fixes to latest changes; * change default in docker env * bump storage default for docker * Updates to docker deployment
This commit is contained in:
parent
27809b34b5
commit
9242578263
@ -91,17 +91,15 @@
|
|||||||
"sudo systemctl start docker\n",
|
"sudo systemctl start docker\n",
|
||||||
"sudo yum install git -y\n",
|
"sudo yum install git -y\n",
|
||||||
"git clone https://github.com/Mintplex-Labs/anything-llm.git /home/ec2-user/anything-llm\n",
|
"git clone https://github.com/Mintplex-Labs/anything-llm.git /home/ec2-user/anything-llm\n",
|
||||||
|
"sudo touch /home/ec2-user/anything-llm/server/storage/anythingllm.db\n",
|
||||||
"cd /home/ec2-user/anything-llm/docker\n",
|
"cd /home/ec2-user/anything-llm/docker\n",
|
||||||
"cat >> .env << \"END\"\n",
|
"cat >> .env << \"END\"\n",
|
||||||
"SERVER_PORT=3001\n",
|
"SERVER_PORT=3001\n",
|
||||||
"OPEN_AI_KEY=\n",
|
"OPEN_AI_KEY=\n",
|
||||||
"OPEN_MODEL_PREF='gpt-3.5-turbo'\n",
|
"OPEN_MODEL_PREF='gpt-3.5-turbo'\n",
|
||||||
"CACHE_VECTORS=\"true\"\n",
|
"CACHE_VECTORS=\"true\"\n",
|
||||||
"VECTOR_DB=\"pinecone\"\n",
|
"VECTOR_DB=\"lancedb\"\n",
|
||||||
"PINECONE_ENVIRONMENT=\n",
|
"STORAGE_DIR=\"/app/server/storage\"\n",
|
||||||
"PINECONE_API_KEY=\n",
|
|
||||||
"PINECONE_INDEX=\n",
|
|
||||||
"STORAGE_DIR=\"./server/storage\"\n",
|
|
||||||
"GOOGLE_APIS_KEY=\n",
|
"GOOGLE_APIS_KEY=\n",
|
||||||
"UID=\"1000\"\n",
|
"UID=\"1000\"\n",
|
||||||
"GID=\"1000\"\n",
|
"GID=\"1000\"\n",
|
||||||
@ -116,8 +114,6 @@
|
|||||||
"echo \"Container ID: $(sudo docker ps --latest --quiet)\"\n",
|
"echo \"Container ID: $(sudo docker ps --latest --quiet)\"\n",
|
||||||
"sudo docker container exec -u 0 -t $(sudo docker ps --latest --quiet) mkdir -p /app/server/storage /app/server/storage/documents /app/server/storage/vector-cache /app/server/storage/lancedb\n",
|
"sudo docker container exec -u 0 -t $(sudo docker ps --latest --quiet) mkdir -p /app/server/storage /app/server/storage/documents /app/server/storage/vector-cache /app/server/storage/lancedb\n",
|
||||||
"echo \"Placeholder folders in storage created.\"\n",
|
"echo \"Placeholder folders in storage created.\"\n",
|
||||||
"sudo docker container exec -u 0 -t $(sudo docker ps --latest --quiet) touch /app/server/storage/anythingllm.db\n",
|
|
||||||
"echo \"SQLite DB placeholder set.\"\n",
|
|
||||||
"sudo docker container exec -u 0 -t $(sudo docker ps --latest --quiet) chown -R anythingllm:anythingllm /app/collector /app/server\n",
|
"sudo docker container exec -u 0 -t $(sudo docker ps --latest --quiet) chown -R anythingllm:anythingllm /app/collector /app/server\n",
|
||||||
"echo \"File permissions corrected.\"\n",
|
"echo \"File permissions corrected.\"\n",
|
||||||
"export ONLINE=$(curl -Is http://localhost:3001/api/ping | head -n 1|cut -d$' ' -f2)\n",
|
"export ONLINE=$(curl -Is http://localhost:3001/api/ping | head -n 1|cut -d$' ' -f2)\n",
|
||||||
|
@ -1,255 +0,0 @@
|
|||||||
{
|
|
||||||
"AWSTemplateFormatVersion": "2010-09-09",
|
|
||||||
"Description": "Create a stack that runs AnythingLLM on a single instance",
|
|
||||||
"Parameters": {
|
|
||||||
"InstanceType": {
|
|
||||||
"Description": "EC2 instance type",
|
|
||||||
"Type": "String",
|
|
||||||
"Default": "t2.small"
|
|
||||||
},
|
|
||||||
"InstanceVolume": {
|
|
||||||
"Description": "Storage size of disk on Instance in GB",
|
|
||||||
"Type": "Number",
|
|
||||||
"Default": 10,
|
|
||||||
"MinValue": 4
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Resources": {
|
|
||||||
"AnythingLLMInstance": {
|
|
||||||
"Type": "AWS::EC2::Instance",
|
|
||||||
"Properties": {
|
|
||||||
"ImageId": {
|
|
||||||
"Fn::FindInMap": [
|
|
||||||
"Region2AMI",
|
|
||||||
{
|
|
||||||
"Ref": "AWS::Region"
|
|
||||||
},
|
|
||||||
"AMI"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"InstanceType": {
|
|
||||||
"Ref": "InstanceType"
|
|
||||||
},
|
|
||||||
"SecurityGroupIds": [
|
|
||||||
{
|
|
||||||
"Ref": "AnythingLLMInstanceSecurityGroup"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"BlockDeviceMappings": [
|
|
||||||
{
|
|
||||||
"DeviceName": {
|
|
||||||
"Fn::FindInMap": [
|
|
||||||
"Region2AMI",
|
|
||||||
{
|
|
||||||
"Ref": "AWS::Region"
|
|
||||||
},
|
|
||||||
"RootDeviceName"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Ebs": {
|
|
||||||
"VolumeSize": {
|
|
||||||
"Ref": "InstanceVolume"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"UserData": {
|
|
||||||
"Fn::Base64": {
|
|
||||||
"Fn::Join": [
|
|
||||||
"",
|
|
||||||
[
|
|
||||||
"Content-Type: multipart/mixed; boundary=\"//\"\n",
|
|
||||||
"MIME-Version: 1.0\n",
|
|
||||||
"\n",
|
|
||||||
"--//\n",
|
|
||||||
"Content-Type: text/cloud-config; charset=\"us-ascii\"\n",
|
|
||||||
"MIME-Version: 1.0\n",
|
|
||||||
"Content-Transfer-Encoding: 7bit\n",
|
|
||||||
"Content-Disposition: attachment; filename=\"cloud-config.txt\"\n",
|
|
||||||
"\n",
|
|
||||||
"\n",
|
|
||||||
"#cloud-config\n",
|
|
||||||
"cloud_final_modules:\n",
|
|
||||||
"- [scripts-user, once-per-instance]\n",
|
|
||||||
"\n",
|
|
||||||
"\n",
|
|
||||||
"--//\n",
|
|
||||||
"Content-Type: text/x-shellscript; charset=\"us-ascii\"\n",
|
|
||||||
"MIME-Version: 1.0\n",
|
|
||||||
"Content-Transfer-Encoding: 7bit\n",
|
|
||||||
"Content-Disposition: attachment; filename=\"userdata.txt\"\n",
|
|
||||||
"\n",
|
|
||||||
"\n",
|
|
||||||
"#!/bin/bash\n",
|
|
||||||
"# check output of userdata script with sudo tail -f /var/log/cloud-init-output.log\n",
|
|
||||||
"sudo yum install docker -y\n",
|
|
||||||
"sudo usermod -a -G docker ec2-user\n",
|
|
||||||
"curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose\n",
|
|
||||||
"sudo chmod +x /usr/local/bin/docker-compose\n",
|
|
||||||
"sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose\n",
|
|
||||||
"sudo systemctl enable docker\n",
|
|
||||||
"sudo systemctl start docker\n",
|
|
||||||
"sudo yum install git -y\n",
|
|
||||||
"git clone https://github.com/Mintplex-Labs/anything-llm.git /home/ec2-user/anything-llm\n",
|
|
||||||
"cd /home/ec2-user/anything-llm/docker\n",
|
|
||||||
"cat >> .env << \"END\"\n",
|
|
||||||
"!SUB::USER::CONTENT!",
|
|
||||||
"UID=\"1000\"\n",
|
|
||||||
"GID=\"1000\"\n",
|
|
||||||
"NO_DEBUG=\"true\"\n",
|
|
||||||
"END\n",
|
|
||||||
"cd ../frontend\n",
|
|
||||||
"rm -rf .env.production\n",
|
|
||||||
"cat >> .env.production << \"END\"\n",
|
|
||||||
"GENERATE_SOURCEMAP=true\n",
|
|
||||||
"VITE_API_BASE=\"/api\"\n",
|
|
||||||
"END\n",
|
|
||||||
"sudo docker-compose -f /home/ec2-user/anything-llm/docker/docker-compose.yml up -d\n",
|
|
||||||
"echo \"Container ID: $(sudo docker ps --latest --quiet)\"\n",
|
|
||||||
"sudo docker container exec -u 0 -t $(sudo docker ps --latest --quiet) mkdir -p /app/server/storage /app/server/storage/documents /app/server/storage/vector-cache /app/server/storage/lancedb\n",
|
|
||||||
"echo \"Placeholder folders in storage created.\"\n",
|
|
||||||
"sudo docker container exec -u 0 -t $(sudo docker ps --latest --quiet) touch /app/server/storage/anythingllm.db\n",
|
|
||||||
"echo \"SQLite DB placeholder set.\"\n",
|
|
||||||
"sudo docker container exec -u 0 -t $(sudo docker ps --latest --quiet) chown -R anythingllm:anythingllm /app/collector /app/server\n",
|
|
||||||
"echo \"File permissions corrected.\"\n",
|
|
||||||
"export ONLINE=$(curl -Is http://localhost:3001/api/ping | head -n 1|cut -d$' ' -f2)\n",
|
|
||||||
"echo \"Health check: $ONLINE\"\n",
|
|
||||||
"if [ \"$ONLINE\" = 200 ] ; then echo \"Running migrations...\" && curl -Is http://localhost:3001/api/migrate | head -n 1|cut -d$' ' -f2; fi\n",
|
|
||||||
"echo \"Setup complete! AnythingLLM instance is now online!\"\n",
|
|
||||||
"\n",
|
|
||||||
"--//--\n"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"AnythingLLMInstanceSecurityGroup": {
|
|
||||||
"Type": "AWS::EC2::SecurityGroup",
|
|
||||||
"Properties": {
|
|
||||||
"GroupDescription": "AnythingLLm Instance Security Group",
|
|
||||||
"SecurityGroupIngress": [
|
|
||||||
{
|
|
||||||
"IpProtocol": "tcp",
|
|
||||||
"FromPort": "22",
|
|
||||||
"ToPort": "22",
|
|
||||||
"CidrIp": "0.0.0.0/0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"IpProtocol": "tcp",
|
|
||||||
"FromPort": "3001",
|
|
||||||
"ToPort": "3001",
|
|
||||||
"CidrIp": "0.0.0.0/0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"IpProtocol": "tcp",
|
|
||||||
"FromPort": "3001",
|
|
||||||
"ToPort": "3001",
|
|
||||||
"CidrIpv6": "::/0"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Outputs": {
|
|
||||||
"ServerIp": {
|
|
||||||
"Description": "IP address of the AnythingLLM instance",
|
|
||||||
"Value": {
|
|
||||||
"Fn::GetAtt": [
|
|
||||||
"AnythingLLMInstance",
|
|
||||||
"PublicIp"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ServerURL": {
|
|
||||||
"Description": "URL of the AnythingLLM server",
|
|
||||||
"Value": {
|
|
||||||
"Fn::Join": [
|
|
||||||
"",
|
|
||||||
[
|
|
||||||
"http://",
|
|
||||||
{
|
|
||||||
"Fn::GetAtt": [
|
|
||||||
"AnythingLLMInstance",
|
|
||||||
"PublicIp"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
":3001"
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Mappings": {
|
|
||||||
"Region2AMI": {
|
|
||||||
"ap-south-1": {
|
|
||||||
"AMI": "ami-0e6329e222e662a52",
|
|
||||||
"RootDeviceName": "/dev/xvda"
|
|
||||||
},
|
|
||||||
"eu-north-1": {
|
|
||||||
"AMI": "ami-08c308b1bb265e927",
|
|
||||||
"RootDeviceName": "/dev/xvda"
|
|
||||||
},
|
|
||||||
"eu-west-3": {
|
|
||||||
"AMI": "ami-069d1ea6bc64443f0",
|
|
||||||
"RootDeviceName": "/dev/xvda"
|
|
||||||
},
|
|
||||||
"eu-west-2": {
|
|
||||||
"AMI": "ami-06a566ca43e14780d",
|
|
||||||
"RootDeviceName": "/dev/xvda"
|
|
||||||
},
|
|
||||||
"eu-west-1": {
|
|
||||||
"AMI": "ami-0a8dc52684ee2fee2",
|
|
||||||
"RootDeviceName": "/dev/xvda"
|
|
||||||
},
|
|
||||||
"ap-northeast-3": {
|
|
||||||
"AMI": "ami-0c8a89b455fae8513",
|
|
||||||
"RootDeviceName": "/dev/xvda"
|
|
||||||
},
|
|
||||||
"ap-northeast-2": {
|
|
||||||
"AMI": "ami-0ff56409a6e8ea2a0",
|
|
||||||
"RootDeviceName": "/dev/xvda"
|
|
||||||
},
|
|
||||||
"ap-northeast-1": {
|
|
||||||
"AMI": "ami-0ab0bbbd329f565e6",
|
|
||||||
"RootDeviceName": "/dev/xvda"
|
|
||||||
},
|
|
||||||
"ca-central-1": {
|
|
||||||
"AMI": "ami-033c256a10931f206",
|
|
||||||
"RootDeviceName": "/dev/xvda"
|
|
||||||
},
|
|
||||||
"sa-east-1": {
|
|
||||||
"AMI": "ami-0dabf4dab6b183eef",
|
|
||||||
"RootDeviceName": "/dev/xvda"
|
|
||||||
},
|
|
||||||
"ap-southeast-1": {
|
|
||||||
"AMI": "ami-0dc5785603ad4ff54",
|
|
||||||
"RootDeviceName": "/dev/xvda"
|
|
||||||
},
|
|
||||||
"ap-southeast-2": {
|
|
||||||
"AMI": "ami-0c5d61202c3b9c33e",
|
|
||||||
"RootDeviceName": "/dev/xvda"
|
|
||||||
},
|
|
||||||
"eu-central-1": {
|
|
||||||
"AMI": "ami-004359656ecac6a95",
|
|
||||||
"RootDeviceName": "/dev/xvda"
|
|
||||||
},
|
|
||||||
"us-east-1": {
|
|
||||||
"AMI": "ami-0cff7528ff583bf9a",
|
|
||||||
"RootDeviceName": "/dev/xvda"
|
|
||||||
},
|
|
||||||
"us-east-2": {
|
|
||||||
"AMI": "ami-02238ac43d6385ab3",
|
|
||||||
"RootDeviceName": "/dev/xvda"
|
|
||||||
},
|
|
||||||
"us-west-1": {
|
|
||||||
"AMI": "ami-01163e76c844a2129",
|
|
||||||
"RootDeviceName": "/dev/xvda"
|
|
||||||
},
|
|
||||||
"us-west-2": {
|
|
||||||
"AMI": "ami-0ceecbb0f30a902a6",
|
|
||||||
"RootDeviceName": "/dev/xvda"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,70 +0,0 @@
|
|||||||
// Note (tcarambat) This script should be executed from root via the `yarn generate::cloudformation` command only.
|
|
||||||
// This script will copy your current Docker .env settings being used into a slightly custom AWS CloudFormation template
|
|
||||||
// that you can upload and deploy on AWS in a single click!
|
|
||||||
// Recommended settings are already defined in the template but you can modify them as needed.
|
|
||||||
// AnythingLLM can run within the free tier services of AWS (t2.micro w/10GB of storage)
|
|
||||||
//
|
|
||||||
// This will deploy a fully public AnythingLLM so if you do not want anyone to access it please set the AUTH_TOKEN & JWT_SECRET envs
|
|
||||||
// before running this script. You can still run the collector scripts on AWS so no FTP or file uploads are required.
|
|
||||||
// Your documents and data do not leave your AWS instance when you host in the cloud this way.
|
|
||||||
|
|
||||||
import fs from 'fs';
|
|
||||||
import { fileURLToPath } from 'url';
|
|
||||||
import path, { dirname } from 'path';
|
|
||||||
import { exit } from 'process';
|
|
||||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
||||||
const REPLACEMENT_KEY = '!SUB::USER::CONTENT!'
|
|
||||||
|
|
||||||
const envPath = path.resolve(__dirname, `../../../docker/.env`)
|
|
||||||
const envFileExists = fs.existsSync(envPath);
|
|
||||||
|
|
||||||
const chalk = {
|
|
||||||
redBright: function (text) {
|
|
||||||
return `\x1b[31m${text}\x1b[0m`
|
|
||||||
},
|
|
||||||
cyan: function (text) {
|
|
||||||
return `\x1b[36m${text}\x1b[0m`
|
|
||||||
},
|
|
||||||
greenBright: function (text) {
|
|
||||||
return `\x1b[32m${text}\x1b[0m`
|
|
||||||
},
|
|
||||||
blueBright: function (text) {
|
|
||||||
return `\x1b[34m${text}\x1b[0m`
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!envFileExists) {
|
|
||||||
console.log(chalk.redBright('[ABORT]'), 'You do not have an .env file in your ./docker/ folder. You need to create it first.');
|
|
||||||
console.log('You can start by running', chalk.cyan('cp -n ./docker/.env.example ./docker/.env'))
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove comments
|
|
||||||
// Remove UID,GID,etc
|
|
||||||
// Remove empty strings
|
|
||||||
// Split into array
|
|
||||||
const settings = fs.readFileSync(envPath, "utf8")
|
|
||||||
.replace(/^#.*\n?/gm, '')
|
|
||||||
.replace(/^UID.*\n?/gm, '')
|
|
||||||
.replace(/^GID.*\n?/gm, '')
|
|
||||||
.replace(/^CLOUD_BUILD.*\n?/gm, '')
|
|
||||||
.replace(/^\s*\n/gm, "")
|
|
||||||
.split('\n')
|
|
||||||
.filter((i) => !!i)
|
|
||||||
.map((i) => i + '\n')
|
|
||||||
|
|
||||||
const templatePath = path.resolve(__dirname, `cf_template.template`);
|
|
||||||
const templateString = fs.readFileSync(templatePath, "utf8");
|
|
||||||
const template = JSON.parse(templateString);
|
|
||||||
|
|
||||||
const cmdIdx = template.Resources.AnythingLLMInstance.Properties.UserData['Fn::Base64']['Fn::Join'][1].findIndex((cmd) => cmd === REPLACEMENT_KEY)
|
|
||||||
template.Resources.AnythingLLMInstance.Properties.UserData['Fn::Base64']['Fn::Join'][1].splice(cmdIdx, 1, ...settings);
|
|
||||||
|
|
||||||
const output = path.resolve(__dirname, `aws_cf_deploy_anything_llm.json`);
|
|
||||||
fs.writeFileSync(output, JSON.stringify(template, null, 2), "utf8");
|
|
||||||
|
|
||||||
console.log(chalk.greenBright('[SUCCESS]'), 'Deploy AnythingLLM on AWS CloudFormation using your template document.');
|
|
||||||
console.log(chalk.greenBright('File Created:'), 'aws_cf_deploy_anything_llm.json in aws/cloudformation directory.');
|
|
||||||
console.log(chalk.blueBright('[INFO]'), 'Refer to aws/cloudformation/DEPLOY.md for how to use this file.');
|
|
||||||
|
|
||||||
exit();
|
|
@ -26,7 +26,7 @@ OPEN_MODEL_PREF='gpt-3.5-turbo'
|
|||||||
# CHROMA_API_KEY="sk-123abc"
|
# CHROMA_API_KEY="sk-123abc"
|
||||||
|
|
||||||
# Enable all below if you are using vector database: Pinecone.
|
# Enable all below if you are using vector database: Pinecone.
|
||||||
VECTOR_DB="pinecone"
|
VECTOR_DB="lancedb"
|
||||||
PINECONE_ENVIRONMENT=
|
PINECONE_ENVIRONMENT=
|
||||||
PINECONE_API_KEY=
|
PINECONE_API_KEY=
|
||||||
PINECONE_INDEX=
|
PINECONE_INDEX=
|
||||||
@ -47,7 +47,7 @@ PINECONE_INDEX=
|
|||||||
# CLOUD DEPLOYMENT VARIRABLES ONLY
|
# CLOUD DEPLOYMENT VARIRABLES ONLY
|
||||||
# AUTH_TOKEN="hunter2" # This is the password to your application if remote hosting.
|
# AUTH_TOKEN="hunter2" # This is the password to your application if remote hosting.
|
||||||
# NO_DEBUG="true"
|
# NO_DEBUG="true"
|
||||||
STORAGE_DIR="./server/storage"
|
STORAGE_DIR="/app/server/storage"
|
||||||
GOOGLE_APIS_KEY=
|
GOOGLE_APIS_KEY=
|
||||||
UID='1000'
|
UID='1000'
|
||||||
GID='1000'
|
GID='1000'
|
||||||
|
@ -5,11 +5,11 @@ Use the Dockerized version of AnythingLLM for a much faster and complete startup
|
|||||||
## Requirements
|
## Requirements
|
||||||
- Install [Docker](https://www.docker.com/) on your computer or machine.
|
- Install [Docker](https://www.docker.com/) on your computer or machine.
|
||||||
|
|
||||||
## How to install
|
## How to install & run locally
|
||||||
- `git clone` this repo and `cd anything-llm` to get to the root directory.
|
- `git clone` this repo and `cd anything-llm` to get to the root directory.
|
||||||
- `yarn setup`
|
- `touch server/storage/anythingllm.db` to create empty SQLite DB file.
|
||||||
- `cd docker/`
|
- `cd docker/`
|
||||||
- Edit `.env` file and update the variables
|
- `cp .env.example .env`
|
||||||
- `docker-compose up -d --build` to build the image - this will take a few moments.
|
- `docker-compose up -d --build` to build the image - this will take a few moments.
|
||||||
|
|
||||||
Your docker host will show the image as online once the build process is completed. This will build the app to `http://localhost:3001`.
|
Your docker host will show the image as online once the build process is completed. This will build the app to `http://localhost:3001`.
|
||||||
@ -17,7 +17,7 @@ Your docker host will show the image as online once the build process is complet
|
|||||||
## How to use the user interface
|
## How to use the user interface
|
||||||
- To access the full application, visit `http://localhost:3001` in your browser.
|
- To access the full application, visit `http://localhost:3001` in your browser.
|
||||||
|
|
||||||
## How to add files to my system
|
## How to add files to my system using the standalone scripts
|
||||||
- Upload files from the UI in your Workspace settings
|
- Upload files from the UI in your Workspace settings
|
||||||
|
|
||||||
- To run the collector scripts to grab external data (articles, URLs, etc.)
|
- To run the collector scripts to grab external data (articles, URLs, etc.)
|
||||||
@ -27,9 +27,6 @@ Your docker host will show the image as online once the build process is complet
|
|||||||
- `docker exec -it --workdir=/app/collector anything-llm python watch.py`
|
- `docker exec -it --workdir=/app/collector anything-llm python watch.py`
|
||||||
- Upload [compliant files](../collector/hotdir/__HOTDIR__.md) to `./collector/hotdir` and they will be processed and made available in the UI.
|
- Upload [compliant files](../collector/hotdir/__HOTDIR__.md) to `./collector/hotdir` and they will be processed and made available in the UI.
|
||||||
|
|
||||||
## How to update and rebuild the ENV?
|
|
||||||
- Update the `./docker/.env` and run `docker-compose up -d --build` to rebuild with new environments.
|
|
||||||
|
|
||||||
## About UID and GID in the ENV
|
## About UID and GID in the ENV
|
||||||
- The UID and GID are set to 1000 by default. This is the default user in the Docker container and on most host operating systems. If there is a mismatch between your host user UID and GID and what is set in the `.env` file, you may experience permission issues.
|
- The UID and GID are set to 1000 by default. This is the default user in the Docker container and on most host operating systems. If there is a mismatch between your host user UID and GID and what is set in the `.env` file, you may experience permission issues.
|
||||||
|
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
node /app/server/index.js &
|
{ cd /app/server/ &&\
|
||||||
|
npx prisma generate --schema=./prisma/schema.prisma &&\
|
||||||
|
npx prisma migrate deploy --schema=./prisma/schema.prisma &&\
|
||||||
|
node /app/server/index.js
|
||||||
|
} &
|
||||||
{ FLASK_ENV=production FLASK_APP=wsgi.py cd collector && gunicorn --timeout 300 --workers 4 --bind 0.0.0.0:8888 wsgi:api; } &
|
{ FLASK_ENV=production FLASK_APP=wsgi.py cd collector && gunicorn --timeout 300 --workers 4 --bind 0.0.0.0:8888 wsgi:api; } &
|
||||||
wait -n
|
wait -n
|
||||||
exit $?
|
exit $?
|
Loading…
Reference in New Issue
Block a user