OpenLogs

All tools

Libredesk

Self-hosted customer support desk with a shared inbox for a team.

Replaces

Paid customer support desk services, such as Zendesk.

All open-source alternatives to Zendesk

Difficulty

Difficulty: Medium

3 services (2 database or broker: postgres, redis), 4 volume mounts, no env values to set, no elevated host access. Heuristic score 5 of 11: medium. A source checkout is needed, so the rating is at least medium.

Stack

Go (language), PostgreSQL (database), Redis (database)

Deployment

docker_compose

Requirements

Not stated.

License

AGPL-3.0 (OSI-approved open source)

Read from github.com/abhinavxd/libredesk/blob/5668a2a/LICENSE

Business model

Unknown

The README at the pinned commit does not state a business model, so it stays unknown.

Source: github.com/abhinavxd/libredesk/blob/5668a2a/README.md, read on .

Repository

abhinavxd/libredesk

GitHub stats

Stars
3,062
Forks
320
Open issues and pull requests
120
Last push
2026-10-22
Latest release
v2.9.0
Released
2026-10-22

From the GitHub API on . These numbers are a snapshot, not live. GitHub detected the license as AGPL-3.0.

Compose file

Config check passed docker compose config exited 0 on this exact file on 2026-10-22.
docker-compose.yml Version 1
services:
  # Libredesk app
  app:
    image: libredesk/libredesk:latest
    container_name: libredesk_app
    restart: unless-stopped
    ports:
      - "9000:9000"
    environment:
      # If the password is set during first docker-compose up, the system user password will be set to this value.
      # You can always set system user password later by running `docker exec -it libredesk_app ./libredesk --set-system-user-password`.
      LIBREDESK_SYSTEM_USER_PASSWORD: ${LIBREDESK_SYSTEM_USER_PASSWORD:-}
    networks:
      - libredesk
    depends_on:
      - db
      - redis
    volumes:
      - ./uploads:/libredesk/uploads:rw 
      - ./config.toml:/libredesk/config.toml
    command: [sh, -c, "./libredesk --install --idempotent-install --yes --config /libredesk/config.toml && ./libredesk --upgrade --yes --config /libredesk/config.toml && ./libredesk --config /libredesk/config.toml"]

  # PostgreSQL database
  db:
    image: postgres:17-alpine
    container_name: libredesk_db
    restart: unless-stopped
    networks:
      - libredesk
    ports:
      # Only bind on the local interface. To connect to Postgres externally, change this to 0.0.0.0
      - "127.0.0.1:5432:5432"
    environment:
      # Set these environment variables to configure the database, defaults to libredesk.
      POSTGRES_USER: ${POSTGRES_USER:-libredesk}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-libredesk} 
      POSTGRES_DB: ${POSTGRES_DB:-libredesk}
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-libredesk} -d ${POSTGRES_DB:-libredesk}"]
      interval: 10s
      timeout: 5s
      retries: 6
    volumes:
      - postgres-data:/var/lib/postgresql/data

  # Redis
  redis:
    image: redis:7-alpine
    container_name: libredesk_redis
    restart: unless-stopped
    ports:
      # Only bind on the local interface.
      - "127.0.0.1:6379:6379"
    networks:
      - libredesk
    volumes:
      - redis-data:/data

networks:
  libredesk:

volumes:
  postgres-data:
  redis-data:

From the app's own repository: github.com/abhinavxd/libredesk/blob/5668a2a/docker-compose.yml.

Compose file from abhinavxd/libredesk, used inside a checkout of that repository (documented setup B).

Install

  1. Docker with the Compose plugin and git (github.com/abhinavxd/libredesk/blob/5668a2a/README.md)

    A host with Docker, the Docker Compose plugin and git. This entry needs a checkout of the project repository.

  2. Get the source at commit 5668a2a (github.com/abhinavxd/libredesk/blob/5668a2a/README.md)
    git init libredesk
    cd libredesk
    git remote add origin https://github.com/abhinavxd/libredesk.git
    git fetch --depth 1 origin 5668a2a2c503b9304404d8f3620131b2990cbb99
    git checkout FETCH_HEAD
  3. The compose file in the checkout: docker-compose.yml (shown here for reading) (github.com/abhinavxd/libredesk/blob/5668a2a/docker-compose.yml)

    Use the compose file shown above.

  4. Copy config.sample.toml to config.toml (github.com/abhinavxd/libredesk/blob/5668a2a/README.md)
    cp config.sample.toml config.toml
  5. What the compose file check ran with (github.com/abhinavxd/libredesk/blob/5668a2a/README.md)

    The compose file check ran in a checkout of abhinavxd/libredesk at 5668a2a2c503b9304404d8f3620131b2990cbb99 (a sparse checkout: only the top-level files), after config.sample.toml was copied to config.toml. The README tells the reader to download docker-compose.yml and config.sample.toml, copy the sample to config.toml, edit it and run docker compose up -d.

  6. Start it (github.com/abhinavxd/libredesk/blob/5668a2a/README.md)
    docker compose up -d
  7. Open the app (github.com/abhinavxd/libredesk/blob/5668a2a/docker-compose.yml)

    Open http://localhost:9000. The compose file publishes host port 9000 for the app service. The README says to open this address and log in as the System user.

Compose file check: config_ok on 2026-10-22.

Gotchas and maintenance

Gotchas

Signals

  • Open issues and pull requests: 120
  • Last push: 2026-10-22 (0 days before this page was built)
  • Latest release: v2.9.0 on 2026-10-22 (0 days before this page was built)