Skip to content

Deployment & Infrastructure

SkyCMS supports multiple deployment targets and hosting models — from one-click Azure Marketplace installs to Docker containers, AWS, and Cloudflare edge hosting. The system includes a guided setup wizard, automated demo provisioning, and a documentation publishing pipeline.

Audiences: Administrators, Developers, Evaluators

Jump to:


1. Hosting Options

Documentation: Deployment Overview · Azure Deployment · Docker Deployment · Cloudflare Edge Hosting · Installation Overview · Azure Installation · AWS Installation · Docker Installation · Local Development

Azure App Service

  • Azure Marketplace deployment — One-click ARM template deployment with 9 pre-configured resources
  • Customizable template with subscription, resource group, and region selection
  • Configurable parameters: email provider, web app plan tier, storage account type
  • Premium and Standard tier support
  • Docker container hosting on App Service
  • Azure Files integration for persistent storage

Docker

  • Official Dockerfile for containerized deployment
  • Docker Compose configuration (docker-compose.yml + docker-compose.override.yml)
  • Docker Compose project file (docker-compose.dcproj) for Visual Studio integration
  • Compatible with any Docker-capable host (Azure Container Instances, AWS ECS, Kubernetes, self-hosted)

AWS

  • Deployment documentation and guidance for AWS hosting
  • S3 storage integration via the multi-cloud storage layer
  • AWS-compatible via Docker containers

Cloudflare

  • Cloudflare Cloud Connector — Connect SkyCMS to Cloudflare's CDN
  • Cloudflare Edge Hosting — Serve static-generated pages from Cloudflare's edge network
  • Cloudflare R2 storage integration (S3-compatible)
  • Custom filter expression rules for URL routing

Local Development

  • dotnet run --project Sky.Editor for local development
  • launchSettings.json profiles for IDE launch configurations
  • SQLite support for zero-dependency local development
  • No cloud services required for development mode

2. Setup Wizard

Documentation: Setup Wizard · Post-Installation · Minimum Required Settings

An interactive, step-by-step setup experience for initial site configuration.

Prerequisites

  • CosmosAllowSetup=true environment variable
  • Database connection string configured
  • Application deployed and accessible

Setup Steps

Step Purpose
Welcome Introduction and prerequisites check
Step 1: Storage Configure cloud storage connection (Azure Blob, S3, R2)
Step 2: Admin Account Create the initial administrator user
Step 3: Publisher Configure the public-facing publisher settings
Step 4: Email (optional) Configure email provider for notifications and identity
Step 5: CDN (optional) Configure CDN provider for content delivery
Step 6: Review Review all settings before committing
Complete Finalize setup, restart required

Post-Setup

  • Application restart to apply configuration
  • Sign in with administrator credentials
  • Validate all settings
  • Disable setup mode (CosmosAllowSetup=false) for security

Multi-Tenant vs. Single-Tenant Setup

  • Single-tenant: Standard setup wizard at /__setup
  • Multi-tenant: Multi-tenant setup flow with per-tenant initialization
  • Database schema auto-initialized on first tenant access

3. Database Configuration

Documentation: Database Overview · Cosmos DB · SQL Server · MySQL · SQLite · Database Configuration Reference · EF Cross-Provider Compatibility Guide

Supported Databases

Database Use Case Connection
Azure Cosmos DB Production, global scale, multi-region Cosmos DB connection string
SQL Server / Azure SQL Enterprise, ACID compliance SQL Server connection string
MySQL Open-source relational MySQL connection string
SQLite Development, demos, small sites File path or :memory:

Database Features

  • Auto-detection from connection string (no configuration flags needed)
  • Provider selection is based on connection-string shape and documented for developers in the EF cross-provider guide
  • Schema auto-migration on startup
  • EF Core migrations support (AddMigrationScript.ps1)
  • Cross-provider query compatibility

4. Cloud Storage Configuration

Documentation: Storage Overview · Azure Blob Storage · Amazon S3 · Cloudflare R2 · Google Cloud Storage · Storage Configuration Reference · Storage Provider Auto-Detection

Supported Providers

Provider Connection Method
Azure Blob Storage Azure storage connection string
Amazon S3 AWS access key + secret
Cloudflare R2 S3-compatible endpoint + credentials
Azure Files Azure file share connection string

Storage Roles

  • Media storage — Images, documents, uploaded assets
  • Static site hosting — Pre-generated HTML pages (Azure Blob static website)
  • File manager — All file operations routed through storage abstraction
  • Runtime detection — Active storage driver selected from the connection-string shape at startup or tenant resolution time

