mirror of
https://github.com/Mintplex-Labs/anything-llm.git
synced 2024-11-15 19:00:33 +01:00
234 lines
6.7 KiB
JSON
234 lines
6.7 KiB
JSON
{
|
|
"AWSTemplateFormatVersion": "2010-09-09",
|
|
"Description": "Create a stack that runs AnythingLLM on a single instance",
|
|
"Parameters": {
|
|
"InstanceType": {
|
|
"Description": "EC2 instance type",
|
|
"Type": "String",
|
|
"Default": "t3.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 iptables -y\n",
|
|
"sudo iptables -A OUTPUT -m owner ! --uid-owner root -d 169.254.169.254 -j DROP\n",
|
|
"sudo systemctl enable docker\n",
|
|
"sudo systemctl start docker\n",
|
|
"mkdir -p /home/ec2-user/anythingllm\n",
|
|
"touch /home/ec2-user/anythingllm/.env\n",
|
|
"sudo chown ec2-user:ec2-user -R /home/ec2-user/anythingllm\n",
|
|
"docker pull mintplexlabs/anythingllm:master\n",
|
|
"docker run -d -p 3001:3001 --cap-add SYS_ADMIN -v /home/ec2-user/anythingllm:/app/server/storage -v /home/ec2-user/anythingllm/.env:/app/server/.env -e STORAGE_DIR=\"/app/server/storage\" mintplexlabs/anythingllm:master\n",
|
|
"echo \"Container ID: $(sudo docker ps --latest --quiet)\"\n",
|
|
"export ONLINE=$(curl -Is http://localhost:3001/api/ping | head -n 1|cut -d$' ' -f2)\n",
|
|
"echo \"Health check: $ONLINE\"\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"
|
|
}
|
|
}
|
|
}
|
|
} |