Installing Bindery

Bindery •14 min read •241 views •Updated Jun 27, 2026

HOW TO INSTALL BINDERY — YOUR SELF-HOSTED EBOOK STORE


This guide assumes you have NEVER installed a web platform before and have never

used a hosting account. We explain every term, every click, and every screen.

Take it slowly — the whole thing usually takes 15–30 minutes the first time.


By the end you will have a live, beautiful ebook store on your own web address

(for example: https://books.yourname.com or https://yourname.com).


=======================================================

WHAT YOU NEED BEFORE YOU START

=======================================================


1. The Bindery files — the folder you downloaded (it contains "public", "app",

"storage", etc.). Keep it somewhere you can find it.


2. A Bindery license key — it looks like: BND-XXXX-XXXX-XXXX

You received this when you purchased Bindery. You will need it during setup.

(Note: if you only test on your own computer / localhost, no key is needed.

A key IS required once the store runs on a real domain.)


3. A hosting account — this is the "computer in the cloud" that runs your store

24/7. We recommend SiteGround (see below). Namecheap and GoDaddy also work.


4. A domain name — your web address, e.g. "yourname.com". You can buy this at

the same place as your hosting, or separately. A SUBDOMAIN also works great

(e.g. "books.yourname.com") if you already have a website on your main domain.


5. About 15–30 minutes and a cup of coffee. :)


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

A 30-SECOND PLAIN-ENGLISH GLOSSARY

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


- HOSTING: a rented computer in the cloud that keeps your store online 24/7.

- DOMAIN: your web address (yourname.com). People type it to reach your store.

- SUBDOMAIN: a "branch" of your domain (books.yourname.com).

- cPanel / Site Tools: the control panel where you manage your hosting. Think of

it as the dashboard of your hosting account.

- FILE MANAGER: a tool inside that control panel for uploading your files

(like Finder/Explorer, but for your server).

- DOCUMENT ROOT (or "web root"): the exact folder on the server that the public

sees when they visit your domain. For Bindery this must point to the "public"

