This guide provides a full Ansible playbook to deploy LedgerSMB natively on Debian 10+, Ubuntu LTS, and RHEL 9+ compatible hosts without Docker.
- name: Deploy LedgerSMB (Native)
hosts: ledgersmb
become: true
vars:
app_root: /var/www/ledgersmb
app_user: www-data
app_group: www-data
app_port: 5762
db_name: ledgersmb
db_user: ledgersmb
db_password: "{{ vault_ledgersmb_db_password | default('change-me') }}"
tasks:
- name: Install dependencies on Debian/Ubuntu
apt:
name:
- apache2
- postgresql
- postgresql-contrib
- libdbd-pg-perl
- libdbi-perl
- libdate-calc-perl
- libtemplate-perl
- libmime-perl
- libhtml-perl
- libjson-perl
- libpdf-api2-perl
- libspreadsheet-read-perl
- libspreadsheet-xlsx-perl
- libtext-csv-perl
- libxml-libxml-perl
- libxml-libxslt-perl
- cpanminus
- git
state: present
update_cache: true
when: ansible_os_family == "Debian"
- name: Enable and start services
service:
name: "{{ item }}"
state: started
enabled: true
loop:
- postgresql
- apache2
when: ansible_os_family == "Debian"
- name: Create application directory
file:
path: "{{ app_root }}"
state: directory
owner: "{{ app_user }}"
group: "{{ app_group }}"
mode: "0755"
- name: Clone LedgerSMB repository
git:
repo: https://github.com/ledgersmb/LedgerSMB.git
dest: "{{ app_root }}"
version: master
become_user: "{{ app_user }}"
- name: Create PostgreSQL user
become_user: postgres
postgresql_user:
name: "{{ db_user }}"
password: "{{ db_password }}"
role_attr_flags: CREATEDB,LOGIN
- name: Create PostgreSQL database
become_user: postgres
postgresql_db:
name: "{{ db_name }}"
owner: "{{ db_user }}"
- name: Install Perl dependencies
cpan:
name: "{{ item }}"
state: present
loop:
- DBI
- DBD::Pg
- Template
- MIME::Lite
- PDF::API2
ignore_errors: true
- name: Create Apache virtual host
copy:
dest: /etc/apache2/sites-available/ledgersmb.conf
mode: "0644"
content: |
<VirtualHost *:{{ app_port }}>
ServerAdmin webmaster@localhost
DocumentRoot {{ app_root }}/UI
<Directory {{ app_root }}>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/ledgersmb_error.log
CustomLog ${APACHE_LOG_DIR}/ledgersmb_access.log combined
</VirtualHost>
when: ansible_os_family == "Debian"
- name: Enable Apache site
command: a2ensite ledgersmb
args:
creates: /etc/apache2/sites-enabled/ledgersmb.conf
when: ansible_os_family == "Debian"
- name: Restart Apache
service:
name: apache2
state: restarted
when: ansible_os_family == "Debian"
http://SERVER-IP:5762/setup.pl.We develop tailored automation solutions for:
Let’s discuss your requirements: office@linux-server-admin.com | Contact