Nextcloud

From David's Wiki
\( \newcommand{\P}[]{\unicode{xB6}} \newcommand{\AA}[]{\unicode{x212B}} \newcommand{\empty}[]{\emptyset} \newcommand{\O}[]{\emptyset} \newcommand{\Alpha}[]{Α} \newcommand{\Beta}[]{Β} \newcommand{\Epsilon}[]{Ε} \newcommand{\Iota}[]{Ι} \newcommand{\Kappa}[]{Κ} \newcommand{\Rho}[]{Ρ} \newcommand{\Tau}[]{Τ} \newcommand{\Zeta}[]{Ζ} \newcommand{\Mu}[]{\unicode{x039C}} \newcommand{\Chi}[]{Χ} \newcommand{\Eta}[]{\unicode{x0397}} \newcommand{\Nu}[]{\unicode{x039D}} \newcommand{\Omicron}[]{\unicode{x039F}} \DeclareMathOperator{\sgn}{sgn} \def\oiint{\mathop{\vcenter{\mathchoice{\huge\unicode{x222F}\,}{\unicode{x222F}}{\unicode{x222F}}{\unicode{x222F}}}\,}\nolimits} \def\oiiint{\mathop{\vcenter{\mathchoice{\huge\unicode{x2230}\,}{\unicode{x2230}}{\unicode{x2230}}{\unicode{x2230}}}\,}\nolimits} \)

Nextcloud is a self-hosted cloud solution. It is a fork of ownCloud by the original founder.

It is open-source under AGPL-3.

Administration

Configuration

The primary configuration file is config/config.php.
You can view a list of configuation parameters here.

I recommend adding the following to your configuation file:

  • 'simpleSignUpLink.shown' => false, disables some sign up links which direct to nextcloud.com.

Moving data directory

See https://help.nextcloud.com/t/howto-change-move-data-directory-after-installation/17170

Nextcloud doesn't include a clean built-in way to migrate data.

The proper way to do it is to fix all the paths in the Nextcloud database. However, this is slightly complicated and prone to errors.

The easy way is to create a symlink:

sudo -u www-data php /path/to/nextcloud/occ maintenance:mode --on
mkdir -p /new/path/to/data
rsync -a /path/to/data/. /new/path/to/data
mv /path/to/data /path/to/dataBackup
ln -s /new/path/to/data /path/to/data
chown -h www-data:www-data /path/to/data # To set symlink ownership
chown -R www-data:www-data /new/path/to/data # To set actual data dir ownership
sudo -u www-data php /path/to/nextcloud/occ maintenance:mode --off

Caching

See Caching configuration.

You should use caching to achieve a reasonable performance.
NextCloud recommends APCu for local caching and Redis for lock caching:

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
     'host' => 'localhost',
     'port' => 6379,
],

Markdown

NextCloud comes with its own WYSIWYG markdown editor.
If you prefer to type markdown yourself, do the following:

  1. Disable the "Text" app
  2. Install the "Plain text editor" app
  3. Install the "Markdown Editor" app

Markdown does not have a Latex app.

Apache

Example Apache Config


For best performance, you should disable certain modules as listed in the troubleshooting section of the guide.

<VirtualHost *:80>
  ServerName cloud.davidl.me
  ServerSignature Off

  RewriteEngine on
  RewriteCond %{HTTPS} !=on
  RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [NE,R,L]
  RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]<br />
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
  ServerName cloud.davidl.me
  ServerSignature Off

  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/nextcloud
 
  # Disable mod_deflate for nextcloud.
  SetEnv no-gzip 1

  <IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
  </IfModule>

  ErrorLog ${APACHE_LOG_DIR}/cloud_davidlme_error.log
  CustomLog ${APACHE_LOG_DIR}/cloud_davidlme_access.log combined

  # SSL Stuff here
</VirtualHost>