Ubuntu Server18自制NAS笔记

用到的东西记录

更新apt源

参考 http://mirrors.ustc.edu.cn/help/ubuntu.html

sudo apt clean
sudo apt update
sudo apt upgrade

// Ubuntu添加不可信源
sudo add-apt-repository universe

snap 相关

sudo snap list
sudo snap install docker
sudo snap install xxx.snap --dangerous

安装完毕在/snap/xxx/文件夹下,当前版本为current
官方比较慢,如果没有代理,可以下载安装 https://uappexplorer.com/snaps

// 查看snap版本信息
snap --version
// 找出所有snap应用
snap find
// 安装应用
snap install 包名
// 重启应用
snap restart 应用名
// 升级应用
snap refresh 应用名
// 查看安装的应用
snap list
// 卸载应用
snap remove 应用名

mysql配置

sudo apt install mysql-server mysql-client

先查看默认账号
cat /etc/mysql/debain.cnf,查看user和password
(root默认密码可以在/var/log/mysqld.log查看)

mysql -uxxxx -p, 输入密码

//进入到mysql界面修改密码
update mysql.user set authentication_string=password(‘123456’) where user=‘root’;

//刷新权限列表
flush privileges;

// 创建新用户
CREATE USER ‘cat’@‘localhost’ IDENTIFIED BY ‘123456’;

// 删除用户
DROP USER ‘cat’@‘host’;

// 创建用户、数据库并且授权
create database db_cat;
grant all privileges on db_cat.* to ‘cat’@‘localhost’ identified by ‘123456’;

// 撤销授权
REVOKE SELECT ON db_cat.* FROM ‘cat’@‘localhost’;

//刷新权限列表
flush privileges;

dlna

sudo apt install minidlna
查看状态 http://xxxx:8200
sudo vim /etc/minidlna.conf

nextcloud

snap 安装

sudo snap find nextcloud
sudo snap install nextcloud
sudo snap restart nextcloud
如果没有意外,则nextcloud会在80端口启动。

NextCloud存储文件夹在/var/snap/nextcloud/common/nextcloud/data,可以先修改/var/snap/nextcloud/current/nextcloud/config/config.php的datadirectory对应的文件夹位置。

比如将存储文件夹移动到/home,除了修改datadirectory对应的参数外,还需要运行以下命令:

mv /var/snap/nextcloud/common/nextcloud/data/{.,}* /home

//重启
snap restart nextcloud

apt 手工安装

// Ubuntu添加不可信源
sudo add-apt-repository universe

sudo apt install nginx
sudo apt install php7.2-gd php7.2-json php7.2-mysql php7.2-curl php7.2-mbstring php7.2-intl php-imagick php7.2-xml php7.2-zip

// mysql 按照之前的准备好, db_cat

// 处理新的硬盘
sudo fdisk -l
看到有/dev/sda,sdb,sdc三个硬盘,其中sda分为了sda1,sda2用来安装系统,另外两个硬盘未格式化。

// 将新硬盘格式化为一个扩展分区
sudo fdisk /dev/sdb, n,e,1,默认,p,w完毕。
sudo fdisk /dev/sdc, n,e,1,默认,p,w完毕。

// 格式化
sudo mkfs -t ext4 /dev/sdb
sudo mkfs -t ext4 /dev/sdc

// 挂载
sudo mkdir /mnt/d1 /mnt/d2
sudo mount -t ext4 /dev/sdb /mnt/d1
sudo mount -t ext4 /dev/sdc /mnt/d2

// 查看
sudo df -l

// 启动时自动挂载,在文件 /etc/fstab 中加入如下配置:
/dev/sdb /mnt/d1 ext4 defaults 0 0
/dev/sdc /mnt/d2 ext4 defaults 0 0

// 设置php-fpm
sudo vim /etc/php/7.2/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

sudo vim /etc/php/7.2/fpm/pool.d/www.conf

// 设置nginx
在 /etc/nginx/conf.d/nextcloud.conf, 加入以下内容: (取消了默认的80端口配置项)

server {
    listen 40010;
    server_name nextcloud;

    # Add headers to serve security related headers
    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;

    #This header is already set in PHP, so it is commented out here.
    #add_header X-Frame-Options "SAMEORIGIN";

    # Path to the root of your installation
    root /home/xin/nextcloud/;

    # 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:$server_port/remote.php/dav;
    }
    location = /.well-known/caldav {
       return 301 $scheme://$host:$server_port/remote.php/dav;
    }

    location ~ /.well-known/acme-challenge {
      allow all;
    }

    # set max upload size
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    # Disable gzip to avoid the removal of the ETag header
    gzip off;

    # Uncomment if your server is build with the ngx_pagespeed module
    # This module is currently not supported.
    #pagespeed 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)/ {
       deny all;
    }
    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
       deny all;
     }

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
       include fastcgi_params;
       fastcgi_split_path_info ^(.+\.php)(/.*)$;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param PATH_INFO $fastcgi_path_info;
       #Avoid sending the security headers twice
       fastcgi_param modHeadersAvailable true;
       fastcgi_param front_controller_active true;
       fastcgi_pass unix:/run/php/php7.2-fpm.sock;
       fastcgi_intercept_errors on;
       fastcgi_request_buffering off;
    }

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

    # Adding the cache control header for js and css files
    # Make sure it is BELOW the PHP block
    location ~* \.(?:css|js)$ {
        try_files $uri /index.php$uri$is_args$args;
        add_header Cache-Control "public, max-age=7200";
        # Add headers to serve security related headers (It is intended to
        # have those duplicated to the ones above)
        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;
        # Optional: Don't log access to assets
        access_log off;
   }

   location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        # Optional: Don't log access to other assets
        access_log off;
   }
}

