Skip to content

Security: zmsp/AppRankly

Security

SECURITY.md

Security Policy

AppRankly is designed as a self-hosted, privacy-first application for managing and analyzing mobile app performance. Because AppRankly manages sensitive authentication credentials—such as Google Cloud Storage service account JSON keys, Apple App Store Connect .p8 private keys, and AI provider API keys—we take security extremely seriously.


Supported Versions

Only the latest release and the current main branch receive security updates and patches. We strongly encourage all operators to keep their AppRankly instance updated.

Version Supported
latest (main branch)
< 1.0.0

Reporting a Vulnerability

If you discover a potential security vulnerability in AppRankly, please report it responsibly. Do NOT open a public GitHub issue for security vulnerabilities.

How to Report

Please report security vulnerabilities by emailing the maintainer directly or opening a Private Security Advisory on GitHub:

  • GitHub Private Advisory: Go to the repository's Security tab → AdvisoriesNew draft advisory.
  • Email: Reach out to the maintainer via GitHub profile contact details.

What to Include in Your Report

  • A detailed description of the vulnerability.
  • Proof-of-concept (PoC) code or step-by-step instructions to reproduce the issue.
  • Potential impact of the issue (e.g., unauthorized data access, privilege escalation).
  • Any proposed remediation or patch if available.

Response Timeline

  • Acknowledgement: Within 48 hours of report submission.
  • Assessment & Fix: We will work to verify and release a fix as promptly as possible.
  • Public Disclosure: A public advisory will be published once a patch is made available.

Security Best Practices for Self-Hosting

When operating AppRankly on your server, container, or cloud instance, please follow these security guidelines:

1. Protect Your Credentials & Configuration

  • Keep Secrets Out of Version Control: config.json and files in the config/keys/ (or data/config/keys/) folder contain sensitive API keys. They are listed in .gitignore by default. Never commit key files or configuration files to Git.
  • Set a Custom JWT_SECRET: In production environments, explicitly set the JWT_SECRET environment variable to a strong, randomly generated string (e.g., openssl rand -hex 32). Do not rely on dynamic fallbacks in multi-container setups.

2. Follow Principle of Least Privilege

  • Google Cloud Service Account: Grant only the minimal permission required ("View app information and download bulk reports (read-only)") in Google Play Console.
  • Apple App Store Connect Key: Assign the lowest required role ("Sales and Reports") when creating API keys in App Store Connect.
  • AI Provider Keys: Consider placing usage limits or spending caps on your OpenAI, Anthropic, or Gemini API keys.

3. Network & Transport Security

  • Use HTTPS / Reverse Proxy: Always deploy AppRankly behind a TLS-terminating reverse proxy (such as Nginx, Caddy, Traefik, or Cloudflare Tunnels) when accessing the dashboard over the public internet.
  • Restrict Access: Place AppRankly behind authentication proxies (e.g., Authelia, Cloudflare Zero Trust, or VPN/Tailscale) if hosting on public infrastructure.

4. Container & System Security

  • AppRankly Docker images are configured to run as a non-root user (UID 1000:1000). Avoid running the container with --privileged or as root unless strictly necessary.
  • Regularly update Docker base images and system packages.

Thank you for helping keep AppRankly and its user community safe!

There aren't any published security advisories