API-BaaS-Installation

Edge for Private Cloud Version 4.17.09

Installation

Nachdem Sie das Edge-Dienstprogramm apigee-setup auf einem Knoten installiert haben, installieren Sie mit diesem Dienstprogramm eine oder mehrere BaaS-Komponenten auf dem Knoten.

Das Dienstprogramm apigee-setup hat das folgende Format:

sudo /opt/apigee/apigee-setup/bin/setup.sh -p component -f configFile

Übergeben Sie eine Konfigurationsdatei mit den Informationen zur Installation an das Dienstprogramm apigee-setup. Wenn in der Konfigurationsdatei erforderliche Informationen fehlen, werden Sie vom apigee-setup-Dienstprogramm aufgefordert, diese in die Befehlszeile einzugeben.

Die einzige Anforderung besteht darin, dass die Konfigurationsdatei für den Nutzer „apigee“ zugänglich oder lesbar sein muss.

Verwenden Sie beispielsweise den folgenden Befehl, um den API-BaaS-Stack zu installieren:

sudo /opt/apigee/apigee-setup/bin/setup.sh -p b -f myConfig

Zu installierende Komponenten angeben

Das Apigee-Dienstprogramm setup.sh unterstützt mehrere Optionen zum Installieren von API-BaaS-Komponenten. In der folgenden Anleitung werden die eigenständigen Optionen (c, e, b und p) verwendet. Sie können jedoch je nach Knotenkonfiguration unterschiedliche Optionen verwenden:

Option

Beschreibung

e

Installieren Sie nur ElasticSearch.

b

Installieren Sie nur den API-BaaS-Stack, der auch Tomcat installiert.

p

Installieren Sie nur das API-BaaS-Portal, wodurch auch der Nginx-Router installiert wird, der als Webserver verwendet werden soll.

c

Installieren Sie nur Cassandra.

eb

ElasticSearch, API-BaaS-Stack und Tomcat auf dem Knoten installieren

ebP

Installieren Sie ElasticSearch, API-BaaS-Portal, API-BaaS-Stack und Tomcat, aber nicht Cassandra. Das Portal ist so schlank, dass keine zusätzlichen Ressourcen dafür benötigt werden.

ASA

Installieren Sie alle API-BaaS-Komponenten auf einem einzelnen Knoten (Cassandra, Elasticsearch, API-BaaS-Stack, API-BaaS-Portal, Tomcat). Verwenden Sie diese Option nur für Entwicklung und Tests, nicht für die Produktion.

Konfigurationsdatei erstellen

Die Konfigurationsdatei enthält alle Informationen, die zum Installieren von API BaaS erforderlich sind. Sie können häufig dieselbe Konfigurationsdatei verwenden, um alle Komponenten in einer BaaS-Installation zu installieren.

Jede unten beschriebene Installationstopologie enthält eine beispielhafte Konfigurationsdatei für diese Topologie. Eine vollständige Referenz zur Konfigurationsdatei finden Sie unter Referenz zur BaaS-Konfigurationsdatei.

API-BaaS auf einem einzelnen Knoten installieren

Unten sehen Sie die Konfigurationsdatei für die Installation von API BaaS auf einem einzelnen Knoten. Bearbeiten Sie diese Datei nach Bedarf für Ihre Konfiguration. Eine vollständige Referenz zur Konfigurationsdatei finden Sie unter Referenz zur BaaS-Konfigurationsdatei.

IP1=192.168.56.101   # IP address of single node

# Must resolve to IP address or DNS name of host - not to 127.0.0.1 or localhost.
HOSTIP=$(hostname -i)

# Define the API BaaS administrator account.
AS_ADMIN="superuser"    # User name - default is "superuser".
AS_ADMIN_EMAIL=stackAdmin@email.com
AS_PASSWD=stackAdminPWord

# Because you are installing Cassandra,
# specify Cassandra data center and rack suffix.
# Must use IP addresses for CASS_HOSTS, not DNS names.
CASS_HOSTS="$IP1:1,1"

# Specify the Cassandra region.
REGION=dc-1

# Cassandra uname/pword.
# Even if Cassandra authentication is disabled,
# you must still pass values for these properties.
CASS_USERNAME=cassandra    # Default value
CASS_PASSWORD=cassandra    # Default value

