Skip to main content

Acumatica Linux

  • September 15, 2025
  • 56 replies
  • 746 views

Show first post

56 replies

JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 17, 2025

I changed my permissions for the TemporaryAspFiles direcectory to allow execution. 

orangepi@zero-dev:~/Acumatica_ERP/TemporaryAspFiles/Acumatica_demo$ ls -l
total 232
-rw------- 1 orangepi orangepi     0 Sep 17 14:47 9sm87bmj.tmp
drwxr-xr-x 2 orangepi orangepi  4096 Sep 17 11:36 acumatica_demo
-rw------- 1 orangepi orangepi 17311 Sep 17 14:47 App_Web_9sm87bmj_10.cs
-rw------- 1 orangepi orangepi   575 Sep 17 14:47 App_Web_9sm87bmj_1.cs
-rw------- 1 orangepi orangepi  9409 Sep 17 14:47 App_Web_9sm87bmj_2.cs
-rw------- 1 orangepi orangepi  2088 Sep 17 14:47 App_Web_9sm87bmj_3.cs
-rw------- 1 orangepi orangepi  4034 Sep 17 14:47 App_Web_9sm87bmj_4.cs
-rw------- 1 orangepi orangepi  2788 Sep 17 14:47 App_Web_9sm87bmj_5.cs
-rw------- 1 orangepi orangepi  2787 Sep 17 14:47 App_Web_9sm87bmj_6.cs
-rw------- 1 orangepi orangepi  6129 Sep 17 14:47 App_Web_9sm87bmj_7.cs
-rw------- 1 orangepi orangepi  6536 Sep 17 14:47 App_Web_9sm87bmj_8.cs
-rw------- 1 orangepi orangepi  4205 Sep 17 14:47 App_Web_9sm87bmj_9.cs
-rwxr-xr-x 1 orangepi orangepi 17311 Sep 17 13:08 App_Web_bib28sqn_10.cs
-rwxr-xr-x 1 orangepi orangepi   575 Sep 17 13:08 App_Web_bib28sqn_1.cs
-rwxr-xr-x 1 orangepi orangepi  9409 Sep 17 13:08 App_Web_bib28sqn_2.cs
-rwxr-xr-x 1 orangepi orangepi  2088 Sep 17 13:08 App_Web_bib28sqn_3.cs
-rwxr-xr-x 1 orangepi orangepi  4034 Sep 17 13:08 App_Web_bib28sqn_4.cs
-rwxr-xr-x 1 orangepi orangepi  2788 Sep 17 13:08 App_Web_bib28sqn_5.cs
-rwxr-xr-x 1 orangepi orangepi  2787 Sep 17 13:08 App_Web_bib28sqn_6.cs
-rwxr-xr-x 1 orangepi orangepi  6129 Sep 17 13:08 App_Web_bib28sqn_7.cs
-rwxr-xr-x 1 orangepi orangepi  6536 Sep 17 13:08 App_Web_bib28sqn_8.cs
-rwxr-xr-x 1 orangepi orangepi  4205 Sep 17 13:08 App_Web_bib28sqn_9.cs
-rwxr-xr-x 1 orangepi orangepi 17311 Sep 17 11:37 App_Web_fwnnz0gm_10.cs
-rwxr-xr-x 1 orangepi orangepi   575 Sep 17 11:37 App_Web_fwnnz0gm_1.cs
-rwxr-xr-x 1 orangepi orangepi  9409 Sep 17 11:37 App_Web_fwnnz0gm_2.cs
-rwxr-xr-x 1 orangepi orangepi  2088 Sep 17 11:37 App_Web_fwnnz0gm_3.cs
-rwxr-xr-x 1 orangepi orangepi  4034 Sep 17 11:37 App_Web_fwnnz0gm_4.cs
-rwxr-xr-x 1 orangepi orangepi  2788 Sep 17 11:37 App_Web_fwnnz0gm_5.cs
-rwxr-xr-x 1 orangepi orangepi  2787 Sep 17 11:37 App_Web_fwnnz0gm_6.cs
-rwxr-xr-x 1 orangepi orangepi  6129 Sep 17 11:37 App_Web_fwnnz0gm_7.cs
-rwxr-xr-x 1 orangepi orangepi  6536 Sep 17 11:37 App_Web_fwnnz0gm_8.cs
-rwxr-xr-x 1 orangepi orangepi  4205 Sep 17 11:37 App_Web_fwnnz0gm_9.cs
-rwxr-xr-x 1 orangepi orangepi     0 Sep 17 13:08 bib28sqn.tmp
-rwxr-xr-x 1 orangepi orangepi     0 Sep 17 11:37 fwnnz0gm.tmp
orangepi@zero-dev:~/Acumatica_ERP/TemporaryAspFiles/Acumatica_demo$

 

