From 68d399c5ad4da6b6cada08772620a83ff419881d Mon Sep 17 00:00:00 2001 From: MercierCorentin <corentin.mercier.pro@gmail.com> Date: Sat, 23 Mar 2019 17:01:52 +0100 Subject: [PATCH] Updating Collabora and removing unuseful languages --- collabora-online-docker/Dockerfile | 16 +++++++ collabora-online-docker/README.md | 4 ++ .../scripts/install-libreoffice.sh | 24 +++++++++++ .../scripts/start-libreoffice.sh | 42 +++++++++++++++++++ 4 files changed, 86 insertions(+) create mode 100644 collabora-online-docker/Dockerfile create mode 100644 collabora-online-docker/README.md create mode 100644 collabora-online-docker/scripts/install-libreoffice.sh create mode 100644 collabora-online-docker/scripts/start-libreoffice.sh diff --git a/collabora-online-docker/Dockerfile b/collabora-online-docker/Dockerfile new file mode 100644 index 00000000..503f438b --- /dev/null +++ b/collabora-online-docker/Dockerfile @@ -0,0 +1,16 @@ +FROM ubuntu:16.04 + +#Â Environment variables +ENV domain localhost +ENV LANG fr_FR.utf8 +ENV LC_CTYPE fr_FR.utf8 + +# Setup scripts for LibreOffice Online +ADD /scripts/install-libreoffice.sh / +ADD /scripts/start-libreoffice.sh / +RUN bash install-libreoffice.sh + +EXPOSE 9980 + +# Entry point +CMD bash start-libreoffice.sh diff --git a/collabora-online-docker/README.md b/collabora-online-docker/README.md new file mode 100644 index 00000000..b52328c0 --- /dev/null +++ b/collabora-online-docker/README.md @@ -0,0 +1,4 @@ +# Docker-CODE +Dockerfile and scripts to generate CODE Docker image + +Usage and possible settings are documented on the [CODE home page](https://collaboraoffice.com/code/). diff --git a/collabora-online-docker/scripts/install-libreoffice.sh b/collabora-online-docker/scripts/install-libreoffice.sh new file mode 100644 index 00000000..4bb6339c --- /dev/null +++ b/collabora-online-docker/scripts/install-libreoffice.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +# Update installed packages +apt-get update && apt-get -y upgrade + +# Install HTTPS transport +apt-get -y install apt-transport-https + +# Install locales +apt-get -y install locales-all + +# Add Collabora repos +echo "deb https://collaboraoffice.com/repos/CollaboraOnline/CODE /" > /etc/apt/sources.list.d/collabora.list +apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 6CCEA47B2281732DF5D504D00C54D189F4BA284D +apt-get update + +# Install the Collabora packages +apt-get -y install loolwsd code-brand collaboraoffice6.0-dict-fr collaboraoffice6.0-dict-en collaboraofficebasis6.0-fr collaboraofficebasis6.0-en + +# Install inotifywait and killall to automatic restart loolwsd, if loolwsd.xml changes +apt-get -y install inotify-tools psmisc + +# Cleanup +rm -rf /var/lib/apt/lists/* \ No newline at end of file diff --git a/collabora-online-docker/scripts/start-libreoffice.sh b/collabora-online-docker/scripts/start-libreoffice.sh new file mode 100644 index 00000000..3bb613e8 --- /dev/null +++ b/collabora-online-docker/scripts/start-libreoffice.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +# Fix domain name resolution from jails +cp /etc/resolv.conf /etc/hosts /opt/lool/systemplate/etc/ + +if test "${DONT_GEN_SSL_CERT-set}" == set; then +# Generate new SSL certificate instead of using the default +mkdir -p /opt/ssl/ +cd /opt/ssl/ +mkdir -p certs/ca +openssl genrsa -out certs/ca/root.key.pem 2048 +openssl req -x509 -new -nodes -key certs/ca/root.key.pem -days 9131 -out certs/ca/root.crt.pem -subj "/C=DE/ST=BW/L=Stuttgart/O=Dummy Authority/CN=Dummy Authority" +mkdir -p certs/{servers,tmp} +mkdir -p "certs/servers/localhost" +openssl genrsa -out "certs/servers/localhost/privkey.pem" 2048 -key "certs/servers/localhost/privkey.pem" +if test "${cert_domain-set}" == set; then +openssl req -key "certs/servers/localhost/privkey.pem" -new -sha256 -out "certs/tmp/localhost.csr.pem" -subj "/C=DE/ST=BW/L=Stuttgart/O=Dummy Authority/CN=localhost" +else +openssl req -key "certs/servers/localhost/privkey.pem" -new -sha256 -out "certs/tmp/localhost.csr.pem" -subj "/C=DE/ST=BW/L=Stuttgart/O=Dummy Authority/CN=${cert_domain}" +fi +openssl x509 -req -in certs/tmp/localhost.csr.pem -CA certs/ca/root.crt.pem -CAkey certs/ca/root.key.pem -CAcreateserial -out certs/servers/localhost/cert.pem -days 9131 +mv certs/servers/localhost/privkey.pem /etc/loolwsd/key.pem +mv certs/servers/localhost/cert.pem /etc/loolwsd/cert.pem +mv certs/ca/root.crt.pem /etc/loolwsd/ca-chain.cert.pem +fi + +# Replace trusted host and set admin username and password +perl -pi -e "s/localhost<\/host>/${domain}<\/host>/g" /etc/loolwsd/loolwsd.xml +perl -pi -e "s/<username (.*)>.*<\/username>/<username \1>${username}<\/username>/" /etc/loolwsd/loolwsd.xml +perl -pi -e "s/<password (.*)>.*<\/password>/<password \1>${password}<\/password>/" /etc/loolwsd/loolwsd.xml +perl -pi -e "s/<server_name (.*)>.*<\/server_name>/<server_name \1>${server_name}<\/server_name>/" /etc/loolwsd/loolwsd.xml +perl -pi -e "s/<allowed_languages (.*)>.*<\/allowed_languages>/<allowed_languages \1>${dictionaries:-en_GB en_US fr_FR}<\/allowed_languages>/" /etc/loolwsd/loolwsd.xml + +# Restart when /etc/loolwsd/loolwsd.xml changes +[ -x /usr/bin/inotifywait -a /usr/bin/killall ] && ( + /usr/bin/inotifywait -e modify /etc/loolwsd/loolwsd.xml + echo "$(ls -l /etc/loolwsd/loolwsd.xml) modified --> restarting" + /usr/bin/killall -1 loolwsd +) & + +# Start loolwsd +su -c "/usr/bin/loolwsd --version --o:sys_template_path=/opt/lool/systemplate --o:lo_template_path=/opt/collaboraoffice6.0 --o:child_root_path=/opt/lool/child-roots --o:file_server_root_path=/usr/share/loolwsd ${extra_params}" -s /bin/bash lool -- GitLab