# Specify Cassandra data center name.
BAAS_CASS_LOCALDC=dc-1

# For a single data center, specify the same value as BAAS_CASS_LOCALDC.
BAAS_CASS_DC_LIST=dc-1

# Replication is in the form "dataCenterName:#CassandraNodes".
# For dc-1 with one Cassandra node, it is dc-1:1.
BAAS_CASS_REPLICATION=dc-1:1

# Defines the initial contact points for members of the BaaS cluster.
# For a single node install, specify the IP address of the node.
BAAS_CLUSTER_SEEDS="dc-1:$IP1"

# Single ElasticSearch IP.
ES_HOSTS="$IP1"

# API BaaS Stack information.
# Default cluster name is "apigee_baas"
BAAS_USERGRID_CLUSTERNAME="apigee_baas"

# IP/DNS and port 8080 of a single Stack node.
BAAS_USERGRID_URL="http://$IP1:8080"

# URL and port of the BaaS Portal node.
BAAS_PORTAL_URL="http://$IP1:9000"

# Portal port. Default value is 9000.
BAAS_PORTAL_LISTEN_PORT=9000

# SMTP information. BaaS requires an SMTP server.
SMTPHOST=smtp.gmail.com
SMTPPORT=465
SMTPUSER=your@email.com
SMTPPASSWORD=yourEmailPassword
SMTPSSL=y
SMTPMAILFROM="My Company <myco@company.com>"

So installieren Sie API BaaS auf einem eigenen Knoten:

  1. Installieren Sie das Edge-Dienstprogramm apigee-setup mit dem Internet- oder Nicht-Internet-Verfahren auf dem Knoten. Weitere Informationen finden Sie unter Edge-Dienstprogramm für Apigee-Einrichtung installieren.
  2. Führen Sie über die Eingabeaufforderung das Einrichtungsskript aus:
    /opt/apigee/apigee-setup/bin/setup.sh -p asa -f configFile

    Die Option „-p asa“ gibt an, dass alle API-BaaS-Komponenten auf einem einzelnen Knoten installiert werden sollen (Cassandra, Elasticsearch, API-BaaS-Stack, API-BaaS-Portal, Tomcat).

    Die Konfigurationsdatei muss für den „apigee“-Benutzer zugänglich oder lesbar sein.

  3. Da Sie ElasticSearch auf einem eigenständigen Knoten installiert haben, passen Sie die Standardspeicheroption an, um den für ElasticSearch zugewiesenen Arbeitsspeicher von 4 GB auf 6 GB zu erhöhen:
    1. Öffnen Sie /opt/apigee/customer/application/elasticsearch.properties in einem Editor. Wenn diese Datei nicht vorhanden ist, erstellen Sie sie.
    2. Legen Sie das Attribut setenv_elasticsearch_max_mem_size auf 6g fest (Standardeinstellung ist 4g):
      setenv_elasticsearch_max_mem_size=6g
    3. Speichere die Datei.
    4. Führen Sie den folgenden Befehl aus:
      /opt/apigee/apigee-service/bin/apigee-service apigee-elasticsearch restart
  4. Onboarding einer Organisation wie unten unter Neue Organisation einrichten beschrieben.

Die Konfiguration schließt die Einrichtung auf dem Knoten erfolgreich ab.

API-BaaS auf 7 oder 10 Knoten installieren

Das Verfahren zum Installieren einer Version der API BaaS mit 7 oder 10 Knoten ist sehr ähnlich. Der einzige Unterschied ist Folgendes:

  • Installation mit 10 Knoten installieren Sie die drei ElasticSearch-Komponenten und drei API-BaaS-Stack-Komponenten auf separaten Knoten, sodass insgesamt sechs Knoten vorhanden sind. Diese Konfiguration wird für höchste Leistung empfohlen, da ElasticSearch eine hohe Menge an Laufwerks-E/A und Arbeitsspeicher benötigt.
  • Installation mit 7 Knoten installieren Sie die drei ElasticSearch-Komponenten und drei API-BaaS-Stack-Komponenten auf denselben Knoten, sodass insgesamt drei Knoten entstehen.

