diff --git a/docs/concepts/apps-and-services.md b/docs/concepts/apps-and-services.md index a4a5203e..a1d106a4 100644 --- a/docs/concepts/apps-and-services.md +++ b/docs/concepts/apps-and-services.md @@ -44,7 +44,7 @@ Two services, one endpoint, one app named after the directory. ## Lifecycle -Created when you (or the API) writes the compose file into `apps_dir//`. Updated when the file content changes (SHA-256 hash compare). Removed when the directory disappears: the next reconcile pass calls `docker compose down --remove-orphans`. Deploy history is recorded in the `compose_versions` and `deploy_events` tables (migration 009). +Created when you (or the API) writes the compose file into `apps_dir//`. Updated when the file content changes (SHA-256 hash compare). Removed when the directory disappears: the next reconcile pass calls `docker compose down --remove-orphans`. Named volumes are kept, on this path and on Delete (see [Archived apps](/operations/archived-apps/#difference-from-ui-delete)). Deploy history is recorded in the `compose_versions` and `deploy_events` tables (migration 009). ## App status values diff --git a/docs/first-deploy/ui.md b/docs/first-deploy/ui.md index 7d2baa64..de664f97 100644 --- a/docs/first-deploy/ui.md +++ b/docs/first-deploy/ui.md @@ -16,13 +16,13 @@ The fastest way to deploy if you already have the dashboard open. 3. The deploy wizard opens on a **Start** chooser with two primary options: - **Upload docker-compose file**: pick a `docker-compose.yml` from disk. - - **Build it yourself**: open the visual builder and add services, ports, env vars, and volumes step by step. You can switch to a raw YAML editor at any time. + - **Build it yourself**: open the visual builder and add services, ports, env vars, and volumes step by step. You can switch to a raw YAML editor at any time. Adding a service from a quick-start template (e.g. PostgreSQL) also creates the storage volume it needs; if that name is already used, a number is appended (e.g. `pgdata2`) so two services never share data. If you just want a quick start or an example to learn from, click **Browse templates** below the two options to pick a preconfigured app or service template. Templates ask you to pick an **Access mode** before continuing: - - **Quick test** (default): SimpleDeploy auto-generates a `..sslip.io` domain and issues a self-signed cert via Caddy's internal CA. No DNS setup needed. Browsers will warn about the certificate until you install the root cert from the **Trust** page on your SimpleDeploy server (`/trust` on the server URL). Best for trying a template in minutes on a homelab, LAN, or VPS without public DNS. + - **Quick test** (default): SimpleDeploy auto-generates a `..sslip.io` domain (templates with more than one web address get one per address, e.g. `minio..sslip.io` and `minio-console..sslip.io`) and issues a self-signed cert via Caddy's internal CA. No DNS setup needed. Browsers will warn about the certificate until you install the root cert from the **Trust** page on your SimpleDeploy server (`/trust` on the server URL). Best for trying a template in minutes on a homelab, LAN, or VPS without public DNS. - **Custom domain**: You supply a real public domain and point its DNS at the server. TLS is provisioned automatically via Let's Encrypt. Best for production. - **Port only**: Skips the Caddy proxy entirely. Docker picks a random host port; you reach the app at `http://:`. Disabled for multi-endpoint templates. Best for SSH-tunnel or LAN-only testing. diff --git a/docs/operations/archived-apps.md b/docs/operations/archived-apps.md index 659d3d02..9d5e8c3d 100644 --- a/docs/operations/archived-apps.md +++ b/docs/operations/archived-apps.md @@ -78,11 +78,13 @@ The **Delete** action on a live app is a full purge in one step: it tears down c The archive flow only triggers when the directory disappears **without** going through the Delete action: a manual `rm -rf`, a git sync pulling a delete, or any other out-of-band removal. The reasoning is that intentional UI deletes are deliberate; out-of-band removals are often accidents or git-driven config moves where preserving history is the safer default. -| Path | Containers | App dir | DB row | History | Tombstone | -|------|------------|---------|--------|---------|-----------| -| UI Delete | removed | removed | removed | removed | none | -| Filesystem removal | removed | already gone | retained (`archived_at` set) | retained | written | -| Purge from archive | already gone | already gone | removed | removed | removed | +| Path | Containers | App dir | DB row | History | Tombstone | Data volumes | +|------|------------|---------|--------|---------|-----------|--------------| +| UI Delete | removed | removed | removed | removed | none | kept | +| Filesystem removal | removed | already gone | retained (`archived_at` set) | retained | written | kept | +| Purge from archive | already gone | already gone | removed | removed | removed | kept | + +Containers are stopped with `docker compose down` (no `-v`), so named volumes (database files, uploads) are never deleted by SimpleDeploy. To free the space, delete them from the **Docker** page under **Networks & Volumes**, or run `docker volume rm` on the server. An app's volumes are named `simpledeploy-_`. ## Tombstone files diff --git a/docs/reference/cli-handwritten.md b/docs/reference/cli-handwritten.md index 1061fb14..87f3b621 100644 --- a/docs/reference/cli-handwritten.md +++ b/docs/reference/cli-handwritten.md @@ -55,7 +55,7 @@ Remove a deployed app. simpledeploy remove --name myapp ``` -Stops containers, removes network, deletes from store and apps directory. +Stops containers, removes network, deletes from store and apps directory. Named data volumes are kept; list them with `docker volume ls --filter name=simpledeploy-myapp_` and delete with `docker volume rm`. ### `simpledeploy list` diff --git a/ui/src/components/SettingsTab.svelte b/ui/src/components/SettingsTab.svelte index f58f5ab9..0d778f26 100644 --- a/ui/src/components/SettingsTab.svelte +++ b/ui/src/components/SettingsTab.svelte @@ -481,8 +481,8 @@ {#if showDanger}
-

- This will permanently remove {app?.Name} and all its data. +

+ Permanently removes {app?.Name}: its containers, configuration and history. Its data volumes (databases, uploaded files) are kept on the server.