Diese Anleitung beschreibt die Self-Hosted-Installation aller drei Produkte und deren Verbindung miteinander.
Getestet mit:
| Anforderung | Hinweis |
|---|---|
| Linux (Debian/Ubuntu empfohlen) | 64-Bit, amd64 |
| Docker Engine 20+ | Installationsanleitung |
| Docker Compose | Im Lieferumfang von Docker Desktop enthalten |
curl, tar |
Für Download und Entpacken |
| Mind. 4 CPU-Kerne, 8 GB RAM | Für den Betrieb aller drei Produkte |
Alle drei Produkte laufen als Docker-Compose-Stacks und können auf demselben oder auf separaten Servern betrieben werden. Die Ports müssen zwischen den Diensten erreichbar sein.
curl -fsSLO https://releases.docupike.com/i-doit-up/compose/latest/i-doit-up-latest.tar.gz
tar xzvf i-doit-up-latest.tar.gz
cd i-doit-up-latest
Für eine bestimmte Version <version> durch die gewünschte Versionsnummer ersetzen:
curl -fsSLO https://releases.docupike.com/i-doit-up/compose/latest/i-doit-up-v<version>.tar.gz
curl -fsSLO https://releases.docupike.com/i-doit-up/compose/latest/i-doit-up-latest.sha256
sha256sum --check --strict i-doit-up-latest.sha256
Konfigurationsdatei aus der Vorlage erstellen:
cp .env.dist .env
.env in einem Texteditor öffnen und mindestens folgende Werte anpassen:
| Variable | Beschreibung | Beispiel |
|---|---|---|
DOCU_APP_URL |
Vollständige URL inkl. Protokoll und Port | http://mein-server:8080/ |
DOCU_ADMIN_USERNAME |
Benutzername des ersten Admins | admin |
DOCU_ADMIN_EMAIL |
E-Mail-Adresse des ersten Admins | admin@firma.de |
DOCU_ADMIN_PASSWORD |
Passwort des ersten Admins | sicheres Passwort |
DOCU_APP_SECRET |
32 zufällige Hex-Zeichen | s. unten |
DOCU_APP_IDENTIFIER |
8 zufällige Hex-Zeichen | s. unten |
MYSQL_ROOT_PASSWORD |
Root-Passwort der Datenbank | sicheres Passwort |
DOCU_DB_PASSWORD |
App-Datenbankpasswort | sicheres Passwort |
REDIS_PASSWORD |
Redis-Passwort | sicheres Passwort |
MONGO_INITDB_ROOT_PASSWORD |
MongoDB-Passwort | sicheres Passwort |
DOCU_EVENTS_PASSWORD |
Identisch mit MONGO_INITDB_ROOT_PASSWORD |
— |
Zufällige Werte generieren:
echo "DOCU_APP_SECRET=$(openssl rand -hex 16)"
echo "DOCU_APP_IDENTIFIER=$(openssl rand -hex 4)"
Nur HTTP (kein TLS): Zusätzlich setzen:
DOCU_SESSION_COOKIE_SECURE=Off
docker compose up -d
Docker lädt alle benötigten Images herunter und startet die Container. Dieser Vorgang dauert je nach Verbindungsgeschwindigkeit 1–5 Minuten.
Status prüfen — alle Container müssen (healthy) anzeigen, bevor weitergemacht wird:
docker compose ps

i-doit up ist jetzt unter der in DOCU_APP_URL konfigurierten Adresse erreichbar.

Mit den Admin-Zugangsdaten aus der .env anmelden.

curl -fsSLO https://releases.docupike.com/suite-plus/compose/latest/suite-plus-latest.tar.gz
tar xzvf suite-plus-latest.tar.gz
cd suite-plus-latest
app.env öffnen und folgende Werte anpassen:
| Variable | Beschreibung | Beispiel |
|---|---|---|
WEB_PORT |
HTTP-Port für Suite+ | 8110 |
MYSQL_ROOT_PASSWORD |
Root-Passwort der Datenbank | sicheres Passwort |
MYSQL_PASSWORD |
App-Datenbankpasswort | sicheres Passwort |
AppSettings__Secret |
Internes App-Secret (mind. 64 Zeichen) | openssl rand -base64 64 |
Setup__LicenseAdmin__Email |
E-Mail des License-Admin-Kontos | admin@firma.de |
Setup__LicenseAdmin__Password |
Passwort des License-Admin-Kontos | sicheres Passwort |
Standard-Zugangsdaten: Wenn
Setup__-Variablen nicht gesetzt werden, startet Suite+ mit den StandardzugangsdatenlicenseAdmin@ctn.de/123. Vor dem Produktivbetrieb ändern!
docker compose up -d
Status prüfen:
docker compose ps

Suite+ ist unter http://<server>:<WEB_PORT> erreichbar.


