Das komplette Handbuch

Installieren und für Anrufe einrichten

Eine Anleitung in einfacher Sprache, um KatoCall auf einem Server zu installieren und echte Anrufe abzurechnen. Folgen Sie den Teilen der Reihe nach — keine Telekom-Erfahrung nötig.

Version 1.0.0Für Debian-12-Server~30–45 Min bis zum ersten Anruf

Hier starten

Wie KatoCall funktioniert, in zwei Minuten

KatoCall ist eine Telefonzentrale mit eingebauter Abrechnung. Ihre Kunden telefonieren darüber; es prüft ihr Guthaben, wählt die günstigste Route, misst die Dauer und rechnet den Anruf ab — automatisch.

Ihr Kunde ruft an KatoCall prüft das Guthaben, wählt die günstigste Route, misst und rechnet ab Ihr Carrier (SIP-Trunk) Beliebig wählt leitet Eingehende Anrufe laufen umgekehrt genauso: eine Nummer (ein DID) klingelt herein und wird an einen Kunden weitergeleitet.
Jeder Anruf — ein- oder ausgehend — läuft über KatoCall, wo die Abrechnung stattfindet.

Woher Ihre Marge kommt

Sie kaufen Minuten bei einem Carrier zu einem Preis und verkaufen sie Kunden teurer. KatoCall speichert beides und behält die Differenz bei jedem Anruf.

Sie zahlen dem Carrier
$0.0090
Anbietertarif, pro Minute
Sie berechnen dem Kunden
$0.0150
Kundentarif, pro Minute
Sie behalten
$0.0060
Ihre Marge, automatisch

Gut zu wissen: KatoCall rechnet keine Währungen um. Wählen Sie in den Einstellungen eine Währung (US-Dollar ist Standard) und nutzen Sie sie für Ein- und Verkauf, damit jede Marge eine einfache Subtraktion ist.

Teil 1

Auf einem Server installieren

Das macht man einmal, auf einem brandneuen Server. Richtet jemand Technisches den Server für Sie ein, geben Sie ihm diesen Teil.

Was Sie zuerst brauchen

Ein ServerDebian 12 (Bookworm), 64-Bit — frisch installiert. Jeder ordentliche VPS geht (OVH, Hetzner, DigitalOcean, Vultr).
Größe2 CPU-Kerne, 4 GB RAM, 20 GB Disk. 2 GB RAM ist das Minimum.
Eine öffentliche IPDer Server braucht seine eigene Adresse im Internet — die gibt Ihnen Ihr Anbieter.
Server-ZugangDas root-Passwort oder ein Nutzer mit sudo.
Von Ihrem CarrierEin SIP-Trunk (dessen Host und eine erlaubte IP oder Benutzername/Passwort), plus etwaige Rufnummern (DIDs).
Ein Domainname (optional)Nur wenn Sie das https-Schloss wollen. Sie können ohne starten und es später hinzufügen.

Installation durchführen

Kopieren Sie katocall-1.0.0.tar.gz auf den Server und führen Sie diese Befehle nacheinander aus. Jeder zeigt an, was er tut, und stoppt mit einer klaren Meldung, falls etwas fehlt.

  1. Entpacken und Server prüfen

    Der erste Befehl ändert nichts — er bestätigt, dass der Server bereit ist, und meldet, falls etwas fehlt.

    root@your-server
    # unpack the package
    tar -xzf katocall-1.0.0.tar.gz
    cd katocall-1.0.0
    
    # prüft den Server (sicher — ändert nichts)
    sudo bash install/00-preflight.sh
  2. Die Installationsskripte der Reihe nach ausführen

    Führen Sie sie einzeln aus. Nummer 01 baut die Telefon-Engine und dauert 10–20 Minuten; der Rest ist schnell.

    root@your-server
    sudo bash install/01-install-asterisk.sh   # die Telefon-Engine (10–20 Min)
    sudo bash install/02-install-base-stack.sh
    sudo bash install/03-setup-admin-panel.sh
    sudo bash install/04-configure-ami.sh
    sudo bash install/05-production-hardening.sh
    sudo bash install/06-configure-did-forwarding.sh
    sudo bash install/07-configure-fail2ban.sh
    sudo bash install/08-configure-nat.sh
    sudo bash install/09-configure-outbound.sh
    sudo bash install/11-configure-backups.sh
    sudo bash install/12-configure-dialer.sh   # nur wenn Sie den Dialer wollen

    01 bis 09 sind Pflicht. Schritt 12 ist nur für den Dialer — lassen Sie ihn weg, alles andere läuft trotzdem.

  3. Prüfen, dass alles gesund ist

    Führt etwa 65 Prüfungen aus — jeden Dienst, die Firewall, die Backups, die Sicherheit — und nennt, was bei Fehlern zu beheben ist.

    root@your-server
    sudo bash install/verify.sh
    
    PASS 66   WARN 1   FAIL 0
  4. Zum ersten Mal anmelden

    Öffnen Sie die Serveradresse im Browser und melden Sie sich an. Es erzwingt sofort ein neues Passwort — nichts funktioniert, bis Sie es setzen.

    • Adresse: http://your-server-address/
    • Benutzername: admin
    • Passwort (sofort ändern): Katocall

