fieat: sube versión de Koha

This commit is contained in:
aitor c. urrutia aranburu committed 2026-06-29 19:26:08 +02:00
1 parent 8124ef30ca
commit 397e816221
57 files changed
+462 -14

No files matched your search

+59
View File
@@ -0,0 +1,59 @@
FROM debian:bookworm
ENV DEBIAN_FRONTEND=noninteractive
ARG S6_OVERLAY_VERSION=3.2.0.2
ARG KOHA_VERSION=26.05
ARG TARGETARCH
LABEL org.opencontainers.image.source=https://github.com/teorgamm/koha-docker
RUN apt-get update \
&& apt-get install -y \
wget \
apache2 \
gnupg2 \
apt-transport-https \
xz-utils \
&& rm -rf /var/cache/apt/archives/* \
&& rm -rf /var/lib/apt/lists/*
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp
RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz
RUN echo ${TARGETARCH} && case ${TARGETARCH} in \
"amd64") S6_ARCH=x86_64 ;; \
"arm64") S6_ARCH=aarch64 ;; \
"arm") S6_ARCH=armhf ;; \
esac \
&& wget -P /tmp/ -q https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_ARCH}.tar.xz \
&& tar -C / -Jxpf /tmp/s6-overlay-${S6_ARCH}.tar.xz
RUN mkdir -p /etc/apt/keyrings/ && \
wget -qO - https://debian.koha-community.org/koha/gpg.asc | gpg --dearmor -o /etc/apt/keyrings/koha.gpg && \
echo "deb [signed-by=/etc/apt/keyrings/koha.gpg] https://debian.koha-community.org/koha ${KOHA_VERSION} main bullseye" | tee /etc/apt/sources.list.d/koha.list
# Install Koha
RUN apt-get update \
&& apt-get install -y koha-core \
idzebra-2.0 \
apache2 libapache2-mpm-itk\
logrotate \
&& rm -rf /var/cache/apt/archives/* \
&& rm -rf /var/lib/apt/lists/*
RUN a2enmod rewrite \
&& a2enmod headers \
&& a2enmod proxy_http \
&& a2enmod cgi \
&& a2dissite 000-default \
&& echo "Listen 8081\nListen 8080" > /etc/apache2/ports.conf \
&& sed -E -i "s#^(export APACHE_LOG_DIR=).*#\1/var/log/koha/apache#g" /etc/apache2/envvars \
&& mkdir -p /var/log/koha/apache \
&& chown -R www-data:www-data /var/log/koha/apache
COPY --chown=0:0 files/ /
WORKDIR /docker
EXPOSE 2100 6001 8080 8081
CMD [ "/init" ]
+60
View File
@@ -0,0 +1,60 @@
<acsconfig xmlns="http://openncip.org/acs-config/1.0/">
<!-- above address gets nothing, it's just a namespace -->
<error-detect enabled="true" />
<!--
Set Net::Server::PreFork runtime parameters
syslog_ident will identify SIP2 Koha server entries in syslog
For OpenSolaris, add: syslog_logsock=stream
-->
<server-params
min_servers='1'
min_spare_servers='0'
log_file='Sys::Syslog'
syslog_ident='koha_sip'
syslog_facility='local6'
/>
<listeners>
<!-- vestigial HTTP, never implemented: just use the OPAC!
<service
port="0:8080/tcp"
transport="http"
protocol="NCIP/1.0" />
-->
<service
port="8023/tcp"
transport="telnet"
protocol="SIP/2.00"
timeout="60" />
<service
port="127.0.0.1:6001/tcp"
transport="RAW"
protocol="SIP/2.00"
client_timeout="600"
timeout="60" />
<!--- client_timeout times out active connections which have not received
input from the client. Many persistent connections will send a status request
every 5-7 mins so setting this to less than that will add instability to the connection
if explicitly set to zero, no timeout is applied to the connection.
NB the parameter timeout applies to the login process only and should be set to a lower value
to time out failed connections
-->
</listeners>
<accounts>
${SIP_CONF_ACCOUNTS}
</accounts>
<!--
Institution tags are for enabled branches. There needs to be one
institution stanza for each institution named in the accounts above.
The implementation attribute is actually used to find the code to run,
in our case "ILS".
-->
<institutions>
${SIP_CONF_LIBS}
</institutions>
</acsconfig>
@@ -0,0 +1,4 @@
[client]
host = ${MYSQL_SERVER}
user = root
password = ${MYSQL_PASSWORD}
@@ -0,0 +1,61 @@
# NOTE: for a complete list of valid options please read koha-create(8)
## Apache virtual hosts creation variables
#
# Please note that the URLs are built like this:
# OPAC: http://<OPACPREFIX><INSTANCE NAME><OPACSUFFIX><DOMAIN>:<OPACPORT>
# STAFF: http://<INTRAPREFIX><INSTANCE NAME><INTRASUFFIX><DOMAIN>:<INTRAPORT>
DOMAIN="${KOHA_DOMAIN}"
INTRAPORT="${KOHA_INTRANET_PORT}"
INTRAPREFIX="${KOHA_INTRANET_PREFIX}"
INTRASUFFIX="${KOHA_INTRANET_SUFFIX}"
OPACPORT="${KOHA_OPAC_PORT}"
OPACPREFIX="${KOHA_OPAC_PREFIX}"
OPACSUFFIX="${KOHA_OPAC_SUFFIX}"
## Default data to be loaded
#
# DEFAULTSQL: filename
# Specify an SQL file with default data to load during instance creation
# default: (empty)
DEFAULTSQL=""
## Zebra global configuration variables
#
# ZEBRA_MARC_FORMAT: 'marc21' | 'normarc' | 'unimarc'
# Specifies the MARC records format for indexing
# default: 'marc21'
ZEBRA_MARC_FORMAT="${ZEBRA_MARC_FORMAT}"
# ZEBRA_LANGUAGE: 'cs' | 'en' | 'es' | 'fr' | 'nb' | 'ru' | 'uk'
# Primary language for Zebra indexing
# default: 'en'
ZEBRA_LANGUAGE="${ZEBRA_LANGUAGE}"
# BIBLIOS_INDEXING_MODE: 'dom' | 'grs1'
# Indexing mode for bibliographic records
# default: 'dom'
BIBLIOS_INDEXING_MODE="${BIBLIOS_INDEXING_MODE}"
# AUTHORITIES_INDEXING_MODE: 'dom' | 'grs1'
# Indexing mode for authority records
# default: 'dom'
AUTHORITIES_INDEXING_MODE="${AUTHORITIES_INDEXING_MODE}"
## Memcached global configuration variables
#
# USE_MEMCACHED: 'yes' | 'no'
# Make the created instance use memcached. Can be altered later.
# default: 'no'
USE_MEMCACHED="${USE_MEMCACHED}"
# MEMCACHED_SERVERS: comma separated list of memcached servers (ip:port)
# Specify a list of memcached servers for the Koha instance
# default: '127.0.0.1:11211'
MEMCACHED_SERVERS="${MEMCACHED_SERVERS}"
# MEMCACHED_PREFIX:
# Specify a string to be used as prefix for defining the memcached namespace
# for the created instance.
# default: 'koha_'
MEMCACHED_PREFIX="koha_"
+12
View File
@@ -0,0 +1,12 @@
# /etc/cron.d/koha-common
#
# Call koha-rebuild-zebra for each enabled Koha instance, to make sure the
# Zebra indexes are up to date.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Uncomment the following line if you do not want to use the koha-index-daemon integration
# */5 * * * * root test -x /usr/sbin/koha-rebuild-zebra && koha-rebuild-zebra -q $(koha-list --enabled)
*/15 * * * * root koha-foreach --chdir --enabled --email /usr/share/koha/bin/cronjobs/process_message_queue.pl
+33
View File
@@ -0,0 +1,33 @@
#!/bin/sh
# /etc/cron.daily/koha-common -- Daily housekeeping tasks for all Kohas.
# Copyright 2010 Catalyst IT, Ltd
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
koha-foreach --chdir --enabled /usr/share/koha/bin/cronjobs/automatic_renewals.pl -c
koha-foreach --chdir --enabled /usr/share/koha/bin/cronjobs/automatic_checkin.pl
koha-foreach --chdir --enabled /usr/share/koha/bin/cronjobs/recalls/expire_recalls.pl
koha-foreach --chdir --enabled /usr/share/koha/bin/cronjobs/recalls/overdue_recalls.pl
koha-foreach --chdir --enabled /usr/share/koha/bin/cronjobs/fines.pl
koha-foreach --chdir --enabled --email /usr/share/koha/bin/cronjobs/overdue_notices.pl -t
koha-foreach --chdir --enabled --email /usr/share/koha/bin/cronjobs/advance_notices.pl -c
koha-foreach --chdir --enabled /usr/share/koha/bin/cronjobs/serialsUpdate.pl -c
koha-foreach --chdir --enabled /usr/share/koha/bin/cronjobs/membership_expiry.pl -c
koha-foreach --chdir --enabled /usr/share/koha/bin/cronjobs/holds/cancel_expired_holds.pl >/dev/null 2>&1
koha-foreach --chdir --enabled /usr/share/koha/bin/cronjobs/cleanup_database.pl --confirm --sessions --zebraqueue 10 --list-invites --temp-uploads --del-unv-selfreg 14
koha-foreach --chdir --enabled --noemail /usr/share/koha/bin/cronjobs/cleanup_database.pl --confirm --mail
koha-foreach --chdir --enabled /usr/share/koha/bin/cronjobs/holds/auto_unsuspend_holds.pl > /dev/null 2>&1
koha-foreach --chdir --enabled /usr/share/koha/bin/cronjobs/merge_authorities.pl -b
koha-foreach --chdir --enabled /usr/share/koha/bin/cronjobs/plugins_nightly.pl
koha-run-backups --days 2 --output /var/spool/koha
+20
View File
@@ -0,0 +1,20 @@
#!/bin/sh
# /etc/cron.hourly/koha-common -- Hourly housekeeping tasks for all Kohas.
# Copyright 2010 Catalyst IT, Ltd
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
koha-foreach --chdir --enabled /usr/share/koha/bin/cronjobs/holds/build_holds_queue.pl
koha-foreach --chdir --enabled /usr/share/koha/bin/cronjobs/automatic_checkin.pl
+19
View File
@@ -0,0 +1,19 @@
#!/bin/sh
# /etc/cron.monthly/koha-common -- Monthly housekeeping tasks for all Kohas.
# Copyright 2015 Biblibre
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
koha-foreach --chdir --enabled /usr/share/koha/bin/cronjobs/share_usage_with_koha_community.pl
@@ -0,0 +1 @@
default
+1
View File
@@ -0,0 +1 @@
/etc/koha/sites/default/koha-conf.xml
+1
View File
@@ -0,0 +1 @@
/usr/share/koha
+1
View File
@@ -0,0 +1 @@
/usr/share/koha/lib
+15
View File
@@ -0,0 +1,15 @@
/var/log/koha/*/*.log {
rotate 5
weekly
missingok
copytruncate
compress
delaycompress
notifempty
sharedscripts
postrotate
/command/s6-svc -h /run/service/apache2
/command/s6-svc -r /run/service/plack
/command/s6-svc -r /run/service/zebra-indexer
endscript
}
Whitespace-only changes.
Whitespace-only changes.
+7
View File
@@ -0,0 +1,7 @@
#!/command/execlineb -P
fdmove -c 2 1
trap { SIGTERM { apache2ctl stop }
SIGHUP { apache2ctl graceful } }
apache2ctl -D "FOREGROUND"
@@ -0,0 +1 @@
longrun
Whitespace-only changes.
Whitespace-only changes.
+3
View File
@@ -0,0 +1,3 @@
#!/command/execlineb -P
fdmove -c 2 1
/usr/sbin/cron -f -L 5
@@ -0,0 +1 @@
longrun
Whitespace-only changes.
Whitespace-only changes.
+6
View File
@@ -0,0 +1,6 @@
#!/command/execlineb -P
fdmove -c 2 1
s6-envdir /etc/koha-envvars
/usr/bin/starman -M FindBin --socket /var/run/koha/default/plack.sock --max-requests 50 --workers 2 -E deployment --user=default-koha --group=default-koha --access-log /var/log/koha/default/plack.log --error-log /var/log/koha/default/plack-error.log "/etc/koha/plack.psgi"
@@ -0,0 +1 @@
longrun
Whitespace-only changes.
@@ -0,0 +1 @@
oneshot
+1
View File
@@ -0,0 +1 @@
/etc/s6-overlay/scripts/02-setup-koha.sh
Whitespace-only changes.
@@ -0,0 +1 @@
bundle
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
+9
View File
@@ -0,0 +1,9 @@
#!/command/execlineb -P
fdmove -c 2 1
s6-envdir /etc/koha-envvars
s6-setuidgid default-koha
/usr/bin/perl /usr/share/koha/bin/workers/background_jobs_worker.pl --queue long_tasks
@@ -0,0 +1 @@
longrun
Whitespace-only changes.
Whitespace-only changes.
+9
View File
@@ -0,0 +1,9 @@
#!/command/execlineb -P
fdmove -c 2 1
s6-envdir /etc/koha-envvars
s6-setuidgid default-koha
/usr/bin/perl /usr/share/koha/bin/workers/background_jobs_worker.pl
@@ -0,0 +1 @@
longrun
Whitespace-only changes.
+16
View File
@@ -0,0 +1,16 @@
#!/command/execlineb -P
with-contenv
importas -D "" elastic USE_ELASTICSEARCH
if -n { test "${elastic}" = "true" }
redirfd -a 1 /var/log/koha/default/zebra-indexer.log
fdmove -c 2 1
s6-envdir /etc/koha-envvars
s6-setuidgid default-koha
/usr/bin/perl /usr/share/koha/bin/migration_tools/rebuild_zebra.pl -daemon -sleep 5
@@ -0,0 +1 @@
longrun
Whitespace-only changes.
Whitespace-only changes.
+15
View File
@@ -0,0 +1,15 @@
#!/command/execlineb -P
with-contenv
importas -D "" elastic USE_ELASTICSEARCH
if -n { test "${elastic}" = "true" }
fdmove -c 2 1
s6-envdir /etc/koha-envvars
s6-setuidgid default-koha
/usr/bin/zebrasrv -v 1 -f /etc/koha/sites/default/koha-conf.xml
@@ -0,0 +1 @@
longrun
+97
View File
@@ -0,0 +1,97 @@
#!/command/with-contenv bash
export KOHA_INSTANCE=default
export KOHA_INTRANET_PORT=8081
export KOHA_OPAC_PORT=8080
export MEMCACHED_SERVERS=${MEMCACHED_SERVERS:-memcached}
export MYSQL_SERVER=${MYSQL_SERVER:-db}
export DB_NAME=${DB_NAME:-koha_default}
export MYSQL_USER=${MYSQL_USER:-koha_default}
export MYSQL_PASSWORD=${MYSQL_PASSWORD:-$(pwgen -s 15 1)}
export ZEBRA_MARC_FORMAT=${ZEBRA_MARC_FORMAT:-marc21}
export KOHA_PLACK_NAME=${KOHA_PLACK_NAME:-koha}
export KOHA_ES_NAME=${KOHA_ES_NAME:-es}
# RabbitMQ settings
export MB_HOST=${MB_HOST:-rabbitmq}
export MB_PORT=${MB_PORT:-61613}
export MB_USER=${MB_USER:-guest}
export MB_PASS=${MB_PASS:-guest}
envsubst < /docker/templates/koha-sites.conf > /etc/koha/koha-sites.conf
# /etc/mysql/koha-common.cnf is used by a few koha scripts
rm /etc/mysql/koha-common.cnf && envsubst < /docker/templates/koha-common.cnf > /etc/mysql/koha-common.cnf
chmod 660 /etc/mysql/koha-common.cnf
# Create entry with admin username, password and myqsl server for this instance
echo -n "default:${MYSQL_USER}:${MYSQL_PASSWORD}:${DB_NAME}:${MYSQL_SERVER}" > /etc/koha/passwd
source /usr/share/koha/bin/koha-functions.sh
MB_PARAMS="--mb-host ${MB_HOST} --mb-port ${MB_PORT} --mb-user ${MB_USER} --mb-pass ${MB_PASS}"
# Configure the elasticsearch server
ES_PARAMS=""
if [[ "${USE_ELASTICSEARCH}" = "true" ]]
then
ES_PARAMS="--elasticsearch-server ${ELASTICSEARCH_HOST}"
fi
if ! is_instance ${KOHA_INSTANCE} || [ ! -f "/etc/koha/sites/${KOHA_INSTANCE}/koha_conf.xml" ]
then
echo "Executing koha-create for instance ${KOHA_INSTANCE}"
koha-create ${ES_PARAMS} ${MB_PARAMS} --use-db ${KOHA_INSTANCE} | true
else
echo "Creating directory structure"
koha-create-dirs ${KOHA_INSTANCE}
fi
# Configure search daemon
if [ "${USE_ELASTICSEARCH}" = "true" ]
then
koha-elasticsearch --rebuild -p $(grep -c ^processor /proc/cpuinfo) ${KOHA_INSTANCE} &
fi
for i in $(koha-translate -l)
do
if [ "${KOHA_LANGS}" = "" ] || ! echo "${KOHA_LANGS}"|grep -q -w $i
then
echo "Removing language $i"
koha-translate -r $i
else
echo "Checking language $i"
koha-translate -c $i
fi
done
if [ "${KOHA_LANGS}" != "" ]
then
echo "Installing languages"
LANGS=$(koha-translate -l)
for i in $KOHA_LANGS
do
if ! echo "${LANGS}"|grep -q -w $i
then
echo "Installing language $i"
koha-translate -i $i
else
echo "Language $i already present"
fi
done
fi
koha-plack --enable ${KOHA_INSTANCE}
a2enmod proxy
# Prevent Plack from throwing permission errors
touch /var/log/koha/${KOHA_INSTANCE}/opac-error.log /var/log/koha/${KOHA_INSTANCE}/intranet-error.log
chown -R ${KOHA_INSTANCE}-koha:${KOHA_INSTANCE}-koha /var/log/koha/${KOHA_INSTANCE}/
service apache2 stop
koha-indexer --stop ${KOHA_INSTANCE}
koha-zebra --stop ${KOHA_INSTANCE}
koha-worker --stop ${KOHA_INSTANCE}
koha-email-enable ${KOHA_INSTANCE}