folder. (Don't worry — we handle this for you below.)

- PHP: the programming language Bindery runs on. Your host already has it.

- PERMISSIONS / CHMOD: a setting that says "this folder is allowed to be written

to." Bindery needs to write to a couple of folders.


You do NOT need to understand code. You will mostly upload a folder and click

through a friendly setup wizard.


=======================================================

PART 1 — GET HOSTING AND A DOMAIN

=======================================================


You only need to do ONE of the three options below, depending on which company

you choose. SiteGround is the BookyAI-recommended host because its setup is the

simplest and its support is excellent.


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

OPTION A — SITEGROUND (RECOMMENDED)

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


1. Go to SiteGround and choose a "Web Hosting" plan

(the "StartUp" plan is enough for one store; "GrowBig" if you expect traffic).


2. During signup you can either:

- Register a NEW domain right there, OR

- Choose "I already have a domain" and type it in (you'll connect it later).


3. Finish the purchase and confirm your email. SiteGround will create your

account and take you to the "Client Area".


You now own hosting. Skip to PART 2 only after reading the domain-connection

section for your situation (PART 1.5 below).


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

OPTION B — NAMECHEAP

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


Namecheap sells both domains and hosting. To run Bindery you need their

"Shared Hosting" (NOT just a domain on its own).


1. Go to https://www.namecheap.com

2. Buy a domain (Domains menu) if you don't have one.

3. Buy "Shared Hosting" (Hosting menu → Shared Hosting → Stellar plan is fine).

This gives you a cPanel account, which is what we'll use to install Bindery.


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

OPTION C — GODADDY

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


GoDaddy also sells both. To run Bindery you need their "Web Hosting" product

that includes cPanel (sometimes called "cPanel Hosting" or "Economy Linux

Hosting with cPanel"). Their cheapest "Website Builder" product will NOT work —

you specifically need cPanel / Linux hosting.


1. Go to https://www.godaddy.com

2. Buy a domain (if needed).

3. Buy "Web Hosting" → choose a "cPanel / Linux" plan. Complete checkout and

wait for the "Your hosting is ready" email.


=======================================================

PART 1.5 — CONNECT YOUR DOMAIN OR SUBDOMAIN

=======================================================


"Connecting" a domain means: telling your web address to point at your hosting,

so that when someone types your domain, they land on your Bindery store.


There are two common situations:


SITUATION 1: Your domain AND hosting are at the SAME company.

(e.g. you bought both at SiteGround.)

-> Usually they are connected automatically. You may not need to

do anything. Skip to "Creating a subdomain" if you want a

subdomain, otherwise go to PART 2.


SITUATION 2: Your domain is at one company and hosting at another.

(e.g. domain at GoDaddy, hosting at SiteGround.)

-> You must point the domain's "nameservers" or DNS at your host.

Follow the matching steps below.


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

1.5.A — POINTING A DOMAIN TO SITEGROUND (if hosting is at SiteGround)

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


If your domain is registered ELSEWHERE (GoDaddy, Namecheap, etc.) and you want

it to use SiteGround hosting, the easiest method is to set SiteGround's

nameservers at your domain registrar:


1. In SiteGround Client Area, go to: Websites → (your site) → find the

"Name Servers" (they look like ns1.siteground.net / ns2.siteground.net,

or a pair specific to your account). Copy both.

(You can also find them under Site Tools → Server / "Name Servers".)


2. Now go to the company where your DOMAIN lives and replace its nameservers

with the SiteGround ones (see the Namecheap / GoDaddy nameserver steps below).


3. Wait. DNS changes can take 30 minutes to 24 hours to take effect worldwide

(usually under an hour).


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

1.5.B — CHANGING NAMESERVERS AT NAMECHEAP

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


1. Log in at https://www.namecheap.com

2. Click "Domain List" in the left menu, then "Manage" next to your domain.

3. Find the "Nameservers" section.

4. Change the dropdown from "Namecheap BasicDNS" to "Custom DNS".

5. Paste the two nameservers from your host (e.g. SiteGround's) into the boxes.

6. Click the green checkmark / "Save".

7. Wait up to a few hours for it to take effect.


(If your hosting IS at Namecheap, you don't need to change nameservers — they

are already linked. Just go to PART 2.)


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

1.5.C — CHANGING NAMESERVERS AT GODADDY

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


1. Log in at https://www.godaddy.com

2. Click your name (top right) → "My Products".

3. Under "Domains", click "DNS" (or "Manage DNS") next to your domain.

4. Scroll to the "Nameservers" section and click "Change".

5. Choose "Enter my own nameservers (advanced)".

6. Paste the two nameservers from your host (e.g. SiteGround's).

7. Click "Save" and confirm.

8. Wait up to a few hours.


(If your hosting IS at GoDaddy, the domain is usually already connected. Go to

PART 2.)


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

1.5.D — (OPTIONAL) CREATING A SUBDOMAIN (e.g. books.yourname.com)

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


Use a subdomain if you already have a website on your main domain and want the

store at, say, "books.yourname.com" or "shop.yourname.com".


ON SITEGROUND:

1. Open Site Tools (Client Area → Websites → your site → "Site Tools").

2. Go to: Domain → Subdomains.

3. Type the subdomain name (e.g. "books") and click "Create".

SiteGround creates it and a folder for it automatically.

IMPORTANT: note the folder it creates (often "public_html/books" or a

dedicated path). You will upload Bindery there. See PART 2.


ON NAMECHEAP (cPanel):

1. Log into cPanel (from your Namecheap hosting dashboard, click "Go to cPanel").

2. Under "Domains", click "Subdomains".

3. Type the subdomain (e.g. "books"), pick your domain, and click "Create".

4. Note the "Document Root" folder it shows (e.g. "public_html/books").


ON GODADDY (cPanel):

1. Open cPanel (My Products → your hosting → "Manage" → "cPanel Admin").

2. Under "Domains", click "Subdomains".

3. Type the subdomain (e.g. "books") and click "Create".

4. Note the "Document Root" folder it shows.


You'll upload Bindery into that subdomain's folder in PART 2.


=======================================================

PART 2 — UPLOAD THE BINDERY FILES

=======================================================


The goal: get the Bindery files onto your hosting, and make your domain show the

"public" folder. We'll do it with the hosting File Manager — no special software

needed.


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

STEP 2.1 — MAKE A ZIP OF BINDERY (easiest way to upload)

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


Uploading hundreds of files one by one is slow. Instead, zip the folder first:


ON MAC:

1. Open Finder and find your Bindery folder.

2. Right-click it → "Compress 'Bindery'". You now have "Bindery.zip".


ON WINDOWS:

1. Right-click the Bindery folder → "Send to" → "Compressed (zipped) folder".

You now have "Bindery.zip".


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

STEP 2.2 — OPEN YOUR FILE MANAGER

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


SITEGROUND:

- Site Tools → Site → "File Manager".


NAMECHEAP / GODADDY (cPanel):

- cPanel → under "Files" → "File Manager".


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

STEP 2.3 — GO TO THE RIGHT FOLDER

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


- If installing on your MAIN domain: open the folder named "public_html"

(on SiteGround it may be "public_html" under your site). This folder is what

the world sees when they visit yourname.com.


- If installing on a SUBDOMAIN: open the subdomain folder you noted earlier

(e.g. "public_html/books").


TIP: If "public_html" already contains an existing website you want to keep,

use a subdomain instead so you don't overwrite it.


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

STEP 2.4 — UPLOAD AND UNZIP

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


1. Click "Upload" in the File Manager and select your "Bindery.zip".

2. Wait for it to reach 100%.

3. Back in File Manager, right-click "Bindery.zip" → "Extract" (or "Unzip").

4. You'll now have a "Bindery" folder containing "public", "app", "storage",

"README.md", etc.


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

STEP 2.5 — POINT YOUR DOMAIN AT THE "public" FOLDER

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


This is the single most important step. Visitors must land on the "public"

folder — NEVER on the "app" or "storage" folders (those hold your private files

and your ebooks).


You have TWO ways to do this. Choose whichever is easier for you:


WAY 1 — MOVE THE FILES (simple, works everywhere):

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

Move the CONTENTS of the unzipped Bindery folder UP so that the "public"

folder sits directly inside your domain's folder (public_html, or your

subdomain folder). In other words you want this layout:


public_html/

├── public/ <-- (this is the web root)

├── app/

├── storage/

├── README.md

└── .htaccess


Then, so that visitors who land on public_html are forwarded into "public",

Bindery already INCLUDES a root ".htaccess" file that does this automatically.

Make sure that ".htaccess" file is present in public_html (it ships inside the

Bindery folder — move it up together with the rest).


Note: ".htaccess" files start with a dot, which makes them hidden. In File

Manager, enable "Show Hidden Files (dotfiles)" via Settings (top-right) so you

can see and move it.


WAY 2 — CHANGE THE DOCUMENT ROOT (cleaner, if your host allows it):

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

Tell the host that the domain's document root is the "public" folder.


ON SITEGROUND:

- Site Tools → Domain → there isn't a per-domain docroot editor on all

plans, so WAY 1 (the included .htaccess) is the recommended route on

SiteGround. If your plan exposes it, set the domain's path to .../public.


ON NAMECHEAP / GODADDY (cPanel) — for a SUBDOMAIN:

- cPanel → "Domains" (the newer interface) or "Subdomains".

- Find your subdomain and edit its "Document Root".

- Set it to the "public" folder path, e.g. "public_html/books/public".

- Save. Now the subdomain shows Bindery's public folder directly.


Either way works. If you're unsure, use WAY 1 — the bundled .htaccess makes it

"just work" without touching host settings.


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

STEP 2.6 — MAKE TWO FOLDERS WRITABLE (PERMISSIONS)

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


Bindery needs permission to save data (your database, uploaded ebooks, and

generated covers) into two folders:


storage/

public/assets/covers/


To set this in File Manager:

1. Right-click the "storage" folder → "Change Permissions" (or "Permissions").

2. Set the value to 755 (or 775 if 755 doesn't work). On the checkbox grid this

means: Owner = Read+Write+Execute, Group/World = Read+Execute.

3. Tick "Recurse into subdirectories" / "Apply to all files and folders" if

offered, so everything inside "storage" gets the same setting.

4. Repeat for "public/assets/covers".


If you ever see an error during setup like "storage is not writable", come back

here and switch the value from 755 to 775.


=======================================================

PART 3 — RUN THE INSTALL WIZARD (5 EASY STEPS)

=======================================================


Now the fun part. Open a web browser and visit your store's address:


- Main domain: https://yourname.com

- Subdomain: https://books.yourname.com


Bindery detects it isn't set up yet and launches the installer automatically.

You'll see five friendly steps:


STEP 1 — WELCOME

A short hello screen. Click "Let's begin".


STEP 2 — SYSTEM CHECK

Bindery checks your server (PHP version, required modules, writable folders).

Everything should be GREEN.

- If something is red about "writable", revisit PART 2.6 (permissions).

- If PHP version is too low, in cPanel/Site Tools find "PHP Manager" /

"Select PHP Version" and choose PHP 8.1 or newer, then click "Re-check".


STEP 3 — CHOOSE YOUR DATABASE

- SQLITE (recommended): pick this. It needs ZERO setup — Bindery creates a

single database file for you. Perfect for most stores. Just continue.

- MySQL (advanced/optional): only if you specifically want it. You'd first

create an empty MySQL database in cPanel ("MySQL Databases"), then enter

its host, name, username and password here. If unsure, use SQLite.


STEP 4 — SET UP YOUR STORE

Fill in:

- License key: enter your BND-XXXX-XXXX-XXXX key (required on a real domain).

- Store name: e.g. "Lantern Press Books".

- Tagline: a short slogan (optional).

- Currency: pick yours (USD, EUR, GBP, etc.).

- Your name, Admin email, Admin password (at least 8 characters).

-> You will log in with this email and password, so save them somewhere

safe.

Click "Create my store".


STEP 5 — DONE!

Your store is live. The screen confirms it and gives you a button to your

dashboard. Congratulations. :)


=======================================================

PART 4 — AFTER INSTALL: TURN ON PAYMENTS, EMAIL, AND ADD BOOKS

=======================================================


Your store works, but to actually take money and deliver books you'll add a few

keys. Do this from the admin dashboard.


1. SIGN IN

Go to: https://yourname.com/admin

Use the admin email and password you just created.


2. CONNECT STRIPE (to accept card payments)

- Create a free account at https://stripe.com if you don't have one.

- In Stripe, get your "Secret key" and "Publishable key" (Developers → API

keys).

- In Bindery: Admin → Settings → paste the Secret key and Publishable key.

- Set up the webhook so Bindery knows when a payment succeeds:

* In Stripe: Developers → Webhooks → "Add endpoint".

* Endpoint URL: https://yourname.com/webhook/stripe

* Choose the event: checkout.session.completed

* Save, then copy the webhook "Signing secret" Stripe shows you.

* Paste that Signing secret into Bindery → Settings.

Card details are handled entirely by Stripe — they never touch your server.


3. CONNECT EMAIL (so buyers get their download links)

- Create a free account at https://resend.com.

- Get an API key and verify a "from" email address you own.

- In Bindery: Admin → Settings → paste the Resend API key and your verified

"from" address.


4. ADD YOUR FIRST BOOK

- Admin → Books → "Add book".

- Upload the PDF or EPUB file, set a price, write a description, and either

pick a cover colour (Bindery auto-generates a beautiful cover) or upload

your own artwork.

- Save, make sure it's "Published", and it appears in your storefront.


5. TEST A PURCHASE

A demo discount code "WELCOME10" (10% off) is included so you can run a test

checkout end to end. (Use Stripe's test mode/test cards while trying things.)


=======================================================

PART 5 — FINAL SECURITY TOUCH (OPTIONAL BUT RECOMMENDED)

=======================================================


After a successful install, you can delete the installer file so nobody can ever

re-run setup:


- In File Manager, delete: app/controllers/InstallController.php


Bindery already locks the installer automatically once setup is complete (it

creates a file called storage/installed.lock), so this is just extra peace of

mind.


Your ebooks are stored OUTSIDE the public area and are only delivered after a

valid, one-time download link — they can't be guessed or hot-linked. You're set.


=======================================================

QUICK TROUBLESHOOTING

=======================================================


- "I see a list of files / a folder index instead of my store."

Your domain isn't pointing at the "public" folder. Re-check PART 2.5. Make

sure the root ".htaccess" is present (enable "Show Hidden Files"), or set the

document root to .../public.


- "It says storage is not writable."

Set "storage" and "public/assets/covers" to permission 775 (PART 2.6).


- "PHP version too old."

In cPanel/Site Tools use "Select PHP Version" / "PHP Manager" and choose 8.1+.


- "My domain still shows the old page / nothing."

DNS/nameserver changes can take up to a few hours. Wait, then refresh. Try

opening the site in a private/incognito window to avoid cached pages.


- "The installer doesn't appear."

Visit the exact address (with https://). If you installed on a subdomain, make

sure you're visiting the subdomain, e.g. https://books.yourname.com.


- "My license key is rejected."

Double-check it's typed exactly as BND-XXXX-XXXX-XXXX (it's not case

sensitive, but the dashes matter). Make sure the domain matches what your key

was issued for, and that your server can reach the internet.


=======================================================

NEED A HAND?

=======================================================


If you get stuck, contact BookyAI support with:

1. Which host you're using (SiteGround / Namecheap / GoDaddy),

2. Your store's web address,

3. A screenshot of the exact screen or error message.


We'll get your bookstore live. Happy selling! ❦

Was this article helpful?

Still need help?

Get a fast answer from our support team.