Sign inSign up

blueimp/phpbb

By blueimp

Updated over 7 years ago

phpBB Dockerfile

Image
4

9.6K

blueimp/phpbb repository overview

phpBB Dockerfile

Setup

This setup guide assumes that the docker-compose.yml of this repository is available in the current directory.

Hostname

Set the SERVER_NAME variable to the fully qualified domain name of your server:

export SERVER_NAME='localhost'

This is used as hostname option for the phpBB Docker container.

SSL files

If you don't require HTTPS, skip this section and remove the SSL volume mount from the phpbb container definition in docker-compose.yml.

Create the ssl directory:

mkdir ssl

For development, generate a private key file and an associated self-signed certificate, with the Common Name option matching the SERVER_NAME variable set previously:

openssl req -nodes -x509 -newkey rsa:2048 \
  -subj "/CN=$SERVER_NAME" \
  -keyout ssl/default.key \
  -out ssl/default.crt

For a production system, retrieve an SSL certificate for your domain signed by an official Certificate Authority. Combine the issued certificate and any intermediate certificates into a file called default.crt and put it into the ssl directory. Add the private key used for the certificate signing request as default.key:

  • ssl/default.crt
  • ssl/default.key
Database options

Define passwords for the MySQL root user and the phpBB database user:

export MYSQL_ROOT_PASSWORD='password1'
export DBPASSWD='password2'

The following settings are defined as default in the phpBB Dockerfile, but can also be provided via environment variables configured in docker-compose.yml:

DBHOST='mysql'
DBPORT= # Defaults to 3306 in phpBB
DBNAME='phpbb'
DBUSER='phpbb'
TABLE_PREFIX='phpbb_'
Scheduled backups to Amazon S3

If you don't require scheduled backups to Amazon S3, skip this section and remove the backup container definition in docker-compose.yml.

Define a Bucket name and AWS credentials for scheduled backups to Amazon S3:

export S3_BUCKET='phpbb-backup'
export AWS_ACCESS_KEY_ID='XXXXXXXXXXXXXXXXXXXX'
export AWS_SECRET_ACCESS_KEY='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

You can make use of the sample S3 backup IAM policy, replacing the phpbb-backup S3 Bucket name with your own.

The backups are scheduled for 4am (local server time) each night by default.
To define a different schedule, override the BACKUP_SCHEDULE environment variable for the backup container:

backup:
  # ...
  environment:
    - BACKUP_SCHEDULE=0 4 * * *
  # ...

The syntax follows the crontab format:

# Crontab format:
# .---------- minute (0-59)
# | .-------- hour (0-23)
# | | .------ day of month (1-31)
# | | | .---- month (1-12 / jan,feb,mar,apr,may,jun,jul,aug,sept,oct,nov,dec)
# | | | | .-- day of week (0-6 / sun,mon,tue,wed,thu,fri,sat)
# | | | | |
# * * * * * command [args...]

To provide additional options to the mysqldump command, which is used for the database backup, set the MYSQLDUMP_OPTS environment variable for the backup container:

backup:
  # ...
  environment:
    - MYSQLDUMP_OPTS=
  # ...

The following options will be provided automatically:

host="${DBHOST:-mysql}"
port="${DBPORT:-3306}"
user="${DBUSER:-phpbb}"
password="$DBPASSWD"
databases="${DBNAME:-phpbb}"

To override the datetime prefix for the database backup, override the DATE_FORMAT environment variable for the backup container:

backup:
  # ...
  environment:
    - DATE_FORMAT=%Y-%m-%dT%H-%M-%SZ_
  # ...

To override the options passed to the aws s3 cp command for the database backup, override the DB_CP_OPTS environment variable for the backup container:

backup:
  # ...
  environment:
    - DB_CP_OPTS=
  # ...

To override the options passed to the aws s3 sync command for the directory backups, override the DIR_SYNC_OPTS environment variable for the backup container:

backup:
  # ...
  environment:
    - DIR_SYNC_OPTS=--size-only --exclude .htaccess --exclude index.htm
  # ...
Container start

Set the PHPBB_INSTALLED environment variable to false:

export PHPBB_INSTALLED=false

Start the MySQL and phpBB containers:

docker-compose up -d
MySQL

Enter the MySQL server CLI:

docker-compose exec mysql mysql --password="$MYSQL_ROOT_PASSWORD"

Execute the following SQL script, replacing "password2" with the $DBPASSWD value:

CREATE DATABASE phpbb
  DEFAULT CHARACTER SET utf8
  DEFAULT COLLATE utf8_general_ci;
CREATE USER phpbb
  IDENTIFIED BY 'password2';
GRANT ALL PRIVILEGES
  ON phpbb.*
  TO phpbb;

Exit the MySQL CLI (via quit).

phpBB

Open a browser with the server URL and follow the installation instructions:

open "https://$SERVER_NAME"
Database configuration

Use the following database configuration, again replacing "password2" with the $DBPASSWD value:

SettingValue
Database typemysqli
Database server hostnamemysql
Database server port
Database usernamephpbb
Database passwordpassword2
Database namephpbb
Prefix for tables in databasephpbb_
Email configuration

Use the following Email settings to use Gmail as SMTP provider:

SettingValue
Use SMTP server for e-mailYes
SMTP server addresstls://smtp.gmail.com
SMTP server port465
Authentication method for SMTPPLAIN
SMTP username[email protected]
SMTP passwordYourGmailPassword

Please note that you need to create an app password if you use 2-Step Verification for your Google account.

Container recreation

Unset the PHPBB_INSTALLED environment variable:

unset PHPBB_INSTALLED

Recreate the phpBB container:

docker-compose up -d --force-recreate phpbb
Database migration

After updating to a new phpBB version, run the following command to update the database schema and increment the version number:

docker-compose exec phpbb php bin/phpbbcli.php db:migrate

Database migration can also be done automatically on container start by setting the environment variable AUTO_DB_MIGRATE to true for the phpbb container:

phpbb:
  # ...
  environment:
    - AUTO_DB_MIGRATE=true
  # ...
Automatic updates

The backup container also contains functionality to send update requests to a Trigger URL, if a new phpBB release is available. This functionality can be configured with the following environment variables:

backup:
  # ...
  environment:
    - UPDATE_TRIGGER_URL=https://registry.hub.docker.com/u/user/repo/trigger/x/
    - UPDATE_SCHEDULE=0 5 * * *
    - BACKUP_BEFORE_UPDATE=true
  # ...

The update schedule format follows the same format as the backup schedule.
Before sending the update request, another backup is initiated by default.

The Docker Hub Remote Build triggers provide the URLs to be used for the UPDATE_TRIGGER_URL environment variable.

With the Webhooks functionality provided by Docker Hub or Docker Cloud Autoredeploys, this allows for automatic updates of any phpBB project set up as Docker image.

License

Released under the MIT license.

Author

Sebastian Tschan

Tag summary

Content type

Image

Digest

Size

153.6 MB

Last updated

over 7 years ago

docker pull blueimp/phpbb