github coollabsio/coolify v4.0.0-beta.435

latest release: v4.0.0-beta.436
4 days ago

This PR represents a major milestone in Coolify's evolution, bringing comprehensive Hetzner Cloud integration, custom webhook notifications, enhanced Docker image handling, onboarding redesign, and numerous stability and security improvements.


πŸš€ Major Features

Hetzner Cloud Integration (#6817, #6840, #6842, #6843, #6863, #6866)

Complete integration with Hetzner Cloud, enabling users to create and manage servers directly from Coolify.

Core Features:

  • ✨ Server creation and deletion via Hetzner API
  • ✨ Automatic server status synchronization with retry mechanism
  • ✨ Deletion failure notification system with email alerts
  • ✨ Rate limit handling for API requests
  • ✨ Retry functionality for server validation process

Cloud-Init Script Support:

  • ✨ Cloud-init script support for Hetzner server creation
  • ✨ Cloud-init scripts management UI in Security section
  • ✨ YAML validation for cloud-init scripts
  • ✨ Dropdown selection for existing scripts
  • ✨ Global search integration for cloud-init scripts
  • πŸ“ Documentation clarifying cloud-init script compatibility

Network & Configuration:

  • ✨ IPv4/IPv6 network configuration for server creation
  • ✨ Support for selecting additional SSH keys from Hetzner
  • ✨ Modal support for creating private keys in server creation flow
  • ✨ Pricing display on server creation button (e.g., "€12.99/mo")
  • ✨ CPU vendor information for server types

UI Improvements:

  • ✨ Hetzner affiliate link in token form to support Coolify
  • ✨ Enhanced datalist component with unified input container
  • ✨ Improved placeholder text for token name input

Implementation Details:

  • πŸ”¨ Implement ValidHostname validation rule
  • πŸ› Improved error logging and handling in ServerConnectionCheckJob
  • πŸ› Update Hetzner server status handling to prevent unnecessary database calls
  • πŸ› Correct dispatch logic for Hetzner server status refresh

πŸ“Š Statistics: 55 commits, 4,452 additions, 411 deletions, 104 files changed


Custom Webhook Notifications (#6837)

Complete webhook notification system allowing users to receive real-time notifications about events via HTTP POST requests.

Core Features:

  • Custom Webhook Notifications: Send POST requests to user-defined HTTP/HTTPS endpoints when events occur
  • Database Schema: New webhook_notification_settings table with encrypted URL storage and per-event toggles
  • Event Toggles: Fine-grained control over 12+ notification types (deployments, backups, scheduled tasks, server events)
  • Webhook Delivery: Queued job system with retry logic (5 attempts, 10s backoff)
  • Rich Payloads: All webhook payloads include resource UUIDs and direct URLs to Coolify resources

UI/UX Enhancements:

  • Dedicated Webhook Page: Full settings interface with form validation and test notification
  • Password-Protected URLs: Webhook URLs displayed as password fields for security
  • POST Badge Indicator: Visual HTTP method indicator positioned before the URL input
  • Responsive Layout: Organized notification settings in categorized cards

Supported Events:

  • Deployments: success, failed, status_changed
  • Backups: success, failed, success_with_s3_warning
  • Scheduled Tasks: success, failed
  • Server: docker_cleanup, high_disk_usage, reachable/unreachable, server_patch_check

πŸ“Š Statistics: 14 commits, 32 files changed, +900 additions / -15 deletions


Enhanced User Onboarding (#6855)

Complete redesign of the user onboarding experience with a modern, centered UI, enhanced UX flow, and Hetzner Cloud integration.

Core Features:

  • Modern UI Redesign: Centered, card-based layout with clean design
  • 3-Step Progress Indicator: Visual progress component showing completed, current, and upcoming steps
  • Hetzner Cloud Integration: Users can now create Hetzner servers directly from onboarding
  • Separate SSH Key Input Modes: Distinct textareas for "Generate with Coolify" (readonly) vs "Add your own" (editable)

Bug Fixes:

  • Project Loading on Refresh: Projects now load correctly when refreshing the Project Setup page
  • Browser Back Button: Removed aggressive redirects to welcome page
  • SSH Key Auto-Selection: First SSH key is auto-selected by default
  • State Persistence: Livewire URL binding enables proper browser navigation

πŸ“Š Statistics: 4 commits, 5 files changed, +851 additions / -428 deletions


✨ Core Features

Docker & Container Management

Docker Image Enhancements

  • SHA256 Hash Support for Deployments (#6472)

    • Enhanced DockerImageParser to detect and handle image hashes
    • Updated UI forms with better guidance for hash input
    • Modified deployment logic to use @sha256: format
    • Comprehensive test coverage for all hash scenarios
  • Auto-Parse Docker Image References (#6879)

    • Users can paste complete Docker image references (e.g., nginx:stable@sha256:abc123...)
    • Automatically parses and populates image name, tag, and SHA256 fields
    • Smart behavior: only auto-parses when fields are empty
    • Handles all formats: registries with ports, digests, tags
  • Fix Docker Image Digest Handling (#6878, #6879)

    • Fixed double-decoration bug in Docker image names
    • Replaced manual regex with robust DockerImageParser utility
    • Prevents malformed image names like nginx:abc123@sha256

Service & Template Improvements

  • Elasticsearch with Kibana (#6470) - Service template with token-based authentication
  • Ente Photos (#6511) - Self-hosted photo service template
  • pgAdmin (#6563) - PostgreSQL admin interface with auto-network connection (#6861)
  • Swetrix Analytics (#6735) - Privacy-focused analytics alternative
  • Rybbit (#6631) - Service template
  • Lobe Chat (#6655) - AI chat interface with local DB
  • Gotify (#6793) - Self-hosted notification service
  • NewAPI (#6753) - API template
  • Once Campfire (#6557) - Basecamp's Campfire app
  • Gramps Web (#6559) - Genealogy web application

Template Updates & Fixes

  • Homarr (#6778) - Updated to new image version 1.40.0
  • Convex (#6576) - Updated documentation URL and image
  • Docmost (#6710) - Added mail environment variables
  • Bluesky PDS (#6636) - Fixed JWT generation and email envs
  • Ente Photos (#6802) - Fixed PostgreSQL connection and MinIO CORS issues
  • Mattermost (#6538) - Removed healthcheck command (shell not available)
  • Filebrowser (#6589) - Corrected healthcheck for wget vs curl
  • Traccar (#6721) - Fixed "no available server" error
  • Moodle (#6806) - Added healthcheck
  • Documenso (#6831) - Added missing Resend API environment variables
  • Bitnami to BitnamileLegacy (#6764) - Updated image references across all templates

Deployment & Build System

  • Environment Variable Management

    • Standardized .env file handling across all deployment methods (#6826)
    • Fixed environment variable cache refresh after adding new variables (#6790)
    • Save build-time .env file before build to prevent inclusion in images (#6826)
    • Fixed API validation to allow all environment variable fields (#6860)
    • Save runtime environment variables when skipping build (#6845)
  • Build Process Improvements

    • Docker build commands wrapped with environment variable exports (#6826)
    • Fixed static site publish directory double slash in build logs (#6871)
    • Added default NIXPACKS_NODE_VERSION for Nixpacks applications (#6770)
    • Warning for NIXPACKS_NODE_VERSION in Node.js configurations (#6844)
    • Fixed base_directory default and inclusion in submit method (#6843)
  • Deployment Fixes

    • Fixed pure Dockerfile deployment failure due to missing .env file (#6873)
    • Fixed PR build logs URL to use environment UUID (#6850)
    • Handle all ProcessStatus values in PR updates (#6868)
    • Sanitize branch names for Docker tag compatibility (#6843)

Git Integration

  • Git Redirect Handling (#6869)
    • Fixed deployment failures when Git repositories use redirects (e.g., tangled.sh β†’ tangled.org)
    • Replaced line-based parsing with regex pattern matching for commit SHA extraction
    • Added security improvement with escapeshellarg() for repository URLs
    • Comprehensive test coverage for all redirect scenarios
    • Universal fix for all Git hosting services with redirects

Database Management

  • Database Security & Stability

    • Added authorization checks to all database Livewire components (#6872)
    • Fixed TypeError when destination server is not configured (#6870)
    • Migrated database components from legacy model binding (#6859)
    • Fixed container name conflict when updating port mappings (#6858)
  • Backup Enhancements (#6791)

    • Enhanced backup job with S3 upload handling
    • New BackupSuccessWithS3Warning notification class
    • Track local backup success and S3 upload errors separately
    • Added s3_uploaded boolean field to track S3 status
    • Fixed backup job to use backup_log_uuid for container naming (#6844)

Proxy & Network

  • Proxy Configuration (#6787)

    • Enhanced proxy configuration regeneration by extracting custom commands
    • Added function to preserve custom Traefik commands during regeneration
    • Unit tests to validate custom command extraction
  • Read-Only Volume Handling (#6774)

    • Introduced isReadOnlyVolume method for volume models
    • Enhanced UI to display notifications for read-only volumes
    • Prevent modification actions for read-only volumes

🎨 UI/UX Enhancements

Global Search & Navigation

  • Searchable Terminal Selector (#6854)

    • Replaced standard dropdown with advanced searchable datalist component
    • Real-time search filtering for servers/containers
    • Visual improvements with smooth animations
  • Global Search Improvements (#6787)

    • Enhanced resource creation functionality in search modal
    • Create mode for projects, servers, teams, storage, private keys, GitHub apps
    • Artisan command to clear global search cache
    • Allow typing while data loads
    • Hide 'No results found' message during loading
    • Fixed 'new image' quick action not progressing (#6880)

Dashboard & Project Management

  • Enhanced Project Management (#6849)

    • Project index with resource creation capabilities
    • Display resource creation option for each project
    • Generate route for adding resources based on first environment
  • Dashboard Improvements (#6850)

    • Modal input components for adding new projects and servers
    • Conditional rendering for modal buttons
    • Improved layout with flex container alignment
  • UI Fixes

    • Fixed deployments indicator toast stacking above sidebar (#6784)
    • Enhanced proxy status notifications with detailed messages
    • Team creation now redirects to new team instantly (#6852)

Form Components & Styling

  • Enhanced Form Components
    • Enhanced datalist component with unified input container
    • Improved focus styles for Checkbox, input, button, and modal components
    • Update success color to match design specifications
    • Simplified wire:dirty class bindings for input/select components
    • Clear button for cloud-init script dropdown

πŸ› Bug Fixes

Storage & Backups

  • S3 Storage Enhancements (#6792)
    • Transaction handling in storage settings submission
    • Connection testing within transaction before finalizing save
    • Enhanced error handling with model state refresh after rollback

Service Management

  • Docker Compose Services (#6867)
    • Fixed duplicate services created when changing image
    • UI now refreshes after compose file or domain changes
    • Remove image from firstOrCreate() queries (only use name and service_id)
    • Added event listeners to Configuration component

Validation & Error Handling

  • Validation Improvements
    • Fixed validation on multiple views (#6785)
    • Added 422 error code to OpenAPI specification (#6852)
    • Changed /version and /healthcheck return types in OpenAPI spec

πŸ”¨ Refactoring & Code Quality

Component Modernization

  • Database Components

    • Migrated from legacy model binding to explicit properties (#6859)
    • Enhanced deployment data retrieval and relationships (#6779)
    • Made backup_log_uuid initialization lazy (#6846)
  • Livewire Components

    • Streamlined environment variable generation in ApplicationDeploymentJob (#6778)
    • Replace direct SslCertificate queries with server relationships
    • Streamline proxy status handling in StartProxy and Navbar components

Code Cleanup

  • Remove Unused Code
    • Removed redundant logic for merging COOLIFY_* variables
    • Simplified environment variable adding process
    • Enhanced clarity and maintainability

πŸ“ Documentation & Testing

Documentation Improvements

  • AI Instructions Synchronization Guide (#6788)

    • Created .AI_INSTRUCTIONS_SYNC.md for cross-reference
    • Updated CLAUDE.md and .cursor/rules/ with sync instructions
    • Enhanced consistency across documentation
  • Testing Guidelines (#6787)

    • Clarified execution rules for unit tests (mocking, no database)
    • Specified feature tests must run inside Docker
    • Added design principles for testable code

Test Coverage

  • New Test Files
    • tests/Unit/ProxyCustomCommandsTest.php - Proxy configuration tests
    • tests/Unit/GitLsRemoteParsingTest.php - Git redirect handling tests
    • tests/Unit/DockerImageParserTest.php - Docker image parsing tests
    • tests/Unit/DockerImageAutoParseTest.php - Auto-parse feature tests
    • tests/Unit/ServiceParserImageUpdateTest.php - Service parser tests
    • tests/Unit/ServiceConfigurationRefreshTest.php - Configuration refresh tests
    • tests/Unit/GlobalSearchNewImageQuickActionTest.php - Search tests
    • tests/Unit/HetznerServerCreationTest.php - Hetzner API tests

⚑ Performance & Infrastructure

  • Database Optimization

    • Fixed concurrent index creation to run outside transaction (#6841)
    • Force deletion of stuck servers and orphaned SSL certificates
    • Improved query efficiency with proper eager loading
  • Cache Management

    • Clear computed property cache after adding environment variables
    • Cache clearing for environment variables and preview
    • Improved cache control for global search modal

πŸ”’ Security & Validation

  • Authorization Enhancements

    • Added authorization checks to database Livewire components (#6872)
    • Enhanced form component authorization system
    • Webhook URLs encrypted at rest in database
  • Input Validation

    • Implement ValidHostname validation rule
    • YAML validation for cloud-init scripts
    • Enhanced DockerImageFormat validation rule

πŸ“Š Other Updates

Sponsors & Community

  • Sponsors Update (#6849)
    • Added 6 new sponsors: 23M, Brand.dev, ByteBase, Formbricks, Mobb, Ramnode
    • Removed 6 inactive sponsors
    • Reorganized sponsors in alphabetical order

API Improvements

  • OpenAPI Specification (#6852)
    • Added 422 error code to spec
    • Changed return types for /version and /healthcheck

GitHub Integration

  • Claude Code GitHub Workflow (#6787)
    • Added GitHub Actions workflow for Claude Code integration
    • Enables @claude mentions in PR and issue comments
    • Automated AI assistance for code reviews and improvements

πŸ“ˆ Overall Statistics


πŸ™ Credits

Thank you to all contributors who made this release possible:

@andrasbacsai, @ShadowArcanist, @saurabhraghuvanshii, @djsisson, @Blaumaus, @mario-neuhold, @seefs001, @abdia3, @thesloppyguy, @elmariss, @zehjotkah, @victor, @Sahil, @neeku, @scan, @hoΓ ng TrαΊ§n NhαΊ­t Minh, @Romain ROCHAS, @amir Hossein Karimi, @vishwanath Martur, @evan Schleret, @halil Γ–zgΓΌr, and the entire Coolify community!

Special thanks to the testing community for reporting issues and helping improve stability.


Generated by Andras & Jean-Claude, hand-in-hand.

What's Changed

New Contributors

Full Changelog: v4.0.0-beta.434...v4.0.0-beta.435

Don't miss a new coolify release

NewReleases is sending notifications on new releases.