Compare commits

..

4 Commits

Author SHA1 Message Date
Erik Huelsmann
0881bc6275 * Automatic Dockerfile update by release process 2018-01-28 18:03:02 +00:00
Erik Huelsmann
4b2e28ce0f * Add more documentation regarding container mail configuration 2018-01-24 21:56:24 +01:00
Erik Huelsmann
95d28c1b44 * Automatic Dockerfile update by release process 2018-01-07 21:05:30 +00:00
Erik Huelsmann
cd7e322f29 * Close #15 for the 1.5 branch 2018-01-06 14:16:11 +01:00
6 changed files with 137 additions and 381 deletions

View File

@@ -1,9 +0,0 @@
# Configuration for probot-no-response - https://github.com/probot/no-response
# 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,100 +1,49 @@
# Build time variables FROM debian:jessie
ARG SRCIMAGE=debian:buster-slim
FROM $SRCIMAGE AS builder
ARG LSMB_VERSION="1.8.25"
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
MAINTAINER Freelock john@freelock.com MAINTAINER Freelock john@freelock.com
# Build time variables # Build time variables
ARG LSMB_VERSION="1.8.25" ENV LSMB_VERSION 1.5.16
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, performance is terribly slow...
RUN echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >> /etc/apt/apt.conf && \
# Installing psql client directly from instructions at https://wiki.postgresql.org/wiki/Apt DEBIAN_FRONTEND=noninteractive apt-get update && \
# That mitigates issues where the PG instance is running a newer version than this container apt-get dist-upgrade -y && apt-get -y install \
# Install Locale::Codes Locale::Country Locale::Language from CPAN to suppress libcgi-emulate-psgi-perl libcgi-simple-perl libconfig-inifiles-perl \
# deprecation-as-core-module warning libdbd-pg-perl libdbi-perl libdatetime-perl \
libdatetime-format-strptime-perl libdigest-md5-perl \
COPY --from=builder /srv/derived-deps /tmp/derived-deps libfile-mimeinfo-perl libjson-xs-perl libjson-perl \
liblocale-maketext-perl liblocale-maketext-lexicon-perl \
RUN set -x ; \ liblog-log4perl-perl libmime-base64-perl libmime-lite-perl \
echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >> /etc/apt/apt.conf && \ libmath-bigint-gmp-perl libmoose-perl libnumber-format-perl \
mkdir -p /usr/share/man/man1/ && \ libpgobject-perl libpgobject-simple-perl libpgobject-simple-role-perl \
mkdir -p /usr/share/man/man2/ && \ libpgobject-util-dbmethod-perl libplack-perl libtemplate-perl \
mkdir -p /usr/share/man/man3/ && \ libnamespace-autoclean-perl \
mkdir -p /usr/share/man/man4/ && \ libtemplate-plugin-latex-perl libtex-encode-perl \
mkdir -p /usr/share/man/man5/ && \ libmoosex-nonmoose-perl libclass-c3-xs-perl \
mkdir -p /usr/share/man/man6/ && \ texlive-latex-recommended \
mkdir -p /usr/share/man/man7/ && \ texlive-xetex \
DEBIAN_FRONTEND="noninteractive" apt-get -y update && \ starman \
DEBIAN_FRONTEND="noninteractive" apt-get -y upgrade && \ libopenoffice-oodoc-perl \
DEBIAN_FRONTEND="noninteractive" apt-get -y install \ postgresql-client \
wget ca-certificates gnupg \ ssmtp \
$( cat /tmp/derived-deps ) \
libclass-c3-xs-perl \
texlive-latex-recommended texlive-fonts-recommended \
texlive-xetex fonts-liberation \
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 && \ DEBIAN_FRONTEND=noninteractive apt-get update && \
(wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -) && \ apt-get -y install git cpanminus make gcc libperl-dev && \
DEBIAN_FRONTEND="noninteractive" apt-get -y update && \ curl -Lo /tmp/ledgersmb-$LSMB_VERSION.tar.gz "https://download.ledgersmb.org/f/Releases/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz" && \
DEBIAN_FRONTEND="noninteractive" apt-get -y install postgresql-client && \ tar -xvzf /tmp/ledgersmb-$LSMB_VERSION.tar.gz --directory /srv && \
DEBIAN_FRONTEND="noninteractive" apt-get -q -y install git cpanminus make gcc libperl-dev && \
wget --quiet -O /tmp/ledgersmb-$LSMB_VERSION.tar.gz "$ARTIFACT_LOCATION" && \
tar -xzf /tmp/ledgersmb-$LSMB_VERSION.tar.gz --directory /srv && \
rm -f /tmp/ledgersmb-$LSMB_VERSION.tar.gz && \ rm -f /tmp/ledgersmb-$LSMB_VERSION.tar.gz && \
cpanm --reinstall --notest Locale::Country Locale::Codes Locale::Language && \ cpanm --quiet --notest \
cpanm --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 /srv/ledgersmb/ && \
apt-get purge -q -y git cpanminus make gcc libperl-dev && \ apt-get purge -y git cpanminus make gcc libperl-dev && \
apt-get autoremove -q -y && \ apt-get autoremove -y && \
apt-get clean -q && \ apt-get autoclean && \
rm -rf ~/.cpanm/ /var/lib/apt/lists/* /usr/share/man/* rm -rf ~/.cpanm/ && \
rm -rf /var/lib/apt/lists/*
WORKDIR /srv/ledgersmb WORKDIR /srv/ledgersmb
@@ -102,27 +51,30 @@ 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
## 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 && \
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 && chmod 1777 /tmp RUN mkdir -p /tmp && \
chmod 1777 /tmp
# Internal Port Expose # Internal Port Expose
EXPOSE 5762 EXPOSE 5762

142
README.md
View File

@@ -1,18 +1,13 @@
# ledgersmb-docker # ledgersmb-docker
Dockerfile for LedgerSMB Docker image Dockerfile for LedgerSMB Docker image
# Supported tags # Supported tags
- `1.8`, `1.8.x`, `latest` - Latest official release from the 1.8 branch - `1.5`, `1.5.x`, `latest` - 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 - `master` - Master branch from git, unstable
- `master-dev`, `1.5-dev` - Containers to kick off a development setup
Containers supporting the development process are provided
through the [ledgersmb-dev-docker project](https://github.com/ledgersmb/ledgersmb-dev-docker/blob/master/README.md#getting-started).
# What is LedgerSMB? # What is LedgerSMB?
@@ -29,9 +24,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
@@ -42,75 +37,46 @@ 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 ## Start a postgres instance
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-compose pull $ docker run -d --name postgres \
$ docker-compose up -d -e POSTGRES_PASSWORD=mysecretpassword \
postgres:latest
``` ```
This will set up two containers: (1) a PostgreSQL container with persistent BEWARE: The command above creates a container with the database data stored
storage which is retained between container updates and (2) a LedgerSMB *inside* the container. Upon removal of the container, the database data will
container configured to connect to the PostgreSQL container as its database be removed too!
server. The containers will be running in the background and can be stopped
and started by running: To prevent destruction of the database data upon replacement of the container,
please use these commands instead:
```plain ```plain
# Stopping the containers $ docker volume create dbdata
$ docker-compose stop $ docker run -d --name postgres \
-e POSTGRES_PASSWORD=mysecretpassword \
# Starting the containers -e PGDATA=/var/lib/postgresql/data/pgdata \
$ docker-compose start -v dbdata:/var/lib/postgresql/data \
postgres:latest
``` ```
(Check the status of the containers using `docker-compose ps`; when the ## Start LedgerSMB
containers are running, the `State` column shows `Up`.)
The database username and password are:
```plain
username: postgres
password: abc
```
From here, follow the steps as detailed in the instructions for
[preparing for first use](https://ledgersmb.org/content/preparing-ledgersmb-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 \
-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, ## Set up LedgerSMB
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 `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
@@ -150,46 +116,21 @@ Default: lsmb
Set this if you want to automatically log in to a particular LedgerSMB database Set this if you want to automatically log in to a particular LedgerSMB database
without needing to enter the name of that database on the login.pl login screen. without needing to enter the name of that database on the login.pl login screen.
## `LSMB_WORKERS`
Default: 5
Set this if you want to run in a memory-constrained environment. E.g. set it to
2 when running in a 1 GB memory setup. Please do note that this may adversely
affect the performance experience of users.
## Mail configuration ## Mail configuration
### 1.8.0 and higher * `SSMTP_ROOT` (config: `Root`)
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`
### Before 1.8.0
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` -- DEPRECATED) * `SSMTP_AUTH_METHOD` (config: `AuthMethod`)
* `SSMTP_FROMLINE_OVERRIDE` (config: `FromLineOverride` -- DEPRECATED) * `SSMTP_FROMLINE_OVERRIDE` (config: `FromLineOverride`)
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
@@ -210,18 +151,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.
`#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; 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,80 +0,0 @@
# This docker-compose file creates one
# compose 'project' consisting of two containers
#
# 1. The PostgreSQL data container
# 2. The LedgerSMB application container
#
# LedgerSMB persists all its data in the database,
# so no special care needs to be taken on
# container upgrades. With PostgreSQL, data is
# persisted across upgrades by the use of a
# special 'dbdata' volume
version: "3.2"
services:
# Note that the container needs to be named "postgres" here,
# because that allows us to use the default hostname ("postgres")
# from the LedgerSMB configuration
postgres:
image: postgres:9.6-alpine
environment:
# Replace the password below for a secure setup
POSTGRES_PASSWORD: abc
PGDATA: /var/lib/postgresql/data/pgdata
networks:
- internal
volumes:
- "pgdata:/var/lib/postgresql/data"
lsmb:
depends_on:
- postgres
image: ledgersmb/ledgersmb:1.8
networks:
- internal
- default
# 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"
environment:
# The LSMB_WORKERS environment variable lets you select the number
# of processes serving HTTP requests. The default number of 2 workers
# is geared toward limited-memory situations (1 GB). In order to
# improve the performance experience, increase memory and the
# number of workers
#
LSMB_WORKERS: 2
#
#
# LSMB_MAIL_SMTPHOST:
# LSMB_MAIL_SMTPPORT:
# LSMB_MAIL_SMTPTLS:
# LSMB_MAIL_SMTPSENDER_HOSTNAME:
# LSMB_MAIL_SMTPUSER:
# LSMB_MAIL_SMTPPASS:
# LSMB_MAIL_SMTPAUTHMECH:
#
#
# 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
# having the dbdata volume is required to persist our
# data between PostgreSQL container updates; without
# that, the data is contained in the same volume as
# the rest of the image and on update/upgrade, the
# data will be lost.
volumes:
pgdata:
networks:
internal:

115
start.sh
View File

@@ -1,107 +1,48 @@
#!/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]
${LSMB_MAIL_SMTPHOST:+smtphost=$LSMB_MAIL_SMTPHOST sendmail = /usr/sbin/ssmtp
}${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
}
[proxy]
ip=${PROXY_IP:-172.17.0.1/12}
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) on error; it also has a positive effect on memory use # get restarted); it also has a positive effect on memory use
exec starman --port 5762 --preload-app tools/starman.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

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/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