diff --git a/docs/architecture/overview.md b/docs/architecture/overview.md index 1a375db..731d6b0 100644 --- a/docs/architecture/overview.md +++ b/docs/architecture/overview.md @@ -3,8 +3,6 @@ title: Architecture overview description: Single-binary process layout with embedded Caddy, SQLite, channel-based metrics pipeline, and custom Caddy modules. --- -import { Aside } from '@astrojs/starlight/components'; - ## One process, many goroutines SimpleDeploy is a single Go binary. There is no agent, no sidecar, no separate proxy process. Caddy runs as an in-process library, not a child process. SQLite is the only datastore. Everything else is a goroutine inside one PID. diff --git a/docs/architecture/proxy.md b/docs/architecture/proxy.md index 1782507..36fee77 100644 --- a/docs/architecture/proxy.md +++ b/docs/architecture/proxy.md @@ -3,8 +3,6 @@ title: Proxy (embedded Caddy) description: How buildConfig() composes Caddy JSON, custom modules plug in, and TLS modes map to automation policies. --- -import { Aside } from '@astrojs/starlight/components'; - Caddy runs in-process as a library. There is no Caddyfile. All config is JSON, built programmatically and pushed via `caddy.Load()`. Source: [/internal/proxy/](https://github.com/vazra/simpledeploy/tree/main/internal/proxy). ## Lifecycle diff --git a/docs/architecture/reconciler.md b/docs/architecture/reconciler.md index e5acddb..c556a72 100644 --- a/docs/architecture/reconciler.md +++ b/docs/architecture/reconciler.md @@ -3,8 +3,6 @@ title: Reconciler description: Tick loop, hash-based change detection, concurrency cap, and deploy event lifecycle. --- -import { Aside } from '@astrojs/starlight/components'; - The reconciler is the only component allowed to mutate Docker state. Everything else writes a file or a row and lets the loop converge. Source: [/internal/reconciler/reconciler.go](https://github.com/vazra/simpledeploy/blob/main/internal/reconciler/reconciler.go) and [/internal/reconciler/watcher.go](https://github.com/vazra/simpledeploy/blob/main/internal/reconciler/watcher.go). ## Trigger model diff --git a/docs/concepts/apps-and-services.md b/docs/concepts/apps-and-services.md index 38d79e2..b2a9f7b 100644 --- a/docs/concepts/apps-and-services.md +++ b/docs/concepts/apps-and-services.md @@ -3,8 +3,6 @@ title: Apps and services description: The SimpleDeploy mental model: an app is a Compose project, a service is a container in that project. --- -import { Aside } from '@astrojs/starlight/components'; - ## Definitions **App.** A Compose project managed by SimpleDeploy. Lives at `apps_dir//docker-compose.yml`. Has exactly one slug, one directory, one project name. diff --git a/docs/concepts/endpoints-and-routing.md b/docs/concepts/endpoints-and-routing.md index df49101..af5a13a 100644 --- a/docs/concepts/endpoints-and-routing.md +++ b/docs/concepts/endpoints-and-routing.md @@ -3,8 +3,6 @@ title: Endpoints and routing description: How endpoints map (domain, service, port, TLS) to Caddy routes inside the embedded proxy. --- -import { Aside } from '@astrojs/starlight/components'; - An **endpoint** is a tuple: `(domain, service, port, tls_mode)`. One app can declare multiple endpoints. Each endpoint becomes one Caddy route. Caddy receives all inbound traffic on `:80` and `:443` and matches by `Host` header. ## Declaring endpoints diff --git a/docs/concepts/how-it-works.md b/docs/concepts/how-it-works.md index 9b3ddc3..0db9fab 100644 --- a/docs/concepts/how-it-works.md +++ b/docs/concepts/how-it-works.md @@ -3,8 +3,6 @@ title: How it works description: A request walkthrough from compose file edit to first byte served, covering reconciler, deployer, and embedded Caddy. --- -import { Aside } from '@astrojs/starlight/components'; - Follow one request from "I edited a YAML file" to "the browser got bytes." ## The path diff --git a/docs/concepts/overview.md b/docs/concepts/overview.mdx similarity index 97% rename from docs/concepts/overview.md rename to docs/concepts/overview.mdx index 1c2add0..4546035 100644 --- a/docs/concepts/overview.md +++ b/docs/concepts/overview.mdx @@ -3,7 +3,7 @@ title: What is SimpleDeploy description: One-page primer on what SimpleDeploy manages and how state flows from compose files to running containers. --- -import { Card, CardGrid, Aside } from '@astrojs/starlight/components'; +import { Aside, Card, CardGrid } from '@astrojs/starlight/components'; SimpleDeploy is a single Go binary that runs on one Linux box and manages Docker Compose apps for you. It owns the reverse proxy (embedded Caddy), TLS certificates, metrics, alerts, scheduled backups, and a small dashboard. No agent, no cluster, no control plane. diff --git a/docs/concepts/reconciler.md b/docs/concepts/reconciler.md index 42b50cb..9e05797 100644 --- a/docs/concepts/reconciler.md +++ b/docs/concepts/reconciler.md @@ -3,8 +3,6 @@ title: Desired-state reconciler description: How the reconciler converges Docker state to match the apps directory and SQLite store. --- -import { Aside } from '@astrojs/starlight/components'; - SimpleDeploy is declarative. You describe what you want (compose files in `apps_dir/`, rows in SQLite), and the reconciler keeps Docker matching. Same model as Kubernetes, smaller scope. ## Two states diff --git a/docs/concepts/state-and-storage.md b/docs/concepts/state-and-storage.md index 62dd8d6..d4c3c74 100644 --- a/docs/concepts/state-and-storage.md +++ b/docs/concepts/state-and-storage.md @@ -3,8 +3,6 @@ title: State and storage description: What SimpleDeploy stores, where it lives on disk, and how to back it up. --- -import { Aside } from '@astrojs/starlight/components'; - SimpleDeploy keeps state in three places: a SQLite database, an apps directory, and Caddy's own storage for ACME certs. Backups go anywhere you point them. ## Layout diff --git a/docs/contributing/docs-style.md b/docs/contributing/docs-style.mdx similarity index 95% rename from docs/contributing/docs-style.md rename to docs/contributing/docs-style.mdx index 91f053e..ceead38 100644 --- a/docs/contributing/docs-style.md +++ b/docs/contributing/docs-style.mdx @@ -3,6 +3,8 @@ title: Writing docs description: House style for SimpleDeploy docs: markdown layout, components, screenshots, and cross-links. --- +import { Aside, Card, CardGrid, Steps, TabItem, Tabs } from '@astrojs/starlight/components'; + The docs site is Astro Starlight. Markdown source lives in `docs/`. The site config and any interactive content live in `docs-site/`. A sync script copies `docs/**/*.md` into `docs-site/src/content/docs/` at build time. ## Source files diff --git a/docs/first-deploy/admin.md b/docs/first-deploy/admin.mdx similarity index 96% rename from docs/first-deploy/admin.md rename to docs/first-deploy/admin.mdx index e8b86c5..3d98303 100644 --- a/docs/first-deploy/admin.md +++ b/docs/first-deploy/admin.mdx @@ -3,7 +3,7 @@ title: Create the admin user description: First-time setup: create the super-admin via the web wizard or the CLI, then issue an API key for remote access. --- -import { Tabs, TabItem, Steps, Aside } from '@astrojs/starlight/components'; +import { Aside, Steps, TabItem, Tabs } from '@astrojs/starlight/components'; The first time SimpleDeploy starts with no users in the database, it shows a setup wizard. You have two paths. diff --git a/docs/first-deploy/cli.md b/docs/first-deploy/cli.md index 3d1989b..5b08914 100644 --- a/docs/first-deploy/cli.md +++ b/docs/first-deploy/cli.md @@ -3,8 +3,6 @@ title: Deploy via the CLI description: Use simpledeploy apply from your laptop or CI to push compose files to a remote server. Contexts work like kubectl. --- -import { Aside, Steps, Tabs, TabItem } from '@astrojs/starlight/components'; - The CLI runs in two modes. | Mode | When | How it works | diff --git a/docs/first-deploy/compose.md b/docs/first-deploy/compose.md index f124c93..912384d 100644 --- a/docs/first-deploy/compose.md +++ b/docs/first-deploy/compose.md @@ -3,8 +3,6 @@ title: Write a docker-compose.yml description: Walk-through of writing a Compose file with simpledeploy.* labels for routing, TLS, and multi-service apps. Uses whoami as the example. --- -import { Aside, Steps, FileTree } from '@astrojs/starlight/components'; - A SimpleDeploy app is a regular `docker-compose.yml` with a few extra labels under the `simpledeploy.*` namespace. Existing compose files work as-is once you add labels for routing. ## Minimal example diff --git a/docs/first-deploy/config.md b/docs/first-deploy/config.md index 3bb9139..432d202 100644 --- a/docs/first-deploy/config.md +++ b/docs/first-deploy/config.md @@ -3,8 +3,6 @@ title: Generate config description: Run simpledeploy init, edit the YAML, and set the three required fields (domain, master_secret, tls.email). --- -import { Steps, Aside } from '@astrojs/starlight/components'; - SimpleDeploy reads its config from `/etc/simpledeploy/config.yaml` by default. Generate a starter file, then edit three things. ## Generate diff --git a/docs/first-deploy/prepare.md b/docs/first-deploy/prepare.md index 821fb3c..3245ba0 100644 --- a/docs/first-deploy/prepare.md +++ b/docs/first-deploy/prepare.md @@ -3,8 +3,6 @@ title: Prepare the server description: What you need before installing SimpleDeploy. VPS sizing, Docker, firewall ports, and DNS records. --- -import { Aside, Steps } from '@astrojs/starlight/components'; - Five minutes of prep saves an hour of debugging later. ## Pick a VPS diff --git a/docs/first-deploy/ui.md b/docs/first-deploy/ui.md index 4e1c82f..c42f13c 100644 --- a/docs/first-deploy/ui.md +++ b/docs/first-deploy/ui.md @@ -3,8 +3,6 @@ title: Deploy via the dashboard description: Use the web UI to add a service, paste your compose file, deploy, and watch live logs stream. --- -import { Steps, Aside } from '@astrojs/starlight/components'; - The fastest way to deploy if you already have the dashboard open. diff --git a/docs/first-deploy/verify.md b/docs/first-deploy/verify.md index 8c5f342..1e2d33b 100644 --- a/docs/first-deploy/verify.md +++ b/docs/first-deploy/verify.md @@ -3,8 +3,6 @@ title: Verify the deployment description: Confirm the app is running, HTTPS works, logs stream, metrics flow, and set up your first alert. --- -import { Steps, Aside } from '@astrojs/starlight/components'; - Five checks to make sure the deploy actually worked. diff --git a/docs/guides/access-control.md b/docs/guides/access-control.md index 889a45d..27b40e9 100644 --- a/docs/guides/access-control.md +++ b/docs/guides/access-control.md @@ -3,8 +3,6 @@ title: IP access control description: Restrict which client IPs can reach an app with simpledeploy.access.allow. Allowlist-only, default-allow when empty, 404 for blocked IPs. --- -import { Tabs, TabItem, Aside } from '@astrojs/starlight/components'; - Restrict which client IPs reach an app with the `simpledeploy.access.allow` label. Useful for admin panels, internal APIs, geo-pinning to known office IPs, or staging environments. ## Semantics diff --git a/docs/guides/api-keys.md b/docs/guides/api-keys.mdx similarity index 97% rename from docs/guides/api-keys.md rename to docs/guides/api-keys.mdx index 13e4f90..de36ae0 100644 --- a/docs/guides/api-keys.md +++ b/docs/guides/api-keys.mdx @@ -3,7 +3,7 @@ title: API keys description: Create sd_-prefixed API keys for the CLI and automation. Keys inherit the creator's permissions and are shown once. --- -import { Tabs, TabItem, Aside, Steps } from '@astrojs/starlight/components'; +import { Aside, Steps, TabItem, Tabs } from '@astrojs/starlight/components'; API keys authenticate the CLI, CI pipelines, and any HTTP client against the management API. Format: `sd_` followed by 64 hex characters. diff --git a/docs/guides/audit-log.md b/docs/guides/audit-log.mdx similarity index 97% rename from docs/guides/audit-log.md rename to docs/guides/audit-log.mdx index 4600ad9..e322fbf 100644 --- a/docs/guides/audit-log.md +++ b/docs/guides/audit-log.mdx @@ -3,7 +3,7 @@ title: Audit log description: View, filter, and export the activity log. Track config changes, deploys, auth events, and system actions across all apps. --- -import { Tabs, TabItem, Aside } from '@astrojs/starlight/components'; +import { Aside, TabItem, Tabs } from '@astrojs/starlight/components'; Every action in SimpleDeploy is recorded in a persistent activity log. Use it for incident review, compliance evidence, or just to check who deployed what. diff --git a/docs/guides/custom-certs.md b/docs/guides/custom-certs.mdx similarity index 97% rename from docs/guides/custom-certs.md rename to docs/guides/custom-certs.mdx index cde2673..1ff7580 100644 --- a/docs/guides/custom-certs.md +++ b/docs/guides/custom-certs.mdx @@ -3,7 +3,7 @@ title: Custom certificates description: Upload your own PEM certificate and key for an app endpoint. Use for corporate CAs, mTLS, or certs managed elsewhere. --- -import { Tabs, TabItem, Aside, Steps } from '@astrojs/starlight/components'; +import { Aside, Steps, TabItem, Tabs } from '@astrojs/starlight/components'; Use a custom certificate when Let's Encrypt won't work for you: corporate CA, internal-only domain, mTLS, or a cert issued by an external ACME tool. diff --git a/docs/guides/env-vars.md b/docs/guides/env-vars.mdx similarity index 97% rename from docs/guides/env-vars.md rename to docs/guides/env-vars.mdx index ea6cc8c..3f26850 100644 --- a/docs/guides/env-vars.md +++ b/docs/guides/env-vars.mdx @@ -3,7 +3,7 @@ title: Environment variables and secrets description: Set per-app environment variables via the UI, CLI, or API. Keep secrets out of compose files using a managed .env file. --- -import { Tabs, TabItem, Aside } from '@astrojs/starlight/components'; +import { Aside, TabItem, Tabs } from '@astrojs/starlight/components'; Three places env vars can come from for an app: diff --git a/docs/guides/rate-limiting.md b/docs/guides/rate-limiting.md index 5e5721c..76c4c0b 100644 --- a/docs/guides/rate-limiting.md +++ b/docs/guides/rate-limiting.md @@ -3,8 +3,6 @@ title: Rate limiting description: Per-app rate limits via compose labels. Limit by IP, header value, or path. Returns 429 with Retry-After when tripped. --- -import { Tabs, TabItem, Aside } from '@astrojs/starlight/components'; - Rate limiting is per-app, configured with `simpledeploy.ratelimit.*` labels on any service in the compose file. ## Labels diff --git a/docs/guides/registries.md b/docs/guides/registries.mdx similarity index 97% rename from docs/guides/registries.md rename to docs/guides/registries.mdx index baf065a..4ef7616 100644 --- a/docs/guides/registries.md +++ b/docs/guides/registries.mdx @@ -3,7 +3,7 @@ title: Private registries description: Add credentials for ghcr.io, Docker Hub, AWS ECR, Azure ACR, or any registry. Encrypted at rest with master_secret. --- -import { Tabs, TabItem, Aside } from '@astrojs/starlight/components'; +import { Aside, TabItem, Tabs } from '@astrojs/starlight/components'; Add credentials so SimpleDeploy can pull private images. Credentials are encrypted with AES-256-GCM derived from `master_secret` before being stored. diff --git a/docs/guides/scaling.md b/docs/guides/scaling.mdx similarity index 98% rename from docs/guides/scaling.md rename to docs/guides/scaling.mdx index 1ed0e20..5e22f05 100644 --- a/docs/guides/scaling.md +++ b/docs/guides/scaling.mdx @@ -3,7 +3,7 @@ title: Scaling services description: Run multiple replicas of a compose service on the same host. Useful for stateless web/worker tiers, with caveats for stateful services. --- -import { Tabs, TabItem, Aside } from '@astrojs/starlight/components'; +import { Aside, TabItem, Tabs } from '@astrojs/starlight/components'; Run more than one replica of a compose service. SimpleDeploy shells out to `docker compose up --scale` and the built-in proxy round-robins requests across the replicas. diff --git a/docs/guides/tls.md b/docs/guides/tls.mdx similarity index 97% rename from docs/guides/tls.md rename to docs/guides/tls.mdx index 798e357..8d424ca 100644 --- a/docs/guides/tls.md +++ b/docs/guides/tls.mdx @@ -3,7 +3,7 @@ title: TLS and HTTPS description: Pick the right TLS mode for SimpleDeploy. Auto Let's Encrypt, custom certs, off (behind LB), or local CA, configured globally and per-endpoint. --- -import { Tabs, TabItem, Aside, Steps } from '@astrojs/starlight/components'; +import { Aside, Steps, TabItem, Tabs } from '@astrojs/starlight/components'; SimpleDeploy embeds Caddy. TLS is configured globally for the management UI and per-endpoint for each app. diff --git a/docs/guides/users-roles.md b/docs/guides/users-roles.mdx similarity index 98% rename from docs/guides/users-roles.md rename to docs/guides/users-roles.mdx index a965651..ab28e2b 100644 --- a/docs/guides/users-roles.md +++ b/docs/guides/users-roles.mdx @@ -3,7 +3,7 @@ title: Users and roles description: Create users with role-based access (super_admin, manage, viewer) and scope non-super_admins to specific apps. --- -import { Tabs, TabItem, Aside, Steps } from '@astrojs/starlight/components'; +import { Aside, Steps, TabItem, Tabs } from '@astrojs/starlight/components'; SimpleDeploy ships with three roles. Pick the lowest privilege that gets the job done. diff --git a/docs/install/docker.md b/docs/install/docker.md index cf17a69..eec28c2 100644 --- a/docs/install/docker.md +++ b/docs/install/docker.md @@ -3,8 +3,6 @@ title: Install via Docker description: Install SimpleDeploy as a Docker container. The universal path for non-Debian distros (Fedora, Arch, Alpine), NAS boxes (Synology, TrueNAS), or a quick trial on any Linux host. --- -import { Steps, Aside, Tabs, TabItem } from '@astrojs/starlight/components'; - The universal path. Use Docker when you are on Fedora, Arch, Alpine, a NAS (Synology, TrueNAS), or just want a quick trial. For Debian/Ubuntu production servers, [apt](/install/ubuntu/) is still the recommended install.