Installing - arunkumarrawat/Wexflow GitHub Wiki

Wexflow Installation Guide

Wexflow is easy to install and requires zero configuration. It can be installed and configured in just a few minutes.

This section explains how to install Wexflow on Windows, Linux, and macOS.

Table of Contents

  1. Windows (.NET 4.8 - Legacy)
    1. Installation Instructions
  2. Windows (.NET 9.0+ - Stable)
    1. Accessing the Admin Panel
    2. Configuration
    3. Running Wexflow as a Windows Service using NSSM
    4. Deleting the Wexflow Windows Service
  3. Linux (.NET 9.0+ - Stable)
    1. Installing the Admin Panel on NGINX
    2. Installing the Admin Panel on Apache2
    3. MongoDB Configuration
    4. Updating Wexflow
  4. macOS (.NET 9.0+ - Stable)
  5. Installing the Admin Panel on a Web Server
    1. .NET 4.8
    2. .NET 9.0+

Windows (.NET 4.8 - Legacy)

You can install Wexflow as a Windows Service (targeting .NET Framework 4.8) using one of the following installers:

  • wexflow-x.x-windows-x64.exe (64-bit)
  • wexflow-x.x-windows-x86.exe (32-bit)

Installation Instructions

  1. Install .NET Framework 4.8
  2. Download the latest release of Wexflow
  3. Right click on the installer, click on properties, check Unblock then click OK.
  4. Launch the installer and follow the instructions

After installation, a Windows Service named Wexflow is installed and starts automatically.

The following menus are added in the start menu:

  • The "Admin Panel" menu opens the Admin Panel.
  • The "Configuration" menu opens the configuration folder of Wexflow.
  • The "Documentation" menu opens the documentation folder of Wexflow.
  • The "Logs" menu opens the log file of the day.
  • The "Manager" menu opens Wexflow Manager GUI.
  • The "Install SQLite samples" menu installs SQLite workflow samples.
  • The "Install MongoDB samples" menu installs MongoDB workflow samples.
  • The "Install SQL Server samples" menu installs SQL Server workflow samples.
  • The "Install PostgreSQL samples" menu installs PostgreSQL workflow samples.
  • The "Install MySQL samples" menu installs MySQL workflow samples.
  • The "Install LiteDB samples" menu installs LiteDB workflow samples.
  • The "Install Oracle samples" menu installs Oracle workflow samples.

The admin panel is accessible at: http://localhost:8000/

You can sign in to the admin panel or Wexflow Manager using the following credentials:

  • Username: admin
  • Password: wexflow2018

Once logged in, you can change the password via the Admin Panel.

You can choose from 6 persistence providers:

  • SQLite (Default)
  • MongoDB
  • SQLServer
  • PostgreSQL
  • MySQL
  • LiteDB

See configuration page to see how to change the persistence provider.

Windows (.NET 9.0+ - Stable)

Follow these steps to run Wexflow using the .NET 9.0+ version on Windows:

  1. Install ASP.NET 9.0 Runtime
  2. Download and extract the latest Wexflow's .NET 9.0+ package (wexflow-x.x-windows-netcore.zip)
  3. Double-click on install.bat to install the configuration files (the database will not be overwritten).

That's it! To start the Wexflow workflow server, simply double-click on run.bat.

Accessing the Admin Panel

Once the server is running, the admin panel will be accessible at: http://localhost:8000/

You can sign in to the admin panel using the following credentials:

  • Username: admin
  • Password: wexflow2018

Configuration

You can find detailed instructions about configuration here.

Running Wexflow as a Windows Service using NSSM

If you want to run Wexflow as a Windows Service (.NET 9.0+), it is recommended to use NSSM (Non-Sucking Service Manager), which provides better control over startup behavior and working directories.

Note: Running or installing Wexflow as a Windows Service requires Administrator privileges. When opening the Command Prompt to install the service with NSSM, make sure to run it as Administrator.

Installing the Service

  1. Download NSSM, extract it to C:\Program Files\nssm and add C:\Program Files\nssm\win64\ to your PATH environment variable
  2. Download Wexflow .NET 9.0+ package (wexflow-x.x-windows-netcore.zip), extract it to C:\Program Files\Wexflow Server\
  3. Open an elevated Command Prompt (Run as Administrator).
  4. Run the following command to install the service:
nssm install WexflowServer
  1. In the NSSM GUI:

    • Application path: C:\Program Files\dotnet\dotnet.exe
    • Arguments: Wexflow.Server.dll
    • Startup directory: C:\Program Files\Wexflow Server\Wexflow.Server\
  2. Click Install service.

  3. Set the service description (optional but recommended):

sc description WexflowServer "Wexflow Workflow Automation Engine"
  1. Start the service:
nssm start WexflowServer

