Jamulus Icon. Link zur Startseite
Navigationsmenü öffnen

Server-Verwaltungshandbuch

Inhaltsverzeichnis

Muss ich einen Server betreiben?

Nein. Du kannst die in den vorhandenen Verzeichnissen aufgelisteten Server verwenden und Jamulus nutzen, ohne einen Server zu betreiben oder einen Hosting-Dienst eines Drittanbieters wählen. Wenn du nur eine ungestörte Sitzung möchtest, verwende die SOLO Technik, die auf der Seite Tipps und Tricks beschrieben ist. Damit ersparst du dir die Mühe, einen Server selbst einzurichten.

Grundlegende Anforderungen

Die Einrichtung eines Servers ist zwar nicht schwierig, aber es ist ratsam, die folgenden Hintergrundinformationen zu lesen, um einige Probleme zu vermeiden:

Geschwindigkeit und Latenz

Die Leistungsfähigkeit des Servers selbst (und des Netzes, in dem er sich befindet) ist NICHT ausschlaggebend für die Qualität einer Jamulus-Sitzung!

Normalerweise liegen die Probleme auf der Client-Seite und sollten dort behoben werden. Wirf einen Blick auf die Fehlerbehebungsseite.

Bei der Einrichtung von Servern können jedoch auch verschiedene Probleme auftreten, insbesondere wenn sie über einen Heimanschluss mit geringer Bandbreite betrieben werden. Normalerweise ist das in Ordnung wenn weniger als 5 Teilnehmer verbunden sind. (z.B. 10 Mbit/s down und 1 Mbit/s up). Weitere Informationen zu den Netzwerkanforderungen findest du unter verschiedene Qualitätseinstellungen hier

Ziehe in Erwägung, einen Cloud-Host und nicht deine private Internetverbindung zu verwenden, um bessere Ping-Zeiten zu erhalten, wenn Latenz Probleme auftreten.

Allgemeine Hinweise

  • Jeder Server sollte mindestens 1.6GHz CPU Frequenz und 1GB RAM haben
  • Für den Betrieb eines Servers musst du möglicherweise Firewalls anpassen, die auf oder außerhalb deines Rechners oder Cloud-Hosts laufen.
  • Wenn du zu Hause einen nicht registrierten/privaten Server betreibst, musst du auf deinem Router eine Portweiterleitung einrichten. Wenn du einen öffentlichen Server betreibst, sollte eine Portweiterleitung in den meisten Fällen nicht notwendig sein, aber es ist ratsam, dies zu tun, da einige Netzwerke mit Jamulus im Standardmodus möglicherweise nicht richtig funktionieren.
  • Jamulus bietet nur eine begrenzte IPv6-Unterstützung, die mit einer Befehlszeilen Option auf dem Client und dem Server aktiviert werden muss. Es gibt Pläne, die IPv6-Unterstützung zu erweitern.

Server Typen

Du kannst deinen Server auf verschiedene Arten betreiben (entweder zu Hause oder bei einem Drittanbieter):

1. Registriert - Öffentlich

Dein Server wird in einem Server Verzeichnis aufgeführt. Standardmäßig verfügt Jamulus über eine Liste mit eingebauten Verzeichnissen, mit denen sich Clients verbinden können. Wenn du dich bei einem dieser Verzeichnisse anmeldest, kann jeder deinen Server finden und sich mit ihm verbinden. Du kannst deinen Server auch in einem benutzerdefinierten Verzeichnis eintragen lassen, wenn dies deinen Anforderungen besser entspricht.

Diagram of connections between Clients within a Jamulus Registered Server
How Registered Servers work

2. Unregistriert - Privat

Dies ist die Standardeinstellung, wenn du einen Server zum ersten Mal startest. Unregistrierte/private Server werden nicht in Verzeichnissen aufgeführt, so dass nur Musiker, die die Adresse deines Servers kennen, eine Verbindung zum Server herstellen können. Dies ist nützlich, da du in Jamulus nicht kontrollieren kannst, wer sich mit deinem Server verbindet.

Diagramm: der Verbindungen zwischen Clients eines nicht registrierten Jamulus-Servers
Wie unregistrierte/private Server funktionieren

Wenn du einen unregistrierten/privaten Server über eine private Internetverbindung betreibst, musst du möglicherweise die Portweiterleitung wie unten beschrieben aktivieren.

