Everything you need to install, configure and run APBoard. Explained in full, even for complete beginners.
Docker is the recommended installation method for your own server. This guide takes you from a fresh Linux server to a running APBoard forum.
APBoard uses one app container and one database container.
The app container contains PHP 8.5, Apache and Composer. The database container runs MariaDB 10.6.
Your forum data stays on the host in deploy/db/ and public/shared/uploads/.
Open a terminal on your computer and connect to your server by SSH. Replace the IP address with your own server address.
ssh root@203.0.113.10 On Ubuntu or Debian, install Docker from Docker's official repository. The following commands look long, but they only add Docker's package source and install Docker Compose.
apt update
apt install ca-certificates curl git
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin Check that both commands work:
docker --version
docker compose version
git --version
Choose a permanent location for APBoard. The example below uses /home/apboard.
You can choose another path, but use the same path consistently later.
mkdir -p /home/apboard
cd /home/apboard
git clone https://forge.chrislo.de/APBoard/apboard3.git forum
cd forum
Docker reads its APBoard settings from deploy/.env.
The repository includes a template. Copy it and edit your copy.
cd /home/apboard/forum/deploy
cp .env.example .env
nano .env Change at least these values:
| Variable | Example | Meaning |
|---|---|---|
COMPOSE_PROJECT_NAME | apboard-forum | Unique name for this instance. Use a different name for every APBoard installation on the same server. |
APBOARD_URL | https://forum.example.com | The full public forum URL. Do not add a slash at the end. |
APBOARD_DOMAIN | forum.example.com | The domain only. Traefik uses it for routing. |
APBOARD_DB_HOST | db | Keep this as db. In Docker, the database is reached by service name. |
APBOARD_DB_NAME | apboard | The database name inside MariaDB. |
APBOARD_DB_USER | apboard | The database user for APBoard. |
APBOARD_DB_PASSWORD | long random password | Password for the APBoard database user. |
APBOARD_DB_ROOT_PASSWORD | another long password | MariaDB root password. Store it safely. |
APBOARD_FIRST_ADMIN_EMAIL | admin@example.com | Email address for the first administrator. |
APBOARD_FIRST_ADMIN_PASSWORD | strong admin password | Password for the first administrator. |
The .env file contains database and mail passwords. Do not publish it.
Set restrictive permissions after editing it.
chmod 600 /home/apboard/forum/deploy/.env
The included docker-compose.yml expects a Traefik reverse proxy with an external Docker network named proxy.
Traefik receives requests on ports 80 and 443 and forwards matching requests to APBoard.
If you already have Traefik, make sure the proxy network exists.
docker network ls | grep proxy
# Create it if it does not exist yet:
docker network create proxy If you do not use Traefik, you can still use Docker, but you must adapt the Compose file to publish a host port and then put Apache, nginx or another proxy in front of it. For a first production setup, Traefik is the simpler long term choice because it can request HTTPS certificates automatically.
Run Docker Compose from the deploy/ directory. The first start can take several minutes because Docker builds the image and Composer installs PHP dependencies.
cd /home/apboard/forum/deploy
docker compose up -d --build Use the logs to see what happens. You should see that the database starts, the app container prepares files and Apache begins serving requests.
docker compose ps
docker compose logs -f app
docker compose logs -f db
The app is healthy when docker compose ps shows the app container as healthy.
The Docker entrypoint performs the tasks that the web installer performs in a plain installation.
It creates public/assets/, public/shared/uploads/, public/sitemap.xml and the required symlinks for Bootstrap, jQuery, Font Awesome, TinyMCE, Klaro and stylesets.
It also runs composer install when vendor/autoload.php is missing or outdated, writes config.php from the environment variables and calls setup/docker-init.php to create the first admin account.
The database structure comes from setup/mysql/initial-setup-dump.sql, which MariaDB imports on the first empty database start.
Visit the URL from APBOARD_URL, for example https://forum.example.com.
Log in at /login/ with APBOARD_FIRST_ADMIN_EMAIL and APBOARD_FIRST_ADMIN_PASSWORD.
After login, continue with Getting started. You should create categories and boards, fill in legal pages and test mail sending before you invite users.