Skip to content

Deploying a UVdesk App

Introduction

UVdesk is a Symfony-based helpdesk platform for managing support tickets, email piping, and knowledge bases. This guide shows how to containerize UVdesk with a Dockerfile, connect it to a managed database and mail provider, persist uploads, and deploy it to Klutch.sh over HTTP.

Prerequisites

  • GitHub repository containing your Dockerfile.
  • Managed MySQL/PostgreSQL instance (or a separate Klutch.sh database app).
  • Mail provider DSN for outgoing notifications.
  • Klutch.sh project ready in klutch.sh/app.

Project structure

.
└── Dockerfile

Sample Dockerfile

FROM uvdesk/uvdesk:latest
# Default Apache port
ENV APACHE_HTTP_PORT=80
EXPOSE 80

Required environment variables

  • DATABASE_URL – e.g., mysql://USER:PASSWORD@HOST:3306/uvdesk?serverVersion=8.0
  • APP_SECRET – strong random string for Symfony.
  • APP_ENV=prod
  • MAILER_DSN – e.g., smtp://USER:PASSWORD@HOST:587
  • UV_DESK_SITE_URL – public URL, e.g., https://example-app.klutch.sh

Optional environment variables

  • APACHE_HTTP_PORT – override internal port if needed.
  • UV_DESK_TIMEZONE – default timezone (e.g., UTC).
  • UV_DESK_LOCALE – default locale (e.g., en).

Persistence

Persist tickets, attachments, and cached data on a volume:

  • Mount path: /var/www/uvdesk/public/uploads
  • Size: choose based on expected attachment volume

Networking

  • Protocol: HTTP
  • Internal port: 80
  • Users reach https://example-app.klutch.sh while Klutch.sh routes to port 80 inside the container.
Terminal window
curl -I http://localhost

Deployment on Klutch.sh

  1. Push your Dockerfile to GitHub.
  2. In klutch.sh/app, create a new app and select GitHub as the source.
  3. Klutch.sh automatically detects the Dockerfile in the repository root.
  4. Select HTTP traffic and set the internal port to 80.
  5. Add environment variables for DATABASE_URL, APP_SECRET, APP_ENV, MAILER_DSN, and UV_DESK_SITE_URL. Mark secrets as sensitive.
  6. Attach a persistent volume at /var/www/uvdesk/public/uploads sized for ticket attachments.
  7. Deploy. Complete the web installer to finalize database schema, admin user, and mail settings.

Verification

  • UI: open https://example-app.klutch.sh and confirm the installer or login screen appears.

  • Quick check:

    Terminal window
    curl -I https://example-app.klutch.sh

Next steps

  • Enable database backups and attachment backups for the mounted volume.
  • Configure cron or scheduled jobs inside UVdesk for email fetching if required.
  • Set strong admin credentials and rotate secrets regularly.