GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - Zeigren/bookstack_docker: Alpine Based Docker Stack for BookStack with examples for use with Docker Compose, Docker Swarm, Caddy, NGINX, and Traefik.

BranchesTags
Open more actions menu

Latest commit

 

History

272 Commits
272 Commits

Folders and files

NameName
Last commit message
Last commit date
nginx
nginx
 
 
.dockerignore
.dockerignore
 
 
Dockerfile
Dockerfile
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
bookstack_caddyfile
bookstack_caddyfile
 
 
concourse-ci.yml
concourse-ci.yml
 
 
docker-compose.yml
docker-compose.yml
 
 
docker-entrypoint.sh
docker-entrypoint.sh
 
 
docker-swarm-traefik.yml
docker-swarm-traefik.yml
 
 
docker-swarm.yml
docker-swarm.yml
 
 
env_secrets_expand.sh
env_secrets_expand.sh
 
 
traefik.yml
traefik.yml
 
 
version
version
 
 
wait-for.sh
wait-for.sh
 
 

Repository files navigation

Docker Stack For BookStack

Docker Image Size (latest) Docker Pulls

Links

Docker Hub

ghcr.io

GitHub

Main Repository

Project

Tags

  • latest
  • v21.08.2
  • v21.08
  • 21.05.4
  • 21.05.3
  • 21.05.2
  • 21.05.1
  • 21.04.2
  • 0.31.8
  • 0.30.1
  • 0.30.0
  • 0.29.3
  • 0.29.0
  • 0.28.3
  • 0.28.2
  • 0.28.0
  • 0.27.5
  • 0.27.4
  • 0.26.2
  • 0.26.1
  • 0.26.0
  • 0.25.5

Stack

  • PHP 8.0-fpm-alpine - BookStack
  • Caddy or NGINX - web server
  • MariaDB - database
  • Redis Alpine - cache

Usage

Use Docker Compose or Docker Swarm to deploy. Containers are available from both Docker Hub and the GitHub Container Registry.

There are examples for using either Caddy or NGINX as the web server and examples for using Caddy, NGINX, or Traefik for HTTPS (the Traefik example also includes using it as a reverse proxy). The NGINX examples are in the nginx folder.

Recommendations

I recommend using Caddy as the web server and either have it handle HTTPS or pair it with Traefik as they both have native ACME support for automatically getting HTTPS certificates from Let's Encrypt or will create self signed certificates for local use.

If you can I also recommend using Docker Swarm over Docker Compose as it supports Docker Secrets and Docker Configs.

If Caddy doesn't work for you or you are chasing performance then checkout the NGINX examples. I haven't done any performance testing but NGINX has a lot of configurability which may let you squeeze out better performance if you have a lot of users, also check the performance section below.

Configuration

Configuration consists of setting environment variables in the .yml files. More environment variables for configuring BookStack and PHP can be found in docker-entrypoint.sh and for Caddy in bookstack_caddyfile.

Setting the DOMAIN variable changes whether Caddy uses HTTP, HTTPS with a self signed certificate, or HTTPS with a certificate from Let's Encrypt or ZeroSSL. Check the Caddy documentation for more info.

Once the container is started you can login with username [email protected] and password password.

Docker Swarm

I personally use this with Traefik as a reverse proxy, I've included an example traefik.yml but it's not necessary.

You'll need to create the appropriate Docker Secrets and Docker Configs.

Run with docker stack deploy --compose-file docker-swarm.yml bookstack

Docker Compose

Run with docker-compose up -d. View using 127.0.0.1:9080.

File Uploads

Set the POST_MAX_SIZE, UPLOAD_MAX_FILESIZE, and MEMORY_LIMIT variables to whatever you want the max file upload size to be (MEMORY_LIMIT should at least be 128M). See the BookStack documentation for more information.

Performance Tuning

The web servers set the relevant HTTP headers to have browsers cache as much as they can for as long as they can while requiring browsers to check if those files have changed, this is to get the benefit of caching without having to deal with the caches potentially serving old content. If content doesn't change that often or can be invalidated in another way then this behavior can be changed to reduce the number of requests.

By default I set PHP to scale up child processes based on demand, this is great for a low resource and light usage environment but setting this to be dynamic or static will yield better performance. Check the PHP Configuration section in docker-entrypoint.sh for some tuning options to set and/or research.

File Permissions

If using docker volumes and the default user (www-data with a UID and GID of 82) you shouldn't need to do anything. However if you run the container as a different user or have any permissions issues you may need to change the permissions for /var/www/bookstack.

One way to change the permissions would be to the change the entrypoint for the BookStack container in the .yml file to entrypoint: sleep 900m and attach to the container as root and run chown -R www-data:www-data /var/www/bookstack, or instead of attaching to the container you could run docker exec -it --user root BOOKSTACK_CONTAINER /bin/sh -c "chown -R www-data:www-data /var/www/bookstack"

Inspiration

This is a fork of solidnerd/docker-bookstack which itself is a fork of Kilhog/docker-bookstack.

About

Alpine Based Docker Stack for BookStack with examples for use with Docker Compose, Docker Swarm, Caddy, NGINX, and Traefik.

Topics

bookstackbookstack-containercaddydockerdocker-composedocker-imagedocker-swarmdocumentationnginxtraefik

Resources

Readme
MIT license
Activity

Stars

9 stars

Watchers

2 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.