Files
ServerKit/backend/app
Juan DenisandClaude Opus 5 a9d72ef7d3 fix(recycle-bin): restore a domain through write_app_vhost, not create_site
The teardown map for delete_domain landed after the hook shipped and found a
real hole in it.

When the deleted domain was the app's LAST one, delete_domain runs
disable_site() + delete_site() -- the sites-enabled SYMLINK is gone, not just
the server_name. The hook called NginxService.create_site and reloaded, which
rewrites the file and leaves it UNSERVED. Restoring the last domain of an app
looked like it worked and served nothing.

SiteDomainService.write_app_vhost is the correct seam and fixes three things at
once:

  1. it calls enable_site, so the symlink comes back;
  2. app_vhost_kwargs re-attaches a covering wildcard cert and the micro-cache
     flag -- a bare create_site drops both, so a restored site would silently
     fall back to plain HTTP;
  3. it handles every host-nginx app type. delete_domain only touches nginx for
     docker apps, so php/static/flask/wordpress vhosts still list the deleted
     domain; the rewrite is idempotent, so running it there repairs the
     asymmetry rather than preserving it.

New test pins the case that was broken -- restoring an app's only domain must
call BOTH create_site and enable_site -- and it fails against the previous
implementation.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 08:19:35 -04:00
..