在这个项目中,我们将制造一个树莓派 Owncloud 服务器,该服务器可以充当您自己的个人云存储。
随着对隐私的保护越来越困难,您可能正在考虑将文件移至私有云存储。如果是这种情况,那么本教程非常适合您。
重要的是要记住,由于您的数据将存储在本地网络中,因此如果从网络外部上载和下载文件,最终将占用更多带宽。
本教程将引导您完成安装和访问 Owncloud 所需的所有知识。
如果您好奇并想了解有关 Owncloud 软件的更多信息,请确保通过 Owncloud.org 查看其网站。
设备
我在个人云存储设置中使用了以下设备。
推荐的
树莓派
SD 卡 (建议使用 8GB 以上) 或 * 微型 SD 卡正在使用树莓派 2 或 B +
以太网线或 * Wifi 加密狗
外部硬盘驱动器或 USB 驱动器
可选的
树莓派外壳
USB 键盘
USB 鼠标
注意: 树莓派上的 USB 端口很可能无法为外部硬盘驱动器供电,因此您可能需要投资于 * 供电的 USB 集线器。
视频
如果您是个有远见的人,并且想观看我们的视频,以了解如何将本教程放在一起,请查看下面的视频。
它将带您了解启动和运行树莓派 Owncloud 服务器所需的一切。
设置树莓派 Owncloud 服务器
首先,您需要安装带有 Raspbian 的树莓派。如果您尚未安装 Raspbian ,请查看关于如何通过 NOOBS 安装 Raspbian 的指南 (全新的即用型软件)。
您可以通过多种方式将 Owncloud 安装到树莓派上。在本教程中,我们将下载网络服务器 (Nginx) 和 Owncloud 。
安装 NGINX 和 PHP
我们要做的第一件事是将 NGINX 和 PHP 安装到我们的树莓派中。我们将需要这两个软件来运行 Owncloud 软件。
1 首先,在 Pi 的命令行或通过 SSH 中,我们将需要更新树莓派及其程序包,执行此操作通过输入:
sudo apt-get update
sudo apt-get upgrade
2 接下来,我们需要将”www-data” 用户添加到”www-data” 组。
sudo usermod -a -G www-data www-data
这些说明已更新为可与 Raspbian Buster 一起使用。如果您使用的是早期版本,则强烈建议您先升级到 Raspbian Buster,然后再继续。
您可以按照从 Raspbian Stretch 升级到 Buster 上的指南进行操作。
3 运行 Raspbian Buster 后,您可以安全地继续本教程。
在此步骤中,我们将安装运行 Owncloud 所需的所有软件包。这包括 php7 .3 及其 OwnCloud 依赖的众多模块。
运行以下命令以安装我们需要的一切。
sudo apt-get install nginx openssl ssl-cert php7.3-xml php7.3-dev php7.3-curl php7.3-gd php7.3-fpm php7.3-zip php7.3-intl php7.3-mbstring php7.3-cli php7.3-mysql php7.3-常见 php7 .3-cgi php7.3-apcu php7.3-redis redis-server php-pear curl libapr1 libtool libcurl4-openssl-dev
为 Owncloud 和 HTTPS 设置 NGINX
我们的下一步是现在设置和配置 NGINX 使其与 Owncloud 软件一起使用。我们还将设置 NGINX ,使其也可以支持 HTTPS 连接。
1 现在我们需要创建一个 SSL 证书,您可以通过运行以下命令来做到这一点:
sudo openssl req $ @ -new -x509 -days 730 -nodes -out /etc/nginx/cert.pem -keyout /etc/nginx/cert.key
只需输入询问每个问题的相关数据。
2 除了 SSL 证书,我们还需要生成一个自定义 dhparam 文件。该文件有助于确保我们的 SSL 连接保持安全。默认情况下,这将使用不安全的默认值。
要生成一个 2048 字节长的 dhparam 文件,请在树莓派上运行以下命令。此过程将花费很长时间,最多需要 2 个小时。在命令中添加 dhparam 标志将有助于加快处理速度,但可以说安全性较低。
sudo openssl dhparam -out /etc/nginx/dh2048.pem 2048
3 现在,我们需要对刚刚生成的三个证书文件进行 chmod 。
sudo chmod 600 /etc/nginx/cert.pem
sudo chmod 600 /etc/nginx/cert.key
sudo chmod 600 /etc/nginx/dh2048.pem
4 让我们清除服务器配置文件,因为我们将在其中复制并粘贴自己的版本。
sudo sh -c"echo">/etc/nginx/sites-available/default"
5 现在,我们配置网络服务器配置,以使其能够正确运行 Owncloud 。
sudo vim /etc/nginx/sites-available/default
6 现在,只需将以下代码复制并粘贴到文件中即可。
上游 php 处理程序{
服务器 Unix :/var/run/php/php7.3-fpm.sock;
}
服务器{
听 80 ;
服务器名称 _;
#允许通过加密
位置/。众所周知/acme-challenge/{
根/var/www/owncloud;
}
#强制执行 https
位置/{
返回 301 https://$ host $ request_uri;
}
}
服务器{
监听 443 SSL http2;
服务器名称 _;
ssl_certificate /etc/nginx/cert.pem;
ssl_certificate_key /etc/nginx/cert.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers'ECDHE-RSA-AES128-GCM-SHA256:AES256 + EECDH:AES256 + EDH';
ssl_dhparam /etc/nginx/dh2048.pem;
ssl_prefer_server_ciphers;
keepalive_timeout 70;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security始终为"最大年龄= 15552000; includeSubDomains;预加载";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options"SAMEORIGIN";
add_header X-XSS-Protection"1; mode = block";
add_header X-Robots-Tag无;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies无;
根/var/www/owncloud /;
位置= /robots.txt {
允许所有;
log_not_found关闭;
access_log关闭;
}
#仅 user _webfinger应用需要以下 2 条规则。
#如果您打算使用此应用,请取消注释。
#rewrite ^ /。 well -known/host-meta /public.php?service=host-meta last;
#rewrite ^ /。 well -known/host-meta.json /public.php?service=host-meta-json最后;
位置= /。众所周知/carddav {
返回 301 $ scheme://$host/remote.php/dav;
}
位置= /。众所周知/caldav {
返回 301 $ scheme://$host/remote.php/dav;
}
#设置最大上传大小
client_max_body_size 512M;
fastcgi_buffers 8 4K;
fastcgi_ignore_headers X-Accel-Buffering;
gzip关闭;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
位置/{
重写^ /index.php$uri;
}
位置〜^ /(?: build | tests | config | lib | 3rdparty | templates | data)/{
返回 404 ;
}
位置〜^ /(?:\。| autotest | occ | issue | indie | db_ | console){
返回 404 ;
}
位置〜^ /(?: index | remote | public | cron | core/ajax/update | status | ocs/v [12] | updater /.+ | ocs-provider /.+ | core/templates/40 [34] )\。 php (?:$ | /){
fastcgi_split_path_info ^(。+ \。 php )(/.*)$;
包括 fastcgi _params;
fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
fastcgi_param SCRIPT_NAME $ fastcgi_script_name;
fastcgi_param PATH_INFO $ fastcgi_path_info;
fastcgi_param HTTPS开启;
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_read_timeout 180;
fastcgi_pass php-handler;
fastcgi_intercept_errors;
fastcgi_request_buffering关闭; #自 NGINX 1.7.11起可用
}
位置〜^ /(?: updater | ocs-provider)(?:$ | /){
try_files $ uri $ uri/= 404;
索引 index .php;
}
位置〜\。(?: css | js)$ {
try_files $ uri /index.php$uri$is_args$args;
add_header缓存控制"max-age = 15778463";
add_header Strict-Transport-Security"max-age = 15552000; includeSubDomains";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options"SAMEORIGIN";
add_header X-XSS-Protection"1; mode = block";
add_header X-Robots-Tag无;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies无;
access_log关闭;
}
位置〜\。(?: svg | gif | png | html | ttf | woff | ico | jpg | jpeg |地图)$ {
add_header高速缓存控件"public,max-age = 7200";try_files $ uri /index.php$uri$is_args$args; access_log关闭;
}
}
7 现在,按 CTRL + X,然后按 Y ,再按 ENTER ,保存并退出文件。
8 在我们更改了 NGINX 的配置后,我们需要通过运行以下命令来重新启动其服务。
sudo systemctl重启 nginx
为 Owncloud 调整 PHP
现在设置了 NGINX ,我们现在就可以继续进行 PHP 并准备好与我们的 Owncloud 安装一起使用。当我们使用 php-fpm
时,我们还需要做一些其他事情。
1 现在,完成了一些配置,我们需要更新,首先通过输入打开 PHP 配置文件。
sudo vim /etc/php/7.3/fpm/php.ini
2 在此文件中,我们要查找并更新以下几行。 (CTRL + W 允许您搜索)
找
upload_max_filesize = 2M
用。。。来代替
upload_max_filesize = 2000M
找
post_max_size = 8M
用。。。来代替
post_max_size = 2000M
3 完成后,保存,然后按 CTRL + X,然后按 Y ,然后按 ENTER 退出。
4 下一步是对 php -fpm 池配置进行一些更改。原因是 php -fpm 无法访问环境变量。
运行以下命令以开始修改配置文件。
sudo vim /etc/php/7.3/fpm/pool.d/www.conf
5 在此文件中,找到以下代码块,并将其替换为下面的代码。
您可以使用 CTRL + W 更快地找到此代码块。通常,它位于文件底部附近。
找
; env [HOSTNAME] = $ HOSTNAME
; env [PATH] =/usr/local/bin:/usr/bin:/bin
; env [TMP] =/tmp
; env [TMPDIR] =/tmp
; env [TEMP] =/tmp
用。。。来代替
env [HOSTNAME] = $ HOSTNAME
env [PATH] =/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
env [TMP] =/tmp
env [TMPDIR] =/tmp
env [TEMP] =/tmp
6 进行这些更改后,继续并按 CTRL + X,然后按 Y ,然后按 ENTER ,保存文件。
添加交换内存
下一步是向系统添加一些交换内存。
通过添加交换内存,树莓派可以通过利用存储设备上的空间来超出其内存范围。虽然比 RAM 慢很多,但比程序崩溃要好
1 为了增加交换内存的数量,我们需要修改一个名为 dphys-swapfile
的文件。
要修改此文件,请使用以下命令:
sudo vim /etc/dphys-swapfile
2 在此文件中,找到以下行并将其更改为下面的内容。
找
CONF_SWAPSIZE = 100
用。。。来代替
CONF_SWAPSIZE = 512
3 完成后,保存,然后按 CTRL + X,然后按 Y ,然后按 ENTER 退出。
4 为了使更改生效,我们现在需要通过运行以下命令来重新启动树莓派。
sudo reboot
为 Owncloud 设置 MySQL 数据库和用户
在开始本节之前,您必须已经在树莓派上设置了 MySQL 服务器。
1 为了能够创建数据库,我们将需要使用 MySQL 命令行界面。
我们可以通过运行以下命令来加载该工具。
sudo mysql -u root -p
2 登录后,您就可以开始与 MySQL 服务器进行交互了。
我们将要创建的数据库称为 ownclouddb
。我们可以通过运行以下命令来创建此数据库。
创建数据库 ownclouddb ;
3 创建数据库后,让我们创建一个可以与其交互的用户。
我们可以通过运行以下命令来创建一个名为”ownclouduser” 的用户。确保用安全密码替换”[PASSWORD]”,并记下来以备后用。
创建用户'ownclouduser'@'localhost'由'[PASSWORD]'标识;
4 我们的下一步是将访问权限授予新用户。
我们可以通过运行以下命令来授予这些特权。
将所有特权授予 ownclouddb 。*至'ownclouduser'@'localhost';
5 最终的任务是清除特权。如果我们不这样做,那么服务器将不会利用我们的更改。
要刷新特权,我们需要做的就是运行以下命令。
冲洗特权;
刷新特权表后,我们可以继续安装和设置 Owncloud 软件。
下载和提取 Owncloud
现在,在本节中,我们将在树莓派上安装实际的 Owncloud 软件。安装 Owncloud 需要几个简单的步骤。
1 Pi 重新启动后,您将需要在树莓派上安装 Owncloud 。
让我们切换到运行脚本的目录。
cd/var/www /
2 现在我们在正确的目录中,我们现在可以下载最新版本的 Owncloud 。
为此,我们将通过运行以下命令来使用 wget
。
sudo wget https://download.owncloud.org/community/owncloud-latest.tar.bz2**3** 现在,使用 tar 解压缩我们下载的档案。
sudo tar -xvf owncloud-latest.tar.bz2
4 提取所有内容后,我们需要确保 www-data
拥有文件。
我们可以使用 chown 命令递归修改权限 。
sudo chown -R www-data:www-data/var/www
5 现在,我们需要打开.user.ini
文件,以实施我们在本教程前面所做的一些更改。
sudo vim /var/www/owncloud/.user.ini
6 在这里更新以下值,因此它们是 2000M :
upload_max_filesize = 2000M
post_max_size = 2000M
memory_limit = 2000M
7 现在,我们应该能够通过您的 PI 的 IP 地址连接到 Owncloud 。
在设置管理员帐户之前,您可能需要安装外部驱动器,因此您的树莓派 Owncloud 服务器具有大量磁盘空间。只需按照下一节中的说明进行操作即可。
安装和设置驱动器
设置外部驱动器虽然相对简单,但有时无法正常运行。
这些说明用于安装并允许 Owncloud 将文件存储到外部硬盘驱动器上。
1 首先,如果您有 NTFS 驱动器,则需要输入以下内容来安装 NTFS 软件包:
sudo apt-get install ntfs-3g
2 现在,我们建立一个可以挂载的目录。
sudo mkdir /media/ownclouddrive
3 现在,我们需要获取_GID , UID,_和_UUID_,因为我们需要尽快使用它们。为_GID_输入以下命令:
id -g www-data
4 现在为_UID_输入以下命令:
id -u www-data
5 同样,如果我们得到硬盘驱动器的_UUID_,即使您将其插入其他 USB 端口,Pi 也会记住该驱动器。
ls -l/dev/disk/by-uuid
复制最后一个条目的浅蓝色字母和数字 (末尾应带有 -> ../../sda1 之类的内容)。
6 现在,将驱动器添加到 fstab 文件中,以便它将以正确的权限启动。
sudo vim /etc/fstab
7 现在,将以下行添加到文件底部,使用上面得到的值更新_UID , GUID_和 UUID 。 (以下内容应全部放在一行上)
UUID = DC72-0315/media/ownclouddrive自动 nofail ,uid = 33,gid = 33,umask = 0027,dmask = 0027,noatime 0 0
8 重启树莓派,驱动器应自动安装。如果已安装它们,那么我们都很好。
注意:如果在启动时出现错误,指出 Pi 处于紧急模式,则可能意味着 fstab 条目存在问题。只需编辑 fstab 文件 (sudo nano/etc/fstab
) 并删除添加的行或查找错误并进行修复即可。
设置 Owncloud
我将在这里简要介绍设置 Owncloud 树莓派的基础知识。如果您需要更多信息,我强烈建议您在其网站上查阅手册。您可以在 Owncloud 手册站点此处中找到它们。
1 在您喜欢的网络浏览器中,您需要转到树莓派的 IP 地址。
如果您不知道 Pi 的本地 IP ,则可以运行以下命令。
主机名-I
2 转到 IP 后,您想获取证书错误,请将其添加到您的例外列表中,这样可以安全进行。
在 Chrome 上,点击” 显示高级” 按钮 (1 )。
然后单击” 进入 YOURPISIPADDRESS“(2 )。
3 首次打开 Owncloud 时,您需要执行一些初始设置步骤。
您需要做的第一件事是为您的 Owncloud 管理员帐户指定一个” 用户名” 和” 密码”。 (1 )
接下来,我们需要调出存储和数据库设置。您可以通过单击” 存储和数据库 “下拉列表 (2 ) 来完成此操作。
如果您使用其他数据文件夹,则可以使用” 数据文件夹” 文本框 (3 ) 进行指定。
然后,我们需要调出 MySQL 数据库选项。您可以通过单击 MySQL /MariaDB 切换 (4 ) 来找到它们。
接下来,我们需要填写三位信息,即数据库用户,该用户的密码和数据库名称。
1. 首先,您需要指定” 数据库用户 “(A )。如果您遵循本指南,则应为 ownclouduser
。
2. 第二个选项需要指定为上述用户设置的密码。 (B )
3. 最后,我们需要设置数据库名称。 (C ) 如果使用了本教程中的内容,则应将其设置为 ownclouddb
。
完成所有设置后,点击” 完成设置” 按钮 (4 )。
如果您需要更新,但发现内部更新程序不起作用,则可能意味着您需要手动进行更新。您可以在 Owncloud 的更新手册页上找到有关如何进行更新的详细过程。
接下来的两个部分将向您展示如何进一步改进 Owncloud 软件。
为 Owncloud 设置内存缓存
在本节中,我们将向您展示如何配置 Owncloud 以使用 APCu 和 Redis 。 APCu 用作对象内存缓存,而 Redis 则用于处理事务性文件锁定。
同时使用这两项将有助于改善树莓派上 Owncloud 的性能。
1 要启用这些功能,我们需要对 Owncloud 配置文件进行更改。
通过运行以下命令开始编辑此文件。
sudo vim /var/www/owncloud/config/config.php
2 在此文件中,找到以下行并在其下方添加文本块。
找
'已安装'=>是,
在下方添加
'memcache.local'=>'\ OC \ Memcache \ APCu',
'memcache.locking'=>'\ OC \ Memcache \ Redis',
'redis'=> [
'主机'=>'本地主机',
'端口'=> 6379,
],
3 完成后,按 CTRL + X,然后按 Y ,再按 ENTER ,保存文件。
与 Owncloud 一起使用 System Cron
Owncloud 团队建议您进行设置,以便操作系统运行脚本 cron 作业而不是 Ajax 。
1 为了能够为 Owncloud 设置 cron 作业,我们需要使用 www-data
用户的 crontab 。
通过运行以下命令开始修改用户的 cron 。
sudo crontab -u www-data -e
如果询问您应该使用什么编辑器来修改 crontab ,我们强烈建议您使用 nano
。
2 在此文件的底部添加以下行。
* * * * */usr/bin/php/var/www/owncloud/occ系统:cron
这条线将每分钟运行 Owncloud 的 cron 作业。
3 完成后,按 CTRL + X,然后按 Y ,然后按 ENTER 保存文件。
现在,您应该已经在树莓派上正确设置了 Owncloud 。
端口转发和外部访问
如果您想访问本地网络之外的云驱动器,则需要设置端口转发并对我们的配置文件进行一些更改。
首先,我们需要返回默认文件并更改 server \ _name 值 (其中有 2 个)。将它们更新为您的外部 IP 地址。您可以通过什么是我的 IP 获取 IP 。
如果您有动态 IP ,则可能需要设置动态 DNS 并将其用作您的地址。您可以在我的端口转发指南中找到有关此信息。
输入以下内容以调出我们的默认服务器文件:
sudo vim /etc/nginx/sites-available/default
更新服务器文件中的 IP 后,您需要将外部 IP 添加到受信任的 IP 列表中,并确保 Owncloud 不会覆盖它。为此,请打开 Owncloud 配置文件并输入:
sudo vim /var/www/owncloud/config/config.php
在这里,将新项目添加到受信任域阵列 (这将是您的外部 IP 地址)。您的新条目应如下所示 (x 只是占位符)。
1 =>'xxx.xxx.xxx.xxx',
最后,将 overwrite .cli.url 行的 URL 更新为您的 IP 地址。它看起来应该像这样。
'overwrite.cli.url'=>'https://xxx.xxx.xxx.xxx',
以下是完成的 config .txt 文件的示例。
完成后,通过输入以下内容重新启动 Nginx 服务:
sudo service nginx 重启
请务必查看我的端口转发指南,并将以下端口 443 用于内部,我建议将随机端口用作外部端口。设置外部端口时,请确保尚未为特定程序保留该端口。
从外部连接到 Owncloud 服务器时,您需要确保使用 https ,否则将在浏览器中收到无效的请求。
设置端口转发非常容易,并且可以让您随时随地访问您的个人云。同样,完成此操作后,您仍然可以通过本地 IP 进行连接。
我希望本教程可以帮助您制作自己的树莓派 OwnCloud。如果您有任何麻烦,请留下反馈,或者如果我有任何遗漏,请在下面给我们留言。