Sign inSign up

crypt010/vitransfer

By crypt010

โ€ขUpdated 4 months ago

ViTransfer - A modern selfhosted video feedback and sharing solution

Image
Content management system
2

50K+

crypt010/vitransfer repository overview

โ ViTransfer

โš ๏ธ Development Status: > Docker repo change: From v1.0.0 onward, the Docker image moved from crypt010/vitransfer to mansivisuals/vitransfer. If you are upgrading an existing setup, update your Docker Compose, Quadlet, or manual pull commands to use the new repository.

Professional Video Review & Approval Platform for Filmmakers

ViTransfer is a self-hosted web application designed for video professionals to share work with clients, collect feedback, and manage approval workflows. Built with modern technologies and designed for easy self-hosting.

NOTE: Coded with Claude AI, built to achieve security and best practices.

Docker Pulls License GitHub Ko-fi

๐Ÿ’– Support Development: If you find ViTransfer useful, consider supporting on Ko-fiโ  to help fund continued development!

โ โœจ Features

โ Core Functionality
  • ๐Ÿ“น Video Upload & Processing - Automatic transcoding to multiple resolutions (720p/1080p)
  • ๐Ÿ’ง Watermarking - Customizable watermarks for preview videos
  • ๐Ÿ’ฌ Timestamped Comments - Collect feedback with precise video timestamps
  • โœ… Approval Workflow - Client approval system with revision tracking
  • ๐Ÿ”’ Password Protection - Secure projects with client passwords
  • ๐Ÿ“ง Email Notifications - Automated notifications for new videos and replies
  • ๐ŸŽจ Dark Mode - Beautiful dark/light theme support
  • ๐Ÿ“ฑ Fully Responsive - Works perfectly on all devices
โ Admin Features
  • ๐Ÿ‘ฅ Multi-User Support - Create multiple admin accounts
  • ๐Ÿ“Š Analytics Dashboard - Track page visits, downloads, and engagement
  • ๐Ÿ” Security Logging - Monitor access attempts and suspicious activity
  • ๐ŸŽฏ Version Management - Hide/show specific video versions
  • ๐Ÿ”„ Revision Tracking - Limit and track project revisions
  • โš™๏ธ Flexible Settings - Per-project and global configuration options
โ Technical Features
  • ๐Ÿณ Docker-First - Easy deployment with Docker Compose
  • ๐Ÿš€ High Performance - Built with Next.js 16 and React 19
  • ๐Ÿ“ฆ Redis Queue - Background video processing with BullMQ
  • ๐ŸŽฌ FFmpeg Processing - Industry-standard video transcoding
  • ๐Ÿ—„๏ธ PostgreSQL Database - Reliable data storage with Prisma 6
  • ๐Ÿ” JWT Authentication - Secure session management
  • ๐ŸŒ TUS Protocol - Resumable uploads for large files

โ ๐Ÿ“ธ Screenshots

โ Login

Login Page

โ Admin Dashboard

Project View

โ Project Creation

Create New Project

โ Project Settings

Project Settings - 
General Project Settings - 
Advanced

โ Client Share Page

Share Page - 
Unapproved Share Page - 
Approved


โ ๐Ÿš€ Quick Start

โ Prerequisites
  • Docker and Docker Compose installed
  • At least 4GB RAM
  • 20GB+ free disk space (more for video storage)

Pull pre-built images and run immediately:

  1. Download the configuration files
# Create directory
mkdir vitransfer && cd vitransfer

# Download docker-compose.yml and .env.example
curl -O https://raw.githubusercontent.com/MansiVisuals/ViTransfer/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/MansiVisuals/ViTransfer/main/.env.example
  1. Create and configure environment file
# Copy and edit the file
cp .env.example .env
nano .env

Generate 5 unique secure values:

# Generate these 5 values (each must be different):
openssl rand -hex 32      # 1. For POSTGRES_PASSWORD
openssl rand -hex 32      # 2. For REDIS_PASSWORD
openssl rand -base64 32   # 3. For ENCRYPTION_KEY
openssl rand -base64 64   # 4. For JWT_SECRET
openssl rand -base64 64   # 5. For JWT_REFRESH_SECRET

