# Install Bookstack Wiki

# #1 AWS Marketplace - Setup Guide

Bookstack supports two authentication methods: standard and Google.

# #1 AWS Marketplace - Setup Guide

#### **Bookstack** supports two <span style="text-decoration: underline;">authentication</span> <span style="text-decoration: underline;">methods</span>: **standard** and **Google**.

The following table compares the two methods. Choose the one that best fits your needs and click the “**Go to AWS Marketplace**” button.

<table border="1" id="bkmrk-feature-standard-aut" style="border-collapse: collapse; width: 100%; height: 238.4px;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px;">**Feature**

</td><td style="height: 29.8px;">**Standard Authentication**

</td><td style="height: 29.8px;">**Google Authentication (OIDC)**

</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">**Login Method**

</td><td style="height: 29.8px;">Local username &amp; password

</td><td style="height: 29.8px;">Google Single Sign-On (SSO)

</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">**User Management**

</td><td style="height: 29.8px;">Managed within BookStack

</td><td style="height: 29.8px;">Users managed via Google Workspace

</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">**Security Level**

</td><td style="height: 29.8px;">Standard password-based security

</td><td style="height: 29.8px;">OAuth 2.0 authentication with Google

</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">**Ease of Use**

</td><td style="height: 29.8px;">Requires manual user management

</td><td style="height: 29.8px;">Seamless login with Google account

</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">**Setup Complexity**

</td><td style="height: 29.8px;">No additional configuration required

</td><td style="height: 29.8px;">🚨 <span class="s1">**Requires a one-time login as the default admin**</span> to grant admin privileges to your **Cognito** account. By default, **Cognito**-**authenticated** users are assigned the **Viewer** **role**, and this step ensures that your account receives **Admin** permissions.

</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">**Multi-Factor Authentication (MFA)**

</td><td style="height: 29.8px;">Not built-in, but can be configured

</td><td style="height: 29.8px;">Supports Google MFA

</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">**Best For**

</td><td style="height: 29.8px;">Small teams, personal use

</td><td style="height: 29.8px;">Enterprises using Google services

</td></tr></tbody></table>

<span style="color: rgb(224, 62, 45);">**⚠ Important Notice!** </span><span class="s1">At this time, BookStack </span>**does not support simultaneous**<span class="s1"> use of both </span>**Standard Authentication**<span class="s1"> and </span>**Google Authentication (OIDC)**<span class="s1">.</span>

To switch authentication methods, you must <span class="s2">**manually update the `.env` file**</span> and restart the BookStack docker container **(detailed instructions will be provided below)**.

### **📌 Deploying BookStack via AWS CloudFormation**

#### Follow these steps to deploy <span class="s1">**BookStack**</span> in your AWS infrastructure:

#### **1️⃣ Go to AWS Marketplace**

1\. Open the <span class="s1">**BookStack**</span> page directly on [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-usp3j2un3twza?sr=0-1&ref_=beagle&applicationId=AWSMPContessa "Bookstack Wiki Software") - or type the name of the product `Bookstack Wiki Software`.

2\. Click **<span style="background-color: rgb(230, 126, 35); color: rgb(0, 0, 0);">View purchase options</span>**, in appeared page <span style="color: rgb(22, 145, 121);">**Subscribe to this software**</span> review the terms, pricing information and accept the agreement.

