# LDAP Installation

### 📜 Zertifikat mit ACME automatisch installieren &amp; verwalten (Docker, Synology, All-Inkl)

🔗 Offizielles Projekt:  
👉 [acme.sh – GitHub](https://github.com/acmesh-official/acme.sh)

---

### 🐳 Docker Container

```yaml
version: "2.1"
services:
  acme.sh:
    image: neilpang/acme.sh
    container_name: tool-acme.sh
    environment:
      - PUID=1026         # Benutzer-ID (z. B. acme user)
      - PGID=100          # Gruppen-ID
      - TZ=Europe/Berlin
      - UMASK_SET=002
    network_mode: host
    volumes:
      - /volume3/docker/acme/config:/acme.sh   # persistente Konfiguration
      - /volume3/docker/acme/key:/key          # optionale Schlüsselablage
    command: daemon
    restart: unless-stopped

```

---

### 🔐 DSM-Zugangsdaten setzen (für Deployment auf Synology)

👉 Anleitung: [Synology NAS Guide (acme.sh)](https://github.com/acmesh-official/acme.sh/wiki/Synology-NAS-Guide)

Im Container:

```bash
export SYNO_USERNAME=adminUser
export SYNO_PASSWORD=adminPassword
export SYNO_SCHEME=https
export SYNO_HOSTNAME=dsm.familie-jonas.bayern
export SYNO_PORT=5001
export SYNO_CREATE=1

```

---

### 🔔 Benachrichtigung per Pushover aktivieren

👉 [Pushover Notify-Hook Doku](https://github.com/acmesh-official/acme.sh/wiki/notify)

#### 1. Zugangsdaten exportieren:

```bash
export PUSHOVER_TOKEN=your_token
export PUSHOVER_USER=your_user_key

```

#### 2. Notify-Hook aktivieren:

```bash
acme.sh --set-notify --notify-hook pushover --notify-level 3

```

##### `--notify-level` Bedeutungen:

<table id="bkmrk-level-beschreibung-0"><thead><tr><th>Level</th><th>Beschreibung</th></tr></thead><tbody><tr><td>`0`</td><td>Deaktiviert</td></tr><tr><td>`1`</td><td>Nur bei Fehlern</td></tr><tr><td>`2`</td><td>Bei erfolgreicher Erneuerung **oder** Fehler</td></tr><tr><td>`3`</td><td>Immer (auch wenn Zertifikat **übersprungen** wurde)</td></tr></tbody></table>

💡 **Hinweis:** Nach erfolgreichem Test mit `--notify-level 3` ggf. auf `--notify-level 2` reduzieren.

---

### 🌐 DNS API (All-Inkl)

👉 Doku: [dns\_kas](https://github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_kas)

```bash
export KAS_Login=<ACCOUNTID>
export KAS_Authdata=<PLAINTEXTPASSWORD>
export KAS_Authtype=plain

```

---

### 🧪 Zertifikat manuell testen

#### Zertifikat erstellen:

```bash
acme.sh --issue -d ldap.familie-jonas.bayern --dns dns_kas --keylength 2048 --server letsencrypt
```

🛑 **Hinweis:**  
Ohne `--keylength` erstellt acme.sh standardmäßig ein **ECC-Zertifikat**.  
Die Angabe `--keylength 2048` erzwingt ein **RSA-Zertifikat**, das besser kompatibel ist – z. B. mit Synology DSM.

---

#### Zertifikat deployen:

```bash
acme.sh --deploy -d ldap.familie-jonas.bayern --deploy-hook synology_dsm
```

---

### ⚙️ Automatische Erneuerung (Cronjob im Container)

#### Interner Cronjob aktivieren:

```bash
acme.sh --install-cronjob
```

➡️ Dieser läuft alle 24h automatisch im Container (sofern `command: daemon` im Docker aktiv ist)

#### Manuell testen:

```bash
acme.sh --cron
```

##### Beispielausgabe:

```bash
[Wed Aug  6 09:59:57 CEST 2025] ===Starting cron===
[Wed Aug  6 09:59:57 CEST 2025] Already up to date!
[Wed Aug  6 09:59:57 CEST 2025] Automatically upgraded to: 3.1.2
[Wed Aug  6 09:59:57 CEST 2025] Renewing: 'ldap.familie-jonas.bayern'
[Wed Aug  6 09:59:57 CEST 2025] Skipping. Next renewal time is: 2025-10-04T07:27:23Z
[Wed Aug  6 09:59:57 CEST 2025] Add '--force' to force renewal.
[Wed Aug  6 09:59:57 CEST 2025] Skipped ldap.familie-jonas.bayern
[Wed Aug  6 09:59:57 CEST 2025] Sending via: pushover
[Wed Aug  6 09:59:59 CEST 2025] PUSHOVER send success.
[Wed Aug  6 09:59:59 CEST 2025] pushover Success
[Wed Aug  6 09:59:59 CEST 2025] ===End cron===
```

---

### 🧩 Optional: Alles als Shell-Skript zusammenführen

```bash
#!/bin/bash

# Konfiguration setzen
export SYNO_USERNAME=adminUser
export SYNO_PASSWORD=adminPassword
export SYNO_SCHEME=https
export SYNO_HOSTNAME=dsm.familie-jonas.bayern
export SYNO_PORT=5001
export SYNO_CREATE=1

export KAS_Login=<ACCOUNTID>
export KAS_Authdata=<PLAINTEXTPASSWORD>
export KAS_Authtype=plain

export PUSHOVER_TOKEN=your_token
export PUSHOVER_USER=your_user_key

# Zertifikat ausstellen + deployen
acme.sh --issue -d ldap.familie-jonas.bayern --dns dns_kas --keylength 2048 --server letsencrypt --force
acme.sh --deploy -d ldap.familie-jonas.bayern --deploy-hook synology_dsm

```

📁 Dieses Skript kann auch über den DSM-Aufgabenplaner regelmäßig (oder auch einmalig zum Anlegen der Konfiguration) ausgeführt werden – alternativ zur Docker-internen Automatik.