Skip to main content
This quickstart guide will get you from zero to running your first OSINT search in under 5 minutes.

Prerequisites

Before you begin, ensure you have:
  • Python 3.12+ installed
  • Git for cloning the repository
  • ExifTool system binary (for metadata extraction)
  • Redis (optional, for Celery async tasks)
For detailed system requirements and installation of prerequisites, see the Requirements page.

Installation Steps

1

Clone the Repository

Clone OSINT Hub from GitHub:
git clone https://github.com/Nakajito/osint_hub.git
cd osint_hub
2

Create Virtual Environment

Create and activate a Python virtual environment:
python -m venv venv
source venv/bin/activate
3

Install Dependencies

Install all required Python packages:
pip install -r requirements.txt
This installs Django 5.2, Celery 5.6, Holehe, Sherlock, and all other dependencies.
4

Configure Environment Variables

Copy the example environment file and configure it:
cp .env.example .env
Edit .env with your settings:
.env
SECRET_KEY=your-secret-key-here
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1
CSRF_TRUSTED_ORIGINS=http://localhost:8000
DATABASE_URL=sqlite:///db.sqlite3
Generate a secure SECRET_KEY for production. You can generate one with:
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
5

Run Database Migrations

Initialize the SQLite database:
python manage.py migrate
This creates the database schema for Django’s authentication system and sessions.
6

Collect Static Files

Collect static files (CSS, JavaScript, Bootstrap icons):
python manage.py collectstatic
Type yes when prompted. This copies static files to staticfiles/ for serving.
7

Start the Development Server

Launch the Django development server:
python manage.py runserver
You should see:
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Access OSINT Hub

Open your browser and navigate to:
http://localhost:8000
You’ll see the OSINT Hub homepage with access to all six tools:
ToolURLDescription
Email Searchhttp://localhost:8000/email/Verify email across 120+ platforms
EXIF Metadatahttp://localhost:8000/exiftool/Extract metadata from images/videos/PDFs
Hash Toolhttp://localhost:8000/hash/Generate and verify cryptographic hashes
IP Lookuphttp://localhost:8000/ip/Geolocate IP addresses
Username Searchhttp://localhost:8000/user/Search usernames across 300+ sites
Phone Searchhttp://localhost:8000/phone/Look up phone numbers
Let’s perform a quick email search:
1

Navigate to Email Search

Go to http://localhost:8000/email/ or click Email Search from the homepage.
2

Enter an Email Address

Enter any email address you want to investigate (e.g., [email protected]).
3

Click Search

Click the Buscar (Search) button. The tool will run Holehe to check 120+ platforms.
4

View Results

After 10-60 seconds, you’ll see results showing which platforms the email is registered on.
The first search may take longer as Holehe initializes. Subsequent searches are faster.

Optional: Enable Async Processing

For long-running searches (Username Search, Phone Search), you can enable Celery for background processing:
1

Start Redis

Ensure Redis is running:
redis-server
Or on Linux with systemd:
sudo systemctl start redis
2

Start Celery Worker

In a new terminal (with the virtual environment activated):
celery -A osint_hub worker --loglevel=info
Leave this running in the background. Celery will now handle async tasks.

What’s Next?

Explore All Tools

Learn about all six OSINT tools and their capabilities

Configuration Guide

Configure environment variables and Django settings

Deploy to Production

Deploy OSINT Hub with Gunicorn, nginx, and PostgreSQL

Security Best Practices

Learn about security features and OSINT operational security

Troubleshooting

Holehe wasn’t installed correctly. Ensure you’re in the virtual environment and run:
pip install holehe==1.61
ExifTool system binary is not installed. Install it:
# Debian/Ubuntu
sudo apt install libimage-exiftool-perl

# macOS
brew install exiftool
Run collectstatic again:
python manage.py collectstatic --noinput
Ensure DEBUG=True in your .env file for development.
Delete db.sqlite3 and run migrations again:
rm db.sqlite3
python manage.py migrate

Getting Help

If you encounter issues:

Build docs developers (and LLMs) love