Vor echten Anrufen: HTTPS aktivieren. Bis dahin läuft das Panel über einfaches http und Ihre Anmeldung reist ungeschützt durchs Internet. Sobald eine Domain auf den Server zeigt, führen Sie aus:

sudo bash install/10-configure-tls.sh panel.yourcompany.com you@yourcompany.com

Teil 2

Für Anrufe einrichten

Jetzt sind Sie im Panel. Erstellen Sie diese sechs Dinge in dieser Reihenfolge — jedes nutzt das vorige. Alles steht im linken Menü.

1SuppliersBei wem Sie Minuten kaufen
2Rate CardsIhre Ein- und Verkaufspreise
3TrunksDie Leitung zu Ihrem Carrier
4Routing GroupsWelche Leitung für welchen Anruf
5AccountsIhre Kunden
6DIDsEingehende Nummern
  1. Suppliers — bei wem Sie Minuten kaufen

    Ein Anbieter (Supplier) ist ein Carrier, bei dem Sie Minuten kaufen. Beginnen Sie hier, denn alles andere verweist darauf. Öffnen Sie Suppliers → New Supplier und geben Sie ihm einen Namen.

    Suppliers+ New Supplier
    e.g. IDT Gold
    USD — $ US Dollar
    Account manager, contract terms…
    Suppliers → New Supplier
  2. Rate Cards — Ihre Ein- und Verkaufspreise

    Eine Tarifkarte (Rate Card) ist eine Preisliste, eine Zeile je Ziel (ein Präfix wie 1 für die USA oder 44 für Großbritannien). Erstellen Sie zwei Arten:

    • Provider Rates — was Ihr Anbieter Ihnen berechnet.
    • Customer Rates — was Sie Kunden berechnen (höher — diese Differenz ist Ihr Gewinn).

    Tippen Sie nicht Hunderte Präfixe: öffnen Sie die Karte und klicken Sie auf Import CSV, um die Preisdatei Ihres Carriers auf einmal zu laden.

    USA Wholesale — ProviderImport CSV
    DestinationPrefixPer min
    United States1$0.0090
    United Kingdom44$0.0110
    Mexico Mobile521$0.0180
    Rates → Import CSV

    Gut zu wissen: Tarife werden mit 4 Nachkommastellen gespeichert; eine Datei mit 5 Stellen wird beim Import gerundet.

  3. Trunks — die eigentliche Leitung zu Ihrem Carrier

    Ein Trunk ist die aktive Verbindung zu einem Anbieter. Öffnen Sie Trunks → New Trunk. Zwei Dinge zählen:

    • Direction — Outbound (ausgehend), Inbound (eingehend) oder Both (beides).
    • Authentication — IP-based (sie vertrauen der Adresse Ihres Servers) oder Username/Password (sie gaben Ihnen SIP-Zugangsdaten).

    Nutzen Sie nach dem Speichern Test Call, um zu prüfen, dass er wählt, bevor Sie Kunden darauf leiten.

    New TrunkSave
    IDT-GOLD
    Outbound
    IP-based
    sip.idtgold.com
    30
    Trunks → New Trunk

    Ein Trunk-Name darf keine Leerzeichen enthalten — verwenden Sie IDT-GOLD, nicht IDT GOLD.

  4. Routing Groups — welche Leitung für welchen Anruf

    Eine Routing-Gruppe sagt: für diese Art Nummer probiere diese Trunks, in dieser Reihenfolge. Zwei Regler:

    • Priority — der niedrigere wird zuerst probiert. Setzen Sie Ihren günstigsten Carrier auf Priorität 1.
    • Weight — verteilt den Verkehr auf Trunks gleicher Priorität.

    Ist der erste Trunk besetzt oder scheitert er, geht KatoCall zum nächsten. Nutzen Sie Preview, um eine Nummer einzugeben und zu sehen, welchen Trunk es nähme.

    Standard LCR+ Add Route
    TrunkPriorityWeight
    IDT-GOLD1 first100
    Backup-Carrier2100
    Routing Groups → Add Route
  5. Accounts — Ihre Kunden

    Ein Konto (Account) ist ein Kunde. Öffnen Sie Accounts → New Account. Die wichtigen Entscheidungen:

    • Billing Type — Prepaid (laden Guthaben; Anrufe stoppen bei null) oder Postpaid (später in Rechnung gestellt).
    • Rate Card — die Kundenpreisliste aus Schritt 2.
    • Routing Group — wie ihre Anrufe hinausgehen, aus Schritt 4.
    • Wie sie sich verbinden — eine erlaubte IP oder ein Benutzername und Passwort für ihr Telefon/PBX.
    New AccountSave
    Acme Telecom
    Prepaid
    $250.00
    USA Retail
    Standard LCR
    Accounts → New Account

    Gut zu wissen: Jedes Konto, das ausgehende Anrufe tätigt, braucht eine Kunden-Rate-Card, die die von Ihnen verkauften Präfixe abdeckt — sonst werden diese Anrufe abgewiesen (nie zu null abgerechnet).

  6. DIDs — Nummern, die hereinklingeln

    Ein DID ist eine Nummer, die Leute anrufen, um einen Ihrer Kunden zu erreichen. Öffnen Sie das Konto, gehen Sie zu DIDs → Add DID, geben Sie die Nummer und das Weiterleitungsziel ein. (Konto zuerst speichern.)

    Acme Telecom · DIDs+ Add DID
    DID NumberForwards To
    +1 305 555 0100Acme main lineactive
    Accounts → DIDs → Add DID

