Documentation

Admin Guide

Day-to-day DesertCMS admin workflows for content, media, modules, comments, ratings, shop, documentation, backups, and upgrades.

Source: ADMIN_GUIDE.md

Use the admin UI for routine site work. File edits are for deployment, theme development, or custom modules.

Site Identity

Admin Settings > Site Settings controls the public site name, description, logo, favicon, social sharing image, homepage, and theme choices.

The admin header uses the uploaded site logo when one is set. If no logo is configured, it falls back to the Site Name setting.

Content

Pages are durable site sections such as Home, About, Documentation, Privacy, or Contact. Posts are dated stories or field notes.

The page/post editor stores structured blocks. Publishing writes static HTML into the public webroot and refreshes indexes, archives, module pages, sitemap, robots.txt, and redirect fallback pages.

The Pages and Posts admin lists include edit, publish, comments, and delete actions. Delete is a soft content delete; deleted pages and posts are not shown in public output.

Media

Admin Media uploads keep original files private under the configured originals_dir and publish downscaled display derivatives under /assets/media/.

Each media row stores ownership context:

  • owner site id
  • owner domain
  • owner display name
  • owner email
  • uploader user id
  • uploader username
  • uploader email

The main deployment normally stores main as the owner site id. Contributor-site uploads infer the owner from that site's config or data path.

Media can be deleted when it is not used by a page or post. Deleting a media asset disables any shop listing attached to it. Physical files are removed only when no remaining media row or shop order still needs them.

Comments And Ratings

Public post pages can show comments and 1-5 star ratings.

Admin Posts includes a comments button for posts with visible comments. The comments screen lets the admin view the post thread and delete comments. Deleted comments are removed from both public and admin views; DesertCMS does not leave a "comment removed" placeholder.

Ratings are stored as one vote per post per visitor IP hash. A visitor can change their rating, but repeated votes from the same IP hash update the existing row instead of adding more rows.

Modules

Admin Settings > Modules enables first-party modules:

  • Map publishes /map/ and map pin data from location-enabled content.
  • Shop serves image-rights commerce from /shop.
  • Gallery publishes /gallery/ from uploaded public photo derivatives.
  • Forms serves /forms/ dynamically and stores submissions locally.
  • Documentation publishes Markdown files from docs_source_dir to /docs/.

Saving module settings rebuilds public output so navigation, sitemap entries, and generated pages match the enabled modules.

Shop

Shop settings live under Admin Settings > Modules > Shop.

Use that screen to enable the public storefront, configure Stripe keys, set the webhook secret, and price uploaded photographs for personal, commercial, and full-rights purchases.

The standard shop URL is:

https://example.com/shop

Leave shop_domain and shop_url blank for the standard main-deployment shop.

Documentation

The Documentation module reads Markdown from the configured docs source directory. If docs_source_dir is blank, DesertCMS uses the bundled docs/ directory in the application tree.

Each Markdown file becomes a /docs/<slug>/ page. Front matter controls title, summary, and order.

Privacy Page

Before launch, create a public Privacy page that explains analytics, comments, ratings, form submissions, shop payments, cookies, and GeoIP. Add it to Navigation if you want it in the default header and footer. The default theme uses the same navigation list in both places.

Backups And Upgrades

Create a backup before major content, module, theme, or upgrade work:

doas su -m _desertcms -c 'env DESERTCMS_CONFIG=/etc/desertcms.conf perl /usr/local/www/desertcms/bin/desertcms-maint.pl backup'

Admin Settings > Upgrade DesertCMS stages a .tar.gz release archive and queues it for the root upgrade worker. The web user does not replace root-owned application files directly.