Once started, the Wexflow admin panel will be accessible at:

Deleting the Wexflow Windows Service

To remove the Wexflow Windows service installed with NSSM:

  1. Stop the service:
nssm stop WexflowServer
  1. Remove the service:
nssm remove WexflowServer confirm

Linux (.NET 9.0+ - Stable)

Note: Installing systemd services, modifying permissions, and firewall rules on Linux require root or sudo privileges. Use sudo as needed when running commands.

Follow these steps to run Wexflow using the .NET 9.0+ version on Linux:

  1. Download and install ASP.NET 9.0 Runtime
  2. Download and extract Wexflow's .NET 9.0+ package (wexflow-x.x-windows-linux.zip) in /opt/
  3. Add permissions:
    sudo chown -R $USER:$USER /opt/wexflow
    sudo chmod +x /opt/wexflow/install.sh
  4. Install wexflow systemd service:
    sudo /opt/wexflow/install.sh

Wexflow is now installed and the admin panel will be accessible at: http://localhost:8000/

You can sign in to the admin panel using the following credentials:

  • Username: admin
  • Password: wexflow2018

Installing the Admin Panel on NGINX

To install the admin panel on NGINX, follow these steps:

First, install NGINX:

sudo apt update
sudo apt install nginx-full

Then, add the admin panel to NGINX:

sudo nano /etc/nginx/sites-enabled/default

Add the following configuration:

server {
    listen 8011;
    root /opt/wexflow/Admin;
    index index.html;

    access_log /var/log/nginx/wexflow.access.log;
    error_log /var/log/nginx/wexflow.error.log;

    location / {
        # First attempt to serve request as file, then as directory,
        # then as index.html, then fall back to displaying a 404.
        try_files $uri $uri/ /index.html =404;
    }
}

Check NGINX configuration and if it is successful restart NGINX:

sudo nginx -t
sudo systemctl restart nginx.service

That's it! the admin panel is installed and accessible from: http://<hostname>:8011

Installing the Admin Panel on Apache2

To use Apache instead of NGINX, install apache2:

sudo apt update
sudo apt install apache2

Create a new site:

sudo nano /etc/apache2/sites-enabled/wexflow.conf

With the following content:

Listen 8011
<VirtualHost *:8011>
 # The ServerName directive sets the request scheme, hostname and port that
 # the server uses to identify itself. This is used when creating
 # redirection URLs. In the context of virtual hosts, the ServerName
 # specifies what hostname must appear in the request's Host: header to
 # match this virtual host. For the default virtual host (this file) this
 # value is not decisive as it is used as a last resort host regardless.
 # However, you must set it for any further virtual host explicitly.
 #ServerName www.example.com

 ServerAdmin webmaster@localhost
 DocumentRoot /opt/wexflow/Admin

 <Directory "/opt/wexflow/Admin">
   DirectoryIndex index.html
   AllowOverride All
   Require all granted
 </Directory>

 # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
 # error, crit, alert, emerg.
 # It is also possible to configure the loglevel for particular
 # modules, e.g.
 #LogLevel info ssl:warn

 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined

 # For most configuration files from conf-available/, which are
 # enabled or disabled at a global level, it is possible to
 # include a line for only one particular virtual host. For example the
 # following line enables the CGI configuration for this host only
 # after it has been globally disabled with "a2disconf".
 #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Enable the new site and reload apache2:

sudo a2ensite wexflow.conf
sudo systemctl reload apache2

If you want to install the admin panel on a web server, you'll need to edit the configuration file js/settings.js. Check out this section for full guideline.

MongoDB Configuration

To use MongoDB persistence provider, update /opt/wexflow/wexflow.service file as follows:

[Unit]
Description=wexflow
Wants=mongod.service
After=mongod.service

[Service]
ExecStart=/usr/bin/dotnet Wexflow.Server.dll
WorkingDirectory=/opt/wexflow/Wexflow.Server

[Install]
WantedBy=multi-user.target

Then, run install.sh again:

sudo /opt/wexflow/install.sh

If you want to use SQLServer, MySQL or PostgreSQL persistence provider, make sure to update Wants= and After= options with the matching services.

If you want to update Wexflow to a newer version, proceed as follows:

  1. Backup Wexflow folder /opt/wexflow/Wexflow
  2. Remove /opt/wexflow
  3. Download and extract Wexflow's .NET package in /opt/
  4. Copy Wexflow folder that you have saved in /opt/wexflow
  5. Add permissions:
sudo chown -R $USER:$USER /opt/wexflow
sudo chmod +x /opt/wexflow/install.sh
  1. Update and restart wexflow systemd service:
sudo /opt/wexflow/install.sh

That's it. Wexflow is updated.

For SQL Server, MySQL, PostgreSQL, or Oracle, adjust the Wants= and After= fields with the corresponding service names.

