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.