mirror of
				https://github.com/ledgersmb/ledgersmb-docker.git
				synced 2025-10-22 12:10:31 -04:00 
			
		
		
		
	Compare commits
	
		
			41 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | fb16267a93 | ||
|  | fed8a29266 | ||
|  | 6ddc8da10d | ||
|  | b46592f2cb | ||
|  | 5717494020 | ||
|  | 6e529873ae | ||
|  | 13572ee685 | ||
|  | 2056ad56cb | ||
|  | 3658a14ccd | ||
|  | f114db8fcb | ||
|  | 2849671500 | ||
|  | bdebd44ae0 | ||
|  | c95e4b4b9d | ||
|  | 7c89b26987 | ||
|  | cd7f62abc6 | ||
|  | d518733d23 | ||
|  | 53c4e6ac92 | ||
|  | 78b902ddc9 | ||
|  | c1fee69d52 | ||
|  | 33d4019521 | ||
|  | 2a138c50f2 | ||
|  | 11baa4c0a0 | ||
|  | 7e914dbfd1 | ||
|  | 1a1d294e31 | ||
|  | 44b544c8ba | ||
|  | 5dc7176b3f | ||
|  | f25dee9473 | ||
|  | 0332a27535 | ||
|  | 19c6b2d6df | ||
|  | 6ff37dc952 | ||
|  | da234d021d | ||
|  | ffb7ff1a09 | ||
|  | 966c1fd043 | ||
|  | ba98f4c5c0 | ||
|  | 20bd26798a | ||
|  | f4bc2c874f | ||
|  | 0897045096 | ||
|  | 53ab84cbaa | ||
|  | 760c5c0138 | ||
|  | 8930ac395d | ||
|  | 1bbf65543b | 
							
								
								
									
										86
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										86
									
								
								Dockerfile
									
									
									
									
									
								
							| @@ -1,9 +1,53 @@ | |||||||
