Recent content https://ledgersmb.org/index.php/ en Open Source ERP: accounting, invoicing and more https://ledgersmb.org/index.php/content/open-source-erp-accounting-invoicing-and-more <span class="field field--name-title field--type-string field--label-hidden">Open Source ERP: accounting, invoicing and more</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><h1>Mission</h1> <p><a href="/statement-direction-ledgersmb">The LedgerSMB project</a> provides small and mid-size businesses with solid open source <a href="https://en.wikipedia.org/wiki/Accounting_software">accounting software</a>: integrating invoicing, order processing, quotations and more (<a href="https://en.wikipedia.org/wiki/Enterprise_resource_planning">ERP</a>). LedgerSMB aims to provide a strong (multi-currency accounting) basis to build your business on -- without vendor lock-in.</p> <p>The project team considers correctness and performance equally important key usability features and is dedicated to providing both, even on the biggest data sets.</p> <h1><span style="line-height: 36.4000015258789px;">Features</span></h1> <ul><li>Sales (Invoices, Orders, Quotations)</li> <li>Receivables &amp; Payables</li> <li>General ledger</li> <li>Inventory management</li> <li>Fixed asset accounting &amp; depreciation</li> <li>Profit &amp; cost centers, departments, projects</li> <li>Output documents in PDF, HTML, CSV, Office formats</li> <li>Mail documents (e.g. invoices) from within the application</li> <li>Translatable to your language (comes with 45 languages)</li> <li><a href="http://ledgersmb.org/features">and more</a></li> </ul><p>The fact that LedgerSMB is <a href="https://opensource.org/osd">open source</a> - meaning that the source code is freely available - makes it even more customizable and flexible.</p> <h1 style="line-height: 36.4px;">Use-cases</h1> <h2>By company size</h2> <p>Company size is measured by its data and data growth. There are companies known to run with these numbers (as per April 2023):</p> <ul><li>Transactions and invoices: 650 000 accumulated, growing over 50 000 per month</li> <li>Journal lines (across invoices and general journal): 2.3 million accumulated, growing over 170 000 per month</li> <li>Customers and vendors: 260 000</li> <li>Products: 40 000 configured products with inventory tracking</li> </ul><p>Most installations are much smaller (50 to 500 transactions per month). Many of the more complex features required for larger companies remain hidden until explicitly configured. This way the software stays simple for smaller, less demanding companies.</p> <h2>By industry</h2> <p>While LedgerSMB will generally work in any industry for its basic accounting functionalities, it is known to have been deployed in the following types of businesses:</p> <ul><li>Communications<br /> e.g. VOIP services</li> <li>Factoring<br /> i.e. invoicing of others</li> <li>(IT) Services<br /> e.g. Website design, IT Support, hourly services</li> <li>Financial services<br /> e.g. Investment firms</li> <li>Rental<br /> e.g. Housing rental, IT Hosting</li> <li>Retail<br /> e.g. Sewing necessities</li> <li>Trade<br /> e.g. Trading pet foods</li> </ul><p>Many of these applications include integration with domain-specific applications to perform specific business functions.</p> <p>Next to the ones listed above, various manufacturing setups have been deployed, ranging from standard (batch based) mass production, to make-to-order one-time product configurations. The latter being supported by a custom developed product configuration plugin.</p> <h2>By country</h2> <p>Although the nature of open source projects makes it hard to know where our software is being used; however, the project is aware of installations in the <span class="mx_EventTile_body markdown-body" dir="auto">Australia, Barbados, Canada, Colombia, Denmark, Estonia, European Union, Hong Kong, Hungary, Indonesia, Malaysia, Myanmar, Netherlands, Norway, Philippines, United Kingdom and United States.</span></p> <p><span class="mx_MTextBody mx_EventTile_content"><span class="mx_EventTile_body" dir="auto">The software can run in a different language for each user. Also: documents (invoices, orders, etc) can be produced in selectable languages, different from the user's language.</span></span></p> <h1>Contributions</h1> <p>The project welcomes any and all contributions. With lots of areas which would benefit from more attention, we like to invite newcomers to read our <a data-entity-substitution="canonical" data-entity-type="node" data-entity-uuid="c8075f26-dba4-48f6-bf53-3702c418dbdd" href="/index.php/content/community-guide" title="Community guide">community guidelines</a> and start out simple. Good (and helpful!) starting points are <a data-entity-substitution="canonical" data-entity-type="node" data-entity-uuid="3fc7f2b0-0844-4ae0-868b-90b968686d0f" href="/index.php/community-guide/community-guide/translating" title="Translating">translation contributions</a> as well as reviewing our (beginners) documentation.</p> <h1 style="line-height: 36.4px;">Current versions</h1> <p>Our current stable version is <a href="https://github.com/ledgersmb/LedgerSMB/tree/1.11"><em><strong>1.11</strong></em></a> - initially released on Oct 3, 2023. This release has a wide variety of improvements and code cleanups: it features support for barcode scanner input on invoices, printing of GL transactions, cross-referencing between reversed and reversing transactions, fixed migration from SQL-Ledger 2.8/Ledger123, improved migration from not-the-latest LedgerSMB 1.3 and much more... More details about this release can be found in the <a data-entity-substitution="canonical" data-entity-type="node" data-entity-uuid="80fbb033-abf7-4781-8549-2fc5cf113e80" href="/index.php/content/111-release-notes" title="1.11 release notes">release notes</a>. This release will see its End-Of-Life for community support on <strong>Oct 3, 2025</strong>.</p> <p>Our current old-stable version is <a href="https://github.com/ledgersmb/LedgerSMB/tree/1.10"><em><strong>1.10</strong></em></a> - initially released on Oct 8, 2022. This release has a wide variety of improvements and code cleanups: it features support for customized workflows, the ability to export document templates from the database, much more flexibility for customization by dependency injection, cleaned up document templates, login.pl &amp; setup.pl being translated based on browser preferences and much more... More details about this release can be found in the <a data-entity-substitution="canonical" data-entity-type="node" data-entity-uuid="fd6419af-309a-4ef9-9686-cfd876195cd0" href="/index.php/content/110-release-notes" title="1.10 release notes">release notes</a>. This release will see its End-Of-Life for community support on <strong>Oct 8, 2024</strong>.</p> <h1>Older versions</h1> <p>Version is <a href="https://github.com/ledgersmb/LedgerSMB/tree/1.9"><em><strong>1.9</strong></em></a> has been declared End-Of-Life on Sep 24, 2023 (released on Sep 24, 2021). This release has a wide variety of improvements and code cleanups: it features faster loading of the menu, fixed migrations from 1.2, the ability to upload a logo into the database and include it in printed documents and much more... More details about this release can be found in the <a data-entity-substitution="canonical" data-entity-type="node" data-entity-uuid="ff891fb8-f65b-486c-a374-1510c5c24975" href="/index.php/content/18-release-notes" title="1.8 release notes">release notes</a>.</p> <p>Version is <a href="https://github.com/ledgersmb/LedgerSMB/tree/1.8"><em><strong>1.8</strong></em></a> has been declared End-Of-Life on Sep 04, 2022 (released on Sep 04, 2020). This release has a wide variety of improvements and code cleanups: it features faster loading of the menu, fixed migrations from 1.2, the ability to upload a logo into the database and include it in printed documents and much more... More details about this release can be found in the <a data-entity-substitution="canonical" data-entity-type="node" data-entity-uuid="ff891fb8-f65b-486c-a374-1510c5c24975" href="/index.php/content/18-release-notes" title="1.8 release notes">release notes</a>.</p> <p>Version is <em><a href="https://github.com/ledgersmb/LedgerSMB/tree/1.7"><strong>1.7</strong></a></em> has been declared End-Of-Life on Oct 04, 2022 (released on Oct 04, 2019). This release focusses on improved support for foreign currency transactions, lifting the restriction of a single rate per currency per day; UI improved by showing both the functional and foreign currency amounts. Additionally, a lot of work has been spent on increasing the application stability through more rigorous testing and code cleanup. A full summary of the changes since 1.6 can be found in the release announcement. More details on this release can be found in the <a href="https://ledgersmb.org/content/17-release-notes">release notes</a>.</p> <p>Version <strong><em>1.6</em></strong> has been declared End-Of-Life on 2021, June 10th (released on June 10 2018). With 33 patch releases, we consider this version highly stable. Although there are more patch releases for 1.6 than thee are for 1.5, their size is on average smaller, attesting to the project's promise of delivering increasing software quality.</p> <p>Version <em><strong>1.5</strong></em> has been declared End-Of-Life on 2019, Dec 23rd (released on 2016-12-23). With 30 patch releases, we consider this version highly stable. We believe that the lower number of patch releases over a similar life-span as 1.4 is an indication of better stability of the initial 1.5.0 release. We conclude that the project is delivering on its promise of increasing stability of minor releases.</p> <p>Version <em><strong>1.4</strong></em> has been declared End-Of-Life on 2017, Sep 15th (released on 2014-09-15). With 42 patch releases, we consider this version highly stable.</p> <p>Version <em><strong>1.3</strong></em> has been declared End-Of-Life on 2015, Dec 23rd (released on 2011-10-11). With a total of 48 patch releases since the initial release in October 2011, we consider this version highly stable.</p> <p>Although their use is highly discouraged for both security reasons and data stability issues, older versions are still available for <a href="http://download.ledgersmb.org/f/Releases/">download</a>. When using LedgerSMB versions 1.6 or earlier, you should to do so in only in a highly restricted network environment, because of known security problems.</p> <p>It's project policy to provide at least 24 months of community support for every 1.x release series, aiming to have two versions supported at any time.</p> <h1><a id="history" name="history"></a>History</h1> <p>LedgerSMB began in 2006 as a fork of the popular general ledger software package called <a class="ext" href="http://www.sql-ledger.com/" style="text-decoration: underline; ">SQL-Ledger</a> largely written and maintained by Dieter Simader since 1999. Versions 1.2 and earlier are heavily based on SQL-Ledger's code.<br /> As of 1.3 our codebase is quickly moving away from what we inherited.<br /> As of 1.5 our User Interface has moved to Dojo Javascript libraries providing a more dynamic feel.<br /> Some of the improvements that we've made to the code base so far include:</p> <ul><li>Enhanced security</li> <li>More reports</li> <li>Better data integrity controls</li> <li>More code quality control measures</li> <li>Major code size reduction while growing functionality</li> <li>Unit testing Infrastructure to help ensure once an issue is fixed it stays fixed</li> <li>BDD (headless automated browser) Testing infrastructure</li> <li>A very large number of tests against both testing frameworks</li> </ul><p>Travel in our history with Internet Archive and <a href="http://wayback.archive.org/web/*/http://www.ledgersmb.org">WayBackMachine</a>.</p> <p> </p> <p>Matrix support request ownership proof: ehuels@gmail.com</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>Chris Travers</span></span> <span class="field field--name-created field--type-created field--label-hidden"><time datetime="2007-03-17T23:08:41-07:00" title="Saturday, March 17, 2007 - 23:08" class="datetime">Sat, 03/17/2007 - 23:08</time> </span> <section class="field field--name-comment-node-page field--type-comment field--label-hidden comment-wrapper"> </section> Sun, 18 Mar 2007 06:08:41 +0000 Chris Travers 153 at https://ledgersmb.org https://ledgersmb.org/index.php/content/open-source-erp-accounting-invoicing-and-more#comments Screenshots for 1.11 https://ledgersmb.org/index.php/content/screenshots-111 <span class="field field--name-title field--type-string field--label-hidden">Screenshots for 1.11</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>ehu</span></span> <span class="field field--name-created field--type-created field--label-hidden"><time datetime="2023-11-10T11:14:46-08:00" title="Friday, November 10, 2023 - 11:14" class="datetime">Fri, 11/10/2023 - 11:14</time> </span> <div class="field field--name-field-topic field--type-entity-reference field--label-above"> <div class="field__label">Topic</div> <div class="field__items"> <div class="field__item"><a href="/index.php/taxonomy/term/141" hreflang="en">Screenshots</a></div> </div> </div> <div class="field field--name-field-release field--type-entity-reference field--label-above"> <div class="field__label">Release</div> <div class="field__items"> <div class="field__item"><a href="/index.php/taxonomy/term/153" hreflang="en">1.11</a></div> </div> </div> <div class="field field--name-field-media field--type-entity-reference field--label-hidden field__items"> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <a href="https://ledgersmb.org/sites/default/files/2023-11/2b32c11fa3ef9e39b866ed707ba2a2f0-step-post-0.png" aria-controls="colorbox" aria-label="{&quot;alt&quot;:&quot;1.11 Login screen&quot;}" role="button" title="1.11 Login screen" data-colorbox-gallery="gallery-all-6MwWcvV9eBY" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;1.11 Login screen&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2023-11/2b32c11fa3ef9e39b866ed707ba2a2f0-step-post-0.png?itok=w7oDBqjF" width="325" height="230" alt="1.11 Login screen" loading="lazy" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <a href="https://ledgersmb.org/sites/default/files/2023-11/ad0e2b300d399b6e423d047f2f8eb040-step-post-0.png" aria-controls="colorbox" aria-label="{&quot;alt&quot;:&quot;1.11 Admin interface login&quot;}" role="button" title="1.11 Admin interface login" data-colorbox-gallery="gallery-all-6MwWcvV9eBY" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;1.11 Admin interface login&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2023-11/ad0e2b300d399b6e423d047f2f8eb040-step-post-0.png?itok=Ut9eN4JU" width="325" height="230" alt="1.11 Admin interface login" loading="lazy" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <a href="https://ledgersmb.org/sites/default/files/2023-11/1e697f84931add8190179970614c7c8f-step-post-0.png" aria-controls="colorbox" aria-label="{&quot;alt&quot;:&quot;1.11 Welcome screen (after login)&quot;}" role="button" title="1.11 Welcome screen (after login)" data-colorbox-gallery="gallery-all-6MwWcvV9eBY" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;1.11 Welcome screen (after login)&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2023-11/1e697f84931add8190179970614c7c8f-step-post-0.png?itok=wY0K1LZZ" width="325" height="230" alt="1.11 Welcome screen (after login)" loading="lazy" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <a href="https://ledgersmb.org/sites/default/files/2023-11/1e697f84931add8190179970614c7c8f-step-post-4.png" aria-controls="colorbox" aria-label="{&quot;alt&quot;:&quot;1.11 Batch post (approval)&quot;}" role="button" title="1.11 Batch post (approval)" data-colorbox-gallery="gallery-all-6MwWcvV9eBY" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;1.11 Batch post (approval)&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2023-11/1e697f84931add8190179970614c7c8f-step-post-4.png?itok=B6cNkf9E" width="325" height="230" alt="1.11 Batch post (approval)" loading="lazy" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <a href="https://ledgersmb.org/sites/default/files/2023-11/823cfa711d89778dd6e0d74b6d772f48-step-post-12.png" aria-controls="colorbox" aria-label="{&quot;alt&quot;:&quot;1.11 Bank reconciliation&quot;}" role="button" title="1.11 Bank reconciliation" data-colorbox-gallery="gallery-all-6MwWcvV9eBY" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;1.11 Bank reconciliation&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2023-11/823cfa711d89778dd6e0d74b6d772f48-step-post-12.png?itok=qUw5qZVA" width="325" height="230" alt="1.11 Bank reconciliation" loading="lazy" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <a href="https://ledgersmb.org/sites/default/files/2023-11/67b9ff63df723ffc820c4c63f77016f1-step-post-13.png" aria-controls="colorbox" aria-label="{&quot;alt&quot;:&quot;1.11 Balance sheet&quot;}" role="button" title="1.11 Balance sheet" data-colorbox-gallery="gallery-all-6MwWcvV9eBY" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;1.11 Balance sheet&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2023-11/67b9ff63df723ffc820c4c63f77016f1-step-post-13.png?itok=NPl8chZO" width="325" height="230" alt="1.11 Balance sheet" loading="lazy" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <a href="https://ledgersmb.org/sites/default/files/2023-11/11054eefee3130c019ef7ce14a538d0c-step-post-26.png" aria-controls="colorbox" aria-label="{&quot;alt&quot;:&quot;1.11 AR transaction entry&quot;}" role="button" title="1.11 AR transaction entry" data-colorbox-gallery="gallery-all-6MwWcvV9eBY" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;1.11 AR transaction entry&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2023-11/11054eefee3130c019ef7ce14a538d0c-step-post-26.png?itok=RCJDsXZ4" width="325" height="230" alt="1.11 AR transaction entry" loading="lazy" class="image-style-max-325x325" /> </a> </div> </article> </div> <div class="field__item"><article class="media media--type-screenshots media--view-mode-full"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <a href="https://ledgersmb.org/sites/default/files/2023-11/11054eefee3130c019ef7ce14a538d0c-step-post-91.png" aria-controls="colorbox" aria-label="{&quot;alt&quot;:&quot;1.11 GL transaction entry&quot;}" role="button" title="1.11 GL transaction entry" data-colorbox-gallery="gallery-all-6MwWcvV9eBY" class="colorbox" data-cbox-img-attrs="{&quot;alt&quot;:&quot;1.11 GL transaction entry&quot;}"><img src="/sites/default/files/styles/max_325x325/public/2023-11/11054eefee3130c019ef7ce14a538d0c-step-post-91.png?itok=IaI07bb7" width="325" height="230" alt="1.11 GL transaction entry" loading="lazy" class="image-style-max-325x325" /> </a> </div> </article> </div> </div> <section class="field field--name-comment-node-article field--type-comment field--label-hidden comment-wrapper"> </section> Fri, 10 Nov 2023 19:14:46 +0000 ehu 648 at https://ledgersmb.org https://ledgersmb.org/index.php/content/screenshots-111#comments Download https://ledgersmb.org/index.php/content/download <span class="field field--name-title field--type-string field--label-hidden">Download</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><h1>Maintained releases</h1> <p>The current stable release line is 1.10. For more information about older versions, see <a href="http://ledgersmb.org/faq/support/which-versions-do-you-support">the FAQ item about supported releases</a>. Versions 1.6 and older should no longer be used due to known security issues that will not be resolved in that code base.</p> <h1>Official release distribution</h1> <div data-embed-button="file_browser" data-entity-embed-display="image:image" data-entity-embed-display-settings="{&quot;image_style&quot;:&quot;&quot;,&quot;image_link&quot;:&quot;&quot;}" data-entity-type="file" data-entity-uuid="db4ffe70-23c4-48ef-8c9f-0405eb494751" class="align-left embedded-entity" data-langcode="und"> <img loading="lazy" src="/sites/default/files/lsmb_0%20%281%29.jpg" /></div> <p> The latest <strong>official release</strong> of LedgerSMB is always at <a href="http://download.ledgersmb.org/f/">download site</a>. Releases are signed with GPG to assert integrity. Our public GPG key can be found on <a href="http://pgp.mit.edu:11371/pks/lookup?op=get&amp;search=0x39A629558DA0AF10">MIT's key server</a> or on <a href="http://pgpkeys.eu/pks/lookup?op=get&amp;search=0x39A629558DA0AF10">pgpkeys.eu</a>. <a href="https://ledgersmb.org/content/installing-ledgersmb-15">Install  </a>and <a href="https://ledgersmb.org/content/upgrading-ledgersmb-15">upgrade</a> info.</p> <p>You can verify the release with the command</p> <div class="geshifilter"><pre class="bash geshifilter-bash"><span class="co4">$ </span>gpg <span class="re5">--verify</span> ledgersmb-<span class="sy0">&lt;</span>version<span class="sy0">&gt;</span>.tar.gz.asc ledgersmb-<span class="sy0">&lt;</span>version<span class="sy0">&gt;</span>.tar.gz</pre></div> <h1>Docker images</h1> <p><img alt="Docker logo" data-entity-type="file" data-entity-uuid="fb9cc1b3-c021-4959-9ae7-8f6b4253a098" height="77" src="/sites/default/files/inline-images/small_v-trans_0.png" width="87" loading="lazy" class="align-left" />There are production level <a href="https://docs.docker.com/">Docker</a> images <a href="https://github.com/ledgersmb/ledgersmb-docker/pkgs/container/ledgersmb">available on GitHub</a>. New containers are released on every stable (1.10) and old-stable (1.9) release. Docker images are around 250MB in size.</p> <p>The docker repository identifier is "ledgersmb/ledgersmb" with the "latest" tag always pointing to the most recent stable release, which is currently the most recent 1.10.x release. The "master" tag points to the most recent alpha or beta of the development version (1.11).</p> <h1>Distribution packages</h1> <div data-embed-button="file_browser" data-entity-embed-display="image:image" data-entity-embed-display-settings="{&quot;image_style&quot;:&quot;&quot;,&quot;image_link&quot;:&quot;&quot;}" data-entity-type="file" data-entity-uuid="1d5cf6f4-3ed1-4df8-a1e4-309812de8639" class="align-left embedded-entity" data-langcode="und"> <img loading="lazy" src="/sites/default/files/openlogo-nd-25_1.png" /></div> <p> A <strong>Debian</strong> package is available in Debian v11 (stable, 'bullseye') and Debian v10 (oldstable, 'buster') but was <em>not</em> available in Debian v9 (Stretch, oldoldstable) due to problems with the Dojo dependency (which failed to build). Note that the current LedgerSMB version that is recommended for use is one in the 1.10.x series, which is not in Debian. We're working to get 1.8.x or 1.9.x packages into Debian.</p> <p>Newer packages than those distributed by Debian can be found in the <a href="https://apt.ledgersmb.org/">LedgerSMB APT</a> repository (along with their updated dependancies as necessary).</p> <div data-embed-button="file_browser" data-entity-embed-display="image:image" data-entity-embed-display-settings="{&quot;image_style&quot;:&quot;&quot;,&quot;image_link&quot;:&quot;&quot;}" data-entity-type="file" data-entity-uuid="667831a5-e5bd-4c88-b4f4-a7888392a414" class="align-left embedded-entity" data-langcode="und"> <img loading="lazy" src="/sites/default/files/ubuntu_0_1.png" /></div> <p><strong> Ubuntu</strong> packages are available in the standard distributions based off of the Debian packages.</p> <p>Newer packages than those distributed in Ubuntu can be found in the <a href="https://launchpad.net/~ledgersmb/+archive/ubuntu/main/+packages">LedgerSMB PPA</a><a href="https://repo.ledgersmb.org/"> </a>repository.</p> <div data-embed-button="file_browser" data-entity-embed-display="image:image" data-entity-embed-display-settings="{&quot;image_style&quot;:&quot;&quot;,&quot;image_link&quot;:&quot;&quot;}" data-entity-type="file" data-entity-uuid="83035d31-c255-4445-9a55-855637a29250" class="align-left embedded-entity" data-langcode="und"> <img loading="lazy" src="/sites/default/files/rpm_logo1_0.png" /></div> <p> <strong>RPM</strong> Packaging contributions solicited.</p> <div data-embed-button="file_browser" data-entity-embed-display="image:image" data-entity-embed-display-settings="{&quot;image_style&quot;:&quot;&quot;,&quot;image_link&quot;:&quot;&quot;}" data-entity-type="file" data-entity-uuid="03989031-93cc-478e-bde5-816a93069d95" class="align-left embedded-entity" data-langcode="und"> <img loading="lazy" src="/sites/default/files/freebsd_0.png" /></div> <p><strong>FreeBSD</strong> Packaging contributions solicited</p> <div data-embed-button="file_browser" data-entity-embed-display="image:image" data-entity-embed-display-settings="{&quot;image_style&quot;:&quot;&quot;,&quot;image_link&quot;:&quot;&quot;}" data-entity-type="file" data-entity-uuid="c371efe2-7772-4c1a-9600-76c376e8ba47" class="align-left embedded-entity" data-langcode="und"> <img loading="lazy" src="/sites/default/files/ppuf_0_0.png" /></div> <p> <strong>OpenBSD</strong> Packaging contributions solicited.</p> <div data-embed-button="file_browser" data-entity-embed-display="image:image" data-entity-embed-display-settings="{&quot;image_style&quot;:&quot;&quot;,&quot;image_link&quot;:&quot;&quot;}" data-entity-type="file" data-entity-uuid="106c6ca2-81f6-4434-b470-75da3589fb42" class="align-left embedded-entity" data-langcode="und"> <img loading="lazy" src="/sites/default/files/Virtualbox_logo_0.png" /></div> <p><strong> Virtual Box</strong> No up-to-date images at this time.<contribute one=""></contribute></p> <h1>Keeping up with the latest developments</h1> <p>The latest 1.10.x and 1.11.x are available directly from <strong>GitHub</strong> as a .zip file (it's not an official release, but has the latest fixes you may need) <a href="https://github.com/ledgersmb/LedgerSMB/archive/1.10.zip">1.10.x from GitHub</a>, <a href="https://github.com/ledgersmb/LedgerSMB/archive/1.11.zip">1.11.x from GitHub</a>. Check the repository for the change log in <a href="https://github.com/ledgersmb/LedgerSMB/blob/1.11/Changelog">1.11.x from GitHub</a> or <a href="https://github.com/ledgersmb/LedgerSMB/blob/master/Changelog">the changes in bleeding edge ('master')</a>.</p> <p><strong>LedgerSMB public GPG key</strong><br /> The LedgerSMB GPG public key can be found on the<a href="http://pgp.mit.edu/"> MIT key server.</a>  Here is the <a href="http://pgp.mit.edu:11371/pks/lookup?op=get&amp;search=0x39A629558DA0AF10">direct link</a>.</p> <div id="cke_pastebin" style="position: absolute; top: 508.8px; width: 1px; height: 1px; overflow: hidden; left: -1000px;"> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>Anonymous (not verified)</span></span> <span class="field field--name-created field--type-created field--label-hidden"><time datetime="2017-04-01T05:28:25-07:00" title="Saturday, April 1, 2017 - 05:28" class="datetime">Sat, 04/01/2017 - 05:28</time> </span> <div class="field field--name-field-topic field--type-entity-reference field--label-above"> <div class="field__label">Topic</div> <div class="field__items"> <div class="field__item"><a href="/index.php/topic/installation" hreflang="en">Installation</a></div> </div> </div> <div class="field field--name-field-operating-system field--type-entity-reference field--label-above"> <div class="field__label">Operating system</div> <div class="field__items"> <div class="field__item"><a href="/index.php/operating-system/windows" hreflang="en">Windows</a></div> <div class="field__item"><a href="/index.php/operating-system/other" hreflang="en">Other</a></div> <div class="field__item"><a href="/index.php/operating-system/ios" hreflang="en">iOS</a></div> <div class="field__item"><a href="/index.php/operating-system/freebsd" hreflang="en">FreeBSD</a></div> <div class="field__item"><a href="/index.php/operating-system/linux" hreflang="en">Linux</a></div> <div class="field__item"><a href="/index.php/operating-system/centos" hreflang="en">CentOS</a></div> <div class="field__item"><a href="/index.php/operating-system/debian" hreflang="en">Debian</a></div> <div class="field__item"><a href="/index.php/operating-system/fedora" hreflang="en">Fedora</a></div> <div class="field__item"><a href="/index.php/operating-system/linux/gentoo" hreflang="en">Gentoo</a></div> <div class="field__item"><a href="/index.php/operating-system/redhat-enterprise-linux" hreflang="en">RedHat Enterprise Linux</a></div> <div class="field__item"><a href="/index.php/operating-system/linux/ubuntu" hreflang="en">Ubuntu</a></div> <div class="field__item"><a href="/index.php/operating-system/macos-x" hreflang="en">MacOS X</a></div> <div class="field__item"><a href="/index.php/operating-system/openbsd" hreflang="en">OpenBSD</a></div> <div class="field__item"><a href="/index.php/operating-system/android" hreflang="en">Android</a></div> </div> </div> <section class="field field--name-comment-node-page field--type-comment field--label-hidden comment-wrapper"> </section> Sat, 01 Apr 2017 12:28:25 +0000 Anonymous 140 at https://ledgersmb.org https://ledgersmb.org/index.php/content/download#comments Which versions do you support? https://ledgersmb.org/index.php/faq/which-versions-do-you-support <span class="field field--name-title field--type-string field--label-hidden">Which versions do you support?</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>ehu</span></span> <span class="field field--name-created field--type-created field--label-hidden"><time datetime="2012-12-30T03:17:51-08:00" title="Sunday, December 30, 2012 - 03:17" class="datetime">Sun, 12/30/2012 - 03:17</time> </span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><h1>Active support</h1> <p>Versions 1.10 and higher are under active development and are supported by the community. Planned end-of-life dates for current releases are:</p> <ul><li>1.11: Planned End-of-life date: 2025-10-03 (released 2023-10-03)</li> <li>1.10: Planned End-of-life date: 2024-10-08 (released 2022-10-08)</li> </ul><h1 style="line-height: 36px;">End of life</h1> <p>If you're looking for help on how to use EOL-ed versions, please try mailing <a href="https://lists.ledgersmb.org/mailman/listinfo/users">the users mailing</a> list.<br /> If you're looking for someone to create bugfixes, please check with one of the parties providing <a href="http://ledgersmb.org/topic/commercial-support">commercial support</a> or for less urgent fixes <a href="https://github.com/ledgersmb/LedgerSMB/issues">LedgerS</a><a href="https://github.com/ledgersmb/LedgerSMB/issues">MB Issues</a></p> <p>Version 1.9 has been declared end-of-life on 2023-09-24. The last release in the series is 1.9.30. No futher releases will be made by the community.</p> <p>Version 1.8 has been declared end-of-life on 2022-09-04. The last release in the series is 1.8.31. No futher releases will be made by the community.</p> <p>Version 1.7 has been declared end-of-life on 2022-10-04. The last release in the series is 1.7.41. No further releases will be made by the community.</p> <p>Version 1.6 has been declared end-of-life on 2021-06-10. The last release in the series is 1.6.33. No further releases will be made by the community.</p> <p>Version 1.5 has been declared end-of-life on 2019-12-23. The last release in the series is 1.5.30. No further releases will be made by the community.</p> <p>Version 1.4 has been declared end-fo-life on 2017-09-16. The last release in the series is 1.4.42. No further releases will be made by the community.</p> <p>Version 1.3 has been declared end-of-life on 2015-12-23. The last release in the series is 1.3.47. No further releases will be made by the community.</p> <p>LedgerSMB versions 1.0, 1.1 and 1.2 won't be maintained any further due to the fact that there are some known security issues which can't be fixed.<!--break--></p> </div> <div class="field field--name-field-release field--type-entity-reference field--label-above"> <div class="field__label">Release</div> <div class="field__items"> <div class="field__item"><a href="/index.php/release/all-versions" hreflang="en">All Versions</a></div> <div class="field__item"><a href="/index.php/release/10" hreflang="en">1.0</a></div> <div class="field__item"><a href="/index.php/release/11" hreflang="en">1.1</a></div> <div class="field__item"><a href="/index.php/release/12" hreflang="en">1.2</a></div> <div class="field__item"><a href="/index.php/release/13" hreflang="en">1.3</a></div> <div class="field__item"><a href="/index.php/release/14" hreflang="en">1.4</a></div> <div class="field__item"><a href="/index.php/release/15" hreflang="en">1.5</a></div> <div class="field__item"><a href="/index.php/taxonomy/term/142" hreflang="en">1.6</a></div> <div class="field__item"><a href="/index.php/taxonomy/term/146" hreflang="en">1.7</a></div> <div class="field__item"><a href="/index.php/taxonomy/term/147" hreflang="en">1.8</a></div> <div class="field__item"><a href="/index.php/taxonomy/term/149" hreflang="en">1.9</a></div> <div class="field__item"><a href="/index.php/taxonomy/term/150" hreflang="en">1.10</a></div> <div class="field__item"><a href="/index.php/release/20" hreflang="en">2.0</a></div> </div> </div> <div class="field field--name-field-faq-category field--type-entity-reference field--label-above"> <div class="field__label">FAQ Category</div> <div class="field__item"><a href="/index.php/faq-categories/support" hreflang="en">Support</a></div> </div> <div class="field field--name-field-topic field--type-entity-reference field--label-above"> <div class="field__label">Topic</div> <div class="field__items"> <div class="field__item"><a href="/index.php/topics/support" hreflang="en">Support</a></div> <div class="field__item"><a href="/index.php/topics/security" hreflang="en">Security</a></div> <div class="field__item"><a href="/index.php/topics/end-life" hreflang="en">End Of Life</a></div> </div> </div> <section class="field field--name-comment-node-faq field--type-comment field--label-hidden comment-wrapper"> </section> Sun, 30 Dec 2012 11:17:51 +0000 ehu 217 at https://ledgersmb.org System requirements https://ledgersmb.org/index.php/content/system-requirements <span class="field field--name-title field--type-string field--label-hidden">System requirements</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><h1>Hardware requirements</h1> <p>The hardware required to run LedgerSMB greatly depends on the number of users. However, with a small number of users (up to 10 or so), a 32bit server with 512MB to 1GB of memory (including Linux Server OS) and just a few hundred MB of storage (excluding OS) should be enough to get good performance.<br /> For a 64bit server, you probably need 1GB to 2GB of memory, but otherwise the requirements are the same.</p> <h1>Operating system requirements</h1> <p>LedgerSMB runs on Linux/Unix (for the Server) and any platform with a compatible Web Browser (for the Client).<br /> Platforms that have known-compatible browsers are Linux, Windows, MacOS, most smart phones and tablets should also work although the current UI requires a large screen for optimum usability. (Minimal size: 9.7" tablet in landscape mode.)</p> <p>Unix includes all flavours (variants) of Linux including</p> <ul><li>Debian</li> <li>Mint</li> <li>Ubuntu</li> <li>RedHat</li> <li>Fedora</li> <li>BSD</li> <li>MacOS / OS X</li> <li>and many more</li> </ul><h2>MS Windows</h2> <ul><li>While in the past the server would run on Windows as well, this is currently not tested and not expected to work.</li> <li>LedgerSMB has a client / server architecture, so while it is often better to run the server on Linux, this will not stop you from running the clients on windows. In fact this is a common situation and is fully supported.</li> </ul><p>For more information on running on windows please look at the FAQ item <a href="http://ledgersmb.org/faq/can-i-use-ledgersmb-ms-windows">Can I use LedgerSMB on MS Windows?</a></p> <h1>Software requirements (client)</h1> <p>On the client, LedgerSMB requires a compatible browser. As of version 1.9, the development team keeps track of which exact browser capabilities that are used by LedgerSMB to determine which browser versions are supported and which ones are not. On versions 1.8 and older, the indicated minimum requirement is based on the indication provided by the <a href="https://dojotoolkit.org/reference-guide/1.10/releasenotes/1.10.html#user-agent-support">Dojo Toolkit development team</a> in combination with a rough impact estimation of additional capabilities used by LedgerSMB's own JavaScript.</p> <table border="1" cellpadding="1" cellspacing="1"><caption>Minimum browser versions supported by LedgerSMB (by version)</caption> <thead><tr><th rowspan="2" scope="row"> </th> <th class="text-align-center" colspan="2" rowspan="2" scope="col">Chrome</th> <th class="text-align-center" colspan="2" scope="col">Safari</th> <th class="text-align-center" rowspan="2" scope="col">Firefox</th> <th class="text-align-center" rowspan="2" scope="col">Opera</th> <th class="text-align-center" rowspan="2" scope="col">Edge</th> <th class="text-align-center" rowspan="2" scope="col">Internet<br /> Explorer</th> </tr><tr><th class="text-align-center" scope="col">Desktop</th> <th class="text-align-center" scope="col">Mobile</th> </tr></thead><tbody><tr><th scope="row">1.4</th> <td class="text-align-center" colspan="2" rowspan="5">13</td> <td class="text-align-center" colspan="2" rowspan="5">5</td> <td class="text-align-center" colspan="1" rowspan="5">3.6</td> <td class="text-align-center" colspan="1" rowspan="5">10.50</td> <td class="text-align-center" colspan="1" rowspan="5">(all)</td> <td class="text-align-center">8</td> </tr><tr><th scope="row">1.5</th> <td class="text-align-center" colspan="1" rowspan="3">10</td> </tr><tr><th scope="row">1.6</th> </tr><tr><th scope="row">1.7</th> </tr><tr><th scope="row">1.8</th> <td class="text-align-center">n/a</td> </tr><tr><th scope="row">1.9</th> <td class="text-align-center" colspan="2" rowspan="1">2017-09 (61)</td> <td class="text-align-center">2017-03 (10.1)</td> <td class="text-align-center">2017-03 (10.3)</td> <td class="text-align-center">2018-05 (60)</td> <td class="text-align-center">2017-09 (48)</td> <td class="text-align-center">2017-10 (16)</td> <td class="text-align-center">n/a</td> </tr><tr><th scope="row">1.10</th> <td class="text-align-center" colspan="2" rowspan="1">2017-09 (61)</td> <td class="text-align-center">2017-09 (11)</td> <td class="text-align-center">2017-09 (11)</td> <td class="text-align-center">2018-05 (60)</td> <td class="text-align-center">2017-09 (48)</td> <td class="text-align-center">2020-01 (79)</td> <td class="text-align-center">n/a</td> </tr><tr><th scope="row">1.11</th> <td class="text-align-center" colspan="2" rowspan="1">2018-03 (65)</td> <td class="text-align-center">2018-03 (11.1)</td> <td class="text-align-center">2018-03 (11.3)</td> <td class="text-align-center">2018-05 (60)</td> <td class="text-align-center">2018-03 (52)</td> <td class="text-align-center">2020-01 (79)</td> <td class="text-align-center">n/a</td> </tr></tbody></table><p>Please note that on Android, browsers are being pushed to end-user devices so that most devices always have the latest Chrome, FireFox or Opera browser. To that extent, there's little point in mentioning the oldest supported version. If you would be interested to know anyway: the desktop versions of the same browsers are a good indication of support of the required capabilities on mobile as well.</p> <p>Explicitly unsupported clients include:</p> <ul><li>Lynx</li> <li>w3m</li> <li>IE9 or earlier</li> </ul><h1>Software requirements (server)</h1> <p>LedgerSMB builds upon technology of some very widely used - proven - projects:</p> <ul><li><a href="https://www.postgresql.org/">PostgreSQL</a> - the enterprise level quality open source database</li> <li>Starman (perl webserver)</li> <li><a href="http://www.perl.org/">Perl</a> - the programming language of the web</li> <li>(Xe)LaTeX - the typesetting language (optional)<br /> This is used by the Templating system to generate PDF and Postscript output for printing, email or saving to disk</li> </ul><p>Each version of LedgerSMB has its own requirements. The high level requirements are listed in the table below.</p> <table border="1" cellpadding="1" cellspacing="1"><caption>Requirements by LedgerSMB version</caption> <thead><tr><th rowspan="2" scope="row"> </th> <th rowspan="2" scope="col">Status</th> <th rowspan="2" scope="col">PostgreSQL</th> <th rowspan="2" scope="col">Application server<br /> / HTTP server</th> <th rowspan="2" scope="col">Perl</th> <th class="text-align-center" colspan="2" scope="col">PDF</th> </tr><tr><th class="text-align-center" scope="col">PDF</th> <th class="text-align-center" scope="col"><abbr title="PDF for Archiving, also known as ISO 19005-1">PDF/A</abbr></th> </tr></thead><tbody><tr><th scope="row">1.4</th> <td colspan="1" rowspan="5">End-Of-Life<br /> (no community support)</td> <td>8.4 and up</td> <td>Apache 1.3 and up</td> <td colspan="1" rowspan="2">5.10 and up</td> <td rowspan="6">LaTeX for ASCII or<br /> XeLaTeX for UTF-8 characters</td> <td rowspan="6">LuaTeX with pdfx TeX package</td> </tr><tr><th scope="row">1.5</th> <td colspan="1" rowspan="3">9.4 and up</td> <td colspan="1" rowspan="7">Starman*</td> </tr><tr><th scope="row">1.6</th> <td>5.14 and up</td> </tr><tr><th scope="row">1.7</th> <td>5.18 and up</td> </tr><tr><th scope="row">1.8</th> <td>9.6 and up</td> <td>5.20 and up</td> </tr><tr><th scope="row">1.9</th> <td>old stable</td> <td>10 and up</td> <td>5.24 and up</td> </tr><tr><th scope="row">1.10</th> <td>stable</td> <td>13 and up</td> <td rowspan="2">5.32 and up</td> <td rowspan="2">Customizable; default:<br /> LaTeX for ASCII or<br /> XeLaTeX for UTF-8 characters</td> <td rowspan="2">Customizable; default:<br /> LuaTeX with pdfx TeX package</td> </tr><tr><th scope="row">1.11</th> <td>preview</td> <td>13 and up</td> </tr></tbody></table><p>* While Starman is the prefered (and tested) webserver for 1.5 and newer.<br />       It should <strong>ALWAYS</strong> be reverse proxied as HTTPS using Apache/Nginx or possibly other HTTP servers.<br />       It may be possible to run directly from another HTTPD server, but this is not a supported configuration.<br />       Also, in most cases there are performance gains to be had by using Starman.</p> <h2>Perl module dependencies</h2> <p>The Perl module dependencies are listed in the <a href="https://github.com/ledgersmb/LedgerSMB/blob/master/cpanfile">'cpanfile' in the root of the project tree</a>. Many distributions include at least <em>some</em> of the dependencies in their repositories, so that it <em><strong>shouldn't</strong></em> be necessary to install <em><strong>all</strong></em> the dependencies listed in the cpanfile from <a href="http://www.cpan.org/">CPAN</a>.</p> <p>During the installation process, the availability of the "cpanm" binary is required.</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>ehu</span></span> <span class="field field--name-created field--type-created field--label-hidden"><time datetime="2012-06-30T05:58:33-07:00" title="Saturday, June 30, 2012 - 05:58" class="datetime">Sat, 06/30/2012 - 05:58</time> </span> <div class="field field--name-field-topic field--type-entity-reference field--label-above"> <div class="field__label">Topic</div> <div class="field__items"> <div class="field__item"><a href="/index.php/faq-categories/installation" hreflang="en">Installation</a></div> <div class="field__item"><a href="/index.php/topic/installation" hreflang="en">Installation</a></div> </div> </div> <section class="field field--name-comment-node-page field--type-comment field--label-hidden comment-wrapper"> </section> Sat, 30 Jun 2012 12:58:33 +0000 ehu 164 at https://ledgersmb.org https://ledgersmb.org/index.php/content/system-requirements#comments 1.11 release notes https://ledgersmb.org/index.php/content/111-release-notes <span class="field field--name-title field--type-string field--label-hidden">1.11 release notes</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p><span id="cke_bm_63S" style="display: none;"> </span>Be sure to check the <strong>UPGRADE NOTES</strong> below!</p> <h1>What's new in LedgerSMB 1.11</h1> <p>This release features <strong><em>a new, fresh logo</em></strong>! Next to that, there are:</p> <ul><li>Barcode reader support added (back) to invoices</li> <li>Reclassification of negative (current) assets to liabilities</li> <li>Tracking of the relationship between reversed and reversing transactions</li> </ul><p><!--{C}%3C!%2D%2Dbreak%2D%2D%3E--></p> <h1>New features</h1> <h2>Barcode reader support added (back) to invoices</h2> <p>Before LedgerSMB 1.5, partnumber input fields would pick the correct part when filled with the barcode associated with that part. This functionality was lost in 1.5. A replacement has now been added to 1.11: if a database contains barcode numbers, a barcode entry field is shown on the invoice entry screen as per the screenshot below:</p> <p><img alt="Invoice barcode entry" data-entity-type="file" data-entity-uuid="0a8417ad-9fe9-4b6f-b5e0-42ed0cc92d75" src="/sites/default/files/inline-images/2023-10-01_21-43.png" width="698" height="406" loading="lazy" /></p> <p>Here's where to configure the barcodes for use:</p> <p><img alt="Barcodes on the parts configuration screen" data-entity-type="file" data-entity-uuid="4f24e7f2-0d19-47a4-87ac-3343470a57ce" src="/sites/default/files/inline-images/2023-10-01_21-42.png" width="1068" height="473" loading="lazy" /></p> <p><strong>Note for upgrades</strong>: There is no impact on upgrades. Users who want to use this feature need to configure barcodes and make/models in the parts configuration screen.</p> <h2>Reclassification of negative (current) assets to liabilities (and vice versa)</h2> <p>In it's common practice to present negative current assets as positive current liabilities. An example where this regularly happens is when a bank current account goes into overdraft: instead of the bank owing money to the company (an asset), the company owes money to the bank (a liability). This release adds a new configuration on the account settings screen: "Negative balance heading". This setting applies to asset and liability accounts. See the screenshot below to find where to set the configuration.</p> <p>When the "Negative balance heading" is set, when an asset account has a credit balance, it will be reported as a liability under the heading indicated in this option.</p> <p><img alt="Negative balance heading configuration" data-entity-type="file" data-entity-uuid="4f3f6e74-60ee-4b33-b499-7043d701544e" src="/sites/default/files/inline-images/2023-10-01_21-28_0.png" width="733" height="297" loading="lazy" /></p> <p><strong>Note for upgrades</strong>: Users wanting to use this option need to explicitly set it on affected accounts after migration of the database completes.</p> <h2>Tracking of relationship between reversed and reversing transactions</h2> <p>To enhance clarity of what happened between transactions, tracking of transaction reversal has been added, tracking which transactions have been reversed and by which transactions. Related transactions are shown at the top of the transactions and invoice entry screens; see the screenshot of the GL transaction entry screen below.</p> <p><img alt="Transaction reversal tracking on the GL screen" data-entity-type="file" data-entity-uuid="a450fe27-9e08-459a-88ed-b2b8cb1050e1" src="/sites/default/files/inline-images/2023-10-01_21-50.png" width="1088" height="287" loading="lazy" /></p> <p> </p> <p><strong>Note for upgrades</strong>: The relationship is only tracked for <em>new</em> reversals. Existing reversals can't be retroactively detected and tracked.</p> <h2>Webservice for Countries</h2> <p>A webservice has been created to manage configuration of:</p> <ul><li>Countries (/erp/api/v0/countries)</li> </ul><p>This was created in support of moving the front-end to Vue3 components. For more information on how to use these services, see  <a href="https://docs.ledgersmb.org/openapi" title="LedgerSMB Webservices">LedgerSMB Webservices</a>.</p> <p><strong>Note for upgrades</strong>: There is no impact on upgrades.</p> <h1>Notable changes</h1> <h2>Transaction state shown in transaction and invoice headers</h2> <p>Transactions and invoices show their state (e.g. Saved, Posted, Reversed) in the top part of the data entry screen. An example for a GL transaction is shown in the screenshot below.</p> <p><img alt="GL entry screen showing transaction state" data-entity-type="file" data-entity-uuid="d18f742d-e58f-4e5f-a44b-385acaf2971f" src="/sites/default/files/inline-images/2023-10-01_22-25.png" width="1089" height="191" loading="lazy" /></p> <p><strong>Note for upgrades</strong>: There are no consequences for upgrades.</p> <h2>Posted transactions show as read-only</h2> <p>Before, there was no visual distinction between editable (saved) transactions and (uneditable) posted transactions, suggesting to the user that transactions may be editable. To resolve this ambiguity, posted transactions are now shown read-only. In case a user wants to create a new transaction based on the current one, the "Copy to New" button creates a fresh, editable transaction or invoice.</p> <p><strong>Note for upgrades</strong>: There are no consequences for upgrades.</p> <h2>Performance fixes for slow queries on large databases</h2> <p>Databases with millions of rows were showing serious performance degradation in some cases. The stored procedures responsible for this performance degradation have been refactored not to trigger the statistics cache in PostgreSQL anymore.</p> <p><strong>Note for upgrades</strong>: There are no consequences for upgrades.</p> <h2>More actions on invoices and transactions visible in the history</h2> <p>Only a very limited set of actions used to be visible in the history section of transactions and invoices. The set of logged actions has been expanded. Additionally, the name of the user performing the action is now logged (and shown) as well.</p> <p><strong>Note for upgrades</strong>: There are no consequences for upgrades.</p> <h2>Consistency of actions in GL transactions</h2> <p>In the 1.10 release, the buttons in the Quote, Order, Invoice and AR/AP Transaction screens were made consistent by tracking a specific state for the document and associating the buttons with that state. The same has been done in the 1.11 release for GL transactions.</p> <p><strong>Note for upgrades</strong>: There are no consequences for upgrades.</p> <h1>Upgrade notes</h1> <h2>Sequences in System &gt; Sequences switched to show "next value" instead of "last value"</h2> <p>If you use custom sequences, you need to increase the values in the Sequence column by 1 in order to prevent values from being used twice.</p> <p><em>Background</em>: The number shown in the "Sequence" column on the System &gt; Sequences menu page, used to show the last value used. As of 1.11, it shows the next value that will be used. This ensures that value "1" in the sequence will be used now (it used to be skipped before), which helps auditability.</p> <p> </p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>ehu</span></span> <span class="field field--name-created field--type-created field--label-hidden"><time datetime="2023-01-06T13:35:30-08:00" title="Friday, January 6, 2023 - 13:35" class="datetime">Fri, 01/06/2023 - 13:35</time> </span> <div class="field field--name-field-release field--type-entity-reference field--label-above"> <div class="field__label">Release</div> <div class="field__items"> <div class="field__item"><a href="/index.php/taxonomy/term/153" hreflang="en">1.11</a></div> </div> </div> <section class="field field--name-comment-node-article field--type-comment field--label-hidden comment-wrapper"> </section> Fri, 06 Jan 2023 21:35:30 +0000 ehu 620 at https://ledgersmb.org https://ledgersmb.org/index.php/content/111-release-notes#comments Using Docker to develop LedgerSMB https://ledgersmb.org/index.php/content/using-docker-develop-ledgersmb <span class="field field--name-title field--type-string field--label-hidden">Using Docker to develop LedgerSMB</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Getting all the development dependencies and a working copy for LedgerSMB can be time consuming and complex. However, using our <a href="https://docs.docker.com/compose/">Docker Compose</a> infrastructure reduces this to four simple steps:</p> <ol><li><a href="https://docs.docker.com/engine/installation/">Install Docker</a></li> <li><a href="https://docs.docker.com/compose/install/">Install Docker Compose</a></li> <li>Clone the <a href="https://github.com/ledgersmb/LedgerSMB">LedgerSMB repository</a> from GitHub</li> <li>Clone the <a href="https://github.com/ledgersmb/ledgersmb-dev-docker">LedgerSMB Development Docker repository</a> from GitHub</li> </ol><p>(And start the infrastructure from the docker compose file.)</p> <h1>Example</h1> <p>The example below works on Debian Stretch:</p> <h2 class="perl">Install Docker</h2> <div class="geshifilter"><pre class="perl geshifilter-perl">$ sudo apt<span class="sy0">-</span>get install \ apt<span class="sy0">-</span>transport<span class="sy0">-</span>https \ ca<span class="sy0">-</span>certificates \ curl \ gnupg2 \ software<span class="sy0">-</span>properties<span class="sy0">-</span>common $ curl <span class="sy0">-</span>fsSL https<span class="sy0">://</span>download<span class="sy0">.</span>docker<span class="sy0">.</span>com<span class="sy0">/</span>linux<span class="sy0">/</span><span class="co5">$(</span><span class="sy0">.</span> <span class="sy0">/</span>etc<span class="sy0">/</span>os<span class="sy0">-</span>release<span class="sy0">;</span> echo <span class="st0">"$ID"</span><span class="br0">)</span><span class="sy0">/</span>gpg <span class="sy0">|</span> sudo apt<span class="sy0">-</span>key add <span class="sy0">-</span> $ sudo add<span class="sy0">-</span>apt<span class="sy0">-</span>repository \ <span class="st0">"deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "</span><span class="re0">$ID</span><span class="st0">") <span class="es0">\</span> $(lsb_release -cs) <span class="es0">\</span> stable"</span> $ sudo apt<span class="sy0">-</span>get update $ sudo apt<span class="sy0">-</span>get install docker<span class="sy0">-</span>ce</pre></div> <h2>Install Docker Compose</h2> <p>Check the latest release at <a href="https://github.com/docker/compose/releases/">https://github.com/docker/compose/releases/</a> (and replace 1.17.0 with it)</p> <div class="geshifilter"><pre class="bash geshifilter-bash">$ <span class="kw2">sudo</span> curl <span class="re5">-L</span> https:<span class="sy0">//</span>github.com<span class="sy0">/</span>docker<span class="sy0">/</span>compose<span class="sy0">/</span>releases<span class="sy0">/</span>download<span class="sy0">/</span>1.17.0<span class="sy0">/</span>docker-compose-<span class="sy0">`</span><span class="kw2">uname</span> -s<span class="sy0">`</span>-<span class="sy0">`</span><span class="kw2">uname</span> -m<span class="sy0">`</span> \ <span class="re5">-o</span> <span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>bin<span class="sy0">/</span>docker-compose $ <span class="kw2">sudo</span> <span class="kw2">chmod</span> +x <span class="sy0">/</span>usr<span class="sy0">/</span>local<span class="sy0">/</span>bin<span class="sy0">/</span>docker-compose</pre></div> <h2>Install docker compose bash completion (optional)</h2> <div class="geshifilter"><pre class="bash geshifilter-bash">$ <span class="kw2">sudo</span> curl <span class="re5">-L</span> https:<span class="sy0">//</span>raw.githubusercontent.com<span class="sy0">/</span>docker<span class="sy0">/</span>compose<span class="sy0">/</span>1.17.0<span class="sy0">/</span>contrib<span class="sy0">/</span>completion<span class="sy0">/</span>bash<span class="sy0">/</span>docker-compose \ <span class="re5">-o</span> <span class="sy0">/</span>etc<span class="sy0">/</span>bash_completion.d<span class="sy0">/</span>docker-compose</pre></div> <h2>Clone the LedgerSMB repository from GitHub (checks out 'master' branch)</h2> <div class="geshifilter"><pre class="bash geshifilter-bash">$ <span class="kw2">git clone</span> https:<span class="sy0">//</span>github.com<span class="sy0">/</span>ledgersmb<span class="sy0">/</span>LedgerSMB.git ledgersmb <span class="co0"># and, for 1.8 or earlier, additionally:</span> $ <span class="kw3">cd</span> ledgersmb <span class="sy0">&amp;&amp;</span> <span class="kw2">git submodule</span> update <span class="re5">--init</span> <span class="re5">--recursive</span> <span class="sy0">&amp;&amp;</span> <span class="kw3">cd</span> ..</pre></div> <h2 class="perl">Clone the LedgerSMB Development Docker repository from GitHub</h2> <div class="geshifilter"><pre class="bash geshifilter-bash"><span class="co4">$ </span><span class="kw2">git clone</span> https:<span class="sy0">//</span>github.com<span class="sy0">/</span>ledgersmb<span class="sy0">/</span>ledgersmb-dev-docker.git lsmb-dev-docker</pre></div> <p class="perl"> </p> <p>At this point you are set up to start developing and testing LedgerSMB; in order to test your changes in a running LedgerSMB instance, run:</p> <div class="geshifilter"><pre class="bash geshifilter-bash">$ <span class="kw3">cd</span> ledgersmb $ ..<span class="sy0">/</span>lsmb-dev-docker<span class="sy0">/</span>lsmb-dev master up <span class="re5">-d</span></pre></div> <p>This command starts the container infrastructure (using the names "ldmaster-lsmb", "ldmaster-proxy" and "ldmaster-db" for the LedgerSMB, NGinx and PostgreSQL containers respectively), taking the sources in the current directory (ledgersmb) to run the application. It also starts a Selenium grid to allow browser tests.</p> <h1>Notes</h1> <h2>File permissions</h2> <p>You may run into problems with file permissions if you want to run commands inside the containers which try to modify your local repository. You will need to either recursively set the file ownership to this user in your local tree, assign liberal 0777 (directory) and 0666 (file) permissions or execute the commands inside the container as root.</p> <h2>Example using www-data user, after you fix your file permissions:</h2> <div class="geshifilter"><pre class="bash geshifilter-bash">docker <span class="kw3">exec</span> <span class="re5">-ti</span> ldmaster-lsmb <span class="kw2">bash</span> www-data<span class="sy0">@</span>90451823cb57:<span class="sy0">/</span>srv<span class="sy0">/</span>ledgersmb$ <span class="kw2">make</span> dojo</pre></div> <h3>Example using root inside the container:</h3> <div class="geshifilter"><pre class="bash geshifilter-bash">docker <span class="kw3">exec</span> <span class="re5">-ti</span> <span class="re5">--user</span>=root ldmaster-lsmb <span class="kw2">bash</span></pre></div> <h2>Cache issues</h2> <p>The container is set up with template caching enabled. This means that you'll need to restart the container after code changes to see them. This is a simple:</p> <div class="geshifilter"><pre class="bash geshifilter-bash"><span class="co4">$ </span>..<span class="sy0">/</span>lsmb-dev-docker<span class="sy0">/</span>lsmb-dev master restart</pre></div> <h2>Supported versions</h2> <p>The development container infrastructure only supports development of 1.5 and never versions of LedgerSMB.</p> <p>Enjoy!</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>freelock</span></span> <span class="field field--name-created field--type-created field--label-hidden"><time datetime="2017-01-14T09:38:23-08:00" title="Saturday, January 14, 2017 - 09:38" class="datetime">Sat, 01/14/2017 - 09:38</time> </span> <div class="field field--name-field-topic field--type-entity-reference field--label-above"> <div class="field__label">Topic</div> <div class="field__items"> <div class="field__item"><a href="/index.php/topics/development" hreflang="en">Development</a></div> </div> </div> <div class="field field--name-field-operating-system field--type-entity-reference field--label-above"> <div class="field__label">Operating system</div> <div class="field__items"> <div class="field__item"><a href="/index.php/operating-system/linux" hreflang="en">Linux</a></div> </div> </div> <div class="field field--name-field-release field--type-entity-reference field--label-above"> <div class="field__label">Release</div> <div class="field__items"> <div class="field__item"><a href="/index.php/release/15" hreflang="en">1.5</a></div> <div class="field__item"><a href="/index.php/taxonomy/term/142" hreflang="en">1.6</a></div> <div class="field__item"><a href="/index.php/taxonomy/term/146" hreflang="en">1.7</a></div> <div class="field__item"><a href="/index.php/taxonomy/term/147" hreflang="en">1.8</a></div> <div class="field__item"><a href="/index.php/taxonomy/term/149" hreflang="en">1.9</a></div> <div class="field__item"><a href="/index.php/taxonomy/term/150" hreflang="en">1.10</a></div> <div class="field__item"><a href="/index.php/taxonomy/term/153" hreflang="en">1.11</a></div> </div> </div> <div class="field field--name-field-faq-category field--type-entity-reference field--label-above"> <div class="field__label">FAQ Category</div> <div class="field__item"><a href="/index.php/faq-categories/contributing" hreflang="en">Contributing</a></div> </div> <section class="field field--name-comment-node-article field--type-comment field--label-hidden comment-wrapper"> </section> Sat, 14 Jan 2017 17:38:23 +0000 freelock 369 at https://ledgersmb.org https://ledgersmb.org/index.php/content/using-docker-develop-ledgersmb#comments Documentation https://ledgersmb.org/index.php/content/documentation <span class="field field--name-title field--type-string field--label-hidden">Documentation</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><h1>Materials relating to supported releases</h1> <h2>Installation</h2> <p><a href="http://ledgersmb.org/installation">Installation instructions</a> can be found on the site for both "docker-compose" based installations as well as "from tarball". The Docker based installations are advised over the "from tarball" installations due to the complexity of the tarball installations.</p> <h3>Upgrades</h3> <p><a href="https://ledgersmb.org/topics/upgrade">Upgrade instructions</a> can be found on the site for both Docker based as well as "from tarball" installations.</p> <h1>Older materials</h1> <h2>The book</h2> <p>There's a work-in-progress book "<a href="http://book.ledgersmb.org">Running your business with LedgerSMB 1.3</a>" by Erik Huelsmann and Chris Travers.</p> <h2>The manual</h2> <p>LedgerSMB also comes with an extensive, free <a href="https://github.com/ledgersmb/LedgerSMB/raw/master/doc/LedgerSMB-manual.pdf">manual</a>; the authoritative source is in the <a href="https://github.com/ledgersmb/LedgerSMB/">GitHub repository </a>at doc/manual/LedgerSMB-manual.pdf.</p> <h2>Videos</h2> <h3>Quickstart</h3> <p>This is really a quickstart:</p> <ul><li>creating a new database via the browser, using <a href="http://www.aftermarket.pl/domena/setup.pl?nostat=1&amp;amp;test_a=1&amp;amp;utm_source=direct_entry" target="_blank">setup.pl</a></li> <li>logging in to the new database</li> <li>setting some parameters, populating the database with some data</li> <li>creating new customer</li> <li>and the main part: issuing the first invoice :)</li> </ul><div class="video-embed-field-provider-youtube video-embed-field-responsive-video"><iframe width="854" height="480" frameborder="0" allowfullscreen="allowfullscreen" src="https://www.youtube.com/embed/A_egb6AlGY0?autoplay=0&amp;start=0&amp;rel=0"></iframe> </div> <p> </p> <h3>Introductory series of 9 videos (1.3.x)</h3> <h4>Set up database and user</h4> <p><iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/c6UJW-uNQY0" width="560"></iframe></p> <h4>How to add customers</h4> <h3><iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/e7Yn0JlFf4g" width="560"></iframe></h3> <h4>Change tax values and descriptions</h4> <h3><iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/hlJqdo9Uto4" width="560"></iframe></h3> <h4>Add services and write bills</h4> <h3><iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/1daTDBdupSc" width="560"></iframe></h3> <h4>Check outstanding bills &amp; change status to 'paid'</h4> <h3><iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/sUQZUjxji3k" width="560"></iframe></h3> <h4>Reports: check outstanding bills, taxes and accounts</h4> <h3><iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/VvzWuRlXJ60" width="560"></iframe></h3> <h4>Write a quotation and check it in reports</h4> <h3><iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/pH0ehvn2KQk" width="560"></iframe></h3> <h4>Handle stock, RFQ, purchase order, shipping &amp; receiving, reporting</h4> <h3><iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/WYfwK4vgUms" width="560"></iframe></h3> <h4>Save invoice as draft</h4> <h3><iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/5AxEX9V2XjQ" width="560"></iframe></h3> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>ehu</span></span> <span class="field field--name-created field--type-created field--label-hidden"><time datetime="2014-02-15T09:35:10-08:00" title="Saturday, February 15, 2014 - 09:35" class="datetime">Sat, 02/15/2014 - 09:35</time> </span> <section class="field field--name-comment-node-page field--type-comment field--label-hidden comment-wrapper"> </section> Sat, 15 Feb 2014 17:35:10 +0000 ehu 158 at https://ledgersmb.org https://ledgersmb.org/index.php/content/documentation#comments Upgrade to LedgerSMB 1.11 (from 1.10 through 1.4) https://ledgersmb.org/index.php/content/upgrade-ledgersmb-111-110-through-14 <span class="field field--name-title field--type-string field--label-hidden">Upgrade to LedgerSMB 1.11 (from 1.10 through 1.4)</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><h1>Upgrading tarball installations</h1> <p>There are two steps to upgrading a LedgerSMB 1.4.x - 1.10.x to 1.11:</p> <ol><li>Upgrade the software</li> <li>Upgrade the company database</li> </ol><p>The last step must be executed for each company database that's set up.</p> <p><em><strong>Attention when upgrading from before 1.7! Due to the complexity in the upgrade related to the "multiple currency rate support" (MC support), it's of the greatest importance that you create a backup of your data before starting the upgrade. In setup.pl, for every database, you need to download a database backup and a roles backup.</strong></em></p> <p>These steps also apply when upgrading a 1.4 installation running Starman. To upgrade 1.4 installations <em>not</em> running on Starman, or to upgrade from earlier versions, please see <a href="/content/upgrading-ledgersmb-15">Upgrading to Ledgersmb 1.5</a>. Note that the default configuration for 1.4 runs CGI, not Starman.</p> <p><em><strong>Again, before upgrading: <a href="/faq/how-do-i-backup-my-data">backup your databases</a>.</strong></em></p> <p>Note that all the steps below are prefixed with the 'sudo' command, but can be executed as 'root' user directly without the sudo prefix.</p> <h2>Upgrading the software</h2> <p>These are the steps to follow, assuming an installation from tarball:</p> <ul><li> <pre> Stop the LedgerSMB application server (e.g. Starman) $ sudo service starman-ledgersmb stop</pre> </li> <li> <pre> Back up the old software by moving it out of the way (assuming you installed in /usr/local/ledgersmb): $ sudo mv /usr/local/ledgersmb /usr/local/ledgersmb.backup</pre> </li> <li> <pre> Untar the tarball into /usr/local/ledgersmb: $ sudo tar xf ledgersmb-1.11.x.tar.gz --directory /usr/local</pre> </li> <li> <pre> Copy the configuration file from the old installation: $ sudo cp /usr/local/ledgersmb.backup/ledgersmb.conf /usr/local/ledgersmb/</pre> </li> <li> <pre> Upgrade the LedgerSMB Starman SysV or systemd scripts (the new scripts can be found in /usr/local/ledgersmb/doc/conf/systemd/ ) $ sudo cp /usr/local/ledgersmb/doc/conf/systemd/ledgersmb_starman.service \ /etc/systemd/system/ledgersmb.service $ sudo systemctl daemon-reload </pre> </li> <li> <pre> Start the LedgerSMB application server again (Starman example given, as before): $ sudo service starman-ledgersmb start</pre> </li> </ul><h1><a name="upgrade-database" id="upgrade-database">Upgrading the company database</a></h1> <p>After the software has been upgraded, the company database(s) must be upgraded. Without this step, a "Database version mismatch" error will be generated on user-login.</p> <p>To upgrade the company database from the Web UI, navigate to the setup.pl page (e.g. when you're hosting your LedgerSMB on https://localhost/ and normally log in through https://localhost/login.pl, navigate to https://localhost/setup.pl). Log into setup.pl with the database admin credentials (the "lsmb_dbadmin" user, if you followed the installation instructions, or "postgres" if you used the Quickstart Guide).</p> <p>After login, setup.pl will show a screen with the following at the top:</p> <blockquote> <p> </p> <p>Logged in as lsmb_dbadmin<br /> LedgerSMB 1.10 db found<br /> Rebuild/Upgrade?</p> </blockquote> <p>By clicking the "Yes" button, the company database upgrade process will be executed. This is an interactive process which consists of a number of steps. Each step of the upgrade process consists of two phases. In the first phase, the application will verify that the data as available in the database has sufficient quality to be upgraded. If this isn't the case, the user will be asked for input to address quality problems. Once data has acceptable quality, the actual database upgrade will be executed. When all steps in the upgrade have been successfully executed, setup.pl will report complete migration. <em>The database is now available for use again.</em></p> <p>Repeat this process for all company databases.</p> <p>For power-users who need to do scripted upgrades, there's a scripting API available which replaces the interactive process with pre-defined inputs. Contact the developers mailing list for more information.</p> <p> </p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>ehu</span></span> <span class="field field--name-created field--type-created field--label-hidden"><time datetime="2023-10-01T12:15:36-07:00" title="Sunday, October 1, 2023 - 12:15" class="datetime">Sun, 10/01/2023 - 12:15</time> </span> <div class="field field--name-field-topic field--type-entity-reference field--label-above"> <div class="field__label">Topic</div> <div class="field__items"> <div class="field__item"><a href="/index.php/topic/installation" hreflang="en">Installation</a></div> </div> </div> <div class="field field--name-field-release field--type-entity-reference field--label-above"> <div class="field__label">Release</div> <div class="field__items"> <div class="field__item"><a href="/index.php/release/15" hreflang="en">1.5</a></div> <div class="field__item"><a href="/index.php/taxonomy/term/142" hreflang="en">1.6</a></div> <div class="field__item"><a href="/index.php/taxonomy/term/146" hreflang="en">1.7</a></div> <div class="field__item"><a href="/index.php/taxonomy/term/147" hreflang="en">1.8</a></div> <div class="field__item"><a href="/index.php/taxonomy/term/149" hreflang="en">1.9</a></div> <div class="field__item"><a href="/index.php/taxonomy/term/150" hreflang="en">1.10</a></div> <div class="field__item"><a href="/index.php/taxonomy/term/153" hreflang="en">1.11</a></div> </div> </div> <section class="field field--name-comment-node-article field--type-comment field--label-hidden comment-wrapper"> </section> Sun, 01 Oct 2023 19:15:36 +0000 ehu 642 at https://ledgersmb.org https://ledgersmb.org/index.php/content/upgrade-ledgersmb-111-110-through-14#comments Installing LedgerSMB 1.11 https://ledgersmb.org/index.php/content/installing-ledgersmb-111 <span class="field field--name-title field--type-string field--label-hidden">Installing LedgerSMB 1.11</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><h1>Installation from tarballs</h1> <p>This page contains the comprehensive version with the installation instructions for LedgerSMB 1.7 targetting a production installation <strong>from release tarballs</strong> and deals with these steps:</p> <ul><li>Installing the LedgerSMB Perl module dependencies</li> <li>Configuring the PostgreSQL server</li> <li>Configuring a webserver</li> <li>Configuring LedgerSMB</li> </ul><p>If you already have all of the above, please proceed to the <a href="http://ledgersmb.org/topic/preparing/preparing-ledgersmb-15-first-use">"Preparing for first use" guide</a>.</p> <p><!--break--></p> <p><em><strong>These are </strong></em><strong>not</strong><em><strong> the <a href="https://github.com/ledgersmb/LedgerSMB#quick-start">Quick start instructions</a>, but instructions for setting up a full production system. Also, please note that if you're in a position to use <a href="https://github.com/ledgersmb/ledgersmb-docker/pkgs/container/ledgersmb">LedgerSMB's Docker images</a>, or <a href="/node/140">packages for your Unix/Linux distribution</a>, using those will be far quicker and easier than following the instructions below.</strong></em></p> <h2><a>System requirements</a></h2> <p>Requirements are documented on the <a href="https://ledgersmb.org/content/system-requirements">system requirements page</a>.</p> <h3>Client</h3> <p>There are no specific requirements for LedgerSMB clients (web browsers) other than that they should have JavaScript enabled and be <a href="http://dojotoolkit.org/reference-guide/1.10/releasenotes/1.10.html#user-agent-support">able to run Dojo 1.17</a>.</p> <p>A broad range of browsers is supported (<a href="https://github.com/ledgersmb/LedgerSMB#client">Chrome, FireFox, Opera, ...</a>).</p> <p>Browsers explicitly not supported are:</p> <ul><li>Lynx</li> <li>w3m</li> <li>Internet Explorer</li> </ul><h2>Unpacking the release tarball</h2> <p>According to the <a href="https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard">Filesystem Hierarchy Standard</a>, both /usr/local/ledgersmb and /opt/ledgersmb could be chosen as install locations. Unpack the tarball by running (as "root" user):</p> <pre> # tar xf ledgersmb-1.7.x.tar.gz --directory /usr/local/</pre> <h2><a>Installing the LedgerSMB Perl module dependencies</a></h2> <p>Please note that some distributions (e.g. Fedora) do not by default install <em>all</em> core modules, but rather, install a subset. LedgerSMB doesn't list core modules as dependencies as they should be available. For Fedora, this means you need to install the "perl-core" package.</p> <p>The instructions below assume all dependencies will be installed from CPAN. It is however possible to install most modules from distribution repositories. The Docker image can be consulted for <a href="https://github.com/ledgersmb/ledgersmb-docker/blob/3f3ca9dd7fd46804d9ed5a4ad06afc700c0d4f4d/Dockerfile#L24-L32">an example</a>.</p> <p><code><strong># Installation of LedgerSMB Perl dependencies from CPAN</strong><br /> cpanm --quiet --notest --with-feature=starman --installdeps /usr/local/ledgersmb/</code></p> <p>Then, there are a number of features which need additional modules.<br /> The above command includes the Starman Feature which is required for most installations.<br /> The modules required for each feature can be installed by appending "--with-feature=&lt;feature-name&gt;" to the above command line.</p> <p>These features are supported:</p> <table><thead><tr><th>Feature</th> <th>Description</th> </tr></thead><tbody><tr><td><code>latex-pdf-ps</code></td> <td>Enable PDF and PostScript output<br /><em>Note</em>: In order to make use of this functionality, the server must also have 'latex' or 'xelatex' installed. On many distributions, these packages are called 'texlive-latex' and 'texlive-tetex' respectively.</td> </tr><tr><td><code>starman</code></td> <td>Starman Perl/PSGI (standalone) web server</td> </tr><tr><td><code>openoffice</code></td> <td>OpenOffice.org document output</td> </tr><tr><td><code>xls</code></td> <td>Microsoft Excel output</td> </tr><tr><td><code>edi</code></td> <td>(EXPERIMENTAL) X12 EDI support</td> </tr></tbody></table><p> </p> <p><code><strong># Installation of LedgerSMB Perl dependencies directly from CPAN<br /> # With Starman and PDF &amp; Postscript output</strong><br /> cpanm --quiet --notest --with-feature=starman --with-feature=latex-pdf-ps \<br /> --installdeps /usr/local/ledgersmb/</code></p> <h2><a>Configuring the PostgreSQL server</a></h2> <p>There are only two requirements for the PostgreSQL database server. This section instructs how to configure an pre-installed PostgreSQL installation to meet those requirements. It's assumed that the LedgerSMB server and PostgreSQL are being run on the same system. The requirements to meet are:</p> <ol><li>A database administrator user (in PostgreSQL called a 'role') for creation and administration of LedgerSMB company databases</li> <li>Authorization setup so the database administrator can log into the database through LedgerSMB's 'setup.pl' program</li> </ol><h3><a>Creating the company database administrator account</a></h3> <p>The database administrator user account needs to have at the bare minimum:</p> <ul><li>The right to create databases (CREATEDB)</li> <li>The right to create roles (CREATEROLE)</li> <li>The right to log in (LOGIN)</li> <li>A password to authenticate logins</li> </ul><p>The following command issued as root user, creates a user named "lsmb_dbadmin" (which isn't a super user):</p> <p><code><code># su - postgres -c 'createuser -S -d -r -l -P lsmb_dbadmin'<br /> Enter password for new role: <strong>************</strong><br /> Enter it again: <strong>************</strong></code></code></p> <h3><a>Configuring database access rights</a></h3> <p>PostgreSQL takes its access configuration through a file called 'pg_hba.conf'. The location of this file may differ per distribution:</p> <ul><li>Debian derivatives: /etc/postgresql/&lt;version&gt;/&lt;cluster&gt;/pg_hba.conf</li> <li>RedHat derivatives: /var/lib/pgsql/&lt;version&gt;/data/pg_hba.conf</li> </ul><p>On most systems, this file has four effective lines:</p> <p><code>local   all             postgres                                peer<br /> local   all             all                                     peer<br /> host    all             all             127.0.0.1/32            peer<br /> host    all             all             ::1/128                 peer</code></p> <p>These lines mean that each system user can connect to the database system with an equally named database user; the connecting source doesn't make a difference: unix and TCP/IP sockets have the same configuration.</p> <p>The LedgerSMB software needs to be able to connect to the database system as 'lsmb_dbadmin' or as a LedgerSMB user, not as the user that runs the server process. The new content should look like:</p> <p><code>local   all             postgres                         peer<br /> local   all             all                              peer<br /> host    all             postgres         127.0.0.1/32     reject<br /> host    all             postgres        ::1/128      reject<br /> host    postgres,template0,template1   lsmb_dbadmin         127.0.0.1/32     md5<br /> host    postgres,template0,template1   lsmb_dbadmin         ::1/128      md5<br /> host    postgres,template0,template1   all          127.0.0.1/32     reject<br /> host    postgres,template0,template1   all          ::1/128      reject<br /> host    all             all             127.0.0.1/32     md5<br /> host    all             all             ::1/128          md5</code></p> <p>This configuration takes advantage of the fact that each connection method (unix sockets vs TCP/IP sockets/addresses) can be separately configured. While the default connection method of the 'psql' tool is to connect over the 'local' (unix socket method), the default connection method for LedgerSMB is to use 'localhost' (127.0.0.1/32 or ::1/128).</p> <p>The above configuration means that the user 'postgres' can't be used any longer to connect from 'localhost', no user can connect to the 'postgres' database through 'localhost' [reject] and all other combinations of users and database names need password authentication [md5].</p> <p>Notes:</p> <ol><li>PostgreSQL matches the lines first to last and uses the first matching line, so <strong>the order of the lines is very importance</strong>.</li> <li>For more information about the pg_hba.conf configuration options, see the <a href="https://www.postgresql.org/docs/9.4/static/auth-pg-hba-conf.html">PostgreSQL pg_hba.conf documentation</a></li> <li>The databases 'template1' and 'template0' are system databases available in every cluster; this configuration blocks those for access from LedgerSMB as well.</li> </ol><p>After reconfiguring pg_hba.conf, the PostgreSQL service needs to be restarted. this works with one of the following commands (depending on your distribution):</p> <p><code><strong># restarting postgresql service (as root)</strong><br /> # service postgresql restart<br /><strong># - or -:</strong><br /> $ service postgresql-&lt;version&gt; restart</code></p> <p><a>Verifying database access</a></p> <p>To verify access for the database admin user 'lsmb_dbadmin', an accessible database - not named 'postgres', 'template0' or 'template1' - is required. On new installs, these are the only databases. So the next example creates one. Here's how to verify the setup:</p> <p><code><strong># Verify access configuration (run as root)</strong><br /> $ su - postgres -c 'createdb lsmb_access_test_db'<br /> $ psql -h localhost -U lsmb_dbadmin -d lsmb_access_test_db -c "select version()"<br /> PostgreSQL 9.4.7 &lt;--- this line indicates success("9.4.7" is just an example version number)<br /> $ su - postgres -c 'dropdb lsmb_access_test_db'</code></p> <p><a>Configuring a web server</a></p> <p>Regardless of your web server setup, configuration of an "application server" is required. The application server used with LedgerSMB can be any PSGI compatible server. The default application server is Starman, which is widely considered the fastest available. The Starman server process lives behind a <a href="https://en.wikipedia.org/wiki/Reverse_proxy">reverse proxy</a>. While Starman deals specifically with those HTTP requests which require "application logic", all other requests (mostly static content, such as images or CSS) are dealt with by the proxy.</p> <h3><a>Configuring the Starman application server</a></h3> <p>Depending on the distribution, a startup method must be installed; this can be one of:</p> <ul><li>SysV init script</li> <li>Upstart configuration</li> <li>Systemd configuration</li> </ul><p>At the time of writing, the only configuration that comes with LedgerSMB's tarball is the systemd configuration. The following common setup is required regardless of the system used to manage services on the target system.</p> <p>To support priviledge separation, the Starman server should be running as a user which meets these criteria:</p> <ul><li>Not the same user as the web server</li> <li>Does not have write access to the LedgerSMB directories</li> </ul><p>To that extent, identify an existing (unused) system user, or create one with this command:</p> <p><code><strong># create 'ledgersmb' user for Starman server to run</strong><br /> $ useradd -d /non-existent -r -U -c "LedgerSMB/Starman service system user" ledgersmb</code></p> <h4><a>Configuring systemd for Starman</a></h4> <p>In the directory conf/systemd/ from the tarbal, there is a preconfigured systemd service file, which needs to be copied into place. In case you decided to install dependencies into a local::lib, the service file needs to be edited to set a PERL5LIB environment variable before you can succesfully start the service.</p> <p><code><strong># 'copy' systemd service configuration, enable and start</strong><br /> $ sed -e "s#WORKING_DIR#$PWD#" conf/systemd/ledgersmb_starman.service \<br /> | sudo tee /etc/systemd/system/ledgersmb-starman.service</code><br /><code>$ systemctl enable ledgersmb-starman<br /> $ service ledgersmb-starman start</code></p> <p>Note that the above assumes that the commands are being run from the root of the unpacked tarball. It also assumes that the tarball has been unpacked at its installation path.</p> <p>To verify that the service started up correctly, run:</p> <p><code><strong># verify that the Starman/LedgerSMB server started correctly</strong><br /> $ journalctl -u ledgersmb-starman.service --since="today" -l -e</code></p> <h3><a>Configuring a reverse proxy</a></h3> <p>For a quick test-run or demo setup running on localhost only, configuration of a proxy isn't mandatory. However, for a production setup with LedgerSMB being network or even web-exposed, it's ill-advised to run without the reverse proxy for - at least - the following reasons:</p> <ul><li>The proxy can serve static content [much] more efficiently (performance)</li> <li>The proxy can support HTTP/2 which multiplexes requests (performance)</li> <li>The proxy guards Starman against public exposure (security)</li> <li>The proxy adds TLS (security)</li> </ul><p>With TLS certificates being completely free these days through <a href="https://letsencrypt.org/">Let's Encrypt</a>, and only a few dollars for the simplest of certificates from commercial vendors, there's really no reason <em>not</em> to secure traffic to the server. Further documentation below assumes you have such a certificate. As for getting Let's Encrypt certificates, use their <a href="https://letsencrypt.org/getting-started/">Getting Started guide</a>.</p> <p>For simplicity, only the configuration of nginx as a reverse proxy is documented here.</p> <h4><a>Configuring nginx</a></h4> <p>The tarball contains an example virtual host configuration file to set up a reverse proxy with nginx. It needs to be included in the 'http { }' block in your nginx configuration. On Debian derived systems, this is done by copying the file to /etc/nginx/sites-available/ledgersmb.conf. On RedHat/Fedora derivatives, the copying goes to /etc/nginx/conf.d/ledgersmb.conf. After editing the file, replacing the following variables:</p> <ul><li><working_dir> Same replacement as before</working_dir></li> <li>SSL_CERT_FILE<br /> Should be where your certificate file is stored; probably /etc/certs/your_host.example.com.pem</li> <li>SSL_KEY_FILE<br /> Probably the same as the SSL_CERT_FILE, but with '.key' extension</li> <li>YOUR_SERVER_NAME<br /> If nothing else, should be replaced by the output of the command 'hostname -f'</li> </ul><p>NOTE: by default snakeoil certificates will be used by at least our nginx sample config files.<br /> These certificates are locally created and will normally require your browser clients to override something before they can be used.</p> <p>On Debian derivatives, activate this file after it has been edited, using:</p> <p><code><strong># On Debian/Ubuntu/Mint activate the virtual host</strong><br /> $ ln -s /etc/nginx/sites-available/ledgersmb.conf /etc/nginx/sites-enabled/</code></p> <p>On RedHat/Fedora derivatives, no symlinking is necessary: the configuration is active immediately. Now, verify that the configuration is acceptable:</p> <p><code><strong># (Re)start nginx service to make nginx reconfigure itself and validate configuration</strong><br /> $ service nginx restart</code></p> <h2><a>Configuring LedgerSMB</a></h2> <p>The tarball has a default LedgerSMB configuration file conf/ledgersmb.conf.default. Install the configuration file with:</p> <p><code><strong># Install the default ledgersmb.conf configuration file</strong><br /> $ cp doc/conf/ledgersmb.yaml ledgersmb.yaml</code></p> <p>That is it.</p> <p>In case the in-app e-mail feature is going to be used, check the values in the [mail] section and optionally adjust for the mail setup of the target system.</p> <h2>Next steps</h2> <p>Now follow the instructions in the <a data-entity-substitution="canonical" data-entity-type="node" data-entity-uuid="852c392e-db91-4e0b-aa20-d8c4f775c7f2" href="/index.php/content/preparing-ledgersmb-111-first-use" title="Preparing LedgerSMB 1.11 for first use">"Prepare LedgerSMB for first use" guide</a>.</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span>ehu</span></span> <span class="field field--name-created field--type-created field--label-hidden"><time datetime="2023-10-01T11:04:41-07:00" title="Sunday, October 1, 2023 - 11:04" class="datetime">Sun, 10/01/2023 - 11:04</time> </span> <div class="field field--name-field-topic field--type-entity-reference field--label-above"> <div class="field__label">Topic</div> <div class="field__items"> <div class="field__item"><a href="/index.php/topic/installation" hreflang="en">Installation</a></div> </div> </div> <div class="field field--name-field-release field--type-entity-reference field--label-above"> <div class="field__label">Release</div> <div class="field__items"> <div class="field__item"><a href="/index.php/taxonomy/term/153" hreflang="en">1.11</a></div> </div> </div> <section class="field field--name-comment-node-article field--type-comment field--label-hidden comment-wrapper"> </section> Sun, 01 Oct 2023 18:04:41 +0000 ehu 641 at https://ledgersmb.org https://ledgersmb.org/index.php/content/installing-ledgersmb-111#comments