BookStack Installation Guide
This Guide goes trough steps necessary for creating a good well organized step by step process. This guide walks you through deploying BookStack using Docker and Docker Compose, with a working configuration that includes MariaDB, proper environment variables, and SSL disabled for local development.
BoookStack Installation Documentation
Prerequisites
- Docker and Docker Compose installed
- Portainer or terminal access
Steps
These steps are for terminal access
- Create Project Directory
mkdir ~/bookstack-docker
cd ~/bookstack-docker
- Generate Larvel app Key
docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey
- Create docker-compose.yml
- Change 'supersecurepassword' with unique password. Make sure they match for both environments
version: '3.8'
services:
bookstack:
image: lscr.io/linuxserver/bookstack:latest
container_name: bookstack
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- APP_URL=http://localhost:6875
- DB_HOST=bookstack_db
- DB_PORT=3306
- DB_USERNAME=bookstack_user
- DB_PASSWORD=supersecurepassword
- DB_DATABASE=bookstack
- APP_KEY=base64:YOUR_GENERATED_KEY_HERE
volumes:
- bookstack_config:/config
ports:
- 6875:80
depends_on:
- bookstack_db
restart: unless-stopped
bookstack_db:
image: mariadb:10.5
container_name: bookstack_db
command: --ssl=OFF
environment:
- MYSQL_ROOT_PASSWORD=rootpassword
- MYSQL_DATABASE=bookstack
- MYSQL_USER=bookstack_user
- MYSQL_PASSWORD=supersecurepassword
volumes:
- ./bookstack/db:/var/lib/mysql
restart: unless-stopped
volumes:
bookstack_config:
- Start the Stack
docker-compose up -d
- This will create containers, initialize the database, run Larvel migrations and serve BookStack on port 6875
- Check Logs
- This will check if the bookstack started correctly. You should see Larvel migrations completing and no errors about SSL or DB access
docker logs bookstack
- Inspect App Files
- You should see Laravel files like
artisan,routes/,app/, etc.
- You should see Laravel files like
docker exec -it bookstack /bin/bash
ls /app/www
- Create Admin User
- Once completed and app is running properly, creating a local user with strong password is great way. Do this inside container
docker exec -it bookstack /bin/bash
cd /app/www
php artisan bookstack:create-admin
Optional Enhancements
- Presistent uploads/themes
volumes:
- ./bookstack/uploads:/config/www/uploads
- ./bookstack/themes:/config/www/themes