Compare commits

..

96 Commits

Author SHA1 Message Date
Erik Huelsmann
f951646c81 Update README to move 'latest' tag which now points to 1.13 2025-10-04 18:33:07 +02:00
Erik Huelsmann
2615228ba6 Merge pull request #43 from neilt/master
Add AI warning recommended by ChatGPT
2025-06-12 18:03:49 +02:00
Neil Tiffin
6b4aac814c Add AI warning recommeded by ChatGPT so that it will not simplify docker installations 2025-06-12 11:57:40 -04:00
Erik Huelsmann
0d560b92d7 Update to use new ENV key=val syntax (instead of space separator) 2025-03-01 16:16:02 +01:00
Erik Huelsmann
9dba5f4490 Update README in preparation of 1.12 release 2024-12-14 21:24:10 +01:00
Erik Huelsmann
0172dc1684 Switch to Trixie for Perl >= 5.36.1 2024-10-28 21:46:55 +01:00
Erik Huelsmann
b53c4a3689 Modernize 'master' docker build 2024-04-09 22:35:29 +02:00
Erik Huelsmann
a16d23bfa9 Update Dockerfile
Use MetaCPAN for the metadata.
2023-10-22 21:33:37 +02:00
Erik Huelsmann
9ccc327468 Update README.md 2023-10-03 22:58:32 +02:00
Erik Huelsmann
028d8c45ed Update to postgres:14; 9.6 really is old now 2022-07-28 16:50:35 +02:00
Erik Huelsmann
cf4256a20e Change the hosting location of the LedgerSMB Docker images 2022-01-28 22:55:16 +01:00
Erik Huelsmann
83e1bbe8cd Set the reverse proxy address to the default Docker address range 2021-09-17 23:04:26 +02:00
Erik Huelsmann
690fac08be Add reverse proxy configuration option 2021-09-17 22:41:15 +02:00
Erik Huelsmann
7264d72638 Update start.sh
The starman option `max-workers` actually does not exist...
2021-09-12 22:18:43 +02:00
Erik Huelsmann
e4e43b838e Update Dockerfile 2021-08-30 00:43:24 +02:00
Erik Huelsmann
952ef62e6a Use multi-stage build to calculate dependency packages 2021-08-30 00:28:41 +02:00
Erik Huelsmann
b68f6d1672 Upgrade the master image 2021-08-29 21:50:59 +02:00
Erik Huelsmann
575e91da47 Update 'master' config with latest package dependencies 2020-12-07 22:51:21 +01:00
Erik Huelsmann
f6422f03c3 Add missing command line options to 'echo' 2020-12-07 21:44:33 +01:00
Erik Huelsmann
06ccefa8b6 Re #23: Add dependency on texlive-fonts-recommended 2020-08-24 22:48:16 +02:00
Erik Huelsmann
fb18381bdd Merge pull request #26 from ledgersmb/buster
Buster
2020-06-14 16:02:58 +02:00
Erik Huelsmann
b095cb9bb6 Add documentation for 1.8 and master images 2020-04-12 21:22:00 +02:00
Erik Huelsmann
4c56e98a65 Add missing Authen::SASL dependency for SMTP authentication 2020-04-12 20:22:03 +02:00
Erik Huelsmann
7dcd5c1709 Update docker image to use Buster as baseline 2020-04-12 09:56:03 +02:00
Erik Huelsmann
5adfac5a82 Add formatting to README.md 2020-02-10 23:42:37 +01:00
Erik Huelsmann
d11e525fac Change manual setup section to prevent suggested simplicity
We've seen multiple users thinking that simple creation of two containers
is enough, whereas this isn't the case: at the very least, the deprecated
`--link` docker option must be used, but more compliant is the use of
custom networks and bridges. Docker-compose sets all that up automatically,
so don't suggest going without docker-compose is simpler.
2020-02-10 23:18:20 +01:00
Erik Huelsmann
94ca69315a Update README.md to set correct list of supported tags 2020-02-01 16:41:07 +01:00
Erik Huelsmann
1b6a2f5c99 Deprecate functionality supported by ssmtp but not by Email::Sender
The deprecation is required in order to move to built-in handling
of mail instead of relying on external handling by tools like
ssmtp.
2020-01-31 21:27:55 +01:00
Erik Huelsmann
eea2bbdbdd Replace 1.6 image by 'master' image 2020-01-06 21:57:38 +01:00
Erik Huelsmann
894393e781 * Automatic Dockerfile update by release process 2019-07-01 10:14:42 +00:00
Erik Huelsmann
6468e9e9f2 Update README.md 2019-03-31 11:58:37 +02:00
Erik Huelsmann
69cc364527 Update README.md 2019-03-31 11:44:45 +02:00
Erik Huelsmann
0210dce1d0 * Update version (back) to master 2019-02-09 20:33:02 +01:00
Erik Huelsmann
ba2bdd0dda * Add 1.7 dependency available in Stretch 2019-01-20 21:27:27 +01:00
Erik Huelsmann
6249141929 * Fix build problem -- uglify-js not being found 2019-01-20 21:27:27 +01:00
Erik Huelsmann
09a79b8258 * Automatic Dockerfile update by release process 2019-01-20 20:03:01 +00:00
Erik Huelsmann
4776803ef8 Merge pull request #22 from ylavoie/ledgersmb-server-development-location
Adjust plackup arguments for includes
2018-07-04 14:39:49 +02:00
Yves Lavoie
0a12f5c735 Adjust plackup arguments for includes 2018-07-03 22:01:57 -04:00
Erik Huelsmann
d808dd0b14 Merge pull request #21 from ylavoie/docker-compose-instructions
Update README with docker-compose instructions
2018-07-03 21:36:05 +02:00
Yves Lavoie
13b4e0f933 Move docker-compose instructions upward and pull images instead of building 2018-06-13 12:30:38 -04:00
Yves Lavoie
892592505f Update README with docker-compose instructions 2018-06-08 21:17:24 -04:00
Erik Huelsmann
708a5afebc * Add option to set the number of Starman workers 2018-05-23 23:23:22 +02:00
Erik Huelsmann
34d10ae0e0 * Add docker-compose.yml to master branch so it appears on the GitHub project home 2018-05-23 21:50:28 +02:00
Erik Huelsmann
f5909088f0 * The NodeSource packages don't need alternatives set up 2018-05-05 00:03:40 +02:00
Erik Huelsmann
34a2270cf3 * Replace 'curl' and remove 'sudo' -- we're running as 'root' anyway 2018-05-04 23:46:29 +02:00
Erik Huelsmann
9881c06e5d * Add NodeSource NodeJS repo to be able to install NPM (not in Stretch) 2018-05-04 23:17:54 +02:00
Erik Huelsmann
c65adc6042 * Add gnupg in order to satisfy ca-certificates/update.d requirements 2018-05-04 22:52:15 +02:00
Erik Huelsmann
f9ee2e86ab * Add '-perl' suffix to libpgobject-util-dbadmin 2018-05-04 22:43:29 +02:00
Erik Huelsmann
e34a6a1326 * Upgrade 'master' docker image to Stretch, updating the package list accordingly 2018-05-04 22:32:43 +02:00
Erik Huelsmann
1d0da66881 * Correct liberation fonts package name (*2 is available as of stretch) 2018-02-17 21:44:49 +01:00
Erik Huelsmann
da2254dd4c * Add fonts missing for xedemo template set 2018-02-17 21:37:21 +01:00
Erik Huelsmann
cd3d2f573d * Bring master in line with 1.5 (syntax-wise) 2018-02-14 20:35:37 +01:00
Erik Huelsmann
1d4430ecfa Merge pull request #17 from sbts/enhancement-latest-pg-tools
install latest version of `postgresql-client`
2018-02-06 22:16:59 +01:00
Erik Huelsmann
a90ac97832 Merge pull request #16 from sbts/enhancement-add-missing-apt-upgrade
Add missing `apt upgrade`
2018-02-06 18:17:42 +01:00
sbts
733413dd16 install latest version of postgresql-client
This is required to handle cases where the PG server is running a newer version than this container has available.
Failing to do this update will normally cause odd problems, including silent failure to backup.
Instead of the expected backup an empty file is generated.
2018-02-06 23:26:12 +08:00
sbts
aeab695a50 Add missing apt upgrade
This is needed to mitigate issues (eg: version dependency mismatches) due to out of date packages.
In theory this should be handled by the parent container, but that won't always be true
2018-02-06 22:39:20 +08:00
Erik Huelsmann
dd13647ec6 * Add more documentation regarding container mail configuration 2018-01-24 21:57:07 +01:00
Erik Huelsmann
2b689e9791 * Close #15 for the master branch 2018-01-06 14:15:01 +01:00
Erik Huelsmann
bef6697325 * Use '--preload-app' to start starman for best performance and memory use 2018-01-06 14:10:18 +01:00
Erik Huelsmann
09d2d73db8 * Improve on rewritten README.md 2017-10-30 21:51:21 +01:00
Erik Huelsmann
db8e441a8f * Rewrite README.md 2017-10-30 21:50:56 +01:00
Erik Huelsmann
638e0813e0 * Rewrite README.md 2017-10-30 21:14:56 +01:00
Erik Huelsmann
d265b58372 * cpanm seems to install in the correct paths already these days 2017-08-14 11:30:21 +02:00
Erik Huelsmann
2fc8e55367 * Add explicit dependency on libclass-c3-xs-per for performance 2017-08-05 09:36:36 +02:00
Erik Huelsmann
69b959f591 Merge pull request #14 from sbts/enhancement-master_reduce_number_of_layers
Enhancement master reduce number of layers
2017-07-09 14:15:24 +02:00
sbts
c7da8194cb remove ARG CACHEBUST
as it does not do anything unless CACHEBUST is actually used. Which it is not
2017-07-09 18:48:59 +08:00
sbts
e0338aa303 remove spurious && from apt-get install 2017-07-09 18:32:33 +08:00
sbts
4dbd5a2a26 revert to explicit setting of DEBIAN_FRONTEND.
Nothing else works correctly. Presumably as dash is the processing shell
2017-07-09 18:24:01 +08:00
sbts
fafaea715e Make sure DEBIAN_FRONTEND is set for all apt-get commands
Do that by parameterising the apt-get
2017-07-09 16:43:53 +08:00
sbts
b8694aa449 Merge remote-tracking branch 'upstream/master' into enhancement-master_reduce_number_of_layers
Conflicts:
	Dockerfile