3. Verzeichnis Server

Wenn du mehrere Server betreiben willst, möglicherweise auch hinter einer Firewall oder in einem LAN, kannst du deinen Server als Verzeichnis Server betreiben. Beispiele sind Online-Veranstaltungen, Musikvereine, Sektionsproben oder Musikunterricht für Schulen.

Um einen Verzeichnis Server zu betreiben lese diese Anleitung

Installation und Konfiguration

Die meisten Leute betreiben Jamulus als „reinen“ Server auf Hardware ohne Audio (z. B. auf einem Drittanbieter/Cloud-Host) unter Linux. Die folgenden Schritte setzen voraus, dass du mit der Kommandozeile und Debian/Ubuntu oder einer ähnlichen Distribution mit systemd vertraut bist. Um einen Server unter Windows oder auf dem Desktop mit einer grafischen Benutzeroberfläche zu betreiben, siehe diesen Abschnitt.

Wenn du einen Server auf einem Raspberry Pi (oder einem anderen armhf-basierten Gerät) betreiben willst, musst du die .deb-Dateien für armhf herunterladen, nicht die standardmäßigen amd64-Dateien, die du auf einer Intel/AMD-basierten Maschine verwenden würdest.

Installation

  1. Lade die neueste headless (amd64) .deb file oder, wenn du einen Raspberry Pi etc. verwendest latest armhf .deb file
  2. Aktualisiere apt, um sicherzustellen, dass die Liste der Standardpakete aktuell ist: sudo apt update
  3. Installier das Jamulus Paket: sudo apt install ./jamulus_headless_3.9.0_ubuntu_amd64.deb oder für RasPi etc: sudo apt install ./jamulus_headless_3.9.0_ubuntu_armhf.deb
  4. Aktiviere den Headless-Server-Prozess über systemd: sudo systemctl enable jamulus-headless
  5. Füge die gewünschten Befehlszeilen Optionen zur ExecStart-Zeile in der systemd-Dienstdatei hinzu, indem du sudo systemctl edit --full jamulus-headless ausführen (standardmäßig wird ein nicht registrierter Server ausgeführt).
  6. Lade die systemd-Dateien neu sudo systemctl daemon-reload und starte den Headless-Server neu: sudo systemctl restart jamulus-headless
  7. Prüfe mit systemctl status jamulus-headless, ob alles in Ordnung ist (drücke q, um zur Eingabeaufforderung zurückzukehren).

Du kannst Jamulus mit dem Befehl systemctl steuern. Zum Beispiel, um den Server sauber zu stoppen:

sudo systemctl stop jamulus-headless

Um deinen Server zu aktualisieren, wiederhole einfach die oben genannten Schritte.

Konfiguration

Betrieb im registrierten/öffentlichen Modus

Die folgende Mindestkonfiguration ist für den Betrieb eines registrierten Servers erforderlich:

jamulus --nogui --server \
        --directoryserver genreServer:port \
        --serverinfo "yourServerName;yourCity;[country ID]"

Anmerkung: Semikolon und Zeilenumbruch sind in den Argumenten yourServerName und yourCity nicht erlaubt

Um deinen Server bei einem der in den Jamulus-Client integrierten Verzeichnisse zu registrieren, ersetze im obigen Beispiel genreServer:port durch eine der folgenden Optionen:

GenreServer Adresse
Alle Genres 1anygenre1.jamulus.io:22124
Alle Genres 2anygenre2.jamulus.io:22224
Alle Genres 3anygenre3.jamulus.io:22624
Genre Rockrock.jamulus.io:22424
Genre Jazzjazz.jamulus.io:22324
Genre Klassik/Volksmusikclassical.jamulus.io:22524
Genre Chor/Barbershopchoral.jamulus.io:22724

Du kannst auch ein Verzeichnis Server auf dieselbe Weise in der Befehlszeile angeben, indem du die Serveradresse im selben Format angibst.

Als Verzeichnis Server betreiben

Wenn du einen Verzeichnis Server betreiben möchtest, lese bitte diese Anleitung.

Wartung

Anzeigen der Protokolle - Log Files

Jamulus protokolliert in der Systemprotokolldatei, wenn du die Einstellung StandardOutput=journal in der Unit-Datei nicht verändert hast.