I’m wonder if I need to do the same for the files residing in the /Acumatica_demo directory which is my web based tenant?

 


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 17, 2025

It doesn’t seems that execute permissions for both TemporaryAspFiles and /Acumatica_demo didn’t solved the bad image exception. 

One thing that does puzzle me is there was no reference in the Web.config that pointed to the web server's web path for /Acumatica_demo.

I'm thinking there is still another config file Acumatica uses beyond Web.config.


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 18, 2025

I think I figured out what the issue is. Mono isn’t creating the App_Web..._0.cs TemporaryAspFiles. This looks like it defines the paths to the webroot structure. The functions in this file look Windows / IIS specific. (setting IIS featues) I’m guessing this is area Acumatica will have to address when they move to .NET Core.

This file is also pointing to a web.config in the .NET Windows system path (among others) which I have not touched on the Linux side. 

The sad part is Mono is really fast and lightweight. A Linux / Mono runtime version would have been nice to get running. Without an Acumatica internal developer taking interest in this, I feel I'm dead in the water.

On a positive note I think using Mono / C#  to develop interfaces with direct access to the Acumatica DB in a Clouds-R.Us sub-domain was worth the effort. I personally prefer using ScriptBasic. 

 

 


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 18, 2025

This resolves my file permissions question.

When running Mono ASP.NET on Linux, you typically don't need to set explicit executable permissions on most of your application's files. The files that do require the executable bit set are the shell scripts used to start your application and any native executables called by your code. 

The Mono runtime itself is a JIT (just-in-time) compiler that executes the .exe and .dll files. The ASP.NET files, like your C# code and configuration, are read by the Mono runtime, not executed directly by the operating system. 

 

 


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 18, 2025

The mystery unfolds.

Acumatica's web structure is defined by both the web.config file and its site map, with customizations layered on top using customization packages. As an ASP.NET application, it uses these components together to control application-level settings, navigation, and user interface layouts. 

The site map defines the navigational structure and menu items within the Acumatica application. 

This is why Mono was complaining about a bad image because it was trying to use the site map that was generated for the Windows file location paths. 


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 18, 2025

It looks like my issue is with web_project_x.config and the security method used. The mscorlib seems Windows specific and not a feature of Mono. This ends trying to get Acumatica running on Linux under Mono.

 


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 19, 2025

FWIW

Acumatica does not have a web_project_x.config file that works natively under Linux, because the full Acumatica application server requires a Windows environment. The platform is built on the Microsoft .NET Framework and relies on Internet Information Services (IIS), which are both Windows-specific. 

Here is a breakdown of Acumatica and Linux compatibility:

  • Unsupported configurations: While community members have attempted to run Acumatica on Linux using tools like Mono and Apache, these are unsupported configurations. The project has proven difficult due to the many Windows-specific dependencies within the application.
  • The web.config file is Windows-only: The web.config file is a core part of the ASP.NET stack that runs under IIS. While it stores configuration data, the file itself is part of a Windows-specific framework and is not directly transferable to a Linux environment.
  • .NET Core is the future: Acumatica is exploring future cross-platform compatibility by moving its platform to .NET Core and ASP.NET Core. While this is a step toward future Linux support, it primarily applies to new applications rather than the existing legacy platform.
  • Cloud deployment is a workaround: You can access Acumatica from a Linux machine using a web browser. For deployment, Acumatica offers cloud-based solutions through partners or supports on-premise deployments on a Windows server of your choice. 

JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 19, 2025

My goal is to offer AWS based Ubuntu Linux Acumatica remote tenant DBs as a Clouds-R.Us sub-domain or as a customer owned AWS instance. 

This offers direct / private access to your DB for instant SQL statement queries using your favorite. NET tools (C#, ASP.NET, VB.NET, ...) or ScriptBasic which is C in play clothes.

I feel Acumatica needs to reinstate the ability for their SaaS customers to chose if they rather have THEIR data in their possession.

 


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 19, 2025

The mscorlib on Mono is supported (core .NET component) but is unique to Mono. I said in an earlier post mscorlib wasn't supported on Mono which was incorrect.

I wish Acumatica would be more open with their Linux .NET Core plans and current status.

 


snikomarov36
Acumatica Employee
Forum|alt.badge.img
  • Acumatica Employee
  • September 19, 2025

@JSpikowski I think you spend a lot of time on an interesting project. 
Acumatica is moving to be a cross platform solution. However, ERP software is very big, so, unfortunately, the change does not happen as fast as some developers would like.  

Here are several things that prevent Acumatica from running on Linux:

  • The Classic UI in Acumatica is based on ASP.Net Web Forms technology which is not included into .Net Core and newer .Net run-times. This dependency bounds Acumatica to .Net Framework.

    While the Modern UI is announced for Acumatica 2025 R2, a lot of effort is expected to migrate every customer and update all customizations. So, for some time (I would estimate it in two major releases, but this is just my opinion) there will be a compatibility mode with two UIs available. Only after it is over, the dependency on the Classic UI can be dropped.

    I also think that it is highly unlikely that ASP.Net  WebForms support in Mono will be enough to run Acumatica as is discussed here. And the goal is the modern .Net runtime, not Mono.
     
  • Acumatica uses some of Windows APIs internally for some of its platform features. This means, that even after migration to .Net Core Acumatica won’t run on Linux without further work.
     
  • There are some other features that rely on libraries present only for .Net Framework. Acumatica will have to carefully consider which dependencies have to be dropped and which will need a rewrite with some alternative. 

JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 19, 2025

Thanks for the feedback!

I had some configuration issues with my first try at this. I may give it one more try. I hate giving up on something based on assumptions, rather than facts.

I've seen Mono / Linux / iOS logic being generated in the code. If anything is going to get Acumatica running on Linux in its current form, it's Mono not .NET Core.

Mono has historically provided support for ASP.NET Web Forms. The Mono Project's documentation explicitly states that it includes full support for ASP.NET Web Forms and Web Services, aiming for compatibility with applications developed using the .NET Framework.

I'm encouraged that Microsoft bought Mono and then donated it to the WineHQ foundation. I'm running  the 2023 release with. NET Framework 4.7 / 4.8 features.


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 19, 2025

@snikomarov36 

How will today's Windows C# programmer with a web development focus transition from web forms to a JavaScript based UI? Will this be transparent to them or will they have to learn real web development?

 


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 20, 2025

I view .NET Core as Microsoft's attempt at saving their technology and going cross platform and let the community help build it for them for free. Problem is Microsoft isn't going to support anything that isn't based on their Windows platform. If you're okay with the Microsoft leash, I'm sure Microsoft will find a way to monetize it like they do with Copilot.

Mono was / is a true open source .NET cross platform project without Microsoft steering. It strives to retain .NET features programmers count on and not disappear and then show up again as a feature. (COM Interop)

If Acumatica is too Windows sticky and I can't get it to run, I still have a great .NET platform for those using the Clouds-R.Us DB and front-end interface solution on Linux. (Ubuntu / AWS)


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 20, 2025

One of my issues with the last attempt was how I had Node.js support configured. Mono supports Edge.js which supports .NET communications and needed to be installed.

The Modern UI isn't a priority getting Acumatica running on Linux.

orangepi@zero-dev:~$ npm install edge-js

added 3 packages in 5m
orangepi@zero-dev:~$

That went well. 🤗


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 20, 2025

Edge.js will also be a requirement for .NET Core when Acumatica gets around to it.

This is the needed change to Web.config for Edge.js support rather than Node.js-win.

<configuration>
<appSettings>
<!-- Explicitly set Edge.js to use Mono -->
<add key="EDGE_USE_CORECLR" value="0" />
</appSettings>
<system.webServer>
<handlers>
<!-- Ensure the handler for Node.js is properly configured -->
<add name="iisnode" path="app.js" verb="*" modules="iisnode" />
</handlers>
</system.webServer>
</configuration>

 


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 21, 2025

I’m pretty sure I have everything configured right this time around but I’m still getting an exception error. If someone sees something in the trace that could give me a clue, that would be great. It seemed to run without giving an error a lot longer this time.

 

TemporaryAspFile

orangepi@zero-dev:~/Acumatica_ERP/TemporaryAspFiles/Acumatica_demo$ ls -l
total 76
-rw------- 1 orangepi orangepi 17341 Sep 20 17:38 App_Web_vb5p4ibf_10.cs
-rw------- 1 orangepi orangepi   605 Sep 20 17:38 App_Web_vb5p4ibf_1.cs
-rw------- 1 orangepi orangepi  9439 Sep 20 17:38 App_Web_vb5p4ibf_2.cs
-rw------- 1 orangepi orangepi  2118 Sep 20 17:38 App_Web_vb5p4ibf_3.cs
-rw------- 1 orangepi orangepi  4064 Sep 20 17:38 App_Web_vb5p4ibf_4.cs
-rw------- 1 orangepi orangepi  2818 Sep 20 17:38 App_Web_vb5p4ibf_5.cs
-rw------- 1 orangepi orangepi  2817 Sep 20 17:38 App_Web_vb5p4ibf_6.cs
-rw------- 1 orangepi orangepi  6159 Sep 20 17:38 App_Web_vb5p4ibf_7.cs
-rw------- 1 orangepi orangepi  6566 Sep 20 17:38 App_Web_vb5p4ibf_8.cs
-rw------- 1 orangepi orangepi  4235 Sep 20 17:38 App_Web_vb5p4ibf_9.cs
-rw------- 1 orangepi orangepi     0 Sep 20 17:38 vb5p4ibf.tmp
orangepi@zero-dev:~/Acumatica_ERP/TemporaryAspFiles/Acumatica_demo$

Mono Debug

I tried running the /Frames/Login.aspx page and got the same error. It looks to me like it isn't creating the *_0.cs file which is causing this load error.

The _0.cs file defines the path and code files used to build the form temporary DLL. Looking at the site map xml file, it uses a system variable appdir which makes me think it's trying to pass a Windows environment setting. I'm wondering if I need to set this environment variable in Mono?

(Google AI)

APPDIR is a context-specific variable, typically representing the application's root installation directory during a setup process or within a batch file. In contrast, the PATH is a permanent system-wide environment variable that allows the command line to find and run executable files regardless of the current directory. 

 


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 21, 2025

I may be on the right path, literally.

<VirtualHost *:80>
    ServerName yourdomain.com
    DocumentRoot /path/to/your/application/directory

    MonoSetEnv APPDIR="/path/to/your/application/directory"
    # Other Mono configuration directives
    MonoApplications "/:/path/to/your/application/directory"
</VirtualHost>


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 21, 2025

snikomarov36,

Can you tell me where / how Acumatica sets the web environmental variable APPDIR?

Is this the tenant directory name out of 'Acumatica ERP' or a full path to it?


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 21, 2025

Linux Node.js was a requirement before Edge.js could be installed. That tells me Mono uses Edge.js as a wrapper for the native OS Node.js. Edge.js being installed by NPM sort of confirms it.


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 21, 2025

snikomarov36

I think my only problem getting this running is a pathing issue. I need to get APPDIR defined and fix any other hard coded Windows paths in configuration files. The main Web.config paths have been changed and seem to be working.

The problem I'm having is creating the *_0.cs files. The *_10.cs which is the last built in TemporaryAspFiles seems to error with a Load() error. The paths being generated in the *_1.cs through *_10.cs show a proper Linux path for file locations.

I would really appreciate your help with getting these paths set correctly in the configuration files with hard coded Windows paths.

I uploaded to the server in a zip the temporary .cs files built under Linux. 

TemporaryAspFiles

 


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 24, 2025

Update

I'm still unable to get by the Bad Image exception that I posted from the Mono Debug screen. Mono is able to build *_1.cs through *_10.cs of the of the TemporaryAspFiles DLL. The *_0.cs file never gets built which looks like a file structure definition file on Windows. All the paths look correct in the files it did build. There is a *.tmp file with zero length is part of the set. I'm assuming it's from *_0.cs not getting built or *_11.cs failing its creation.

Seeing Acumatica run in its current state on Linux as a preview, could make the .NET Core destination a bit easier. I would hate to give up on this when getting this running could be due a configuration change I missed.

If you are familiar with the TemporaryAspFiles build process and willing to take a peek at the zip I posted and put on my server (*_1.cs - *_10.cs) and the stack trace Mono Debug provided to tell me why I'm getting the exception, I hope it will be the only issue to get it running. I'm a C programmer, not a C# programmer but can follow its syntax.

 

 


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 25, 2025

The Acumatica TemporaryAspFiles DLL build process.

 

 


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 25, 2025

Deer Acumatica,

I think I'm missing my ANTLRs and need a cup of Java.

The question remains. If ANTLR and its Java dependency isn't working under Linux due to not being installed, how is *_1.cs through *.10.cs getting built?

ANTLR, specifically its C# target runtime, can generally work with Mono under Linux. However, there have been historical challenges and considerations.

Key points:

  • Runtime Compatibility: 

    The ANTLR C# runtime is designed to be compatible with .NET, and Mono aims to provide a compatible implementation of the .NET framework on Linux. Therefore, in principle, ANTLR-generated parsers and lexers should run on Mono.

  • Build System Issues (Historical): 

    Older versions of ANTLR and Mono experienced issues with build systems. For example, a known bug prevented xbuild (Mono's equivalent of MSBuild) from properly loading ANTLR's MSBuild targets file, making direct compilation of projects using the ANTLR C# runtime difficult on Linux. This might necessitate manual compilation steps or alternative build configurations.

  • Java Dependency for Tool: 

    The ANTLR tool itself, which generates the parser and lexer code from your grammar, is written in Java. This means you will need a Java Runtime Environment (JRE) installed on your Linux system to run the ANTLR tool, regardless of whether you are targeting C# with Mono.

  • Testing and Setup: 

    When setting up ANTLR with Mono on Linux, it is recommended to ensure you have Mono installed correctly and that your build process (if not using a fully compatible IDE like Visual Studio on Windows) can correctly locate and utilize the ANTLR runtime and generated C# code.

While historical issues existed, modern ANTLR versions and improvements in Mono (and the broader .NET ecosystem with .NET Core/6+) have likely mitigated some of these challenges. It is generally feasible to use ANTLR with Mono on Linux, but you may need to be mindful of potential build system variations compared to a Windows/.NET environment.


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 26, 2025

I believe this ANTLR issue is the end of the road for trying to get Acumatica running on Linux with Mono. Acumatica relies on too many on-the-fly development tools to invest anymore time into this effort. It's always good to know where the wall is rather than just assuming it exists.

As of late 2025, the original Mono Project is archived, and Microsoft recommends that users migrate to .NET instead. While older ANTLR packages for Mono did exist, the current ANTLR workflow no longer relies on the legacy Mono runtime. 

I still believe Mono offers a lightweight .Net framework for ASP.NET with webform support for Linux environment development.


JSpikowski
Jr Varsity II
Forum|alt.badge.img
  • Author
  • Jr Varsity II
  • September 26, 2025

To prove this is ANTLR issue, I may try creating the temp DLL using the *_#.cs files from the Windows version of the tenant and see if Mono will create the DLL.

My goal all along was to create a 'runtime' version of Acumatica on Linux.