NginxProxyManager / NginxProxyManager/nginx-proxy-manager

Custom SSL certificates deleted from GUI are not removed from container's persistent store

Open
#4,442 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug stale
Dominant language
TypeScript
Stars
34.2k
Forks
3.9k
Avg merge
21h 12m
Merged PRs (30d)
20

Description

Checklist

  • Have you pulled and found the error with jc21/nginx-proxy-manager:latest docker image?

    • Yes / No
  • Are you sure you're not using someone else's docker image?

    • Yes / No (jc21/nginx-proxy-manager:latest)
  • Have you searched for similar issues (both open and closed)?

    • Yes / No

Describe the bug

Deleting custom certificates in GUI does not remove the certificates from the persistent store (internal path /data/custom_ssl). Obsolete certificates also seem to be maintained in /data/database.sqlite.

Nginx Proxy Manager Version

Version 2.12.3 (c5a319c) 2025-03-12 00:21:07 UTC, OpenResty 1.27.1.1, debian 12 (bookworm), Certbot certbot 3.2.0

To Reproduce

This is my first time using nginx so I was faffing-about trying different key combinations. All up I added three server key-pairs plus two wildcard key-pairs before settling on the last wildcard and deleting the other four.

Steps to reproduce the behavior:

  1. Go to the SSL Certificates tab.
  2. Click Add SSL Certificate and choose Custom.
  3. Give the certificate a name, and import private key and certificate file.
  4. Repeat steps 1..3 one or more times.
  5. Delete some or all of the imported custom certificates.
  6. Inspect internal path /data/custom_ssl and note the number of npm-? subdirectories. It will reflect the total number of certificates ever imported, irrespective of whether they appear in the GUI or have been deleted.
  7. Count the number of rows in the certificate table of the database. It will reflect the total number of certificates ever imported, irrespective of whether they appear in the GUI or have been deleted.

Expected behavior

That when a certificate is deleted, it vanishes and becomes one with the snows of yesteryear.

Screenshots

Image

Operating System

Tried on both:

  • QEMU Virtual CPU version 2.5+ running Debian GNU/Linux 12.9 (bookworm) as full 64-bit OS (running on Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz running Debian GNU/Linux 12.9 (bookworm) as full 64-bit OS)

  • 8GB Raspberry Pi 4 Model B Rev 1.5 running Debian GNU/Linux 11.11 (bullseye) as full 64-bit OS

Additional context

Tried with both Safari and Chromium-Gost.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the deletion flow from the SSL Certificates tab, then trace how a custom certificate is removed from /data/custom_ssl and the certificate table in /data/database.sqlite. Done means deleted certificates no longer leave their npm-? directories or database rows, while retained certificates continue to work.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, sqlite, typescript
Domain
backend, databases
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.