Um das Protokoll einzusehen, verwende journalctl (zum Beenden drücke Ctrl-C). Um zum Beispiel die Systemprotokolldatei zu lesen, benutze den Filter nach dem Jamulus-Dienst:

journalctl -f -u jamulus-headless

Steuerung der Aufzeichnung

Wenn die Aufzeichnungsfunktion mit der Befehlszeilen Option „R“ verwendet wird und der Server während einer Aufzeichnung ein SIGUSR1-Signal empfängt, beginnt er eine neue Aufzeichnung in einem neuen Verzeichnis. SIGUSR2 schaltet die Aufzeichnungsfunktion ein und aus.

Um diese Signale mit systemd zu senden, erstelle die folgenden zwei .service-Dateien in /etc/systemd/system und gebe den Dateien einen passenden Namen (z.B. newRecording-Jamulus-server.service).

Hinweis: Du musst die Aufnahmen in einem Pfad außerhalb des Jamulus-Home-Verzeichnisses speichern oder ProtectHome=true aus der systemd-Unit-Datei entfernen (beachte jedoch, dass dies ein potenzielles Sicherheitsrisiko darstellt).

Bespiel einer .service Datei zum Ein- oder Ausschalten der Aufzeichnung (je nach aktuellem Status):

 [Unit]
 Description=Toggle recording state of Jamulus Server
 Requisite=Jamulus-Server

 [Service]
 Type=oneshot
 ExecStart=/bin/systemctl kill -s SIGUSR2 Jamulus-Server

Zum Starten einer neuen Aufnahme:

 [Unit]
 Description=Start a new recording on Jamulus Server
 Requisite=Jamulus-Server

 [Service]
 Type=oneshot
 ExecStart=/bin/systemctl kill -s SIGUSR1 Jamulus-Server

Hinweis: Der Name des Jamulus-Dienstes in der „ExecStart“-Zeile muss mit dem Namen der „service“-Datei übereinstimmen, die du beim Einrichten von systemd zur Steuerung deines Jamulus-Servers erstellt hast. In diesem Beispiel wäre das also Jamulus-Server.service

Führe sudo systemctl daemon-reload aus, um die .service Dateien für die erste Verwendung zu registrieren.

Jetzt kannst du diese zum Beispiel mit dem Befehl systemctl ausführen:

sudo systemctl start jamulusTogglerec” (vorausgesetzt, du hast deine Unit-Datei jamulusTogglerec.service genannt)

Du kannst das Ergebnis dieser Befehle sehen, wenn du systemctl status jamulus ausführst oder die Protokolle einsiehst.

Server auf dem Desktop

Jamulus kann im Server-Modus vom Desktop aus gestartet werden. Dadurch erhältst du eine grafische Benutzeroberfläche zur Steuerung der meisten Einstellungen.

  • Windows-Benutzer - Verwende das Symbol „Jamulus Server“ im Windows-Startmenü.
  • macOS-Benutzer - Doppelklicke auf das „Jamulus Server“-Symbol in „Programme“ (vorausgesetzt, du hast die Dateien der Installation gemäß dieser Anleitung dort gespeichert).
  • Linux-Benutzer - Starte die Verknüpfung „Jamulus Server“. Oder öffne ein Terminalfenster (CTRL+ALT+t unter Debian und verwandten Distributionen), anschliessend jamulus -s eingeben und die Eingabetaste drücken.

Server Einrichtung

Darstellung eines Jamulus Server Setup Fensters

Die Server Verzeichnisliste

Keine: Standardmäßig bist du nicht mit einem Verzeichnis verbunden und befindest dich im unregistrierten/privaten Modus. Lese diese Anleitung, um andere Personen in diesem Modus mit deinem Server zu verbinden.

Genre: Um anderen Personen zu ermöglichen, deinen Server in einem der vorhandenen öffentlichen Verzeichnisse zu sehen, wähle das gewünschte Genreverzeichnis. Du solltest eine Bestätigungsmeldung sehen, ob der Server erfolgreich registriert wurde. Wenn dies nicht der Fall ist und du den Server online lässt, wird er so lange versuchen, sich zu registrieren, bis ein freier Platz im Server Verzeichnis verfügbar wird.

