# Revolutionize Your File Sharing Workflow: Unleash the Potential of ProjectSend with a Docker-Powered, Database-Integrated Setup

**URL:** <https://forum.hhf.technology/t/revolutionize-your-file-sharing-workflow-unleash-the-potential-of-projectsend-with-a-docker-powered-database-integrated-setup/370>\
**Category:** Self-hosted Applications\
**Tags:** docker-compose, alpine, mariadb, projectsend, traefik\
**Created:** [November 7, 2024, 9:04am UTC](https://forum.hhf.technology/t/revolutionize-your-file-sharing-workflow-unleash-the-potential-of-projectsend-with-a-docker-powered-database-integrated-setup/370 "2024-11-07T09:04:12Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![hhf.technoloy](https://forum.hhf.technology/user_avatar/forum.hhf.technology/hhf.technoloy/32/68_2.png) [@hhf.technoloy](https://forum.hhf.technology/u/hhf.technoloy)\
**Post date:** [November 7, 2024, 9:04am UTC](https://forum.hhf.technology/t/revolutionize-your-file-sharing-workflow-unleash-the-potential-of-projectsend-with-a-docker-powered-database-integrated-setup/370/1 "2024-11-07T09:04:12Z")

</div>

The ProjectSend application, developed by [LinuxServer.io](http://LinuxServer.io), serves as a powerful file-sharing solution. However, it does not include built-in database configuration options. Users might consider setting up a separate database instance to support ProjectSend alongside other services, but this may not be the best choice for those looking for a fully integrated, turnkey Docker deployment.

Fortunately, there’s an effective workaround. By adding a dedicated database container to the Docker Compose configuration, you can establish a complete application stack without relying on external database management.

In this setup, I’ve integrated a MariaDB database container into the Docker Compose file. This addition streamlines deployment and ensures that each Docker Compose configuration delivers a fully operational application with all necessary components. Although this method may require slightly more resources (in terms of memory and CPU), it aligns with my preference for self-contained and easily recoverable application stacks.

To enhance the ProjectSend deployment further, I’ve included several Traefik labels. These labels facilitate HTTPS termination, allowing secure access to the application via a URL like `https://shares.yourdomain.com`. This setup assumes that Traefik is correctly configured and running, along with a Docker network named “web” to enable communication between containers.

```yaml
labels:
      - traefik.enable=true
      - traefik.http.routers.projectsend.rule=Host(`shares.yourdomain.com`)
      - traefik.http.routers.projectsend.service=projectsend
      - traefik.http.routers.projectsend.entrypoints=websecure
      - traefik.http.services.projectsend.loadbalancer.server.port=80
      - traefik.http.routers.projectsend.tls=true
      - traefik.http.routers.projectsend.tls.certresolver=myresolver
      - traefik.docker.network=web

```

When deploying this stack, keep the following key considerations in mind:

- Ensure that the database connection details (such as container name and credentials) are accurately configured to meet ProjectSend’s requirements.
- Confirm that the application’s base URL is set to the HTTPS address, as ProjectSend defaults to HTTP.
- For email configuration, use a Gmail account with an app-specific password for reliable email delivery.

By adhering to these guidelines, you can successfully deploy a self-contained, HTTPS-enabled ProjectSend solution using Docker Compose, complete with a dedicated database container for an efficient and robust file-sharing platform.

Here’s the complete Docker Compose configuration:

```yaml
version: '3'
services:
  projectsend:
    image: linuxserver/projectsend
    container_name: projectsend
    environment:
      - PUID=998
      - PGID=100
      - TZ=Etc/UTC
      - MAX_UPLOAD=5000
    volumes:
      - /docker/projectsend/config:/config #Config Volume Goes Here
      - /docker/projectsend/data:/data #File Storage Volume Goes Here
    ports:
      - 8010:80      
    networks:
      - web      
    restart: unless-stopped    

  db:
    image: yobasystems/alpine-mariadb:10.11.6
    container_name: mariadb-projectsend
    healthcheck:
            test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
            interval: 5s
            timeout: 5s
            retries: 50      
    environment:
      - MYSQL_ROOT_PASSWORD=yourpassword
      - MYSQL_DATABASE=projectsend
      - MYSQL_USER=projectsend-user
      - MYSQL_PASSWORD=yourpassword
      - TZ=Etc/UTC
    volumes:
      - /docker/projectsend/database:/var/lib/mysql #Database Volume Goes Here
    command:
      - '--default-authentication-plugin=mysql_native_password'
  
    networks:
      - web
    restart: unless-stopped
    
networks:
  web:
    external: true

```

This configuration will help you set up a robust file-sharing solution tailored to your needs.
