= nextcloud = Our [wiki:owncloud nextcloud] installation is running on lucius, which is currently running Debian jessie. The nextcloud application is instatlled from source. == Important details == * The application runs as the www-data user * Directories: * The code is in /var/www/nextcloud. * The data (files) are in /var/lib/nextcloud/data. * Our configuration is in /etc/nextcloud (symlinked from /var/www/nextcloud/config) * We're using the postgres package not the mysql package. If you want to muck around in the database: `su - www-data` and then `psql nextcloud` * We're authenticating using the [wiki:login-service login-service] (web api). * That happens via our own mfplauth app, which depends on the [https://github.com/nextcloud/apps/tree/master/user_external external user auth app] * The admin username (mfpl-admin) and password are in [wiki:keyringer keyringer]. However, try to avoid logging in as mfpl-admin, and if you change any configuration options, /etc/nextcloud/config.php will get overwritten * A 5GB per user quota is set. This is configured by logging in as mfpl-admin and then clicking to administer users. Quotas can be changed on a per user basis. * To fix #8125, we've added our own custom theme called "mayfirst", which is in lucius.mayfirst.org:/var/lib/nextcloud/themes and it is activated via the theme => "mayfirst" line in lucius.mayfirst.org:/etc/nextcloud/config.php. Currently, it only adds a style sheet that simply hides the password change form. * We have committed to maintaining four extra apps, which are installed in /var/lib/nextcloud/apps-local: * [https://apps.nextcloud.com/apps/calendar Calendar] * [https://apps.nextcloud.com/apps/contacts Contacts] * [https://apps.nextcloud.com/apps/bookmarks Bookmarks] (see #10696) * [https://github.com/nextcloud/apps/tree/master/user_external External user authentication] * MF/PL custom auth app (git://git.mayfirst.org/mfpl/mfplauth) * https://apps.nextcloud.com/apps/richdocuments Rich Documents/Collobora] == Upgrading == Steps to upgrade from source: * Visit https://nextcloud.com/changelog/ and download the appropriate version to /root using wget and unpack * Create symlinks that mirror the symlinks in /var/www/nextcloud * If upgrading a major version, backup /var/lib/nextcloud/apps-local and download new versions of all apps in /var/lib/nextcloud/apps-local, replacing the existing apps with the new ones. * Copy /etc/nextcloud/config.php to /etc/nextcloud/config.php.bak * Enter maintenance mode (edit to /etc/nextcloud/config.php) * Backup the database with: {{{ su -c "pg_dump nextcloud" www-data | gzip - > nextcloud.pre.$(date +%Y.%m.%d).backup.sql.gz }}} * Ensure the dump completed successfully: {{{ tail nextcloud.sql }}} * Make a backup of the current nextcloud installation: {{{ mv /var/www/nextcloud /var/www/nextcloud.version.n.n.n }}} * Move the new copy in: {{{ mv /root/nextcloud /var/www/ }}} * Ensure all database udpates have been run, su to the www-data user and then: {{{ su - www-data cd /var/www/nextcloud php occ upgrade }}} == Collabora online == For the richtext editor to work, we have to have Collabora Online installed. Fortunately it can be installed as a docker image. We are loosely following [https://icewind.nl/entry/collabora-online/ these instructions for installation with nginx] (that page includes an nginx configuration file). They depend on a [https://hub.docker.com/r/collabora/code/ collabora-code docker image], which has a [https://github.com/CollaboraOnline/Docker-CODE Docker file that lives on github]. Rather than pull in their unverified docker image, I have forked their Docker file (git://git.mayfirst.org/mfpl/collabora-code), with instructions on how to build it from scratch. On lucius it should be installed via: {{{ cd /srv git clone git://git.mayfirst.org/mfpl/collabora-code }}} See the README.mfpl.md for directions on installing and upgrading the docker images == Nginx and php fpm == A working [https://docs.nextcloud.com/server/11/admin_manual/installation/nginx_nextcloud_9x.html nginx configuration file for nextcloud is available]. In addition, php5-fpm should work mostly out of the box but requires these tweaks: * Uncomment the the lines starting with env (so environment variables are available to nextcloud) * Add the file `/etc/php5/fpm/conf.d/100-nextcloud.ini` with the contents: {{{ always_populate_raw_post_data = -1 }}}