ViTransfer - A modern selfhosted video feedback and sharing solution
50K+
โ ๏ธ Development Status: > Docker repo change: From v1.0.0 onward, the Docker image moved from
crypt010/vitransfertomansivisuals/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.
๐ Support Development: If you find ViTransfer useful, consider supporting on Ko-fiโ to help fund continued development!





Pull pre-built images and run immediately:
# 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
# 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):
[email protected]ADMIN_PASSWORD=Admin1234docker-compose up -d
That's it! ๐
For developers or contributors who want to build from source:
git clone https://github.com/MansiVisuals/ViTransfer.git
cd ViTransfer
Follow steps 2-6 from Method 1 above
Build and start
docker-compose up -d --build
The source code will be built into Docker images locally instead of pulling from Docker Hub.
ViTransfer uses standard Docker Compose and should work on most platforms.
Planned Platform Guides:
Community contributions welcome! If you've successfully deployed on a specific platform, consider contributing installation guides.
| Variable | Required | Description | Example |
|---|---|---|---|
APP_PORT | No | Port to expose | 4321 |
PUID | No | User ID for file permissions | 1000 |
PGID | No | Group ID for file permissions | 1000 |
POSTGRES_PASSWORD | Yes | PostgreSQL password | Generated |
REDIS_PASSWORD | Yes | Redis password | Generated |
ENCRYPTION_KEY | Yes | Data encryption key | Generated |
JWT_SECRET | Yes | JWT signing secret | Generated |
JWT_REFRESH_SECRET | Yes | JWT refresh secret | Generated |
ADMIN_EMAIL | Yes | Initial admin email | [email protected] |
ADMIN_PASSWORD | Yes | Initial admin password | Secure password |
NEXT_PUBLIC_APP_URL | No | Public URL for emails | https://videos.example.com |
Configure email notifications in the admin panel:
Tested with Cloudflare Tunnels.
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.
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
# 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
# View application logs
docker-compose logs app
# View worker logs
docker-compose logs worker
# Follow logs in real-time
docker-compose logs -f
# 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
# Check logs
docker-compose logs app
# Verify environment variables
docker-compose config
# Restart all services
docker-compose restart
# Check worker logs
docker-compose logs worker
# Verify FFmpeg is installed
docker exec vitransfer-worker ffmpeg -version
# Check disk space
df -h
ADMIN_EMAIL and ADMIN_PASSWORD in .envdocker-compose logs postgresclient_max_body_size in reverse proxyWe welcome contributions! ViTransfer is actively developed and we're looking for help to reach v1.0.
git checkout -b feature/amazing-featureSee CONTRIBUTING.mdโ for detailed guidelines.
This project is licensed under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (AGPL-3.0 license).
This means:
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.
If ViTransfer helps you in your work, consider supporting its development:
Your support helps fund:
Built with:
Made with โค๏ธ for filmmakers and video professionals
Content type
Image
Digest
sha256:f52965bf9โฆ
Size
761.2 MB
Last updated
4 months ago
docker pull crypt010/vitransfer