InstaArchive Viewer

A high-performance React PWA for browsing archived Instagram data with a native-feeling interface. Supports both official Instagram exports and Instaloader archives.

Features

  • Persistent Caching: Uses IndexedDB to store parsed archives locally. Subsequent loads are near-instant.
  • Glassy Scanning UI: A modern, translucent white terminal experience with a dynamic blurred background of your media.
  • Local Privacy: All processing is done client-side. Even when using the self-hosted version, your media is processed locally in your browser.
  • Multiple Formats: Supports official Instagram JSON exports and Instaloader regex-based naming conventions.
  • Story Viewer: Native-like story experience with segmented progress bars, auto-playback, and audio controls.
  • Customizable Grid: 1:1 or 3:4 aspect ratios with adjustable "bumps" for aesthetic alignment.
  • Navigation Protection: Intercepts accidental browser "Back" or "Refresh" actions to protect your current session.

Deployment

The easiest way to run InstaArchive is using Docker.

docker run -d \
  -p 3000:3000 \
  -v /path/to/your/archives:/archives:ro \
  ghcr.io/ergosteur/instaarchive-viewer:latest

Docker Compose

Create a compose.yml file:

services:
  instaarchive:
    image: ghcr.io/ergosteur/instaarchive-viewer:latest
    ports:
      - "3000:3000"
    volumes:
      - ./archives:/archives:ro

Run with:

docker compose up -d

Supported Archive Structure

Place your archive folders inside the mounted /archives directory. The directory name will be used as the account username.

Example Structure:

archives/
├── wanderlust_explorer/          # Instaloader format
│   ├── 2024-01-01_12-00-00_UTC.jpg
│   ├── 2024-01-01_12-00-00_UTC.json.xz
│   └── wanderlust_explorer_profile_pic.jpg
└── pixel_architect/             # Instagram Export format
    ├── 2023-12-25_pixel_architect - post_123.jpg
    ├── 2023-12-25_pixel_architect - post_123.json
    └── pixel_architect.jpg

Local Development

Prerequisites: Node.js (LTS recommended)

  1. Install dependencies: npm install
  2. Start dev server: npm run dev
  3. Start local backend: npm run server (Optional, serves ./_sample-archives)
Description
No description provided
Readme 242 KiB
Languages
TypeScript 92.7%
JavaScript 5.5%
CSS 0.9%
Dockerfile 0.6%
HTML 0.3%