Compare commits

...

73 Commits

Author SHA1 Message Date
Erik Huelsmann
71e067d0a7 * Automatic Dockerfile update by release process 2023-03-03 02:54:10 -05:00
Erik Huelsmann
9f4b6b8580 * Automatic Dockerfile update by release process 2023-02-18 16:23:41 -05:00
Erik Huelsmann
3177ab415e * Automatic Dockerfile update by release process 2023-02-03 06:18:01 -05:00
Erik Huelsmann
7a2e6174a5 * Automatic Dockerfile update by release process 2023-01-27 10:18:01 -05:00
Erik Huelsmann
c9b8719897 * Automatic Dockerfile update by release process 2023-01-15 15:22:04 -05:00
Erik Huelsmann
deeecbcdf1 * Automatic Dockerfile update by release process 2023-01-06 08:14:30 -05:00
Christian Eriksson
e41eefd1c0 Describe environment variables for email config (#30)
* Describe environment variables for email config

New environment variables were introduced to enable users to configure
SMTP email forwarding. The variables were listed in the readme but not
described leaving users in the dark regarding the expected content of
the variables.

* Fix bulletpoint formatting

Instead of sub-bullets we present the explanation for email environment
variables as simple text instead.

* Push email env variable explanations to separate line
2023-01-01 19:55:17 +01:00
Erik Huelsmann
b247132333 * Automatic Dockerfile update by release process 2022-12-22 18:11:14 -05:00
Erik Huelsmann
82fdc70f05 * Automatic Dockerfile update by release process 2022-12-14 15:26:52 -05:00
Erik Huelsmann
16e22ab5b6 * Automatic Dockerfile update by release process 2022-12-10 17:08:25 -05:00
Erik Huelsmann
2fd0e3a899 Make containers restart automatically
and document how to disable that...
2022-11-30 23:55:08 +01:00
Erik Huelsmann
2c6e26e41c Record dependency of nginx on lsmb service
This dependency causes the lsmbdata volume to be forcibly created from the lsmb container
which means that the correct assets will be copied in.
2022-11-30 23:36:07 +01:00
Erik Huelsmann
8abfb47e09 * Automatic Dockerfile update by release process 2022-11-24 15:10:37 -05:00
Erik Huelsmann
c139863c85 Update docker-compose.yml 2022-11-22 22:45:03 +01:00
Erik Huelsmann
cad89f842c * Automatic Dockerfile update by release process 2022-10-30 09:04:50 -04:00
Erik Huelsmann
dffd342880 * Automatic Dockerfile update by release process 2022-10-29 13:01:59 -04:00
Erik Huelsmann
3230ac320c * Automatic Dockerfile update by release process 2022-10-22 14:55:45 -04:00
Erik Huelsmann
9e0957127b * Automatic Dockerfile update by release process 2022-10-12 03:11:21 -04:00
Erik Huelsmann
6b4fd9c831 * Automatic Dockerfile update by release process 2022-10-08 14:50:36 -04:00
Erik Huelsmann
68461e62b0 * Automatic Dockerfile update by release process 2022-10-06 14:34:42 -04:00
Erik Huelsmann
6779e82743 * Automatic Dockerfile update by release process 2022-10-06 05:36:43 -04:00
Erik Huelsmann
6dfa51e6bf Update README.md for 1.10 release 2022-09-24 11:59:21 +02:00
Erik Huelsmann
3edc3bfa83 * Automatic Dockerfile update by release process 2022-09-24 04:18:19 -04:00
Erik Huelsmann
6e2097eb2a * Automatic Dockerfile update by release process 2022-09-14 16:32:37 -04:00
Erik Huelsmann
2b2c2a86a7 Update README.md with 1.10 release series 2022-09-14 20:28:04 +02:00
Erik Huelsmann
2e703cf3b9 * Automatic Dockerfile update by release process 2022-08-10 16:26:55 -04:00
Erik Huelsmann
889fed85c9 Add more container metadata 2022-04-29 22:06:39 +02:00
Erik Huelsmann
3fd89bf933 * Automatic Dockerfile update by release process 2022-04-29 14:52:05 -04:00
Erik Huelsmann
2fd4d25b06 * Automatic Dockerfile update by release process 2022-04-09 10:49:28 -04:00
Erik Huelsmann
92483d9b69 * Automatic Dockerfile update by release process 2022-03-26 17:13:37 -04:00
Erik Huelsmann
a7a1412cbd * Automatic Dockerfile update by release process 2022-03-11 09:04:10 -05:00
Erik Huelsmann
8974109e48 * Automatic Dockerfile update by release process 2022-02-22 16:20:00 -05:00
Erik Huelsmann
16b55ab3b4 * Automatic Dockerfile update by release process 2022-02-18 18:29:11 -05:00
Erik Huelsmann
0fabba4a66 * Automatic Dockerfile update by release process 2022-02-03 14:31:35 -05:00
Erik Huelsmann
6471736148 Change the hosting location of the LedgerSMB Docker images 2022-01-28 22:52:20 +01:00
Erik Huelsmann
c8368ce921 * Automatic Dockerfile update by release process 2022-01-19 17:16:25 -05:00
Erik Huelsmann
1806b8003b * Automatic Dockerfile update by release process 2022-01-05 14:50:17 -05:00
Erik Huelsmann
d9163c1e65 Remove stale comments 2021-12-11 23:40:50 +01:00
Erik Huelsmann
9e88db52d9 Add advanced docker-compose configuration showing reverse proxy example 2021-12-11 22:24:01 +01:00
Erik Huelsmann
230a7ddfae Clarify and simplify use of the containers 2021-12-11 21:39:51 +01:00
Erik Huelsmann
3a86482a97 Update environment variables of mail configuration
[skip ci]
2021-12-11 20:56:18 +01:00
Erik Huelsmann
ae0cea34b3 * Automatic Dockerfile update by release process 2021-12-08 16:09:19 -05:00
Erik Huelsmann
f37678c275 * Automatic Dockerfile update by release process 2021-11-25 16:42:45 -05:00
Erik Huelsmann
b28f5b693b * Automatic Dockerfile update by release process 2021-11-14 05:26:33 -05:00
Erik Huelsmann
1f20ab08f1 * Automatic Dockerfile update by release process 2021-10-12 16:39:27 -04:00
Erik Huelsmann
34937fbd4f * Automatic Dockerfile update by release process 2021-10-01 06:31:50 -04:00
Erik Huelsmann
c6968b5397 Update README.md
Move 'latest' tag from 1.8 to 1.9.
2021-09-24 23:29:11 +02:00
Erik Huelsmann
5168936493 * Automatic Dockerfile update by release process 2021-09-24 16:08:51 -04:00
Erik Huelsmann
49a448c732 Change PostgreSQL container version
Close #28.
2021-09-23 16:38:44 +02:00
Erik Huelsmann
27b3e40e72 * Automatic Dockerfile update by release process 2021-09-18 16:43:48 -04:00
Erik Huelsmann
6593d58698 Set the reverse proxy address to the default Docker address range 2021-09-17 23:04:21 +02:00
Erik Huelsmann
5a7ec0a2ed Add reverse proxy configuration option 2021-09-17 22:41:06 +02:00
Erik Huelsmann
236a25b767 * Automatic Dockerfile update by release process 2021-09-12 16:22:35 -04:00
Erik Huelsmann
943fa166e8 Update start.sh
The starman option `max-workers` actually does not exist...
2021-09-12 22:19:04 +02:00
Erik Huelsmann
a678ae39a0 Use multi-stage build to compile list of dependency packages 2021-08-30 00:13:57 +02:00
Erik Huelsmann
3d12e4351d Align dependencies (after review against master branch) 2021-08-29 21:55:58 +02:00
Erik Huelsmann
ccd90f04a4 Upgrade MAINTAINER to LABEL 2021-08-29 21:20:13 +02:00
Erik Huelsmann
4d316f9019 Use Debian Bullseye as the basis for 1.9 images 2021-08-29 21:00:50 +02:00
Erik Huelsmann
71f876a253 * Automatic Dockerfile update by release process 2021-08-29 14:44:44 -04:00
Erik Huelsmann
ab00872e02 Update README.md 2021-08-28 17:32:47 +02:00
Erik Huelsmann
483a1110ff * Automatic Dockerfile update by release process 2021-08-18 17:35:58 -04:00
Erik Huelsmann
a2a625d193 Print commands as they are executed (debugging purposes) 2021-08-13 23:55:06 +02:00
Erik Huelsmann
f10924cae9 Make the artifact location into a build ARG 2021-08-13 23:46:46 +02:00
Erik Huelsmann
c13d20651c Update README.md 2021-07-10 23:54:23 +02:00
Erik Huelsmann
7771b8c03b Update README.md 2021-07-10 23:51:02 +02:00
Erik Huelsmann
1ba89cef50 Update Dockerfile
Make sure `iftex` package is installed
2021-06-12 22:34:34 +02:00
Erik Huelsmann
d7ad535199 Update docker-compose.yml
Refer to the 1.9 tag for the docker images
2021-06-11 23:15:10 +02:00
Erik Huelsmann
ac2553ea17 Branch 1.9 and create 1.9.0-alpha1 container 2021-03-20 00:05:07 +01:00
Erik Huelsmann
0205b40bd2 Update docker-compose.yml
By default, map the starman port to localhost.
2021-03-06 22:14:40 +01:00
Erik Huelsmann
84130b47f3 * Automatic Dockerfile update by release process 2021-01-31 18:31:59 +00:00
Erik Huelsmann
d27017e309 Update README.md 2020-12-26 15:54:31 +01:00
Erik Huelsmann
f3420feb36 * Automatic Dockerfile update by release process 2020-12-26 14:34:47 +00:00
Erik Huelsmann
82445543de * Automatic Dockerfile update by release process 2020-12-14 22:04:46 +00:00
6 changed files with 322 additions and 102 deletions

View File

@@ -1,9 +1,60 @@
FROM debian:buster-slim
MAINTAINER Freelock john@freelock.com
# Build time variables
ARG LSMB_VERSION="1.8.7"
ARG SRCIMAGE=debian:bullseye-slim
FROM $SRCIMAGE AS builder
ARG LSMB_VERSION="1.10.14"
ARG LSMB_DL_DIR="Releases"
ARG ARTIFACT_LOCATION="https://download.ledgersmb.org/f/$LSMB_DL_DIR/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz"
RUN set -x ; \
DEBIAN_FRONTEND="noninteractive" apt-get -y update && \
DEBIAN_FRONTEND="noninteractive" apt-get -y upgrade && \
DEBIAN_FRONTEND="noninteractive" apt-get -y install dh-make-perl libmodule-cpanfile-perl git wget && \
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 && \
( ( 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 ; \
then \
: \
else \
echo no : $lib ; \
fi ; \
done ) | grep -v dh-make-perl | grep -v 'not found' | grep -vi 'is in Perl ' | cut -d' ' -f4 | sort | uniq | tee /srv/derived-deps ) && \
cat /srv/derived-deps
#
#
# The real image build starts here
#
#
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.14"
ARG LSMB_DL_DIR="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...
@@ -13,7 +64,11 @@ ARG LSMB_DL_DIR="Releases"
# Install Locale::Codes Locale::Country Locale::Language from CPAN to suppress
# deprecation-as-core-module warning
RUN echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >> /etc/apt/apt.conf && \
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/ && \
@@ -21,38 +76,14 @@ RUN echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >>
mkdir -p /usr/share/man/man5/ && \
mkdir -p /usr/share/man/man6/ && \
mkdir -p /usr/share/man/man7/ && \
mkdir -p /usr/share/man/man8/ && \
DEBIAN_FRONTEND="noninteractive" apt-get -y update && \
DEBIAN_FRONTEND="noninteractive" apt-get -y upgrade && \
DEBIAN_FRONTEND="noninteractive" apt-get -y install \
wget ca-certificates gnupg \
libauthen-sasl-perl libcgi-emulate-psgi-perl libconfig-inifiles-perl \
libcookie-baker-perl libdbd-pg-perl libdbi-perl libdata-uuid-perl \
libdatetime-perl libdatetime-format-strptime-perl \
libemail-sender-perl libemail-stuffer-perl libfile-find-rule-perl \
libhtml-escape-perl libhttp-headers-fast-perl libio-stringy-perl \
libjson-maybexs-perl libcpanel-json-xs-perl libjson-pp-perl \
liblist-moreutils-perl \
liblocale-maketext-perl liblocale-maketext-lexicon-perl \
liblog-log4perl-perl libmime-types-perl \
libmath-bigint-gmp-perl libmodule-runtime-perl libmoo-perl \
libmoox-types-mooselike-perl libmoose-perl \
libmoosex-nonmoose-perl libnumber-format-perl \
libpgobject-perl libpgobject-simple-perl libpgobject-simple-role-perl \
libpgobject-type-bigfloat-perl libpgobject-type-datetime-perl \
libpgobject-type-bytestring-perl libpgobject-util-dbmethod-perl \
libpgobject-util-dbadmin-perl libplack-perl \
libplack-builder-conditionals-perl libplack-middleware-reverseproxy-perl \
libplack-request-withencoding-perl libscope-guard-perl \
libsession-storage-secure-perl libstring-random-perl \
libtemplate-perl libtext-csv-perl libtext-csv-xs-perl \
libtext-markdown-perl libtry-tiny-perl libversion-compare-perl \
libxml-libxml-perl libnamespace-autoclean-perl \
starman starlet libhttp-parser-xs-perl \
libtemplate-plugin-latex-perl libtex-encode-perl \
libxml-twig-perl libopenoffice-oodoc-perl \
libexcel-writer-xlsx-perl libspreadsheet-writeexcel-perl \
libclass-c3-xs-perl liblocale-codes-perl \
texlive-latex-recommended texlive-fonts-recommended \
$( cat /tmp/derived-deps ) \
libclass-c3-xs-perl \
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 && \
@@ -60,10 +91,9 @@ RUN echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >>
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 "https://download.ledgersmb.org/f/$LSMB_DL_DIR/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz" && \
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 --reinstall --notest Locale::Country Locale::Codes Locale::Language && \
cpanm --notest \
--with-feature=starman \
--with-feature=latex-pdf-ps \

158
README.md
View File

@@ -4,15 +4,19 @@ Dockerfile for LedgerSMB Docker image
# Supported tags
- `1.8` - Preview version for the 1.8 branch
- `1.7`, `1.7.x`, `latest` - Latest official release from 1.7 branch
- `1.6`, `1.6.x` - Latest official release from 1.6 branch
- `1.5`, `1.5.30` - Last official release from 1.5 branch
- `1.4`, `1.4.42` - Last official release from 1.4 branch
- `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)
- `master` - Master branch from git, unstable
Containers supporting the development process are provided
through the ledgersmb-dev-docker project. See https://github.com/ledgersmb/ledgersmb-dev-docker/blob/master/README.md#getting-started.
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.
# What is LedgerSMB?
@@ -45,25 +49,37 @@ could require additional setup of a mail service or CUPS printer service.
This image can be installed either automatically with the Docker compose file
or manually with docker only.
## Docker-Compose installation and start
## 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:
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:
```plain
$ docker-compose pull
$ docker-compose up
$ 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
```
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.
server. Your LedgerSMB installation should now be accessible through
[http://localhost:5762/](http://localhost:5762/).
The database username and password are:
The default number of workers is 5. The default database username and password
are:
```plain
username: postgres
@@ -71,7 +87,7 @@ The database username and password are:
```
From here, follow the steps as detailed in the instructions for
[preparing for first use](https://ledgersmb.org/content/preparing-ledgersmb-17-first-use).
[preparing for first use](https://ledgersmb.org/content/preparing-ledgersmb-19-first-use).
## Manual installation
@@ -110,9 +126,13 @@ 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 Postgres, so you can stop/destroy/run a
All LedgerSMB data is stored in PostgreSQL, 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.
@@ -148,30 +168,6 @@ 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
@@ -179,15 +175,76 @@ yet with the deprecation, the abilities have expanded.
The following parameters are now supported to set mail preferences:
* `LSMB_MAIL_SMTPHOST`
* `LSMB_MAIL_SMTPPORT`
* `LSMB_MAIL_SMTPTLS`
* `LSMB_MAIL_SMTPSENDER_HOSTNAME`
* `LSMB_MAIL_SMTPUSER`
* `LSMB_MAIL_SMTPPASS`
* `LSMB_MAIL_SMTPAUTHMECH`
* `LSMB_MAIL_SMTPHOST` \
The host name/IP-address of the SMTP server that will forward mail from
LedgerSMB to the outside world.
* `LSMB_MAIL_SMTPPORT` \
The port that the SMTP server in `LSMB_MAIL_SMTPHOST` listens to.
* `LSMB_MAIL_SMTPTLS` \
Can be one of `no` (default), `yes` or `raw`. `yes` indicates to use
STARTTLS over a regular SMTP connection; `raw`' indicates an SMTP connection
should be established over a TLS connection (a.k.a. smtps).
* `LSMB_MAIL_SMTPSENDER_HOSTNAME` (optional) \
When set, used to identify the host when connecting to an SMTP server. When
not set, the host is queried for its host name.
* `LSMB_MAIL_SMTPUSER` \
Username to authenticate to the SMTP host in `LSMB_MAIL_SMTPHOST`.
* `LSMB_MAIL_SMTPPASS` \
Password to authenticate to the SMTP host in `LSMB_MAIL_SMTPHOST` with the
user in `LSMB_MAIL_SMTPUSER`.
* `LSMB_MAIL_SMTPAUTHMECH` \
A space separated list of SASL mechanisms to be used for authentication of
the smtp connection with the SMTP server. Available mechanisms depend on
your installed environment, but the following mechanisms should be available
in all of them: `PLAIN` `LOGIN` `CRAM_MD5` & `DIGEST_MD5`. **Note that**
`PLAIN` or `LOGIN` send passwords in plain text over the wire to the SMTP
server; only use these methods in combination with TLS encryption.
# 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
@@ -204,9 +261,8 @@ 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
`#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.
[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.
## Contributing

View File

@@ -0,0 +1,36 @@
# 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:
depends_on:
- lsmb
image: nginx:1-alpine
volumes:
- "lsmbdata:/srv/ledgersmb"
- "./nginx.conf:/etc/nginx/nginx.conf"
ports:
- "8080:8080"
# Comment the line below to stop the container from restarting on boot
# unless it was manually stopped
restart: unless-stopped
lsmb:
volumes:
- "lsmbdata:/srv/ledgersmb"
volumes:
lsmbdata:

View File

@@ -16,30 +16,33 @@ services:
# because that allows us to use the default hostname ("postgres")
# from the LedgerSMB configuration
postgres:
image: postgres:9.6-alpine
image: postgres:12-alpine
environment:
# Replace the password below for a secure setup
POSTGRES_PASSWORD: abc
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-abc}
PGDATA: /var/lib/postgresql/data/pgdata
networks:
- internal
volumes:
- "pgdata:/var/lib/postgresql/data"
# Comment the line below to stop the container from restarting on boot
# unless it was manually stopped
restart: unless-stopped
lsmb:
depends_on:
- postgres
image: ledgersmb/ledgersmb:1.8
image: ghcr.io/ledgersmb/ledgersmb:1.10
networks:
- internal
- default
# Uncomment the 'ports' section to map the LedgerSMB container port (5762)
# Comment the 'ports' section to disable mapping 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 +50,29 @@ services:
# improve the performance experience, increase memory and the
# number of workers
#
LSMB_WORKERS: 2
LSMB_WORKERS: ${LSMB_WORKERS:-5}
#
#
# SSMTP_ROOT:
# SSMTP_HOSTNAME:
# SSMTP_MAILHUB:
# SSMTP_AUTH_USER:
# SSMTP_AUTH_PASS:
# SSMTP_AUTH_METHOD:
# SSMTP_USE_STARTTLS:
# SSMTP_FROMLINE_OVERRIDE:
# LSMB_MAIL_SMTPHOST:
# LSMB_MAIL_SMTPPORT:
# LSMB_MAIL_SMTPTLS:
# LSMB_MAIL_SMTPSENDER_HOSTNAME:
# LSMB_MAIL_SMTPUSER:
# LSMB_MAIL_SMTPPASS:
# LSMB_MAIL_SMTPAUTHMECH:
#
#
# The PROXY_IP environment variable lets you set the IP address
# (range) of the reverse proxy used for TLS termination, which forwards
# its requests to this container. When this reverse proxy runs on the
# Docker host, the default below applies. In case the reverse proxy is
# hosted in a separate container, this setting needs to be adjusted.
#
# PROXY_IP: 172.17.0.1/12
# Comment the line below to stop the container from restarting on boot
# unless it was manually stopped
restart: unless-stopped
# having the dbdata volume is required to persist our
# data between PostgreSQL container updates; without

81
nginx.conf Normal file
View File

@@ -0,0 +1,81 @@
# 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

@@ -85,6 +85,8 @@ ${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
@@ -100,6 +102,6 @@ echo '--------- LEDGERSMB CONFIGURATION --- END'
# ':5762:' suppresses an uninitialized variable warning in starman
# the last colon means "don't connect using tls"; without it, there's a warning
exec starman --listen :5762: --max-workers ${LSMB_WORKERS:-5} \
exec starman --listen :5762: --workers ${LSMB_WORKERS:-5} \
-I lib -I old/lib \
--preload-app bin/ledgersmb-server.psgi