Compare commits

..

55 Commits

Author SHA1 Message Date
Erik Huelsmann
f7f7ecf3a1 * Automatic Dockerfile update by release process 2021-07-28 17:09:34 -04:00
Erik Huelsmann
4772312182 Update README.md 2021-07-10 23:54:05 +02:00
Erik Huelsmann
c5c6011073 Update README.md 2021-07-10 23:47:17 +02:00
Erik Huelsmann
db941843fb * Automatic Dockerfile update by release process 2021-07-10 13:34:58 -04:00
Erik Huelsmann
ae687da108 * Automatic Dockerfile update by release process 2021-06-14 14:55:24 -04:00
Erik Huelsmann
6bc115c7e6 * Automatic Dockerfile update by release process 2021-06-03 15:05:08 -04:00
Erik Huelsmann
d7bf3b30a0 * Automatic Dockerfile update by release process 2021-05-29 15:06:27 -04:00
Erik Huelsmann
8d6e8fe95b * Automatic Dockerfile update by release process 2021-05-02 13:05:16 -04:00
Erik Huelsmann
3156651671 * Automatic Dockerfile update by release process 2021-03-21 09:02:57 -04: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
Erik Huelsmann
99a21f8e7d * Automatic Dockerfile update by release process 2020-11-18 20:56:08 +00:00
Erik Huelsmann
74aa2920da Update docker-compose.yml 2020-11-15 22:40:29 +01:00
Erik Huelsmann
821d59fb79 * Automatic Dockerfile update by release process 2020-10-16 17:02:46 +00:00
Erik Huelsmann
409aeefd56 * Automatic Dockerfile update by release process 2020-10-04 18:31:25 +00:00
Erik Huelsmann
2608ff28bb * Automatic Dockerfile update by release process 2020-09-27 19:14:10 +00:00
Erik Huelsmann
9adee2d1ba * Automatic Dockerfile update by release process 2020-09-18 08:08:32 +00:00
Erik Huelsmann
89f9f5e449 * Automatic Dockerfile update by release process 2020-09-13 19:36:14 +00:00
Erik Huelsmann
77a6985f29 * Automatic Dockerfile update by release process 2020-09-07 21:16:29 +00:00
Erik Huelsmann
f2a0c60b94 * Automatic Dockerfile update by release process 2020-09-04 20:29:54 +00:00
Erik Huelsmann
b9c316569d * Automatic Dockerfile update by release process 2020-08-28 22:37:32 +00:00
Erik Huelsmann
907fc363af Re #23: Add dependency on texlive-fonts-recommended 2020-08-24 22:47:41 +02:00
Erik Huelsmann
40ab4edab4 Update 1.8 to 1.8.0-beta3 2020-07-25 12:19:01 +02:00
Erik Huelsmann
dd6c18c5a6 Add liblocale-codes-perl dependency
Debian Buster wants us to explicitly install liblocale-codes-perl as a dependency because it's going to be removed from Perl's CORE.
2020-07-25 11:58:08 +02:00
Erik Huelsmann
fe2ae210a2 Update for 1.8.0-beta2 release 2020-06-08 19:32:05 +02:00
Erik Huelsmann
f8ef55726d Remove all packages, not just outdated ones 2020-06-01 14:29:30 +02:00
Erik Huelsmann
05b8961242 Update README to list 1.8 2020-05-31 11:20:23 +02:00
Erik Huelsmann
385dd60c3f Update for beta1 release 2020-05-31 10:52:38 +02:00
Erik Huelsmann
001e98ed38 Adjust image for removal of XML::Simple dependency in 1.8 2020-04-18 21:49:56 +02:00
Erik Huelsmann
1eb854f2d6 Update README.md 2020-04-12 21:32:59 +02:00
Erik Huelsmann
878111e7cd Build Locale::* modules from CPAN to suppress deprecation warnings 2020-04-12 20:56:36 +02:00
Erik Huelsmann
18980a353f Add missing Authen::SASL dependency for SMTP authentication 2020-04-12 20:20:59 +02:00
Erik Huelsmann
46637422ee Refactor 1.7 code into 1.8 code and move to Buster 2020-04-12 20:01:07 +02:00
Erik Huelsmann
ba202372fa Add formatting to README.md 2020-02-10 23:44:10 +01:00
Erik Huelsmann
3197f4feab 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:28:06 +01:00
Erik Huelsmann
46a5386e54 * Automatic Dockerfile update by release process 2020-02-10 20:48:32 +00:00
Erik Huelsmann
6122921674 * Automatic Dockerfile update by release process 2020-01-22 21:50:04 +00:00
Erik Huelsmann
db957f3880 * Automatic Dockerfile update by release process 2020-01-12 20:43:00 +00:00
Erik Huelsmann
7e059e5dc1 Update image to point to 1.7 2020-01-06 21:56:50 +01:00
Erik Huelsmann
421c153249 * Automatic Dockerfile update by release process 2019-12-26 18:05:31 +00:00
Erik Huelsmann
1f40452e92 * Automatic Dockerfile update by release process 2019-12-13 16:16:14 +00:00
Erik Huelsmann
98c38f998a * Automatic Dockerfile update by release process 2019-11-29 10:59:36 +00:00
Erik Huelsmann
6d3b30720c * Automatic Dockerfile update by release process 2019-11-15 19:23:03 +00:00
Erik Huelsmann
aa66d87e15 * Automatic Dockerfile update by release process 2019-11-02 15:59:50 +00:00
Erik Huelsmann
e06638b048 * Automatic Dockerfile update by release process 2019-10-18 12:22:02 +00:00
Erik Huelsmann
d71609cae1 Fix Dockerfile mentioned version 2019-10-04 17:17:25 +02:00
Erik Huelsmann
8bc4fd8583 Update source URL to look in the official releases 2019-10-04 16:57:07 +02:00
Erik Huelsmann
52fdf5b65e Address failure to start Docker image
Starman is looking for LedgerSMB::PSGI and can't find it due to missing
library paths. Add -I arguments to fix it up.
2019-09-22 22:56:51 +02:00
Erik Huelsmann
29abd11efd Revert back to Stretch because Buster misses sSMTP
Note: we'll need to address this in due course in order to be
able to release our next release on Buster (which supports
more of our dependencies).
2019-08-28 21:27:53 +02:00
Erik Huelsmann
e9edcaf9ae Revert back to stretch; Buster misses 'ssmtp' 2019-08-28 09:50:48 +02:00
Erik Huelsmann
3a74802fe1 Add additional dependency provided on Buster (libhtml-escape-perl) 2019-08-27 23:14:49 +02:00
Erik Huelsmann
1b9701511e Update Dockerfile for 1.7.0 2019-08-27 23:09:20 +02:00
5 changed files with 217 additions and 148 deletions