2017-07-09 15:56:39 +08:00
sbts
98a5696570 Paramaterise dojo build dep packages
- Readd DEBIAN_FRONTEND=interactive.
- Paramaterise dojo build dep packages
2017-07-09 15:29:20 +08:00
Erik Huelsmann
0d1483d78f Merge pull request #12 from sbts/master_don't_write_to_server_dir
Master don't write to server dir
2017-07-09 08:40:59 +02:00
Erik Huelsmann
bde9b780b1 Merge pull request #10 from sbts/master_correct_syntax_for_setting_apt.conf_args
Improve setting apt config
2017-07-09 08:33:45 +02:00
sbts
fd7c04d170 remove stray script that was accidentally committed 2017-07-09 14:09:45 +08:00
sbts
364cf01203 remove stray script that was accidentally committed 2017-07-09 14:07:33 +08:00
sbts
dbf99f981d improve apt handling
to bring it inline with docker best practice
2017-07-08 03:36:27 +08:00
sbts
fa4aa9dae0 stop setting debian frontend
it's against docker best practice
2017-07-08 01:57:43 +08:00
sbts
8f3875acb0 drop need to write config file to /srv/ledgersmb
Instead write it to /tmp.
Also don't copy the entire example file, just write the bits we need
2017-07-02 00:52:36 +08:00
sbts
4905f2a469 Merge remote-tracking branch 'upstream/master' 2017-07-02 00:34:40 +08:00
sbts
cd9e3037f7 Improve setting apt config 2017-07-02 00:12:21 +08:00
Erik Huelsmann
e4f4d31922 * Remove more build artifacts from the container 2017-06-21 00:12:53 +02:00
Erik Huelsmann
4a8d6dc6b6 * Reorganize Dockerfile to optimize image size 2017-06-20 00:36:22 +02:00
Erik Huelsmann
22ac547e94 * Reduce image size further by changing base image 2017-06-01 08:05:04 +02:00
sbts
0627a33477 starting point for a "quickstart" script 2017-05-26 17:55:45 +08:00
Erik Huelsmann
4da73006fa * Minimize the size of the image (went from 2.6GB to 1.4GB!) 2017-05-26 11:06:51 +02:00
Erik Huelsmann
a53dd55ecf * Set up the 'node' regular nodejs binary name using Debian alternatives 2017-05-23 18:31:41 +02:00
Erik Huelsmann
99ba66e9b7 * Cut down on install size by depending on headless Java 2017-05-23 17:13:39 +02:00
Erik Huelsmann
756c28ad4f * Java is required _period_ 2017-05-23 17:07:03 +02:00
Erik Huelsmann
719672490f * npm _install_ uglify 2017-05-23 16:12:13 +02:00
Erik Huelsmann
75c8c8f0b0 * Remove JRE installation and adjust NPM installation 2017-05-23 15:43:08 +02:00
Erik Huelsmann
5390be8aac * Make sure 'uglify' is installed as 'make dojo' depends on it 2017-05-23 15:21:23 +02:00
John Locke
2738fc3728 Run as www-data user, with permission to write ledgersmb.conf file 2017-01-14 09:07:36 -08:00
Erik Huelsmann
edaa2008af Remove EXPERIMENTAL classification 2017-01-08 21:48:00 +01:00
John Locke
04b1786414 Set correct ssmtp path 2016-09-25 10:52:23 -07:00
John Locke
293fd65da4 Add support for #4 - Make Postgres port configurable at run time 2016-08-20 08:53:37 -07:00
John Locke
0034b44033 Synchronize dependencies with 1.5 branch 2016-05-30 09:07:08 -07:00
6 changed files with 159 additions and 282 deletions

