Skip to content

geniusdynamics/ns8-coolify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

61 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

NS8 Coolify Module

NethServer 8 License

A NethServer 8 module that integrates Coolify - an open-source, self-hosted alternative to Heroku/Netlify for deploying web applications.

What is Coolify?

Coolify is a self-hosted platform that allows you to deploy web applications (static sites, Node.js, PHP, Python, etc.) with automatic HTTPS, database provisioning, and more. It provides:

  • One-click deployments from Git repositories
  • Automatic HTTPS certificates via Let's Encrypt
  • Database management (PostgreSQL, MySQL, MongoDB, Redis)
  • Docker container orchestration
  • Webhook integrations for CI/CD
  • Team collaboration features

This module brings Coolify's powerful deployment capabilities to your NethServer infrastructure.

Features

  • πŸš€ Easy deployment of web applications
  • πŸ”’ Integrated with NethServer's security model
  • 🌐 Automatic domain configuration with Traefik
  • πŸ“Š Web-based management interface
  • πŸ”„ Automated updates and rollbacks
  • πŸ—„οΈ Database provisioning and management
  • πŸ“± Mobile-friendly UI

Installation

Prerequisites

  • NethServer 8 cluster
  • At least 2GB RAM available
  • Docker/Podman support

Install the Module

Instantiate the module with:

add-module ghcr.io/geniusdynamics/coolify:latest 1

The output will return the instance name:

{
  "module_id": "coolify1",
  "image_name": "coolify",
  "image_url": "ghcr.io/geniusdynamics/coolify:latest"
}

Configuration

Launch configure-module with the following parameters:

  • host: Fully qualified domain name for Coolify
  • http2https: Enable/disable HTTP to HTTPS redirection (true/false)
  • lets_encrypt: Enable/disable Let's Encrypt certificate (true/false)

Example Configuration

api-cli run configure-module --agent module/coolify1 --data - <<EOF
{
  "host": "coolify.yourdomain.com",
  "http2https": true,
  "lets_encrypt": true
}
EOF

This will:

  • Start and configure the Coolify instance
  • Set up a virtual host in Traefik for external access
  • Configure automatic HTTPS if enabled

Usage

  1. Access Coolify: Navigate to https://coolify.yourdomain.com
  2. Initial Setup: Register your admin account
  3. Deploy Applications: Connect your Git repositories and deploy
  4. Manage Resources: Use the web interface to monitor and manage your deployments

Module Management

Get Configuration

api-cli run get-configuration --agent module/coolify1

Update Module

api-cli run update-module --data '{"module_url":"ghcr.io/geniusdynamics/coolify:latest","instances":["coolify1"],"force":true}'

Uninstall

remove-module --no-preserve coolify1

Advanced Configuration

Smarthost Integration

The module automatically discovers and integrates with NethServer's centralized smarthost setup. When the smarthost configuration changes, the module automatically reloads its services.

Environment Variables

The module runs with comprehensive environment variables managed by the NethServer agent. Key variables include database connection details, service ports, and security settings.

Development & Debugging

Debug Commands

Check environment variables:

runagent -m coolify1 env

Enter the module's runtime environment:

runagent -m coolify1

Inspect running containers:

runagent -m coolify1
podman ps

Access container environment:

podman exec coolify-app env

Open shell in container:

podman exec -ti coolify-app sh

UI Development

The module includes a Vue.js-based web interface. For UI development:

  1. Navigate to the ui/ directory
  2. Follow the NethServer UI development guide

Testing

Test the module using the provided script:

./test-module.sh <NODE_ADDR> ghcr.io/geniusdynamics/gccoolify:latest

Tests are written using Robot Framework.

Translation

The UI supports multiple languages and is translated via Weblate.

To contribute translations:

Support & Contributing

License

This project is licensed under the GPL-3.0 License - see the LICENSE file for details.