用Nextcloud在树莓派上布置你的个人网盘“NAS”

用Nextcloud在树莓派上布置你的个人网盘“NAS”

这次用的是目前最新的 Raspbian Stretch 系统,基于 Debian 9
软件程序是 Nextcloud 12.0.4

因为只想在局域网上使用,所以使用最简布署方式,相当于是最少的配置。
所以,这份方案不建议用在对外的服务器上,不够安全。

·>>> 14/01/2018. 17:00 write.

1)下载程式镜像:

参考命令:

links https://download.nextcloud.com/server/releases/nextcloud-12.0.4.zip

官方页面:传送门

2)安装依赖软件及布置文件系统:

a) 安装依赖软件:

因为我有其他的网站跑的 Nginx ,所以这里我也选用了 Nginx.

一是好一起管理,二是相对 Apache2 来说比较轻一点,毕竟派的性能就那么点。

Apache 方案的可以参考官方给的教程,相当容易就架上来了 Tutorial Page

参考命令:

# 切成 root 用户, 不切换的话下面所有命令都要在前面加 sudo
sudo su

# apt 安装所有依赖软件
# nginx 方案要用 Php-Fpm, 
# Nextcloud 只能支持到 7.0 版本的 Php
apt install php7.0fpm nginx
apt install php7.0-gd php7.0-json php7.0-mysql php7.0-curl php7.0-mbstring
apt install php7.0-intl php7.0-mcrypt php-imagick php7.0-xml php7.0-zip

# 安装 MySQL 相关
apt install mysql-server
# apt install mysql-client && sudo apt-get install libmysqlclient-dev
# 这里第二句不用运行,因为发现在派上运行第一句时它会自动把全部都装好。
# 而且都不用设置 root 密码了。再而且,它装的是 MariaDB 而不是 MySQL. 不过这不影响。
b) 布置文件系统:

注意:下面命令中的所有路径如果你用的不一样要注意替换

参考命令:

# 切成 root 用户, 不切换的话下面所有命令都要在前面加 sudo
sudo su

# 解压镜像
unzip nextcloud-12.0.4.zip

# 创建目录并移动程序到你要的目录里
mkdir /www && mv nextcloud /www/nextcloud

# 修改权限相关
cd /www
chmod -R 0770 nextcloud/
chown -R www-data nextcloud/
chgrp -R  www-data nextcloud/

# 创建数据目录并修改权限
mkdir nextcloud.data
chmod -R 0770 nextcloud.data/
chown -R www-data nextcloud.data/
chgrp -R  www-data nextcloud.data/

# 创建 .log 和 .sock 文件
/www/logs/nextcloud/ 目录下创建 access.log 和 error.log
/run/php/ 目录下创建 php7.0-fpm.sock

到这文件系统就设置好了
c) 布置数据系统:

参考命令:

# 设置 root 密码
mysqladmin -u root -p password YOUR_PASSWORD_HERE

# 用 root 登入
mysql -uroot -p

# 这下面的所有命令都在 SQL Shell 里面执行:

# 创建数据库
create database nextcloud;

# 创建用户及加权限
create user 'www'@'localhost' identified by 'YOUR_PASSWORD_HERE';
grant all privileges on nextcloud.* to 'www'@'localhost' identified by 'YOUR_PASSWORD_HERE';

# 到这里就设置好了。其他的程序会自己处理。

3)设置 Php 相关:

修改 /etc/php/7.0/fpm/php.ini 文件内容:

opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Shell 中运行 printenv PATH 复制得到的内容
修改 /etc/php/7.0/fpm/pool.d/www.conf 文件内容:

env[PATH] = 上面你得到的内容

4)设置 Nginx 相关:

/etc/nginx/sites-available/ 下创建 nextcloud.conf 文件

下面是我的派上的设置,非常简单的设置,用 Http 而不用 Https.
内容参考:

upstream php-handler {
    # 这里可以用下面两种方案,我比较喜欢直接用 .sock 文件映射
    # server 127.0.0.1:9000;
    server unix:/run/php/php7.0-fpm.sock;
}

server {
    # 监听 80 端口,无域名,文件路径
    listen               80;
    server_name          _;
    root                 /www/nextcloud;

    # 字符集设置
    charset              utf-8;

    # 日志,和前面创建的要对应到
    access_log           /www/logs/nextcloud/access.log;
    error_log            /www/logs/nextcloud/error.log;

    # 这些 add_header 不要也行
    add_header           X-Content-Type-Options nosniff;
    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;

    # location 设置
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location = /.well-known/carddav {
        return 301 $scheme://$host/remote.php/dav;
    }


    location = /.well-known/caldav {
        return 301 $scheme://$host/remote.php/dav;
    }

    # 最大上传大小
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    # Gzip设置
    gzip on;
    gzip_vary on;
    gzip_comp_level 4;
    gzip_min_length 256;
    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
    gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

    # location 设置
    location / {
        rewrite ^ /index.php$uri;
    }


    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
        deny all;
    }

    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
        deny all;
    }

    # Php 相关
    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTPS off;

        #Avoid sending the security headers twice
        fastcgi_param modHeadersAvailable true;
        fastcgi_param front_controller_active true;
        fastcgi_pass php-handler;
        fastcgi_intercept_errors on;
        fastcgi_request_buffering off;
    }

    location ~ ^/(?:updater|ocs-provider)(?:$|/) {
        try_files $uri/ =404;
        index index.php;
    }

    # Js Css 缓存设置
    # 这块要在 Php 的设置下面写
    location ~ \.(?:css|js|woff|svg|gif)$ {
        try_files $uri /index.php$uri$is_args$args;
        add_header Cache-Control "public, max-age=15778463";
        add_header X-Content-Type-Options nosniff;
        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 ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        access_log off;
    }
}

5)设置:

到这就全部做完了,打开对应的 IP 地址,进行页面设置:

  1. 创建超管的账号
  2. 将数据文件夹指向我们上面创建的 /www/nextcloud.data 文件夹
  3. 将数据库指向我们上面创建的用户:

大致如下,如果你改了端口之类的就照着改就行了,
注意一点,数据库和这里都要用 localhost 不要用127.0.0.1,因为我发现我一开始用的 127.0.0.1 它不能识别,原因不详,也可能我是个例。

Database User:     www
Database Password: YOUR_PASSWORD_HERE
Database Name:     nextcloud
Database Host:     localhost:3306

5)其他:

为什么我要选用这个程序呢?
因为它的功能太强大了!装完设置好后别忘了点右上的 “ 设置 > 应用 ” !里面的应用市场超丰富的。你需要任何东西基本都能有,像比如说:

  • 在线聊天、视频通话、备份手机
  • 应用看板
  • Youtube, Http, Https, BT 下载
  • 创建网站
  • 保险箱应用、密码管理
  • GPS 相关记录、编辑
  • DrawIO 的思维导图
  • Markdown 编辑
  • Office 在线编辑
  • 各种在线编辑在线预览……

记得上这里看看:应用市场

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342