Update version 5.1.24

- adapt settings
- add php-imagick
This commit is contained in:
Niels Lippke 2021-12-28 15:39:29 +01:00
parent 92566cbb4d
commit b58529eafa
3 changed files with 260 additions and 63 deletions

View File

@ -1,6 +1,6 @@
FROM php:7.4-apache
LABEL maintainer="Niels Lippke<nlippke@gmx.de>"
ENV VER 5.1.23
ENV VER 5.1.24
ENV SEEDDMS_BASE=/var/www/seeddms \
SEEDDMS_HOME=/var/www/seeddms/seeddms
ENV PUBLIC_CERT=${SEEDDMS_BASE}/conf/cacert.pem \
@ -9,8 +9,11 @@ ENV PUBLIC_CERT=${SEEDDMS_BASE}/conf/cacert.pem \
FORCE_SSL=0
# Update and install necessary packages
RUN apt-get update && apt-get install --no-install-recommends gnumeric libpng-dev catdoc poppler-utils a2ps \
id3 docx2txt tesseract-ocr tesseract-ocr-deu ocrmypdf imagemagick vim parallel dos2unix cron rsync libzip-dev -y
RUN apt-get update && apt-get install --no-install-recommends gnumeric libpng-dev catdoc poppler-utils a2ps html2text \
id3 docx2txt tesseract-ocr tesseract-ocr-deu ocrmypdf imagemagick vim parallel dos2unix cron rsync libzip-dev \
libmagickwand-dev -y && rm -rf /var/lib/apt/lists/*
RUN printf "\n" | pecl install imagick
RUN docker-php-ext-enable imagick
RUN docker-php-ext-install gd mysqli pdo pdo_mysql zip && \
pear channel-update pear.php.net && pear install Log
@ -18,7 +21,7 @@ RUN docker-php-ext-install gd mysqli pdo pdo_mysql zip && \
RUN curl -fsSL https://downloads.sourceforge.net/project/seeddms/seeddms-${VER}/seeddms-quickstart-${VER}.tar.gz | tar -xzC /var/www
RUN mv /var/www/seeddms51x /var/www/seeddms && mkdir /var/www/seeddms/backup && mkdir -p /var/www/seeddms/import/admin && \
mv /var/www/seeddms/conf /var/www/seeddms/data/conf && ln -s /var/www/seeddms/data/conf /var/www/seeddms/conf && \
touch /var/www/seeddms/conf/ENABLE_INSTALL_TOOL
mkdir $SEEDDMS_HOME/ext && touch /var/www/seeddms/conf/ENABLE_INSTALL_TOOL
# Copy settings-files
COPY sources/php.ini /usr/local/etc/php/

View File

@ -7,7 +7,7 @@ Cron is also included to handle jobs internally (backup, index, ...).
## How to run
`docker run --name seeddms -d -v dms-data:/var/www/seeddms/data -p 8080:80 nlippke/seeddms:5.1.23`
`docker run --name seeddms -d -v dms-data:/var/www/seeddms/data -p 8080:80 nlippke/seeddms:5.1.24`
or as compose file
@ -16,7 +16,7 @@ version: '2'
services:
dms:
image: nlippke/seeddms:5.1.23
image: nlippke/seeddms:5.1.24
ports:
- "8080:80"
- "8443:443"

View File

@ -7,11 +7,29 @@
- language: default language (name of a subfolder in folder "languages")
- theme: default style (name of a subfolder in folder "styles")
-->
<display siteName="SeedDMS" footNote="" printDisclaimer="false" language="de_DE" theme="bootstrap" previewWidthList="40" previewWidthDetail="100" availablelanguages="" showFullPreview="true" convertToPdf="true" previewWidthMenuList="40" previewWidthDropFolderList="100" maxItemsPerPage="0" incItemsPerPage="0" onePageMode="true" dateformat="" datetimeformat="" overrideTheme="false">
<display
siteName="SeedDMS"
footNote=""
printDisclaimer="false"
language="de_DE"
theme="bootstrap"
previewWidthList="40"
previewWidthDetail="100"
availablelanguages=""
showFullPreview="true"
convertToPdf="true"
previewWidthMenuList="40"
previewWidthDropFolderList="100"
maxItemsPerPage="0"
incItemsPerPage="0"
onePageMode="true"
dateformat=""
datetimeformat=""
overrideTheme="false">
</display>
<!-- strictFormCheck: Strict form checking. If set to true, then all fields in the form will be checked for a value. If set to false, then (most) comments and keyword fields become optional. Comments are always required when submitting a review or overriding document status.
- viewOnlineFileTypes: files with one of the following endings can be viewed online (USE ONLY LOWER CASE CHARACTERS)
- enableConverting: enable/disable converting of files
- enableConverting: enable/disable converting of files (deprecated)
- enableEmail: enable/disable automatic email notification
- enableUsersView: enable/disable group and user view for all users
- enableFullSearch: false to don't use fulltext search
@ -23,23 +41,65 @@
- 2 to start with tree shown fully expanded
- stopWordsFile: path to stop word file for indexer
- sortUsersInList: how to sort users in lists ('fullname' or '' (default))
-->
<edition strictFormCheck="false" viewOnlineFileTypes=".txt;.text;.html;.htm;.xml;.pdf;.gif;.png;.jpg;.jpeg" enableConverting="true" enableEmail="false" enableUsersView="true" enableFullSearch="true" enableClipboard="true" enableFolderTree="true" expandFolderTree="1" enableLanguageSelector="true" stopWordsFile="/var/www/seeddms/data/conf/stopwords.txt" sortUsersInList="" enableDropUpload="true" enableRecursiveCount="false" maxRecursiveCount="0" enableThemeSelector="false" fullSearchEngine="sqlitefts" sortFoldersDefault="u" editOnlineFileTypes=".txt;.text" enableMenuTasks="false" enableHelp="false" defaultSearchMethod="fulltext" libraryFolder="0" maxSizeForFullText="0" showSingleSearchHit="false" enableSessionList="false" enableDropFolderList="true" enableMultiUpload="true" defaultDocPosition="end" noDocumentFormFields="" inlineEditing="false">
- enableDropUpload: enable/disable uploading files by drag&drop
- enableRecursiveCount: enable/disable counting docs and folder recursively
- maxRecursiveCount: after this number of docs/folders precise counting will stop
- enableThemeSelector: enable/disable the theme selector on the login page
- fullSearchEngine: Either "lucene" or "sqlitefts"
- sortFoldersDefault: how to sort forders by default. u=unsorted, s=sequence, n=name
- defaultDocPosition: Default position for a new document. 'start', 'end', or ''
- defaultFolderPosition: Default position for a new folder. 'start', 'end', or ''
-->
<edition
strictFormCheck="false"
viewOnlineFileTypes=".txt;.text;.html;.htm;.xml;.pdf;.gif;.png;.jpg;.jpeg"
enableConverting="true"
enableEmail="false"
enableUsersView="true"
enableFullSearch="true"
enableClipboard="true"
enableFolderTree="true"
expandFolderTree="1"
enableLanguageSelector="true"
stopWordsFile="/var/www/seeddms/data/conf/stopwords.txt"
sortUsersInList=""
enableDropUpload="true"
enableRecursiveCount="false"
maxRecursiveCount="0"
enableThemeSelector="false"
fullSearchEngine="sqlitefts"
sortFoldersDefault="u"
editOnlineFileTypes=".txt;.text"
enableMenuTasks="false"
enableHelp="false"
defaultSearchMethod="fulltext"
libraryFolder="0"
maxSizeForFullText="0"
showSingleSearchHit="false"
enableSessionList="false"
enableDropFolderList="true"
enableMultiUpload="true"
defaultDocPosition="end"
noDocumentFormFields=""
inlineEditing="false">
</edition>
<!-- enableCalendar: enable/disable calendar
- calendarDefaultView: calendar default view ("w" for week,"m" for month,"y" for year)
- firstDayOfWeek: first day of the week (0=sunday, 6=saturday)
-->
<calendar enableCalendar="false" calendarDefaultView="y" firstDayOfWeek="0">
</calendar>
<webdav enableWebdavReplaceDoc="true"/></site>
<calendar
enableCalendar="false"
calendarDefaultView="y"
firstDayOfWeek="0" />
<webdav enableWebdavReplaceDoc="true"/>
</site>
<system>
<!-- rootDir: Path to where SeedDMS is located
- httpRoot: The relative path in the URL, after the domain part. Do not include the
- http:// prefix or the web host name. e.g. If the full URL is
- http://www.example.com/seeddms/, set $_httpRoot = "/seeddms/".
- If the URL is http://www.example.com/, set $_httpRoot = "/".
- http://www.example.com/seeddms/, set $_httpRoot = "/seeddms/".
- If the URL is http://www.example.com/, set $_httpRoot = "/".
- contentDir: Where the uploaded files are stored (best to choose a directory that
- is not accessible through your web-server)
- stagingDir: Where partial file uploads are saved
@ -47,27 +107,69 @@
- logFileEnable: set false to disable log system
- logFileRotation: the log file rotation (h=hourly, d=daily, m=monthly)
- enableLargeFileUpload: support for jumploader
- partitionsize: size of chunk uploaded by jumploader
- partitionSize: size of chunk uploaded by jumploader
- dropFolderDir: where files for document upload are located
- cacheDir: where the preview images are saved
- backupDir: where the backups are saved
-->
<server rootDir="/var/www/seeddms/seeddms/" httpRoot="/" contentDir="/var/www/seeddms/data/" stagingDir="/var/www/seeddms/data/staging/" luceneDir="/var/www/seeddms/data/lucene/" logFileEnable="true" logFileRotation="d" enableLargeFileUpload="false" partitionSize="2000000" cacheDir="/var/www/seeddms/data/cache/" dropFolderDir="/var/www/seeddms/import/" backupDir="/var/www/seeddms/backup/" checkOutDir="" createCheckOutDir="false" repositoryUrl="https://repository.seeddms.org/dd278323b03fd2aa5510b8fa9addf5ea/" maxUploadSize="" enableXsendfile="false" proxyUrl="" proxyUser="" proxyPassword="">
<server
rootDir="/var/www/seeddms/seeddms/"
httpRoot="/"
contentDir="/var/www/seeddms/data/"
stagingDir="/var/www/seeddms/data/staging/"
luceneDir="/var/www/seeddms/data/lucene/"
logFileEnable="true"
logFileRotation="d"
enableLargeFileUpload="false"
partitionSize="2000000"
cacheDir="/var/www/seeddms/data/cache/"
dropFolderDir="/var/www/seeddms/import/"
backupDir="/var/www/seeddms/backup/"
checkOutDir=""
createCheckOutDir="false"
repositoryUrl="https://repository.seeddms.org/dd278323b03fd2aa5510b8fa9addf5ea/"
maxUploadSize=""
enableXsendfile="false"
proxyUrl=""
proxyUser=""
proxyPassword="">
</server>
<!-- enableGuestLogin: If you want anybody to login as guest, set the following line to true
- note: guest login should be used only in a trusted environment
- enablePasswordForgotten: Allow users to reset their password
- enablePasswordForgotten: Allow users to reset their password
- restricted: Restricted access: only allow users to log in if they have an entry in the local database (irrespective of successful authentication with LDAP).
- enableUserImage: enable users images
- disableSelfEdit: if true user cannot edit his own profile
- passwordStrength: minimum strength of password, set to 0 to disable
- passwordExpiration: number of days after password expires
- passwordHistory: number of remembered passwords
- passwordStrengthAlgorithm: algorithm used to calculate password strenght (simple or advanced)
- encryptionKey: arbitrary string used for creating identifiers
-->
<authentication enableGuestLogin="false" enablePasswordForgotten="true" restricted="true" enableUserImage="true" disableSelfEdit="false" passwordStrength="0" passwordStrengthAlgorithm="simple" passwordExpiration="10" passwordHistory="0" loginFailure="0" autoLoginUser="0" quota="0" undelUserIds="" encryptionKey="cfecb42d13f2e1666cddde56991a2cbf" cookieLifetime="0" enableGuestAutoLogin="false" defaultAccessDocs="0">
- passwordStrength: minimum strength of password, set to 0 to disable
- passwordStrengthAlgorithm: algorithm used to calculate password strenght (simple or advanced)
- passwordExpiration: number of days after password expires
- passwordHistory: number of remembered passwords
- loginFailure: maximum allowed login failures before an account is disabled
- autoLoginUser: id of user used if auto login is turned on
- quota: maximum allowed space on disc for each user
- undelUserIds: ids of users which cannot be deleted
- encryptionKey: arbitrary string used for creating form tokens
- cookieLifetime: lifetime of cookie in seconds, set to 0 for session cookies
-->
<authentication
enableGuestLogin="false"
enablePasswordForgotten="true"
restricted="true"
enableUserImage="true"
disableSelfEdit="false"
passwordStrength="0"
passwordStrengthAlgorithm="simple"
passwordExpiration="10"
passwordHistory="0"
loginFailure="0"
autoLoginUser="0"
quota="0"
undelUserIds=""
encryptionKey="cfecb42d13f2e1666cddde56991a2cbf"
cookieLifetime="0"
enableGuestAutoLogin="false"
defaultAccessDocs="0">
<connectors>
<!-- ***** CONNECTOR LDAP *****
- enable: enable/disable connector
@ -76,8 +178,19 @@
- URIs are supported, e.g.: ldaps://ldap.host.com
- port: port of the authentification server
- baseDN: top level of the LDAP directory tree
-->
<connector enable="false" type="ldap" host="ldaps://ldap.host.com" port="389" baseDN="" bindDN="" bindPw="">
- bindDN: use this dn for a first step bind, leave empty for annonymous bind
- bindPw: use this password for a first step bind
- filter: Additional filters which are to be checked
-->
<connector
enable="false"
type="ldap"
host="ldaps://ldap.host.com"
port="389"
baseDN=""
bindDN=""
bindPw=""
filter = "">
</connector>
<!-- ***** CONNECTOR Microsoft Active Directory *****
- enable: enable/disable connector
@ -85,9 +198,20 @@
- host: hostname of the authentification server
- port: port of the authentification server
- baseDN: top level of the LDAP directory tree
- bindDN: use this dn for a first step bind, leave empty for annonymous bind
- bindPw: use this password for a first step bind
- filter: Additional filters which are to be checked
- accountDomainName: sample: example.com
-->
<connector enable="false" type="AD" host="ldap.example.com" port="389" baseDN="" accountDomainName="example.com" bindDN="" bindPw="">
<connector
enable="false"
type="AD"
host="ldap.example.com"
port="389"
baseDN=""
accountDomainName="example.com"
bindDN=""
bindPw="">
</connector>
</connectors>
</authentication>
@ -97,29 +221,54 @@
- dbDatabase: database where the tables for seeddms are stored (optional - see adodb-readme)
- dbUser: username for database-access
- dbPass: password for database-access
-->
<database dbDriver="sqlite" dbHostname="localhost" dbDatabase="/var/www/seeddms/data/content.db" dbUser="seeddms" dbPass="seeddms" doNotCheckVersion="false">
- doNotCheckVersion: Whether or not to check the database schema for its correct version.
-->
<database
dbDriver="sqlite"
dbHostname="localhost"
dbDatabase="/var/www/seeddms/data/content.db"
dbUser="seeddms"
dbPass="seeddms"
doNotCheckVersion="false">
</database>
<!-- smtpServer: SMTP Server hostname
- smtpPort: SMTP Server port
- smtpSendFrom: Send from
-->
<smtp smtpServer="localhost" smtpPort="25" smtpSendFrom="seeddms@localhost" smtpUser="" smtpPassword=""/>
- smtpUser: user name used for authenticating against smtp server
- smtpPassword: password used for authenticating against smtp server
-->
<smtp
smtpServer="localhost"
smtpPort="25"
smtpSendFrom="seeddms@localhost"
smtpUser=""
smtpPassword=""/>
</system>
<advanced>
<!-- siteDefaultPage: Default page on login. Defaults to out/out.ViewFolder.php
<!--
-siteDefaultPage: Default page on login. Defaults to out/out.ViewFolder.php
- rootFolderID: ID of root-folder (mostly no need to change)
- titleDisplayHack: Workaround for page titles that go over more than 2 lines.
-->
<display siteDefaultPage="" rootFolderID="1" titleDisplayHack="true" showMissingTranslations="false" useHomeAsRootFolder="false">
- showMissingTranslations: set true if missing translation shall be listed at end of page
-->
<display
siteDefaultPage=""
rootFolderID="1"
titleDisplayHack="true"
showMissingTranslations="false"
useHomeAsRootFolder="false">
</display>
<!-- guestID: ID of guest-user used when logged in as guest (mostly no need to change)
- adminIP: if enabled admin can login only by specified IP addres, leave empty to avoid the control
- NOTE: works only with local autentication (no LDAP)
-->
<authentication guestID="2" adminIP="" apiKey="" apiUserId="0" apiOrigin="">
<authentication
guestID="2"
adminIP=""
apiKey=""
apiUserId="0"
apiOrigin="">
</authentication>
<!-- enableAdminRevApp: false to don't list administrator as reviewer/approver
- versioningFileName: the name of the versioning info file created by the backup tool
@ -127,41 +276,86 @@
- enableVersionDeletion: allow to delete versions after approval
- enableVersionModification: allow to modify versions after approval
- enableDuplicateDocNames: allow duplicate names in a folder
-->
<edition enableAdminRevApp="false" versioningFileName="versioning_info.txt" workflowMode="traditional_only_approval" enableVersionDeletion="true" enableVersionModification="true" enableDuplicateDocNames="true" enableOwnerRevApp="false" enableSelfRevApp="false" presetExpirationDate="" overrideMimeType="false" initialDocumentStatus="0" enableAcknowledgeWorkflow="" enableRevisionWorkflow="" advancedAcl="false" enableUpdateRevApp="false" removeFromDropFolder="false" allowReviewerOnly="false" enableDuplicateSubFolderNames="false" enableRemoveRevApp="false">
- enableDuplicateSubFolderNames: allow duplicate names in a folder
- enableOwnerRevApp: allow owner of a document to review and approve
- enableSelfRevApp: allow the user current logged in to add herself as a reviewer or approver
- presetExpirationDate: set to time period if each document shall expire
- overrideMimeType: set to true if the mimetype of a document version is determined by the server
-->
<edition
enableAdminRevApp="false"
versioningFileName="versioning_info.txt"
workflowMode="traditional_only_approval"
enableVersionDeletion="true"
enableVersionModification="true"
enableDuplicateDocNames="true"
enableOwnerRevApp="false"
enableSelfRevApp="false"
presetExpirationDate=""
overrideMimeType="false"
initialDocumentStatus="0"
enableAcknowledgeWorkflow=""
enableRevisionWorkflow=""
advancedAcl="false"
enableUpdateRevApp="false"
removeFromDropFolder="false"
allowReviewerOnly="false"
enableDuplicateSubFolderNames="false"
enableRemoveRevApp="false">
</edition>
<!-- enableNotificationAppRev: true to send notifation if a user is added as a reviewer or approver
-->
<notification enableNotificationAppRev="true" enableOwnerNotification="false" enableNotificationWorkflow="false">
<notification
enableNotificationAppRev="true"
enableOwnerNotification="false"
enableNotificationWorkflow="false">
</notification>
<!-- coreDir: Path to SeedDMS_Core (optional)
- luceneClassDir: Path to SeedDMS_Lucene (optional)
- contentOffsetDir: To work around limitations in the underlying file system, a new
- directory structure has been devised that exists within the content
- directory ($_contentDir). This requires a base directory from which
- to begin. Usually leave this to the default setting, 1048576, but can
- be any number or string that does not already exist within $_contentDir.
- maxDirID: Maximum number of sub-directories per parent directory. Default: 0, use 31998 (maximum number of dirs in ext3) for a multi level content directory.
- contentOffsetDir: To work around limitations in the underlying file system, a new
- directory structure has been devised that exists within the content
- directory ($_contentDir). This requires a base directory from which
- to begin. Usually leave this to the default setting, 1048576, but can
- be any number or string that does not already exist within $_contentDir.
- maxDirID: Maximum number of sub-directories per parent directory. Default: 0.
- updateNotifyTime: users are notified about document-changes that took place within the last "updateNotifyTime" seconds
- extraPath: Path to addtional software. This is the directory containing additional software like the adodb directory, or the pear Log package. This path will be added to the php include path
- extraPath: additional path which is added to php's include path
- maxExecutionTime: maximum script execution time, this cannot be larger than the value set in php.ini
- cmdTimeout: timeout in sec. for external commands
-->
<server coreDir="" luceneClassDir="" contentOffsetDir="1048576" maxDirID="0" updateNotifyTime="86400" extraPath="/var/www/seeddms/pear/" maxExecutionTime="30" cmdTimeout="30" enableDebugMode="false">
<server
coreDir=""
luceneClassDir=""
contentOffsetDir="1048576"
maxDirID="0"
updateNotifyTime="86400"
extraPath="/var/www/seeddms/pear/"
maxExecutionTime="30"
cmdTimeout="30"
enableDebugMode="false">
</server>
<converters target="fulltext">
<converter mimeType="application/pdf">ocrmypdf.sh %s</converter>
<converter mimeType="application/msword">catdoc %s</converter>
<converter mimeType="application/vnd.ms-excel">ssconvert -T Gnumeric_stf:stf_csv -S %s fd://1</converter>
<converter mimeType="audio/mp3">id3 -l -R %s | egrep '(Title|Artist|Album)' | sed 's/^[^:]*: //g'</converter>
<converter mimeType="audio/mpeg">id3 -l -R %s | egrep '(Title|Artist|Album)' | sed 's/^[^:]*: //g'</converter>
<converter mimeType="text/plain">cat %s</converter>
<converter mimeType="text/xml">cat %s</converter>
<converter mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">xlsx2csv %s</converter><converter mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document">docx2txt %s -</converter><converter mimeType="image/jpeg">tesseract %s - -l deu --psm 3 --oem 3 2&gt; /dev/null | tr '\n' ' '</converter></converters>
<converter mimeType="application/pdf">ocrmypdf.sh %s</converter>
<converter mimeType="application/msword">catdoc %s</converter>
<converter mimeType="application/vnd.ms-excel">ssconvert -T Gnumeric_stf:stf_csv -S %s fd://1</converter>
<converter mimeType="audio/mp3">id3 -l -R %s | egrep '(Title|Artist|Album)' | sed 's/^[^:]*: //g'</converter>
<converter mimeType="audio/mpeg">id3 -l -R %s | egrep '(Title|Artist|Album)' | sed 's/^[^:]*: //g'</converter>
<converter mimeType="text/plain">cat %s</converter>
<converter mimeType="text/xml">cat %s</converter>
<converter mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">xlsx2csv %s</converter>
<converter mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document">docx2txt %s -</converter>
<converter mimeType="image/jpeg">tesseract %s - -l deu --psm 3 --oem 3 2&gt; /dev/null | tr '\n' ' '</converter>
</converters>
<converters target="preview">
<converter mimeType="image/*">convert -resize %wx '%f' '%o'</converter>
<converter mimeType="application/pdf">convert -density 100 -resize %wx '%f[0]' '%o'</converter>
<converter mimeType="application/postscript">convert -density 100 -resize %wx '%f[0]' '%o'</converter>
<converter mimeType="text/*">a2ps -1 -a1 -R -B -o - '%f' | gs -dBATCH -dNOPAUSE -sDEVICE=pngalpha -dFirstPage=1 -dLastPage=1 -dPDFFitPage -r72x72 -sOutputFile=- -q - | convert -resize %wx png:- '%o'</converter>
</converters></advanced>
<converters target="preview">
<converter mimeType="image/*">convert -resize %wx '%f' '%o'</converter>
<converter mimeType="application/pdf">convert -density 100 -resize %wx '%f[0]' '%o'</converter>
<converter mimeType="application/postscript">convert -density 100 -resize %wx '%f[0]' '%o'</converter>
<converter mimeType="text/*">a2ps -1 -a1 -R -B -o - '%f' | gs -dBATCH -dNOPAUSE -sDEVICE=pngalpha -dFirstPage=1 -dLastPage=1 -dPDFFitPage -r72x72 -sOutputFile=- -q - | convert -resize %wx png:- '%o'</converter>
</converters>
</advanced>
<extensions><extension name="example"/></extensions></configuration>
<extensions>
<extension name="example"/>
</extensions>
</configuration>