标签: frp

  • 树莓派使用 frp 实现内网穿透搭建 Nextcloud 私有云的准备工作

    树莓派使用 frp 实现内网穿透搭建 Nextcloud 私有云的准备工作

    需要用到的硬件

    烧录好系统的树莓派主机,我使用的是 Raspberry Pi 3B,系统使用RASPBIAN JESSIE LITE

    树莓派适用的散热外壳(大量上传下载的情况下,系统发热量惊人,推荐配置);

    硬盘 + 硬盘底座(树莓派的供电是带不起移动硬盘的,即便给移动硬盘额外的 USB 供电也吃力,强烈推荐)。


    我买的 3B 及其外壳,现在树莓派已经出了第四代了,可以去这里购买:传送门

    双盘位的硬盘盒:传送门
    安装 Nextcloud 前的准备
    确保树莓派已经烧录好系统,可参考:《树莓派(Raspberry Pi)入门实战记录之 SSH 局域网无线连接》为树莓派烧录系统并设置 SSH 连接。

    创建目录、用户

    1. 创建 nobody 用户组,统一系统用户,避免出现权限问题
    $ sudo groupadd nobody
    
    1. 创建网站服务根目录
    $ sudo mkdir [path]/web
    

    树莓派硬盘挂载

    1. 树莓派开启支持 exfat
     $ sudo apt-get install exfat-utils
     $ sudo reboot now // 重启生效
    
    1. 连接硬盘,查看硬盘信息
     $ sudo fdisk -l
    

    我的硬盘信息显示如下:
    5170_P_1442946199645.jpg
    所以,挂载路径为:/dev/sda
    3. 格式化硬盘为 ext4 格式

     $ sudo mkfs.ext4 /dev/sda
    
    1. 创建硬盘挂载点
     $ mkdir [path]/disk
    
    1. 挂载硬盘
     $ sudo mount -t ext4 /dev/sda [path]/disk
    
    1. 设置开机自动挂载
      编辑/etc/fstab,加入以下配置:
     /dev/sda     [path]/disk      ext4      defaults      0      0
    

    安装 MariaDB

    1. 使用 apt-get 安装 MariaDB
     $ sudo apt-get install mariadb-server
    
    1. 创建数据库
     $ mysql -uroot -p
     $ mysql> CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    
    1. 创建 nobody 用户并授权
     $ mysql> CREATE USER 'nobody'@'%' IDENTIFIED BY '[password]'; 
     $ mysql> GRANT ALL ON nextcloud.* TO 'nobody'@'%';
    
    1. 为 Nextcloud 配置 MariaDB,参考:Database Requirements for MySQL / MariaDB
     $ mysql> SET GLOBAL binlog_format = 'MIXED';
    
     [mysqld]
    
    1. 配置 innodb ——/etc/mysql/my.cnf,加入以下配置:
      1. 设置 binlog_format

    innodb_large_prefix=on
    innodb_file_format=barracuda
    innodb_file_per_table=1
    “`

    安装 openresty(nginx) 设置随系统启动

    1. 上传 openresty
     scp [local-path]/openresty-1.11.2.3.tar.gz pi@[ip-address]:[path]/openresty-1.11.2.3.tar.gz
    
    1. 编译安装 openresty
     $ sudo apt-get install libpcre3 libpcre3-dev libssl-dev 
     $ ./configure --with-luajit --with-pcre
     $ make
     $ sudo make install
    
    1. 部署 Nginx 站点配置
    2. 部署 openresty 开机自启动

    编译安装 php7.1

    1. 编译安装
     $ sudo apt-get install libxml2-dev curl libcurl4-gnutls-dev libjpeg-dev libxslt-dev
    
     $ ./configure --prefix=[path]/php \
      --with-openssl \
      --with-curl \
      --with-freetype-dir \
      --with-gd \
      --with-gettext \
      --with-iconv-dir \
      --with-kerberos \
      --with-libdir=lib64 \
      --with-libxml-dir \
      --with-mysqli \
      --with-pcre-regex \
      --with-pdo-mysql \
      --with-pdo-sqlite \
      --with-pear \
      --with-jpeg-dir \
      --with-png-dir \
      --with-xmlrpc \
      --with-xsl \
      --with-zlib \
      --with-regex \
      --enable-ctype \
      --enable-maintainer-zts \
      --enable-fpm \
      --enable-bcmath \
      --enable-libxml \
      --enable-inline-optimization \
      --enable-gd-native-ttf \
      --enable-mbregex \
      --enable-mbstring \
      --enable-opcache \
      --enable-pcntl \
      --enable-shmop \
      --enable-soap \
      --enable-sockets \
      --enable-sysvsem \
      --enable-xml \
      --enable-zip
    
     $ make
     $ sudo make install
    
    1. 部署 php 配置文件
     $ sudo cp [php-source-code-path]/php.ini-production [php-path]/php/lib/php.ini
     $ sudo cp [php-path]/php/etc/php-fpm.conf.default [php-path]/php/etc/php-fpm.conf
     $ sudo cp [php-path]/php/etc/php-fpm.d/www.conf.default [php-path]/php/etc/php-fpm.d/www.conf
    
    1. 编辑[php-path]/php/etc/php-fpm.d/[www.conf](http://www.conf),加入以下 PATH(通过执行$ printenv PATH获得)
     /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
    
    1. 继续编辑[php-path]/php/etc/php-fpm.d/[www.conf](http://www.conf),启动 socket 连接方式(提升系统执行效率)
     listen= /var/run/php71-fpm.sock
     listen.owner = nobody
     listen.group = nobody
    
    1. 配置 php-fpm 随系统启动

    安装 Nextcloud 的准备工作完成,下一步是使用 frp 实现内网穿透搭建 Nextcloud 私有云

  • 树莓派使用 frp 实现内网穿透搭建 Nextcloud 私有云

    树莓派使用 frp 实现内网穿透搭建 Nextcloud 私有云

    在家庭网络没有固定 IP 或者家庭网络不能被外网访问的情况下,使用树莓派搭建 Nextcloud 私有云系统服务,需要借助于有外网 IP 的服务器,使用frp等工具进行内网穿透,整套系统的访问过程示意如下:

    格安云服务示意.png



    如果你直接访问到了这个页面,可参考下《树莓派使用 frp 实现内网穿透搭建 Nextcloud 私有云的准备工作》了解采用此方案搭建 Nextcloud 私有云服务所要进行的准备工作,以便快速上手,少走弯路。

    这里主要介绍使用 frp 进行内网穿透和 Nextcloud 私有云的安装。

    搭建内网穿透服务

    1. 参考Github-frp安装配置好 frp 内网穿透服务;
      我的树莓派端的配置文件关键信息如下:
     [common]
     server_addr = [your-public-server-ip]
     server_port = 7000
     privilege_token = [your-privilege_token]
    
     

    [ssh]

    type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000

    [web]

    privilege_mode = true type = http local_port = 80 custom_domains = [your-domain]

    我的公网服务器端的配置文件关键信息如下:

     [common]
     bind_port = 7000
     vhost_http_port = 8080
     dashboard_port = 7500
     # dashboard 用户名密码,默认都为 admin
     dashboard_user = [your-dashboard_user]
     dashboard_pwd = [your-dashboard_pwd]
     privilege_mode = true
     privilege_token = [your-privilege_token]
     privilege_allow_ports = 4000-50000
     log_file = [path]/frps.log
     log_level = info
     log_max_days = 3
    
    1. 公网服务器端配置 Nginx,转发外网访问请求到 frp server 服务;
    server {
     listen 80;
     server_name  [your-domain];
    
     location / {
        proxy_pass http://127.0.0.1:8080; # frp server 端的 vhost_http_port 配置的端口
        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_hide_header   X-Powered-By;
      }
    }
    
    1. 配置好后,通过域名 [your-domain] 访问树莓派 Nginx 的默认网站测试配置是否正确

    安装 Nextcloud

    1. 解压下载好的 Nextcloud 程序文件到安装准备工作中创建的 web 目录:[path]/web/nextcloud
    2. 设置目录权限
     $ sudo chown -R nobody:nobody [path]/web/nextcloud
    
    1. 参考Nextcloud Nginx Configuration配置 Nginx,推荐使用 socket 方式连接 php-fpm
    upstream php-handler {
     # server 127.0.0.1:9000;
     server unix:/var/run/php71-fpm.sock;
    }
    
    1. 现在可以通过域名 [your-domain] 访问到 Nextcloud 服务了,通过 Nextcloud 的安装向导设置用户名、密码、数据存储路径和数据库信息后,Nextcloud 私有云就搭建好了。如果是严格按照《树莓派结合 frp、Nextcloud 搭建私有云之安装前的准备》进行的前期准备工作,那么:
      • 数据存储路径:[path]/disk
      • 数据库:MariaDB
      • 数据库用户名: nobody
      • 数据库密码:[your-password]
    2. 系统界面。
    屏幕快照 2017-06-29 下午1.41.02副本.png