Amazon Lightsail
Amazon Lightsail is a service that lets you spin up managed service quickly with a shell script.
Amazon Lightsail

Setting up a Server

First login to your Amazon Lightsail account and create an instance
Instance Settings
These are the insance settings that are working. Your mileage may vary for something not indicated in this list.
  • Select OS Only
  • Ubuntu 18.04
  • Add Launch Script (script below)
  • Select 1GB - $5 plan.
  • Assign a name to your instance under "Identify Your Instance"
That's basically it for settings!
Now before you click create, you'll need the following template to get your site working on Amazon Lightsail. You only get one shot at this when it initializes. You can't do this later.
Commandbox Template
Full script at the end but here is the play by play
1. Install Java
Commandbox needs Java to run
1
# They try to ship out Ubuntu as light as possible so you'll want to run this first to get all the latest repo information
2
sudo apt-get update
3
# install java openJDK 8 for commandbox
4
yes | sudo apt-get install openjdk-8-jre
Copied!
2. Install Commandbox
1
#taken straight from ortus docs commandbox install
2
curl -fsSl https://downloads.ortussolutions.com/debs/gpg | sudo apt-key add -
3
echo "deb http://downloads.ortussolutions.com/debs/noarch /" | sudo tee -a /etc/apt/sources.list.d/commandbox.list
4
sudo apt-get update && sudo apt-get install commandbox
Copied!
3. Download your code/repo
In this template, we are using Ortus' awesome Github repo with Elixir and Vue.js. There are other ways like copying over from a local file with SSH or use a disk that you created in Amazon Lightsail that will persist even if the instance is delete. Notice here that we saved it to the /app directory. Note that for later when you run your app, to navigate to it.
1
sudo git clone https://github.com/coldbox-templates/elixir-vuejs.git /app
Copied!
Private Repo If you want to automate a private repo, one way you can do it is to use an access token. The procedure is here https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line. You can create an an access token for downloading private repos without exposing your account password. Fair warning, it's not a perfect solution because as of 08/27/19, they still don't have a read-only permission for private repos.
1
sudo git clone https://{username}:{access-token}@github.com/your/repo.git /app
Copied!
4. Install any dependencies
For example you can run your box dependencies or if you are using webpack, this would be the time to get all that compiled.
1
cd /app && sudo box install
Copied!
5. Run the server
In here we start the server in the /app directory. We set the host to 0.0.0.0 so that it listens on any interface/hostname assigned to it. Also, we define the port 80 so that it's not some random port generated by commandbox. Long story short, when this thing runs, we know all we need to do is hit the IP address that Amazon Lightsail assigned to it.
1
cd /app && sudo box start --debug host=0.0.0.0 port=80
Copied!

Final script

1
sudo apt-get update
2
#install java openJDK 8 for commandbox. For openJDK 11,you can use apt-get install default-jre
3
yes | sudo apt-get install openjdk-8-jre
4
5
#taken straight from ortus docs commandbox install
6
curl -fsSl https://downloads.ortussolutions.com/debs/gpg | sudo apt-key add -
7
echo "deb http://downloads.ortussolutions.com/debs/noarch /" | sudo tee -a /etc/apt/sources.list.d/commandbox.list
8
sudo apt-get update && sudo apt-get install commandbox
9
10
#might need this later for webpack
11
yes | sudo apt install npm
12
#clone your repo to the /app directory, just like Ortus does
13
sudo git clone https://github.com/coldbox-templates/elixir-vuejs.git /app
14
#For Private repo format
15
#sudo git clone https://{username}:{access-token}@github.com/your/repo.git /app
16
17
#start server and expose it to the world
18
cd /app && sudo box install
19
sudo box start --debug host=0.0.0.0 port=80
20
21
#Note: For openJDK 11 to work, you will need to add a JVM arg to prevent this issue https://luceeserver.atlassian.net/browse/LDEV-1138
22
#sudo box start --debug host=0.0.0.0 port=80 JVMArgs="-Djdk.attach.allowAttachSelf=true"
Copied!

That's it

All you have to do is create your instance. It will boot up and when it is finally running, you should have a Public IP address assigned to it...But don't be in to big of a hurry. With these settings, it takes about 4 minutes and 30 seconds before Commandbox is serving something. Wait for it and enjoy!
Last modified 2yr ago
Copy link
Edit on GitHub