Für die API-BaaS-Version mit 7 und 10 Knoten müssen Sie eine Verbindung zu einem Cassandra-Cluster herstellen. Wenn Sie Edge bereits installiert haben, können Sie eine Verbindung zu seinem Cassandra-Cluster herstellen, sodass Sie Cassandra nicht im Rahmen der Installation von API BaaS installieren müssen.

Unten sehen Sie ein Beispiel für eine unbeaufsichtigte Konfigurationsdatei für eine BaaS-Installation mit einer API mit 10 Knoten. Wenn Sie die Komponenten für ElasticSearch und API-BaaS-Stack auf denselben drei Knoten installieren, bearbeiten Sie die Datei so:

  • IP1 und IP4 haben dieselbe IP-Adresse.
  • IP2 und IP5 haben dieselbe IP-Adresse.
  • IP3 und IP6 haben dieselbe IP-Adresse.

Bearbeiten Sie diese Datei nach Bedarf für Ihre Konfiguration. Eine vollständige Referenz zur Konfigurationsdatei finden Sie unter Referenz zur BaaS-Konfigurationsdatei.

# Specify IP address or DNS name of node.
IP1=192.168.1.1   # ElasticSearch
IP2=192.168.1.2   # ElasticSearch
IP3=192.168.1.3   # ElasticSearch
IP4=192.168.1.4   # API BaaS Stack
IP5=192.168.1.5   # API BaaS Stack
IP6=192.168.1.6   # API BaaS Stack
IP7=192.168.1.7   # API BaaS Portal
IP8=192.168.1.8   # Cassandra (shared with Edge or standalone)
IP9=192.168.1.9   # Cassandra (shared with Edge or standalone)
IP10=192.168.1.10  # Cassandra (shared with Edge or standalone)

# Must resolve to IP address or DNS name of host - not to 127.0.0.1 or localhost.
HOSTIP=$(hostname -i)

# Define the API BaaS administrator account.  
AS_ADMIN="superuser"    # User name - default is "superuser".
AS_ADMIN_EMAIL=stackAdmin@email.com
AS_PASSWD=stackAdminPWord

# Only if you are installing Cassandra.
# Specify Cassandra data center and rack suffix.
# Must use IP addresses for CASS_HOSTS, not DNS names.
# CASS_HOSTS="$IP8:1,1 $IP9:1,1 $IP10:1,1"

# If connecting to existing Cassandra nodes, 
# specify Cassandra IPs.
# Must use IP addresses for CASS_HOSTS, not DNS names.
CASS_HOSTS="$IP8 $IP9 $IP10"

# Specify the Cassandra region.
REGION=dc-1

# Cassandra uname/pword.
# Even if Cassandra authentication is disabled,
# you must still pass values for these properties.
CASS_USERNAME=cassandra    # Default value
CASS_PASSWORD=cassandra    # Default value

# Specify BaaS Cassandra connection information.
# Specify the data center name.
BAAS_CASS_LOCALDC=dc-1    # Default is dc-1.

# For a single data center, specify the same value as BAAS_CASS_LOCALDC.
BAAS_CASS_DC_LIST=dc-1

# Replication is in the form "dataCenterName:#CassandraNodes". 
# For example, for dc-1 with three Cassandra nodes, it is dc-1:3.
BAAS_CASS_REPLICATION=dc-1:3

# Defines the initial contact points for members of the BaaS cluster. 
# Specify the IP address of no more than two Stack nodes. 
BAAS_CLUSTER_SEEDS="dc-1:$IP4,dc-1:$IP5"

# ElasticSearch IPs or DNS names, separated by spaces.
ES_HOSTS="$IP1 $IP2 $IP3"

# API BaaS Stack information.
# Default cluster name is "apigee_baas"
BAAS_USERGRID_CLUSTERNAME="apigee_baas" 

# URL and port of the load balancer for the API BaaS Stack nodes, 
# or IP/DNS and port 8080 of a single Stack node with no load balancer.
BAAS_USERGRID_URL=http://myloadbalancer:8443

# API BaaS Portal information.
# URL and port number of load balancer, if there is one in front of the Portal,
# or the URL and port of the Portal node.  
BAAS_PORTAL_URL="http://$IP7:9000"

# Portal port. Default value is 9000.
BAAS_PORTAL_LISTEN_PORT=9000 