[![View purchase options.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/scaled-1680-/view-purchase-options.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/view-purchase-options.png "view-purchase-options.png")

[![2. Accept the terms.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/scaled-1680-/2-accept-the-terms.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/2-accept-the-terms.png "2-accept-the-terms.png")

3\. The subscription is now `Pending`.

[![3. Pending.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/scaled-1680-/3-pending.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/3-pending.png "3-pending.png")

4\. Wait until the subscription is active and click on **Continue to Configuration**.

[![4. Continue to configuration.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/scaled-1680-/4-continue-to-configuration.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/4-continue-to-configuration.png "4-continue-to-configuration.png")

5\. Continue with selecting fulfillment option, version, and region.

[![5. Continue to launch.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/scaled-1680-/5-continue-to-launch.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/5-continue-to-launch.png "5-continue-to-launch.png")

6\. **Launch**. Here, you can read the manual or launch your own wiki.

[![6. Launch.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/scaled-1680-/6-launch.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/6-launch.png "6-launch.png")

<span style="color: rgb(224, 62, 45);">**⚠ Important Notice!**</span> We provide three **Fulfillment options**:

<table border="1" id="bkmrk-fulfillment-option-d" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 33.3731%;"></col><col style="width: 33.3731%;"></col><col style="width: 33.3731%;"></col></colgroup><tbody><tr><td>**Fulfillment option**</td><td>**Description**</td><td>**Architecture**</td></tr><tr><td>1. Bookstack infra without Cognito, default VPC, RDS AutoBackup Off, Single-AZ, EC2. ≈<span style="text-decoration: underline;">**$45.40**</span></td><td><span style="text-decoration: underline;">**Cost-efficient**</span> **BookStack** <span style="text-decoration: underline;">**deployment**</span> utilizing an **existing VPC** and **RDS Single-AZ**. **AWS Cognito** is excluded, but the setup retains **EFS Backup**, **Secrets Manager**, **Systems Manager**, **EC2**, and **CloudWatch Logs** for security and monitoring.</td><td>[Open Diagram](https://devsecopsinc-bookstack.s3.us-east-1.amazonaws.com/Diagram/Bookstack+infra-1.jpeg "diagram1.png")</td></tr><tr><td>2. Bookstack infra enabled Cognito, default VPC, RDS AutoBackup Off, Single-AZ, EC2. ≈<span style="text-decoration: underline;">**$51.40**</span></td><td><span style="text-decoration: underline;">**Balanced BookStack** **deployment**</span> utilizing an **existing VPC** with **AWS** **Cognito** for **authentication**. **RDS** **Single-AZ** with **AutoBackup** **disabled** ensures cost efficiency, while **EFS** **Backup**, **Secrets Manager**, **Systems Manager**, **EC2**, and **CloudWatch Logs** provide security and monitoring.</td><td>[Open Diagram](https://devsecopsinc-bookstack.s3.us-east-1.amazonaws.com/Diagram/Bookstack+infra-2.png "diagram2.png")</td></tr><tr><td>3. Bookstack infra enabled Cognito, new VPC, RDS AutoBackup Off, Single-AZ, EC2. ≈<span style="text-decoration: underline;">**$84.25**</span></td><td><span style="text-decoration: underline;">**Optimized BookStack deployment**</span> with **Cognito** **authentication**, **new VPC**, and **RDS Single-AZ**. Includes **EC2 instance**, **EFS Backup**, **Secrets Manager**, **Systems Manager**, and **CloudWatch** **Logs** for enhanced security, scalability, and monitoring

</td><td>[Open Diagram](https://devsecopsinc-bookstack.s3.us-east-1.amazonaws.com/Diagram/Bookstack+infra-3.png "diagram3.png")</td></tr></tbody></table>

#### **2️⃣ Deployment via CloudFormation**

**📌 Choosing Parameters**

1\. You will be redirected to <span class="s1">**CloudFormation Stack Launch**</span> with selected AWS region where you want to deploy BookStack. Click **Next**.

[![2.1. Deploy.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/scaled-1680-/2-1-deploy.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/2-1-deploy.png "2-1-deploy.png")

<span class="s2"> 2. Specify stack details</span>. Here, you need to fill in the `Stack name`. You can choose <span class="s1" style="box-sizing: border-box; outline-color: var(--color-primary); outline-width: 1px; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-width: inherit; font-size: inherit; line-height: inherit; font-family: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variant-alternates: inherit; font-variant-ligatures: inherit; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-feature-settings: inherit; font-optical-sizing: inherit; font-variation-settings: inherit; vertical-align: baseline;">**any name**</span> for your stack, but we recommend using a structured format like: `<span class="s1" style="box-sizing: border-box; outline-color: var(--color-primary); outline-width: 1px; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-width: inherit; font-size: inherit; line-height: inherit; font-family: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variant-alternates: inherit; font-variant-ligatures: inherit; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-feature-settings: inherit; font-optical-sizing: inherit; font-variation-settings: inherit; vertical-align: baseline;"><strong style="box-sizing: border-box; outline-color: var(--color-primary); outline-width: 1px; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant-caps: inherit; font-weight: bold; font-width: inherit; font-size: inherit; line-height: inherit; font-family: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variant-alternates: inherit; font-variant-ligatures: inherit; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-feature-settings: inherit; font-optical-sizing: inherit; font-variation-settings: inherit; vertical-align: baseline;">bookstack</strong></span>`<span class="s2" style="box-sizing: border-box; outline-color: var(--color-primary); outline-width: 1px; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-width: inherit; font-size: inherit; line-height: inherit; font-family: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variant-alternates: inherit; font-variant-ligatures: inherit; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-feature-settings: inherit; font-optical-sizing: inherit; font-variation-settings: inherit; vertical-align: baseline;"> (e.g., </span>`wiki`<span class="s2" style="box-sizing: border-box; outline-color: var(--color-primary); outline-width: 1px; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-width: inherit; font-size: inherit; line-height: inherit; font-family: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variant-alternates: inherit; font-variant-ligatures: inherit; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-feature-settings: inherit; font-optical-sizing: inherit; font-variation-settings: inherit; vertical-align: baseline;">, </span>`docs`<span class="s2" style="box-sizing: border-box; outline-color: var(--color-primary); outline-width: 1px; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-width: inherit; font-size: inherit; line-height: inherit; font-family: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variant-alternates: inherit; font-variant-ligatures: inherit; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-feature-settings: inherit; font-optical-sizing: inherit; font-variation-settings: inherit; vertical-align: baseline;">, etc.). </span>

For this guide, we will use <span class="s1" style="box-sizing: border-box; outline-color: var(--color-primary); outline-width: 1px; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant-caps: inherit; font-weight: inherit; font-width: inherit; font-size: inherit; line-height: inherit; font-family: inherit; font-size-adjust: inherit; font-kerning: inherit; font-variant-alternates: inherit; font-variant-ligatures: inherit; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-variant-position: inherit; font-variant-emoji: inherit; font-feature-settings: inherit; font-optical-sizing: inherit; font-variation-settings: inherit; vertical-align: baseline;">**wiki**</span> as an example.

[![2.2. Specify stack details.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/scaled-1680-/2-2-specify-stack-details.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/2-2-specify-stack-details.png)

To proceed, please follow this instruction: [2. Configuring Parameters for main stack](https://wiki.devsecopsinc.io/books/install-bookstack-wiki/page/2-configuring-parameters-for-main-stack "wiki.devsecopsinc.io")

# #2 Installation - Setup Guide (Bookstack)

Bookstack is managed and configured via CloudFormation.

# 📌 0. How to Find Required Parameters

### To properly deploy BookStack, you need to provide the following network parameters and certificate ARN:

#### **1️⃣ VpcCidrBlock (CIDR block for the VPC)**

• If you are <span class="s1">**creating a new VPC**</span>, use `<span class="s2">10.0.0.0/16</span>` as the default value.

• If you are <span class="s1">**using an existing VPC**</span>, retrieve the CIDR block:

<span class="s3"> • Open </span>**AWS Console**<span class="s3"> → </span>**VPC**<span class="s3"> → </span>**Your VPCs**

[![0-vpc-your-vpc.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/0-vpc-your-vpc.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/0-vpc-your-vpc.png)

• Locate your VPC and copy the <span class="s1">**IPv4 CIDR**</span> value.

[![0-vpccidrblock.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/0-vpccidrblock.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/0-vpccidrblock.png)

#### **2️⃣ VpcId (VPC ID)**

• Locate your VPC and copy its <span class="s1">**VPC ID**</span> (e.g., <span class="s2">vpc-0a1ba422ba9a105e9</span>).

[![0-vpcid.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/0-vpcid.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/0-vpcid.png)

#### **3️⃣ Subnet1Id &amp; Subnet2Id (Subnet IDs)**

<span class="s3"> • Open </span>**AWS Console**<span class="s3"> → </span>**VPC**<span class="s3"> → </span>**Subnets**

• Select your VPC, and at the bottom panel, navigate to the <span class="s1">**Resource Map**</span> tab.

• Here, you will see a list of all subnets associated with your VPC.

• Choose two <span class="s1">**private subnets**</span> (preferably in different Availability Zones) and copy their <span class="s1">**Subnet IDs**</span> (e.g., <span class="s2">subnet-040155a08a9508bb6</span>, <span class="s2">subnet-02e4a590db71371f9</span>).

[![0-vpc-subnets.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/0-vpc-subnets.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/0-vpc-subnets.png)

<span style="color: rgb(224, 62, 45);">**⚠** </span><span class="s1">**<span style="color: rgb(224, 62, 45);">Important Notice!</span>**</span> Ensure that the region of your resources matches the deployment region in CloudFormation. If you select resource IDs from <span class="s1">**Region A**</span> but deploy in <span class="s1">**Region B**</span>, you will encounter an error stating that the specified resources do not exist. This happens because each AWS region has its own unique set of resource IDs.

#### 4️⃣ **Obtain an SSL Certificate (if you don’t have one):**

• Navigate to <span class="s1">**AWS Certificate Manager (ACM)**</span> in the AWS Management Console.

• <span style="background-color: rgb(230, 126, 35); color: rgb(0, 0, 0);">**Request**</span> a new certificate by selecting <span class="s1">**“Request a public certificate”** and click **Next**</span>.

[![1-req-pub-cert.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/1-req-pub-cert.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/1-req-pub-cert.png)

• Follow the steps to validate your domain using <span class="s1">**DNS validation (recommended)**</span> or <span class="s1">**Email validation**</span>.

[![2-req-pub-cert-configuration.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/2-req-pub-cert-configuration.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/2-req-pub-cert-configuration.png)

• Select<span class="s1"> `ECDSA P-256`</span> as the key algorithm. This is equivalent in cryptographic strength to <span class="s1">**RSA 3072**</span> but provides better performance. If `<span class="s1">ECDSA P-256</span>` is not supported by your use case, you can use `<span class="s1">RSA 2048</span>` instead (though it is less efficient). Create the tag with **Key=`Name`**, **Value=`bookstack`** (or any other meaningful name that helps you recognize it)

[![3-req-pub-cert-algoritm.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/3-req-pub-cert-algoritm.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/3-req-pub-cert-algoritm.png)

• Once the certificate is issued, copy its <span class="s1">**ARN**</span> and use it in the <span class="s1">**SSLCertificate**</span> parameter during deployment.

[![4-cert-arn.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/4-cert-arn.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/4-cert-arn.png)

<span style="color: rgb(224, 62, 45);">**⚠** </span><span class="s1">**<span style="color: rgb(224, 62, 45);">Important Notice! </span>**</span>Ensure that the certificate is created in the <span class="s2">**same AWS region**</span> where you are deploying the CloudFormation stack. If the certificate is in a different region, the ALB will not be able to use it, and the deployment will fail.

# 📌 1. Check Region Availability for RDS MariaDB & EC2-instance

### Check RDS MariaDB availability for your region   


The availability of **Graviton** for **RDS** **MariaDB** may vary depending on your region. To speed up deployment and minimize the risk of an unavailable **RDS** **instance** **type** in your chosen region, we recommend referring to the **MariaDB** availability table based on the region from which you plan to deploy the BookStack infrastructure.

📅 **Last availability scan date:** `March 19, 2025`.

<table border="1" id="bkmrk-checking-region%3A-ap-" style="border-collapse: collapse; width: 100%; height: 259px;"><colgroup><col style="width: 26.8176%;"></col><col style="width: 16.6848%;"></col><col style="width: 29.6799%;"></col><col style="width: 26.8176%;"></col></colgroup><tbody><tr style="height: 46.6px;"><td style="height: 46.6px;">**Checking region: `ap-south-1`**  
  
</td><td style="height: 46.6px;">**Checking region: `eu-north-1`**</td><td style="height: 46.6px;">**Checking region: `eu-west-3`**</td><td style="height: 46.6px;">**Checking region: `eu-west-2`**</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`db.m6g.large`</td><td style="height: 29.8px;">`db.m6g.large`</td><td style="height: 29.8px;">`db.m6g.large`</td><td style="height: 29.8px;">`db.m6g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`db.m7g.large`</td><td style="height: 29.8px;">`db.m7g.large`</td><td style="height: 29.8px;">`db.m7g.large`</td><td style="height: 29.8px;">`db.m7g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`db.r6g.large`</td><td style="height: 29.8px;">`db.r6g.large`</td><td style="height: 29.8px;">`db.r6g.large`</td><td style="height: 29.8px;">`db.r6g.large`</td></tr><tr style="height: 63.4px;"><td style="height: 63.4px;">`db.r7g.large`</td><td style="height: 63.4px;">`db.r7g.large`</td><td style="height: 63.4px;">`db.t4g.medium`</td><td style="height: 63.4px;">`db.r7g.large`

</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`db.t4g.medium`</td><td style="height: 29.8px;">`db.t4g.medium`</td><td style="height: 29.8px;">`db.t4g.small`</td><td style="height: 29.8px;">`db.t4g.medium`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`db.t4g.small`</td><td style="height: 29.8px;">`db.t4g.small`</td><td style="height: 29.8px;">  
</td><td style="height: 29.8px;">`db.t4g.small`</td></tr></tbody></table>

<table border="1" id="bkmrk-checking-region%3A-eu-" style="border-collapse: collapse; width: 100%; height: 225.4px;"><colgroup><col style="width: 19.9043%;"></col><col style="width: 17.9994%;"></col><col style="width: 30.3906%;"></col><col style="width: 31.823%;"></col></colgroup><tbody><tr style="height: 46.6px;"><td style="height: 46.6px;">**Checking region: `eu-west-1`**</td><td style="height: 46.6px;">**Checking region: `ap-northeast-3`**</td><td style="height: 46.6px;">**Checking region: `ap-northeast-2`**</td><td style="height: 46.6px;">**Checking region: `ap-northeast-1`**</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`db.m6g.large`</td><td style="height: 29.8px;">`db.m6g.large`</td><td style="height: 29.8px;">`db.m6g.large`</td><td style="height: 29.8px;">`db.m6g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`db.m7g.large`</td><td style="height: 29.8px;">`db.r6g.large`</td><td style="height: 29.8px;">`db.m7g.large`</td><td style="height: 29.8px;">`db.m7g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`db.r6g.large`</td><td style="height: 29.8px;">`db.t4g.medium`</td><td style="height: 29.8px;">`db.r6g.large`</td><td style="height: 29.8px;">`db.r6g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`db.r7g.large`</td><td style="height: 29.8px;">`db.t4g.small`</td><td style="height: 29.8px;">`db.r7g.large`</td><td style="height: 29.8px;">`db.r7g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`db.t4g.medium`</td><td style="height: 29.8px;">  
</td><td style="height: 29.8px;">`db.t4g.medium`</td><td style="height: 29.8px;">`db.t4g.medium`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`db.t4g.small`</td><td style="height: 29.8px;">  
</td><td style="height: 29.8px;">`db.t4g.small`</td><td style="height: 29.8px;">`db.t4g.small`</td></tr></tbody></table>

<table border="1" id="bkmrk-checking-region%3A-ca-" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 19.3079%;"></col><col style="width: 19.3079%;"></col><col style="width: 29.4439%;"></col><col style="width: 32.0555%;"></col></colgroup><tbody><tr><td>**Checking region: `ca-central-1`**</td><td>**Checking region: `sa-east-1`**</td><td>**Checking region: `ap-southeast-1`**</td><td>**Checking region: `ap-southeast-2`**</td></tr><tr><td>`db.m6g.large`</td><td>`db.m6g.large`</td><td>`db.m6g.large`</td><td>`db.m6g.large`</td></tr><tr><td>`db.m7g.large`</td><td>`db.r6g.large`</td><td>`db.m7g.large`</td><td>`db.m7g.large`</td></tr><tr><td>`db.r6g.large`</td><td>`db.t4g.medium`</td><td>`db.r6g.large`</td><td>`db.r6g.large`</td></tr><tr><td>`db.r7g.large`</td><td>`db.t4g.small`</td><td>`db.r7g.large`</td><td>`db.r7g.large`</td></tr><tr><td>`db.t4g.medium`</td><td>  
</td><td>`db.t4g.medium`</td><td>`db.t4g.medium`</td></tr><tr><td>`db.t4g.small`</td><td>  
</td><td>`db.t4g.small`</td><td>`db.t4g.small`</td></tr></tbody></table>

<table border="1" id="bkmrk-checking-region%3A-eu--1" style="border-collapse: collapse; width: 100%; height: 242.2px;"><colgroup><col style="width: 18.9511%;"></col><col style="width: 19.0703%;"></col><col style="width: 17.8764%;"></col><col style="width: 18.1188%;"></col><col style="width: 25.9833%;"></col></colgroup><tbody><tr style="height: 46.6px;"><td style="height: 46.6px;">**Checking region: `eu-central-1`**</td><td style="height: 46.6px;">**Checking region: `us-east-1`**</td><td style="height: 46.6px;">**Checking region: `us-east-2`**</td><td style="height: 46.6px;">**Checking region: `us-west-1`**</td><td>**Checking region: `us-west-2`**</td></tr><tr style="height: 46.6px;"><td style="height: 46.6px;">`db.m6g.large`</td><td style="height: 46.6px;">`db.m6g.large`</td><td style="height: 46.6px;">`db.m6g.large`</td><td style="height: 46.6px;">`db.m6g.large`  
  
</td><td>`db.m6g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`db.m7g.large`</td><td style="height: 29.8px;">`db.m7g.large`</td><td style="height: 29.8px;">`db.m7g.large`</td><td style="height: 29.8px;">`db.m7g.large`</td><td>`db.m7g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`db.r6g.large`</td><td style="height: 29.8px;">`db.r6g.large`</td><td style="height: 29.8px;">`db.r6g.large`</td><td style="height: 29.8px;">`db.r6g.large`</td><td>`db.r6g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`db.r7g.large`</td><td style="height: 29.8px;">`db.r7g.large`</td><td style="height: 29.8px;">`db.r7g.large`</td><td style="height: 29.8px;">`db.r7g.large`</td><td>`db.r7g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`db.t4g.medium`</td><td style="height: 29.8px;">`db.t4g.medium`</td><td style="height: 29.8px;">`db.t4g.medium`</td><td style="height: 29.8px;">`db.t4g.medium`</td><td>`db.t4g.medium`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`db.t4g.small`</td><td style="height: 29.8px;">`db.t4g.small`</td><td style="height: 29.8px;">`db.t4g.small`</td><td style="height: 29.8px;">`db.t4g.small`</td><td>`db.t4g.small`</td></tr></tbody></table>

### Check EC2-instance availability for your region

The availability of **Graviton** for **EC2** **instance** may vary depending on your region. To speed up deployment and minimize the risk of an unavailable **EC2** **instance** **type** in your chosen region, we recommend referring to the **EC2** availability table based on the region from which you plan to deploy the BookStack infrastructure.

📅 **Last availability scan date:** `March 20, 2025`.

<table border="1" id="bkmrk-checking-region%3A-ap--1" style="border-collapse: collapse; width: 100%; height: 255.2px;"><colgroup><col style="width: 19.3089%;"></col><col style="width: 19.7837%;"></col><col style="width: 30.2729%;"></col><col style="width: 30.7497%;"></col></colgroup><tbody><tr style="height: 46.6px;"><td style="height: 46.6px;">**Checking region: `ap-south-1`**</td><td style="height: 46.6px;">**Checking region: `eu-north-1`**</td><td style="height: 46.6px;">**Checking region: `eu-west-3`**</td><td style="height: 46.6px;">**Checking region:`eu-west-2`**</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`r6g.large`</td><td style="height: 29.8px;">`t4g.small`</td><td style="height: 29.8px;">`c6g.large`</td><td style="height: 29.8px;">`m7g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`t4g.medium`

</td><td style="height: 29.8px;">`r6g.large`</td><td style="height: 29.8px;">`m6g.large`</td><td style="height: 29.8px;">`r6g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`c6g.large`</td><td style="height: 29.8px;">`c6g.large`</td><td style="height: 29.8px;">`t4g.small`</td><td style="height: 29.8px;">`r7g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`m7g.large`</td><td style="height: 29.8px;">`m6g.large`</td><td style="height: 29.8px;">`r6g.large`</td><td style="height: 29.8px;">`m6g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`t4g.small`</td><td style="height: 29.8px;">`m7g.large`</td><td style="height: 29.8px;">`m7g.large`</td><td style="height: 29.8px;">`t4g.medium`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`r7g.large`</td><td style="height: 29.8px;">`r7g.large`</td><td style="height: 29.8px;">`t4g.medium`</td><td style="height: 29.8px;">`t4g.small`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`m6g.large`</td><td style="height: 29.8px;">`t4g.medium`</td><td style="height: 29.8px;">  
</td><td style="height: 29.8px;">`c6g.large`</td></tr></tbody></table>

<table border="1" id="bkmrk-checking-region%3A-eu--2" style="border-collapse: collapse; width: 100%; height: 255.2px;"><colgroup><col style="width: 19.5459%;"></col><col style="width: 19.3119%;"></col><col style="width: 30.268%;"></col><col style="width: 30.9874%;"></col></colgroup><tbody><tr style="height: 46.6px;"><td style="height: 46.6px;">**Checking region: `eu-west-1`**</td><td style="height: 46.6px;">**Checking region: `ap-northeast-3`**</td><td style="height: 46.6px;">**Checking region: `ap-northeast-2`**</td><td style="height: 46.6px;">**Checking region: `ap-northeast-1`**</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`c6g.large`</td><td style="height: 29.8px;">`c6g.large`</td><td style="height: 29.8px;">`t4g.medium`</td><td style="height: 29.8px;">`t4g.medium`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`t4g.medium`</td><td style="height: 29.8px;">`t4g.small`</td><td style="height: 29.8px;">`m6g.large`</td><td style="height: 29.8px;">`t4g.small`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`m7g.large`</td><td style="height: 29.8px;">`t4g.medium`</td><td style="height: 29.8px;">`r6g.large`</td><td style="height: 29.8px;">`c6g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`t4g.small`</td><td style="height: 29.8px;">`r6g.large`</td><td style="height: 29.8px;">`c6g.large`</td><td style="height: 29.8px;">`r7g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`r6g.large`</td><td style="height: 29.8px;">`m6g.large`</td><td style="height: 29.8px;">`m7g.large`</td><td style="height: 29.8px;">`r6g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`m6g.large`</td><td style="height: 29.8px;">`m7g.large`</td><td style="height: 29.8px;">`t4g.small`</td><td style="height: 29.8px;">`m6g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`r7g.large`</td><td style="height: 29.8px;">  
</td><td style="height: 29.8px;">`r7g.large`</td><td style="height: 29.8px;">`m7g.large`</td></tr></tbody></table>

<table border="1" id="bkmrk-" style="border-collapse: collapse; width: 100%; height: 255.2px;"><colgroup><col style="width: 19.0696%;"></col><col style="width: 17.2818%;"></col><col style="width: 29.4358%;"></col><col style="width: 34.3281%;"></col></colgroup><tbody><tr style="height: 46.6px;"><td style="height: 46.6px;">**Checking region: `ca-central-1`**</td><td style="height: 46.6px;">**Checking region: `sa-east-1`**</td><td style="height: 46.6px;">**Checking region: `ap-southeast-1`**</td><td style="height: 46.6px;">**Checking region: `ap-southeast-2`**</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`t4g.medium`</td><td style="height: 29.8px;">`r6g.large`</td><td style="height: 29.8px;">`m6g.large`</td><td style="height: 29.8px;">`t4g.medium`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`c6g.large`</td><td style="height: 29.8px;">`c6g.large`</td><td style="height: 29.8px;">`t4g.small`</td><td style="height: 29.8px;">`t4g.small`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`t4g.small`</td><td style="height: 29.8px;">`m6g.large`</td><td style="height: 29.8px;">`m7g.large`</td><td style="height: 29.8px;">`m6g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`r6g.large`</td><td style="height: 29.8px;">`t4g.medium`</td><td style="height: 29.8px;">`r7g.large`</td><td style="height: 29.8px;">`r7g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`m6g.large`</td><td style="height: 29.8px;">`t4g.small`</td><td style="height: 29.8px;">`r6g.large`</td><td style="height: 29.8px;">`r6g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`m7g.large`</td><td style="height: 29.8px;">`r7g.large`</td><td style="height: 29.8px;">`t4g.medium`</td><td style="height: 29.8px;">`m7g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`r7g.large`</td><td style="height: 29.8px;">`m7g.large`</td><td style="height: 29.8px;">`c6g.large`</td><td style="height: 29.8px;">`c6g.large`</td></tr></tbody></table>

<table border="1" id="bkmrk-checking-region%3A-eu--3" style="border-collapse: collapse; width: 100%; height: 255.2px;"><colgroup><col style="width: 18.5936%;"></col><col style="width: 18.8319%;"></col><col style="width: 19.1895%;"></col><col style="width: 17.8811%;"></col><col style="width: 25.5039%;"></col></colgroup><tbody><tr style="height: 46.6px;"><td style="height: 46.6px;">**Checking region: `eu-central-1`**</td><td style="height: 46.6px;">**Checking region: `us-east-1`**</td><td style="height: 46.6px;">**Checking region: `us-east-2`**</td><td style="height: 46.6px;">**Checking region: `us-west-1`**</td><td style="height: 46.6px;">**Checking region: `us-west-2`**</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`m7g.large`</td><td style="height: 29.8px;">`r7g.large`</td><td style="height: 29.8px;">`m7g.large`</td><td style="height: 29.8px;">`c6g.large`</td><td style="height: 29.8px;">`m6g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`r6g.large`</td><td style="height: 29.8px;">`t4g.small`</td><td style="height: 29.8px;">`r6g.large`</td><td style="height: 29.8px;">`m7g.large`</td><td style="height: 29.8px;">`r7g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`t4g.medium`</td><td style="height: 29.8px;">`m6g.large`</td><td style="height: 29.8px;">`c6g.large`</td><td style="height: 29.8px;">`r6g.large`</td><td style="height: 29.8px;">`m7g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`t4g.small`</td><td style="height: 29.8px;">`c6g.large`</td><td style="height: 29.8px;">`t4g.medium`</td><td style="height: 29.8px;">`r7g.large`</td><td style="height: 29.8px;">`t4g.small`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`m6g.large`</td><td style="height: 29.8px;">`t4g.medium`</td><td style="height: 29.8px;">`m6g.large`</td><td style="height: 29.8px;">`m6g.large`</td><td style="height: 29.8px;">`r6g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`r7g.large`</td><td style="height: 29.8px;">`m7g.large`</td><td style="height: 29.8px;">`t4g.small`</td><td style="height: 29.8px;">`t4g.medium`</td><td style="height: 29.8px;">`c6g.large`</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">`c6g.large`</td><td style="height: 29.8px;">`r6g.large`</td><td style="height: 29.8px;">`r7g.large`</td><td style="height: 29.8px;">`t4g.small`</td><td style="height: 29.8px;">`t4g.medium`</td></tr></tbody></table>

# 📌 2. Configuring Parameters for main stack

### **<span class="awsui_heading-text_2qdw9_1ok6e_398 awsui_heading-text_105ke_268sp_5 awsui_heading-text-variant-h2_2qdw9_1ok6e_409" data-analytics-funnel-key="substep-name" id="bkmrk-step-1.-prerequisite-1">Step 1. Prerequisite - Prepare template</span>**

<span class="awsui_heading-text_2qdw9_1ok6e_398 awsui_heading-text_105ke_268sp_5 awsui_heading-text-variant-h2_2qdw9_1ok6e_409" data-analytics-funnel-key="substep-name">We did the first step previously, when subscribed for the product in [AWS Marketplace - Setup Guide](https://wiki.devsecopsinc.io/books/install-bookstack-wiki/page/1-aws-marketplace-setup-guide#bkmrk-2%EF%B8%8F%E2%83%A3-deployment-via-c "Deployment via CloudFormation"), so move forward to the next step.</span>

[![2.1. Deploy.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/scaled-1680-/2-1-deploy.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/2-1-deploy.png "step-1.png")

### **Step 2. Specify stack details**

Here, you need to fill in the `Stack name`. You can choose <span class="s1">**any name**</span> for your stack, but we recommend using a structured format like: `<span class="s1"><strong>bookstack</strong></span>`<span class="s2"> (e.g., </span>`wiki`<span class="s2">, </span>`docs`<span class="s2">, etc.). </span>

For this guide, we will use <span class="s1">**wiki**</span> as an example.

[![4-Step 2 Name.jpeg](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/4-step-2-name.jpeg)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/4-step-2-name.jpeg "4-step-2-name.jpeg")

There are **21 parameters,** some of which are predefined. You don’t need to fill in all of them — just focus on the **required** and **empty fields**. For additional guidance, refer to the help description provided under each parameter.

[![4-step-2-parameters.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/4-step-2-parameters.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/4-step-2-parameters.png "4-step-2-parameters.png")

<span class="s2"><span style="color: rgb(224, 62, 45);">**⚠ Important Notice!**</span>: There are </span>three <span class="s2">additional parameters for **AWS Marketplace Store**. They are starting from prefixes as "**MPS"**, so you shouldn't modify them - otherwise, CloudFormation will fail with an error.</span>

[![4-step-2-MPS-parameters-new.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/scaled-1680-/4-step-2-mps-parameters-new.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/4-step-2-mps-parameters-new.png "4-step-2-mps-parameters-new.png")

##### **7 Required Parameters:**

1\. **Deployment** **Environment** – Specify the environment (e.g., `<span class="s3">dev</span>`, `<span class="s3">prod</span>`).

2\. For **optional** **parameters**, you can leave the string blank, as we did with `CostAllocationTag`, `GoogleClientId`, `GoogleClientSecret`.

3\. <span class="s1">**AppURL**</span> – Define the URL where BookStack will be accessible.

4\. **VPC** **ID** – Enter the ID of an existing VPC.

5\. **VPC** **CIDR** **block** – Provide the CIDR block of your existing VPC**.**

6\. **Subnet** **IDs** – Enter the IDs of your existing subnets (e.g., `Subnet 1 ID`, `Subnet 2 ID`).

[![4-2 Step 2 Parameters.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/4-2-step-2-parameters.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/4-2-step-2-parameters.png "4-2-step-2-parameters.png")

<span class="s2"><span style="color: rgb(224, 62, 45);">**⚠ Important Notice!**</span>:</span> If you want to create new VPC, you should fill ONLY the `VPC CIDR Block`.

[![4-2 Step 2 Parameters-addition.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/scaled-1680-/4-2-step-2-parameters-addition.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/4-2-step-2-parameters-addition.png "4-2-step-2-parameters-addition.png")

7\. **EnableUserSignUp**, **MultipleAuthMethods** - by default set to false for best security practices.

[![cognito-params.jpeg](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/cognito-params.jpeg)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/cognito-params.jpeg "cognito-params.jpeg")

8\. **SSL Certificate ARN** – Provide the ARN of your SSL Certificate for the ALB. (*If you don’t have one, you must create it*.)

[![4-3 Step 2 Parameters.jpeg](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/4-3-step-2-parameters.jpeg)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/4-3-step-2-parameters.jpeg "4-3-step-2-parameters.jpeg")

<span class="s2"><span style="color: rgb(224, 62, 45);">**⚠ Important Notice!**</span>: There is </span>one <span class="s2">required parameter for **EC2AMI**. Its value is set to "**`/aws/service/marketplace/prod-ymfbr3id36e3k/version-v1.0-bookstack-v24.05.4`"**, so you shouldn't modify it - otherwise, CloudFormation will fail with an error. </span>

[![4-3 Step 2 EC2Parameters-new.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/scaled-1680-/4-3-step-2-ec2parameters-new.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-04/4-3-step-2-ec2parameters-new.png "4-3-step-2-ec2parameters-new.png")

##### **Override Optional Parameters**

Some parameters have predefined default values. You can **modify** them as needed or **leave them unchanged**:

• <span class="s1">**EC2 instance type**</span> (`<span class="s3">t4g.small</span>` is the default and is recommended for small environments).

• <span class="s1">**RDS DB instance type**</span> (`<span class="s3">db.t4g.small</span>` is the default).

• <span class="s1">**RDS storage size**</span> (`<span class="s3">20 GB</span>` by default).

• <span class="s1">**Multi-AZ deployment**</span> (set to `<span class="s3">false</span>` for cost efficiency).

<span class="s2"> • </span>**Enable/Disable RDS backups**<span class="s2">.</span>

<span class="s2">• **Enable/Disable RDS deletion protection**. <span style="color: rgb(224, 62, 45);">**⚠ Important Notice!**</span>: **<span style="color: rgb(224, 62, 45);">If</span>** this **<span style="color: rgb(224, 62, 45);">parameter</span>** is **<span style="color: rgb(224, 62, 45);">enabled</span>**, <span style="color: rgb(224, 62, 45);">**you** **will** **not** **be able to delete the stack**</span>. To proceed with deletion, go to `AWS Console` → `Amazon RDS` → `Databases`, select your database, click **Modify**, and uncheck "**Enable deletion protection**" for `bookstack-dev-rds`. After this, you can delete the main stack in CloudFormation.</span>

<span class="s2">• **Schedule backup rules**.</span>

<span class="s2">• **Schedule backup deletion**.</span>

### **Step 3. Configure stack options** 

Scroll to the bottom, check both checkboxes in the Capabilities field, and click the Next button.

[![5-Step 3 Capabilities 2.jpeg](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/5-step-3-capabilities-2.jpeg)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/5-step-3-capabilities-2.jpeg "5-step-3-capabilities-2.jpeg")

### **Step 4. Review and create**

Scroll to the bottom and click the **<span style="color: rgb(0, 0, 0); background-color: rgb(230, 126, 35);">Submit</span>** button.

[![6-Step 4 Submit.jpeg](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/6-step-4-submit.jpeg)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/6-step-4-submit.jpeg "6-step-4-submit.jpeg")

Now you can see how your environment is being deployed.

[![7-Step 4 Deploying.jpeg](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/7-step-4-deploying.jpeg)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/7-step-4-deploying.jpeg "7-step-4-deploying.jpeg")

### **Follow these simple steps to access your product:**

#### **1️⃣ Retrieving the Access URL**

1\. After successful deployment, your product will be available at a generated URL, which can be found in the `bookstack-$Environment-main` stack under the **Outputs** section, **key** `LoadBalancerDNSName`, **key** `AppURL`.

2\. In your domain registrar, create a **CNAME** **record** for `AppURL`, pointing to the generated `LoadBalancerDNSName`.

3\. Open **AppURL** in your browser and enjoy!

[![7-Outputs.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/7-outputs.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/7-outputs.png "7-outputs.png")

#### **2️⃣ Accessing BookStack**

1\. Open **<span class="s3">AppURL</span>** in your browser.

2\. Log in using the <span class="s1">**default credentials**</span>:

<span class="s2"> • </span><span class="s1">**Username:**</span> `admin@admin.com`

<span class="s2"> • </span>**Password:** `<span class="s3">password</span>`

<span class="s2"> 3. </span>**Change your password immediately!**<span class="s2"> You can do this under </span>**Profile → Settings**<span class="s2">.</span>

[![8-Login.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/8-login.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/8-login.png "8-login.png")

##### **Additional Information**

<span class="s1">✅ </span>**Application logs**<span class="s1"> are available in </span>**CloudWatch Logs**<span class="s1">.</span>

✅ <span class="s2">**Data is stored in RDS**</span>, while Bookstack files are stored on Amazon<span class="s2"> **EFS**</span>.

✅ <span class="s2">**Deletion**</span>: If needed, delete the main CloudFormation Stack to remove all associated resources automatically.

<span style="color: rgb(224, 62, 45);">**⚠ Important Notice!**</span> Before proceeding, navigate to <span style="background-color: rgb(0, 0, 0); color: rgb(236, 240, 241);">**AWS Backup → Vaults → your-backup-vault-name → Recovery Points**</span>. Select all recovery points, click the **Actions** button, and choose **Delete**. This will remove all **EFS backups**.  
**<span style="color: rgb(224, 62, 45);">Otherwise, deleting the CloudFormation stack will result in an error</span>**.[![Bookstack-aws-backup.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/bookstack-aws-backup.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/bookstack-aws-backup.png "bookstack-aws-backup.png")

[![vault recovery points.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/vault-recovery-points.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/vault-recovery-points.png "vault-recovery-points.png")

###  

### <span class="s1">ℹ️ </span>**Additional Information:**

> Some minor issues may occur during the initial launch, which are known and documented. Please visit the [BookStack Bugs and Known Issues](https://wiki.devsecopsinc.io/books/bookstack-known-issues) section for more information.

# #3 Switching Authentication Method in BookStack

If you choose to use Google authentication, you need to manually switch the authentication method to standard to log in as a local admin and enable user registration. Then turn in back to OIDC. 

# 📌 One-Time Setup for Google Authentication

### Follow these steps:

##### **Step 1: Connect to Your EC2 Instance**

1\. Go to the <span class="s1">**AWS Console**</span> → <span class="s1">**EC2**</span>.

2\. Locate your <span class="s1">**BookStack instance**</span> (named something like `<span class="s2">bookstack-dev-asg-instance</span>`).

3\. Use <span class="s1">**Systems Manager**</span> to connect to the instance. In new window appear, enter in prompt: `sudo su - ec2-user` and hit enter

```bash
sh-5.2$ sudo su - ec2-user

Last login: Wed Feb 26 07:36:32 UTC 2025 on pts/1

Welcome to your EC2 instance!

-----------------------------

Operating System: GNU/Linux

Hostname: ip-172-31-42-121.ec2.internal

Current Date and Time: Wed Feb 26 08:33:35 UTC 2025
```

##### **Step 2: Modify the Authentication Method**

In the **<span class="s1">.env</span>** file, change the authentication method from <span class="s2">**OIDC**</span> to <span class="s2">**Standard**</span> by modifying or adding the following lines:

```yaml
nano bookstack/.env
#AUTH_METHOD="oidc" # comment in or edit exist line
AUTH_METHOD="standard" # or add the new one with value =standard 
```

Save and exit the file.

##### **Step 3: Restart BookStack**

Run the following command to restart the BookStack service:

```bash
docker-compose --env-file bookstack/.env -f bookstack/docker-compose.yml up -d

# After a few seconds, you should see:
[+] Running 1/1
✔ Container bookstack  Started   
```

##### **Step 4: Log in as Admin**

Now, access BookStack through your <span class="s1">**AppURL**</span> and log in using the default credentials:

<span class="s2"> • </span><span class="s1">**Email:**</span> `admin@admin.com`

<span class="s2"> • </span>**Password:** `<span class="s3">password</span>`

##### **Step 5: Enable User Registration**

1\. Click on <span class="s1">**Settings**</span> in the top navigation bar.

[![bookstack settings.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/bookstack-settings.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/bookstack-settings.png "bookstack-settings.png")

<span class="s2"> 2. Under </span>**Categories**<span class="s2">, select </span>**Registration**<span class="s2">.</span>

<span class="s2"> 3. Check </span>**Enable Registration**<span class="s2">.</span>

4\. In <span class="s1">**Default user role after registration**</span>, select <span class="s1">**Viewer**</span>.

[![bookstack registration.jpeg](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/bookstack-registration.jpeg)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/bookstack-registration.jpeg "bookstack-registration.jpeg")

<span class="s2"> 5. Click </span>**Save Settings**<span class="s2">.</span>

6\. Click on **Users** tab. Choose user which you want to make an admin role.

[![Bookstack users.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/bookstack-users.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/bookstack-users.png "bookstack-users.png")

7\. Select Admin role and click <span style="background-color: rgb(35, 111, 161); color: rgb(0, 0, 0);">**Save**</span>.

[![Bookstack edit profile.png](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/scaled-1680-/bookstack-edit-profile.png)](https://wiki.devsecopsinc.io/uploads/images/gallery/2025-03/bookstack-edit-profile.png "bookstack-edit-profile.png")

<span class="s2">  
</span>

##### **Step 6: Switch Back to OIDC Authentication**

Now that user registration is enabled, repeat <span class="s1">**Step 2**</span>, but this time set the authentication method back to **OIDC**:

```bash
nano bookstack/.env
AUTH_METHOD="oidc" # uncomment or edit exist line
```

Save the file and restart BookStack again:

```bash
docker-compose --env-file bookstack/.env -f bookstack/docker-compose.yml up -d

[+] Running 1/1

✔ Container bookstack  Started
```

<span style="color: rgb(224, 62, 45);">**⚠ Important Notice!** </span>Don’t worry! If something goes wrong, the <span class="s1">**Auto Scaling Group**</span> will detect the issue and recreate the instance with default settings.