PutPlace Documentationο
PutPlace is a distributed file metadata storage and content deduplication system built with FastAPI and MongoDB.
Overviewο
PutPlace allows you to:
π Track file metadata across multiple servers
π Deduplicate file content using SHA256 hashing
π₯ Detect file clones across all users with epoch file tracking
π Browse files interactively via web interface
πΎ Store file content in local filesystem or AWS S3
π Secure access with API key and JWT authentication
π Scale horizontally with MongoDB and object storage
Quick Linksο
Getting Startedο
Installation Guide - Install PutPlace server and client
Quick Start Guide - Get up and running in 5 minutes
Client Quick Start - Using the command-line client
Configurationο
Configuration Reference - All configuration options
Authentication Guide - Setting up JWT and API keys
AWS Credentials Setup - AWS IAM and S3 configuration
Storage Backends - Local and S3 storage configuration
OAuth Setup - General OAuth configuration
Google OAuth Setup - Google Sign-In integration
Usageο
Client Guide - Complete client documentation
PutPlace Assist - Local assistant daemon for automated uploads
API Reference - REST API documentation
File Upload Workflow - Understanding the upload process
Deploymentο
Deployment Overview - Production deployment strategies
Digital Ocean Deployment - Automated Digital Ocean setup
AWS App Runner Deployment - AWS App Runner guide
App Runner Quick Start - Quick AWS deployment
Static Website Setup - Static file serving
Operationsο
User Management - Managing users with pp_manage_users
Security Guide - Security best practices and credentials
Troubleshooting - Common issues and solutions
Developmentο
Development Guide - Contributing to PutPlace
Architecture - System architecture and design
Changelog - Version history and release notes
Featuresο
File Metadata Trackingο
Track comprehensive file information across your infrastructure:
File path, size, permissions, ownership
Timestamps (mtime, atime, ctime)
SHA256 content hash
Hostname and IP address
Content Deduplicationο
Save bandwidth and storage with automatic deduplication:
SHA256-based duplicate detection
Upload files only once
Metadata stored separately for each location
File Clone Detection (New in v0.4.0)ο
Discover and track duplicate files across your entire infrastructure:
Cross-user clone detection - Find files with identical content across all users
Epoch file tracking - Identify the original/canonical copy of each file
Interactive web browser - Tree-based file explorer with clone visualization
Visual highlighting - Green badges and styling for epoch files
Zero-length file handling - Special indicators for empty files
Interactive Web Interface (New in v0.4.0)ο
Manage your files through an intuitive web interface:
User authentication - Secure JWT-based login system
File browser - Tree layout organized by hostname and directory
File details modal - View comprehensive metadata for any file
Clone modal - See all instances of duplicate files
Real-time clone counts - Button badges showing number of duplicates
Flexible Storageο
Choose the storage backend that fits your needs:
Local Filesystem - Simple, fast, no external dependencies
AWS S3 - Scalable, durable, cloud-native storage
Pluggable Architecture - Easy to add new backends
Secure Authenticationο
API key-based authentication:
SHA256-hashed key storage
Per-application/server keys
Key rotation and revocation
Audit trail with usage timestamps
REST APIο
Clean, well-documented REST API:
OpenAPI/Swagger documentation
JSON request/response format
Comprehensive error handling
Health check endpoints
New endpoints:
/api/clones/{sha256},/api/my_files
Client Features (Updated in v0.4.0)ο
Powerful command-line client with enhanced usability:
Graceful interrupt handling - Ctrl-C finishes current file before exiting
Partial completion status - See progress when interrupted
Configuration flexibility - CLI, environment, or file-based config
Rich console output - Progress bars and colorized status
Pattern-based exclusions - Skip unwanted files efficiently
Architectureο
βββββββββββββββ βββββββββββββββ βββββββββββββββ
β Client β β Client β β Client β
β (Server A) β β (Server B) β β (Server C) β
ββββββββ¬βββββββ ββββββββ¬βββββββ ββββββββ¬βββββββ
β β β
β X-API-Key Auth β β
βββββββββββββ¬ββββββββββββ΄βββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββ
β PutPlace API β
β (FastAPI) β
ββββββββββ¬βββββββββ
β
βββββββββ΄βββββββββ
β β
βΌ βΌ
ββββββββββββββ ββββββββββββββ
β MongoDB β β Storage β
β (Metadata) β β Backend β
ββββββββββββββ ββββββββββββββ
β
βββββββ΄ββββββ
β β
βΌ βΌ
ββββββββββββ ββββββββββββ
β Local β β AWS β
β FS β β S3 β
ββββββββββββ ββββββββββββ
Use Casesο
Configuration Managementο
Track configuration files across your infrastructure:
Detect unauthorized changes
Monitor configuration drift
Centralized configuration inventory
Backup Verificationο
Verify backup integrity without storing duplicate data:
SHA256 verification
Deduplication across backup sets
Metadata-only comparison
Compliance & Auditingο
Maintain audit trails of file changes:
Track file modifications
User and permission changes
Timestamp tracking
Distributed File Inventoryο
Keep inventory of files across multiple servers:
Centralized file database
Cross-server deduplication
Quick location lookup by SHA256
System Requirementsο
Server Requirementsο
Python 3.10 - 3.14
MongoDB 4.4 or higher
1GB+ RAM (depending on usage)
Network connectivity
Client Requirementsο
Python 3.10 - 3.14
Network access to PutPlace server
Optionalο
AWS account (for S3 storage)
HTTPS/TLS certificate (for production)
Licenseο
See LICENSE file for details.
Supportο
Documentation: https://putplace.readthedocs.io
Issues: GitHub Issues
Source: GitHub Repository
Table of Contentsο
Getting Started
- Installation Guide
- Quick Start Guide
- Prerequisites
- Step 1: Install PutPlace (2 minutes)
- Step 2: Start the Server (1 minute)
- Step 3: Get Admin Credentials (1 minute)
- Step 4: Use the Client (1 minute)
- Step 5: Verify It Worked
- π Success!
- Whatβs Next?
- Common First-Time Issues
- Quick Reference Commands
- Example Workflow
- Architecture at a Glance
- Development Mode
- Production Deployment (Preview)
- Next Steps
- Getting Help
- PutPlace Client Quick Start
Configuration
- Configuration Reference
- Authentication Guide
- AWS Credentials Setup - Quick Start Guide
- Storage Backends
- Google OAuth Setup Guide
- Google OAuth Setup for PutPlace
- Prerequisites
- Step 1: Create Google Cloud Project
- Step 2: Enable Google Sign-In API
- Step 3: Create OAuth 2.0 Credentials
- Step 4: Configure PutPlace Server
- Step 5: Verify Configuration
- Step 6: Test Google Sign-In
- Troubleshooting
- Security Notes
- Testing Guide
- API Endpoints
- Additional Resources
- Need Help?
Deployment
- Deployment Guide
- Overview
- Prerequisites
- Quick Deploy Options
- Production Architecture
- Method 1: systemd Service (Recommended for VPS/Bare Metal)
- Method 2: Docker
- Method 3: Docker Compose
- HTTPS Configuration
- Monitoring and Logging
- Backup Strategy
- High Availability
- Security Hardening
- Troubleshooting Production Issues
- Next Steps
- Digital Ocean Deployment Guide
- Overview
- Quick Start
- Deployment Options
- Quick Updates
- Management Commands
- Post-Deployment Configuration
- Architecture
- Using MongoDB Atlas Instead
- Using AWS S3 for File Storage
- Monitoring and Backups
- Scaling
- Troubleshooting
- Security Best Practices
- Cleanup and Removal
- Advanced Configuration
- Cost Optimization
- Support
- Comparison with Other Deployment Methods
- AWS App Runner Deployment Guide
- AWS App Runner Quick Start Guide
- Overview
- Prerequisites
- Step 1: Configure Secrets
- Step 2: Deploy to App Runner
- Step 3: Grant IAM Access to Secrets
- Step 4: Trigger Deployment
- Step 5: Access Your API
- Common Tasks
- Deployment Workflow
- Monitoring
- Troubleshooting
- Cost Estimation
- Security Best Practices
- Custom Domain Configuration
- Next Steps
- Support
- Invoke Tasks Reference
- Static Website Setup for putplace.org
Development