wiki-grav/pages/02.linux/nextcloud/default.en.md

289 lines
6.8 KiB
Markdown
Raw Normal View History

---
title: Nextcloud
visible: true
---
[toc]
2023-02-19 15:29:32 +01:00
## Installation
2023-02-19 15:29:32 +01:00
Nextcloud will be using apache
2023-02-19 15:29:32 +01:00
```sh
apt install mlocate apache2 libapache2-mod-php mariadb-client mariadb-server wget unzip bzip2 curl php php-common php-curl php-gd php-mbstring php-mysql php-xml php-zip php-intl php-apcu php-redis php-bcmath php-gmp php-imagick
```
2023-02-19 15:29:32 +01:00
Not found: `php-http-request python-certbot-apache`
2023-02-19 15:29:32 +01:00
No password set
2023-02-19 15:29:32 +01:00
```sh
mariadb -u root -p
```
2023-02-19 15:29:32 +01:00
```sql
CREATE DATABASE nextcloud;
```
2023-02-19 15:29:32 +01:00
For UTF8 support use this instead:
2023-02-19 15:29:32 +01:00
```sql
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
2023-02-19 15:34:22 +01:00
GRANT ALL ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY '{PASSWORD}';
2023-02-19 15:29:32 +01:00
FLUSH PRIVILEGES;
```
2023-02-19 15:29:32 +01:00
Exit the MariaDB prompt
2023-02-19 15:29:32 +01:00
Download Nextcloud into `/var/www`
2023-02-19 15:29:32 +01:00
```sh
2023-02-19 15:34:22 +01:00
wget https://download.nextcloud.com/server/releases/nextcloud-{VERSION}.tar.bz2
tar -xf nextcloud-{VERSION}.tar.bz2
```
2023-02-19 15:29:32 +01:00
Change owner to the apache user
```sh
chown -Rfv www-data:www-data /var/www/nextcloud
```
Create nextcloud configuration for apache
```sh
vi /etc/apache2/sites-available/nextcloud.conf
```
Configuration file
```apacheconf
2023-02-19 15:34:22 +01:00
<VirtualHost *:80> #specify listen ip addresses: {ADDRESS}:{PORT} for ipv4, [{ADDRESS}]:{PORT} vor ipv6, *:80 for all
2022-08-09 18:40:42 +02:00
ServerAdmin webmaster@localhost
DocumentRoot /var/www/nextcloud
Alias /nextcloud "/var/www/nextcloud/"
2022-08-09 18:40:42 +02:00
<Directory "/var/www/nextcloud/">
Options +FollowSymlinks
AllowOverride All
2022-08-09 18:40:42 +02:00
<IfModule mod_dav.c>
Dav off
</IfModule>
2022-08-09 18:40:42 +02:00
Require all granted
2022-08-09 18:40:42 +02:00
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>
2022-08-09 18:40:42 +02:00
ErrorLog ${APACHE_LOG_DIR}/nextcloud_error_log
CustomLog ${APACHE_LOG_DIR}/nextcloud_access_log common
</VirtualHost>
```
2023-02-19 15:29:32 +01:00
Enable nextcloud and disable the default site
2023-02-19 15:29:32 +01:00
```sh
a2ensite nextcloud.conf && a2dissite 000-default.conf
```
Edit `ports.conf` for apache2 to only bind the addresses you need
2023-02-19 15:29:32 +01:00
```sh
systemctl restart apache2
```
### Cron
2023-02-19 15:29:32 +01:00
To execute regular jobs, I personally use cron.
2023-02-19 15:29:32 +01:00
Edit `crontab` as the `www-data` user.
2023-02-19 15:29:32 +01:00
```sh
sudo -u www-data crontab -e
```
Add this following line:
```
*/5 * * * * php -f {NEXTCLOUD DIR}/cron.php
```
### Configuration
2023-02-19 15:29:32 +01:00
The main config file is `{NEXTCLOUD DIR}/config/config.php`
#### Automatic Trash clearing
2023-02-19 15:29:32 +01:00
> [See this page](https://bayton.org/docs/nextcloud/nextcloud-hoarding-trash-how-to-force-automatic-removal-of-deleted-items/) for more options
This settings keeps the files for 15 days, unless drive space is getting low.
2023-02-19 15:29:32 +01:00
In that case it delets them earlier.
```
'trashbin_retention_obligation' => 'auto, 15',
```
#### Trust Proxy
2023-02-19 15:29:32 +01:00
This disables the warning of untrusted proxy in the webinterface.
```
'trusted_proxies' =>
array (
2023-02-19 15:34:22 +01:00
0 => '{PROXY IP}',
),
```
#### Trusted Domains
2023-02-19 15:29:32 +01:00
Array of trusted domains.
```
2023-02-19 15:29:32 +01:00
'trusted_domains' =>
array (
2023-02-19 15:34:22 +01:00
0 => '{DOMAIN 1}',
1 => '{DOMAIN 2}',
),
```
## Maintenance
2023-02-19 15:29:32 +01:00
### Maintenance Mode
2023-02-19 15:29:32 +01:00
Enable maintenance mode to prevent data inconsistencies
```sh
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
```
To disable maintenance mode again, run the same command with `--off` instead of `--on`
### Upgrade with CLI
2023-02-19 15:29:32 +01:00
```sh
sudo -u www-data php /var/www/nextcloud/updater/updater.phar
```
### Backup Database
2023-02-19 15:29:32 +01:00
Dump database to file
2023-02-19 15:34:22 +01:00
_NOTE: The password needs to be inserted directly after `-p` without any space_
2023-02-19 15:29:32 +01:00
```sh
2023-02-19 15:34:22 +01:00
mysqldump --single-transaction -h {SERVER} -u {USERNAME} -p{PASSWORD} {DB NAME} > nextcloud-sqlbkp_`date +"%Y%m%d"`.bak
```
2023-02-19 15:29:32 +01:00
> [Official documentation](https://docs.nextcloud.com/server/latest/admin_manual/maintenance/backup.html)
#### Backup Script
```sh
#!/bin/bash
set -euo pipefail
server=
username=
password=
db_name=
sudo mkdir -p /var/www/database-backup
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
mysqldump --single-transaction -h $server -u $username -p$password $db_name | sudo tee /var/www/database-backup/nextcloud-sqlbkp_`date +"%Y%m%d"`.bak
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
```
### Restore Database
2023-02-19 15:29:32 +01:00
```sh
2023-02-19 15:34:22 +01:00
mariadb -h {SERVER} -u {USERNAME} -p{PASSWORD} -e "DROP DATABASE nextcloud"
mariadb -h {SERVER} -u {USERNAME} -p{PASSWORD} -e "CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci"
```
2023-02-19 15:29:32 +01:00
```sh
2023-02-19 15:34:22 +01:00
mariadb -h {SERVER} -u {USERNAME} -p{PASSWORD} {DB NAME} < nextcloud-sqlbkp.bak
2023-02-19 15:29:32 +01:00
```
2022-05-27 16:05:08 +02:00
> [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/maintenance/restore.html)
## Collabora Online Container
2023-02-19 15:29:32 +01:00
> Unfinished
2022-05-27 16:05:08 +02:00
2023-03-11 20:36:04 +01:00
> [Docker Compose for Nextcloud + Collabora + Traefik?](https://help.nextcloud.com/t/docker-compose-for-nextcloud-collabora-traefik/127733/2)
> [Use HTTPS with Ubuntu 22.04, apache, Nextcloud and Collabora(Docker)](https://help.nextcloud.com/t/use-https-with-ubuntu-22-04-apache-nextcloud-and-collabora-docker/142880)
> [HowTo: Ubuntu + Docker + Nextcloud + Talk + Collabora](https://help.nextcloud.com/t/howto-ubuntu-docker-nextcloud-talk-collabora/76430)
2023-02-19 15:29:32 +01:00
```sh
podman run -t -d --name collabora-online -p 9980:9980 \
2023-03-16 08:52:19 +01:00
-e "extra_params=--o:ssl.enable=false --o:ssl.termination=true" \
--label "io.containers.autoupdate=image" \
docker.io/collabora/code:latest
```
2023-03-11 20:36:04 +01:00
```nginx
server {
listen 443 ssl;
server_name collabora.exu.li;
ssl_certificate_key /etc/acme-sh/collabora.exu.li/key.pem;
ssl_certificate /etc/acme-sh/collabora.exu.li/cert.pem;
# static files
location ^~ /browser {
proxy_pass http://172.18.50.101:9980;
proxy_set_header Host $http_host;
}
# WOPI discovery URL
location ^~ /hosting/discovery {
proxy_pass http://172.18.50.101:9980;
proxy_set_header Host $http_host;
}
# Capabilities
location ^~ /hosting/capabilities {
proxy_pass http://172.18.50.101:9980;
proxy_set_header Host $http_host;
}
# main websocket
location ~ ^/cool/(.*)/ws$ {
proxy_pass http://172.18.50.101:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
# download, presentation and image upload
location ~ ^/(c|l)ool {
proxy_pass http://172.18.50.101:9980;
proxy_set_header Host $http_host;
}
# Admin Console websocket
location ^~ /cool/adminws {
proxy_pass http://172.18.50.101:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
}
```
## Onlyoffice Container
2023-02-19 15:29:32 +01:00
> Unfinished
2022-05-27 16:05:08 +02:00
2023-02-19 15:29:32 +01:00
```sh
podman run -it -d --name onlyoffice -p 9480:80 \
--restart always \
--label "io.containers.autoupdate=image" \
docker.io/onlyoffice/documentserver:latest
2022-05-27 16:05:08 +02:00
```