Benutzerdefiniert: Hier kannst du ein benutzerdefiniertes Server Verzeichnis angeben, in dem dein Server aufgeführt werden soll. Auf der Registerkarte „Optionen“ findest du die Adresse des benutzerdefinierten Verzeichnisses, die du verwenden möchtest.

Um deinen Server als Verzeichnis zu betreiben, musst du die Adresse des benutzerdefinierten Verzeichnisses auf localhost oder 127.0.0.1 setzen und das „Genre“ auf „Benutzerdefiniert“ einstellen. Lese diese Anleitung für weitere Details.

Meine Server-Info

Wenn der Server als registrierter Server läuft, werden der Name, die Stadt und das Land des Servers angezeigt, damit andere Benutzer ihn im Verzeichnis leicht identifizieren können.

Chat-Willkommensnachricht

Der hier eingegebene Text erscheint für alle Benutzer, wenn diese dem Server beitreten (das Chat-Fenster öffnet sich automatisch für sie). HTML wird ebenfalls unterstützt.

Optionen

Bild der Jamulus Server Optionen

Aufnahmeverzeichnis

Hier wird der Pfad festgelegt, in dem die Aufzeichnungen des Servers gespeichert werden sollen. Wenn dieser Pfad festgelegt ist, startet die Funktion „Jam-Recorder aktivieren“ auf der Registerkarte „Server-Setup“ die Aufzeichnung, sobald sich die erste Person mit dem Server verbindet, und stoppt, wenn die letzte Person den Server verlässt. Verwende die Schaltfläche „Neue Aufnahme“, um ein neues Unterverzeichnis zu erstellen, in dem die Aufnahmen von nun an gespeichert werden sollen. Beachten, dass die Aufnahmen pro Spur im Format Audacity.lof und REAPER.rpp vorliegen. Öffne die entsprechenden Dateien, um die Aufnahmen in diesen Anwendungen anzuhören.

Hinweis: Wenn dein Server aufzeichnet, zeigen die Clients eine Meldung an, dass die Aufzeichnung läuft.

Benutzerdefinierte Verzeichnisadresse

Lasse dieses Feld leer, es sei denn, du möchtest deinen Server in einem benutzerdefinierten Verzeichnis auflisten oder ein Verzeichnis betreiben.

Verzeichnis Server - Server Liste

Lass dieses Feld leer, es sei denn, du möchtest deinen Server als Verzeichnis Server betreiben. Wenn das Feld benutzt wird, wird die Liste der registrierten Server angezeigt, während das Verzeichnis neu gestartet wird. Dies verhindert, dass die Server Liste „leer“ erscheint, bis sich die Server neu registrieren.

Verzögertes Panning

Diese Option nutzt kleine Unterschiede in der Ankunftszeit des Schalls zwischen den beiden Ohren. Dies erzeugt einen Stereoeffekt, der dem natürlichen menschlichen Gehör ähnlich ist, im Vergleich zum normalen „Lautstärken“-Panning.

Start Minimiert

Windows-Benutzer - Wenn du möchtest dass der Server beim Systemstart automatisch gestartet wird, aktiviere das entsprechende Kontrollkästchen.

Server-Status-Symbol

Das Betriebssystem zeigt ein Symbol in der Taskleiste oder im Statusbereich an, um anzuzeigen, ob der Server aktiv ist:

Image of the Jamulus Server icon

Der Server ist leer

Image of the Jamulus Server icon

Der Server ist belegt

Befehlszeilen Optionen

Die meisten gängigen Funktionen in Jamulus können über die grafische Benutzeroberfläche eingestellt werden, aber diese und andere können auch über Befehlszeilen Optionen in einem Terminalfenster eingestellt werden. Wie genau das gemacht werden muss hängt von deinem Betriebssystem ab.

Um beispielsweise unter Windows eine bestimmte Einstellungsdatei zu verwenden, klickst du mit der rechten Maustaste auf die Jamulus-Verknüpfung und wählst „Eigenschaften“ > Ziel. Füge die erforderlichen Argumente zu Jamulus.exe hinzu:

 "C:\Program Files\Jamulus\Jamulus.exe" --serverbindip 192.168.0.100

Unter macOS startest du ein Terminalfenster und führst Jamulus mit den gewünschten Optionen wie folgt aus:

 /Applications/Jamulus.app/Contents/MacOS/Jamulus --serverbindip 192.168.0.100

