Compare commits

..

67 Commits

Author SHA1 Message Date
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
8 changed files with 208 additions and 622 deletions

View File

@@ -1,25 +0,0 @@
name: No Response
# Both `issue_comment` and `scheduled` event types are required for this Action
# to work properly.
on:
issue_comment:
types: [created]
schedule:
# Schedule for five minutes after the hour, every hour
- cron: '5 3 * * *'
jobs:
noResponse:
runs-on: ubuntu-latest
steps:
- uses: lee-dohm/no-response@v0.5.0
with:
token: ${{ github.token }}
# Number of days of inactivity before an Issue is closed for lack of response
daysUntilClose: 90
# Label requiring a response
responseRequiredLabel: waiting-for-user
# Comment to post when closing an Issue for lack of response. Set to `false` to disable
closeComment: >
Closing: more than 90 days without user response. Feel free to reopen with your comments.

View File

@@ -1,137 +1,121 @@
# Build time variables FROM debian:stretch
MAINTAINER Freelock john@freelock.com
ARG SRCIMAGE=debian:bookworm-slim
FROM $SRCIMAGE AS builder
ARG LSMB_VERSION="1.11.6"
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.11.6"
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 # 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 # 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
RUN echo "APT::Install-Recommends \"false\";\nAPT::Install-Suggests \"false\";" > /etc/apt/apt.conf.d/00recommends && \
COPY --from=builder /srv/derived-deps /tmp/derived-deps DEBIAN_FRONTEND="noninteractive" apt-mark hold sensible-utils && \
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/ && \
DEBIAN_FRONTEND="noninteractive" apt-get -y update && \ DEBIAN_FRONTEND="noninteractive" apt-get -y update && \
DEBIAN_FRONTEND="noninteractive" apt-get -y upgrade && \ DEBIAN_FRONTEND="noninteractive" apt-get -y upgrade && \
DEBIAN_FRONTEND="noninteractive" apt-get -y install \ DEBIAN_FRONTEND="noninteractive" apt-get -y install \
wget ca-certificates gnupg \ wget ca-certificates gnupg \
$( cat /tmp/derived-deps ) \ libcgi-emulate-psgi-perl libcgi-simple-perl libconfig-inifiles-perl \
libdbd-pg-perl libdbi-perl libdata-uuid-perl libdatetime-perl \
libdatetime-format-strptime-perl libio-stringy-perl \
libjson-xs-perl libcpanel-json-xs-perl liblist-moreutils-perl \
liblocale-maketext-perl liblocale-maketext-lexicon-perl \
liblog-log4perl-perl libmime-lite-perl libmime-types-perl \
libmath-bigint-gmp-perl libmodule-runtime-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 libfile-find-rule-perl \
libplack-middleware-reverseproxy-perl \
libtemplate-perl libtext-csv-perl libtext-csv-xs-perl \
libtext-markdown-perl libxml-simple-perl \
libnamespace-autoclean-perl \
libimage-size-perl \
libtemplate-plugin-latex-perl libtex-encode-perl \
libclass-c3-xs-perl \ libclass-c3-xs-perl \
texlive-plain-generic texlive-latex-recommended texlive-fonts-recommended \ texlive-latex-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 -y update && \ DEBIAN_FRONTEND="noninteractive" apt-get -y update && \
DEBIAN_FRONTEND="noninteractive" apt-get -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 -y autoremove && \
wget --quiet -O /tmp/ledgersmb-$LSMB_VERSION.tar.gz "$ARTIFACT_LOCATION" && \ DEBIAN_FRONTEND="noninteractive" apt-get -y autoclean && \
tar -xzf /tmp/ledgersmb-$LSMB_VERSION.tar.gz --directory /srv && \ rm -rf /var/lib/apt/lists/*
rm -f /tmp/ledgersmb-$LSMB_VERSION.tar.gz && \
cpanm --metacpan --notest \
# Build time variables
ENV LSMB_VERSION 1.7.0-beta1
ENV NODE_PATH /usr/local/lib/node_modules
###########################################################
# Java & Nodejs for doing Dojo build
# Uglify needs to be installed right before 'make dojo'?!
# These packages are only needed during the dojo build
ENV DOJO_Build_Deps git make gcc libperl-dev curl nodejs
# These packages can be removed after the dojo build
ENV DOJO_Build_Deps_removal ${DOJO_Build_Deps} nodejs
RUN wget --quiet -O - https://deb.nodesource.com/setup_8.x | bash -
RUN DEBIAN_FRONTEND="noninteractive" apt-get -y update && \
DEBIAN_FRONTEND="noninteractive" apt-get -y install ${DOJO_Build_Deps} && \
cd /srv && \
git clone --recursive -b $LSMB_VERSION https://github.com/ledgersmb/LedgerSMB.git ledgersmb && \
cd ledgersmb && \
(curl -L https://cpanmin.us | perl - App::cpanminus) && \
cpanm --quiet --notest \
--with-feature=starman \ --with-feature=starman \
--with-feature=latex-pdf-ps \ --with-feature=latex-pdf-ps \
--with-feature=openoffice \ --with-feature=openoffice \
--installdeps /srv/ledgersmb/ && \ --installdeps . && \
apt-get purge -q -y git cpanminus make gcc libperl-dev && \ npm install uglify-js@">=2.0 <3.0" && \
apt-get autoremove -q -y && \ make dojo && \
apt-get clean -q && \ DEBIAN_FRONTEND="noninteractive" apt-get -y purge ${DOJO_Build_Deps_removal} && \
rm -rf ~/.cpanm/ /var/lib/apt/lists/* /usr/share/man/* 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/*
# Cleanup args that are for internal use
WORKDIR /srv/ledgersmb ENV DOJO_Build_Deps=
ENV DOJO_Build_Deps_removal=
# master requirements ENV NODE_PATH=
# Configure outgoing mail to use host, other run time variable defaults # Configure outgoing mail to use host, other run time variable defaults
## MAIL ## sSMTP
ENV LSMB_MAIL_SMTPHOST 172.17.0.1 ENV SSMTP_ROOT ar@example.com
#ENV LSMB_MAIL_SMTPPORT 25 ENV SSMTP_MAILHUB 172.17.0.1
#ENV LSMB_MAIL_SMTPSENDER_HOSTNAME (container hostname) ENV SSMTP_HOSTNAME 172.17.0.1
#ENV LSMB_MAIL_SMTPTLS #ENV SSMTP_USE_STARTTLS
#ENV LSMB_MAIL_SMTPUSER #ENV SSMTP_AUTH_USER
#ENV LSMB_MAIL_SMTPPASS #ENV SSMTP_AUTH_PASS
#ENV LSMB_MAIL_SMTPAUTHMECH ENV SSMTP_FROMLINE_OVERRIDE YES
#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 chmod +x /usr/local/bin/start.sh && \ RUN chown www-data /etc/ssmtp /etc/ssmtp/ssmtp.conf && \
mkdir -p /var/www && \ chmod +x /usr/local/bin/update_ssmtp.sh /usr/local/bin/start.sh && \
mkdir -p /srv/ledgersmb/local/conf && \ mkdir -p /var/www
chown -R www-data /srv/ledgersmb/local
# Work around an aufs bug related to directory permissions: # 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 # Internal Port Expose
EXPOSE 5762 EXPOSE 5762

249
README.md
View File

@@ -4,20 +4,13 @@ Dockerfile for LedgerSMB Docker image
# Supported tags # Supported tags
- `1.11`, `1.11.x`, `latest` - Latest official release from the 1.11 branch - `1.6`, `1.6.x`, `latest` - Latest official release from 1.6 branch
- `1.10`, `1.10.x` - Latest official release from the 1.10 branch - `1.5`, `1.5.x` - Latest official release from 1.5 branch
- `1.9`, `1.9.30` - Last official release from the 1.9 branch (End-of-Life) - `1.4`, `1.4.x` - Latest tagged release of git 1.4 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 - `master` - Master branch from git, unstable
Containers supporting the development process are provided Containers supporting the development process are provided
through the ledgersmb-dev-docker project. See [the development through the ledgersmb-dev-docker project. See https://github.com/ledgersmb/ledgersmb-dev-docker/blob/master/README.md#getting-started.
container's README](https://github.com/ledgersmb/ledgersmb-dev-docker/blob/master/README.md#getting-started)
for more information.
# What is LedgerSMB? # What is LedgerSMB?
@@ -34,9 +27,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 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 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
@@ -48,74 +41,64 @@ could require additional setup of a mail service or CUPS printer service.
# How to use this image # How to use this image
This image can be installed either automatically with the Docker compose file 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 ## Docker-Compose installation and start
This repository provides a file named `docker-compose.yml` which can be used to This image provides `docker-compose.yml` which can be used to pull related
pull related images, install them, establish an internal network for their images, install them, establish an internal network for their communications,
communications, adjust environment variables, start and stop LedgerSMB. The adjust environment variables, start and stop LedgerSMB. The only instructions
only instructions required, after the optional edition of the file to adjust required, after the optional edition of the file to adjust the environment
the environment variables, are: variables, are:
```plain ```plain
$ docker-compose pull $ docker-compose pull
$ docker-compose up -d $ docker-compose up
``` ```
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. Your LedgerSMB installation should now be accessible through
[http://localhost:5762/](http://localhost:5762/).
The default number of workers is 5. The default 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 ## Manual installation
This section assumes availability of a PostgreSQL server to attach to the ### Start a postgres instance
LedgerSMB image as the database server.
```plain
$ docker run -d --name postgres \
-e POSTGRES_PASSWORD=mysecretpassword \
postgres:latest
```
BEWARE: The command above creates a container with the database data stored
*inside* the container. Upon removal of the container, the database data will
be removed too!
To prevent destruction of the database data upon replacement of the container,
please use these commands instead:
```plain
$ docker volume create dbdata
$ docker run -d --name postgres \
-e POSTGRES_PASSWORD=mysecretpassword \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v dbdata:/var/lib/postgresql/data \
postgres:latest
```
### Start LedgerSMB ### Start LedgerSMB
```plain ```plain
$ docker run -d -p 5762:5762 --name myledger \ $ docker run -d -p 5762:5762 --name myledger \
-e POSTGRES_HOST=<ip/hostname> ledgersmb/ledgersmb:latest 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 and http://localhost:5762/login.pl. http://localhost:5762/setup.pl.
Below are more variables which determine container configuration,
like `POSTGRES_HOST` above.
# Set up LedgerSMB # Set up LedgerSMB
* Visit http://myledger:5762/setup.pl. * Visit http://myledger:5762/setup.pl.
* Log in with the "postgres" user and the password `abc` as given above - * Log in with the "postgres" user and the password `mysecretpassword`
or with the credentials of your own database server in case of a manual and provide the name of a company (= database name) you want to create.
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
@@ -127,13 +110,9 @@ Visit http://localhost:5762/login.pl to log in and get started.
No persistant data is stored in the LedgerSMB container. 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. 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 # Environment Variables
The LedgerSMB image uses several environment variables. They are all optional. The LedgerSMB image uses several environment variables. They are all optional.
@@ -169,124 +148,28 @@ affect the performance experience of users.
## Mail configuration ## Mail configuration
As of 1.8.0, the image is based on Debian Buster instead of Debian Stretch; * `SSMTP_ROOT` (config: `Root`)
with Buster, the `ssmtp` program has been removed from Debian, this image * `SSMTP_MAILHUB` (config: `Mailhub`)
had to change strategy. The main application always came with built-in e-mail * `SSMTP_HOSTNAME` (config: `Hostname`)
yet with the deprecation, the abilities have expanded. * `SSMTP_USE_STARTTLS` (config: `UseSTARTTLS`)
* `SSMTP_AUTH_USER` (config: `AuthUser`)
* `SSMTP_AUTH_PASS` (config: `AuthPass`)
* `SSMTP_AUTH_METHOD` (config: `AuthMethod`)
* `SSMTP_FROMLINE_OVERRIDE` (config: `FromLineOverride`)
The following parameters are now supported to set mail preferences: These variables are used to set outgoing SMTP defaults.
* `LSMB_MAIL_SMTPHOST` \ To set the outgoing email address, set `SSMTP_ROOT` and `SSMTP_HOSTNAME` at
The host name/IP-address of the SMTP server that will forward mail from a minimum.
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 `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.
## Changing configuration Use the other environment variables to relay mail through a different host.
Use the [ssmtp.conf man
The configuration file is stored in /srv/ledgersmb/local/conf/. By mounting page](https://www.systutorials.com/docs/linux/man/5-ssmtp.conf/) to look up
that directory using a bind-mount to a location outside the container, the meaning and function of each of the mail configuration keys.
configuration can be changed between container starts:
```plain
$ docker run -d -p 5762:5762 --name myledger \
--mount 'type=bind,src=/home/ledgersmb/conf,dst=/srv/ledgersmb/local/conf \
-e POSTGRES_HOST=<ip/hostname> ledgersmb/ledgersmb:latest
```
## Overriding or adding configuration
By pre-creating a configuration file in the mounted configuration directory,
the standard configuration generation process in the container can be overruled:
```plain
$ cat <<EOF > /home/ledgersmb/conf/ledgersmb.yaml
... YOUR CONFIG HERE ...
EOF
$ docker run -d -p 5762:5762 --name myledger \
--mount 'type=bind,src=/home/ledgersmb/conf,dst=/srv/ledgersmb/local/conf \
-e POSTGRES_HOST=<ip/hostname> ledgersmb/ledgersmb:latest
```
If you do not want to completely overrule the configuration generated, but instead
supplement the configuration, you can put incremental configuration snippets in
files named `ledgersmb.XXX.yaml` in the same folder. E.g.:
```plain
$ cat <<EOF > /home/ledgersmb/conf/ledgersmb.001.yaml
logging:
file: ledgersmb.logging
EOF
```
[Documentation with respect to the available configuration
keys](https://github.com/ledgersmb/LedgerSMB/blob/master/doc/conf/ledgersmb.yaml)
is available in the LedgerSMB repository.
## 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 # Troubleshooting/Developing
@@ -298,17 +181,11 @@ 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, 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).
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 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 ## Contributing
You are invited to contribute new features, fixes, or updates, large or small; 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.
we are always thrilled to receive pull requests, and do our best to process
them as fast as we can.

View File

@@ -1,36 +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:
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,41 +16,30 @@ services:
# because that allows us to use the default hostname ("postgres") # because that allows us to use the default hostname ("postgres")
# from the LedgerSMB configuration # from the LedgerSMB configuration
postgres: postgres:
image: postgres:15-alpine image: postgres:9.6-alpine
environment: environment:
# Replace the password below for a secure setup # Replace the password below for a secure setup
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-abc} POSTGRES_PASSWORD: abc
PGDATA: /var/lib/postgresql/data/pgdata PGDATA: /var/lib/postgresql/data/pgdata
networks: networks:
- internal - internal
volumes: volumes:
- "pgdata:/var/lib/postgresql/data" - "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: lsmb:
depends_on: depends_on:
- postgres - postgres
image: ghcr.io/ledgersmb/ledgersmb:1.11 image: ledgersmb/ledgersmb:1.6
# In order to store the configuration outside the image, allowing it to
# be edited between container restarts, uncomment the section below and
# change the 'source' to the directory where you want the configuration
# to be stored.
# volumes:
# - type: bind
# source: /home/ledgersmb/conf
# target: /srv/ledgersmb/local/conf
networks: networks:
- internal - internal
- default - 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. Mapping "5762:5762" makes 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: Leave this uncommented for evaluation purposes only! # SECURITY NOTE: Do this for evaluation purposes only!
# In production, be sure to use SSL/TLS (such as by reverse proxying) to protect # In production, be sure to use SSL/TLS to protect user's passwords
# 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
@@ -58,29 +47,17 @@ services:
# improve the performance experience, increase memory and the # improve the performance experience, increase memory and the
# number of workers # number of workers
# #
LSMB_WORKERS: ${LSMB_WORKERS:-5} LSMB_WORKERS: 2
# #
# #
# SSMTP_ROOT:
# LSMB_MAIL_SMTPHOST: # SSMTP_HOSTNAME:
# LSMB_MAIL_SMTPPORT: # SSMTP_MAILHUB:
# LSMB_MAIL_SMTPTLS: # SSMTP_AUTH_USER:
# LSMB_MAIL_SMTPSENDER_HOSTNAME: # SSMTP_AUTH_PASS:
# LSMB_MAIL_SMTPUSER: # SSMTP_AUTH_METHOD:
# LSMB_MAIL_SMTPPASS: # SSMTP_USE_STARTTLS:
# LSMB_MAIL_SMTPAUTHMECH: # SSMTP_FROMLINE_OVERRIDE:
#
#
# 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 # having the dbdata volume is required to persist our
# data between PostgreSQL container updates; without # data between PostgreSQL container updates; without

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;
}
}
}

170
start.sh
View File

@@ -1,164 +1,36 @@
#!/bin/bash #!/bin/bash
update_ssmtp.sh
cd /srv/ledgersmb cd /srv/ledgersmb
[[ -d ./local/conf/ ]] || mkdir ./local/conf/
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 if [[ ! -f ledgersmb.conf ]]; then
echo "!!! DEPRECATED \$SSMTP_* PARAMETERS WILL BE REMOVED in the 1.9 image!!!" cat <<EOF >/tmp/ledgersmb.conf
fi [main]
cache_templates = 1
[database]
host = $POSTGRES_HOST
port = $POSTGRES_PORT
default_db = $DEFAULT_DB
if [[ ! -f ./local/conf/ledgersmb.yaml ]]; then [mail]
cat <<EOF >./local/conf/ledgersmb.yaml sendmail = /usr/sbin/ssmtp
paths:
\$class: Beam::Wire
config:
UI: ./UI/
UI_cache: lsmb_templates/
db:
\$class: LedgerSMB::Database::Factory
connect_data:
host: ${POSTGRES_HOST:-postgres}
port: ${POSTGRES_PORT:-5432}
mail:
transport:
\$class: LedgerSMB::Mailer::TransportSMTP
tls: $LSMB_MAIL_SMTPTLS
miscellaneous:
\$class: Beam::Wire
config:
proxy_ip: ${PROXY_IP:-172.17.0.1/12}
ui:
class: LedgerSMB::Template::UI
method: new_UI
lifecycle: eager
args:
cache:
\$ref: paths/UI_cache
root:
\$ref: paths/UI
EOF EOF
export LSMB_CONFIG_FILE='/tmp/ledgersmb.conf'
if [[ -n "$LSMB_MAIL_SMTPHOST" ]]
then
cat <<EOF >./local/conf/ledgersmb.000.yaml
mail:
transport:
host: $LSMB_MAIL_SMTPHOST
EOF
fi
if [[ -n "$LSMB_MAIL_SMTPPORT" ]]
then
cat <<EOF >./local/conf/ledgersmb.001.yaml
mail:
transport:
port: $LSMB_MAIL_SMTPPORT
EOF
fi
if [[ -n "$LSMB_MAIL_SMTPSENDER_HOSTNAME" ]]
then
cat <<EOF >./local/conf/ledgersmb.002.yaml
mail:
transport:
helo: $LSMB_MAIL_SMTPSENDER_HOSTNAME
EOF
fi
if [[ -n "$LSMB_MAIL_SMTPUSER" ]]
then
cat <<EOF >./local/conf/ledgersmb.003.yaml
mail:
transport:
sasl_password: ''
sasl_username:
\$class: Authen::SASL
mechanism: $LSMB_MAIL_SMTPAUTHMECH
callback:
user: $LSMB_MAIL_SMTPUSER
pass: $LSMB_MAIL_SMTPPASS
EOF
fi
fi 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 # 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) on error; it also has a positive effect on memory use # get restarted); it also has a positive effect on memory use
LSMB_CONFIG_FILE=${LSMB_CONFIG_FILE:-./local/conf/ledgersmb.yaml} exec starman --port 5762 --workers ${LSMB_WORKERS:-5} -I lib -I old/lib \
export LSMB_CONFIG_FILE
echo '--------- LEDGERSMB CONFIGURATION: ledgersmb.conf'
cat ${LSMB_CONFIG_FILE}
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 0.0.0.0:5762 --workers ${LSMB_WORKERS:-5} \
-I lib -I old/lib \
--preload-app bin/ledgersmb-server.psgi --preload-app bin/ledgersmb-server.psgi

18
update_ssmtp.sh Normal file
View File

@@ -0,0 +1,18 @@
#!/bin/bash
ConfiguredComment='# install script update_ssmtp.sh has configured ssmtp'
grep -qc "$ConfiguredComment" /etc/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