diff --git a/README.MD b/README.MD index 48a6c76..aea7442 100644 --- a/README.MD +++ b/README.MD @@ -143,16 +143,16 @@ Forgive me, some of these are basic, but I list them here for less technical use ### Project Setup 1. Copy the `.env.template` file in the project root directory and name the copy `.env`. This is where your configuration for your Jellyfin instance will go, as well as the credentials you'll need to deploy. Below is a description of each item you'll need to configure. Inside your `.env` file, place the raw text string after the equals sign with no extra spaces. - * `AWS_ACCESS_KEY_ID`: This is your access key ID from AWS. See _Prequisites_ for instructions on getting this. - * `AWS_REGION`: This is the AWS region in which your Jellyfin instance will run. This should be close to where you'll be streaming the most from. See [this page](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html) for an overview of possible regions. You must use the lowercase-and-hyphen form of the region, e.g. `us-east-1`. - * `AWS_SECRET_ACCESS_KEY`: This is your secret access key from AWS. See _Prequisites_ for instructions on getting this. - * `EBS_MEDIA_VOLUME_SIZE`: This is the size of the drive that will be attached to the EC2 instance as a media storage drive, specified in gigabytes (GiB). Your media is syncronized to this drive, so it must be large enough to store everything you plan to upload. **WARNING**: Please make sure this is a different size than specified in `EBS_ROOT_VOLUME_SIZE`. Because of [the way AWS handles volume naming](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/device_naming.html), we use this unique volume size to detect the media volume and mount it as your `~/jellyfin/media` folder. + * `AWS_ACCESS_KEY_ID`: This is your access key ID from AWS. See _Prequisites_ for instructions on getting this. + * `AWS_REGION`: This is the AWS region in which your Jellyfin instance will run. This should be close to where you'll be streaming the most from. See [this page](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html) for an overview of possible regions. You must use the lowercase-and-hyphen form of the region, e.g. `us-east-1`. + * `AWS_SECRET_ACCESS_KEY`: This is your secret access key from AWS. See _Prequisites_ for instructions on getting this. + * `EBS_MEDIA_VOLUME_SIZE`: This is the size of the drive that will be attached to the EC2 instance as a media storage drive, specified in gigabytes (GiB). Your media is syncronized to this drive, so it must be large enough to store everything you plan to upload. **WARNING**: Please make sure this is a different size than specified in `EBS_ROOT_VOLUME_SIZE`. Because of [the way AWS handles volume naming](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/device_naming.html), we use this unique volume size to detect the media volume and mount it as your `~/jellyfin/media` folder. * `EBS_MEDIA_VOLUME_TYPE`: This is the type of drive AWS will attach to your EC2 instance as the media volume. Valid values are `gp2`, `io1`, `st1`, and `sc1`. I'd recommend `st1` for large drives, and `gp2` for small drives. See https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html for a description of drive types. * `EBS_ROOT_VOLUME_SIZE`: This is the size of the drive that will be the root volume for your jellyfin instance, in gigabytes (GiB). It just needs enough space for working files. I'd recommend something on the order of `8`. - * `EC2_INSTANCE_TYPE`: This is the type and size of the server you'll be running the Jellyfin instance on. See https://aws.amazon.com/ec2/instance-types/ for details on what types of instances are available. I would recommend something relatively small to start, especially if you're planning to primarily direct stream media instead of having Jellyfin transcode. The instance types should be of the form `type.size`, for instance `t3a.small`, which would make a good starting instance type. **WARNING**: This will affect your running cost significantly so make sure to calculate this ahead of time to avoid unwanted billing surprises. - * `ENVIRONMENT`: This is an arbitrary name for your environment, to avoid conflicts if you decide to deploy multiple Jellyfin instances. I suggest a cool name, like _godzilla_. - * `HOSTED_ZONE_ID`: (OPTIONAL) If you would like your Jellyfin instance to be available on a custom, nice and pretty domain, you will need fill this in. See _(Optional) Configuring DNS_ under the _Deployment_ section below for the steps to set this up. - * `TERRAFORM_STATE_BUCKET`: This is an S3 bucket you will create that will store the configuration of your Terraform backend. Terraform is the tool that lets us write infrastructure as code and tell AWS what resources we need to create. Storing the infrastructure state in S3 ensures it doesn't get lost if something happens to your local machine. + * `EC2_INSTANCE_TYPE`: This is the type and size of the server you'll be running the Jellyfin instance on. See https://aws.amazon.com/ec2/instance-types/ for details on what types of instances are available. I would recommend something relatively small to start, especially if you're planning to primarily direct stream media instead of having Jellyfin transcode. The instance types should be of the form `type.size`, for instance `t3a.small`, which would make a good starting instance type. **WARNING**: This will affect your running cost significantly so make sure to calculate this ahead of time to avoid unwanted billing surprises. + * `ENVIRONMENT`: This is an arbitrary name for your environment, to avoid conflicts if you decide to deploy multiple Jellyfin instances. I suggest a cool name, like _godzilla_. + * `HOSTED_ZONE_ID`: (OPTIONAL) If you would like your Jellyfin instance to be available on a custom, nice and pretty domain, you will need fill this in. See _(Optional) Configuring DNS_ under the _Deployment_ section below for the steps to set this up. + * `TERRAFORM_STATE_BUCKET`: This is an S3 bucket you will create that will store the configuration of your Terraform backend. Terraform is the tool that lets us write infrastructure as code and tell AWS what resources we need to create. Storing the infrastructure state in S3 ensures it doesn't get lost if something happens to your local machine. 1. Create an S3 bucket through the AWS console and set the `TERRAFORM_STATE_BUCKET` environment variable to the name of the bucket. Make sure you create this bucket in the region you specified in the `AWS_REGION` environment variable. Be sure to call it something unique, like _godzill-terraform-state_. 1. Create an ssh key by running `ssh-keygen -b 2048 -t rsa -f ./.ssh/jellyfin-key -q -P """"`. This will be used by our Terraform code to provision files on our EC2 instance.