Documentation

Self-hosted installation with Docker

From an empty Linux VM to a working portal. Roughly an hour, most of which is DNS and TLS rather than the application.

System requirements

Sizing
EmployeesvCPURAMDisk (no screenshots)Disk (screenshots, 30-day retention)
Up to 2524 GB40 GB~100 GB
Up to 10048 GB80 GB~280 GB
Up to 250816 GB160 GB~660 GB
  • Any Linux distribution with Docker Engine 24+ and the compose plugin.
  • A DNS record pointing at the host, for example hr.yourcompany.com.
  • A TLS certificate, or ports 80 and 443 open so the bundled proxy can obtain one.
  • An SMTP relay for notification email.

Install

# 1. unpack the stack supplied with your licence
tar xzf employeedesk-selfhosted.tar.gz
cd employeedesk

# 2. configure
nano .env

# 3. start
docker compose up -d

# 4. watch it come up
docker compose logs -f app

# 5. confirm
curl -fsS https://hr.yourcompany.com/api/health

Environment variables

The variables you must set in .env
VariablePurposeExample
MONGO_URIMongoDB connection string. The one variable you must get right.mongodb://db:27017/employeedesk
CLIENT_URLPublic URL of the portal. The desktop tracker is configured with this.https://hr.yourcompany.com
JWT_SECRETSigns session tokens. Generate a long random value per installation.(64 random characters)
PORTPort the application listens on behind your reverse proxy4002
SMTP_HOST / SMTP_PORT / SMTP_USER / SMTP_PASS / SMTP_FROMNotification and invitation emailsmtp.yourcompany.com
TRACKER_RETENTION_DAYSDays before screenshots are deleted30
TRACKER_SCREENSHOT_MIN_MIN / _MAX_MINRandomised capture interval, in minutes2 / 10
TRACKER_SHOW_SHOTS_TO_EMPLOYEEEmployees see their own captures. Leave this on.true
WORK_START_HOUR / WORK_START_MINUTE / LATE_GRACE_MINUTESDefault shift and grace window9 / 30 / 30
TZServer timezone, which attendance calculations useAsia/Kolkata

Set TZ before anyone marks attendance. Changing the server timezone after a month of records has been written means the shift comparisons for those records were made against a different reference. It is a fixable mess, but only if you notice.

TLS

The bundled reverse proxy will obtain and renew a certificate automatically if ports 80 and 443 reach the host. If you terminate TLS at an existing load balancer or corporate proxy instead, disable the bundled proxy and forward to the application container on its internal port, passing the usual forwarded headers.

First-run checklist

  1. Create the administrator accountThe first sign-up on a fresh installation becomes the administrator. Do this immediately after the stack is up.
  2. Set the company profile and timezoneCompany name, working days, and confirm the timezone matches the TZ variable.
  3. Configure shifts and leave typesBefore importing employees, so imported people land on the right policy.
  4. Import employeesCSV import from the admin area. Invitations go out over your configured SMTP relay, so test mail first.
  5. Set screenshot retentionEven if screenshots are off. Setting it now avoids the conversation happening after captures exist.
  6. Configure and test a backupFollow the backup guide and restore once into a scratch database. An untested backup is not a backup.

Health check

GET /api/health returns HTTP 200 with the application version, database connectivity and queue status. Point your monitoring at it.

Related

Frequently asked

Can we use an external MongoDB instance?

Yes. Point MONGO_URI at your existing MongoDB server or a managed instance such as Atlas, and remove the bundled db service from the stack. Nothing else changes.

Can we put screenshots in S3?

Yes. Set the storage driver to S3 and supply a bucket and credentials. This is the usual choice when disk growth on the application host is a concern.

Does it need to reach the internet?

Only for a licence check, or nothing at all with an offline licence file. Air-gapped installations use an offline licence file and images loaded from a tarball, and then make no outbound connection at all.

Something missing from the docs?

Tell us what you were looking for at support@employeedeskcrm.com and we will add it here.

  • 7-day trial
  • No credit card
  • Cancel anytime