Skip to content
Diese Seite wurde mit KI-Unterstützung erstellt und übersetzt. Falls Ihnen Ungenauigkeiten auffallen, helfen Sie gerne bei der Verbesserung. Auf GitHub bearbeiten

Konfigurationsreferenz

Fenfa kann über eine config.json-Datei, Umgebungsvariablen oder das Admin-Panel (für Laufzeiteinstellungen wie Speicher und Apple API) konfiguriert werden.

Konfigurationsvorrang

  1. Umgebungsvariablen -- Höchste Priorität, überschreiben alles
  2. config.json-Datei -- Beim Start geladen
  3. Standardwerte -- Verwendet, wenn nichts angegeben ist

Konfigurationsdatei

Eine config.json im Arbeitsverzeichnis erstellen (oder in Docker einbinden):

json
{
  "server": {
    "port": "8000",
    "primary_domain": "https://dist.example.com",
    "secondary_domains": [
      "https://cdn1.example.com",
      "https://cdn2.example.com"
    ],
    "organization": "Your Company Name",
    "bundle_id_prefix": "com.yourcompany.fenfa",
    "data_dir": "data",
    "db_path": "data/fenfa.db",
    "dev_proxy_front": "",
    "dev_proxy_admin": ""
  },
  "auth": {
    "upload_tokens": ["your-upload-token"],
    "admin_tokens": ["your-admin-token"]
  }
}

Server-Einstellungen

SchlüsselTypStandardBeschreibung
server.portstring"8000"HTTP-Listen-Port
server.primary_domainstring"http://localhost:8000"Öffentliche URL für Manifeste, Callbacks und Download-Links
server.secondary_domainsstring[][]Zusätzliche Domains (CDN, alternativer Zugriff)
server.organizationstring"Fenfa Distribution"Organisationsname in iOS Mobile-Config-Profilen angezeigt
server.bundle_id_prefixstring""Bundle-ID-Präfix für generierte Profile
server.data_dirstring"data"Verzeichnis für SQLite-Datenbank
server.db_pathstring"data/fenfa.db"Expliziter Datenbankdatei-Pfad
server.dev_proxy_frontstring""Vite-Dev-Server-URL für öffentliche Seite (nur Entwicklung)
server.dev_proxy_adminstring""Vite-Dev-Server-URL für Admin-Panel (nur Entwicklung)

Primary Domain

Die Einstellung primary_domain ist kritisch für iOS OTA-Distribution. Es muss die HTTPS-URL sein, auf die Endbenutzer zugreifen. iOS-Manifest-Dateien verwenden diese URL für Download-Links, und UDID-Callbacks leiten auf diese Domain um.

Authentifizierung

SchlüsselTypStandardBeschreibung
auth.upload_tokensstring[]["dev-upload-token"]Token für die Upload-API
auth.admin_tokensstring[]["dev-admin-token"]Token für die Admin-API (inkl. Upload-Berechtigung)

Standard-Token ändern

Die Standard-Token (dev-upload-token und dev-admin-token) sind nur für die Entwicklung. Vor dem Produktions-Deployment immer ändern.

Für jeden Scope werden mehrere Token unterstützt, sodass verschiedene Token an verschiedene CI/CD-Pipelines oder Teammitglieder ausgegeben und einzeln widerrufen werden können.

Umgebungsvariablen

Konfigurationswerte mit Umgebungsvariablen überschreiben:

VariableKonfig-ÄquivalentBeschreibung
FENFA_PORTserver.portHTTP-Listen-Port
FENFA_DATA_DIRserver.data_dirDatenbankverzeichnis
FENFA_PRIMARY_DOMAINserver.primary_domainÖffentliche Domain-URL
FENFA_ADMIN_TOKENauth.admin_tokens[0]Admin-Token (ersetzt den ersten Token)
FENFA_UPLOAD_TOKENauth.upload_tokens[0]Upload-Token (ersetzt den ersten Token)

Beispiel:

bash
FENFA_PORT=9000 \
FENFA_PRIMARY_DOMAIN=https://dist.example.com \
FENFA_ADMIN_TOKEN=secure-random-token \
./fenfa

Speicher-Konfiguration

Lokaler Speicher (Standard)

Dateien werden unter uploads/{product_id}/{variant_id}/{release_id}/filename.ext relativ zum Arbeitsverzeichnis gespeichert. Keine zusätzliche Konfiguration erforderlich.

S3-kompatibler Speicher

S3-Speicher im Admin-Panel unter Einstellungen > Speicher oder über die API konfigurieren:

bash
curl -X PUT http://localhost:8000/admin/api/settings \
  -H "X-Auth-Token: YOUR_ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "storage_type": "s3",
    "s3_endpoint": "https://account-id.r2.cloudflarestorage.com",
    "s3_bucket": "fenfa-uploads",
    "s3_access_key": "your-access-key",
    "s3_secret_key": "your-secret-key",
    "s3_public_url": "https://cdn.example.com"
  }'

Unterstützte Provider:

  • Cloudflare R2 -- Keine Egress-Gebühren, S3-kompatibel
  • AWS S3 -- Standard-S3
  • MinIO -- Selbst gehosteter S3-kompatibler Speicher
  • Jeder S3-kompatible Provider

Upload-Domain

Wenn die primäre Domain CDN-Limits für Dateigrößen hat, eine separate upload_domain konfigurieren, die CDN-Beschränkungen für große Datei-Uploads umgeht.

Apple Developer API

Apple Developer API-Zugangsdaten für automatische Geräteregistrierung konfigurieren. Im Admin-Panel unter Einstellungen > Apple Developer API oder über die API setzen:

FeldBeschreibung
apple_key_idAPI-Schlüssel-ID aus App Store Connect
apple_issuer_idAussteller-ID (UUID-Format)
apple_private_keyPEM-Format privater Schlüsselinhalt
apple_team_idApple Developer Team-ID

Setup-Anweisungen finden sich in der iOS-Distribution.

Datenbank

Fenfa verwendet SQLite via GORM. Die Datenbankdatei wird automatisch am konfigurierten db_path erstellt. Migrationen werden automatisch beim Start ausgeführt.

Backup

Für ein Fenfa-Backup die SQLite-Datenbankdatei und das uploads/-Verzeichnis kopieren. Bei S3-Speicher muss nur die Datenbankdatei lokal gesichert werden.

Entwicklungseinstellungen

Für lokale Entwicklung mit Hot-Reload:

json
{
  "server": {
    "dev_proxy_front": "http://localhost:5173",
    "dev_proxy_admin": "http://localhost:5174"
  }
}

Wenn dev_proxy_front oder dev_proxy_admin gesetzt ist, leitet Fenfa Anfragen an den Vite-Entwicklungsserver weiter, anstatt das eingebettete Frontend bereitzustellen. Dies ermöglicht Hot-Module-Replacement während der Entwicklung.

Nächste Schritte

Released under the Apache-2.0 License.