Jedes Feld im Panel hat ein kleines ? daneben, das seine Funktion erklärt, in allen zehn Sprachen. Settings → Network überträgt Ihre Konfiguration nach großen Änderungen an die Telefon-Engine.

Teil 3

Eine Dialer-Kampagne starten

Der Dialer ruft eine Liste von Nummern an, spielt eine Ansage ab und lässt Leute eine Taste drücken, um verbunden zu werden, einen Rückruf zu erbitten oder sich abzumelden. Installationsschritt 12 muss zuvor erledigt sein.

Wissen, was es ist: das ist ein Power-Dialer, kein prädiktiver. Keine Anrufbeantwortererkennung (eine Mailbox zählt als angenommen) und kein automatisches Tempo — Sie legen eine feste Zahl gleichzeitiger Anrufe fest. Er läuft auf einem Server zur Zeit.

  1. Kampagne erstellen

    Öffnen Sie Dialer Campaigns → New Campaign. Wählen Sie das abzurechnende Konto, benennen Sie sie, stellen Sie das Tempo ein: Max Concurrent Calls, Max Attempts und den Retry gap.

    New CampaignSave
    Acme Telecom
    10
    3
    Upload a .wav / .mp3…
    Dialer Campaigns → New Campaign
  2. Ansage und Menü hinzufügen

    Laden Sie die Prerecorded Message hoch, die bei Annahme abgespielt wird. Bauen Sie dann das IVR Menu — was jede Taste tut:

    • 1 drücken → an einen Agenten weiterleiten
    • 2 drücken → Rückruf erbitten
    • 9 drücken → zu Do-Not-Call hinzufügen (nie wieder gewählt)
  3. Kontakte hochladen

    Klicken Sie im Bereich Contacts der Kampagne auf Upload CSV — eine einfache Datei mit Telefonnummern.

  4. Start drücken — und die Ergebnisse lesen

    Drücken Sie Start, und es beginnt in Sekunden zu wählen; Pause stoppt es ebenso schnell. Am Ende liefert Download Results eine Datei, die zeigt, was mit jeder Nummer geschah.

    Spring PromoStart
    Phone NumberAttemptsResult
    +1 305 555 00001answered
    +1 305 555 00012no answer
    +1 305 555 00021transferred
    Die Kampagne trägt für jede Nummer ein Ergebnis ein.

Teil 4

Täglicher Betrieb

Vier Befehle decken fast alles ab, was Sie am Server tun.

root@your-server
sudo bash install/verify.sh            # ist alles gesund?
sudo /usr/local/sbin/katocall-backup    # jetzt ein Backup machen
sudo bash install/upgrade.sh           # eine neuere Version anwenden
sudo bash install/uninstall.sh         # entfernen (behält Ihre Daten)

Ihre Backups liegen auf derselben Disk, die sie schützen. Kopieren Sie sie regelmäßig woanders hin, sonst reißt ein Disk-Ausfall die Daten und ihr einziges Backup zusammen mit.

Bevor Sie einem Umsatzbericht trauen, können Sie beweisen, dass die Bücher auf den Cent stimmen:

sudo -u softswitch admin/backend/venv/bin/python admin/backend/manage.py verify_ledger

Teil 5

Wenn etwas nicht stimmt

„Server nicht erreichbar“ bei der Anmeldung.
Ein Dienst startet vielleicht neu. Warten und neu laden. Bleibt es, führen Sie install/verify.sh aus — es zeigt den genauen Dienst, der ausgefallen ist.
Ein Anruf kommt nicht zustande.
Prüfen Sie drei Dinge der Reihe nach: der Account hat Guthaben und eine Rate Card; die Routing Group hat einen Trunk für dieses Ziel (Preview nutzen); der Test Call des Trunks funktioniert.
Ich wurde nach falscher Passworteingabe ausgesperrt.
KatoCall sperrt eine Adresse nach mehreren Fehlversuchen, absichtlich. Warten Sie, bis die Sperre abläuft, oder heben Sie sie auf der Seite IP Bans von einem anderen Gerät auf.
Mein Dialer zeigt „Running“, wählt aber nichts.
Wahrscheinlich wurde Installationsschritt 12 übersprungen. Führen Sie install/12-configure-dialer.sh aus, dann install/verify.sh.
Die Margen-Spalte ist leer.
Die Währung des Kunden und die des Trunks unterscheiden sich. KatoCall rechnet keine Währungen um — kaufen und verkaufen Sie in einer Währung, dann erscheint die Marge.

Was auch immer das Problem ist, sudo bash install/verify.sh ist das Erste, was man ausführt. Es prüft ~65 Dinge und nennt das erneut auszuführende Skript.