Difference between revisions of "Nextcloud"

From SME Server
Jump to navigationJump to search
 
(66 intermediate revisions by 4 users not shown)
Line 13: Line 13:
 
|licence= AGPLv3
 
|licence= AGPLv3
 
|url= https://nextcloud.com
 
|url= https://nextcloud.com
|category= Contrib
+
|category= Cloud
 
|tags=cloud,files,dropbox,seafile,pydio,ajaxplorer,owncloud
 
|tags=cloud,files,dropbox,seafile,pydio,ajaxplorer,owncloud
 
}}
 
}}
Line 23: Line 23:
 
<!-- keep this first element as is, you can add some if needed -->
 
<!-- keep this first element as is, you can add some if needed -->
 
{{#smeversion: {{#var:smecontribname}} }}
 
{{#smeversion: {{#var:smecontribname}} }}
{{#smeversion: {{#var:contribname}} }}
+
{{#smeversion: nextcloud-src  }}
  
 
=== Description ===
 
=== Description ===
Line 35: Line 35:
  
 
=== Installation ===
 
=== Installation ===
You do not need to  follow the Repo pages of [https://wiki.contribs.org/Fws fws] and [https://wiki.contribs.org/Remi-safe remi-safe] to isntall those two needed repos, instead use the packages to install them followed by a yum-modify event. Then run the main installation.
+
 
 +
<tabs container>
 +
<tab name="For sme10">
 +
yum install {{#var:smecontribname}} --enablerepo=smecontribs
 +
 
 +
you might need a second event or sometime ibays folder is not visible
 +
signal-event nextcloud-update
 +
 
 +
</tab>
 +
<tab name="For sme9">
 +
You do not need to  follow the Repo pages of [https://wiki.contribs.org/Fws fws] and [https://wiki.contribs.org/Remi-safe remi-safe] to install those two needed repos, instead use the packages to install them followed by a yum-modify event. Then run the main installation.
 
  yum install smeserver-extrarepositories-remi-safe smeserver-extrarepositories-fws smeserver-extrarepositories-epel
 
  yum install smeserver-extrarepositories-remi-safe smeserver-extrarepositories-fws smeserver-extrarepositories-epel
 
  signal-event yum-modify
 
  signal-event yum-modify
Line 42: Line 52:
 
  service php-fpm start
 
  service php-fpm start
 
  service php71-php-fpm start
 
  service php71-php-fpm start
 +
service php72-php-fpm start
 +
service php73-php-fpm start
 
  signal-event nextcloud-update
 
  signal-event nextcloud-update
  
Line 52: Line 64:
 
  signal-event post-upgrade  
 
  signal-event post-upgrade  
 
  signal-event reboot
 
  signal-event reboot
 +
then
 +
signal-event nextcloud-update
 +
 +
if you want to add SME user admin as administrator of nextcloud do
 +
  OCC group:adduser admin admin
 +
</tab>
 +
</tabs>
  
=== Upgrade ===
+
you might want to set your default phone region (use your country 2 letter code - low case)
  yum  update {{#var:smecontribname}} {{#var:contribname}} smeserver-php-fpm smeserver-webapps-common --enablerepo=smecontribs,epel,fws
+
  occ config:system:set default_phone_region --value="us"
 +
 
 +
you might want to have nextcloud accessible to the Internet
 +
  config setprop nextcloud access public
 
  signal-event nextcloud-update
 
  signal-event nextcloud-update
 +
 +
=== Use a dedicated domain to connect to Nextcloud ===
 +
first change the first line variable content with you nextcloud domain as defined with your DNS provider.
 +
<syntaxhighlight lang="bash">
 +
NEXTCLOUDDOMAIN="cloud.mydomain.com"
 +
db domains set $NEXTCLOUDDOMAIN domain Description "Nextcloud" Content Primary Nameservers internet TemplatePath WebAppVirtualHost DocumentRoot /usr/share/nextcloud RequireSSL enabled letsencryptSSLcert enabled
 +
signal-event domain-create $NEXTCLOUDDOMAIN
 +
 +
# this one to let nextcloud DAV be redirect correctly and to have collabora recognize the domain
 +
config setprop nextcloud VirtualHost $NEXTCLOUDDOMAIN
 +
signal-event nextcloud-update
 +
 +
# only if you use a Let's Encrypt certificate
 +
expand-template /etc/dehydrated/domains.txt
 +
dehydrated -c
 +
 +
</syntaxhighlight>
  
 
=== Configuration ===
 
=== Configuration ===
Line 67: Line 106:
 
|GENERATED
 
|GENERATED
 
|string
 
|string
|password for your main admin user for nextcloud *
+
|password for your main admin user for nextcloud (*)
 
|-
 
|-
 
|AdminUser
 
|AdminUser
 
|nextcloudadmin
 
|nextcloudadmin
 
|string
 
|string
|main admin user for your installation *
+
|main admin user for your installation (*)
 +
|-
 +
|cliurl
 +
|enabled
 +
|enabled,disabled
 +
|force overwrite.cli.url to https://domain/nextcloud or https://domain if virtualhost is set; disable it if you have specific needs and then use occ command to set your value
 
|-
 
|-
 
|DbName
 
|DbName
Line 97: Line 141:
 
|empty
 
|empty
 
|domain name
 
|domain name
|
+
|domain dedicated to nextcloud, needs to also be defined as domain on the server
 
|-
 
|-
 
|access
 
|access
Line 117: Line 161:
 
|528M
 
|528M
 
|number
 
|number
|if a number will be converted to Megabytes, otherwise use the usual suffix : 2T for 2 terrabytes etc...
+
|webinterface : if a number will be converted to Megabytes, otherwise use the usual suffix : 2T for 2 terrabytes etc...
 +
|-
 +
|memory_limit
 +
|1024M
 +
|number
 +
|for cli like occ command or cron: if a number will be converted to Megabytes, otherwise use the usual suffix : 2T for 2 terrabytes etc...
 
|-
 
|-
 
|Shares
 
|Shares
Line 133: Line 182:
 
|strings coma separated
 
|strings coma separated
 
|will exclude from nexcloud access any ibay via nextcloud. Default excludes Primary ibay. If you want to include Primary set it with a random string.
 
|will exclude from nexcloud access any ibay via nextcloud. Default excludes Primary ibay. If you want to include Primary set it with a random string.
 +
|-
 +
|opcache.memory_consumption
 +
|32
 +
|number
 +
|update this value if Nextcloud says that it should be
 +
|-
 +
|opcache.interned_strings_buffer
 +
|128
 +
|number
 +
|update this value if Nextcloud says that it should be
 +
|-
 +
|PHPBaseDir
 +
|
 +
|colon separated string
 +
|php base dir you want to add to the default example /home/e-smith/files/ibays/musique/files:/usr/share/GeoIP/GeoLite2-Country.mmdb:/proc/cpuinfo
 
|-
 
|-
 
|UseSMB
 
|UseSMB
Line 139: Line 203:
 
|allow you to set ibay access via samba share or via Local driver in nextcloud. Enabled is for samba, this allow you to access as your user and have your quota accounted. It might be a little slower, and need you to have your password loaded in the session. Local driver if disabled, will let you access only what apache user (www) has right to access as member of a group.
 
|allow you to set ibay access via samba share or via Local driver in nextcloud. Enabled is for samba, this allow you to access as your user and have your quota accounted. It might be a little slower, and need you to have your password loaded in the session. Local driver if disabled, will let you access only what apache user (www) has right to access as member of a group.
 
|}
 
|}
* the SME admin user is also an admin of your nextcloud installation. You have two admin account as per default installation on SME Server.
+
(*) the SME admin user is also an admin of your nextcloud installation. You have two admin account as per default installation on SME Server.
  
  
Line 145: Line 209:
 
   config setprop nextcloud ExcludeIbay ibay1,ibay2
 
   config setprop nextcloud ExcludeIbay ibay1,ibay2
 
   signal-event nextcloud-update
 
   signal-event nextcloud-update
 +
 +
=== LDAP/AD Integration Settings ===
 +
Do not change the LDAP/AD integration settings for "1. Server: Localhost" or you will break the Nextcloud install.  If you want to add a second LDAP/AD server, click the "+" symbol to add another configuration and then add the appropriate LDAP/AD settings.
  
 
=== Command line ===
 
=== Command line ===
 
if you happen to need tweaking your installation, here is how to access the command line for Nextcloud on SME, we made it easier for you, just log as root and use the OCC command (using capitals), This command will execute for you what you need as the www user, using the needed version of php. Here two examples: <syntaxhighlight lang="bash">
 
if you happen to need tweaking your installation, here is how to access the command line for Nextcloud on SME, we made it easier for you, just log as root and use the OCC command (using capitals), This command will execute for you what you need as the www user, using the needed version of php. Here two examples: <syntaxhighlight lang="bash">
OCC maintenance:mode --off
+
occ maintenance:mode --off
OCC maintenance:repair
+
occ maintenance:repair
  
</syntaxhighlight>to seek for additional command consult Nextcloud documentation : https://docs.nextcloud.com/server/13.0.0/admin_manual/configuration_server/occ_command.html
+
</syntaxhighlight>to seek for additional command consult Nextcloud documentation : https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html
  
=== Uninstall ===
+
=== Upgrade ===
  yum remove {{#var:smecontribname}} {{#var:contribname}}
+
  yum update {{#var:smecontribname}} {{#var:contribname}} --enablerepo=smecontribs
 +
 
 +
=== CLI upgrade of Nextcloud software ===
 +
You should rather prefer the online updater, but in case:<syntaxhighlight lang="bash">
 +
occ maintenance:mode --on
 +
sudo -u www /usr/bin/php74 --define memory_limit=1024M -d apc.enable_cli=1 /usr/share/nextcloud/updater/updater.phar --no-interaction
 +
occ upgrade
 +
occ maintenance:mode --off
 +
</syntaxhighlight>In case of a huge db, you can choose the online updater and then only issue the db update doing<syntaxhighlight lang="bash">
 +
occ upgrade
 +
occ maintenance:mode --off
 +
</syntaxhighlight>
 +
 
 +
starting 25 to upgrace to 26, you should do
 +
<syntaxhighlight lang="bash">
 +
occ maintenance:mode --on
 +
sudo -u www /usr/bin/php81 --define memory_limit=1024M -d apc.enable_cli=1 /usr/share/nextcloud/updater/updater.phar --no-interaction
 +
occ upgrade
 +
occ maintenance:mode --off
 +
</syntaxhighlight>In case of a huge db, you can choose the online updater and then only issue the db update doing<syntaxhighlight lang="bash">
 +
occ upgrade
 +
occ maintenance:mode --off
 +
</syntaxhighlight>
  
=== Use a dedicated domain to connect to Nextcloud ===
+
=== Restore info loglevel ===
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
db domains set cloud.mydomain.com domain Description "Nextcloud" Content Primary Nameservers internet TemplatePath WebAppVirtualHost DocumentRoot /usr/share/nextcloud RequireSSL enabled letsencryptSSLcert enabled
+
occ config:system:set loglevel --value=3
signal-event domain-create cloud.mydomain.com
+
</syntaxhighlight>
  
#only if you use a Let's Encrypt certificate
+
=== Uninstall ===
expand-template /etc/dehydrated/domains.txt
+
 
dehydrated -c
+
{{Warning box| if you plan to reinstall and had the nextcloud rpm installed do not yum remove it or rpm -e it as it would put you in a situation where you will not be able to reinstall and restore your old data. nextcloud-src rpm if present do not create such situation and can be removed safely.}}
  
#to let nextcloud accept this domain
+
Uninstalling the rpms
OCC "config:system:set trusted_domains 10 --value=cloud.mydomain.com "
+
yum remove {{#var:smecontribname}}  {{#var:contribname}}-src
</syntaxhighlight>
+
rpm -e --justdb nextcloud
  
=== Mount with davfs on Fedora Clients ===
+
those folders will then remain
While you might love the easy setup of the gnome client for nextcloud, you might encounter some frustration of having your favourite applications not showing nextcloud as mounted and needing to find it to sometime not being able to access it.
+
* /usr/share/nextcloud : software and config
 +
* /home/e-smith/files/nextcloud : user data
  
Here is a workaround
+
also you will have mariadb or mariadb105 with nextcloud db and user.
  
First as root<syntaxhighlight lang="bash">
+
And finally, db configuration with entry for nextcloud.  
dnf install davfs2 -y
 
usermod -aG davfs2 $YOURUSER
 
echo "use_locks 0" >> /etc/davfs2/davfs2.conf
 
echo "https://example.com/nextcloud/remote.php/webdav /home/$YOURUSER/nextcloud davfs user,rw,auto 0 0
 
" >> /etc/fstab
 
  
 +
If all of those remains as is, a simple reinstall of the contrib will bring back nextcloud running. If you uninstalled it because your install was non functional or want a complete removal, there are extra steps.
  
</syntaxhighlight>then you should log out /log in with your user in order to have the group membership. You can also just do "su -l USERNAME"
+
In case of deleting either the db or part of the software folder, whenever you will try to reinstall the contrib, process will fail as db and files are not in sync.
  
then as your user (replace your_password by your password, or a token;):<syntaxhighlight lang="bash">
+
In case you need to reinstall from scratch, '''first, backup what you might want to restore latter''':
mkdir ~/nextcloud
+
cd /home/e-smith/files/nextcloud/data
mkdir ~/.davfs2
+
mysqldump nextcloud > nextcloud55.sql
echo "https://example.com/nextcloud/remote.php/webdav your_Nextcloud_username your_password" >> ~/.davfs2/secrets
+
mysqldump105 nextcloud > nextcloud105.sql
chmod 0600 ~/.davfs2/secrets
+
config print nextcloud /root/nextcloud.config
</syntaxhighlight>then just mount ! <syntaxhighlight lang="bash">
+
tar -czf  /root/nextcloud.tar.gz /home/e-smith/files/nextcloud/data /usr/share/nextcloud
mount ~/nextcloud
+
then erase all what is remaining:
</syntaxhighlight>
+
mysql -e "DROP DATABASE `config getprop nextcloud DbName`;DROP USER IF EXISTS `config getprop nextcloud DbUser`;"
 +
mysql105 -e "DROP DATABASE `config getprop nextcloud DbName`;DROP USER IF EXISTS `config getprop nextcloud DbUser`;"
 +
rm -rf /usr/share/nextcloud
 +
rm -rf /home/e-smith/files/nextcloud
 +
#this one is optional, and should not cause issue if still there
 +
config delete nextcloud
  
From there you can tweak the cache configuration to make it easier for you if you are far from the server, default cache size is 50MiByte, you could increase it to let's say 3 GiByte in ~/.davfs2/davfs2.conf for your user <syntaxhighlight lang="bash">
+
and you should be able to start a new install from scratch
cache_size 3G
 
</syntaxhighlight>you should see the folder mount at every logon from now on!  if you do not want that, change "auto" in the fstab by "noauto".
 
  
Then add the following in ~/bash_profile or ~/bash_rc. You could user also mount -a and to try to put something in /etc/gdm/PostLogin/" instead<syntaxhighlight lang="bash">
+
=== Release schedule ===
mount /home/username/nextcloud
+
see https://github.com/nextcloud/server/wiki/Maintenance-and-Release-Schedule
  
 +
as per 2024/01:
 +
{| class="wikitable"
 +
!Version
 +
!Name
 +
!Release date
 +
!End of life
 +
|-
 +
|'''29'''
 +
|
 +
|2024-04-24
 +
|
 +
|-
 +
|'''28'''
 +
|Hub 7
 +
|2023-12-12
 +
|2024-12
 +
|-
 +
|'''27'''
 +
|Hub 6
 +
|2023-06-13
 +
|2024-06
 +
|-
 +
|'''26'''
 +
|Hub 4
 +
|2023-03-21
 +
|2024-03
 +
|-
 +
|'''<s>25</s>'''
 +
|<s>Hub 3</s>
 +
|<s>2022-10-19</s>
 +
|<s>2023-10</s>
 +
|-
 +
|'''<s>24</s>'''
 +
|<s>Hub 3</s>
 +
|<s>2022-05-03</s>
 +
|<s>2023-05</s>
 +
|-
 +
|'''<s>23</s>'''
 +
|<s>Hub 2</s>
 +
|<s>2021-11-30</s>
 +
|<s>2022-12</s>
 +
|-
 +
|'''<s>22</s>'''
 +
|<s>Hub</s>
 +
|<s>2021-07-06</s>
 +
|<s>2022-07</s>
 +
|-
 +
|'''<s>21</s>'''
 +
|<s>Hub</s>
 +
|<s>2021-02-22</s>
 +
|<s>2022-02</s>
 +
|-
 +
|'''<s>20</s>'''
 +
|<s>Hub</s>
 +
|<s>2020-10-03</s>
 +
|<s>2021-11</s>
 +
|-
 +
|'''<s>19</s>'''
 +
|<s>Hub</s>
 +
|<s>2020-06-03</s>
 +
|<s>2021-06</s>
 +
|-
 +
|'''<s>18</s>'''
 +
|<s>Hub</s>
 +
|<s>2020-01-16</s>
 +
|<s>2021-01</s>
 +
|}
  
 +
=== Change Database ===
 +
If you are in the situation your are unable to update your nextcloud because of database requirements, you might need to install a newer and then migrate your db.
  
</syntaxhighlight>And Finally to umount in  gdm using "sudo vim /etc/gdm/PostSession/"<syntaxhighlight lang="bash">
+
Here a simple procedure, after having the new db working as a sclo [[Mariadb105]] for SME10 as example.<syntaxhighlight lang="bash">
if [ ${USERNAME} = "myuser" ];then
+
occ maintenance:mode --on
  umount -fl /home/myuser/nextcloud
+
mysqldump `config getprop nextcloud DbName` > nextcloud.sql
fi
+
echo "CREATE DATABASE IF NOT EXISTS `config getprop nextcloud DbName` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"| mysql105
 +
mysql105 `config getprop nextcloud DbName`< nextcloud.sql
 +
echo "CREATE USER IF NOT EXISTS `config getprop nextcloud DbUser`@localhost IDENTIFIED BY '`config getprop nextcloud DbPassword`';"| mysql105
 +
echo "GRANT ALL PRIVILEGES ON `config getprop nextcloud DbName`.* TO `config getprop nextcloud DbUser`@localhost; FLUSH PRIVILEGES;" | mysql105
 +
occ config:system:set dbhost --value localhost:/var/lib/mysql/mariadb105.sock --type string
 +
occ maintenance:mode --off
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Adapted from those sources:
+
After checking that all is working you can then delete yourself the old db from the previous mysql server, or keep it as a backup for a while.
* http://www.tuxfixer.com/mount-webdav-remote-storage-in-fedora-linux-via-davfs2/
+
If it fails and just want to go back to previous state:
* https://docs.nextcloud.com/server/13/user_manual/files/access_webdav.html
+
occ maintenance --on
 +
occ config:system:set host --value localhost --type string
 +
occ maintenance --off
 +
 
 +
=== File Scan ===
 +
<syntaxhighlight lang="bash">
 +
# scan all, could take hours if you have a lot of files
 +
occ files:scan -v --all
 +
# scan all that is inside a username path (including external storages mounted there)
 +
occ files:scan -v myusername
 +
#scan only a subfolder of a user (path needs a heading / and is relative to /home/e-smith/files/nextcloud/data)
 +
occ files:scan -v --path="/myusername/files/myfolder/mysubfolder" myusername
 +
#For external storage one has to use a user and the mount point in the user space, e.g. admin
 +
occ files:scan -v --path="/admin/files/name_of_external_storage"
 +
</syntaxhighlight>If you use groupgfolders app, then you might consider, to list the golders id<syntaxhighlight lang="bash">
 +
occ groupfolders:list
 +
</syntaxhighlight>then for folder group with id 1<syntaxhighlight lang="bash">
 +
occ groupfolders:scan 1
 +
</syntaxhighlight>
  
 
=== Known issues ===
 
=== Known issues ===
  
==== failure to do online upgrade from 13.0.2 ====
+
==== Web or GUI upgrade from NC25 to NC26  ====
The following extra files have been found:    assets
+
 
 +
Due to the change of php version needed from php74 to php80 and higher, you need to issue the following command while using NC25 to be able to then upgrade to NC26. NC25 is the first to be able to handle php80, and NC26 requires php80 or higher.
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
cd /usr/share/nextcloud/
 
rm -rf assets
 
yum update smeserver-nextcloud --enablerepo=smecontribs
 
 
signal-event nextcloud-update
 
signal-event nextcloud-update
</syntaxhighlight>then proceed to online web upgrade
+
</syntaxhighlight>
  
==== issue upgrading from 13.0.2 to 15.0.0 RPM ====
+
==== Issue importing files in db "Entry path/to/file will not be accessible due to incompatible encoding" ====
Nextcloud is only build to upgrade from one major release to the next. If you try to install the nextcloud-15 rpm while you already have installed the nextcloud-13, you might have encounter the following issue.
+
<syntaxhighlight lang="bash">
 +
yum install convmv --enablerepo=epel
 +
#first test to see the changes
 +
convmv -f utf-8 -t utf-8 --nfc -r /home/e-smith/files/nextcloud/data/username
 +
#check, then with --notest
 +
convmv -f utf-8 -t utf-8 --nfc -r --notest /home/e-smith/files/nextcloud/data/username
 +
#then rescan
 +
occ files:scan -p /username/files/
 +
</syntaxhighlight>this might also occurs on ibays / home folders and their files not all visibles from nextcloud, simply adapt the path for convmv /home/e-smith/files/ibays/ibayname/files/ or /home/e-smith/files/users/userame/home/
  
'''“Updates between multiple major versions are unsupported”'''
+
==== Remove legacy nextcloud rpm without deleting /usr/share/nextcloud content ====
 +
for installs done before smeserver-nextcloud 1.2.0-16, the rppm nextcloud was required and was conflicting with web update. Since 1.2.0-16 it is not required anymroe and we use a nextcloud-src rpm which updates itself in /usr/share/nextcloud-src and is only used if you install the first time or restart from scratch your install.
 +
To remove the nextcloud rpm which is not needed and save your files:
 +
rpm -e --justdb nextcloud
  
<tt>goto usr/share/nextcloud</tt>
+
source https://unix.stackexchange.com/questions/208722/how-to-remove-an-rpm-package-while-keeping-certain-files
  
copy everything except <tt>/data</tt> and <tt>/config</tt> to temp folder
+
==== User cannot see shares/files ====
  
download intermediate version of '''nextcloud''' from <nowiki>https://nextcloud.com/changelog/</nowiki>
+
After a new install the admin user could see shares but not a user.
  
unzip and copy files to /usr/share/nextcloud, dont overwrite /data or /config
+
We had a single ibay and it was set:
  
change ownership in /usr/share/nextcloud chown -R apache:www .
+
Group Everyone
 +
Write group
 +
Read everyone
  
goto <nowiki>https://yoururl/nextcloud</nowiki> and run the updater
+
We created a new group called localusers and added the admin and single user.
  
logon to nextcloud and make sure it is all working as expected
+
We then set the ibay:
  
repeat above for each major update until you are one update from the latest major update. At that point you can follow the usual process. source (https://bugs.contribs.org/show_bug.cgi?id=10670#c3)
+
Group localusers
 +
Write group
 +
Read group
  
==== Upgrading from 17.0.1.x to 17.07.x ====
+
This appeared to fix the issue and the user could now see the files.
  
You can use the built in updater.
+
====Upgrading beyond 20.x====
The only issue experienced was right at the end of the process with a http 500 error. I just did 'retry' and it completed.
 
  
You may need to update your database which I did as follows - note it may take a very long time with a lot of files:
+
To set the default phone region:
  
  OCC maintenance:mode --on
+
  OCC config:system:set default_phone_region --type string --value="GB"
  OCC db:convert-filecache-bigint
+
 
  OCC maintenance:mode --off
+
To fix missing indices - this may take a while so be patient:
 +
 
 +
  OCC db:add-missing-indices
 +
 
 +
==== NC 20-21 : open_basedir restriction in effect. File(/templates/) is not within the allowed path ====
 +
this is a bug in NC. It has been fixed in NC 22 and not backported to NC20. This is just log noise. You can ignore it while waiting to update
 +
see https://help.nextcloud.com/t/error-file-templates-is-not-within-the-allowed-path-s-after-update-from-20-xx-to-21-0-3/119843
 +
 
 +
===Reset Database===
 +
 
 +
For reference, whilst looking at resetting file caches I found this.
 +
 
 +
It is probably extremely dangerous but wanted to make a note.
 +
 
 +
https://github.com/nextcloud/server/issues/8113#issuecomment-565876798
  
 
=== Bugs ===
 
=== Bugs ===
Line 270: Line 477:
 
[[Category: Contrib]]
 
[[Category: Contrib]]
 
<!-- Please keep there the template revision  number as is -->
 
<!-- Please keep there the template revision  number as is -->
 +
 +
===References===
 +
# https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html
 +
# https://help.nextcloud.com/t/migration-from-mysql-to-mariadb/6816/3
 +
# https://help.nextcloud.com/t/changing-mariadb-socket-when-hosting-multiple-db-ubuntu/68294
 +
# https://markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/
 +
# https://www.ullright.org/ullWiki/show/nextcloud-cheatsheet

Latest revision as of 13:51, 31 January 2024




nextcloud
Nextcloud Logo.svg
nextcloud logo
MaintainerUnnilennium
Urlhttps://nextcloud.com
LicenceAGPLv3
Category

Cloud

Tags cloudfilesdropboxseafilepydioajaxplorerowncloud


Maintainer

Jean-Philippe Pialasse

Version

Contrib 10:
Contrib 9:
smeserver-nextcloud
The latest version of smeserver-nextcloud is available in the SME repository, click on the version number(s) for more information.


Contrib 10:
nextcloud-src
The latest version of nextcloud-src is available in the SME repository, click on the version number(s) for more information.


Description

Nextcloud is a suite of client-server software for creating and using file hosting services. It is functionally similar to Dropbox, although Nextcloud is free and open-source, allowing anyone to install and operate it on a private server.

As per SME Server Keep It Simple, all your ibays and home folders will be accessible through the nextcloud interface using the "external files" app. You will also have your main user user Nextcloud folder saved under /home/e-smith/files/owncloud/data which is in the default backup path. So you can now enjoy both your own cloud repository with access to the very same files on your samba share!

How do I add my SME users ? They are already there ! Just tell them to connect to https://mydomain/nextcloud. You can also add external users or allow them to register with a nextcloud app.

What are the admin ? By default you have a nextcloudadmin user and the regular SME admin user. First one use the password you can see with "config getprop nextcloud AdminPassword", and second one, well, just use your regular admin password. Then you can manage apps, external files repos and admin group membership.

Installation

yum install smeserver-nextcloud --enablerepo=smecontribs

you might need a second event or sometime ibays folder is not visible

signal-event nextcloud-update

You do not need to follow the Repo pages of fws and remi-safe to install those two needed repos, instead use the packages to install them followed by a yum-modify event. Then run the main installation.

yum install smeserver-extrarepositories-remi-safe smeserver-extrarepositories-fws smeserver-extrarepositories-epel
signal-event yum-modify
yum install smeserver-nextcloud --enablerepo=smecontribs,epel,fws
signal-event webapps-update
service php-fpm start
service php71-php-fpm start
service php72-php-fpm start
service php73-php-fpm start
signal-event nextcloud-update

you can skip the service php-fpm* commands if it was already installed and running before the installation of nextcloud

then you can do the following and you can safely ignore the signal-event post-upgrade reboot if prompted, unless you also installed other packages that needs to do so.

config set UnsavedChanges no

or do

signal-event post-upgrade 
signal-event reboot

then

signal-event nextcloud-update

if you want to add SME user admin as administrator of nextcloud do

 OCC group:adduser admin admin

you might want to set your default phone region (use your country 2 letter code - low case)

occ config:system:set default_phone_region --value="us"

you might want to have nextcloud accessible to the Internet

config setprop nextcloud access public
signal-event nextcloud-update

Use a dedicated domain to connect to Nextcloud

first change the first line variable content with you nextcloud domain as defined with your DNS provider.

NEXTCLOUDDOMAIN="cloud.mydomain.com"
db domains set $NEXTCLOUDDOMAIN domain Description "Nextcloud" Content Primary Nameservers internet TemplatePath WebAppVirtualHost DocumentRoot /usr/share/nextcloud RequireSSL enabled letsencryptSSLcert enabled
signal-event domain-create $NEXTCLOUDDOMAIN

# this one to let nextcloud DAV be redirect correctly and to have collabora recognize the domain
config setprop nextcloud VirtualHost $NEXTCLOUDDOMAIN
signal-event nextcloud-update

# only if you use a Let's Encrypt certificate
expand-template /etc/dehydrated/domains.txt
dehydrated -c

Configuration

property default values
AdminPassword GENERATED string password for your main admin user for nextcloud (*)
AdminUser nextcloudadmin string main admin user for your installation (*)
cliurl enabled enabled,disabled force overwrite.cli.url to https://domain/nextcloud or https://domain if virtualhost is set; disable it if you have specific needs and then use occ command to set your value
DbName nextcloud string for mysql db
DbPassword GENERATED string for mysql db
DbUser nextcloud string for mysql db
TrustedDomains empty strings coma separated add domain or ip that are in need to be added to default access to nextcloud
VirtualHost empty domain name domain dedicated to nextcloud, needs to also be defined as domain on the server
access private private, public
status enabled enabled,disabled
MaxUploadSize 4096M number if a number will be converted to Megabytes, otherwise use the usual suffix : 2T for 2 terrabytes etc...
MemoryLimit 528M number webinterface : if a number will be converted to Megabytes, otherwise use the usual suffix : 2T for 2 terrabytes etc...
memory_limit 1024M number for cli like occ command or cron: if a number will be converted to Megabytes, otherwise use the usual suffix : 2T for 2 terrabytes etc...
Shares enabled enabled,disabled add the samba shares from the shared-folders contrib in the nextcloud ibays folder along with regular ibays
IncludeIbay empty strings coma separated add ibays names that need to be include. If not empty, only the name present here will be accessible via nextcloud. Take precedence over ExcludeIbay. You set it with a random string to exclude all ibays and shares from automatic inclusion.
ExcludeIbay Primary strings coma separated will exclude from nexcloud access any ibay via nextcloud. Default excludes Primary ibay. If you want to include Primary set it with a random string.
opcache.memory_consumption 32 number update this value if Nextcloud says that it should be
opcache.interned_strings_buffer 128 number update this value if Nextcloud says that it should be
PHPBaseDir colon separated string php base dir you want to add to the default example /home/e-smith/files/ibays/musique/files:/usr/share/GeoIP/GeoLite2-Country.mmdb:/proc/cpuinfo
UseSMB enabled enabled,disabled allow you to set ibay access via samba share or via Local driver in nextcloud. Enabled is for samba, this allow you to access as your user and have your quota accounted. It might be a little slower, and need you to have your password loaded in the session. Local driver if disabled, will let you access only what apache user (www) has right to access as member of a group.

(*) the SME admin user is also an admin of your nextcloud installation. You have two admin account as per default installation on SME Server.


example of setting :

 config setprop nextcloud ExcludeIbay ibay1,ibay2
 signal-event nextcloud-update

LDAP/AD Integration Settings

Do not change the LDAP/AD integration settings for "1. Server: Localhost" or you will break the Nextcloud install. If you want to add a second LDAP/AD server, click the "+" symbol to add another configuration and then add the appropriate LDAP/AD settings.

Command line

if you happen to need tweaking your installation, here is how to access the command line for Nextcloud on SME, we made it easier for you, just log as root and use the OCC command (using capitals), This command will execute for you what you need as the www user, using the needed version of php. Here two examples:

occ maintenance:mode --off
occ maintenance:repair

to seek for additional command consult Nextcloud documentation : https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html

Upgrade

yum  update smeserver-nextcloud nextcloud --enablerepo=smecontribs

CLI upgrade of Nextcloud software

You should rather prefer the online updater, but in case:

occ maintenance:mode --on
sudo -u www /usr/bin/php74 --define memory_limit=1024M -d apc.enable_cli=1 /usr/share/nextcloud/updater/updater.phar --no-interaction
occ upgrade
occ maintenance:mode --off

In case of a huge db, you can choose the online updater and then only issue the db update doing

occ upgrade
occ maintenance:mode --off

starting 25 to upgrace to 26, you should do

occ maintenance:mode --on
sudo -u www /usr/bin/php81 --define memory_limit=1024M -d apc.enable_cli=1 /usr/share/nextcloud/updater/updater.phar --no-interaction
occ upgrade
occ maintenance:mode --off

In case of a huge db, you can choose the online updater and then only issue the db update doing

occ upgrade
occ maintenance:mode --off

Restore info loglevel

occ config:system:set loglevel --value=3

Uninstall

Warning.png Warning:
if you plan to reinstall and had the nextcloud rpm installed do not yum remove it or rpm -e it as it would put you in a situation where you will not be able to reinstall and restore your old data. nextcloud-src rpm if present do not create such situation and can be removed safely.


Uninstalling the rpms

yum remove smeserver-nextcloud  nextcloud-src
rpm -e --justdb nextcloud

those folders will then remain

  • /usr/share/nextcloud : software and config
  • /home/e-smith/files/nextcloud : user data

also you will have mariadb or mariadb105 with nextcloud db and user.

And finally, db configuration with entry for nextcloud.

If all of those remains as is, a simple reinstall of the contrib will bring back nextcloud running. If you uninstalled it because your install was non functional or want a complete removal, there are extra steps.

In case of deleting either the db or part of the software folder, whenever you will try to reinstall the contrib, process will fail as db and files are not in sync.

In case you need to reinstall from scratch, first, backup what you might want to restore latter:

cd /home/e-smith/files/nextcloud/data
mysqldump nextcloud > nextcloud55.sql
mysqldump105 nextcloud > nextcloud105.sql
config print nextcloud /root/nextcloud.config
tar -czf   /root/nextcloud.tar.gz /home/e-smith/files/nextcloud/data /usr/share/nextcloud

then erase all what is remaining:

mysql -e "DROP DATABASE `config getprop nextcloud DbName`;DROP USER IF EXISTS `config getprop nextcloud DbUser`;"
mysql105 -e "DROP DATABASE `config getprop nextcloud DbName`;DROP USER IF EXISTS `config getprop nextcloud DbUser`;"
rm -rf /usr/share/nextcloud
rm -rf /home/e-smith/files/nextcloud
#this one is optional, and should not cause issue if still there
config delete nextcloud

and you should be able to start a new install from scratch

Release schedule

see https://github.com/nextcloud/server/wiki/Maintenance-and-Release-Schedule

as per 2024/01:

Version Name Release date End of life
29 2024-04-24
28 Hub 7 2023-12-12 2024-12
27 Hub 6 2023-06-13 2024-06
26 Hub 4 2023-03-21 2024-03
25 Hub 3 2022-10-19 2023-10
24 Hub 3 2022-05-03 2023-05
23 Hub 2 2021-11-30 2022-12
22 Hub 2021-07-06 2022-07
21 Hub 2021-02-22 2022-02
20 Hub 2020-10-03 2021-11
19 Hub 2020-06-03 2021-06
18 Hub 2020-01-16 2021-01

Change Database

If you are in the situation your are unable to update your nextcloud because of database requirements, you might need to install a newer and then migrate your db.

Here a simple procedure, after having the new db working as a sclo Mariadb105 for SME10 as example.

occ maintenance:mode --on
mysqldump `config getprop nextcloud DbName` > nextcloud.sql
echo "CREATE DATABASE IF NOT EXISTS `config getprop nextcloud DbName` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"| mysql105
mysql105 `config getprop nextcloud DbName`< nextcloud.sql
echo "CREATE USER IF NOT EXISTS `config getprop nextcloud DbUser`@localhost IDENTIFIED BY '`config getprop nextcloud DbPassword`';"| mysql105
echo "GRANT ALL PRIVILEGES ON `config getprop nextcloud DbName`.* TO `config getprop nextcloud DbUser`@localhost; FLUSH PRIVILEGES;" | mysql105
occ config:system:set dbhost --value localhost:/var/lib/mysql/mariadb105.sock --type string
occ maintenance:mode --off

After checking that all is working you can then delete yourself the old db from the previous mysql server, or keep it as a backup for a while. If it fails and just want to go back to previous state:

occ maintenance --on
occ config:system:set host --value localhost --type string
occ maintenance --off

File Scan

# scan all, could take hours if you have a lot of files
occ files:scan -v --all
# scan all that is inside a username path (including external storages mounted there)
occ files:scan -v myusername
#scan only a subfolder of a user (path needs a heading / and is relative to /home/e-smith/files/nextcloud/data)
occ files:scan -v --path="/myusername/files/myfolder/mysubfolder" myusername
#For external storage one has to use a user and the mount point in the user space, e.g. admin
occ files:scan -v --path="/admin/files/name_of_external_storage"

If you use groupgfolders app, then you might consider, to list the golders id

occ groupfolders:list

then for folder group with id 1

occ groupfolders:scan 1

Known issues

Web or GUI upgrade from NC25 to NC26

Due to the change of php version needed from php74 to php80 and higher, you need to issue the following command while using NC25 to be able to then upgrade to NC26. NC25 is the first to be able to handle php80, and NC26 requires php80 or higher.

signal-event nextcloud-update

Issue importing files in db "Entry path/to/file will not be accessible due to incompatible encoding"

yum install convmv --enablerepo=epel
#first test to see the changes
convmv -f utf-8 -t utf-8 --nfc -r /home/e-smith/files/nextcloud/data/username
#check, then with --notest
convmv -f utf-8 -t utf-8 --nfc -r --notest /home/e-smith/files/nextcloud/data/username
#then rescan 
occ files:scan -p /username/files/

this might also occurs on ibays / home folders and their files not all visibles from nextcloud, simply adapt the path for convmv /home/e-smith/files/ibays/ibayname/files/ or /home/e-smith/files/users/userame/home/

Remove legacy nextcloud rpm without deleting /usr/share/nextcloud content

for installs done before smeserver-nextcloud 1.2.0-16, the rppm nextcloud was required and was conflicting with web update. Since 1.2.0-16 it is not required anymroe and we use a nextcloud-src rpm which updates itself in /usr/share/nextcloud-src and is only used if you install the first time or restart from scratch your install. To remove the nextcloud rpm which is not needed and save your files:

rpm -e --justdb nextcloud

source https://unix.stackexchange.com/questions/208722/how-to-remove-an-rpm-package-while-keeping-certain-files

User cannot see shares/files

After a new install the admin user could see shares but not a user.

We had a single ibay and it was set:

Group Everyone
Write group
Read everyone

We created a new group called localusers and added the admin and single user.

We then set the ibay:

Group localusers
Write group
Read group

This appeared to fix the issue and the user could now see the files.

Upgrading beyond 20.x

To set the default phone region:

OCC config:system:set default_phone_region --type string --value="GB"

To fix missing indices - this may take a while so be patient:

OCC db:add-missing-indices

NC 20-21 : open_basedir restriction in effect. File(/templates/) is not within the allowed path

this is a bug in NC. It has been fixed in NC 22 and not backported to NC20. This is just log noise. You can ignore it while waiting to update see https://help.nextcloud.com/t/error-file-templates-is-not-within-the-allowed-path-s-after-update-from-20-xx-to-21-0-3/119843

Reset Database

For reference, whilst looking at resetting file caches I found this.

It is probably extremely dangerous but wanted to make a note.

https://github.com/nextcloud/server/issues/8113#issuecomment-565876798

Bugs

Please raise bugs under the SME-Contribs section in bugzilla and select the smeserver-nextcloud component or use this link


Below is an overview of the current issues for this contrib:

IDProductVersionStatusSummary (6 tasks)
12487SME Contribs10.0CONFIRMEDupdate nextcloud fail2ban filter
12486SME Contribs10.0UNCONFIRMEDocc requires /sbin/e-smith to be in the path
12406SME Contribs10.0CONFIRMEDNFR switch to PHP83 support for NC 29 and after
11169SME Contribs10alphaCONFIRMEDsmeserver-nextcloud requires a modify script
10590SME ContribsFuturCONFIRMEDNFR: limit access to some groups
10566SME Contribs10.0CONFIRMEDNFR: split action nextcloud-occ-conf

Changelog

Only released version in smecontrib are listed here.

smeserver-nextcloud Changelog: SME 10 (smecontribs)

2024/01/29 Jean-Philippe Pialasse 1.2.0-29.sme
- require nextcloud-src >= 26 [SME: 12318]

 multiple fixes and rewrites
- restore default log level [SME: 12412]

2023/09/09 Jean-Philippe Pialasse 1.2.0-28.sme
- workaround opcache segfault with php 81 using in memory only [SME: 12298]

- index file cache using Redis [SME: 12401]
2023/09/09 John Crisp 1.2.0-27.sme
- Fix syntax error in 20opcache.ini [SME: 12298]
2023/08/19 Jean-Philippe Pialasse 1.2.0-26.sme
- fix missing template-begin

2023/08/08 Jean-Philippe Pialasse 1.2.0-25.sme
- make php81 compatible for NC 25 and higher [SME: 12298]
- requires php81-redis [SME: 12401]
- recognize need cpuinfo access [SME: 12339]

- remove simple signup link [SME: 12329]

References

  1. https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html
  2. https://help.nextcloud.com/t/migration-from-mysql-to-mariadb/6816/3
  3. https://help.nextcloud.com/t/changing-mariadb-socket-when-hosting-multiple-db-ubuntu/68294
  4. https://markus-blog.de/index.php/2019/10/21/how-to-migrate-nextcloud-17-database-backend-from-mysql-to-postgresql/
  5. https://www.ullright.org/ullWiki/show/nextcloud-cheatsheet