Installation
This page takes you from nothing to a running dashboard with your App Store data in it: create an API key, start OpenConnect with Docker, set a password, and let the first sync run.
What You Need
- Docker with Compose: Docker Desktop on macOS or Windows, or Docker Engine on Linux. Published images run on Intel and ARM, including Apple Silicon and Raspberry Pi.
- An App Store Connect account with access to Users and Access, to create an API key.
- Git, to get the compose file and source.
To run without Docker, you need Node.js 22 or later. See Run Without Docker.
Create an App Store Connect API Key
OpenConnect reads your data with an App Store Connect API Team Key.
- Sign in to App Store Connect and go to Users and Access > Integrations > App Store Connect API.
- Create a Team Key. Give it a name, such as "OpenConnect", and choose its access role from the table below.
- Note the Issuer ID shown above the list of keys, and the new key's Key ID.
- Download the private key. It's a file named
AuthKey_<KEY_ID>.p8. Apple only lets you download it once, so keep it somewhere safe.
| Data | Role the key needs |
|---|---|
| Apps and customer reviews | Any role, such as Customer Support or App Manager |
| Sales, proceeds, in-app purchases, subscriptions | Sales (or Finance, or Admin) |
| Impressions and product page views | Admin once, so OpenConnect can ask Apple to start generating analytics reports. A Sales key can download them afterwards. |
| Ratings and rankings in 175 storefronts | None. These come from Apple's public lookup and top-chart feeds. |
A Sales key covers everything except the one-time impressions setup. See Impressions and Product Page Views.
Find Your Vendor Number
Sales and subscription reports also need your Vendor Number. In App Store Connect, open Payments and Financial Reports. The number is at the top left, under your name.
Start OpenConnect
Get the code:
bashgit clone https://github.com/OddOmens/OpenConnect.git cd OpenConnectCreate your settings file and fill in
ASC_KEY_ID,ASC_ISSUER_IDandASC_VENDOR_NUMBER:bashcp .env.example .enviniASC_KEY_ID=ABC123DEFG ASC_ISSUER_ID=00000000-0000-0000-0000-000000000000 ASC_VENDOR_NUMBER=80012345Put the private key in the
keysfolder. It's found there automatically by its file name:bashcp ~/Downloads/AuthKey_ABC123DEFG.p8 keys/Start it:
bashdocker compose up -dThis pulls the published images. To build from the source you cloned instead, run
docker compose up -d --build.
You can also leave .env empty and enter the key details, including the contents of the .p8 file, in Settings > App Store Connect after you sign in. See Configuration.
TIP
The screenshot studio, app promo cards and API tokens are on the main branch but not yet in a published release (the latest is 1.2.0). To use them now, start OpenConnect with docker compose up -d --build.
Set Your Password
Open http://localhost:3000.
OpenConnect asks you to choose a password. To prove you own the server, it also asks for a one-time Setup code. Find it in the server log:
bashdocker logs openconnectLook for a line like
[auth] No password set yet. Open OpenConnect and enter this setup code: ABCD-EFGH.Enter the setup code, a New password of at least 10 characters, and Confirm password, then click Set password and continue.
To fix the password in .env instead, or to run without one, see Security.
The First Sync
About 30 seconds after OpenConnect starts, it runs its first sync on its own. It backfills your history as far back as Apple allows, which takes a few minutes, and checks your ratings and chart positions in every storefront. Click the Sync button at the top of the dashboard to watch its progress.
After that, sales sync every 6 hours and ratings and rankings once a day. Syncing explains what is downloaded and how to change the schedule.
To check the key without waiting, go to Settings > App Store Connect and click Save & test connection. It shows whether Apps, Reviews and Sales reports work with your key.
Open It From Other Devices
By default, OpenConnect only accepts connections from the computer it runs on (BIND_ADDRESS=127.0.0.1).
- On your home network: set
BIND_ADDRESS=0.0.0.0in.envand rundocker compose up -dagain. Then openhttp://<computer's address>:3000. - Anywhere, privately, over HTTPS: use Tailscale, as described next.
Never expose OpenConnect directly to the internet.
HTTPS With Tailscale
docker-compose.tailscale.yml adds a Tailscale container that serves OpenConnect at https://openconnect.<tailnet>.ts.net on your tailnet. Browsers block some features, such as downloading marketing cards, on plain http:// pages that aren't localhost, so this address is also the way to get those working from other devices.
In the Tailscale admin console, under DNS, turn on MagicDNS and HTTPS certificates.
Start OpenConnect with both compose files:
bashdocker compose -f docker-compose.yml -f docker-compose.tailscale.yml up -dOn the first start, open the login link Tailscale prints:
bashdocker logs openconnect-tailscale
To skip the login link, set TS_AUTHKEY in .env. Tailscale's state is kept in ./tailscale, so you only log in once. TS_HOSTNAME changes the name (default openconnect).
Run Without Docker
Requires Node.js 22 or later.
npm install
cp .env.example .env.local # fill in
npm run dev # http://localhost:3000Data goes to ./data, or the folder set by DATA_DIR. The setup code is printed in the terminal. For the screenshot studio, also see Screenshot Studio.