selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

εxodus logo

Self-host εxodus

v1.33.0

Privacy auditing platform for Android apps

ReleaseOpen SourceAGPL-3.0
Updated10 hours ago
LanguagePython
Setup difficultyAdvanced
Stars
813
Port
8000 (Web frontend (Django))
Requires
Minio, PostgreSQL, RabbitMQ
Install with Docker Compose
εxodus screenshot 1εxodus screenshot 2

What is εxodus?

This privacy auditing platform examines Android applications to find embedded trackers, analytics, and advertising libraries. It provides a web interface where users can search for apps and view detailed reports showing which trackers are present and their categories. The system downloads APKs from Google Play (using apkeep with AAS tokens) and F-Droid, then performs static analysis to identify tracker signatures. A REST API enables programmatic access to tracker and application data. Deployment options include Docker Compose with PostgreSQL, RabbitMQ, and MinIO, or manual installation on Debian-based systems. The platform supports over 21 languages and connects with the ETIP tracker investigation platform for community-driven tracker identification.

Should you self-host εxodus?

εxodus scores 56/100 on selfhost.directory (how scoring works) and ranks #5 of 12 in Privacy. It has 813 GitHub stars.

It shipped 5 stable releases in the past year. The latest, v1.33.0, came out on 13 September 2026. New versions land roughly every 2 months.

Setup is advanced: plan for several services and some ongoing maintenance. It is AGPL-3.0-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is FreedomBox (64/100). It scores higher overall, so compare the two before you pick. See εxodus vs FreedomBox side by side.

Features

  • Android APK Tracker Detection
  • APK Upload AnalysisDisabled by default
  • Community Tracker Identification
  • F-Droid Integration
  • Google Play IntegrationRequires valid Google account and AAS token
  • Multi-language Support
  • REST APIRate limited to 30 requests/second
  • Tracker Database Auto-updateDisabled by default
  • Web-based Report Interface

εxodus README

How to install εxodus

Install εxodus with Docker Compose

Docker
Environment variables
EXODUS_DB_PASSWORD, GOOGLE_ACCOUNT_EMAIL, GOOGLE_ACCOUNT_AAS_TOKEN, and other settings from custom_docker.py

echo uid=$(id -u) > .env docker compose up -d

Once exodus started, you can check its logs

docker compose logs -f exodus-front

When everything is up (Docker logs Exodus DB is ready.), you may have to force a first download of the F-Droid index:

docker compose exec exodus-worker /entrypoint.sh refresh-fdroid-index

Requires custom_docker.py settings file with Google account credentials

How to configure εxodus

  • ALLOW_APK_UPLOADFalseWhether to allow APK file upload

    Whether to allow APK file upload

    values: True/False

  • ANALYSIS_REQUESTS_AUTO_CLEANUP_TIME86400Requests cleanup frequency (in seconds)

    Requests cleanup frequency (in seconds)

  • ANALYSIS_REQUESTS_KEEP_DURATION4Requests keep duration (in days)

    Requests keep duration (in days)

  • DISABLE_SUBMISSIONSFalseWhether to disable app submissions

    Whether to disable app submissions

    values: True/False

  • ETIP_HOSTNAMEhttps://etip.exodus-privacy.eu.orgETIP (εxodus Tracker Investigation Platform) URL

    ETIP (εxodus Tracker Investigation Platform) URL

  • EXODUS_DB_PASSWORDexodusPostgreSQL database password

    PostgreSQL database password

  • EX_PAGINATOR_COUNT25Number of elements per page

    Number of elements per page

  • FDROID_INDEX_UPDATE_TIME86400FDroid index file update frequency (in seconds)

    FDroid index file update frequency (in seconds)

  • FDROID_MIRRORhttps://f-droid.org/repoFDroid repository to download apps

    FDroid repository to download apps

  • GOOGLE_ACCOUNT_AAS_TOKEN/AAS token of Google account to download apps

    AAS token of Google account to download apps

  • GOOGLE_ACCOUNT_EMAIL/Email of Google account to download apps

    Email of Google account to download apps

  • TRACKERS_AUTO_UPDATEFalseWhether to update automatically trackers

    Whether to update automatically trackers

    values: True/False

  • TRACKERS_AUTO_UPDATE_FROMhttps://reports.exodus-privacy.eu.org/api/trackersAPI URL of an Exodus instance to update trackers from

    API URL of an Exodus instance to update trackers from

  • TRACKERS_AUTO_UPDATE_TIME345600Trackers update frequency (in seconds)

    Trackers update frequency (in seconds)

  • TRACKERS_STATISTICS_AUTO_UPDATE_TIME259200Trackers statistics update frequency (in seconds)

    Trackers statistics update frequency (in seconds)

εxodus releases & version history

FAQ

How to count analyzed applications and reports?

Use Django shell to query the Application and Report models for distinct handles and total reports.

How to dump trackers data?

Use Django's dumpdata command for the trackers app to export tracker definitions as JSON.

How to dump reports data?

Use Django's dumpdata command excluding system tables to export reports as JSON.

How to recompute reports after adding new trackers?

Use the refreshstaticanalysis command with --all and --trackers flags to recompute tracker detection for all reports.

How to import trackers definitions?

Run the importtrackers management command with the appropriate Django settings module.

How do you detect trackers in APK?

Each tracker has code signatures (Java package names). εxodus downloads the APK, unzips it, lists embedded Java classes via dexdump, and checks if any class matches a tracker code signature.

More in Privacy

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…