update AWS launch to use public AMI

This commit is contained in:
timothycarambat 2023-07-20 16:40:48 -07:00
parent 6b6007f9ad
commit 5eed8b66f5
3 changed files with 205 additions and 4 deletions

View File

@ -2,16 +2,16 @@
With an AWS account you can easily deploy a private AnythingLLM instance on AWS. This will create a url that you can access from any browser over HTTP (HTTPS not supported). This single instance will run on your own keys and they will not be exposed - however if you want your instance to be protected it is highly recommend that you set the `AUTH_TOKEN` and `JWT_SECRET` variables in the `docker/` ENV. With an AWS account you can easily deploy a private AnythingLLM instance on AWS. This will create a url that you can access from any browser over HTTP (HTTPS not supported). This single instance will run on your own keys and they will not be exposed - however if you want your instance to be protected it is highly recommend that you set the `AUTH_TOKEN` and `JWT_SECRET` variables in the `docker/` ENV.
**Quick Launch** **Quick Launch (EASY)**
2. Log in to your AWS account 2. Log in to your AWS account
3. Open [CloudFormation](https://us-west-1.console.aws.amazon.com/cloudformation/home) 3. Open [CloudFormation](https://us-west-1.console.aws.amazon.com/cloudformation/home)
4. Ensure you are deploying in a geographic zone that is nearest to your physical location to reduce latency. 4. Ensure you are deploying in a geographic zone that is nearest to your physical location to reduce latency.
5. Click `Create Stack` 5. Click `Create Stack`
6. Use the file `aws_no_creds.json` as your JSON template. 6. Use the file `create_anythinng_llm_instance.json` as your JSON template.
7. Launch. On first boot fill out your ENV keys and you are fully live. 7. Launch. On first boot fill out your ENV keys and you are fully live. Time to boot is approximately 60 seconds.
Done. Done.
**Custom Launch** **Custom Launch and Build From Source**
[Refer to .env.example](../../../docker/HOW_TO_USE_DOCKER.md) for data format. [Refer to .env.example](../../../docker/HOW_TO_USE_DOCKER.md) for data format.
The output of this cloudformation stack will be: The output of this cloudformation stack will be:

View File

@ -0,0 +1,201 @@
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Create a stack that runs AnythingLLM on a single instance from the Mintplex Labs Inc maintained AWS AMI image..",
"Parameters": {
"InstanceType": {
"Description": "EC2 instance type",
"Type": "String",
"Default": "t2.small"
},
"AMIImageTemplate": {
"Description": "AMI Image ID to clone to a new instance. Currently the AMI is for anythingllm@0.0.1-beta",
"Type": "String",
"Default": "ami-0158d2dc27fba7922"
}
},
"Resources": {
"AnythingLLMInstance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": {
"Ref": "AMIImageTemplate"
},
"InstanceType": {
"Ref": "InstanceType"
},
"SecurityGroupIds": [
{
"Ref": "AnythingLLMInstanceSecurityGroup"
}
],
"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, always]\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 docker-compose -f /home/ec2-user/anything-llm/docker/docker-compose.yml up -d\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"
}
}
}
}