diff --git a/.idea/docker-osticket.iml b/.idea/docker-osticket.iml deleted file mode 100644 index c956989..0000000 --- a/.idea/docker-osticket.iml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index f758959..0000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index f5b876d..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml deleted file mode 100644 index 922003b..0000000 --- a/.idea/scopes/scope_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index a243610..b5a3a9d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,27 +1,13 @@ -# Deployment doesn't work on Alpine -FROM php:7.3-cli AS deployer -ENV OSTICKET_VERSION=1.14.3 -RUN set -x \ - && apt-get update \ - && apt-get install -y git-core \ - && git clone -b v${OSTICKET_VERSION} --depth 1 https://github.com/osTicket/osTicket.git \ - && cd osTicket \ - && php manage.php deploy -sv /data/upload \ - # www-data is uid:gid 82:82 in php:7.0-fpm-alpine - && chown -R 82:82 /data/upload \ - # Hide setup - && mv /data/upload/setup /data/upload/setup_hidden \ - && chown -R root:root /data/upload/setup_hidden \ - && chmod -R go= /data/upload/setup_hidden - FROM php:7.3-fpm-alpine MAINTAINER Martin Campbell # environment for osticket +ENV OSTICKET_VERSION=1.14.3 ENV HOME=/data -# setup workdir +ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so WORKDIR /data -COPY --from=deployer /data/upload upload RUN set -x && \ + # Fix iconv bug (empty body when mail encoded in quoted-printable) + apk add gnu-libiconv --update-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/community/ --allow-untrusted && \ # requirements and PHP extensions apk add --no-cache --update \ wget \ @@ -34,6 +20,7 @@ RUN set -x && \ openldap \ libintl \ libxml2 \ + libzip \ icu \ openssl && \ apk add --no-cache --virtual .build-deps \ @@ -43,34 +30,131 @@ RUN set -x && \ openldap-dev \ gettext-dev \ libxml2-dev \ + libzip-dev \ icu-dev \ autoconf \ g++ \ make \ - pcre-dev && \ - docker-php-ext-install gd curl ldap mysqli sockets gettext mbstring xml intl opcache && \ + pcre-dev \ + git && \ + docker-php-ext-install gd curl ldap mysqli sockets gettext mbstring xml intl opcache zip && \ docker-php-ext-configure imap --with-imap-ssl && \ docker-php-ext-install imap && \ pecl install apcu && docker-php-ext-enable apcu && \ - apk del .build-deps && \ - rm -rf /var/cache/apk/* && \ + git clone -b v${OSTICKET_VERSION} --depth 1 https://github.com/osTicket/osTicket.git && \ + ls -hal && \ + cd osTicket && \ + php manage.php deploy --setup --git /data/upload && \ + ls -hal /data/upload/ && \ + cd .. && \ + chown -R www-data:www-data /data/upload && \ + # Hide setup + mv /data/upload/setup /data/upload/setup_hidden && \ + chown -R root:root /data/upload/setup_hidden && \ + chmod -R go= /data/upload/setup_hidden && \ # Download languages packs - wget -nv -O upload/include/i18n/fr.phar https://s3.amazonaws.com/downloads.osticket.com/lang/fr.phar && \ - wget -nv -O upload/include/i18n/ar.phar https://s3.amazonaws.com/downloads.osticket.com/lang/ar.phar && \ - wget -nv -O upload/include/i18n/pt_BR.phar https://s3.amazonaws.com/downloads.osticket.com/lang/pt_BR.phar && \ - wget -nv -O upload/include/i18n/it.phar https://s3.amazonaws.com/downloads.osticket.com/lang/it.phar && \ - wget -nv -O upload/include/i18n/es_ES.phar https://s3.amazonaws.com/downloads.osticket.com/lang/es_ES.phar && \ - wget -nv -O upload/include/i18n/de.phar https://s3.amazonaws.com/downloads.osticket.com/lang/de.phar && \ + wget -nv -O upload/include/i18n/fr.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/fr.phar && \ + wget -nv -O upload/include/i18n/ar.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ar.phar && \ + wget -nv -O upload/include/i18n/pt_BR.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/pt_BR.phar && \ + wget -nv -O upload/include/i18n/it.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/it.phar && \ + wget -nv -O upload/include/i18n/es_ES.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/es_ES.phar && \ + wget -nv -O upload/include/i18n/de.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/de.phar && \ + wget -nv -O upload/include/i18n/sq.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/sq.phar && \ + wget -nv -O upload/include/i18n/ar_EG.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ar_EG.phar && \ + wget -nv -O upload/include/i18n/az.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/az.phar && \ + wget -nv -O upload/include/i18n/eu.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/eu.phar && \ + wget -nv -O upload/include/i18n/bn.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/bn.phar && \ + wget -nv -O upload/include/i18n/bs.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/bs.phar && \ + wget -nv -O upload/include/i18n/bg.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/bg.phar && \ + wget -nv -O upload/include/i18n/ca.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ca.phar && \ + wget -nv -O upload/include/i18n/zh_CN.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/zh_CN.phar && \ + wget -nv -O upload/include/i18n/zh_TW.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/zh_TW.phar && \ + wget -nv -O upload/include/i18n/hr.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/hr.phar && \ + wget -nv -O upload/include/i18n/cd.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/cs.phar && \ + wget -nv -O upload/include/i18n/da.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/da.phar && \ + wget -nv -O upload/include/i18n/nl.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/nl.phar && \ + wget -nv -O upload/include/i18n/en_GB.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/en_GB.phar && \ + wget -nv -O upload/include/i18n/et.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/et.phar && \ + wget -nv -O upload/include/i18n/fi.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/fi.phar && \ + wget -nv -O upload/include/i18n/gl.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/gl.phar && \ + wget -nv -O upload/include/i18n/ka.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ka.phar && \ + wget -nv -O upload/include/i18n/el.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/el.phar && \ + wget -nv -O upload/include/i18n/he.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/he.phar && \ + wget -nv -O upload/include/i18n/hi.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/hi.phar && \ + wget -nv -O upload/include/i18n/hu.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/hu.phar && \ + wget -nv -O upload/include/i18n/is.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/is.phar && \ + wget -nv -O upload/include/i18n/id.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/id.phar && \ + wget -nv -O upload/include/i18n/ja.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ja.phar && \ + wget -nv -O upload/include/i18n/km.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/km.phar && \ + wget -nv -O upload/include/i18n/ko.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ko.phar && \ + wget -nv -O upload/include/i18n/lv.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/lv.phar && \ + wget -nv -O upload/include/i18n/lt.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/lt.phar && \ + wget -nv -O upload/include/i18n/mk.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/mk.phar && \ + wget -nv -O upload/include/i18n/ms.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ms.phar && \ + wget -nv -O upload/include/i18n/mn.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/mn.phar && \ + wget -nv -O upload/include/i18n/no.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/no.phar && \ + wget -nv -O upload/include/i18n/fa.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/fa.phar && \ + wget -nv -O upload/include/i18n/pl.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/pl.phar && \ + wget -nv -O upload/include/i18n/ro.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ro.phar && \ + wget -nv -O upload/include/i18n/ru.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ru.phar && \ + wget -nv -O upload/include/i18n/sr.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/sr.phar && \ + wget -nv -O upload/include/i18n/sr_CS.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/sr_CS.phar && \ + wget -nv -O upload/include/i18n/sk.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/sk.phar && \ + wget -nv -O upload/include/i18n/sl.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/sl.phar && \ + wget -nv -O upload/include/i18n/es_AR.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/es_AR.phar && \ + wget -nv -O upload/include/i18n/es_MX.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/es_MX.phar && \ + wget -nv -O upload/include/i18n/sw.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/sw.phar && \ + wget -nv -O upload/include/i18n/sv_SE.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/sv_SE.phar && \ + wget -nv -O upload/include/i18n/th.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/th.phar && \ + wget -nv -O upload/include/i18n/tr.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/tr.phar && \ + wget -nv -O upload/include/i18n/uk.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/uk.phar && \ + wget -nv -O upload/include/i18n/ur_IN.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ur_IN.phar && \ + wget -nv -O upload/include/i18n/ur_PK.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/ur_PK.phar && \ + wget -nv -O upload/include/i18n/vi.phar https://s3.amazonaws.com/downloads.osticket.com/lang/1.14.x/vi.phar && \ mv upload/include/i18n upload/include/i18n.dist && \ - # Download LDAP plugin + # Download official plugins wget -nv -O upload/include/plugins/auth-ldap.phar https://s3.amazonaws.com/downloads.osticket.com/plugin/auth-ldap.phar && \ + wget -nv -O upload/include/plugins/auth-passthru.phar https://s3.amazonaws.com/downloads.osticket.com/plugin/auth-passthru.phar && \ + wget -nv -O upload/include/plugins/storage-fs.phar https://s3.amazonaws.com/downloads.osticket.com/plugin/storage-fs.phar && \ + wget -nv -O upload/include/plugins/storage-s3.phar https://s3.amazonaws.com/downloads.osticket.com/plugin/storage-s3.phar && \ + wget -nv -O upload/include/plugins/audit.phar https://s3.amazonaws.com/downloads.osticket.com/plugin/audit.phar && \ + # Download community plugins (https://forum.osticket.com/d/92286-resources-for-osticket) + ## Archiver + git clone https://github.com/clonemeagain/osticket-plugin-archiver upload/include/plugins/archiver && \ + ## Attachment Preview + git clone https://github.com/clonemeagain/attachment_preview upload/include/plugins/attachment-preview && \ + ## Auto Closer + git clone https://github.com/clonemeagain/plugin-autocloser upload/include/plugins/auto-closer && \ + ## Fetch Note + git clone https://github.com/bkonetzny/osticket-fetch-note upload/include/plugins/fetch-note && \ + ## Field Radio Buttons + git clone https://github.com/Micke1101/OSTicket-plugin-field-radiobuttons upload/include/plugins/field-radiobuttons && \ + ## Mentioner + git clone https://github.com/clonemeagain/osticket-plugin-mentioner upload/include/plugins/mentioner && \ + ## Multi LDAP Auth + git clone https://github.com/philbertphotos/osticket-multildap-auth upload/include/plugins/multi-ldap && \ + mv upload/include/plugins/multi-ldap/multi-ldap/* upload/include/plugins/multi-ldap/ && \ + rm -rf upload/include/plugins/multi-ldap/multi-ldap && \ + ## Prevent Autoscroll + git clone https://github.com/clonemeagain/osticket-plugin-preventautoscroll upload/include/plugins/prevent-autoscroll && \ + ## Rewriter + git clone https://github.com/clonemeagain/plugin-fwd-rewriter upload/include/plugins/rewriter && \ + ## Slack + git clone https://github.com/clonemeagain/osticket-slack upload/include/plugins/slack && \ + ## Teams (Microsoft) + git clone https://github.com/ipavlovi/osTicket-Microsoft-Teams-plugin upload/include/plugins/teams && \ # Create msmtp log touch /var/log/msmtp.log && \ chown www-data:www-data /var/log/msmtp.log && \ # File upload permissions mkdir -p /var/tmp/nginx && \ - chown nginx:www-data /var/tmp/nginx && chmod g+rx /var/tmp/nginx + chown nginx:www-data /var/tmp/nginx && chmod g+rx /var/tmp/nginx && \ + # Cleanup + rm -rf /data/osTicket && \ + find . \( -name ".git" -o -name ".gitignore" -o -name ".gitmodules" -o -name ".gitattributes" \) -exec rm -rf -- {} + && \ + rm -rf /var/cache/apk/* && \ + apk del .build-deps COPY files/ / VOLUME ["/data/upload/include/plugins","/data/upload/include/i18n","/var/log/nginx"] EXPOSE 80 -CMD ["/data/bin/start.sh"] +CMD ["/data/bin/start.sh"] \ No newline at end of file diff --git a/README.md b/README.md index 595faee..8acf3cd 100644 --- a/README.md +++ b/README.md @@ -7,14 +7,14 @@ Docker image for running version 1.14.3 of [OSTicket](http://osticket.com/). This image has been created from the original docker-osticket image by [Petter A. Helset](mailto:petter@helset.eu). -It has a few modifications: +# Features - * Documentation added, hurray! - * Base OS image fixed to Alpine Linux - * AJAX issues fixed that made original image unusable - * Now designed to work with a linked [MySQL](https://registry.hub.docker.com/u/library/mysql/) docker container. + * Based on Alpine Linux + * Works with linked [MySQL](https://registry.hub.docker.com/u/library/mysql/) docker container. * Automates configuration file & database installation * EMail support + * Support for docker secrets + * Comes with almost all available plugins and languages OSTicket is being served by [nginx](http://wiki.nginx.org/Main) using [PHP-FPM](http://php-fpm.org/) with PHP 7.2. PHP7's [mail](http://php.net/manual/en/function.mail.php) function is configured to use [msmtp](http://msmtp.sourceforge.net/) to send out-going messages. @@ -206,6 +206,14 @@ For example: `https://help.example.com/osticket`. Defaults to `http://localhost: This has no effect if the database has already been installed. In this case, you should change the Helpdesk URL in *System Settings and Preferences* in the admin control panel. +`LANGUAGE` + +Set the system language. Choose one of the following language codes. Default is `en_US`. + +`bg` `cd` `en_GB` `es_MX` `fi` `hi` `is` `km` `lv` `nl` `ro` `sq` `sw` `ur_IN` `zh_CN` `ar` `bn` `da` `en_US` `et` `fr` +`hr` `it` `ko` `mk` `no` `ru` `sr` `th` `ur_PK` `zh_TW` `ar_EG` `bs` `de` `es_AR` `eu` `gl` `hu` `ja` `mn` `pl` `sk` +`sr_CS` `tr` `az` `ca` `el` `es_ES` `fa` `he` `id` `ka` `lt` `ms` `pt_BR` `sl` `sv_SE` `uk` `vi` + ## Database Installation Only The remaining environmental variables can be used as a convenience to provide defaults during the automated database @@ -236,6 +244,17 @@ User name to use for automatically created administrative user. Defaults to 'ost Password to use for automatically created administrative user. Defaults to 'Admin1'. +# Docker secrets and passwords from files + +Instead of the environment variables with clear text passwords the following variables can be set to file paths inside +the container to load passwords from these: + +`MYSQL_PASSWORD_FILE`, `INSTALL_SECRET_FILE`, `ADMIN_PASSWORD_FILE`, `SMTP_PASSWORD_FILE` + +This allows docker secrets where passwords are mounted under `/run/secrets/mydockersecretname`. + +A working example with external docker secret for docker swarm can be found in `docker-compose-swarm.yml` in the github repo. + # Modifications This image was put together relatively quickly and could probably be improved to meet other use cases. diff --git a/docker-compose-swarm.yml b/docker-compose-swarm.yml new file mode 100644 index 0000000..54014e0 --- /dev/null +++ b/docker-compose-swarm.yml @@ -0,0 +1,74 @@ +# Docker stack example for a complete osticket with mysql server and docker secrets for testing purposes. +# DO NOT USE IN PRODUCTION WITHOUT MODIFICATION! +# +# Docker secrets needs swarm +# docker swarm init +# Create a secret with +# "printf "ThisIsADockerSecret" | docker secret create osticket.mysql_password -" +# Run as docker stack +# docker stack deploy --compose-file docker-compose.yml osticket +--- +version: "3.4" +services: + mariadb: + image: mariadb + secrets: + - osticket.mysql_root_password + - osticket.mysql_password + environment: + MYSQL_DATABASE: osticket + MYSQL_USER: osticket + # mariadb supports also docker secrets + MYSQL_PASSWORD_FILE: /run/secrets/osticket.mysql_password + MYSQL_ROOT_PASSWORD_FILE: /run/secrets/osticket.mysql_root_password +# MYSQL_PASSWORD: osticketsecret +# MYSQL_ROOT_PASSWORD: osticketsecret + networks: + - database + volumes: + - mysql_data:/var/lib/mysql + osticket: + image: rlieback/osticket + secrets: + - osticket.admin_password + - osticket.mysql_password + - osticket.install_secret + - osticket.smtp_password + environment: + ADMIN_USERNAME: ostadmin + MYSQL_HOST: mariadb + MYSQL_DATABASE: osticket + MYSQL_USER: osticket + # Change to en_US or comment out for default language + LANGUAGE: en_US + MYSQL_PASSWORD_FILE: /run/secrets/osticket.mysql_password + INSTALL_SECRET_FILE: /run/secrets/osticket.install_secret + ADMIN_PASSWORD_FILE: /run/secrets/osticket.admin_password + SMTP_PASSWORD_FILE: /run/secrets/osticket.smtp_password + # MYSQL_PASSWORD: osticket + # INSTALL_SECRET: mysecret897j98uemlrk09eums09duskd9jpsrds + # ADMIN_PASSWORD: admin + # SMTP_HOST: mymailserver.com + depends_on: + - mariadb + networks: + - database + ports: + - "8080:80" +networks: + database: + driver: overlay + attachable: true +volumes: + mysql_data: +secrets: + osticket.admin_password: + external: true + osticket.mysql_password: + external: true + osticket.mysql_root_password: + external: true + osticket.smtp_password: + external: true + osticket.install_secret: + external: true \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..af833a5 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,34 @@ +# Docker compose example for a complete osticket with mysql server and docker secrets for testing purposes. +# DO NOT USE IN PRODUCTION WITHOUT MODIFICATION! +# +--- +version: "3.4" +services: + mariadb: + image: mariadb + environment: + MYSQL_DATABASE: osticket + MYSQL_USER: osticket + MYSQL_PASSWORD: osticketsecret + MYSQL_ROOT_PASSWORD: osticketsecret + volumes: + - mysql_data:/var/lib/mysql + osticket: + image: rlieback/osticket + environment: + ADMIN_USERNAME: ostadmin + MYSQL_HOST: mariadb + MYSQL_DATABASE: osticket + MYSQL_USER: osticket + MYSQL_PASSWORD: osticketsecret + # Change to en_US or comment out for default language + LANGUAGE: en_US + INSTALL_SECRET: mysecret897j98uemlrk09eums09duskd9jpsrds + ADMIN_PASSWORD: osticketsecret + # SMTP_HOST: mymailserver.com + depends_on: + - mariadb + ports: + - "8080:80" +volumes: + mysql_data: \ No newline at end of file diff --git a/files/data/bin/install.php b/files/data/bin/install.php index c48bb96..60446ac 100644 --- a/files/data/bin/install.php +++ b/files/data/bin/install.php @@ -3,7 +3,7 @@ // Portions (C) 2006-2015 osTicket //Configure settings from environmental variables -$_SERVER['HTTP_ACCEPT_LANGUAGE'] = getenv("LANGUAGE") ?: "en-us"; +$_SERVER['HTTP_ACCEPT_LANGUAGE'] = getenv("LANG") ?: "en-us"; $vars = array( 'name' => getenv("INSTALL_NAME") ?: 'My Helpdesk', @@ -16,6 +16,7 @@ 'username' => getenv("ADMIN_USERNAME") ?: 'ostadmin', 'passwd' => getenv("ADMIN_PASSWORD") ?: 'Admin1', 'passwd2' => getenv("ADMIN_PASSWORD") ?: 'Admin1', + 'lang_id' => getenv("LANGUAGE") ?: 'en_US', 'prefix' => getenv("MYSQL_PREFIX") ?: 'ost_', 'dbhost' => getenv("MYSQL_HOST") ?: 'mysql', @@ -38,6 +39,36 @@ 'config' => getenv("INSTALL_CONFIG") ?: '/data/upload/include/ost-sampleconfig.php' ); +if ( getenv("ADMIN_PASSWORD_FILE") ) { + if ( file_exists(getenv("ADMIN_PASSWORD_FILE")) ) { + $vars['passwd'] = file_get_contents(getenv("ADMIN_PASSWORD_FILE")); + $vars['passwd2'] = file_get_contents(getenv("ADMIN_PASSWORD_FILE")); + } else { + err("Error: The file in ADMIN_PASSWORD_FILE doesn't exist!"); + } +} +if ( getenv("MYSQL_PASSWORD_FILE") ) { + if ( file_exists(getenv("MYSQL_PASSWORD_FILE")) ) { + $vars['dbpass'] = file_get_contents(getenv("MYSQL_PASSWORD_FILE")); + } else { + err("Error: The file in MYSQL_PASSWORD_FILE doesn't exist!"); + } +} +if ( getenv("SMTP_PASSWORD_FILE") ) { + if ( file_exists(getenv("SMTP_PASSWORD_FILE")) ) { + $vars['smtp_pass'] = file_get_contents(getenv("SMTP_PASSWORD_FILE")); + } else { + err("Error: The file in SMTP_PASSWORD_FILE doesn't exist!"); + } +} +if ( getenv("INSTALL_SECRET_FILE") ) { + if (file_exists(getenv("INSTALL_SECRET_FILE"))) { + $vars['siri'] = file_get_contents(getenv("INSTALL_SECRET_FILE")); + } else { + err("Error: The file in INSTALL_SECRET_FILE doesn't exist!"); + } +} + //Script settings define('CONNECTION_TIMEOUT_SEC', 180); @@ -117,8 +148,8 @@ function convertStrToBool($varName, $default) { if (!getenv("MYSQL_HOST")) { err('Missing required environmental variable MYSQL_HOST'); } - if (!getenv("MYSQL_PASSWORD")) { - err('Missing required environmental variable: MYSQL_PASSWORD'); + if (!getenv("MYSQL_PASSWORD") && !getenv("MYSQL_PASSWORD_FILE")) { + err('Missing required environmental variable: MYSQL_PASSWORD or MYSQL_PASSWORD_FILE'); } // Always set mysqli.default_port for osTicket db_connect diff --git a/files/data/supervisord.conf b/files/data/supervisord.conf index 92f060f..3ccd539 100644 --- a/files/data/supervisord.conf +++ b/files/data/supervisord.conf @@ -1,5 +1,6 @@ [supervisord] nodaemon=true +user=root [program:php-fpm] command=php-fpm -c $PHP_INI_DIR -y /usr/local/etc/php-fpm.conf diff --git a/files/etc/nginx/nginx.conf b/files/etc/nginx/nginx.conf index 1ee1f1a..9dce5f0 100644 --- a/files/etc/nginx/nginx.conf +++ b/files/etc/nginx/nginx.conf @@ -26,6 +26,9 @@ http { access_log /var/log/nginx/osticket-access.log; error_log /var/log/nginx/osticket-error.log error; + real_ip_header X-Forwarded-For; + set_real_ip_from 0.0.0.0/0; + charset utf-8; set $path_info "";