Skip to content

Installing

Akram El Assas edited this page Aug 3, 2025 · 67 revisions

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 Servy/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 Servy/NSSM

If you want to run Wexflow as a Windows Service (.NET 9.0+), it is recommended to use Servy or NSSM (Non-Sucking Service Manager). Both tools offer improved control over service startup behavior and working directories.

Installing the Service

First, Download Wexflow .NET 9.0+ package (wexflow-x.x-windows-netcore.zip), extract it to C:\Program Files\Wexflow Server\.

Servy
  1. Download and install Servy
  2. Open Servy
  3. In the Servy GUI:
    • Service Name: WexflowServer
    • Service Description: Wexflow Workflow Automation Engine
    • Process path: C:\Program Files\dotnet\dotnet.exe
    • Startup Directory: C:\Program Files\Wexflow Server\Wexflow.Server\
    • Process Parameters: Wexflow.Server.dll
  4. Click Install
NSSM
  1. Download NSSM, extract it to C:\Program Files\nssm and add C:\Program Files\nssm\win64\ to your PATH environment variable
  2. Open an elevated Command Prompt (Run as Administrator).
  3. 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

The admin panel is self-hosted and directly accessible at http://localhost:8000/ when you install wexflow.

However, if you want to install it 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 install the admin panel on 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, or PostgreSQL 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

The admin panel is self-hosted and by default accessible at: http://localhost:8000/

You can also host it 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.
  1. Install Guide
  2. HTTPS/SSL
  3. Screenshots
  4. Docker
  5. Configuration Guide
    1. Wexflow Server
    2. Wexflow.xml
    3. Admin Panel
    4. Authentication
  6. Persistence Providers
  7. Getting Started
  8. Android App
  9. Local Variables
  10. Global Variables
  11. REST Variables
  12. Functions
  13. Cron Scheduling
  14. Command Line Interface (CLI)
  15. REST API Reference
    1. Introduction
    2. JWT Authentication
    3. Sample Clients
      1. C# Client
      2. JavaScript Client
      3. PHP Client
      4. Python Client
      5. Go Client
      6. Rust Client
      7. Ruby Client
      8. Java Client
      9. C++ Client
    4. Security Considerations
    5. Swagger
    6. Workflow Notifications via SSE
      1. C# SSE Client
      2. JavaScript SSE Client
      3. PHP SSE Client
      4. Python SSE Client
      5. Go SSE Client
      6. Rust SSE Client
      7. Ruby SSE Client
      8. Java SSE Client
      9. C++ SSE Client
    7. Endpoints
  16. Samples
    1. Sequential workflows
    2. Execution graph
    3. Flowchart workflows
      1. If
      2. While
      3. Switch
    4. Approval workflows
      1. Simple approval workflow
      2. OnRejected workflow event
      3. YouTube approval workflow
      4. Form submission approval workflow
    5. Workflow events
  17. Logging
  18. Custom Tasks
    1. Introduction
    2. General
      1. Creating a Custom Task
      2. Wexflow Task Class Example
      3. Task Status
      4. Settings
      5. Loading Files
      6. Loading Entities
      7. Need A Starting Point?
    3. Installing Your Custom Task in Wexflow
      1. .NET Framework 4.8 (Legacy Version)
      2. .NET 8.0+ (Stable Version)
      3. Referenced Assemblies
      4. Updating a Custom Task
      5. Using Your Custom Task
    4. Suspend/Resume
    5. Logging
    6. Files
    7. Entities
    8. Shared Memory
    9. Designer Integration
      1. Registering the Task
      2. Adding Settings
    10. How to Debug a Custom Task?
  19. Built-in Tasks
    1. File system tasks
    2. Encryption tasks
    3. Compression tasks
    4. Iso tasks
    5. Speech tasks
    6. Hashing tasks
    7. Process tasks
    8. Network tasks
    9. XML tasks
    10. SQL tasks
    11. WMI tasks
    12. Image tasks
    13. Audio and video tasks
    14. Email tasks
    15. Workflow tasks
    16. Social media tasks
    17. Waitable tasks
    18. Reporting tasks
    19. Web tasks
    20. Script tasks
    21. JSON and YAML tasks
    22. Entities tasks
    23. Flowchart tasks
    24. Approval tasks
    25. Notification tasks
    26. SMS tasks
  20. Run from Source
  21. Fork, Customize, and Sync
Clone this wiki locally