Installation
Du musst billingcat nur installieren, wenn du es selbst hosten möchtest. Falls du die gehostete Version auf billingcat.de nutzt, kannst du dieses Kapitel überspringen.
1. Quellcode holen
Den Quellcode findest du auf GitHub:
👉 https://github.com/billingcat/crm
git clone https://github.com/billingcat/crm.git
cd crm2. Konfiguration anlegen
Erzeuge deine eigene Konfigurationsdatei auf Basis des Beispiels:
cp config.toml.example config.tomlBearbeite anschließend config.toml mit einem Editor deiner Wahl.
Die wichtigsten Optionen sind weiter unten im Abschnitt
Konfigurationsdatei config.toml beschrieben.
Standardmäßig startet billingcat im development-Modus mit SQLite.
3. Entwicklung: billingcat mit SQLite starten
Für lokale Entwicklung reicht die eingebaute SQLite-Datenbank.
go run -tags sqlite .Wenn in config.toml nichts am mode geändert wurde, läuft billingcat im
development-Modus.
Standardport ist 5555, d. h. die Anwendung ist erreichbar unter:
Admin-Benutzer anlegen
Rufe im Browser folgende URL auf:
http://localhost:5555/register
Der erste registrierte Benutzer wird automatisch als Admin-Benutzer angelegt.
4. Produktion: Migration & Start
Für den Produktionsbetrieb stellst du in config.toml den Modus um:
mode = "production"
# mode = "development"4.1 Datenbankmigration ausführen
Vor dem ersten Start im Produktionsmodus müssen die Datenbanktabellen angelegt werden:
go run -tags sqlite . -migrateWenn du PostgreSQL verwendest, kompilierst du billingcat entsprechend mit
-tags postgres(siehe auch Datenbank-Konfiguration weiter unten).
4.2 Binary bauen und starten
Empfohlen für Produktion ist ein kompiliertes Binary:
go build -tags sqlite -o crm .
./crmMit PostgreSQL statt SQLite z. B.:
go build -tags postgres -o crm .
./crm5. PDF-Erstellung (Rechnungen)
Für die Rechnungs-PDFs wird der speedata Publisher
verwendet. Dieser wird über eine HTTP-API angesprochen (siehe Felder
publishingserveraddress und publishingserverusername in der Konfiguration).
Der speedata Publisher ist als Pro-Paket erhältlich.
Ohne korrekt konfigurierten Publisher können zwar Stammdaten gepflegt werden, aber die PDF-Erstellung von Rechnungen funktioniert nicht.
6. Mailversand
Der Versand von E-Mails (z. B. Rechnungen oder Einladungen) läuft über Mailjet.
Die Zugangsdaten trägst du in config.toml ein:
mailapikey = "apikey"
mailsecret = "mailsecret"Ohne gültige Mailjet-Daten können keine E-Mails versendet werden.
7. Konfigurationsdatei config.toml
Im Folgenden eine kurze Referenz zu den wichtigsten Feldern deiner
config.toml. Beispiel:
port = 5555
mode = "production"
# mode = "development"
registrationAllowed = true
useinvitationcodes = false
basedir = "dir to main.go"
xmldir = "/tmp/zugferdxml"
# from mailjet
mailapikey = "apikey"
mailsecret = "mailsecret"
publishingserveraddress = "https://api.speedata.de"
publishingserverusername = "sdapi..."
cookiesecret = "some secret"
[servers.development]
database = "sqlite3"
dbname = "test.db"
dblogger = "info"
[servers.production]
database = "postgresql"
dbname = "other_db"
dbuser = "other_app_user"
dbhost = "localhost"
dbpassword = "supergeheim"
dblogger = "silent"7.1 Globale Einstellungen
-
portHTTP-Port, auf dem billingcat lauscht. Standard:5555. -
modeBetriebsmodus der Anwendung:"development"– für lokale Entwicklung, ausführlichere Logs."production"– für Live-Betrieb, ggf. andere Log-Einstellungen usw.
-
registrationAllowedSteuert, ob sich Benutzer selbst registrieren dürfen.true– Registrierung ist erlaubt.false– keine öffentliche Registrierung (Admin legt Benutzer an).
-
useinvitationcodesLegt fest, ob zur Registrierung ein Einladungscode notwendig ist.false– normale Registrierung (sofernregistrationAllowed = true).true– Registrierung nur mit gültigem Einladungscode.
-
basedirBasisverzeichnis der Anwendung, typischerweise der Pfad zum Projekt-Root (dort, womain.goliegt). Wird genutzt, um interne Ressourcen zu finden (Templates, Layouts usw.). -
xmldirVerzeichnis für temporäre ZUGFeRD-XML-Dateien. Das Verzeichnis muss existieren und vom billingcat-Prozess beschreibbar sein. -
mailapikey,mailsecretAPI-Key und Secret von Mailjet für den E-Mail-Versand. -
publishingserveraddressURL des speedata-Publisher-API-Servers, z. B.https://api.speedata.de. -
publishingserverusernameBenutzername / Token für den speedata-Publisher-Server. -
cookiesecretGeheimnis für das Signieren und Verschlüsseln der Session-Cookies. Wichtig: In Produktion unbedingt einen langen, zufälligen Wert verwenden und ihn geheim halten.
7.2 Server-spezifische Einstellungen
Die Sektionen [servers.development] und [servers.production] steuern
hauptsächlich die Datenbankverbindung und das Logging für die jeweiligen Modi.
[servers.development]
-
databaseDatenbank-Treiber für den Development-Modus. Typischer Wert:"sqlite3". -
dbnameDatenbank-Datei bzw. Name. Bei SQLite ist das der Dateiname, z. B."test.db". -
dbloggerSteuerung der Log-Ausgabe der Datenbank. Übliche Werte sind z. B."info"oder"silent". (Genaue Bedeutungen hängen von der Implementierung ab.)
[servers.production]
-
databaseDatenbank-Treiber für Produktion. Typischer Wert:"postgresql". -
dbnameName der Produktionsdatenbank. -
dbuser,dbpasswordBenutzername und Passwort für den Datenbankzugang. -
dbhostHostname oder IP-Adresse des Datenbankservers, z. B."localhost". -
dbloggerLogging-Level für die Datenbank im Produktionsbetrieb, z. B."silent".
Damit ist billingcat bereit für den Einsatz – ob lokal mit SQLite oder im Produktionssetup mit PostgreSQL. 🚀