树莓派个人云存储,详细步骤安装和使用OwnCloud

在这个项目中,我们要做一个Raspberry Pi Owncloud服务器,这可以作为你自己的个人云存储。

Raspberry-Pi-Owncloud.jpg

随着保护隐私越来越难,你可能会考虑将你的文件转移到私人云存储。如果是这种情况,那么本教程就非常适合你。重要的是要记住,由于您的数据将存储在您的本地网络上,如果从网络外上传和下载文件,您将最终使用更多的带宽。本教程将带你完成你需要知道的一切,让Owncloud设置和访问。如果你很好奇,想了解更多关于Owncloud软件的信息,那么一定要去他们的网站Owncloud.org看看。

设备清单

我这次个人云存储设置使用了以下设备,点击链接可直达特别优惠购买。

建议

可选

注意: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

uuid-hard-drive.png

复制最后一个条目的淡蓝色字母和数字(最后应该有类似-> …/…/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.

Raspberry-Pi-Owncloud-Server-Chrome-Security-Warning.jpg

3. 当你第一次打开Owncloud时,你需要做一些初始设置步骤。

首先,你需要为你的Owncloud管理账户指定一个用户名和密码。(1.)

接下来,我们需要调出存储和数据库设置。你可以通过点击 “存储和数据库 “下拉菜单(2.

如果您使用的是不同的数据文件夹,您现在可以通过使用数据文件夹文本框指定它 (3.)。

然后我们需要调出MySQL数据库选项。你可以通过点击MySQL/MariaDB切换来找到这些选项(4.

接下来,我们需要填写三个信息,数据库用户、该用户的密码和数据库名称。

  1. First, you need to specify the “Database user” (A.). If you are following this guide, this should be ownclouduser.
  2. The second option you will need to specify the password you set for the above user. (B.)
  3. 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-Server-Setup-Configuration-Screen.jpg

如果你需要更新,而你发现内部更新器无法工作,这很可能意味着你需要手动更新。

你可以在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文件的例子。

external-IP-change-example.png

完成后,输入以下内容重新启动Nginx服务。

sudo service nginx restart

一定要查看我的端口转发指南,内部使用下面的443端口,外部端口我推荐随机端口。在设置外部端口的时候要确保它不是已经为特定的程序预留的。

当连接到Owncloud服务器外部时,你需要确保你使用https,否则你会在浏览器中得到一个无效的请求。设置端口转发是超级容易做到的,让你在旅途中就可以访问你的个人云。同时在你完成这个操作后,你也仍然可以通过你的本地IP进行连接。

希望本教程能帮助你制作属于自己的树莓皮OwnCloud。如果你有任何问题,想留下反馈,或者我有什么遗漏,欢迎在下面给我们留言。

平均: 0 / 5. votes: 0

到目前为止还没有投票!成为第一位评论此文章。

欢迎转载,请留下出处链接:Labno3 » 树莓派个人云存储,详细步骤安装和使用OwnCloud

赞 (0)

评论

6+1=