Replace each placeholder in .env:

  • POSTGRES_PASSWORD=<<REPLACE_WITH_openssl_rand_hex_32>>
  • REDIS_PASSWORD=<<REPLACE_WITH_openssl_rand_hex_32>>
  • ENCRYPTION_KEY=<<REPLACE_WITH_openssl_rand_base64_32>>
  • JWT_SECRET=<<REPLACE_WITH_openssl_rand_base64_64>>
  • JWT_REFRESH_SECRET=<<REPLACE_WITH_openssl_rand_base64_64>>

Default admin credentials (change in production):

  1. Start the application
docker-compose up -d
  1. Access ViTransfer

That's it! ๐ŸŽ‰


โ Installation Method 2: Build from Source (Advanced)

For developers or contributors who want to build from source:

  1. Clone the repository
git clone https://github.com/MansiVisuals/ViTransfer.git
cd ViTransfer
  1. Follow steps 2-6 from Method 1 above

  2. Build and start

docker-compose up -d --build

The source code will be built into Docker images locally instead of pulling from Docker Hub.


โ ๐ŸŒ Platform Support

ViTransfer uses standard Docker Compose and should work on most platforms.

Planned Platform Guides:

  • Unraid (Docker Compose Manager)
  • TrueNAS SCALE
  • Synology NAS

Community contributions welcome! If you've successfully deployed on a specific platform, consider contributing installation guides.


โ ๐Ÿ”ง Configuration

โ Environment Variables
VariableRequiredDescriptionExample
APP_PORTNoPort to expose4321
PUIDNoUser ID for file permissions1000
PGIDNoGroup ID for file permissions1000
POSTGRES_PASSWORDYesPostgreSQL passwordGenerated
REDIS_PASSWORDYesRedis passwordGenerated
ENCRYPTION_KEYYesData encryption keyGenerated
JWT_SECRETYesJWT signing secretGenerated
JWT_REFRESH_SECRETYesJWT refresh secretGenerated
ADMIN_EMAILYesInitial admin email[email protected]
ADMIN_PASSWORDYesInitial admin passwordSecure password
NEXT_PUBLIC_APP_URLNoPublic URL for emailshttps://videos.example.com
โ SMTP Configuration (Optional)

Configure email notifications in the admin panel:

  • Settings > Email Configuration
  • Add your SMTP server details
  • Test the connection before saving
  • Supports Gmail, Outlook, custom SMTP servers
โ Reverse Proxy Setup

Tested with Cloudflare Tunnels.


โ ๐Ÿ“– Usage Guide

โ Creating Your First Project
  1. Login to the admin panel
  2. Create Project with:
    • Project title and description
    • Client name and email
    • Password protection (recommended)
  3. Upload Videos to the project
  4. Share Link with your client
  5. Collect Feedback via timestamped comments
  6. Approve when client accepts the final version
โ Client Workflow
  1. Receive share link from filmmaker
  2. Enter password (if protected)
  3. Watch videos and leave timestamped feedback
  4. Submit approval when satisfied
  5. Download approved videos (if enabled)
โ Admin Tips
  • Use Custom URLs for memorable share links
  • Enable Revision Tracking for complex projects
  • Configure Watermarks globally or per-project
  • Monitor Analytics to see client engagement
  • Use Security Logs to track access attempts

โ ๐Ÿ”’ Security Features

  • ๐Ÿ” Password-Protected Projects - Optional client passwords
  • ๐Ÿ”‘ JWT Authentication - Secure admin sessions
  • ๐Ÿ›ก๏ธ Rate Limiting - Protection against brute force
  • ๐Ÿ“ Security Logging - Track all access attempts
  • ๐Ÿšซ Hotlink Protection - Prevent unauthorized embedding
  • ๐Ÿ”’ Encrypted Passwords - AES-256 encryption at rest
  • ๐ŸŒ HTTPS Support - SSL/TLS for secure connections
  • โฑ๏ธ Session Monitoring - 15-minute inactivity timeout with warnings
โ Security Notice

