Appearance
Installation
Diese Anleitung beschreibt die Schritte zur Einrichtung der Argon-Anwendung und ihrer Abhängigkeiten (Datenbank, Redis, ClamAV, Meilisearch) mithilfe von Docker Compose. Dies ermöglicht eine schnelle und konsistente Bereitstellung der gesamten Umgebung in Containern.
Plattform wählen
Wählen Sie die Anleitung für Ihr Betriebssystem. Die plattformspezifischen Schritte (Docker-Installation, Verzeichnis anlegen, Start) finden Sie dort; die gemeinsame Konfiguration (docker-compose.yaml, config.yaml, init.yaml) ist in dieser Übersicht beschrieben.
| Plattform | Anleitung | Hinweis |
|---|---|---|
| Linux | Installation unter Linux | Empfohlen — besonders für Produktionsumgebungen |
| Windows Server | Installation unter Windows Server | Mit Rancher Desktop |
Voraussetzungen
Hardware
Die folgenden Anforderungen gelten für den Server, auf dem die Docker-Umgebung ausgeführt wird. Wählen Sie den Tab entsprechend Ihrer geplanten Konfiguration (mit oder ohne den mitgelieferten SQL-Server-Container).
Die tatsächlich benötigten Ressourcen hängen von der Anzahl der Benutzer, dem Dokumentenvolumen und der Suchlast ab. Planen Sie für wachsende Installationen zusätzlichen RAM und Speicherplatz ein.
AVX-CPU-Unterstützung erforderlich
Für den Betrieb ist AVX (Advanced Vector Extensions) in der CPU zwingend erforderlich. Diese Erweiterung wird von den meisten modernen Prozessoren (ca. 2011 und neuer) bereitgestellt. Ohne AVX starten die Container nicht korrekt.
IPv6-Unterstützung erforderlich
Auf dem Host muss IPv6 aktiviert sein. Ist IPv6 deaktiviert (z. B. über Kernel-Parameter oder Systemd-Einstellungen), können die Container nicht starten.
Gilt, wenn Sie eine externe Datenbank verwenden und den database-Dienst in der docker-compose.yaml deaktivieren oder entfernen. Die Leistung hängt zusätzlich von der externen Datenbank ab.
| Minimum | Empfohlen (Produktion) | |
|---|---|---|
| CPU | 4 Kerne | 8 Kerne |
| RAM | 8 GB | 16 GB |
| Speicher | 64 GB SSD | 128 GB SSD |
| Einsatz | Test, Demo, wenige Benutzer | Regulärer Betrieb, bis ca. 25 Benutzer |
Größere Installationen
Ab ca. 25 gleichzeitigen Benutzern, hohem Dokumentenvolumen oder separater Datenbank-Instanz empfehlen wir 16 CPU-Kerne, 64 GB RAM und 512 GB+ SSD.
Wichtiger Hinweis zum Speicher
Für den Betrieb von Argon ist zwingend eine Solid State Drive (SSD) für den Speicherplatz erforderlich. Herkömmliche Festplatten (HDDs) werden aufgrund der Leistungsanforderungen nicht unterstützt. Planen Sie Reserve für Datenbank, Suchindizes, Uploads und Backups ein.
Software
Stellen Sie sicher, dass die folgenden Werkzeuge auf Ihrem System installiert sind:
- Docker Engine und Docker Compose — siehe Linux oder Windows Server
- IPv6: Muss auf dem Host aktiviert sein. Mit deaktiviertem IPv6 starten die Container nicht.
Verzeichnisstruktur (Empfohlen)
Es wird empfohlen, die Konfigurationsdateien und die persistenten Daten in einer übersichtlichen Ordnerstruktur zu organisieren.
Die Ordner data, mssql, mssql-backups, redis, clamav und meilisearch werden von Docker automatisch erstellt, wenn die Container zum ersten Mal gestartet werden und die Volumes gemountet werden. Im Ordner data werden sich Ihre hochgeladenen Dokumente befinden.
Die Konfigurationsdateien docker-compose.yaml, config.yaml und init.yaml müssen manuell erstellt und in Schritt 2, Schritt 3 und Schritt 4 konfiguriert werden.
Erstellen Sie einen Hauptordner (z. B. argon) und legen Sie die Dateien wie folgt an:
txt
argon/
├── docker-compose.yaml
├── config.yaml
├── init.yaml
├── data/ # Wird für Argon-Uploads gemountet
├── mssql/ # Wird für MS SQL Server Daten gemountet
├── mssql-backups/ # Wird für MS SQL Server Backups gemountet
├── redis/ # Wird für Redis Daten gemountet
├── clamav/ # Wird für ClamAV Virendefinitionen gemountet
└── meilisearch/ # Wird für Meilisearch Daten gemountet1. Anmelden an der Container Registry
Um das Argon-Anwendungsimage (metaargon.azurecr.io/argon:{VERSION}) herunterladen zu können, müssen Sie sich bei der Azure Container Registry anmelden. Ersetzen Sie dabei {VERSION} durch die spezifische Version, die von uns angegeben wurde.
Führen Sie den folgenden Befehl im Terminal aus und geben Sie das Passwort ein, wenn Sie dazu aufgefordert werden.
sh
docker login -u USER_NAME -p PASSWORD metaargon.azurecr.ioBei erfolgreicher Anmeldung sehen Sie eine Login Succeeded Meldung.
2. docker-compose.yaml Erstellen
Diese Datei definiert die verschiedenen Dienste (Container), aus denen sich die Argon-Umgebung zusammensetzt, sowie deren Konfiguration, Netzwerke und Volumes.
Wichtig zur Versionierung
Verwenden Sie niemals das Image-Tag latest für Produktionsumgebungen. Stattdessen müssen Sie immer eine spezifische Version im Format metaargon.azurecr.io/argon:{VERSION} verwenden, wobei {VERSION} durch die von uns angegebene Versionsnummer ersetzt wird. Dies gewährleistet eine konsistente und vorhersehbare Umgebung.
Erstellen Sie eine Datei namens docker-compose.yaml im Hauptverzeichnis (argon/) mit folgendem Inhalt:
Service Integrationen:
- Mailpit: Simuliert einen E-Mail-Server um E-Mails lokal zu testen, ohne sie tatsächlich zu versenden.
- Meilisearch: Bietet eine blitzschnelle und fehlertolerante Suchmaschine für Websites und Anwendungen.
- ClamAV: Erkennt und entfernt Viren, Trojaner und andere Schadsoftware.
- Redis: Beschleunigt Anwendungen als In-Memory-Datenspeicher für Caching, Session-Management und Echtzeitdaten.
yaml
# Definiert den Namen des Docker Compose Projekts
name: argon-environment
services:
# --- Microsoft SQL Server Datenbank ---
# Wird für die Datenspeicherung von Argon benötigt.
# Kann auskommentiert werden, wenn eine externe Datenbank genutzt wird.
# Stellen Sie sicher, dass die Konfiguration in config.yaml angepasst wird,
# wenn Sie eine externe Datenbank verwenden.
database:
hostname: "database" # Interner Hostname für andere Container
image: "mcr.microsoft.com/mssql/server:2022-CU16-ubuntu-22.04"
user: "root" # Wichtig für Berechtigungen innerhalb des Containers
ports:
# Mappt den Standard-SQL-Server-Port 1433 des Containers auf Port 1433 des Host-Systems.
# Vorsicht: Exponiert die Datenbank potenziell im Netzwerk des Hosts.
- "1433:1433"
environment:
ACCEPT_EULA: "Y" # Erforderlich zur Zustimmung der MS SQL Server EULA
MSSQL_PID: "Express" # Verwendet die kostenlose Express Edition
# WICHTIG: Ändern Sie dieses Standardpasswort für Produktionsumgebungen!
SA_PASSWORD: "005AF4E9-3486-448B-8985-7D1C2CE6E967"
MSSQL_BACKUP_DIR: "/opt/mssql-backups" # Interner Pfad für Backups
TZ: "UTC" # Setzt die Zeitzone im Container
volumes:
# Mountet lokale Ordner für persistente Daten und Backups.
- ./mssql:/var/opt/mssql
- ./mssql-backups:/opt/mssql-backups
restart: unless-stopped # Startet den Container neu, außer er wurde manuell gestoppt
# --- Redis In-Memory Datenspeicher ---
# Wird für Caching und Sitzungsverwaltung verwendet.
redis:
hostname: redis
image: valkey/valkey:alpine3.19 # Valkey ist ein Fork von Redis
volumes:
# Mountet einen lokalen Ordner für persistente Redis-Daten.
- ./redis:/data
# Konfiguriert Speicherintervalle (speichere nach 300s bei 1 Änderung, nach 60s bei 10 Änderungen)
command: valkey-server --save 300 1 --save 60 10
restart: unless-stopped
# --- ClamAV Antivirus ---
# Wird zur Überprüfung hochgeladener Dateien auf Viren verwendet.
clamav:
hostname: clamav
image: clamav/clamav:1.5
volumes:
# Mountet einen lokalen Ordner für persistente Virendefinitionen.
- ./clamav:/var/lib/clamav
restart: unless-stopped
# Hinweis: Der ClamAV-Daemon (clamd) muss im Container laufen und auf Port 3310 lauschen.
# Das Standard-Image sollte dies tun. Überprüfen Sie ggf. die Container-Logs.
# --- Meilisearch Suchmaschine ---
# Wird für schnelle und relevante Suchfunktionen innerhalb von Argon benötigt.
meilisearch:
hostname: meilisearch
image: getmeili/meilisearch:v1.6.2
volumes:
# Mountet einen lokalen Ordner für persistente Suchindizes.
- ./meilisearch:/meili_data
environment:
# WICHTIG: Ändern Sie diesen Standard-API-Schlüssel für Produktionsumgebungen!
# Dieser Schlüssel wird für den Zugriff auf die Meilisearch API benötigt.
MEILI_MASTER_KEY: FflMh7uebwK8dHyV8R8UU4IDcXyl
restart: unless-stopped
# --- Argon Hauptanwendung ---
argon:
hostname: argon
image: metaargon.azurecr.io/argon:{VERSION} # Ersetzen Sie {VERSION} mit der spezifischen Versionsnummer
ports:
# Mappt Port 8080 des Containers auf Port 8080 des Host-Systems.
- "8080:8080"
depends_on:
# Stellt sicher, dass Redis gestartet ist, bevor Argon startet.
# Fügen Sie hier ggf. 'database', 'clamav', 'meilisearch' hinzu,
# wenn Argon direkt beim Start eine Verbindung benötigt und nicht wartet.
- redis
environment:
IS_SAS: "1" # Beispiel für eine Argon-spezifische Umgebungsvariable
# Fügen Sie hier weitere benötigte Umgebungsvariablen für Argon hinzu.
volumes:
# Mountet den lokalen 'data'-Ordner für Dateiuploads.
- ./data:/data/uploads
# Mountet die lokale Konfigurationsdatei in den Container.
- ./config.yaml:/app/config.yaml
restart: unless-stopped
# --- Mailpit E-Mail-Testing (Optional) ---
# Fängt ausgehende E-Mails für Test- und Entwicklungszwecke ab.
# Nur für Test-/Entwicklungsumgebungen empfohlen.
mailpit:
hostname: 'mailpit'
image: "axllent/mailpit:v1.23"
ports:
# Mappt den SMTP-Port (1025) und die Web-UI (8025)
- "1025:1025" # SMTP-Port für Argon
- "8025:8025" # Web-Interface zum Anzeigen der E-Mails
restart: "unless-stopped"3. config.yaml Erstellen
Diese Datei enthält die spezifische Konfiguration für die Argon-Anwendung selbst, wie z.B. Datenbankverbindungen, externe Dienste und Sicherheitseinstellungen.
Erstellen Sie eine Datei namens config.yaml im Hauptverzeichnis (argon/) mit folgendem Inhalt:
yaml
general:
# Die Basis-URL, unter der Argon erreichbar sein wird.
# Passen Sie dies an, wenn Sie einen Reverse Proxy oder Tunnel (z.B. Cloudflare) verwenden.
baseUrl: "http://localhost:8080"
port: 8080 # Der Port, auf dem der Argon-Server im Container lauscht.
# Modus: 'testing' für Entwicklung (ggf. mehr Logging, Debug-Infos),
# 'production' für den Live-Betrieb (optimiert, weniger verbose).
mode: "testing"
timezone: "UTC"
database:
# Hostname des Datenbankservers, wie in docker-compose.yaml definiert.
host: 'database'
# Name der zu verwendenden Datenbank. Wird ggf. beim ersten Start erstellt.
name: "metaARGON"
# Benutzername für die Datenbankverbindung.
user: "sa"
# Passwort für die Datenbankverbindung.
# WICHTIG: Muss mit SA_PASSWORD in docker-compose.yaml übereinstimmen!
# Ändern Sie dieses Standardpasswort für Produktionsumgebungen!
password: "005AF4E9-3486-448B-8985-7D1C2CE6E967"
# Optionen für verschlüsselte Verbindungen (hier deaktiviert).
encrypted: false
# Vertraut dem Serverzertifikat (nützlich für selbstsignierte Zertifikate in Testumgebungen).
# In Produktion sollte dies sorgfältig geprüft werden.
trustServerCertificate: true
redis:
# Hostname des Redis-Servers, wie in docker-compose.yaml definiert.
host: redis
# Fügen Sie hier ggf. Port, Passwort oder Datenbankindex hinzu, falls abweichend.
# port: 6379
# password: "IhrRedisPasswort"
# db: 0
system:
# Speicherort für Uploads ('local' für das gemountete Volume).
defaultStorage: 'local'
# Interner Pfad im Argon-Container, der auf das Volume './data' zeigt.
localStoragePath: '/data/uploads'
login:
# Geheimer Schlüssel zur Signierung von Sitzungs-Tokens/Cookies.
# WICHTIG: Ändern Sie diesen Standardwert unbedingt für Produktionsumgebungen!
# Ein langer, zufälliger String wird empfohlen.
secret: 'FDAFCD78-44E7-4175-938D-05EFB8802446'
workflow:
# Konfiguration für Hintergrund-Worker (hier deaktiviert).
worker: false
concurrency: 25 # Anzahl gleichzeitiger Worker-Jobs (falls worker: true).
integrations:
# Konfiguration für die ClamAV-Integration.
net.clamav:
enabled: true
# Adresse des ClamAV-Daemons (Hostname:Port).
socket: clamav:3310
# Konfiguration für die Meilisearch-Integration.
com.meilisearch:
enabled: true
# Adresse des Meilisearch-Servers (Hostname:Port).
host: meilisearch:7700
# API-Schlüssel für Meilisearch.
# WICHTIG: Muss mit MEILI_MASTER_KEY in docker-compose.yaml übereinstimmen!
# Ändern Sie diesen Standardschlüssel für Produktionsumgebungen!
apiKey: "FflMh7uebwK8dHyV8R8UU4IDcXyl"Warnung
Die docker-compose.yaml und config.yaml enthalten Standardpasswörter und -schlüssel (SA_PASSWORD, MEILI_MASTER_KEY, login.secret). Ändern Sie diese unbedingt in sichere, zufällige Werte, bevor Sie die Umgebung in einer produktiven oder sensiblen Umgebung einsetzen! Stellen Sie sicher, dass die Werte in beiden Dateien übereinstimmen, wo erforderlich (z. B. Datenbankpasswort, Meilisearch API Key).
4. init.yaml Erstellen (Optional)
Diese Datei wird verwendet, um initiale Daten beim ersten Start der Anwendung zu setzen, wie z.B. den ersten Administratorbenutzer und grundlegende Unternehmenseinstellungen.
Erstellen Sie eine Datei namens init.yaml im Hauptverzeichnis (argon/) mit folgendem Inhalt:
Achtung
Bitte ersetzen Sie die unten stehenden Muster- und Beispielwerte vollständig mit Ihren eigenen, unternehmensspezifischen Informationen. Stellen Sie sicher, dass alle Felder korrekt ausgefüllt sind, bevor Sie die Konfiguration verwenden. Das hier angegebene admin.password wird das initiale Passwort für den Benutzer Administrator sein.
yaml
data:
Name1: "Musterfirma GmbH"
NamenZusatz: "Zusatzinformationen GmbH"
Strasse: "Musterstraße 123"
Land: "DE"
Plz: "12345"
Ort: "Musterstadt"
Ortsteil: "" # Optional, kann leer bleiben
Internet: "www.beispiel.de"
Email: "info@beispiel.de"
Telefon: "+49 1234567890"
Telefax: "+49 1234567899"
GLNNr: "" # Optional, kann leer bleiben
Geschaeftsfuehrer: "Max Mustermann"
Gericht: "Amtsgericht Musterstadt"
UstID: "DE123456789"
SteuerNr: "HRB 123 456" #Oder das entsprechende Steuernummernformat
Hostname: "https://musterfirma.beispiel.de"
DatenschutzURL: "https://www.beispiel.de/datenschutz"
admin:
password: "password" # ÄNDERN SIE DIESES PASSWORT!5. Docker Compose Umgebung Starten
Stellen Sie sicher, dass Sie in der docker-compose.yaml die korrekte Argon-Version angegeben haben, indem Sie {VERSION} durch die konkrete Versionsnummer ersetzen, die von uns bereitgestellt wurde (z.B. 20250509.1 oder ähnliches).
Navigieren Sie im Terminal in das Hauptverzeichnis (argon/), in dem sich Ihre docker-compose.yaml, config.yaml und init.yaml befinden, und führen Sie den folgenden Befehl aus:
sh
docker compose up -dup: Erstellt und startet die Container gemäß derdocker-compose.yaml. Lädt Images herunter, falls diese nicht lokal vorhanden sind. Erstellt Netzwerke und Volumes nach Bedarf.-d: (Detached Mode) Startet die Container im Hintergrund. Ohne-dwürden die Logs aller Container im Terminal angezeigt und das Terminal blockiert.
Beim ersten Start kann das Herunterladen der Images und die Initialisierung der Dienste (insbesondere der Datenbank und ClamAV-Definitionen) einige Zeit in Anspruch nehmen.
Sie können den Status der Container überprüfen mit:
sh
docker compose ps6. Zugriff auf die Anwendung
Nachdem alle Container erfolgreich gestartet wurden (Status running oder up), sollte die Argon-Anwendung unter der in config.yaml definierten baseUrl erreichbar sein:
- Argon Webinterface: http://localhost:8080 (oder Ihre konfigurierte externe URL)
Wenn Sie den mailpit-Dienst aktiviert haben, können Sie auf dessen Webinterface zugreifen, um abgefangene E-Mails anzuzeigen:
- Mailpit Webinterface: http://localhost:8025
Erstanmeldung
Nach der erfolgreichen Installation und dem ersten Start der Anwendung können Sie sich wie folgt anmelden:
- Benutzername:
Administrator - Passwort:
- Wenn Sie in der Datei
init.yamlunteradmin.passwordein Passwort festgelegt haben, verwenden Sie dieses. - Wenn in der
init.yamlkeinadmin.passworddefiniert wurde oder die Datei nicht verwendet wird, lautet das Standardpasswortadmin.
- Wenn Sie in der Datei
Achtung
Ändern Sie das Administratorpasswort unmittelbar nach der ersten Anmeldung zu einem starken, einzigartigen Passwort!
Verwaltung der Umgebung
- Logs Anzeigen:
- Alle Logs:
docker compose logs - Logs eines bestimmten Dienstes (z. B.
argon):docker compose logs argon - Logs verfolgen (live):
docker compose logs -foderdocker compose logs -f argon
- Alle Logs:
- Umgebung Stoppen:shDieser Befehl stoppt und entfernt die Container, aber die Volumes (Daten in
docker compose down./mssql,./redis, etc.) bleiben erhalten.
Wichtige Hinweise
Sicherheit
Ändern Sie unbedingt alle Standardpasswörter und -geheimnisse (SA_PASSWORD, MEILI_MASTER_KEY, login.secret, admin.password) für Produktionsumgebungen. Beschränken Sie den Zugriff auf exponierte Ports (wie 1433 für die Datenbank), z. B. durch eine Firewall.
Datenpersistenz
Die Daten der Datenbank, Redis, ClamAV, Meilisearch und Argon-Uploads werden in den lokalen Ordnern (./mssql, ./redis, ./clamav, ./meilisearch, ./data) gespeichert, da diese als Volumes gemountet sind. Stellen Sie sicher, dass diese Ordner regelmäßig gesichert werden.
Produktionsbetrieb
- Setzen Sie
mode: "production"inconfig.yaml. - Verwenden Sie starke, einzigartige Passwörter und Secrets.
- Verwenden Sie immer eine spezifische Version im Format
metaargon.azurecr.io/argon:{VERSION}stattlatest. - Notieren Sie die verwendete Version in Ihrer Systemdokumentation zur Nachverfolgbarkeit.
- Erwägen Sie die Verwendung einer extern verwalteten Datenbank anstelle des
database-Containers für höhere Zuverlässigkeit und Skalierbarkeit. - Deaktivieren oder entfernen Sie den
mailpit-Dienst. - Richten Sie HTTPS ein, z. B. über Externer Zugriff (Cloudflare Tunnel empfohlen) oder einen vorgeschalteten Reverse Proxy (wie Nginx oder Traefik).
HTTPS und Externer Zugriff
Für den Zugriff über HTTPS oder von außerhalb Ihres lokalen Netzwerks gibt es mehrere Möglichkeiten. Die vollständige Anleitung finden Sie unter Externer Zugriff.
Hilfe & FAQ
Häufige Fragen und Lösungen zu Installation und Betrieb der Argon-On-Premises-Umgebung:
Wie prüfe ich, ob meine CPU AVX unterstützt?
Unter Linux können Sie mit folgendem Befehl prüfen, ob AVX verfügbar ist:
sh
grep -o 'avx[^ ]*' /proc/cpuinfo | sort -uWenn avx (oder avx2) ausgegeben wird, wird AVX unterstützt. Unter Windows Server können Sie Tools wie CPU-Z oder die Systeminformationen nutzen; unter macOS liefert sysctl -a | grep machdep.cpu.features Hinweise zu CPU-Features.
Die Container starten nicht oder stürzen sofort ab. Was tun?
- IPv6 prüfen: Ist IPv6 auf dem Host deaktiviert, starten die Container nicht. Stellen Sie sicher, dass IPv6 aktiv ist (z. B. unter Linux:
sysctl net.ipv6.conf.all.disable_ipv6sollte0sein; unter Windows Server siehe IPv6 unter Windows Server prüfen). - AVX prüfen: Fehlende AVX-Unterstützung ist eine häufige Ursache. Prüfen Sie wie oben beschrieben, ob Ihre CPU AVX unterstützt.
- Logs prüfen: Führen Sie
docker compose logs(oderdocker compose logs <dienstname>) aus, um Fehlermeldungen zu sehen. - Ressourcen prüfen: Stellen Sie sicher, dass genügend RAM und Speicherplatz (SSD) verfügbar sind und die Mindestanforderungen erfüllt sind.
- Port-Konflikte: Prüfen Sie, ob die in der
docker-compose.yamlverwendeten Ports (z. B. 8080, 1433, 6379) nicht bereits von anderen Diensten belegt sind.
docker oder docker compose funktioniert unter Windows Server nicht. Was tun?
Siehe Häufige Probleme in der Windows-Server-Anleitung.
Login bei der Container Registry schlägt fehl. Was kann die Ursache sein?
- Prüfen Sie Benutzername und Passwort (ohne Leerzeichen beim Einfügen).
- Stellen Sie sicher, dass Sie die richtige Registry-Adresse verwenden:
metaargon.azurecr.io. - Bei Zugriff aus einem Firmennetzwerk: Prüfen Sie, ob eine Firewall oder ein Proxy den Zugriff auf die Registry blockiert.
Wo finde ich die Logs der Anwendung?
- Alle Dienste:
docker compose logs - Nur Argon:
docker compose logs argon - Live (fortlaufend):
docker compose logs -fbzw.docker compose logs -f argon
Wie kann ich die Umgebung vollständig zurücksetzen?
Mit docker compose down werden die Container entfernt, die Volumes (Daten in ./mssql, ./redis, ./data usw.) bleiben erhalten. Für einen kompletten Reset inklusive Daten:
sh
docker compose down -vDatenverlust
Die Option -v löscht die benannten Volumes. Alle Daten (Datenbank, Uploads, Redis, Meilisearch etc.) gehen dabei verloren. Sichern Sie wichtige Daten vorher.
An wen wende ich mich bei weiteren Fragen oder Problemen?
Wenden Sie sich an Ihren Ansprechpartner bzw. Support, der Ihnen die Zugangsdaten zur Container Registry und die Argon-Version bereitgestellt hat. Halten Sie bei der Kontaktaufnahme die verwendete Version, Fehlermeldungen und ggf. relevante Log-Ausschnitte bereit.