Peppermint - A Minimalist Open-Source Service Desk for Homelabs

A fantastic ticketing portal for home labs

If you've ever wanted a lightweight, email-based ticketing system without diving into the complexity of full ITSM suites like GLPI or OTRS, Peppermint is worth a look. It's an open-source helpdesk platform that focuses on simplicity, offering clean email-to-ticket workflows, web UI ticket management, and optional OIDC SSO.

For small businesses, makerspaces, or homelab enthusiasts, Peppermint provides enough structure to securely manage incoming requests, service issues, or project discussions without overkill features like change or asset management.


Features

  • Email-based ticketing: users can simply email a support address, and Peppermint automatically creates and tracks tickets.
  • UI: clean and responsive interface for managing tickets, agents, and users.
  • OIDC SSO support: integrates neatly with existing identity providers (Keycloak, Authentik, etc.).
  • Webhook capability: enables easy automation; for example, triggering n8n/Home Assistant automations, Discord alerts, or scripts when new tickets are created.
  • Minimal footprint: runs easily via Docker Compose, ideal for a Raspberry Pi, small VM, or Proxmox container.

Docker Compose:

version: "3.1"
 
services:
  peppermint_postgres:
    container_name: peppermint_postgres
    image: postgres:latest
    restart: always
    volumes:
      - pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: peppermint
      POSTGRES_PASSWORD: 1234
      POSTGRES_DB: peppermint
 
  peppermint:
    container_name: peppermint
    image: pepperlabs/peppermint:latest
    ports:
      - 3000:3000
      - 5003:5003
    restart: always
    depends_on:
      - peppermint_postgres
    environment:
      DB_USERNAME: "peppermint"
      DB_PASSWORD: "1234"
      DB_HOST: "peppermint_postgres"
      SECRET: 'peppermint4life'
 
volumes:
  pgdata:

Once deployed, access Peppermint via http://<your-server-ip>:3000 and complete the setup through the web interface. The default creds are [email protected] and 1234.


Extending Peppermint with Webhooks

Because it supports webhooks, Peppermint can easily integrate into your automation ecosystem. The example below is used to automatically post a message to a Discord channel every time a new ticket is created.

You'll need a Discord webhook URL, which can be generated from any channel’s Integrations > Webhooks menu.

Create a simple bridge script like this:

# peppermint_webhook_relay.py
from flask import Flask, request
import requests
import os

app = Flask(__name__)
DISCORD_WEBHOOK = os.getenv("DISCORD_WEBHOOK")

@app.route("/peppermint", methods=["POST"])
def peppermint_webhook():
    data = request.json
    title = data.get("title", "New Ticket")
    description = data.get("description", "No description provided.")
    ticket_id = data.get("id", "Unknown")

    message = {
        "embeds": [
            {
                "title": f"🎫 New Ticket #{ticket_id}: {title}",
                "description": description,
                "color": 16377819
            }
        ]
    }

    requests.post(DISCORD_WEBHOOK, json=message)
    return "ok", 200

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8080)

Then run it (or containerise it) on the same network as Peppermint:

export DISCORD_WEBHOOK="https://discord.com/api/webhooks/..."
python3 peppermint_webhook_relay.py

In Peppermint's Webhook Settings, set the target URL to:

http://<your-server-ip>:8080/peppermint

Now, whenever a new ticket is created, a Discord embed will appear instantly.


Peppermint sits nicely between "too simple" and "too complex." It's perfect for structured support management without the baggage of enterprise ITSM tools.