Everything you need to install, configure and run APBoard. Explained in full, even for complete beginners.
This page lists common APBoard installation and operation problems. Start with the symptom you see, then check the commands and explanations below it.
First check the status and logs from the deploy/ directory.
cd /home/apboard/forum/deploy
docker compose ps
docker compose logs --tail 200 app
docker compose logs --tail 200 db
If the database is unhealthy, check the passwords in .env and whether deploy/db/ already contains an old database initialized with different credentials.
If the app is unhealthy, check whether APBOARD_URL, APBOARD_DB_HOST and the database password are correct.
A Traefik 404 usually means that the router rule does not match your domain or that the container is not connected to the proxy network.
docker network inspect proxy
docker compose config | grep APBOARD_DOMAIN
docker compose ps For certificates, make sure the domain already points to the server and ports 80 and 443 are reachable from the internet.
The setup wizard only appears when config.php does not exist.
If config.php exists, APBoard treats the installation as complete and redirects /setup/ to the forum.
In Docker this is expected. Docker creates config.php before Apache starts, so Docker installations do not use the browser setup wizard.
Check the database host first. In Docker it must be db. On a plain server it is often localhost or 127.0.0.1.
# Docker
cd /home/apboard/forum/deploy
docker compose exec db mariadb -u apboard -p apboard
# Plain server
mysql -u apboard -p apboard
If login fails, the database user, password or database name is wrong.
If login works but APBoard fails, compare those values with .env or config.php.
APBoard serves frontend libraries through symlinks in public/assets/.
Docker creates them on every container start. The plain setup wizard creates them after installation.
ls -la public/assets
ls -la public/assets/js
ls -la public/assets/font-awesome
On Apache, Options FollowSymLinks must be enabled for the public/ directory.
On nginx, symlinks must point to readable paths.
The web server rewrite rules are missing or incomplete.
APBoard needs a fallback to index.php and explicit rules for ActivityPub and well known endpoints.
Compare your Apache or nginx configuration with the examples in the plain installation guide.
The web server must be allowed to write into public/shared/uploads/.
PHP upload limits must also be large enough for the files you allow in the admin settings.
ls -ld public/shared public/shared/uploads
php -i | grep -E 'upload_max_filesize|post_max_size|memory_limit'
Check host, port, security mode, username, password, sender address and sender name.
Use starttls with port 587 and smtps with port 465 unless your mail provider says otherwise.
Also check the spam folder. If mail arrives in spam, set SPF, DKIM and DMARC for your sender domain or use a trusted mail provider.
Use the normal password reset flow if mail works. If mail does not work, create a PHP password hash and update the admin row in the database.
php -r "echo password_hash('NewStrongPassword', PASSWORD_DEFAULT);" UPDATE apb_user SET password = 'PASTE_HASH_HERE' WHERE id = 1;
If you ask for help in the APBoard forum or on Forgejo, include the installation type, APBoard version, PHP version, database version, web server type and exact error messages.
For Docker, also include docker compose ps and the last app logs with passwords removed.