| title | Docker Compose Deployment |
|---|---|
| description | Deploy Instagram Saved Posts Tracker using Docker Compose on VPS, home labs, or bare metal. |
Deploying Instagram Saved Posts Tracker using Docker Compose is the most straightforward method for standalone servers, home labs, and VPS instances.
- Docker Engine (v24.0+ recommended)
- Docker Compose (v2.0+)
Verify your installation:
docker --version
docker compose versionmkdir -p ~/instagram-saved-posts && cd ~/instagram-saved-postscurl -fsSL https://raw.githubusercontent.com/gitnasr/Instagram-Saved-Posts/master/docker-compose.yml -o docker-compose.ymldocker compose up -dOptional: AI Vector Search (Beta). Semantic image and face search is not part of the default stack — it needs an extra Qdrant service and downloads ~600 MB of model weights on first index. To include it, layer the add-on file:
docker compose -f docker-compose.yml -f docker-compose.search.yml up -dSee AI Vector Search.
docker compose psYou should see:
instagram_saved_posts_app: Next.js frontend and scraper engine (port 5050, accessible athttp://localhost:5050).instagram_saved_posts_mongo: MongoDB database instance (healthy).
Plus, only if you launched with the search add-on:
instagram_saved_posts_qdrant: Qdrant vector database (port 6335, Dashboard athttp://localhost:6335/dashboard).
Note
The compose configuration uses pull_policy: always for the app service. This ensures docker compose up -d always pulls the latest image update from GitHub Container Registry (GHCR) when tracking :latest or :beta.
The MongoDB database stores all profiles, saved posts, carousel media, account history, and notes inside the Docker volume instagram_saved_posts_mongo_data.
To check volume details:
docker volume inspect instagram_saved_posts_mongo_dataWith the search add-on enabled there are two more: instagram_saved_posts_qdrant_data
holds the vectors and instagram_saved_posts_model_cache holds the downloaded model
weights. Both are derived data — deleting them costs a reindex, not your archive.
To keep your InstaSave instance updated with the latest releases automatically, you can add Watchtower to your compose stack:
watchtower:
image: containrrr/watchtower
container_name: watchtower_instasave
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
command: --interval 86400 --cleanup instagram_saved_posts_app# View live logs
docker compose logs -f app
# Restart application
docker compose restart app
# Stop the stack
docker compose down
# Update to latest version manually
docker compose pull && docker compose up -d