# SMTP information. BaaS requires an SMTP server.
SMTPHOST=smtp.gmail.com
SMTPPORT=465
SMTPUSER=your@email.com
SMTPPASSWORD=yourEmailPassword
SMTPSSL=y
SMTPMAILFROM="My Company <myco@company.com>"

Optional – Cassandra installieren: Maschine 8, 9 und 10

Sie können API BaaS mit demselben Cassandra-Cluster verbinden, der auch von Edge verwendet wird. Wenn Sie Edge nicht installiert haben, können Sie optional Cassandra zur Verwendung durch API BaaS installieren.

Der Cassandra-Cluster kann die Authentifizierung verwenden oder die Cassandra-Authentifizierung kann deaktiviert werden. Weitere Informationen finden Sie unter Cassandra-Authentifizierung aktivieren.

  1. Installieren Sie das Edge-Dienstprogramm apigee-setup mit dem Internet- oder Nicht-Internet-Verfahren auf dem Knoten. Weitere Informationen finden Sie unter Edge-Dienstprogramm für Apigee-Einrichtung installieren.
  2. Führen Sie über die Eingabeaufforderung das Einrichtungsskript aus:
    /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile

    Die Option "-p c" gibt an, dass Cassandra installiert werden soll.

    Die Konfigurationsdatei muss für den „apigee“-Benutzer zugänglich oder lesbar sein.

Die Konfiguration schließt die Datenspeichereinrichtung auf dem Knoten erfolgreich ab.

Beachten Sie, dass JMX für Cassandra standardmäßig aktiviert ist. Für den JMX-Remotezugriff auf Cassandra ist kein Passwort erforderlich. Sie können Cassandra so konfigurieren, dass die Authentifizierung für JMX verwendet wird. Weitere Informationen finden Sie unter Monitoring.

Cassandra-Cronjob einrichten

Wenn Sie Cassandra installieren müssen, richten Sie einen Cronjob ein, der nodetool verwendet, um Sperren zu leeren, die jede Stunde auf jedem Cassandra-Knoten ausgeführt werden.

Wenn Sie mehrere Cassandra-Knoten haben, verschieben Sie den Cronjob auf jedem Server um fünf Minuten, damit nicht alle Knoten gleichzeitig geleert werden.

Der Cronjob muss den folgenden Befehl ausführen:

/opt/apigee/apigee-cassandra/bin/nodetool -h IP_address flush Apigee_Baas_Locks

Dabei ist IP_address die IP-Adresse des Cassandra-Knotens.

ElasticSearch installieren: Maschine 1, 2 und 3