5. CDN Configuration

Documentation: CDN Overview · Azure Front Door · Cloudflare CDN · CloudFront · Sucuri · CDN Configuration Reference

Supported CDN Providers

Provider Integration Type
Azure CDN / Azure Front Door API-based cache purge
Cloudflare API-based cache purge, edge hosting
AWS CloudFront API-based cache invalidation
Sucuri API-based cache purge

CDN Features

  • Configure from admin settings panel
  • Automatic cache purge on content publish
  • Purge failures don't block publishing (graceful degradation)
  • Per-tenant CDN isolation
  • Proxy settings configuration (for CDN/reverse proxy header forwarding)

6. Email Provider Configuration

Documentation: Email Overview · Azure Communication Services · SendGrid · SMTP · NoOp Provider · Email Configuration Reference

Supported Providers

Provider Features
Azure Communication Services Azure-native, high-volume delivery
SendGrid (Twilio) Template support, delivery analytics
SMTP Self-hosted, TLS support, username/password auth
NoOp Development/test mode (no emails sent)

Email Roles

  • Identity emails (registration confirmation, password reset)
  • Contact form notifications
  • Admin alerts

7. Demo Deployment

Documentation: Demo Deployment Guide · SkyCMS.Demo README

Automated Demo Provisioning (SkyCMS.Demo)

PowerShell + Bicep automation for one-command demo site deployment to Azure.

What Gets Deployed

Resource Purpose
App Service Plan Compute (default P1v3 SKU)
Web App Docker-hosted SkyCMS Editor
Storage Account Blob storage for media assets
Azure File Share Persistent storage for SQLite database

Demo Features

  • Pre-seeded SQLite database with sample content
  • Pre-populated blob storage with demo assets
  • Interactive PowerShell deployment script (deploy-demo.ps1)
  • Cleanup script for teardown (destroy-demo.ps1)
  • Configurable: resource group, region, name prefix, SKU
  • Docker image source (from GitHub Container Registry or custom)

8. Documentation Publishing (DocsPublisher)

Documentation: DocsPublisher Installation · DocsPublisher README · DocsPublisher Quick Start

Markdown-to-CMS Pipeline

A ready-to-run tool for syncing Markdown documentation into SkyCMS.

Features

Feature Description
Markdown → HTML Automatic conversion of .md files to HTML content
Asset upload Images and files uploaded to /pub/docs storage path
Idempotent sync Hash tracking prevents duplicate uploads (.skycms/docs-import-map.json)
GitHub Actions CI Automated sync on doc changes via workflow
Front matter YAML metadata: title, summary, URL path, publish flag, banner image
Relative links Internal cross-linking between documentation pages

Front Matter Schema

---
title: Page Title
summary: Brief description
published: true
published_at: 2026-01-15T00:00:00Z
url_path: /docs/my-page
banner_image: https://example.com/banner.jpg
article_type: documentation
---

Integration

  • Uses the SkyCMS Docs Import API (PUT/DELETE /_api/import/docs/{sourceKey})
  • Requires: API URL, API key, tenant host, service account user ID
  • Jest test suite for import script validation

9. CI/CD & DevOps

Documentation: CI/CD Pipelines Guide · Deployment Overview

GitHub Actions Workflows

Workflow Purpose
Docker Image Build Build and publish Docker images
NuGet Push Publish NuGet packages (AspNetCore.Identity.FlexDb, etc.)
Docs Cloudflare Deploy Deploy documentation to Cloudflare Pages
Docs Import Sync Markdown documentation to SkyCMS

Secret Management

  • UploadSecretsToGithubRepo.ps1 — Upload secrets to GitHub repository
  • Cloudflare secrets setup documented (.github/CLOUDFLARE_SECRETS_SETUP.md)
  • Secrets managed via environment variables and secret stores — never in code

Package Management

  • Central package version management via Directory.Packages.props
  • NuGet package publishing for shared libraries
  • Global tool management (.config/dotnet-tools.json)

10. Licensing

Documentation: Licensing & Distribution

Open Source

  • GPL License — Core CMS under GNU General Public License
  • MIT License — Select components under MIT
  • CKEditor GPL — CKEditor fork under GPL
  • Licensing and distribution documentation provided

Self-Hosting

  • Free for self-hosting
  • No build pipeline required
  • No vendor lock-in — multi-cloud, multi-database
  • Docker container for portable deployment