Inhaltsverzeichnis

Dokumentation: phpIPAM Installation mit Docker und Traefik

Ăśbersicht

Diese Anleitung beschreibt die schrittweise Einrichtung von phpIPAM in einem Docker-Setup mit:


1. Voraussetzungen


2. Projektstruktur /opt/docker/ddi-stack

snippet.plaintext
/opt/docker/ddi-stack/
├── db/                  # MariaDB-Daten
├── kea/                 # KEA-Konfiguration
├── phpipam/             # phpIPAM-Volume (persistente Daten)
├── docker-compose.yml   # Docker Stack Definition

⸻

3. docker-compose.yml

snippet.yaml
version: '3.8'

services:

  db:
    image: mariadb:10.5
    container_name: ddi-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: ********
      MYSQL_DATABASE: phpipam
      MYSQL_USER: ipam
      MYSQL_PASSWORD: *****
    volumes:
      - ./db:/var/lib/mysql
    networks:
      - ddi-net

  phpipam:
    image: phpipam/phpipam-www:latest
    container_name: ddi-phpipam
    depends_on:
      - db
    environment:
      MYSQL_HOST: db
      MYSQL_USER: ipam
      MYSQL_PASS: ******
      MYSQL_DBNAME: phpipam
    volumes:
      - ./phpipam:/phpipam
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.ipam.rule=Host(`ipam.example.com`)"
      - "traefik.http.routers.ipam.entrypoints=websecure"
      - "traefik.http.routers.ipam.tls.certresolver=le"
      - "traefik.http.services.ipam.loadbalancer.server.port=80"
      - "traefik.http.routers.ipam.middlewares=mw-redirect-to-https,mw-secure-headers"
    networks:
      - ddi-net

  kea-dhcp:
    image: jonasal/kea-dhcp4:2.6.3-alpine
    container_name: ddi-kea
    network_mode: host
    volumes:
      - ./kea:/kea
    command: ["kea-dhcp4", "-c", "/kea/kea-dhcp4.conf"]
    restart: unless-stopped
    depends_on:
      - phpipam

networks:
  ddi-net:
    driver: bridge

4. Persistenz

phpIPAM

snippet.yaml
volumes:
  - ./phpipam:/phpipam

Wichtig: Wenn du das Volume beim ersten Start leer lässt, wird phpIPAM aus dem Image in /phpipam extrahiert. Wenn du jedoch eine Git-Version mountest, achte auf Versionskompatibilität (z. B. v1.5.x != 1.7.x).

Wenn du mit einer eigenen Kopie arbeiten willst:

snippet.bash
cd /opt/docker/ddi-stack
mkdir phpipam
cd /tmp && git clone https://github.com/phpipam/phpipam.git
cp -r phpipam/* /opt/docker/ddi-stack/phpipam

5. Apache Alias Problem im Container

Wenn du mit dem phpipam/phpipam-www arbeitest:

snippet.bash
docker exec -it ddi-phpipam ls -lah /phpipam/index.php

6. Traefik-Einbindung

Labels im Container (siehe oben)

Middlewares in traefik.yml oder Labels

snippet.yaml
middlewares:
  mw-redirect-to-https:
    redirectScheme:
      scheme: https
  mw-secure-headers:
    headers:
      frameDeny: true

Zertifikats-Resolver:

snippet.yaml
tls:
  certResolver: le

7. Fehlerbehebung


8. Weiterer Ablauf


9. Backup-Hinweis