ProjectSend
Self-hosted file sharing application.
Overview
ProjectSend is a self-hosted file sharing application designed for professional client-file management scenarios where businesses need to securely distribute files to specific clients or groups. Originally developed as a PHP-based alternative to commercial file sharing services, ProjectSend emphasizes client management, permission controls, and branded file sharing portals that maintain professional appearance while providing detailed upload/download tracking and email notifications. This stack combines ProjectSend with MariaDB to provide a complete file sharing infrastructure where MariaDB handles user authentication, client management, file metadata, and activity logging while ProjectSend manages the web interface and file operations. The combination creates a robust client portal system that allows businesses to create individual client accounts, organize files by projects or groups, and maintain detailed audit trails of all file sharing activities. This setup is particularly valuable for creative agencies, consultants, legal firms, and any organization that needs to share confidential files with external clients while maintaining strict access controls and professional branding throughout the sharing experience.
Key Features
- Client-based file sharing with individual user accounts and customizable access permissions
- Branded file sharing portal with custom logos and company information for professional client presentation
- Email notification system that alerts clients when new files are uploaded and notifies administrators of downloads
- Group management functionality allowing multiple clients to access shared project folders with role-based permissions
- File upload progress tracking with detailed logging of all client interactions and download history
- MariaDB-powered user authentication with encrypted password storage and session management
- Admin dashboard with comprehensive client management tools and detailed usage statistics
- File expiration controls allowing administrators to set automatic removal dates for sensitive documents
Common Use Cases
- 1Creative agencies distributing project deliverables, proofs, and final assets to clients with branded portals
- 2Legal firms sharing confidential documents with clients while maintaining detailed access audit trails
- 3Consulting companies providing project reports and documentation to multiple stakeholder groups
- 4Accounting firms distributing tax documents and financial reports to business clients during tax season
- 5Marketing agencies sharing campaign assets, brand guidelines, and promotional materials with client teams
- 6Software development companies delivering builds, documentation, and project artifacts to client organizations
- 7Architecture and engineering firms sharing blueprints, CAD files, and project documentation with contractors and clients
Prerequisites
- Docker and Docker Compose installed with at least 1.5GB RAM available for MariaDB operations
- Port 80 available on the host system for ProjectSend web interface access
- Environment variables configured for DB_ROOT_PASSWORD and DB_PASSWORD with strong passwords
- Basic understanding of client-server file sharing concepts and user permission management
- SMTP server details available if email notifications for file sharing activities are required
- Domain name or static IP address for professional client access (recommended for production use)
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 projectsend: 3 image: lscr.io/linuxserver/projectsend:latest4 container_name: projectsend5 restart: unless-stopped6 environment: 7 PUID: 10008 PGID: 10009 TZ: UTC10 volumes: 11 - projectsend_config:/config12 - projectsend_data:/data13 ports: 14 - "80:80"15 depends_on: 16 - mariadb17 networks: 18 - projectsend1920 mariadb: 21 image: mariadb:10.1122 container_name: projectsend-mariadb23 restart: unless-stopped24 environment: 25 MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}26 MARIADB_DATABASE: projectsend27 MARIADB_USER: projectsend28 MARIADB_PASSWORD: ${DB_PASSWORD}29 volumes: 30 - mariadb_data:/var/lib/mysql31 networks: 32 - projectsend3334volumes: 35 projectsend_config: 36 projectsend_data: 37 mariadb_data: 3839networks: 40 projectsend: 41 driver: bridge.env Template
.env
1DB_ROOT_PASSWORD=rootpassword2DB_PASSWORD=projectsendUsage Notes
- 1Docs: https://www.projectsend.org/documentation/
- 2Access at http://localhost - follow setup wizard (DB host: mariadb)
- 3Client-based sharing - create accounts for clients to access their files
- 4Email notifications when files uploaded/downloaded
- 5Group management for shared access
- 6Good for agencies sharing files with clients
Individual Services(2 services)
Copy individual services to mix and match with your existing compose files.
projectsend
projectsend:
image: lscr.io/linuxserver/projectsend:latest
container_name: projectsend
restart: unless-stopped
environment:
PUID: 1000
PGID: 1000
TZ: UTC
volumes:
- projectsend_config:/config
- projectsend_data:/data
ports:
- "80:80"
depends_on:
- mariadb
networks:
- projectsend
mariadb
mariadb:
image: mariadb:10.11
container_name: projectsend-mariadb
restart: unless-stopped
environment:
MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
MARIADB_DATABASE: projectsend
MARIADB_USER: projectsend
MARIADB_PASSWORD: ${DB_PASSWORD}
volumes:
- mariadb_data:/var/lib/mysql
networks:
- projectsend
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 projectsend:5 image: lscr.io/linuxserver/projectsend:latest6 container_name: projectsend7 restart: unless-stopped8 environment:9 PUID: 100010 PGID: 100011 TZ: UTC12 volumes:13 - projectsend_config:/config14 - projectsend_data:/data15 ports:16 - "80:80"17 depends_on:18 - mariadb19 networks:20 - projectsend2122 mariadb:23 image: mariadb:10.1124 container_name: projectsend-mariadb25 restart: unless-stopped26 environment:27 MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}28 MARIADB_DATABASE: projectsend29 MARIADB_USER: projectsend30 MARIADB_PASSWORD: ${DB_PASSWORD}31 volumes:32 - mariadb_data:/var/lib/mysql33 networks:34 - projectsend3536volumes:37 projectsend_config:38 projectsend_data:39 mariadb_data:4041networks:42 projectsend:43 driver: bridge44EOF4546# 2. Create the .env file47cat > .env << 'EOF'48DB_ROOT_PASSWORD=rootpassword49DB_PASSWORD=projectsend50EOF5152# 3. Start the services53docker compose up -d5455# 4. View logs56docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/projectsend/run | bashTroubleshooting
- Database connection failed during setup: Ensure MariaDB container is fully started by checking logs with 'docker logs projectsend-mariadb' before running ProjectSend setup wizard
- ProjectSend setup wizard shows database errors: Verify environment variables DB_PASSWORD matches between both containers and database name is exactly 'projectsend'
- File uploads failing or timing out: Increase PHP upload limits by mounting custom php.ini with higher upload_max_filesize and post_max_size values to ProjectSend container
- Email notifications not working: Configure SMTP settings in ProjectSend admin panel and verify firewall allows outbound connections on SMTP ports
- Client login issues after initial setup: Check MariaDB logs for authentication errors and ensure client accounts are properly created through ProjectSend admin interface
- Permission denied errors on file access: Verify PUID and PGID environment variables match the ownership of mounted volumes on the host system
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Ad Space
Shortcuts: C CopyF FavoriteD Download