Installation with Docker

Prerequisites

1. Clone the repository

git clone git@github.com:Wachhund/freundeauf2pfoten.git
cd freundeauf2pfoten

2. Configure environment variables

The file .env.docker contains all relevant configuration values. The default values work for a local development environment:

Variable Default Description
APP_PORT 15080 Port on which the website is accessible
MCP_PORT 8888 Port for the MCP server
DB_PORT 13306 Port for direct MySQL access (optional)
DB_NAME freundeauf2pfoten Database name
DB_USER fa2p Database user
DB_PASSWORD fa2p Database password
DB_ROOT_PASSWORD root MySQL root password
MCP_BASE_URL https://mcp.fa2p.de Public MCP server URL
APP_URL https://freundeauf2pfoten.de Base URL for SEO and OG tags
PRETIX_API_TOKEN (empty) Pretix API token (optional)
TELEGRAM_BOT_TOKEN (empty) Telegram bot token (optional)
TELEGRAM_CHAT_ID (empty) Telegram chat ID (optional)

config.php is automatically generated from these variables at startup (FA2P_GENERATE_CONFIG=1).

3. Start containers

docker compose --env-file .env.docker up -d --build

This starts three containers:

  • web: PHP 8.3 with Apache (Port 15080)
  • mcp: PHP 8.3 MCP server (Port 8888)
  • db: MySQL 8.0 (Port 13306)

Upon first startup, the database is automatically initialized from admin/create_sql.sql.

4. Access the website

Address Purpose
http://localhost:15080 Website
http://localhost:15080/admin Admin area
http://localhost:8888/mcp MCP server

Useful Docker Commands

# Container stoppen
docker compose --env-file .env.docker down

# Container stoppen und Datenbank-Volume löschen (Neustart)
docker compose --env-file .env.docker down -v

# Logs anzeigen
docker compose --env-file .env.docker logs -f web

# Datenbank manuell zurücksetzen
docker compose --env-file .env.docker exec -T db mysql --default-character-set=utf8mb4 \
  -u fa2p -pfa2p freundeauf2pfoten < admin/create_sql.sql

External Services

The following services are optional and are enabled via their tokens in .env.docker:

Pretix (Ticket Sales)

If PRETIX_API_TOKEN is set, sold/available tickets are automatically retrieved for events with a stored Pretix slug and displayed as a progress bar.

  • Pretix instance: https://pretix.eu/fa2p/
  • Organizer slug: fa2p

Telegram Notifications

If TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID are set, notifications are automatically sent to the configured Telegram chat for new contact requests and new events.