View File

@@ -1,20 +1,17 @@
FROM debian:stretch-slim FROM debian:buster-slim
MAINTAINER Freelock john@freelock.com MAINTAINER Freelock john@freelock.com
# Build time variables # Build time variables
ENV LSMB_VERSION 1.6.6 ARG LSMB_VERSION="1.8.17"
ARG LSMB_DL_DIR="Releases"
# Install Perl, Tex, Starman, psql client, and all dependencies # Install Perl, Tex, Starman, psql client, and all dependencies
# Without libclass-c3-xs-perl, performance is terribly slow... # Without libclass-c3-xs-perl, performance is terribly slow...
# Without libclass-accessor-lite-perl, HTML::Entities won't build from CPAN
# libnet-cidr-lite-perl is a dependency for Plack::Builder::Conditionals
# which is being installed from CPAN
# libtest-requires-perl is a dependency of Module-Build-Pluggable-PPPort
# on which HTML::Escape depends
# Installing psql client directly from instructions at https://wiki.postgresql.org/wiki/Apt # 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 # 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
RUN echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >> /etc/apt/apt.conf && \ RUN 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/man1/ && \
@@ -24,44 +21,49 @@ RUN echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >>
mkdir -p /usr/share/man/man5/ && \ mkdir -p /usr/share/man/man5/ && \
mkdir -p /usr/share/man/man6/ && \ mkdir -p /usr/share/man/man6/ && \
mkdir -p /usr/share/man/man7/ && \ mkdir -p /usr/share/man/man7/ && \
DEBIAN_FRONTEND="noninteractive" apt-get update -q && \ DEBIAN_FRONTEND="noninteractive" apt-get -y update && \
DEBIAN_FRONTEND="noninteractive" apt-get dist-upgrade -y -q && \ DEBIAN_FRONTEND="noninteractive" apt-get -y upgrade && \
DEBIAN_FRONTEND="noninteractive" apt-get -y -q install \ DEBIAN_FRONTEND="noninteractive" apt-get -y install \
wget ca-certificates gnupg \ wget ca-certificates gnupg \
libcgi-emulate-psgi-perl libcgi-simple-perl libconfig-inifiles-perl \ libauthen-sasl-perl libcgi-emulate-psgi-perl libconfig-inifiles-perl \
libdbd-pg-perl libdbi-perl libdata-uuid-perl libdatetime-perl \ libcookie-baker-perl libdbd-pg-perl libdbi-perl libdata-uuid-perl \
libdatetime-format-strptime-perl libio-stringy-perl \ libdatetime-perl libdatetime-format-strptime-perl \
libjson-xs-perl libcpanel-json-xs-perl liblist-moreutils-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 \ liblocale-maketext-perl liblocale-maketext-lexicon-perl \
liblog-log4perl-perl libmime-lite-perl libmime-types-perl \ liblog-log4perl-perl libmime-types-perl \
libmath-bigint-gmp-perl libmodule-runtime-perl libmoose-perl \ libmath-bigint-gmp-perl libmodule-runtime-perl libmoo-perl \
libmoox-types-mooselike-perl libmoose-perl \
libmoosex-nonmoose-perl libnumber-format-perl \ libmoosex-nonmoose-perl libnumber-format-perl \
libpgobject-perl libpgobject-simple-perl libpgobject-simple-role-perl \ libpgobject-perl libpgobject-simple-perl libpgobject-simple-role-perl \
libpgobject-type-bigfloat-perl libpgobject-type-datetime-perl \ libpgobject-type-bigfloat-perl libpgobject-type-datetime-perl \
libpgobject-type-bytestring-perl libpgobject-util-dbmethod-perl \ libpgobject-type-bytestring-perl libpgobject-util-dbmethod-perl \
libpgobject-util-dbadmin-perl libplack-perl \ libpgobject-util-dbadmin-perl libplack-perl \
libplack-middleware-reverseproxy-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 \ libtemplate-perl libtext-csv-perl libtext-csv-xs-perl \
libtext-markdown-perl libxml-simple-perl \ libtext-markdown-perl libtry-tiny-perl libversion-compare-perl \
libnamespace-autoclean-perl \ libxml-libxml-perl libnamespace-autoclean-perl \
libimage-size-perl \ starman starlet libhttp-parser-xs-perl \
libtemplate-plugin-latex-perl libtex-encode-perl \ libtemplate-plugin-latex-perl libtex-encode-perl \
libclass-c3-xs-perl libclass-accessor-lite-perl \ libxml-twig-perl libopenoffice-oodoc-perl \
libnet-cidr-lite-perl libtest-requires-perl \ libexcel-writer-xlsx-perl libspreadsheet-writeexcel-perl \
texlive-latex-recommended \ libclass-c3-xs-perl liblocale-codes-perl \
texlive-latex-recommended texlive-fonts-recommended \
texlive-xetex fonts-liberation \ texlive-xetex fonts-liberation \
starman \
libopenoffice-oodoc-perl \
ssmtp \
lsb-release && \ lsb-release && \
echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \ 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 -) && \ (wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -) && \
DEBIAN_FRONTEND="noninteractive" apt-get -q -y update && \ DEBIAN_FRONTEND="noninteractive" apt-get -y update && \
DEBIAN_FRONTEND="noninteractive" apt-get -q -y install postgresql-client && \ DEBIAN_FRONTEND="noninteractive" apt-get -y install postgresql-client && \
DEBIAN_FRONTEND="noninteractive" apt-get -q -y install git cpanminus make gcc libperl-dev && \ 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/Releases/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz" && \ wget --quiet -O /tmp/ledgersmb-$LSMB_VERSION.tar.gz "https://download.ledgersmb.org/f/$LSMB_DL_DIR/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz" && \
tar -xzf /tmp/ledgersmb-$LSMB_VERSION.tar.gz --directory /srv && \ tar -xzf /tmp/ledgersmb-$LSMB_VERSION.tar.gz --directory /srv && \
rm -f /tmp/ledgersmb-$LSMB_VERSION.tar.gz && \ rm -f /tmp/ledgersmb-$LSMB_VERSION.tar.gz && \
cpanm --reinstall --notest Locale::Country Locale::Codes Locale::Language && \
cpanm --notest \ cpanm --notest \
--with-feature=starman \ --with-feature=starman \
--with-feature=latex-pdf-ps \ --with-feature=latex-pdf-ps \
@@ -69,9 +71,8 @@ RUN echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >>
--installdeps /srv/ledgersmb/ && \ --installdeps /srv/ledgersmb/ && \
apt-get purge -q -y git cpanminus make gcc libperl-dev && \ apt-get purge -q -y git cpanminus make gcc libperl-dev && \
apt-get autoremove -q -y && \ apt-get autoremove -q -y && \
apt-get autoclean -q && \ apt-get clean -q && \
rm -rf ~/.cpanm/ && \ rm -rf ~/.cpanm/ /var/lib/apt/lists/* /usr/share/man/*
rm -rf /var/lib/apt/lists/* /usr/share/man/*
WORKDIR /srv/ledgersmb WORKDIR /srv/ledgersmb
@@ -80,30 +81,27 @@ WORKDIR /srv/ledgersmb
# Configure outgoing mail to use host, other run time variable defaults # Configure outgoing mail to use host, other run time variable defaults
## sSMTP ## MAIL
ENV SSMTP_ROOT ar@example.com ENV LSMB_MAIL_SMTPHOST 172.17.0.1
ENV SSMTP_MAILHUB 172.17.0.1 #ENV LSMB_MAIL_SMTPPORT 25
ENV SSMTP_HOSTNAME 172.17.0.1 #ENV LSMB_MAIL_SMTPSENDER_HOSTNAME (container hostname)
#ENV SSMTP_USE_STARTTLS #ENV LSMB_MAIL_SMTPTLS
#ENV SSMTP_AUTH_USER #ENV LSMB_MAIL_SMTPUSER
#ENV SSMTP_AUTH_PASS #ENV LSMB_MAIL_SMTPPASS
ENV SSMTP_FROMLINE_OVERRIDE YES #ENV LSMB_MAIL_SMTPAUTHMECH
#ENV SSMTP_AUTH_METHOD
## DATABASE
ENV POSTGRES_HOST postgres ENV POSTGRES_HOST postgres
ENV POSTGRES_PORT 5432 ENV POSTGRES_PORT 5432
ENV DEFAULT_DB lsmb ENV DEFAULT_DB lsmb
COPY start.sh /usr/local/bin/start.sh COPY start.sh /usr/local/bin/start.sh
COPY update_ssmtp.sh /usr/local/bin/update_ssmtp.sh
RUN chown www-data /etc/ssmtp /etc/ssmtp/ssmtp.conf && \ RUN chmod +x /usr/local/bin/start.sh && \
chmod +x /usr/local/bin/update_ssmtp.sh /usr/local/bin/start.sh && \
mkdir -p /var/www mkdir -p /var/www
# Work around an aufs bug related to directory permissions: # Work around an aufs bug related to directory permissions:
RUN mkdir -p /tmp && \ RUN mkdir -p /tmp && chmod 1777 /tmp
chmod 1777 /tmp
# Internal Port Expose # Internal Port Expose
EXPOSE 5762 EXPOSE 5762

135
README.md
View File

@@ -1,12 +1,18 @@
# ledgersmb-docker # ledgersmb-docker
Dockerfile for LedgerSMB Docker image Dockerfile for LedgerSMB Docker image
# Supported tags # Supported tags
- `1.6`, `1.6.x`, `latest` - Latest release tarball from 1.6 branch - `1.8`, `1.8.x`, `latest` - Latest official release from the 1.8 branch
- `1.5`, `1.5.x` - Latest release tarball from 1.5 branch - `1.7`, `1.7.x` - Latest official release from 1.7 branch
- `1.4`, `1.4.x` - Latest tagged release of git 1.4 branch - `1.6`, `1.6.33` - Last 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
- `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.
# What is LedgerSMB? # What is LedgerSMB?
@@ -23,9 +29,9 @@ This image is designed to be used in conjunction with a running PostgreSQL
instance (such as may be provided through a separate image). instance (such as may be provided through a separate image).
This image exposes port 5762 running a Starman HTTP application server. We This image exposes port 5762 running a Starman HTTP application server. We
do not recommend exposing this port publicly, because do recommend not exposing this port publicly, because
1. The Starman author recommends it 1. The Starman author recommends not exposing it
2. We strongly recommend TLS encryption of all application traffic 2. We strongly recommend TLS encryption of all application traffic
While the exposed port can be used for quick evaluation, it's recommended While the exposed port can be used for quick evaluation, it's recommended
@@ -34,61 +40,65 @@ to add the TLS layer by applying Nginx or Apache as reverse proxy.
Enabling optional functionalities such as outgoing e-mail and printing Enabling optional functionalities such as outgoing e-mail and printing
could require additional setup of a mail service or CUPS printer service. could require additional setup of a mail service or CUPS printer service.
# Quickstart
The quickest way to get this image up and running is by using the
`docker-compose` file available through the GitHub repository at:
https://github.com/ledgersmb/ledgersmb-docker/blob/1.6/docker-compose.yml
which sets up both this image and a supporting database image for
production purposes (i.e. with persistent (database) data, with the
exception of one thing: setting up an Nginx or Apache reverse proxy
with TLS 1.2/1.3 support -- a requirement if you want to access your
installation over any type of network.
# How to use this image # How to use this image
## Start a postgres instance This image can be installed either automatically with the Docker compose file
or manually with docker only.
## 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 ```plain
$ docker run -d --name postgres \ $ docker-compose pull
-e POSTGRES_PASSWORD=mysecretpassword \ $ docker-compose up
postgres:latest
``` ```
BEWARE: The command above creates a container with the database data stored This will set up two containers: (1) a PostgreSQL container with persistent
*inside* the container. Upon removal of the container, the database data will storage which is retained between container updates and (2) a LedgerSMB
be removed too! container configured to connect to the PostgreSQL container as its database
server.
To prevent destruction of the database data upon replacement of the container, The database username and password are:
please use these commands instead:
```plain ```plain
$ docker volume create dbdata username: postgres
$ docker run -d --name postgres \ password: abc
-e POSTGRES_PASSWORD=mysecretpassword \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v dbdata:/var/lib/postgresql/data \
postgres:latest
``` ```
## Start LedgerSMB From here, follow the steps as detailed in the instructions for
[preparing for first use](https://ledgersmb.org/content/preparing-ledgersmb-17-first-use).
## Manual installation
This section assumes availability of a PostgreSQL server to attach to the
LedgerSMB image as the database server.
### Start LedgerSMB
```plain ```plain
$ docker run -d -p 5762:5762 --name myledger \ $ docker run -d -p 5762:5762 --name myledger \
ledgersmb/ledgersmb:latest -e POSTGRES_HOST=<ip/hostname> ledgersmb/ledgersmb:latest
``` ```
This command maps port 5762 of your container to port 5762 in your host. The This command maps port 5762 of your container to port 5762 in your host. The
web application inside the container should now be accessible through web application inside the container should now be accessible through
http://localhost:5762/setup.pl. http://localhost:5762/setup.pl and http://localhost:5762/login.pl.
## Set up LedgerSMB Below are more variables which determine container configuration,
like `POSTGRES_HOST` above.
# Set up LedgerSMB
* Visit http://myledger:5762/setup.pl. * Visit http://myledger:5762/setup.pl.
* Log in with the "postgres" user and the password `mysecretpassword` * Log in with the "postgres" user and the password `abc` as given above -
and provide the name of a company (= database name) you want to create. or with the credentials of your own database server in case of a manual
setup - and provide the name of a company (= database name) you want to
create.
* Go over the steps presented in the browser * Go over the steps presented in the browser
Once you have completed the setup steps, you have a fully functional Once you have completed the setup steps, you have a fully functional
@@ -138,21 +148,18 @@ affect the performance experience of users.
## Mail configuration ## Mail configuration
The docker image uses `ssmtp` to send mail. ### Before 1.8.0
* `SSMTP_ROOT` (config: `Root`) These variables are used to set outgoing SMTP defaults.
* `SSMTP_ROOT` (config: `Root` -- DEPRECATED)
* `SSMTP_MAILHUB` (config: `Mailhub`) * `SSMTP_MAILHUB` (config: `Mailhub`)
* `SSMTP_HOSTNAME` (config: `Hostname`) * `SSMTP_HOSTNAME` (config: `Hostname`)
* `SSMTP_USE_STARTTLS` (config: `UseSTARTTLS`) * `SSMTP_USE_STARTTLS` (config: `UseSTARTTLS`)
* `SSMTP_AUTH_USER` (config: `AuthUser`) * `SSMTP_AUTH_USER` (config: `AuthUser`)
* `SSMTP_AUTH_PASS` (config: `AuthPass`) * `SSMTP_AUTH_PASS` (config: `AuthPass`)
* `SSMTP_AUTH_METHOD` (config: `AuthMethod`) * `SSMTP_AUTH_METHOD` (config: `AuthMethod` -- DEPRECATED)
* `SSMTP_FROMLINE_OVERRIDE` (config: `FromLineOverride`) * `SSMTP_FROMLINE_OVERRIDE` (config: `FromLineOverride` -- DEPRECATED)
These variables are used to set outgoing SMTP defaults.
To set the outgoing email address, set `SSMTP_ROOT` and `SSMTP_HOSTNAME` at
a minimum.
`SSMTP_MAILHUB` defaults to the default docker0 interface, so if your host is `SSMTP_MAILHUB` defaults to the default docker0 interface, so if your host is
already configured to relay mail, this should relay successfully with only already configured to relay mail, this should relay successfully with only
@@ -163,6 +170,25 @@ Use the [ssmtp.conf man
page](https://www.systutorials.com/docs/linux/man/5-ssmtp.conf/) to look up 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. 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
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`
# Troubleshooting/Developing # Troubleshooting/Developing
Currently the LedgerSMB installation is in /srv/ledgersmb Currently the LedgerSMB installation is in /srv/ledgersmb
@@ -173,11 +199,18 @@ and the startup & config script is /usr/bin/start.sh.
## Issues ## Issues
If you have any problems with or questions about this image or LedgerSMB, please contact us on the [mailing list](http://ledgersmb.org/topic/support/mailing-lists-rss-and-nntp-feeds) or through a [GitHub issue](https://github.com/ledgersmb/ledgersmb-docker/issues). If you have any problems with or questions about this image or LedgerSMB,
please contact us on the [mailing list](http://ledgersmb.org/topic/support/mailing-lists-rss-and-nntp-feeds)
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. 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.
## Contributing ## Contributing
You are invited to contribute new features, fixes, or updates, large or small; we are always thrilled to receive pull requests, and do our best to process them as fast as we can. You are invited to contribute new features, fixes, or updates, large or small;
we are always thrilled to receive pull requests, and do our best to process
them as fast as we can.

View File

@@ -28,18 +28,18 @@ services:
lsmb: lsmb:
depends_on: depends_on:
- postgres - postgres
image: ledgersmb/ledgersmb:1.6 image: ledgersmb/ledgersmb:1.8
networks: networks:
- internal - internal
- default - 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 # to the host's port of the same number, thus making LedgerSMB
# available on http://<host-dns-or-ip>:5762/ # available on http://<host-dns-or-ip>:5762/
# SECURITY NOTE: Do this for evaluation purposes only! # SECURITY NOTE: Do this for evaluation purposes only!
# In production, be sure to use SSL/TLS to protect user's passwords # In production, be sure to use SSL/TLS to protect user's passwords
# and other sensitive data # and other sensitive data
# ports: ports:
# - "5762:5762" - "5762:5762"
environment: environment:
# The LSMB_WORKERS environment variable lets you select the number # The LSMB_WORKERS environment variable lets you select the number
# of processes serving HTTP requests. The default number of 2 workers # of processes serving HTTP requests. The default number of 2 workers

112
start.sh
View File

@@ -1,49 +1,105 @@
#!/bin/bash #!/bin/bash
update_ssmtp.sh
cd /srv/ledgersmb cd /srv/ledgersmb
if [[ -n "$SSMTP_ROOT" ]]; then
echo "\$SSMTP_ROOT set; parameter is deprecated and will be ignored"
LSMB_HAVE_DEPRECATED=1
fi
if [[ -n "$SSMTP_FROMLINE_OVERRIDE" ]]; then
echo "\$SSMTP_FROMLINE_OVERRIDE set; parameter is deprecated and will be ignored"
LSMB_HAVE_DEPRECATED=1
fi
if [[ -n "$SSMTP_MAILHUB" ]]; then
echo "\$SSMTP_MAILHUB set; parameter is deprecated"
if [[ -z "$LSMB_MAIL_SMTPHOST" ]]; then
echo " Deriving \$LSMB_MAIL_SMTPHOST setting from \$SSMTP_MAILHUB"
LSMB_MAIL_SMTPHOST=${SSMTP_MAILHUB%:*}
fi
if [[ -z "$LSMB_MAIL_SMTPPORT" ]]; then
echo " Deriving \$LSMB_MAIL_SMTPPORT setting from \$SSMTP_MAILHUB"
LSMB_MAIL_SMTPPORT=${SSMTP_MAILHUB#*:}
fi
LSMB_HAVE_DEPRECATED=1
fi
if [[ -n "$SSMTP_HOSTNAME" ]]; then
echo "\$SSMTP_HOSTNAME set; parameter is deprecated"
if [[ -z "$LSMB_MAIL_SMTPSENDER_HOSTNAME" ]]; then
echo " Deriving \$LSMB_MAIL_SMTPSENDER_HOSTNAME setting from \$SSMTP_HOSTNAME"
LSMB_MAIL_SMTPSENDER_HOSTNAME=$SSMTP_HOSTNAME
fi
LSMB_HAVE_DEPRECATED=1
fi
if [[ -n "$SSMTP_USE_STARTTLS" ]]; then
echo "\$SSMTP_USE_STARTTLS set; parameter is deprecated"
if [[ -z "$LSMB_MAIL_SMTPTLS" ]]; then
echo " Deriving \$LSMB_MAIL_SMTPSENDER_HOSTNAME setting from \$SSMTP_USE_STARTTLS"
LSMB_MAIL_SMTPTLS=$SSMTP_USE_STARTTLS
fi
LSMB_HAVE_DEPRECATED=1
fi
if [[ -n "$SSMTP_AUTH_USER" ]]; then
echo "\$SSMTP_AUTH_USER set; parameter is deprecated"
if [[ -z "$LSMB_MAIL_SMTPUSER" ]]; then
echo " Deriving \$LSMB_MAIL_SMTPUSER setting from \$SSMTP_AUTH_USER"
LSMB_MAIL_SMTPUSER=$SSMTP_AUTH_USER
fi
LSMB_HAVE_DEPRECATED=1
fi
if [[ -n "$SSMTP_AUTH_PASS" ]]; then
echo "\$SSMTP_AUTH_PASS set; parameter is deprecated"
if [[ -z "$LSMB_MAIL_SMTPPASS" ]]; then
echo " Deriving \$LSMB_MAIL_SMTPPASS setting from \$SSMTP_AUTH_PASS"
LSMB_MAIL_SMTPPASS=$SSMTP_AUTH_PASS
fi
LSMB_HAVE_DEPRECATED=1
fi
if [[ -n "$SSMTP_AUTH_METHOD" ]]; then
echo "\$SSMTP_AUTH_METHOD set; parameter is deprecated"
if [[ -z "$LSMB_MAIL_SMTPAUTHMECH" ]]; then
echo " Deriving \$LSMB_MAIL_SMTPAUTHMECH setting from \$SSMTP_AUTH_METHOD"
LSMB_MAIL_SMTPAUTHMECH=$SSMTP_AUTH_METHOD
fi
LSMB_HAVE_DEPRECATED=1
fi
if [[ -n "$LSMB_HAVE_DEPRECATED" ]]; then
echo "!!! DEPRECATED \$SSMTP_* PARAMETERS WILL BE REMOVED in the 1.9 image!!!"
fi
if [[ ! -f ledgersmb.conf ]]; then if [[ ! -f ledgersmb.conf ]]; then
cat <<EOF >/tmp/ledgersmb.conf cat <<EOF >/tmp/ledgersmb.conf
[main] [main]
cache_templates = 1 cache_templates = 1
[database] [database]
host = $POSTGRES_HOST host = $POSTGRES_HOST
port = $POSTGRES_PORT port = $POSTGRES_PORT
default_db = $DEFAULT_DB default_db = $DEFAULT_DB
[mail] [mail]
sendmail = /usr/sbin/ssmtp ${LSMB_MAIL_SMTPHOST:+smtphost=$LSMB_MAIL_SMTPHOST
}${LSMB_MAIL_SMTPPORT:+smtpport=$LSMB_MAIL_SMTPPORT
}${LSMB_MAIL_SMTPSENDER_HOSTNAME:+smtpsender_hostname=$LSMB_MAIL_SMTPSENDER_HOSTNAME
}${LSMB_MAIL_SMTPTLS:+smtptls=$LSMB_MAIL_SMTPTLS
}${LSMB_MAIL_SMTPUSER:+smtpuser=$LSMB_MAIL_SMTPUSER
}${LSMB_MAIL_SMTPPASS:+smtppass=$LSMB_MAIL_SMTPPASS
}${LSMB_MAIL_SMTPAUTHMECH:+smtpauthmech=$LSMB_MAIL_SMTPAUTHMECH
}
EOF EOF
export LSMB_CONFIG_FILE='/tmp/ledgersmb.conf' export LSMB_CONFIG_FILE='/tmp/ledgersmb.conf'
fi fi
if [ ! -f "/tmp/ledgersmb" ]; then
mkdir /tmp/ledgersmb
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
# Needed for modules loaded by cpanm
export PERL5LIB
for PerlLib in /usr/lib/perl5* /usr/local/lib/perl5*/site_perl/* ; do
[[ -d "$PerlLib" ]] && {
PERL5LIB="$PerlLib";
echo -e "\tmaybe: $PerlLib";
}
done ;
echo "Selected PERL5LIB=$PERL5LIB";
# start ledgersmb # start ledgersmb
# --preload-app allows application initialization to kill the entire # --preload-app allows application initialization to kill the entire
# starman instance (instead of just the worker, which will immediately # starman instance (instead of just the worker, which will immediately
# get restarted); it also has a positive effect on memory use # get restarted) on error; it also has a positive effect on memory use
exec starman --port 5762 --workers ${LSMB_WORKERS:-5} --preload-app bin/ledgersmb-server.psgi echo '--------- LEDGERSMB CONFIGURATION: ledgersmb.conf'
cat ${LSMB_CONFIG_FILE:-ledgersmb.conf}
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} \
-I lib -I old/lib \
--preload-app bin/ledgersmb-server.psgi

View File

@@ -1,18 +0,0 @@
#!/bin/bash
ConfiguredComment='# install script update_ssmtp.sh has configured ssmtp'
grep -qc "$ConfiguredComment" /etc/ssmtp/ssmtp.conf && {
echo "smtp configured."
exit
}
sed -i \
-e "s/\(root=\).*\$/\1$SSMTP_ROOT/g" \
-e "s/\(mailhub=\).*\$/\1$SSMTP_MAILHUB/g" \
-e "s/\(hostname=\).*\$/\1$SSMTP_HOSTNAME/g" \
/etc/ssmtp/ssmtp.conf
[ -z "$SSMTP_USE_STARTTLS" ] || echo "UseSTARTTLS=$SSMTP_USE_STARTTLS" >> /etc/ssmtp/ssmtp.conf
[ -z "$SSMTP_AUTH_USER" ] || echo "AuthUser=$SSMTP_AUTH_USER" >> /etc/ssmtp/ssmtp.conf
[ -z "$SSMTP_AUTH_PASS" ] || echo "AuthPass=$SSMTP_AUTH_PASS" >> /etc/ssmtp/ssmtp.conf
[ -z "$SSMTP_AUTH_METHOD" ] || echo "AuthMethod=$SSMTP_AUTH_METHOD" >> /etc/ssmtp/ssmtp.conf
[ -z "$SSMTP_FROMLINE_OVERRIDE" ] || echo "FromLineOverride=$SSMTP_FROMLINE_OVERRIDE" >> /etc/ssmtp/ssmtp.conf
echo "$ConfiguredComment" >> /etc/ssmtp/ssmtp.conf