在这个项目中,我们要做一个Raspberry Pi Owncloud服务器,这可以作为你自己的个人云存储。
随着保护隐私越来越难,你可能会考虑将你的文件转移到私人云存储。如果是这种情况,那么本教程就非常适合你。重要的是要记住,由于您的数据将存储在您的本地网络上,如果从网络外上传和下载文件,您将最终使用更多的带宽。本教程将带你完成你需要知道的一切,让Owncloud设置和访问。如果你很好奇,想了解更多关于Owncloud软件的信息,那么一定要去他们的网站Owncloud.org看看。
设备清单
我这次个人云存储设置使用了以下设备,点击链接可直达特别优惠购买。
建议
- ? 树莓派
- ? 高速SD卡
- ? 树莓派4B电源
- ? 以太网线或Wifi
- 外置硬盘或U盘
可选
注意:Raspberry Pi上的USB端口很可能无法为外部硬盘供电,所以你可能需要买一个供电的USB集线器。
设置Raspberry Pi Owncloud服务器
首先,你需要有一个安装了Raspbian的Raspberry Pi。如果你还没有安装Raspbian,那么请查看我们的指南,了解如何通过NOOBS(New Out of the Box Software)安装Raspbian。
有相当多的方法,你能够安装Owncloud到你的Raspberry Pi上。在这个特定的教程中,我们将下载一个网络服务器(Nginx)和Owncloud。
安装NGINX和PHP
首先,我们需要做的是将NGINX和PHP安装到我们的Raspberry Pi上。我们需要这两个软件来运行Owncloud软件。
1. 首先,在The Pi的命令行或通过SSH,我们需要更新Raspberry Pi和它的包,通过输入。
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-common 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文件,在Raspberry Pi上运行以下命令。这个过程会花费相当长的时间,最长可达2小时。
在命令中加入dhparam标志有助于加快进程,但可以说是不太安全。
sudo openssl dhparam -out /etc/nginx/dh2048.pem 2048
3. 现在我们需要对刚才生成的三个cert文件进行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. 现在让我们配置Web服务器的配置,使其正确运行Owncloud。
sudo nano /etc/nginx/sites-available/default
6. 现在只需将以下代码复制并粘贴到文件中。
upstream php-handler {
server unix:/var/run/php/php7.3-fpm.sock;
}
server {
listen 80;
server_name _;
#Allow letsencrypt through
location /.well-known/acme-challenge/ {
root /var/www/owncloud;
}
# enforce https
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
server_name _;
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 on;
keepalive_timeout 70;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains; preload" always;
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 none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
root /var/www/owncloud/;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# The following 2 rules are only needed for the user_webfinger app.
# Uncomment it if you're planning to use this app.
#rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
#rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
location = /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}
# set max upload size
client_max_body_size 512M;
fastcgi_buffers 8 4K;
fastcgi_ignore_headers X-Accel-Buffering;
gzip off;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location / {
rewrite ^ /index.php$uri;
}
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
return 404;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
return 404;
}
location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include 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 on;
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_read_timeout 180;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off; #Available since NGINX 1.7.11
}
location ~ ^/(?:updater|ocs-provider)(?:$|/) {
try_files $uri $uri/ =404;
index index.php;
}
location ~ \.(?:css|js)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "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 none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
access_log off;
}
location ~ \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg|map)$ {
add_header Cache-Control "public, max-age=7200";
try_files $uri /index.php$uri$is_args$args;
access_log off;
}
}
7. 现在保存并退出文件,按CTRL + X,然后按Y,接着按ENTER键。
8. 由于我们已经对NGINX的配置进行了修改,我们需要通过运行以下命令来重新启动它的服务。
sudo systemctl restart nginx
为Owncloud调整PHP
随着NGINX的设置,我们现在可以继续准备PHP与我们的Owncloud安装工作。由于我们使用的是php-fpm,所以我们还需要做一些额外的事情。
1. 现在已经完成了,我们还需要更新一些配置,首先打开PHP配置文件,输入。
sudo nano /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-pm池的配置进行一些修改。原因是php-pm不能访问环境变量。
运行以下命令开始修改配置文件。
sudo nano /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 nano /etc/dphys-swapfile
2. 在这个文件中,找到下面的一行,并将其改为我们下面的内容。找到
CONF_SWAPSIZE=100
替换为
CONF_SWAPSIZE = 512
3. 完成后,保存后按CTRL + X,然后按Y,再按ENTER键退出。
4. 为了让我们的更改生效,我们现在需要通过运行下面的命令重新启动Raspberry Pi。
sudo reboot
为Owncloud建立一个MySQL数据库和用户。
在开始本节之前,你必须已经在Raspberry Pi上设置了一个MySQL服务器。
1. 为了能够创建我们的数据库,我们需要利用MySQL命令行界面。
我们可以通过运行以下命令来加载该工具。
sudo mysql -u root -p
2. 登录后,你就可以开始与你的MySQL服务器进行交互。
我们要创建的数据库叫做 ownclouddb。我们可以通过运行以下命令来创建这个数据库。
CREATE DATABASE ownclouddb;
3. 创建了数据库后,现在让我们创建一个可以与之交互的用户。
我们可以通过运行下面的命令来创建一个名为 ownclouduser 的用户。确保将[PASSWORD]替换为安全密码,并记下,以备后用。
CREATE USER 'ownclouduser'@'localhost' IDENTIFIED BY '[PASSWORD]';
4. 我们下一步就是给我们的新用户授予访问权限。
我们可以通过运行以下命令来授予这些权限。
GRANT ALL PRIVILEGES ON ownclouddb.* TO 'ownclouduser'@'localhost';
5. 最后一个任务是刷新权限。如果我们不这样做,那么我们的改动就不会被服务器利用。
要刷新权限,我们只需要运行以下命令即可。
FLUSH PRIVILEGES;
权限表刷新后,我们就可以继续安装和设置Owncloud软件了。
下载和提取Owncloud
现在在本节中,我们将安装实际的Owncloud软件到我们的Raspberry Pi上。安装Owncloud需要几个简单的步骤。
1. 一旦Pi重启,你就需要将Owncloud安装到Raspberry Pi上。
让我们改变到我们将运行脚本的目录。
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 nano /var/www/owncloud/.user.ini
6. 在这里更新以下数值,所以它们是2000M。
upload_max_filesize=2000M
post_max_size=2000M
memory_limit=2000M
7. 现在,我们应该能够在你的PI的IP地址连接到Owncloud。
在设置管理账户之前,你可能想挂载一个外置硬盘,这样你就有很多磁盘空间给你的Raspberry Pi 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 nano /etc/fstab
7. 现在在文件底部添加以下一行,用我们上面得到的值更新UID、GUID和UUID。(下面的内容应该都在一行中)
UUID=DC72-0315 /media/ownclouddrive auto nofail,uid=33,gid=33,umask=0027,dmask=0027,noatime 0 0
8. 重新启动Raspberry Pi,驱动器应该会自动被挂载。如果它们被安装好了,我们就可以了。
注意: 如果你得到一个错误说明Pi在启动时处于紧急模式,那么这可能意味着fstab条目有问题。只需编辑fstab文件(sudo nano /etc/fstab)并删除新增的行,或查找错误并修复它。
设置Owncloud
我在这里简单介绍一下Owncloud Raspberry Pi的基本设置。如果你想要更多的信息,我强烈建议检查出他们网站上的手册。你可以在这里的Owncloud手册网站上找到它们。
1. 在你喜欢的网络浏览器中,你需要进入你的Raspberry Pi的IP地址。
如果你不知道你的Pi的本地IP,你可以运行以下命令。
hostname -I
2. 一旦你去你喜欢的IP得到一个证书错误,添加到你的例外列表,因为它将是安全的继续。
在Chrome上,你点击显示高级按钮(1.
然后点击 “继续到[YOURPISIPADDRESS](不安全)”(2.
3. 当你第一次打开Owncloud时,你需要做一些初始设置步骤。
首先,你需要为你的Owncloud管理账户指定一个用户名和密码。(1.)
接下来,我们需要调出存储和数据库设置。你可以通过点击 “存储和数据库 “下拉菜单(2.
如果您使用的是不同的数据文件夹,您现在可以通过使用数据文件夹文本框指定它 (3.)。
然后我们需要调出MySQL数据库选项。你可以通过点击MySQL/MariaDB切换来找到这些选项(4.
接下来,我们需要填写三个信息,数据库用户、该用户的密码和数据库名称。
- First, you need to specify the “Database user” (A.). If you are following this guide, this should be
ownclouduser
. - The second option you will need to specify the password you set for the above user. (B.)
- Finally, we need to set the database name. (C.) If you have used the ones from this tutorial, you should set this to
ownclouddb
.
一旦您完成了所有的设置,点击 “完成设置 “按钮(4)。
如果你需要更新,而你发现内部更新器无法工作,这很可能意味着你需要手动更新。
你可以在Owncloud的更新手册页面上找到详细的更新流程。
接下来的两个部分将告诉你如何进一步改进你的Owncloud软件。
设置Owncloud的内存缓存
在本节中,我们将向您展示如何配置Owncloud以利用APCu和Redis。APCu被用作对象内存缓存,Redis被用来处理事务性文件锁定。
使用这两种方法将有助于提高Owncloud在树莓皮上的性能。
1. 为了能够启用这些,我们需要对Owncloud配置文件进行修改。
通过运行以下命令开始编辑该文件。
sudo nano /var/www/owncloud/config/config.php
2. 在该文件中,找到以下一行,并在其下面添加这段文字:
寻找
'installed' => true,
添加到下面
'memcache.local' => '\OC\Memcache\APCu',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
],
3. 完成后,按CTRL + X,然后按Y,再按ENTER键保存文件。
使用系统Cron与Owncloud
Owncloud团队建议你应该设置成让操作系统运行脚本cron作业而不是Ajax。
1. 为了能够为Owncloud设置一个cron作业,我们需要利用www-data用户的crontab。
通过运行以下命令开始修改用户的cron。
sudo crontab -u www-data -e
如果有人问你应该用什么编辑器来修改crontab,我们强烈建议你使用nano。
2. 2. 在本文件底部添加以下一行:
* * * * * /usr/bin/php /var/www/owncloud/occ system:cron
这一行将每分钟运行Owncloud的cron作业。
3. 完成后,按CTRL + X,然后按Y,再按ENTER键保存文件。
现在你应该在你的Raspberry Pi上正确设置Owncloud了。
端口转发和外部访问
如果您想在本地网络之外访问您的云盘,那么您需要设置端口转发并对我们的配置文件进行一些更改。
首先,我们需要回到默认文件中,修改server_name的值(有2个)。将这些值更新为你的外部IP地址。你可以在什么是我的IP上得到你的IP。
如果你有一个动态的IP,你可能想设置一个动态的DNS,并使用它作为你的地址。你可以在我的端口转发指南中找到相关信息。
输入以下内容,调出我们的默认服务器文件。
sudo nano /etc/nginx/sites-available/default
一旦你更新了服务器文件中的IP,你就需要将外部IP添加到你的信任IP列表中,并确保Owncloud不会覆盖它。要做到这一点,打开Owncloud的配置文件,然后输入。
sudo nano /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 restart
一定要查看我的端口转发指南,内部使用下面的443端口,外部端口我推荐随机端口。在设置外部端口的时候要确保它不是已经为特定的程序预留的。
当连接到Owncloud服务器外部时,你需要确保你使用https,否则你会在浏览器中得到一个无效的请求。设置端口转发是超级容易做到的,让你在旅途中就可以访问你的个人云。同时在你完成这个操作后,你也仍然可以通过你的本地IP进行连接。
希望本教程能帮助你制作属于自己的树莓皮OwnCloud。如果你有任何问题,想留下反馈,或者我有什么遗漏,欢迎在下面给我们留言。
欢迎转载,请留下出处链接:Labno3 » 树莓派个人云存储,详细步骤安装和使用OwnCloud