ViTransfer uses Alpine Linux and FFmpeg which may show CVEs in vulnerability scanners. These are indirect dependencies with minimal risk. See SECURITY.mdโ  for detailed CVE analysis and risk assessment. All packages are kept at their latest available versions.


โ ๐Ÿ› ๏ธ Maintenance

โ Backup

Important data to backup:

# Docker volumes
docker-compose down
tar -czf vitransfer-backup.tar.gz \
  /var/lib/docker/volumes/vitransfer_postgres-data \
  /var/lib/docker/volumes/vitransfer_uploads

# Or use your host paths if using bind mounts
โ Updates
# Pull latest images from Docker Hub
docker-compose pull

# Or pull specific version
docker pull crypt010/vitransfer:0.1.0

# Restart with new images
docker-compose up -d

# Database migrations run automatically
โ Logs
# View application logs
docker-compose logs app

# View worker logs
docker-compose logs worker

# Follow logs in real-time
docker-compose logs -f
โ Database Management
# Access PostgreSQL
docker exec -it vitransfer-postgres psql -U vitransfer -d vitransfer

# Backup database
docker exec vitransfer-postgres pg_dump -U vitransfer vitransfer > backup.sql

# Restore database
docker exec -i vitransfer-postgres psql -U vitransfer vitransfer < backup.sql

โ ๐Ÿ› Troubleshooting

โ Container won't start
# Check logs
docker-compose logs app

# Verify environment variables
docker-compose config

# Restart all services
docker-compose restart
โ Videos not processing
# Check worker logs
docker-compose logs worker

# Verify FFmpeg is installed
docker exec vitransfer-worker ffmpeg -version

# Check disk space
df -h
โ Can't login
  • Verify ADMIN_EMAIL and ADMIN_PASSWORD in .env
  • Check database connection: docker-compose logs postgres
  • Reset password in database if needed
โ Upload fails
  • Check client_max_body_size in reverse proxy
  • Verify disk space available
  • Check upload permissions on volumes

โ ๐Ÿค Contributing

We welcome contributions! ViTransfer is actively developed and we're looking for help to reach v1.0.

โ How to Contribute
  1. Fork the repository - https://github.com/MansiVisuals/ViTransferโ 
  2. Create a feature branch - git checkout -b feature/amazing-feature
  3. Make your changes - Follow the existing code style
  4. Test thoroughly - Ensure everything works
  5. Submit a pull request - We'll review it as soon as possible
โ Areas We Need Help
  • ๐Ÿ› Bug fixes - Report or fix issues
  • ๐Ÿ“– Documentation - Improve guides and examples
  • ๐ŸŒ Translations - Help make ViTransfer multilingual
  • โœจ Features - Propose and implement new features
  • ๐Ÿงช Testing - Help test on different platforms

See CONTRIBUTING.mdโ  for detailed guidelines.


โ ๐Ÿ“„ License

This project is licensed under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (AGPL-3.0 license).

This means:

  • โœ… You can use ViTransfer for free
  • โœ… You can modify the source code
  • โœ… You can distribute your modifications
  • โš ๏ธ Any derivative work must be open-source under AGPL-3.0 license
  • โš ๏ธ You must include the original license and copyright notice

See the LICENSEโ  file for full details.

Why AGPL-3.0 license? We believe in keeping video tools accessible to all creators while preventing commercial exploitation. If you use or modify ViTransfer, your version must remain free and open-source.


โ ๐Ÿ’ฌ Support


โ ๐Ÿ’– Support Development

If ViTransfer helps you in your work, consider supporting its development:

Buy Me a Coffee at ko-fi.com

Your support helps fund:

  • ๐Ÿš€ New features and improvements
  • ๐Ÿ› Bug fixes and maintenance
  • ๐Ÿ“– Better documentation
  • ๐ŸŽฏ Faster development towards v1.0

โ ๐Ÿ™ Acknowledgments

Built with:


Made with โค๏ธ for filmmakers and video professionals

Tag summary

Content type

Image

Digest

sha256:f52965bf9โ€ฆ

Size

761.2 MB

Last updated

4 months ago

docker pull crypt010/vitransfer