So installieren Sie ElasticSearch auf einem eigenen Knoten:

  1. Installieren Sie das Dienstprogramm für das Edge-Apigee-Setup auf dem Knoten mit dem Internet- oder Nicht-Internet-Verfahren. Weitere Informationen finden Sie unter Edge-Dienstprogramm für Apigee-Einrichtung installieren.
  2. Führen Sie über die Eingabeaufforderung das Einrichtungsskript aus:
    /opt/apigee/apigee-setup/bin/setup.sh -p e -f configFile
          

    The "-p e" option specifies to install ElasticSearch. The configuration file must be accessible or readable by the "apigee" user.

  3. (Optional) If you install ElasticSearch on a standalone node, meaning it is not installed with API BaaS Stack, then adjust the default memory option to increase the memory allocated for ElasticSearch from 4GB to 6GB:
    1. Open /opt/apigee/customer/application/elasticsearch.properties in an editor. If this file does not exist, create it.
    2. Set the setenv_elasticsearch_max_mem_size property to 6g (the default is 4g):
      setenv_elasticsearch_max_mem_size=6g
    3. Speichere die Datei.
    4. Führen Sie den folgenden Befehl aus:
      /opt/apigee/apigee-service/bin/apigee-service apigee-elasticsearch restart

    Die Konfiguration schließt die Einrichtung auf dem Knoten erfolgreich ab.

    API-BaaS-Stack installieren: Maschine 4, 5 und 6

    So installieren Sie den API-BaaS-Stack auf einem eigenen Knoten:

    1. Installieren Sie das Dienstprogramm für das Edge-Apigee-Setup auf dem Knoten mit dem Internet- oder Nicht-Internet-Verfahren. Weitere Informationen finden Sie unter Edge-Dienstprogramm für Apigee-Einrichtung installieren.
    2. Führen Sie über die Eingabeaufforderung das Einrichtungsskript aus:
      /opt/apigee/apigee-setup/bin/setup.sh -p b -f configFile

      Die Option „-p b“ gibt an, dass der API-BaaS-Stack installiert werden soll. Die Konfigurationsdatei muss für den „apigee“-Benutzer zugänglich oder lesbar sein.

    Nachdem das Installationsprogramm die korrekten Administratoranmeldedaten abgerufen hat, wird Tomcat installiert, API-BaaS-Schlüsselbereiche erstellt und der API-BaaS-Stack auf dem Server eingerichtet. SMTP ist außerdem so konfiguriert, dass E-Mails zur Passwortbestätigung über die UI gesendet werden können.

    API-BaaS-Portal installieren: Maschine 7

    So installieren Sie das API-BaaS-Portal:

    1. Installieren Sie das Dienstprogramm für das Edge-Apigee-Setup auf dem Knoten mit dem Internet- oder Nicht-Internet-Verfahren. Weitere Informationen finden Sie unter Edge-Dienstprogramm für Apigee-Einrichtung installieren.
    2. Führen Sie über die Eingabeaufforderung das Einrichtungsskript aus:
      /opt/apigee/apigee-setup/bin/setup.sh -p p -f configFile

      Mit der Option „-p p“ wird die Installation des API-BaaS-Portals festgelegt. Die Konfigurationsdatei muss für den „apigee“-Benutzer zugänglich oder lesbar sein.

      Das Installationsprogramm startet den Nginx-Webserver und schließt dann die Konfiguration des API-BaaS-Portals ab.

    3. Ihr nächster Schritt hängt von Ihrer Installation ab.
      1. Wenn sich vor den Portalor-Stack-Knoten ein Load-Balancer befindet, wird im nächsten Abschnitt beschrieben, wie API-BaaS für die Load-Balancer konfiguriert wird.
      2. Wenn sich vor den Portalor-Stack-Knoten kein Load-Balancer befindet, nehmen Sie eine Organisation wie unten unter Neue Organisation einrichten beschrieben auf.

    Notieren Sie sich die API-BaaS-Portal-URL. Dies ist die URL, die Sie in einen Browser eingeben, um auf die Benutzeroberfläche des API-BaaS-Portals zuzugreifen.

    API-BaaS-Knoten für einen Stack- oder Portal-Load-Balancer konfigurieren

    Wenn Sie vor den Stack- oder Portal-Knoten einen Load-Balancer einfügen, müssen Sie die Knoten mit der richtigen URL des Load-Balancers konfigurieren. Die Stack-Knoten benötigen diese Informationen beispielsweise in folgenden Fällen:

    • Aufnahme einer URL in Antworten auf BaaS API-Anfragen
    • Links in E-Mail-Vorlagen hinzufügen, wenn ein Passwort zurückgesetzt oder andere Benachrichtigungen gesendet werden
    • Sie können Nutzer auf bestimmte Portalseiten weiterleiten.

    Wenn Sie einen Load-Balancer vor den Stack-Knoten verwenden, legen Sie das folgende Attribut in /opt/apigee/customer/application/usergrid.properties fest:

    usergrid-deployment_usergrid.api.url.base=http://localhost:8080

    Ersetzen Sie http://localhost:8080 durch die URL des Load-Balancers. Wenn der Load-Balancer für die Verwendung von TLS konfiguriert ist, verwenden Sie das HTTPS-Protokoll. Sie müssen den Port nur angeben, wenn Sie einen nicht standardmäßigen Port verwenden, also etwas anderes als Port 80 für HTTP und Port 443 für HTTPS.

    Sie müssen außerdem das folgende Attribut in /opt/apigee/customer/application/portal.properties festlegen, wenn Sie vor den Stack-Knoten einen Load-Balancer verwenden:

    baas.portal.config.overrideUrl=http://localhost:8080
    

    Ersetzen Sie http://localhost:8080 durch die URL des Load-Balancers für den Stack.

    Wenn Sie vor dem Portalknoten einen Load-Balancer verwenden, legen Sie in usergrid.properties die folgenden Attribute fest:

    usergrid-deployment_portal.url=http://localhost:9000

    Ersetzen Sie http://localhost:9000 durch die URL des Load-Balancers. Wenn der Load-Balancer für die Verwendung von TLS konfiguriert ist, verwenden Sie das HTTPS-Protokoll. Sie müssen den Port nur angeben, wenn Sie einen nicht standardmäßigen Port verwenden, also etwas anderes als Port 80 für HTTP und Port 443 für HTTPS.

    Nach der Bearbeitung von usergrid.properties und portal.properties:

    1. Konfigurieren Sie den Stack-Knoten:
      /opt/apigee/apigee-service/bin/apigee-service baas-usergrid configure
    2. Starten Sie den BaaS-Stack neu:
      /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
    3. Wenn Sie portal.properties geändert haben, konfigurieren Sie den Portalknoten:
      /opt/apigee/apigee-service/bin/apigee-service baas-portal configure
    4. Starten Sie das BaaS-Portal neu:
      /opt/apigee/apigee-service/bin/apigee-service baas-portal restart

    Neue Organisation einrichten

    Beim Onboarding werden eine Organisation und ein Organisationsadministrator erstellt. Nachdem Sie den Organisations- und Organisationsadministrator erstellt haben, können Sie sich in der API-BaaS-Portal-UI anmelden und Anfragen an die API BaaS REST API stellen.

    Wenn Sie eine Organisation erstellen, muss die E-Mail-Adresse des Organisationsadministrators Folgendes tun:

    • Muss sich von der E-Mail-Adresse des Systemadministrators unterscheiden.
    • Muss unter allen anderen Organisationen eindeutig sein. Das heißt, Sie können nicht zwei Organisationen mit derselben E-Mail-Adresse für den Organisationsadministrator erstellen. Nach dem Erstellen der Organisation können Sie jedoch weitere Administratoren hinzufügen, die in mehreren Organisationen dupliziert werden können.

    Verwenden Sie für das Onboarding das Python-Skript create_org_and_user.py. Wenn Sie dieses Skript ohne Befehlszeilenargumente aufrufen, werden Sie zur Eingabe aller Informationen aufgefordert:

    python create_org_and_user.py

    Alternativ können Sie eine oder alle Optionen als Befehlszeilenargument übergeben. Sie werden zur Eingabe aller Informationen aufgefordert, die Sie in der Befehlszeile weglassen:

    python create_org_and_user.py -o '<org name>'
    python create_org_and_user.py -o '<org name>' -a '<new admin email>' -p '<new admin password>'

    So erstellen Sie eine Organisation:

    1. Ändern Sie das Verzeichnis in /opt/apigee/baas-usergrid/bin.
    2. Rufen Sie das Python-Skript create_org_and_user.py auf.

      Sie werden aufgefordert, den Nutzernamen und das Passwort des BaaS-Systemadministrators einzugeben, damit nur ein Systemadministrator es ausführen kann.

    3. Melden Sie sich in einem Webbrowser mit der URL im API-BaaS-Portal an, die Sie am Ende der API-BaaS-Portal-URL-Installation notiert haben. Geben Sie die API-BaaS-Portal-URL im folgenden Format ein, um auf das Portal zuzugreifen:
      http://portalExternalIP:9000/
    4. Auf dem Anmeldebildschirm des Portals haben Sie folgende Möglichkeiten:
      • Melden Sie sich mit dem Nutzernamen und dem Passwort des Organisationsadministrators an.
      • Melden Sie sich mit dem Nutzernamen und Passwort des Systemadministrators an.

    Auf die API BaaS REST API zugreifen

    Für den Zugriff auf die API BaaS REST API verwenden Sie eine URL im folgenden Format:

    https://loadBalancerIP:8080/your-org/your-app

    In einer Entwicklungsumgebung können Sie alle API-BaaS-Komponenten auf einem einzelnen Knoten installieren, d. h., Sie haben einen einzigen API-BaaS-Stack. Oder Sie haben eine kleine Umgebung mit einem einzelnen API-BaaS-Stack-Knoten und ohne Load-Balancer. In diesen Arten von Umgebungen können Sie API-Aufrufe direkt an den API-BaaS-Stackknoten ausführen:

    curl -v "http://portalExternalIP:8080/status"

    Weitere Informationen zu den ersten Schritten mit dem API BaaS-Portal finden Sie in der Apigee-Dokumentation unter http://apigee.com/docs/content/build-apps-home.