Hinweis: Mit den Befehlszeilen Optionen werden die Standardeinstellungen des Servers beim Start festgelegt. Du kannst die Einstellungen mit den entsprechenden GUI-Steuerelementen überschreiben, während der Server läuft.

  • -d oder --discononquit Trennt alle Clients beim Beenden. Wenn ein Server gestoppt oder neu gestartet wird, werden normalerweise alle Clients, die ihre „Trennen“-Schaltflächen nicht benutzt haben, die Verbindung wiederherstellen, wenn der Server wieder hochfährt. Mit dieser Option werden die Clients gezwungen, ihre Verbindungen zum Server manuell wiederherzustellen.
  • -e oder --directoryserver Registriert den Server in einem Verzeichnis (z.B. um sein Genre zu setzen (siehe auch -o)). Siehe Server-Typen für weitere Informationen.
  • --directoryfile Registrierte Server speichern, auch wenn das Verzeichnis neu gestartet wird. Nur für Verzeichnis-Server. Siehe diese Anleitung für weitere Informationen.
  • -f oder --listfilter Erlaubte (Whitelist) Server, die in der Serverliste registriert sind, Format ip address 1[;ip address 2] Nur Verzeichnisse
  • -F oder --fastupdate Verringert die Latenz, wenn Clients mit der Option „Aktiviere kleine Netzwerkpuffer“ verbunden sind. Erfordert eine schnelle CPU, um Aussetzer zu vermeiden, und mehr Bandbreite für aktivierte Clients.
  • -l oder --log Protokollierung einschalten, Pfad und Dateiname festlegen

  • -L oder –licence` Zeigt ein Zustimmungsfenster an, bevor Benutzer eine Verbindung herstellen können
  • -m oder --htmlstatus HTML-Statusdatei aktivieren, Pfad und Dateiname festlegen
  • -o oder --serverinfo Ortsangaben im Format: [Name];[Stadt];[Gebietsschema-Wert] (siehe Werte) Nur registrierte Server
  • -P oder --delaypan Start mit aktiviertem Delay-Panning Siehe Notizen
  • -R oder --recording Gib einen beschreibbaren Pfad ein, in dem die Dateien gespeichert werden sollen (in Anführungszeichen, falls erforderlich). Siehe Optionen.
  • --norecord Aufnahme deaktivieren. Durch Angabe von -R wird die Aufnahme standardmäßig aktiviert

  • -s oder --server Start in Server Modus
  • --serverbindip Spezifiziert die IP Adresse auf die der Server hört

  • -T oder --multithreading Multithreading verwenden, um Mehrkern-CPUs besser zu nutzen und mehr Clients zu unterstützen
  • -u oder --numchannels Maximale Anzahl von Clients (Kanälen)
  • -w oder --welcomemessage Willkommens Nachricht für neue Teilnehmer nach Aufbau der Verbindung. Kann als Zeichenkette oder Dateiname angegeben werden und kann HTML enthalten.
  • -z oder --startminimized Start minimiert
  • --serverpublicip Die öffentliche IP-Adresse des Servers, wenn eine Verbindung zu einem Verzeichnis hinter demselben NAT besteht. Siehe Informationen zum Verzeichnisse
  • -h oder --help Hilfetext anzeigen

  • -i oder --inifile Speicherort der Initialisierungsdatei festlegen (überschreibt die Vorgabe)
  • -n oder --nogui GUI abschalten (zur Verwendung im Headless-Modus)

  • -p oder --port Legt die lokale UDP-Portnummer fest. Standard ist 22124
  • --jsonrpcport Ermöglicht die Steuerung der App durch den JSON-RPC-API-Server, setzt die TCP-Portnummer (EXPERIMENTAL, APIs können sich ändern; nur von localhost aus zugänglich). Siehe die JSON-RPC-API-Dokumentationsdatei.
  • --jsonrpcsecretfile Erforderlich bei Verwendung von --jsonrpcport. Legt einen Pfad zu einer Textdatei fest, die eine Authentifizierungszeichenfolge für den Zugriff auf die JSON-RPC-API enthält.
  • -Q oder --qos Legt den Wert des DS Byte für den Quality of Service fest. Standard ist 128 (DSCP/CS4). QoS wird von Windows ignoriert. Um es zu aktivieren, siehe diese Seite
  • -t oder --notranslation UI-Sprachübersetzungen deaktivieren
  • -6 oder --enableipv6 Aktivieren der IPv6-Adressierung (IPv4 ist immer aktiviert)
  • -v oder --version Versionsinformationen ausgeben und beenden

Betrieb eines unregistrierten Servers

Es wird dringend empfohlen, dass du deinen Server zunächst mit einem öffentlichen Verzeichnis testest, um eventuelle spätere Probleme im privaten Modus einzugrenzen.

Einrichten eines Servers hinter einem Heimrouter

Wenn du deinen Server zu Hause einrichtest, musst du wahrscheinlich einige Einstellungen in deinem Router/Firewall ändern:

Portweiterleitung

Personen, die sich nicht in deinem Heimnetzwerk befinden, können nicht auf Service/Daten innerhalb deines Netzwerks zugreifen. Damit sich externe Jamulus-Clients mit deinem Server verbinden können, musst du in den Einstellungen deines Routers eine Portweiterleitung einrichten. Die genaue Einrichtung ist bei jedem Router anders. Hilfe findest du in der Dokumentation deines Routers oder unter portforward.com.

Hinweis: Der Standardport für die aktuelle Version von Jamulus ist UDP (nicht TCP) Port 22124. Normalerweise leitest du den Port 22124 von außerhalb deines Netzwerks an den Port 22124 des Rechners weiter, auf dem der Server läuft.

Hinweis: Dein Heimrouter kann die IP-Adresse des Rechners, auf dem du deinen Server betreibst, ändern. Je nach Router musst du diesem Rechner möglicherweise eine statische IP-Adresse zuweisen (oft unter den DHCP-Einstellungen deines Routers).

Ermittlung der externen IP

Um anderen eine Verbindung zu deinem Server aus dem Internet zu ermöglichen, ermittle deine externe (WAN-)IP-Adresse, z. B. über Google, und teile diese den Teilnehmern mit. Du selbst solltest dich über die lokale Netzwerkadresse (LAN) des Rechners verbinden, auf dem der Server läuft. Wenn du einen Client auf demselben Rechner wie deinen Server betreibst, wäre das localhost oder 127.0.0.1.

Dynamisches DNS und warum du es wahrscheinlich brauchen wirst

Die meisten nicht-gewerblichen Internetverbindungen ändern ihre externe IP-Adresse nach kurzer Zeit. Um Probleme damit zu vermeiden, solltest du ein „dynamisches DNS“ einrichten, um eine statische (Sub-)Domain zu erhalten, die du mit anderen teilen kannst. Bitte recherchiere wie du das für dein Setup einrichten kannst. Möglicherweise unterstützt dein Router von Haus aus einige „dynamische DNS“-Anbieter. Wenn dies nicht der Fall ist, richte einen dynamischen DNS-Client ein, wie von dem von dir gewählten dynamischen DNS-Anbieter beschrieben.

Backup des Servers

beachte bitte, dass Headless-Server keine .ini-Dateien verwenden. Alle Konfigurationen werden als Befehlszeilen Optionen angegeben

Wenn du Jamulus installiert hast und es läuft, solltest du eine Kopie deiner Einstellungen aufbewahren. Eine Sicherungskopie ist immer eine gute Idee. Außerdem sind die Einstellungsdateien zwischen verschiedenen Jamulus-Versionen nicht abwärtskompatibel. Wenn du also zu einer früheren Version zurückkehren möchten, musst du deine alten Einstellungen wiederherstellen.

To find your settings file on Windows, type %APPDATA% into the search bar and look for a folder named Jamulus. There will be one or more .ini files in this folder. Now back up Jamulus’ settings.

For all other platforms, run the following from the command line to find where they live and copy the files to another location:

find ~ -name Jamulus.ini -ls

If you used the --inifile parameter to save an inifile to a different location, don’t forget to also backup these files. Points to note

  • Sichere keine Einstellungsdateien und stelle sie nicht wieder her, während Jamulus läuft.
  • It is not recommended to manually edit settings files (they’re not designed for that).
  • Du kannst alle Einstellungen auf die Standardwerte zurücksetzen, indem du die Einstellungsdatei löscht (nachdem du Jamulus beendet hast).

Fehlerbehebung

Wenn du Probleme hast, sieh dir diesen Leitfaden an.