Nitrogen is a tool for deploying web services to AWS Nitro Enclaves. Given a dockerfile and an ssh key, Nitrogen will spin up an EC2, configure the network, and build and deploy your web service. You get back a hostname that’s ready to go. Nitrogen is fully open source and it comes with pre-built scripts for deploying popular services like Nginx, Redis, and MongoDB.
Nitrogen can easily be installed with the following:
curl -fsSL https://raw.githubusercontent.com/capeprivacy/nitrogen/main/install.sh | sh
Note: An AWS account is required. If you have AWS cli configured you can retrieve your credentials with cat ~/.aws/credentials
. See troubleshooting if your AWS account uses MFA
bash
export AWS_ACCESS_KEY_ID=<YOUR ACCESS KEY>
export AWS_SECRET_ACCESS_KEY=<YOUR SECRET>
nitrogen setup <stack_name> <ssh_public_key>
nitrogen build <dockerfile_directory>
nitrogen deploy <stack_name> <ssh_private_key>
nitrogen delete <stack_name>
```sh $ nitrogen setup nitrogen-test ~/.ssh/id_rsa.pub --instance-type m5n.16xlarge
INFO nitrogen: Spinning up enclave instance 'nitrogen-test'. INFO nitrogen::commands::setup: Successfully created enclave instance. stackid="arn:aws:cloudformation:us-east-1:657861442343:stack/nitrogen-test/c93c7c80-5581-11ed-8a2b-0e2f3ffeccf1" INFO nitrogen: User enclave information: name="nitrogen-test" instanceid="i-07daa284594ff02bc" publicip="44.197.181.14" availabilityzone="us-east-1b" public_dns="ec2-44-197-181-14.compute-1.amazonaws.com" ```
```sh $ nitrogen build examples/nginx/
Filename: nitrogen.eif ```
```sh $ nitrogen deploy nitrogen-test ~/.ssh/id_rsa
Listening: ec2-1-234-56-789.compute-1.amazonaws.com:5000 ```
```sh $ curl http://ec2-1-234-56-789.compute-1.amazonaws.com:5000/
Hello World ```
If you have permissions issues and your aws account has MFA enabled then attempt to use a session token before running setup
.
aws sts get-session-token --serial-number arn:aws:iam::<AWS ACCOUNT NUMBER>:mfa/<USER NAME> --token-code <CODE>
Export the values printed from the above command:
export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
export AWS_SESSION_TOKEN=
You can also use a helper script in this library called sts.sh
. Warning: this will unset any AWS environment variables related to auth
that you have already set in your shell.
. sts.sh <ACCOUNT> <USER NAME> <CODE>