| FROM        debian:stretch-slim | # Build time variables | ||||||
|  |  | ||||||
|  | ARG SRCIMAGE=debian:stretch-slim | ||||||
|  |  | ||||||
|  |  | ||||||
|  | FROM  $SRCIMAGE AS builder | ||||||
|  |  | ||||||
|  | ARG LSMB_VERSION="1.7.37" | ||||||
|  | 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.7.9" | ARG LSMB_VERSION="1.7.37" | ||||||
| ARG LSMB_DL_DIR="Releases" | 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... | ||||||
| @@ -16,12 +60,11 @@ ARG LSMB_DL_DIR="Releases" | |||||||
| # 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 | ||||||
|  |  | ||||||
| # for Buster, add: |  | ||||||
| #    libhtml-escape-perl \ | COPY --from=builder /srv/derived-deps /tmp/derived-deps | ||||||
| #    libplack-middleware-builder-conditionals-perl \ |  | ||||||
| #    libplack-request-withencoding-perl \ | RUN set -x ; \ | ||||||
| #libversion-compare-perl |   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/ && \ | ||||||
|   mkdir -p /usr/share/man/man2/ && \ |   mkdir -p /usr/share/man/man2/ && \ | ||||||
|   mkdir -p /usr/share/man/man3/ && \ |   mkdir -p /usr/share/man/man3/ && \ | ||||||
| @@ -33,31 +76,10 @@ RUN echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >> | |||||||
|   DEBIAN_FRONTEND="noninteractive" apt-get dist-upgrade -y -q && \ |   DEBIAN_FRONTEND="noninteractive" apt-get dist-upgrade -y -q && \ | ||||||
|   DEBIAN_FRONTEND="noninteractive" apt-get -y -q install \ |   DEBIAN_FRONTEND="noninteractive" apt-get -y -q install \ | ||||||
|     wget ca-certificates gnupg \ |     wget ca-certificates gnupg \ | ||||||
|     libcgi-emulate-psgi-perl libconfig-inifiles-perl \ |     $( cat /tmp/derived-deps ) \ | ||||||
|     libdbd-pg-perl libdbi-perl libdata-uuid-perl libdatetime-perl \ |  | ||||||
|     libdatetime-format-strptime-perl \ |  | ||||||
|     libio-stringy-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 \ |  | ||||||
|     libplack-middleware-reverseproxy-perl \ |  | ||||||
|     libtemplate-perl libtext-csv-perl libtext-csv-xs-perl \ |  | ||||||
|     libtext-markdown-perl  libxml-simple-perl \ |  | ||||||
|     libnamespace-autoclean-perl \ |  | ||||||
|     libfile-find-rule-perl \ |  | ||||||
|     libtemplate-plugin-latex-perl libtex-encode-perl \ |  | ||||||
|     libclass-c3-xs-perl libclass-accessor-lite-perl \ |     libclass-c3-xs-perl libclass-accessor-lite-perl \ | ||||||
|     libnet-cidr-lite-perl \ |     texlive-latex-recommended texlive-fonts-recommended \ | ||||||
|     texlive-latex-recommended \ |  | ||||||
|     texlive-xetex fonts-liberation \ |     texlive-xetex fonts-liberation \ | ||||||
|     starman \ |  | ||||||
|     libopenoffice-oodoc-perl \ |  | ||||||
|     ssmtp \ |     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 && \ | ||||||
| @@ -65,7 +87,7 @@ RUN echo -n "APT::Install-Recommends \"0\";\nAPT::Install-Suggests \"0\";\n" >> | |||||||
|   DEBIAN_FRONTEND="noninteractive" apt-get -q -y update && \ |   DEBIAN_FRONTEND="noninteractive" apt-get -q -y update && \ | ||||||
|   DEBIAN_FRONTEND="noninteractive" apt-get -q -y install postgresql-client && \ |   DEBIAN_FRONTEND="noninteractive" apt-get -q -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/$LSMB_DL_DIR/$LSMB_VERSION/ledgersmb-$LSMB_VERSION.tar.gz" && \ |   wget --quiet -O /tmp/ledgersmb-$LSMB_VERSION.tar.gz "$ARTIFACT_LOCATION" && \ | ||||||
|   tar -xzf /tmp/ledgersmb-$LSMB_VERSION.tar.gz --directory /srv && \ |   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 --notest \ |   cpanm --notest \ | ||||||
|   | |||||||
							
								
								
									
										88
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										88
									
								
								README.md
									
									
									
									
									
								
							| @@ -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` - Preview version for the 1.8 branch | ||||||
| - `1.5`, `1.5.x` - Latest release tarball from 1.5 branch | - `1.7`, `1.7.x`, `latest` - 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,33 +40,45 @@ 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 | # How to use this image | ||||||
|  |  | ||||||
| The quickest way to get this image up and running is by using the | This image can be installed either automatically with the Docker compose file | ||||||
| `docker-compose` file available through the GitHub repository at: | or manually with docker only. | ||||||
|  |  | ||||||
|   https://github.com/ledgersmb/ledgersmb-docker/blob/1.7/docker-compose.yml | ## Docker-Compose installation and start | ||||||
|  |  | ||||||
| which sets up both this image and a supporting database image for | This image provides `docker-compose.yml` which can be used to pull related | ||||||
| production purposes (i.e. with persistent (database) data. The database | images, install them, establish an internal network for their communications, | ||||||
| username and password are: | adjust environment variables, start and stop LedgerSMB. The only instructions | ||||||
|  | required, after the optional edition of the file to adjust the environment | ||||||
|  | variables, are: | ||||||
|  |  | ||||||
|  | ```plain | ||||||
|  |  $ docker-compose pull | ||||||
|  |  $ docker-compose up | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | 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. | ||||||
|  |  | ||||||
|  | The database username and password are: | ||||||
|  |  | ||||||
| ```plain | ```plain | ||||||
|    username: postgres |    username: postgres | ||||||
|    password: abc |    password: abc | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| The docker-compose file does *not* set up an Nginx or Apache reverse proxy | From here, follow the steps as detailed in the instructions for | ||||||
| with TLS 1.2/1.3 support -- a requirement if you want to access your | [preparing for first use](https://ledgersmb.org/content/preparing-ledgersmb-17-first-use). | ||||||
| installation over any type of network (and especially the internet). |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Manual installation | ## Manual installation | ||||||
|  |  | ||||||
| This section assumes availability of a PostgreSQL server to attach to the | This section assumes availability of a PostgreSQL server to attach to the | ||||||
| LedgerSMB image as the database server. | LedgerSMB image as the database server. | ||||||
|  |  | ||||||
| ## Start LedgerSMB | ### Start LedgerSMB | ||||||
|  |  | ||||||
| ```plain | ```plain | ||||||
|  $ docker run -d -p 5762:5762 --name myledger \ |  $ docker run -d -p 5762:5762 --name myledger \ | ||||||
| @@ -74,7 +92,7 @@ http://localhost:5762/setup.pl and http://localhost:5762/login.pl. | |||||||
| Below are more variables which determine container configuration, | Below are more variables which determine container configuration, | ||||||
| like `POSTGRES_HOST` above. | 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 `abc` as given above - | ||||||
| @@ -130,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 | ||||||
| @@ -155,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 | ||||||
|   | |||||||
| @@ -32,14 +32,8 @@ services: | |||||||
|     networks: |     networks: | ||||||
|       - internal |       - internal | ||||||
|       - default |       - default | ||||||
|     # Uncomment the 'ports' section to map the LedgerSMB container port (5762) |     ports: | ||||||
|     #  to the host's port of the same number, thus making LedgerSMB |       - "127.0.0.1:5762:5762" | ||||||
|     #  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: |     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,6 +52,15 @@ services: | |||||||
|       # SSMTP_AUTH_METHOD: |       # SSMTP_AUTH_METHOD: | ||||||
|       # SSMTP_USE_STARTTLS: |       # SSMTP_USE_STARTTLS: | ||||||
|       # SSMTP_FROMLINE_OVERRIDE: |       # 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 | ||||||
|  |  | ||||||
| # 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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user