├── Dockerfile ├── README.md └── scripts ├── install-collabora-online.sh └── start-collabora-online.sh /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:18.04 2 | 3 | # Environment variables 4 | ENV domain localhost 5 | ENV LC_CTYPE C.UTF-8 6 | 7 | # Setup scripts for Collabora Online 8 | ADD /scripts/install-collabora-online.sh / 9 | ADD /scripts/start-collabora-online.sh / 10 | RUN bash install-collabora-online.sh 11 | 12 | EXPOSE 9980 13 | 14 | # switch to lool user 15 | USER 101 16 | 17 | # Entry point 18 | CMD bash start-collabora-online.sh 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # THIS REPO IS OBSOLETE! See https://github.com/CollaboraOnline/online/tree/master/docker 2 | 3 | # Docker-CODE 4 | Dockerfile and scripts to generate CODE Docker image 5 | 6 | Usage and possible settings are documented on the [CODE home page](https://collaboraoffice.com/code/). 7 | -------------------------------------------------------------------------------- /scripts/install-collabora-online.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Refresh repos otherwise installations later may fail 4 | apt-get update 5 | 6 | # Install HTTPS transport 7 | apt-get -y install apt-transport-https 8 | 9 | # Install some more fonts 10 | apt-get -y install fonts-open-sans 11 | 12 | # Install gnupg2 13 | apt-get -y install gnupg2 14 | 15 | # install ca-certificates 16 | apt-get -y install ca-certificates 17 | 18 | # install ssh-keygen binary for the WOPI proof key 19 | apt-get -y install openssh-client 20 | 21 | # Install curl for simple healthchecks 22 | apt-get -y install curl 23 | 24 | # Add Collabora repos 25 | echo "deb https://collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu1804 /" > /etc/apt/sources.list.d/collabora.list 26 | apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 6CCEA47B2281732DF5D504D00C54D189F4BA284D 27 | apt-get update 28 | 29 | # Install the Collabora packages 30 | apt-get -y install loolwsd code-brand collaboraoffice6.4-dict* collaboraofficebasis6.4-ar collaboraofficebasis6.4-as collaboraofficebasis6.4-ast collaboraofficebasis6.4-bg collaboraofficebasis6.4-bn-in collaboraofficebasis6.4-br collaboraofficebasis6.4-ca collaboraofficebasis6.4-calc collaboraofficebasis6.4-ca-valencia collaboraofficebasis6.4-core collaboraofficebasis6.4-cs collaboraofficebasis6.4-cy collaboraofficebasis6.4-da collaboraofficebasis6.4-de collaboraofficebasis6.4-draw collaboraofficebasis6.4-el collaboraofficebasis6.4-en-gb collaboraofficebasis6.4-en-us collaboraofficebasis6.4-es collaboraofficebasis6.4-et collaboraofficebasis6.4-eu collaboraofficebasis6.4-extension-pdf-import collaboraofficebasis6.4-fi collaboraofficebasis6.4-fr collaboraofficebasis6.4-ga collaboraofficebasis6.4-gd collaboraofficebasis6.4-gl collaboraofficebasis6.4-graphicfilter collaboraofficebasis6.4-gu collaboraofficebasis6.4-he collaboraofficebasis6.4-hi collaboraofficebasis6.4-hr collaboraofficebasis6.4-hu collaboraofficebasis6.4-id collaboraofficebasis6.4-images collaboraofficebasis6.4-impress collaboraofficebasis6.4-is collaboraofficebasis6.4-it collaboraofficebasis6.4-ja collaboraofficebasis6.4-km collaboraofficebasis6.4-kn collaboraofficebasis6.4-ko collaboraofficebasis6.4-lt collaboraofficebasis6.4-lv collaboraofficebasis6.4-ml collaboraofficebasis6.4-mr collaboraofficebasis6.4-nb collaboraofficebasis6.4-nl collaboraofficebasis6.4-nn collaboraofficebasis6.4-oc collaboraofficebasis6.4-ooofonts collaboraofficebasis6.4-ooolinguistic collaboraofficebasis6.4-or collaboraofficebasis6.4-pa-in collaboraofficebasis6.4-pl collaboraofficebasis6.4-pt collaboraofficebasis6.4-pt-br collaboraofficebasis6.4-ro collaboraofficebasis6.4-ru collaboraofficebasis6.4-sk collaboraofficebasis6.4-sl collaboraofficebasis6.4-sr collaboraofficebasis6.4-sr-latn collaboraofficebasis6.4-sv collaboraofficebasis6.4-ta collaboraofficebasis6.4-te collaboraofficebasis6.4-tr collaboraofficebasis6.4-uk collaboraofficebasis6.4-vi collaboraofficebasis6.4-writer collaboraofficebasis6.4-zh-cn collaboraofficebasis6.4-zh-tw 31 | 32 | # Install inotifywait and killall to automatic restart loolwsd, if loolwsd.xml changes 33 | apt-get -y install inotify-tools psmisc 34 | 35 | # Cleanup 36 | rm -rf /var/lib/apt/lists/* 37 | 38 | # Remove WOPI Proof key generated by the package, we need unique key for each container 39 | rm -rf /etc/loolwsd/proof_key* 40 | 41 | # Fix permissions 42 | chown -R lool:lool /opt/ 43 | chown -R lool:lool /etc/loolwsd 44 | -------------------------------------------------------------------------------- /scripts/start-collabora-online.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Fix domain name resolution from jails 4 | cp /etc/resolv.conf /etc/hosts /opt/lool/systemplate/etc/ 5 | 6 | if test "${DONT_GEN_SSL_CERT-set}" == set; then 7 | # Generate new SSL certificate instead of using the default 8 | mkdir -p /opt/ssl/ 9 | cd /opt/ssl/ 10 | mkdir -p certs/ca 11 | openssl rand -writerand /opt/lool/.rnd 12 | openssl genrsa -out certs/ca/root.key.pem 2048 13 | 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" 14 | mkdir -p certs/{servers,tmp} 15 | mkdir -p certs/servers/localhost 16 | openssl genrsa -out certs/servers/localhost/privkey.pem 2048 17 | if test "${cert_domain-set}" == set; then 18 | 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" 19 | else 20 | 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}" 21 | fi 22 | 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 23 | mv certs/servers/localhost/privkey.pem /etc/loolwsd/key.pem 24 | mv certs/servers/localhost/cert.pem /etc/loolwsd/cert.pem 25 | mv certs/ca/root.crt.pem /etc/loolwsd/ca-chain.cert.pem 26 | fi 27 | 28 | # Disable warning/info messages of LOKit by default 29 | if test "${SAL_LOG-set}" == set; then 30 | SAL_LOG="-INFO-WARN" 31 | fi 32 | 33 | # Replace trusted host and set admin username and password 34 | perl -pi -e "s/localhost<\/host>/${domain}<\/host>/g" /etc/loolwsd/loolwsd.xml 35 | perl -pi -e "s/.*<\/username>/${username}<\/username>/" /etc/loolwsd/loolwsd.xml 36 | perl -pi -e "s/.*<\/password>/${password}<\/password>/" /etc/loolwsd/loolwsd.xml 37 | perl -pi -e "s/.*<\/server_name>/${server_name}<\/server_name>/" /etc/loolwsd/loolwsd.xml 38 | perl -pi -e "s/.*<\/allowed_languages>/${dictionaries:-de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru}<\/allowed_languages>/" /etc/loolwsd/loolwsd.xml 39 | 40 | # Restart when /etc/loolwsd/loolwsd.xml changes 41 | [ -x /usr/bin/inotifywait -a /usr/bin/killall ] && ( 42 | /usr/bin/inotifywait -e modify /etc/loolwsd/loolwsd.xml 43 | echo "$(ls -l /etc/loolwsd/loolwsd.xml) modified --> restarting" 44 | /usr/bin/killall -1 loolwsd 45 | ) & 46 | 47 | # Generate WOPI proof key 48 | loolwsd-generate-proof-key 49 | 50 | # Start loolwsd 51 | exec /usr/bin/loolwsd --version --o:sys_template_path=/opt/lool/systemplate --o:child_root_path=/opt/lool/child-roots --o:file_server_root_path=/usr/share/loolwsd --o:user_interface.mode=notebookbar ${extra_params} 52 | --------------------------------------------------------------------------------