Nextcloud
Nextcloud 是基于 WedDAV 的解决方案,用于在线存储和共享您的数据、文件、图像、视频、音乐、日历和联系人。Nextcloud 是 ownCloud 的一个分支,包含了企业功能。
安装
nextcloud 在 Alpine 3.5 及更高版本中可用。
在开始安装任何东西之前,请确保您拥有最新的软件包。确保您在 /etc/apk/repositories 文件中使用 'http' 仓库,然后
apk update
数据库
首先您必须决定使用哪个数据库。使用下面列出的数据库之一。
Sqlite
您需要做的就是安装软件包
apk add nextcloud-sqlite
PostgreSQL
安装软件包
apk add nextcloud-pgsql postgresql postgresql-client
接下来是配置并启动数据库
rc-service postgresql setup rc-service postgresql start
接下来,您需要创建一个用户并临时授予 CREATEDB 权限
psql -U postgres CREATE USER mycloud WITH PASSWORD 'test123'; ALTER ROLE mycloud CREATEDB; \q
设置 postgresql 在启动时启动
rc-update add postgresql
MariaDB
安装软件包
apk add nextcloud-mysql mariadb mariadb-client
现在配置并启动 mariadb
mariadb-install-db --user=mysql --datadir=/var/lib/mysql service mariadb start rc-update add mariadb mariadb-secure-installation
按照向导设置密码等。
接下来,您需要创建一个用户和数据库并设置权限
mariadb -u root -p CREATE DATABASE nextcloud; GRANT ALL ON nextcloud.* TO 'mycloud'@'localhost' IDENTIFIED BY 'test123'; GRANT ALL ON nextcloud.* TO 'mycloud'@'localhost.localdomain' IDENTIFIED BY 'test123'; FLUSH PRIVILEGES; EXIT
mariadb-client 不再需要了。让我们卸载它
apk del mariadb-client
Webserver
接下来是选择、安装和配置 webserver。在本例中,我们将安装 nginx 或 lighttpd。您可以自由安装您选择的任何其他 webserver,只要它支持 PHP 和 FastCGI 即可。为您的 webserver 生成 SSL 证书不在本文档的范围之内。
nextcloud-initscript 有助于使用 php-fpm 运行 webserver。
apk add nextcloud-initscript
Nginx
安装所需的软件包
apk add nginx
删除默认的 nginx 网站配置
rm /etc/nginx/http.d/default.conf
在 /etc/nginx/http.d/mysite.mydomain.com.conf 中为您的站点创建一个配置文件
内容 /etc/nginx/http.d/mysite.mydomain.com.conf
如果您计划启用上传 - 您很可能这样做)- 那么您需要修改默认的
client_max_body_size 1m;'
设置在 /etc/nginx/nginx.conf 中。为了测试目的,我通过将其更改为禁用限制
client_max_body_size 0;
这使得大文件上传和自动上传可以工作。请注意,这是一个文件大小限制,此外还有 /etc/php81/php-fpm.d/nextcloud.conf 中设置的限制。第二个限制默认为
; Maximal size of a file that can be uploaded via web interface. php_admin_value[memory_limit] = 512M php_admin_value[post_max_size] = 513M php_admin_value[upload_max_filesize] = 513M
另一个可能限制文件大小的设置在配置文件 /etc/php81/php.ini 中,我在其中将限制设置为
upload_max_filesize = 513M
以匹配 /etc/php81/php-fpm.d/nextcloud.conf 文件大小限制。
如果您从 RAM 运行并且正在处理大文件,您可能需要将 FastCGI 临时文件从 /tmp 移动到 /var/tmp 或安装在 hdd 上的目录
fastcgi_temp_path /var/tmp/nginx/fastcgi 1 2;
大文件上传需要一些时间才能被 php-fpm 处理,因此您需要增加 Nginx 默认读取超时时间
fastcgi_read_timeout 300s;
/etc/nginx/nginx.conf 应该已经配置为从此目录加载您的站点配置
... # Includes virtual hosts configs. include /etc/nginx/http.d/*; ...
启动服务
service nginx start service nextcloud start
启用服务的自动启动
rc-update add nginx rc-update add nextcloud
Lighttpd
安装软件包
apk add lighttpd php5-cgi
确保您在 lighttpd 中启用了 FastCGI
内容 /etc/lighttpd/lighttpd.conf
启动 webserver
rc-service lighttpd start
链接 nextcloud 安装到 web 服务器目录
ln -s /usr/share/webapps/nextcloud /var/www/localhost/htdocs
防火墙
接下来,在防火墙中为 webserver 打开所需的端口。您可以将以下代码段用作新文件 /etc/nftables.d/50-https.nft 中 nftable 规则的参考
内容 /etc/nftables.d/50-https.nft
其他设置
加固
考虑更新 /etc/lighttpd/lighttpd.conf 中的变量 url.access-deny
以获得额外的安全性。将 "config.php"
添加到变量中 (数据库存储在那里),使其看起来像这样
内容 /etc/lighttpd/lighttpd.conf
重启 lighttpd 以激活更改
rc-service lighttpd restart
附加软件包
一些大型应用,如 pdfviewer、texteditor、notifications 和 videoplayer 位于单独的软件包中
apk add nextcloud-files_pdfviewer nextcloud-text nextcloud-notifications nextcloud-files_videoplayer nextcloud-files_external
您还可以安装 nextcloud-default-apps 元软件包,它安装所有 30 个核心 Nextcloud 应用(在上述链接下列为依赖项)
apk add nextcloud-default-apps
如何创建自签名 SSL 证书
安装 openssl
apk add openssl
生成您的自签名证书及其私钥
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl1.1/private/nextcloud-selfsigned.key -out /etc/ssl1.1/certs/nextcloud-selfsigned.crt
编辑您的 nginx 配置
内容 /etc/nginx/http.d/mysite.mydomain.com.conf
如何安装和设置自动续订 LetsEncrypt SSL 证书
在按照下面“配置和使用 Nextcloud”部分中的说明首次设置 Nextcloud 服务器后,我按照以下链接中的 SSL 设置说明进行操作:[Tech Jogging]。
我还必须将我的 Nextcloud 服务器的完全限定域名 (FQDN) 添加到 /etc/nextcloud/config.php 中的受信任域名列表中。在标记为“trusted_domains”的部分中
'trusted_domains' => array ( 0 => '<machine's local IP address>', 1 => 'nextcloud.mydomain.com', ), }}
配置和使用 Nextcloud
配置
将您的浏览器指向 https://mysite.mydomain.com
并按照屏幕上的说明完成安装,提供之前创建的数据库用户和密码。
加固 PostgreSQL
如果您选择了 PGSQL 后端,请从 'mycloud' 用户撤销 CREATEDB 权限
psql -U postgres ALTER ROLE mycloud NOCREATEDB; \q
增加上传大小
/etc/php81/php-fpm.d/nextcloud.conf has overridden default file sizes, but they can be modified further to suit your needs:
; Maximal size of a file that can be uploaded via web interface. php_admin_value[memory_limit] = 512M php_admin_value[post_max_size] = 513M php_admin_value[upload_max_filesize] = 513M
为 nginx/php81 启用 opcache
要提高性能,请安装
apk add php81-opcache
现在取消注释/编辑 /etc/php81/php.ini 中的行
... opcache.enable=1 opcache.enable_cli=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 //you can reduce this slightly when short on RAM opcache.save_comments=1 opcache.revalidate_freq=1 ...
重启 php-fpm81
rc-service php-fpm81 restart
为视频启用缩略图
为了能够为视频生成缩略图,除了 配置 nextcloud 之外,您还需要从 php 的禁用函数中取消列出 proc_open
。PHP 依赖于该函数来调用 ffmpeg 以生成缩略图,否则即使您在 config.php 中启用了它,它也会失败。
从 /etc/php81/php-fpm.d/nextcloud.conf 中的禁用函数中删除 proc_open
; Disable certain functions for security reasons. ; https://php.ac.cn/disable-functions php_admin_value[disable_functions] = exec,passthru,shell_exec,system,curl_multi_exec,show_source
现在将 'OC\\Preview\\Movie'
添加到 'enabledPreviewProviders'
列表并安装 ffmpeg
apk add ffmpeg
重启 fpm 服务后,它应该开始为视频生成缩略图。
客户端
有适用于许多平台(包括 Android)的客户端
- https://nextcloud.org/sync-clients/[死链] (nextcloud 同步客户端)
- https://nextcloud.com/install/ (Android 客户端)
nextcloud-client 当前在社区仓库中可用。
视频通讯
Nextcloud 11 的主要功能之一,在 Alpine 3.6(当前为 edge)上可用的是 WebRTC 应用,它依赖于 Spreed WebRTC 服务器,该服务器在 Alpine testing 仓库中可用。一切都还在 beta 阶段,所以请注意这一点 :-)。如果您想要一个私有视频会议服务器,请使用 Nginx 安装 Nextcloud 并执行以下操作(您也可以使用 Apache 并按照 nextcloud.com 上的Apache 配置说明进行操作)
将以下配置放在 Nginx 的 server 部分
# Spreed WebRTC location ^~ /webrtc { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_buffering on; proxy_ignore_client_abort off; proxy_redirect off; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_next_upstream error timeout invalid_header http_502 http_503 http_504; }
将以下部分放在 Nginx 的 http 部分
map $http_upgrade $connection_upgrade { default upgrade; '' close; }
重新加载 Nginx
rc-service nginx reload
安装 Spreed WedRTC 服务器(确保您已启用 testing 仓库)
apk add spreed-web-server
使用 /etc/spreed-webrtc/spreed-webrtc-server.conf 中的配置文件,按照 nextcloud.com 上的说明配置 Spreed WebRTC 服务器。然后启动服务器
rc-service spreed-web-server start
rc-update add spreed-web-server
在 Nextcloud 中安装 Spreed 视频通话 应用,享受您的私有视频通话。
Nextcloud CLI occ
访问 nextcloud 的 CLI 工具 occ
sudo -u nextcloud php82 /usr/share/webapps/nextcloud/occ
升级
如果您使用的是 alpine stable 而不是 edge,请注意当升级跳过主要版本时:Nextcloud 不支持在其升级路径中跳过主要版本。因此,alpine 也将之前的 nextcloud 版本打包为单独的软件包。