title: Troubleshooting Guide description: Common issues and solutions for SkyCMS setup, configuration, and operation keywords: troubleshooting, errors, debugging, solutions, configuration, database, storage, cdn audience: [developers, administrators] version: 2.0 updated: 2025-12-20 canonical: /Troubleshooting.html aliases: [] scope: platforms: [azure, aws, cloudflare, local] tenancy: [single, multi] status: stable chunk_hint: 360
Troubleshooting Guide¶
Common issues and solutions for SkyCMS setup, configuration, and operation.
Key facts¶
- Diagnose by layer: database → storage → CDN → publishing → auth → platform.
- Keep provider CLIs handy (az, aws, gcloud, cloudflare) to validate credentials and connectivity.
- The setup wizard is for single-tenant; DynamicConfig for multi-tenant—misuse leads to wizard failures.
- Most "cannot connect" issues are credentials, firewall, or missing roles; start there.
Database Configuration Issues¶
"Connection string validation failed" or "Cannot connect to database"¶
Causes: - Incorrect connection string format - Database server is unreachable - Firewall rules block access - Invalid credentials
Solutions:
- Verify the connection string format matches your provider:
- Azure Cosmos DB
- MS SQL Server / Azure SQL
- MySQL
- SQLite
- Check that the database server is running and accessible from your SkyCMS instance
- For Azure SQL, ensure your firewall rules allow your IP or enable "Allow Azure services and resources to access this server"
- Test the connection string with the provider's CLI tool (e.g., sqlcmd, mysql client)
- Verify username, password, and database name are correct
"Database does not exist" or "Table not found"¶
Causes: - Database hasn't been created yet - Entity Framework migrations haven't run
Solutions: - For first-time setup, use the SkyCMS Setup Wizard to create the database automatically - If using manual configuration, run Entity Framework migrations:
dotnet ef database update
"Access denied" or "Login failed"¶
Causes: - User credentials lack required permissions - Authentication method mismatch (SQL auth vs. Azure AD)
Solutions:
- For SQL Server: verify user login and password; ensure user has db_owner or equivalent permissions
- For Azure SQL: if using Azure AD, ensure managed identity or service principal is assigned the correct role (Contributor or higher on the database)
- For MySQL: ensure user has appropriate privileges: GRANT ALL PRIVILEGES ON database.* TO 'user'@'host';
Storage Configuration Issues¶
"Storage validation failed" or "Cannot write to storage"¶
Causes: - Incorrect connection string format - Storage account/bucket doesn't exist - Credentials lack write permissions - Network/firewall blocks access
Solutions:
- Verify the connection string format:
- Azure Blob Storage
- Amazon S3
- Cloudflare R2
- Google Cloud Storage
- Ensure the storage account/bucket exists
- Verify credentials have read/write/delete permissions
- Test credentials with provider CLI (e.g., az storage, aws s3, gsutil)
- Check security groups, firewall rules, or IP allowlists
"Access denied" when writing to storage¶
Causes: - IAM policy or role is missing required permissions - Credentials are read-only
Solutions:
- For Azure: ensure managed identity or connection string account has Storage Blob Data Contributor role
- For S3: verify IAM user policy includes s3:PutObject, s3:DeleteObject, s3:GetObject, s3:ListBucket
- For Cloudflare R2: ensure API token has Object Read & Write and Bucket List permissions
- For GCS: verify service account has Storage Object Admin role
"Container/Bucket does not exist"¶
Causes: - Storage container/bucket wasn't created beforehand
Solutions: - Create the container/bucket before starting SkyCMS - For Azure: SkyCMS can auto-create containers if the account has permissions - For S3/R2/GCS: manually create the bucket in the provider's console
CDN Configuration Issues¶
"CDN validation failed" or "Cannot purge cache"¶
Causes: - Invalid credentials or distribution ID - Permissions are insufficient - Provider is unreachable
Solutions: - Verify credentials and IDs match the provider: - Azure Front Door - Cloudflare CDN - Amazon CloudFront - Sucuri - Test credentials with provider CLI or API - Ensure role/policy allows cache invalidation/purge
CloudFront: "AccessDenied" on invalidation¶
Cause: IAM user lacks CloudFront permissions
Solution: Ensure IAM policy includes:
{
"Effect": "Allow",
"Action": [
"cloudfront:CreateInvalidation",
"cloudfront:GetInvalidation"
],
"Resource": "arn:aws:cloudfront::*:distribution/YOUR_DISTRIBUTION_ID"
}
Azure Front Door: "Role assignment not found"¶
Cause: Managed identity doesn't have the required role
Solution: In Azure Portal, assign CDN Endpoint Contributor role to the identity on the Front Door profile
Cloudflare: "Invalid Zone ID"¶
Cause: Zone ID doesn't match the domain
Solution: Verify Zone ID in Cloudflare Dashboard → select domain → copy Zone ID from Overview
Publishing & Content Issues¶
"Publish failed" or "Content not updating"¶
Causes: - Storage is unreachable - CDN purge failed (but content still published) - Permissions issue on storage
Solutions: - Check storage connectivity (see Storage Configuration Issues above) - Verify the publish log in the Editor for specific errors - CDN purge failures don't block publishing; content is still updated in storage - Clear your browser cache or wait for CDN TTL to expire - Manually purge CDN cache if automated purge fails
"File upload fails"¶
Cause: Storage permissions or size limits
Solutions: - Verify storage credentials have write permissions - Check file size against provider limits (most providers support multi-part uploads for large files) - Check disk space on storage account/bucket - Verify file format is allowed
"Scheduled page didn't publish"¶
Causes: - Publisher process wasn't running at scheduled time - Publisher crashed or was restarted
Solutions: - Ensure Publisher application is running continuously - Check Publisher logs for errors around the scheduled time - Manually publish the page from the Editor - Configure a monitoring/alerting system to detect Publisher downtime
"Cannot reach database during wizard"¶
Causes: - Connection string incorrect or missing - Database firewall blocks the Editor app - Required provider client libraries not present
Solutions: - Verify the connection string in environment variables before launching the wizard - For Azure SQL, allow the App Service outbound IPs or enable "Allow Azure services" temporarily - For local SQLite demos, ensure the volume path exists and is writable
"Wizard fails at the Review step"¶
Causes: - Required fields missing (storage, admin, publisher URL) - Storage/CDN credentials invalid
Solutions:
- Re-enter storage/CDN credentials and verify permissions
- Confirm all wizard steps show green check marks before Review
- Restart the app after fixing inputs and rerun /Setup
Authentication & User Issues¶
"Login fails with correct credentials"¶
Causes: - User account doesn't exist - Password is incorrect or reset needed - User role lacks access
Solutions: - Verify user account exists in database - For first-time setup, the first user is created during the wizard - Reset password through database (consult Authentication docs) - Verify user has appropriate roles (Editor, Admin, etc.)
"Cannot create new users"¶
Causes: - Admin user doesn't have permission - Identity database isn't configured
Solutions: - Ensure admin user has sufficient privileges - Check Identity Framework is properly configured with the database - Verify identity tables were created during wizard/migration
Performance Issues¶
"Slow page load" or "high CDN latency"¶
Causes: - CDN not configured or purging inefficiently - Static assets aren't being cached - Origin database is slow
Solutions: - Verify CDN is configured (see CDN Integration Overview) - Check CDN cache hit ratio in provider dashboard - Enable cache headers on static assets - Review database query performance; optimize slow queries - Check network latency to origin
"Slow publishing"¶
Causes: - Storage is distant or slow - Large number of files being published - CDN purge is slow
Solutions: - Choose a storage region close to your users - Consider using a faster storage tier (if available) - Optimize the number of files being published - CDN purge can take time; large invalidations may take minutes
Container & Deployment Issues¶
"Container fails to start"¶
Causes: - Missing environment variables - Port is already in use - Volume mount issues
Solutions:
- Verify all required connection strings are set as environment variables
- Check port (default 5000) isn't in use by another process
- For Docker, ensure volumes are properly mounted and have correct permissions
- Check container logs: docker logs <container-id>
"Multiple instances lose data"¶
Cause: SQLite database being used (file-based, doesn't support concurrent writes)
Solution: Migrate to a centralized database (Azure SQL, Cosmos DB, MySQL)
FAQ¶
- What’s the most common cause of setup failures? Misconfigured connection strings or firewall blocks for database/storage.
- Why does publishing succeed but CDN shows stale content? CDN purge failed or is delayed; content is already in storage—retry purge or wait for TTL.
- Why does the wizard stop working after first run? It disables itself; set
CosmosAllowSetup=truetemporarily only when you need to rerun it.
Getting More Help¶
- GitHub Issues: Report bugs or ask questions
- Community Discussions: Engage with the community
- Provider-specific Help:
- Azure: Azure Documentation
- AWS: AWS Documentation
- Cloudflare: Cloudflare Documentation