docker.recipes

ProjectSend

intermediate

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:latest
4 container_name: projectsend
5 restart: unless-stopped
6 environment:
7 PUID: 1000
8 PGID: 1000
9 TZ: UTC
10 volumes:
11 - projectsend_config:/config
12 - projectsend_data:/data
13 ports:
14 - "80:80"
15 depends_on:
16 - mariadb
17 networks:
18 - projectsend
19
20 mariadb:
21 image: mariadb:10.11
22 container_name: projectsend-mariadb
23 restart: unless-stopped
24 environment:
25 MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
26 MARIADB_DATABASE: projectsend
27 MARIADB_USER: projectsend
28 MARIADB_PASSWORD: ${DB_PASSWORD}
29 volumes:
30 - mariadb_data:/var/lib/mysql
31 networks:
32 - projectsend
33
34volumes:
35 projectsend_config:
36 projectsend_data:
37 mariadb_data:
38
39networks:
40 projectsend:
41 driver: bridge

.env Template

.env
1DB_ROOT_PASSWORD=rootpassword
2DB_PASSWORD=projectsend

Usage Notes

  1. 1Docs: https://www.projectsend.org/documentation/
  2. 2Access at http://localhost - follow setup wizard (DB host: mariadb)
  3. 3Client-based sharing - create accounts for clients to access their files
  4. 4Email notifications when files uploaded/downloaded
  5. 5Group management for shared access
  6. 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 file
2cat > docker-compose.yml << 'EOF'
3services:
4 projectsend:
5 image: lscr.io/linuxserver/projectsend:latest
6 container_name: projectsend
7 restart: unless-stopped
8 environment:
9 PUID: 1000
10 PGID: 1000
11 TZ: UTC
12 volumes:
13 - projectsend_config:/config
14 - projectsend_data:/data
15 ports:
16 - "80:80"
17 depends_on:
18 - mariadb
19 networks:
20 - projectsend
21
22 mariadb:
23 image: mariadb:10.11
24 container_name: projectsend-mariadb
25 restart: unless-stopped
26 environment:
27 MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
28 MARIADB_DATABASE: projectsend
29 MARIADB_USER: projectsend
30 MARIADB_PASSWORD: ${DB_PASSWORD}
31 volumes:
32 - mariadb_data:/var/lib/mysql
33 networks:
34 - projectsend
35
36volumes:
37 projectsend_config:
38 projectsend_data:
39 mariadb_data:
40
41networks:
42 projectsend:
43 driver: bridge
44EOF
45
46# 2. Create the .env file
47cat > .env << 'EOF'
48DB_ROOT_PASSWORD=rootpassword
49DB_PASSWORD=projectsend
50EOF
51
52# 3. Start the services
53docker compose up -d
54
55# 4. View logs
56docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/projectsend/run | bash

Troubleshooting

  • 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