Skip to content

Deploying WinterCMS

Introduction

WinterCMS is a free, open-source content management system based on the Laravel PHP framework. Originally a fork of October CMS, WinterCMS focuses on community-driven development and provides a powerful platform for building modern websites and web applications with an extensive plugin marketplace.

Key highlights of WinterCMS:

  • Laravel Foundation: Built on the robust Laravel framework for enterprise reliability
  • Plugin Marketplace: Extensive ecosystem of free and premium plugins
  • Theme System: Powerful theming with Twig templating
  • Backend Interface: Clean, intuitive admin panel for content management
  • AJAX Framework: Built-in AJAX support for dynamic interactions
  • Media Manager: Comprehensive file and image management
  • Multi-site Support: Manage multiple websites from one installation
  • Developer Friendly: Extensible architecture for custom development

This guide walks through deploying WinterCMS on Klutch.sh using Docker.

Why Deploy WinterCMS on Klutch.sh

Deploying WinterCMS on Klutch.sh provides several advantages:

Professional CMS: Enterprise-grade content management with modern architecture.

Plugin Ecosystem: Access to hundreds of plugins for extended functionality.

HTTPS by Default: Automatic SSL certificates secure your website.

Persistent Storage: Themes, plugins, and uploads persist with Klutch.sh volumes.

Prerequisites

Before deploying WinterCMS on Klutch.sh, ensure you have:

Deploying WinterCMS on Klutch.sh

    Create Your Repository

    Create a new GitHub repository with a Dockerfile:

    FROM php:8.2-apache
    # Install dependencies
    RUN apt-get update && apt-get install -y \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    libzip-dev \
    unzip \
    git \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install gd pdo pdo_mysql zip
    # Enable Apache modules
    RUN a2enmod rewrite headers
    # Install Composer
    COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
    WORKDIR /var/www/html
    # Install WinterCMS
    RUN composer create-project wintercms/winter . \
    && chown -R www-data:www-data /var/www/html
    # Set permissions
    RUN chmod -R 755 storage bootstrap/cache themes plugins
    ENV APP_KEY=${APP_KEY}
    ENV DB_CONNECTION=${DB_CONNECTION:-mysql}
    ENV DB_HOST=${DB_HOST}
    ENV DB_DATABASE=${DB_DATABASE}
    ENV DB_USERNAME=${DB_USERNAME}
    ENV DB_PASSWORD=${DB_PASSWORD}
    EXPOSE 80

    Push to GitHub

    Push your Dockerfile to your GitHub repository.

    Create a New Project on Klutch.sh

    Navigate to the Klutch.sh dashboard and create a new project.

    Deploy a MySQL Database

    WinterCMS requires a database. Deploy MySQL or MariaDB within your project first.

    Create a New App

    Create a new app for WinterCMS and connect your GitHub repository.

    Configure HTTP Traffic

    Set the traffic type to HTTP with port 80.

    Set Environment Variables

    Configure the following environment variables:

    VariableValue
    APP_KEYGenerate with php artisan key:generate --show
    DB_HOSTYour database host
    DB_DATABASEYour database name
    DB_USERNAMEYour database user
    DB_PASSWORDYour database password

    Attach Persistent Volumes

    Add persistent volumes:

    Mount PathPurpose
    /var/www/html/storageUploaded files and cache
    /var/www/html/themesCustom themes
    /var/www/html/pluginsInstalled plugins

    Deploy Your Application

    Click Deploy to build and launch WinterCMS.

    Complete Installation

    Access your site at /backend to complete the installation wizard and create your admin account.

Additional Resources

Conclusion

WinterCMS on Klutch.sh provides a powerful, Laravel-based content management system with extensive plugin support. Its modern architecture and community-driven development make it an excellent choice for building professional websites with full control over your content and data.