其中,/home/xin/nectcloud文件夹赋予了chown www-data:www-data权限。

/mnt/d1 更改权限sudo chown www-data:www-data /mnt/d1 -R
如果安装时提示ocdata问题,则sudo touch /mnt/d1/.ocdata然后修改其权限。

在主机上查看IP,然后浏览器输入http://xxxx:40000按照要求进行安装。

插件安装

默认情况下安装插件,经常失败,是因为网络原因,可以通过手动安装解决:
https://apps.nextcloud.com
找到后,将下载回来的Apps进行解压缩,然后上传至owncloud/nextcloud安装目录的apps文件夹。

注意:下载回来的应用上传以后,在启用的过程中可能会有错误提示,导致启用不成功。原因可能有两个,一个是插件不兼容(查看应用支持的版本号是否支持所用owncloud的版本),大部分原因是该应用的文件夹名称与应用文件夹下的appinfo/info.xml中的xxxxx名称不一致,只要将应用的文件夹名称改成与id名称一致即可。

aria2

apt install aria2 curl
WebUI http://ariang.mayswind.net/zh_Hans/
Aira2配置

touch aria2.session
chmod a+rwx aria2.session
touch aria2.conf
vim aria2.conf

## 全局设置 ## ============================================================
# 日志
#log-level=warn
#log=/PATH/.aria2/aria2.log

# 后台运行
daemon=true

# 下载位置, 默认: 当前启动位置
dir=/PATH/download

# 从会话文件中读取下载任务
input-file=/PATH/aria2.session

# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=/PATH/aria2.session

# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
save-session-interval=30

# 断点续传
continue=true

# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
#disk-cache=32M

# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: none < falloc ? trunc < prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
file-allocation=none

# 客户端伪装
user-agent=netdisk;5.2.6;PC;PC-Windows;6.2.9200;WindowsBaiduYunGuanJia
referer=http://pan.baidu.com/disk/home

# 禁用IPv6, 默认:false
disable-ipv6=true

# 其他
always-resume=true
check-integrity=true

## 下载位置 ## ============================================================
# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=10

# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=5

# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M

# 单个任务最大线程数, 添加时可指定, 默认:5
split=5

# 整体下载速度限制, 运行时可修改, 默认:0
#max-overall-download-limit=0

# 单个任务下载速度限制, 默认:0
#max-download-limit=0

# 整体上传速度限制, 运行时可修改, 默认:0
#max-overall-upload-limit=0

# 单个任务上传速度限制, 默认:0
#max-upload-limit=0

## RPC设置 ## ============================================================
# 启用RPC, 默认:false
enable-rpc=true

# 允许所有来源, 默认:false
rpc-allow-origin-all=true

# 允许非外部访问, 默认:false
rpc-listen-all=true

# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select

# RPC监听端口, 端口被占用时可以修改, 默认:6800
rpc-listen-port=6800

# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
rpc-secret=xin

# 是否启用 RPC 服务的 SSL/TLS 加密,
# 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接
#rpc-secure=true

# 在 RPC 服务中启用 SSL/TLS 加密时的证书文件,
# 使用 PEM 格式时,您必须通过 --rpc-private-key 指定私钥
#rpc-certificate=/path/to/certificate.pem

# 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件
#rpc-private-key=/path/to/certificate.key

## BT/PT下载相关 ## ============================================================
# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
#follow-torrent=true

# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
listen-port=51413

# 单个种子最大连接数, 默认:55
#bt-max-peers=55

# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=false

# 打开IPv6 DHT功能, PT需要禁用
#enable-dht6=false

# DHT网络监听端口, 默认:6881-6999
#dht-listen-port=6881-6999

dht-file-path=/PATH/dht.dat
dht-file-path6=/PATH/dht6.dat

# 本地节点查找, PT需要禁用, 默认:false
#bt-enable-lpd=false

# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=false

# 每个种子限速, 对少种的PT很有用, 默认:50K
#bt-request-peer-speed-limit=50K

# 客户端伪装, PT需要
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77

# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=0

# 强制保存会话, 即使任务已经完成, 默认:false
# 较新的版本开启后会在任务完成后依然保留.aria2文件
#force-save=false

# BT校验相关, 默认:true
#bt-hash-check-seed=true

# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true

# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
bt-save-metadata=true
bt-max-open-files=16

你可能感兴趣的:(分享转载)