Skip to main content

Self-hosting

The simplest deployment model is still a self-hosted static app.

Best use case

Use self-hosting when:

  • you want complete control over the archive
  • you do not want account infrastructure yet
  • you are deploying a personal copy or a very small trusted audience copy

Local build flow

Inside instagram-archive-viewer:

npm install
npm run build

The output is the standard Vite dist folder.

What should be inside a good self-hosted package

  • built frontend files
  • trimmed public/data contents for selected conversations
  • rebuilt inbox_index.json
  • rebuilt archive.sqlite
  • only the media files that the selected conversations need
  • any local uploaded profile images that are still referenced

What should not be inside the hosted package

  • raw messages.json files after SQLite has been rebuilt and verified
  • development-only scripts that are not needed at runtime
  • repository housekeeping files that only make sense in source control

Deployment targets that work well

  • Cloudflare Pages
  • Netlify
  • static Nginx hosting
  • private LAN hosting

Security recommendation

If the hosted copy contains private conversations, do not leave it openly public by default. Put access control in front of it.

For Cloudflare, the strongest recommendation is:

  • Cloudflare Tunnel where needed
  • Cloudflare Access / Zero Trust in front of the app

See Cloudflare Pages deployment for concrete steps.