i-suite-it ist die Integrationsschicht, die i-doit up mit Suite+ verbindet.
curl -fsSLO https://releases.docupike.com/i-suite-it/compose/latest/i-suite-it-latest.tar.gz
tar xzvf i-suite-it-latest.tar.gz
cd i-suite-it-latest
.env mit folgenden Werten befüllen:
# Netzwerk
WEB_PORT=8120
APP_HOSTNAME=<server-ip>:8120
SKIP_HTTPS=true # false wenn HTTPS genutzt wird
# Datenbank (MongoDB) — beide Passwörter müssen identisch sein
MONGO_INITDB_ROOT_PASSWORD=<sicheres-passwort>
APP_DATABASE_PASSWORD=<sicheres-passwort>
MONGODB_URI=mongodb://root:<sicheres-passwort>@db:27017/idoitbase?authSource=admin
# Admin-Benutzer (lokaler CLI-Admin — MUSS eine E-Mail-Adresse sein)
BACKEND_USERNAME=admin@firma.de
BACKEND_PASSWORD=<sicheres-passwort>
# Suite+-Verbindung
SUITE_URL=http://<suite-plus-server>:<suite-plus-port>/api
SUITE_USERNAME=<suite-plus-e-mail>
SUITE_PASSWORD=<suite-plus-passwort>
# Gemeinsamer Auth-Token (beliebiger Zufallswert, mind. 32 Zeichen)
AUTH_TOKEN=<openssl rand -hex 32>
# i-doit up Instanz-Domain (muss mit DOCU_DOMAIN in i-doit up .env übereinstimmen — Standard: leer)
DOCU_DOMAIN=
Wichtig:
BACKEND_USERNAMEmuss eine gültige E-Mail-Adresse sein. Einfache Benutzernamen werden nicht akzeptiert.
In der Suite+-Konfigurationsdatei app.env folgende Zeilen ergänzen:
# i-suite-it Integration
AppSettings__IdoitUp__Server=http://<i-suite-it-server>:<i-suite-it-port>/
AppSettings__IdoitUp__ApiToken=<AUTH_TOKEN aus i-suite-it .env>
AppSettings__IdoitUp__InstanceId=
Suite+-Container neu erstellen, damit die neuen Einstellungen geladen werden:
docker compose up -d --force-recreate
Hinweis:
docker compose restartlädtenv_file-Einstellungen NICHT neu. Nach Änderungen anapp.envimmer--force-recreateverwenden.
docker compose up -d
Status prüfen:
docker compose ps

Im i-suite-it-Verzeichnis ausführen:
docker compose exec backend node dist/main instance:configure '' \
--suite-url http://<suite-plus-server>:<suite-plus-port>/api \
--suite-username <suite-plus-e-mail> \
--suite-password <suite-plus-passwort> \
--suite-super-admin-username <suite-plus-e-mail> \
--suite-super-admin-password <suite-plus-passwort> \
--suite-auth <AUTH_TOKEN>
Hinweis:
<AUTH_TOKEN>ist der Wert ausAUTH_TOKENin i-suite-it's.env— derselbe Token, der auch in Suite+'sAppSettings__IdoitUp__ApiTokeneingetragen ist.
Wichtig:
--suite-super-admin-usernameund--suite-super-admin-passwordsind Pflicht. Ohne diese Parameter kann der interne Setup-Job nicht abschließen und der OAuth-Verbindungsflow funktioniert nicht.
Im i-doit up-Verzeichnis ausführen:
docker compose exec app bin/console docu:addons:register 'http://<i-suite-it-server>:<i-suite-it-port>/addon'

Dieser Schritt registriert i-suite-it als Add-on und richtet die Verbindung automatisch ein. Der Vorgang dauert ca. 30 Sekunden.
Erfolgreiche Registrierung prüfen:
docker compose exec app bin/console docu:addons:list
Das Add-on synetics.suite-plus sollte mit Is Enabled: True erscheinen.

http://<i-suite-it-server>:<i-suite-it-port> aufrufen



.env.dist nach .env kopiert und angepasstchangeme ersetzt)DOCU_APP_SECRET (32 Hex) und DOCU_APP_IDENTIFIER (8 Hex) generiertDOCU_SESSION_COOKIE_SECURE=Off gesetztdocker compose up -d ausgeführt(healthy)app.env angepasst (Passwörter, WEB_PORT)docker compose up -d ausgeführthttp://<server>:<WEB_PORT>.env konfiguriert (APP_HOSTNAME, Passwörter, SUITE_URL, AUTH_TOKEN)BACKEND_USERNAME ist eine gültige E-Mail-AdresseAppSettings__IdoitUp__* in Suite+'s app.env ergänzt--force-recreate neu gestartetdocker compose up -d ausgeführtinstance:configure mit allen Parametern ausgeführt (inkl. --suite-super-admin-*)docu:addons:register)Für alle drei Produkte:
.env bzw. app.env) in das neue Verzeichnis kopierendocker compose pull
docker compose up -d --force-recreate
docker compose down --rmi all --volumes
Achtung:
--volumeslöscht alle Daten unwiderruflich.
| Problem | Ursache | Lösung |
|---|---|---|
i-suite-it Login schlägt fehl (l_user.invalidEmail) |
BACKEND_USERNAME ist keine E-Mail |
Wert in .env korrigieren, MongoDB-Volume löschen (docker compose down -v), neu starten |
| „Open"-Schaltflächen geben 401 zurück | instance:configure ohne Super-Admin-Parameter ausgeführt |
instance:configure mit --suite-super-admin-* erneut ausführen, Add-on neu registrieren |
| Suite+-Einstellungen werden nicht übernommen | Container nach Änderung an app.env nur neu gestartet, nicht neu erstellt |
docker compose up -d --force-recreate |
| Container-Fehler nach App-Neustart (500er) | tmpfs /var/ wurde geleert |
docker restart <container-name> |