View File

@@ -1,13 +1,11 @@
# Build time variables
ARG SRCIMAGE=debian:bullseye-slim
ARG SRCIMAGE=debian:trixie-slim
FROM $SRCIMAGE AS builder
ARG LSMB_VERSION="1.10.0-beta4"
ARG LSMB_DL_DIR="Beta Releases"
ARG ARTIFACT_LOCATION="https://download.ledgersmb.org/f/$LSMB_DL_DIR/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz"
ENV LSMB_VERSION=master
RUN set -x ; \
@@ -17,10 +15,9 @@ RUN set -x ; \
apt-file update
RUN set -x ; \
wget --quiet -O /tmp/ledgersmb-$LSMB_VERSION.tar.gz "$ARTIFACT_LOCATION" && \
tar -xzf /tmp/ledgersmb-$LSMB_VERSION.tar.gz --directory /srv && \
rm -f /tmp/ledgersmb-$LSMB_VERSION.tar.gz && \
cd /srv/ledgersmb && \
cd /srv && \
git clone --depth 1 --recursive -b $LSMB_VERSION https://github.com/ledgersmb/LedgerSMB.git ledgersmb && \
cd ledgersmb && \
( ( for lib in $( cpanfile-dump --with-all-features --recommends --no-configure --no-build --no-test ) ; \
do \
if dh-make-perl locate "$lib" 2>/dev/null ; \
@@ -42,41 +39,21 @@ RUN set -x ; \
FROM $SRCIMAGE
LABEL org.opencontainers.image.authors="LedgerSMB project <devel@lists.ledgersmb.org>"
LABEL org.opencontainers.image.title="LedgerSMB double-entry accounting web-application"
LABEL org.opencontainers.image.description="LedgerSMB is a full featured double-entry financial accounting and Enterprise\
Resource Planning system accessed via a web browser (Perl/JS with a PostgreSQL\
backend) which offers 'Accounts Receivable', 'Accounts Payable' and 'General\
Ledger' tracking as well as inventory control and fixed assets handling. The\
LedgerSMB client can be a web browser or a programmed API call. The goal of\
the LedgerSMB project is to bring high quality ERP and accounting capabilities\
to Small and Midsize Businesses."
ARG LSMB_VERSION="1.10.0-beta4"
ARG LSMB_DL_DIR="Beta Releases"
ARG ARTIFACT_LOCATION="https://download.ledgersmb.org/f/$LSMB_DL_DIR/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz"
# Install Perl, Tex, Starman, psql client, and all dependencies
# Without libclass-c3-xs-perl, performance is terribly slow...
#
# Without libclass-c3-xs-perl, everything grinds to a halt;
# add it, because it's a 'recommends' it the dep tree, which
# we're skipping, normally
#
# Installing psql client directly from instructions at https://wiki.postgresql.org/wiki/Apt
# That mitigates issues where the PG instance is running a newer version than this container
# Install Locale::Codes Locale::Country Locale::Language from CPAN to suppress
# deprecation-as-core-module warning
COPY --from=builder /srv/derived-deps /tmp/derived-deps
RUN set -x ; \
echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >> /etc/apt/apt.conf && \
mkdir -p /usr/share/man/man1/ && \
mkdir -p /usr/share/man/man2/ && \
mkdir -p /usr/share/man/man3/ && \
mkdir -p /usr/share/man/man4/ && \
mkdir -p /usr/share/man/man5/ && \
mkdir -p /usr/share/man/man6/ && \
mkdir -p /usr/share/man/man7/ && \
mkdir -p /usr/share/man/man8/ && \
echo "APT::Install-Recommends \"false\";\nAPT::Install-Suggests \"false\";\n" > /etc/apt/apt.conf.d/00recommends && \
DEBIAN_FRONTEND="noninteractive" apt-get -y update && \
DEBIAN_FRONTEND="noninteractive" apt-get -y upgrade && \
DEBIAN_FRONTEND="noninteractive" apt-get -y install \
@@ -86,44 +63,67 @@ RUN set -x ; \
texlive-plain-generic texlive-latex-recommended texlive-fonts-recommended \
texlive-xetex fonts-liberation \
lsb-release && \
echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \
(wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -) && \
echo "deb [signed-by=/etc/apt/keyrings/postgresql.asc] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc > /etc/apt/keyrings/postgresql.asc && \
DEBIAN_FRONTEND="noninteractive" apt-get -y update && \
DEBIAN_FRONTEND="noninteractive" apt-get -y install postgresql-client && \
DEBIAN_FRONTEND="noninteractive" apt-get -q -y install git cpanminus make gcc libperl-dev && \
wget --quiet -O /tmp/ledgersmb-$LSMB_VERSION.tar.gz "$ARTIFACT_LOCATION" && \
tar -xzf /tmp/ledgersmb-$LSMB_VERSION.tar.gz --directory /srv && \
rm -f /tmp/ledgersmb-$LSMB_VERSION.tar.gz && \
cpanm --notest \
DEBIAN_FRONTEND="noninteractive" apt-get -y autoremove && \
DEBIAN_FRONTEND="noninteractive" apt-get -y autoclean && \
rm -rf /var/lib/apt/lists/*
# Build time variables
ENV LSMB_VERSION=master
ENV NODE_PATH=/usr/local/lib/node_modules
###########################################################
# Java & Nodejs for doing Dojo build
# These packages are only needed during the dojo build
ENV DOJO_Build_Deps="git make gcc libperl-dev curl nodejs npm cpanminus"
# These packages can be removed after the dojo build
ENV DOJO_Build_Deps_removal="${DOJO_Build_Deps} nodejs npm cpanminus"
# RUN (wget --quiet -O - https://deb.nodesource.com/setup_22.x | bash -) && \
RUN DEBIAN_FRONTEND="noninteractive" apt-get -y update && \
DEBIAN_FRONTEND="noninteractive" apt-get -y install ${DOJO_Build_Deps} && \
npm i -g --no-save yarn && \
cd /srv && \
git clone --depth 1 --recursive -b $LSMB_VERSION https://github.com/ledgersmb/LedgerSMB.git ledgersmb && \
cd ledgersmb && \
cpanm --metacpan --quiet --notest \
--with-feature=starman \
--with-feature=latex-pdf-ps \
--with-feature=openoffice \
--installdeps /srv/ledgersmb/ && \
apt-get purge -q -y git cpanminus make gcc libperl-dev && \
apt-get autoremove -q -y && \
apt-get clean -q && \
rm -rf ~/.cpanm/ /var/lib/apt/lists/* /usr/share/man/*
--installdeps . && \
make js && \
DEBIAN_FRONTEND="noninteractive" apt-get -y purge ${DOJO_Build_Deps_removal} && \
rm -rf /usr/local/lib/node_modules && \
DEBIAN_FRONTEND="noninteractive" apt-get -y autoremove && \
DEBIAN_FRONTEND="noninteractive" apt-get -y autoclean && \
rm -rf ~/.cpanm && \
rm -rf /var/lib/apt/lists/*
WORKDIR /srv/ledgersmb
# master requirements
# Cleanup args that are for internal use
ENV DOJO_Build_Deps=
ENV DOJO_Build_Deps_removal=
ENV NODE_PATH=
# Configure outgoing mail to use host, other run time variable defaults
## MAIL
ENV LSMB_MAIL_SMTPHOST 172.17.0.1
#ENV LSMB_MAIL_SMTPPORT 25
#ENV LSMB_MAIL_SMTPSENDER_HOSTNAME (container hostname)
#ENV LSMB_MAIL_SMTPTLS
#ENV LSMB_MAIL_SMTPUSER
#ENV LSMB_MAIL_SMTPPASS
#ENV LSMB_MAIL_SMTPAUTHMECH
ENV LSMB_MAIL_SMTPHOST=172.17.0.1
#ENV LSMB_MAIL_SMTPPORT=25
#ENV LSMB_MAIL_SMTPSENDER_HOSTNAME=(container hostname)
#ENV LSMB_MAIL_SMTPTLS=
#ENV LSMB_MAIL_SMTPUSER=
#ENV LSMB_MAIL_SMTPPASS=
#ENV LSMB_MAIL_SMTPAUTHMECH=
## DATABASE
ENV POSTGRES_HOST postgres
ENV POSTGRES_PORT 5432
ENV DEFAULT_DB lsmb
ENV POSTGRES_HOST=postgres
ENV POSTGRES_PORT=5432
ENV DEFAULT_DB=lsmb
COPY start.sh /usr/local/bin/start.sh
@@ -131,7 +131,8 @@ RUN chmod +x /usr/local/bin/start.sh && \
mkdir -p /var/www
# Work around an aufs bug related to directory permissions:
RUN mkdir -p /tmp && chmod 1777 /tmp
RUN mkdir -p /tmp && \
chmod 1777 /tmp
# Internal Port Expose
EXPOSE 5762

142
README.md
View File

@@ -4,19 +4,20 @@ Dockerfile for LedgerSMB Docker image
# Supported tags
- `1.10`, `1.10.x`, `latest` - Latest official release from the 1.10 branch
- `1.9`, `1.9.x` - Latest official release from the 1.9 branch
- `1.8`, `1.8.31` - Last official release from the 1.8 branch (End-of-Life)
- `1.7`, `1.7.41` - Last official release from the 1.7 branch (End-of-Life)
- `1.6`, `1.6.33` - Last official release from the 1.6 branch (End-of-Life)
- `1.5`, `1.5.30` - Last official release from the 1.5 branch (End-of-Life)
- `1.4`, `1.4.42` - Last official release from the 1.4 branch (End-of-Life)
- `1.13`, `1.13.x`, `latest` - Latest official release from the 1.13 branch
- `1.12`, `1.12.x` - Latest official release from the 1.12 branch
- `1.11`, `1.11.x` - Latest official release from the 1.11 branch
- `1.10`, `1.10.38` - Last official release from the 1.10 branch
- `1.9`, `1.9.30` - Last official release from 1.9 branch (End-of-Life)
- `1.8`, `1.8.31` - Last official release from 1.8 branch (End-of-Life)
- `1.7`, `1.7.41` - Last official release from 1.7 branch (End-of-Life)
- `1.6`, `1.6.33` - Last official release from 1.6 branch (End-of-Life)
- `1.5`, `1.5.30` - Last official release from 1.5 branch (End-of-Life)
- `1.4`, `1.4.42` - Last official release from 1.4 branch (End-of-Life)
- `master` - Master branch from git, unstable
Containers supporting the development process are provided
through the ledgersmb-dev-docker project. See [the development
container's README](https://github.com/ledgersmb/ledgersmb-dev-docker/blob/master/README.md#getting-started)
for more information.
through the ledgersmb-dev-docker project. See https://github.com/ledgersmb/ledgersmb-dev-docker/blob/master/README.md#getting-started.
# What is LedgerSMB?
@@ -33,9 +34,9 @@ This image is designed to be used in conjunction with a running PostgreSQL
instance (such as may be provided through a separate image).
This image exposes port 5762 running a Starman HTTP application server. We
do recommend not exposing this port publicly, because
do not recommend exposing this port publicly, because
1. The Starman author recommends not exposing it
1. The Starman author recommends it
2. We strongly recommend TLS encryption of all application traffic
While the exposed port can be used for quick evaluation, it's recommended
@@ -47,48 +48,36 @@ could require additional setup of a mail service or CUPS printer service.
# How to use this image
This image can be installed either automatically with the Docker compose file
or manually with docker only.
manually with docker only.
## Docker-Compose: Installation and start
❌ Do not use unofficial or AI-generated Docker Compose examples. These are
often incomplete, break silently, or skip required services.
This image provides a file named `docker-compose.yml` which can be used to
pull related images, install them, establish an internal network for their
communications, adjust environment variables, start and stop LedgerSMB. The
only instructions required, after the optional edition of the file to adjust
the environment variables, are:
## Docker-Compose installation and start
This image provides `docker-compose.yml` which can be used to pull related
images, install them, establish an internal network for their communications,
adjust environment variables, start and stop LedgerSMB. The only instructions
required, after the optional edition of the file to adjust the environment
variables, are:
```plain
$ docker-compose pull
$ docker-compose up -d
```
Or use the following to set a different password and/or parallel processing
capacity (so called 'workers'):
```plain
$ docker-compose pull
$ POSTGRES_PASSWORD=def \
LSMB_WORKERS=10 \
docker-compose up -d
$ docker-compose up
```
This will set up two containers: (1) a PostgreSQL container with persistent
storage which is retained between container updates and (2) a LedgerSMB
container configured to connect to the PostgreSQL container as its database
server. Your LedgerSMB installation should now be accessible through
[http://localhost:5762/](http://localhost:5762/).
server.
The default number of workers is 5. The default database username and password
are:
The database username and password are:
```plain
username: postgres
password: abc
```
From here, follow the steps as detailed in the instructions for
[preparing for first use](https://ledgersmb.org/content/preparing-ledgersmb-19-first-use).
## Manual installation
This section assumes availability of a PostgreSQL server to attach to the
@@ -126,13 +115,9 @@ Visit http://localhost:5762/login.pl to log in and get started.
No persistant data is stored in the LedgerSMB container.
All LedgerSMB data is stored in PostgreSQL, so you can stop/destroy/run a
All LedgerSMB data is stored in Postgres, so you can stop/destroy/run a
new LedgerSMB container as often as you want.
In case of the Docker Compose setup, all PostgreSQL data is stored on the
Docker volume with the name ending in `_pgdata`. This volume is not destroyed
when updating the containers; only explicit removal destroys the data.
# Environment Variables
The LedgerSMB image uses several environment variables. They are all optional.
@@ -168,6 +153,30 @@ affect the performance experience of users.
## Mail configuration
### Before 1.8.0
These variables are used to set outgoing SMTP defaults.
* `SSMTP_ROOT` (config: `Root` -- DEPRECATED)
* `SSMTP_MAILHUB` (config: `Mailhub`)
* `SSMTP_HOSTNAME` (config: `Hostname`)
* `SSMTP_USE_STARTTLS` (config: `UseSTARTTLS`)
* `SSMTP_AUTH_USER` (config: `AuthUser`)
* `SSMTP_AUTH_PASS` (config: `AuthPass`)
* `SSMTP_AUTH_METHOD` (config: `AuthMethod` -- DEPRECATED)
* `SSMTP_FROMLINE_OVERRIDE` (config: `FromLineOverride` -- DEPRECATED)
`SSMTP_MAILHUB` defaults to the default docker0 interface, so if your host is
already configured to relay mail, this should relay successfully with only
the root and hostname set.
Use the other environment variables to relay mail through a different host.
Use the [ssmtp.conf man
page](https://www.systutorials.com/docs/linux/man/5-ssmtp.conf/) to look up
the meaning and function of each of the mail configuration keys.
### 1.8.0 and higher (under development)
As of 1.8.0, the image is based on Debian Buster instead of Debian Stretch;
with Buster, the `ssmtp` program has been removed from Debian, this image
had to change strategy. The main application always came with built-in e-mail
@@ -183,51 +192,7 @@ The following parameters are now supported to set mail preferences:
* `LSMB_MAIL_SMTPPASS`
* `LSMB_MAIL_SMTPAUTHMECH`
# Advanced setup
## Docker Compose with reverse proxy
The `docker-compose-reverseproxy.yml` file shows a docker-compose setup
which adds an Nginx reverse proxy configuration on top of the base
`docker-compose.yml` configuration file. If the content of this repository
is cloned into the current directory (`git clone https://github.com/ledgersmb/ledgersmb-docker.git ; cd ledgersmb-docker`), it can be used as:
```plain
$ docker-compose \
-f docker-compose.yml \
-f docker-compose-reverseproxy.yml \
up -d
```
This setup can be used in combination with an image which runs the
Certbot certificate renewal process *and* Nginx to do TLS termination. The
default reverse proxy is mostly an example; it publishes on
[http://localhost:8080/](http://localhost:8080/).
An example of such an image can be found at
[https://github.com/jonasalfredsson/docker-nginx-certbot](https://github.com/jonasalfredsson/docker-nginx-certbot),
which is published on Docker Hub as
[jonasal/nginx-certbot](https://hub.docker.com/r/jonasal/nginx-certbot).
**Upgrade note** When upgrading this setup, please remove the volume ending
in `_lsmbdata` before starting the upgraded containers. Without that, the
webcontent won't be upgraded! E.g.:
```plain
$ docker-compose \
-f docker-compose.yml \
-f docker-compose-reverseproxy.yml \
rm -s -f -v && \
docker volume rm ledgersmb-docker_lsmbdata && \
docker-compose \
-f docker-compose.yml \
-f docker-compose-reverseproxy.yml \
pull && \
docker-compose \
-f docker-compose.yml \
-f docker-compose-reverseproxy.yml \
up -d
```
# Troubleshooting/Developing
@@ -244,8 +209,9 @@ please contact us on the [mailing list](http://ledgersmb.org/topic/support/maili
or through a [GitHub issue](https://github.com/ledgersmb/ledgersmb-docker/issues).
You can also reach some of the official LedgerSMB maintainers via the
[Matrix](https://matrix.org) room in [#ledgersmb:matrix.org](https://matrix.to/#/#ledgersmb:matrix.org).
The [Element](https://app.element.io/#/room/#ledgersmb:matrix.org) Matrix client is highly recommended.
`#ledgersmb` IRC channel on [Freenode](https://freenode.net), or on the
bridged [Matrix](https://matrix.org) room in [#ledgersmb:matrix.org](https://matrix.to/#/#ledgersmb:matrix.org).
The [Riot.im](https://riot.im/app/#/room/#ledgersmb:matrix.org) Matrix client is highly recommended.
## Contributing

View File

@@ -1,31 +0,0 @@
# Use this docker-compose file as:
#
# docker-compose -f docker-compose.yml -f docker-compose-reverseproxy.yml up -d
#
#
# This command creates one
# compose 'project' consisting of three containers
#
# 1. The PostgreSQL data container
# 2. The LedgerSMB application container
# 3. The Nginx reverse proxy container
#
# In addition to publishing LedgerSMB on port 5762 on localhost,
# this project also publishes Nginx's reverse proxied content on
# port 8080 on localhost
version: "3.2"
services:
proxy:
image: nginx:1-alpine
volumes:
- "lsmbdata:/srv/ledgersmb"
- "./nginx.conf:/etc/nginx/nginx.conf"
ports:
- "8080:8080"
lsmb:
volumes:
- "lsmbdata:/srv/ledgersmb"
volumes:
lsmbdata:

View File

@@ -16,10 +16,10 @@ services:
# because that allows us to use the default hostname ("postgres")
# from the LedgerSMB configuration
postgres:
image: postgres:12-alpine
image: postgres:14-alpine
environment:
# Replace the password below for a secure setup
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-abc}
POSTGRES_PASSWORD: abc
PGDATA: /var/lib/postgresql/data/pgdata
networks:
- internal
@@ -28,18 +28,18 @@ services:
lsmb:
depends_on:
- postgres
image: ghcr.io/ledgersmb/ledgersmb:1.9
image: ghcr.io/ledgersmb/ledgersmb:master
networks:
- internal
- default
# Comment the 'ports' section to disable mapping the LedgerSMB container port (5762)
# Uncomment the 'ports' section to map the LedgerSMB container port (5762)
# to the host's port of the same number, thus making LedgerSMB
# available on http://<host-dns-or-ip>:5762/
# SECURITY NOTE: Do this for evaluation purposes only!
# In production, be sure to use SSL/TLS to protect user's passwords
# and other sensitive data
ports:
- "5762:5762"
# ports:
# - "5762:5762"
environment:
# The LSMB_WORKERS environment variable lets you select the number
# of processes serving HTTP requests. The default number of 2 workers
@@ -47,17 +47,17 @@ services:
# improve the performance experience, increase memory and the
# number of workers
#
LSMB_WORKERS: ${LSMB_WORKERS:-5}
LSMB_WORKERS: 2
#
#
# LSMB_MAIL_SMTPHOST:
# LSMB_MAIL_SMTPPORT:
# LSMB_MAIL_SMTPTLS:
# LSMB_MAIL_SMTPSENDER_HOSTNAME:
# LSMB_MAIL_SMTPUSER:
# LSMB_MAIL_SMTPPASS:
# LSMB_MAIL_SMTPAUTHMECH:
# SSMTP_ROOT:
# SSMTP_HOSTNAME:
# SSMTP_MAILHUB:
# SSMTP_AUTH_USER:
# SSMTP_AUTH_PASS:
# SSMTP_AUTH_METHOD:
# SSMTP_USE_STARTTLS:
# SSMTP_FROMLINE_OVERRIDE:
#
#
# The PROXY_IP environment variable lets you set the IP address

View File

@@ -1,81 +0,0 @@
# This is a full (minimal) nginx configuration file
error_log /dev/stderr info;
pid /tmp/nginx.pid;
worker_processes 1;
events {
worker_connections 1024;
}
http {
client_body_temp_path /tmp/client_body;
proxy_temp_path /tmp/proxy_temp;
fastcgi_temp_path /tmp/fastcgi_temp;
scgi_temp_path /tmp/scgi_temp;
uwsgi_temp_path /tmp/uwsgi_temp;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /dev/stdout;
error_log /dev/stderr info;
gzip off;
gzip_static on;
server {
listen 8080 default_server;
listen [::]:8080 default_server ipv6only=on;
root /srv/ledgersmb/UI;
access_log /dev/stdout;
error_log /dev/stderr info;
# Don't log status polls
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
allow ::1;
deny all;
}
# Configuration files don't exist
location ^~ \.conf$ {
return 404;
}
# 'Hidden' files don't exist
location ~ /\. {
return 404;
}
location = / {
return 301 /login.pl;
}
# JS & CSS
location ~* \.(js|css)$ {
add_header Pragma "public";
add_header Cache-Control "public, must-revalidate, proxy-revalidate"; # Production
expires 7d; # Indicate that the resource can be cached for 1 week # Production
try_files $uri =404;
}
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 300;
proxy_pass http://lsmb:5762;
}
}
}

View File

@@ -66,16 +66,30 @@ fi
if [[ -n "$LSMB_HAVE_DEPRECATED" ]]; then
echo "!!! DEPRECATED \$SSMTP_* PARAMETERS WILL BE REMOVED in the 1.9 image!!!"
fi
# This was never a parameter: ?
# if [[ -n "$SSMTP_USE_TLS" ]]; then
# echo "\$SSMTP_USE_TLS set; parameter is deprecated"
# if [[ -z "$LSMB_MAIL_SMTPTLS" ]]; then
# echo " Deriving \$LSMB_MAIL_SMTPSENDER_HOSTNAME setting from \$SSMTP_MAILHUB"
# if [[ "$SSMTP_USE_TLS" == "yes" ]]; then
# LSMB_MAIL_SMTPTLS=raw
# else
# LSMB_MAIL_SMTPTLS=no
# fi
# fi
# fi
if [[ ! -f ledgersmb.conf ]]; then
cat <<EOF >/tmp/ledgersmb.conf
[main]
cache_templates = 1
[database]
host = $POSTGRES_HOST
port = $POSTGRES_PORT
default_db = $DEFAULT_DB
[mail]
${LSMB_MAIL_SMTPHOST:+smtphost=$LSMB_MAIL_SMTPHOST
}${LSMB_MAIL_SMTPPORT:+smtpport=$LSMB_MAIL_SMTPPORT
@@ -85,16 +99,24 @@ ${LSMB_MAIL_SMTPHOST:+smtphost=$LSMB_MAIL_SMTPHOST
}${LSMB_MAIL_SMTPPASS:+smtppass=$LSMB_MAIL_SMTPPASS
}${LSMB_MAIL_SMTPAUTHMECH:+smtpauthmech=$LSMB_MAIL_SMTPAUTHMECH
}
[proxy]
ip=${PROXY_IP:-172.17.0.1/12}
EOF
export LSMB_CONFIG_FILE='/tmp/ledgersmb.conf'
fi
# Currently unmaintained/untested
# if [ ! -z ${CREATE_DATABASE+x} ]; then
# perl tools/dbsetup.pl --company $CREATE_DATABASE \
# --host $POSTGRES_HOST \
# --postgres_password "$POSTGRES_PASS"
#fi
# start ledgersmb
# --preload-app allows application initialization to kill the entire
# starman instance (instead of just the worker, which will immediately
# get restarted) on error; it also has a positive effect on memory use
# get restarted); it also has a positive effect on memory use
echo '--------- LEDGERSMB CONFIGURATION: ledgersmb.conf'
cat ${LSMB_CONFIG_FILE:-ledgersmb.conf}