Updating Wexflow

To update Wexflow to a newer version, follow these steps:

  1. Back up the existing Wexflow folder:

    cp -r /opt/wexflow/Wexflow ~/Wexflow-backup
  2. Remove the current Wexflow installation:

    sudo rm -rf /opt/wexflow
  3. Download and extract the latest Wexflow .NET Linux package into /opt/:

    cd /opt
    # download and extract wexflow-x.x-linux-netcore.zip
  4. Restore the backed-up Wexflow folder:

    mv ~/Wexflow-backup /opt/wexflow/Wexflow
  5. Set the correct permissions:

    sudo chown -R $USER:$USER /opt/wexflow
    sudo chmod +x /opt/wexflow/install.sh
  6. Reinstall and restart the systemd service:

    sudo /opt/wexflow/install.sh

Wexflow is now updated and running.

macOS (.NET 9.0+ - Stable)

Follow these steps to run Wexflow using the .NET 9.0+ version on macOS:

  1. Download and install ASP.NET 9.0 Runtime
  2. Download and extract Wexflow's .NET package (wexflow-x.x-macos-netcore.zip) in /Applications/

That's it. You can run Wexflow as follows:

cd /Applications/wexflow/Wexflow.Server
dotnet Wexflow.Server.dll

You can open the admin panel at: http://localhost:8000/

You can sign in using the following credentials:

  • Username: admin
  • Password: wexflow2018

Installing the Admin Panel on a Web Server

You can also host Wexflow Admin Panel on any web server.

.NET 4.8 - Legacy

To install the admin panel on a web server:

  1. Copy the contents of the folder C:\Program Files\Wexflow\Admin\ to your web server's root or desired directory.
  2. If you're hosting the backend (Wexflow server) on a different machine, update the configuration file js/settings.js as follows:
window.Settings = (function () {
    // Get the current hostname or fallback to 'localhost'
    const hostname = window.location.hostname === "" ? "localhost" : window.location.hostname;

    // Default Wexflow backend port
    const port = 8000;

    // Use current protocol (http or https)
    const protocol = `${window.location.protocol}//`;

    return {
        Hostname: hostname,
        Port: port,
        Uri: `${protocol}${hostname}:${port}/api/v1/`,

        /**
         * To enable Server-Sent Events (SSE), set `SSE` to true
         * and ensure `Version` is set to "netcore"
         */
        SSE: false,

        /**
         * Version of the Wexflow server: "net48" for .NET Framework 4.8,
         * or "netcore" for .NET Core / .NET 5+.
         */
        Version: "net48",

        /**
         * Debounce delay in milliseconds for real-time updates.
         */
        DebounceDelay: 300,
    };
})();
  1. Replace hostname with the IP address or domain name of the machine where the Wexflow server is installed.
  2. Ensure that port 8000 (or the port you're using) is open in the firewall and accessible from the client machine.
  3. If your Wexflow server uses a different port, update the port value accordingly.
  4. If you're using HTTPS in Wexflow Server, be sure to use HTTPS on your web server as well.

.NET 9.0+ - Stable

To install the admin panel on a web server:

  1. Copy the contents of the folder Admin to your web server's root or desired directory:
    • Windows: .\Admin\
    • Linux: /opt/wexflow/Admin/
    • macOS: /Applications/wexflow/Admin/
  2. If you're hosting the backend (Wexflow server) on a different machine, update the configuration file js/settings.js as follows:
window.Settings = (function () {
    // Get the current hostname or fallback to 'localhost'
    const hostname = window.location.hostname === "" ? "localhost" : window.location.hostname;

    // Default Wexflow backend port
    const port = 8000;

    // Use current protocol (http or https)
    const protocol = `${window.location.protocol}//`;

    return {
        Hostname: hostname,
        Port: port,
        Uri: `${protocol}${hostname}:${port}/api/v1/`,

        /**
         * To enable Server-Sent Events (SSE), set `SSE` to true
         * and ensure `Version` is set to "netcore"
         */
        SSE: true,

        /**
         * Version of the Wexflow server: "net48" for .NET Framework 4.8,
         * or "netcore" for .NET Core / .NET 5+.
         */
        Version: "netcore",

        /**
         * Debounce delay in milliseconds for real-time updates.
         */
        DebounceDelay: 300,
    };
})();
  1. Replace hostname with the IP address or domain name of the machine where the Wexflow server is installed.
  2. Ensure that port 8000 (or the port you're using) is open in the firewall and accessible from the client machine.
  3. If your Wexflow server uses a different port, update the port value accordingly.
  4. If you're using HTTPS in Wexflow Server, be sure to use HTTPS on your web server as well.
⚠️ **GitHub.com Fallback** ⚠️