家庭宽带搭建ipv6私人网盘

起:本人穷,只能购买1核2G1M的云服务器,访问大一点的图片就很吃力,于是乎想着将家中1000M的宽带拿来做服务器网络,访问服务器理论上行100MB/s,下行30MB/s(取决于宽带速率)。正好自己有一台闲置电脑,然后就开始了折磨历程,本人具备一点网络知识,不多但是够用。在最后运行起来,服务器8核4G1000M上行30M下行,结果还是令本人满意,除去域名有时候寻址慢点,访问设备有限制外(需具备公网ipv6地址),其他都还在可接受范围内。

准备:一台可以安装虚拟机的电脑或直接上服务器,一条移动宽带(本人用的移动的宽带)。

搭建平台:物理机(Windows11),虚拟机(Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-56-generic x86_64))。

框架:Apache承载 + Nginx代理(未用到) + NextCloud本体 + PHP执行语言 + MySQL数据存储 + DDNS-GO域名自动映射。

1. 安装虚拟机

Windows11下载安装VMware,在清华源、阿里源或官方网站下载Ubuntu 22.04.1系统文件:阿里源,不懂的可自行百度一下,没有难度。然后在VMware中安装Ubuntu,可参考:VMware虚拟机安装Ubuntu22.04 详细教程。

2. 虚拟机网络模式

物理机直连光猫LAN接口(1000Mbps),虚拟机在 Vmware 虚拟机设置–硬件中设置网络为桥接模式:直连物理网络。宿主机须具有ipv6功能->光猫需要开启ipv6地址,这样宿主机ipv6地址是公网,桥接之后虚拟机也是公网ipv6地址,移动2409:** 电信240e:** 联调2400:**。

修改虚拟机网卡速率:关闭虚拟机,找到虚拟机*.vmx 文件修改 ethernet0.virtualDev = “e1000”/“vmxnet3”,开启虚拟机即为1000M/10Gbps网卡。

外网通过ipv6访问服务器步骤

访问设备须具有ipv6地址,测试地址:ipv6-test.com由于没有公网ipv4只有使用ipv6,所有需要光猫的超管密码设置参数,这个需要找宽带运维人员获取。进入光猫超管界面,在防火墙-攻击保护设置-关闭Ipv6Spi即可在公网访问内网具有公网ipv6地址的设备。检查是否连通,可在具有公网地址的PC上WIN+R输入amd,然后ping -6 ipv6地址(虚拟机命令ifconfig查看)

3. 安装必要软件

3.1 准备

由于万米高墙的阻拦,国内使用外网资源速度十分有限,所以我们首先需要更换软件源。这里本人是直接使用的软件更新进行的换源,换的是清华源,如果手动换的,请参考网上众博主的文章。

有些操作需要root权限,可使用(sudo su)后输入用户密码后进入到root模式,操作便可以不加sudo。

系统源位置:/etc/apt/sources.list养成好习惯,先备份:cp /etc/apt/sources.list /etc/apt/sources.list.bak操作修改文件:vim sources.list换好源后进行软件更新:apt-get upgrade

3.2 ssh

远程连接。

安装:apt-get install openssh openssh-serversystemctl start ssh #启动sshsytemctl stop ssh #停止sshsystemctl enable ssh #开机自启动systemctl status ssh #查看ssh运行状态#配置允许root用户连接,默认端口22设置root用户密码:sudo passwd  然后输入两次新密码设置ssh的文件:cd etc/ssh -- vim sshd_config找到文件里的: PermitRootLogin prohibit-password 修改为:PermitRootLogin yes保存修改,重启ssh

这样一来就可以通过网络远程管理(如果不具备公网地址只能在局域网管理,有公网地址便可以进行公网管理,但是由于网络环境是ipv6,所以公网管理设备需要具有公网ipv6地址。或者使用后续的frp进行内网穿透端口做转发,这样便可以在任何公网设备对服务器进行远程管理)。

3.3 集成环境LAMP

版本:8.1.12,本人需要集成的环境软件Xampp为搭建个人云盘做准备,需要PHP、Apache、数据库,去Xampp官网选择对应Linux的.run文件,上传到Ubuntu中。

上传目录(自定义):/opt/xampp-linux-x64-8.1.12-0-installer.run进入opt目录:cd /opt/执行安装等待安装完成:./xampp-linux-x64-8.1.12-0-installer.run进入安装目录(以下操作均基于这个目录):cd /opt/lampp操作:./lampp start/stop/restart 启动/关闭/重启所有程序,Apache MySQL等单独某个程序操作:./lampp start/stop/restartapache单独启动apache:./lampp startapache提示端口占用,修改httpd.conf文件(http):vim /etc/httpd.conf 80->8099修改httpd-ssl.conf文件(https):vim /etc/extra/httpd-ssl.conf 443->16443修改完成后同样报错无法启动:vim /lampp 将里面的testport 80修改为testport8099(自定义), testport 443修改为testport 16443(自定义)Apache日志目录:/opt/lampp/logs

配置 Apache(如果不使用80和443端口建议不开启端口强制重写https,浏览器默认会将一次跳转的域名记录,下次使用http访问会直接跳转https,然后不是使用的443端口就会无法访问的问题)。

httpd.conf: /opt/lampp/etc/httpd.conf
DocumentRoot "/opt/nextcloud"
<Directory "/opt/nextcloud">#RewriteEngine onAllowOverride AllRequire all granted#Order allow,deny#Allow from allOptions Indexes FollowSymLinks ExecCGI Includes#RewriteCond %{HTTP_HOST} ^yougos.asia$ [NC]#RewriteCond %{SERVER_PORT} !^443$#RewriteRule ^(.*)?$ https://www.example.com:443
</Directory>httpd-ssl.conf: /opt/lampp/etc/extra/httpd-ssl.conf
<VirtualHost _default_:443>DocumentRoot "/opt/nextcloud"ServerName www.example.comServerAlias *ServerAdmin 207239****@qq.comErrorLog "/opt/lampp/logs/error_log"TransferLog "/opt/lampp/logs/access_log"<IfModule mod_headers.c>Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"</IfModule># 开启sslSSLEngine on# 证书SSLCertificateFile "/opt/webapps/ssl-docs/example.com/example.com.crt"# 证书密钥SSLCertificateKeyFile "/opt/webapps/ssl-docs/example.com/example.com.key"# 证书链文件SSLCertificateChainFile "/opt/webapps/ssl-docs/example.com/root_bundle.crt"# 以下默认配置<FilesMatch "\.(cgi|shtml|phtml|php)$">SSLOptions +StdEnvVars</FilesMatch><Directory "/opt/lampp/cgi-bin">SSLOptions +StdEnvVars</Directory>BrowserMatch "MSIE [2-5]" \nokeepalive ssl-unclean-shutdown \downgrade-1.0 force-response-1.0CustomLog "/opt/lampp/logs/ssl_request_log" \"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

可参考:1.Linux安装Xampp

2.Linux下Lampp启动失败解决方法

3.4 Nginx

访问接入,版本1.18.0。

安装nginx:apt-get install nginx配置文件:/etc/nginx/sites-enabled/default日志文件:/var/log/nginx/systemctl start nginx #启动nginxsytemctl stop nginx #停止nginxsystemctl enable nginx #开机自启动nginxsystemctl status nginx #查看nginx运行状态

配置样例443-https端口,ssl证书是腾讯云免费证书nginx版本

server {listen 443 ssl;listen [::]:443 ssl;server_name example.com;#隐藏nginx版本号server_tokens off;#ssl证书文件--example.comssl_certificate /opt/webapps/ssl-docs/example.com/example.com_bundle.pem;ssl_certificate_key /opt/webapps/ssl-docs/example.com/example.com.key;#服务端要支持 协议配置ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_prefer_server_ciphers on;ssl_session_cache shared:SSL:1m;ssl_session_timeout  5m;index index.html;root /opt/webapps/web-root-docs/...;if ($scheme = http) {return 301 https://$host$request_uri;}location /Pixiv {alias /opt/webapps/...;try_files $uri $uri/ /index.html index.htm =404;index index.html index.htm index.php;#以下开始当前目录显示功能autoindex on;autoindex_exact_size on;autoindex_localtime on;charset utf-8,gbk;}location /WhatEatToday {alias /opt/webapps/...;try_files $uri $uri/ /index.html index.htm =404;index index.html index.htm index.php;}location /wet {alias /opt/webapps/...;try_files $uri $uri/ /index.html index.htm =404;index index.html index.htm index.php;}location /WET {#代理到地址上proxy_pass http://example.com;#允许 所有头部 所有域 所有方法add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Headers' '*';add_header 'Access-Control-Allow-Methods' '*';#OPTIONS 直接返回204if ($request_method = 'OPTIONS') {return 204;}proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}location /nextcloud {proxy_pass https://example.com;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header Host $host:$server_port;proxy_set_header Remote_Addr $remote_addr;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-For $remote_addr;}location /YouGos {alias /opt/webapps/...;try_files $uri $uri/ /index.html index.htm =404;index index.html index.htm index.php;autoindex on;autoindex_exact_size on;autoindex_localtime on;charset utf-8,gbk;}}

3.5 MySQL

数据库,版本8.0.31,高版本并不是所有命令都适用低版本,比如低版本password函数,高版本没有。

配置文件:/etc/mysql/mysql.conf.d/mysqld.cnf日志文件:/var/log/mysql/安装mysql:apt-get install mysql-server初始用户名和密码文件:/etc/mysql/debian.cnf进入mysql:mysql -u 初始用户名 -p 初始用户名密码创建新用户:CREATE USER 'admin'@'%' IDENTIFIED BY 'password';修改用户密码:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';赋予权限:grant all privileges on *.* to 'admin'@'%' with grant option;刷新权限:flush privileges;

3.6 Redis

缓存,版本6.0.16。

安装redis:apt-get install redis检查版本:redis-cli --version配置文件:/etc/redis/redis.conf日志文件:/var/log/redis/配置--守护线程:daemonize=yes配置--远程访问:bind 0.0.0.0配置--开启密码:equirepass foobared -> equirepass passwordsystemctl start redis #启动redissytemctl stop redis #停止redissystemctl enable redis #开机自启动redissystemctl status redis #查看redis运行状态

参考链接:Redis安装使用

3.7 frp

版本:0.45.0,公网代理实现内网穿透,经测试,代理速度取决于公网服务器带宽速率。

下载frp release版本:https://github.com/fatedier/frp/releases 选择 amd64.tar.gz版本解压缩:其中frpc frpc.ini是客户端文件,frps frps.ini是服务端文件运行服务:/opt/frp/frpc -c /opt/frp/frpc.ini

将frps运行在服务器上(具有公网地址的服务器)注意放行端口,默认端口是7500,还需放行代理的服务端口。在内网机器上运行frpc,这样就可以通过公网IP+端口访问内网服务。

frps配置:公网服务器做服务端,代理所有公网请求到内网服务器上。

[common]
tcp_mux = false #解除速度限制
bind_port = 7000 #代理服务端口,通过这端口转发
dashboard_port = 7500
token = 自己设置的密钥
vhost_http_port = 6010
vhost_https_port = 6020
dashboard_user = username #7500端口访问用户名
dashboard_pwd = password #7500端口访问密码
tls_enable = true #加密访问
log_file = /var/log/frp/frps.log #日志文件,不指定日志信息默认输出到控制台,需要设置文件夹777权限 chmod -R 777 /var/log/frp/
log_level = info #日志等级,可用等级“trace, debug, info, warn, error”
log_max_days = 3 #日志保存最大保存时间

frpc配置

[common]
server_addr = 公网地址
server_port = 7000 #对接转发端口
token = 服务端(代理端设置)
tcp_mux = false
log_file = /var/log/frp/frpc.log #日志文件,不指定日志信息默认输出到控制台,需要设置文件夹777权限 chmod -R 777 /var/log/frp/
log_level = info #日志等级,可用等级“trace, debug, info, warn, error”
log_max_days = 3 #日志保存最大保存时间[ssh] #每个服务名字不一样
type = tcp #代理类型
local_ip = 127.0.0.1
local_port = 22 #本地端口
remote_port = 6000 #公网服务器远程端口,使用公网IP+端口访问这个服务[web]
type = http
local_ip = 127.0.0.1
local_port = 9137
custom_domains = 域名
bandwidth_limit = 1000MB

创建系统服务

系统服务路径:/usr/lib/systemd/system创建文件并写入如下内容:vim frp.server[Unit]
Description=Frp Client Service
After=network.target[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/opt/frp/frpc -c /opt/frp/frpc.ini
ExecReload=/opt/frp/frpc reload -c /opt/frp/frpc.ini
LimitNOFILE=1048576[Install]
WantedBy=multi-user.target保存后即可使用systemctl进行管理

3.8 DDNS-GO

版本:4.4.0,自动推送本地ipv4/ipv6地址到域名服务商将域名映射到推送的地址上。

下载:https://github.com/jeessy2/ddns-go/release 选择 Linux_X86_64.tar.gz 下载进入上传文件夹创建文件夹:>cd /opt/ >mkdir ddns-go解压到对应文件夹:tar -zxvf ddns-go_4.4.0_Linux_x86_64.tar.gz -C /opt/ddns-go进入文件夹:cd /ddns-go安装服务:./ddns-go -s install 卸载:./ddns-go -s uninstall安装服务后自动注册了系统服务功能,可使用systemctl进行操作进入ip:9876进行配置保存,生成配置文件地址:/root/.ddns_go_config.yaml 也可以对配置文件进行编辑保存,同网页设置一致

DDNS-GO进阶:在同一台服务器多个端口运行DDNS服务

在ddns-go下载源码:https://github.com/jeessy2/ddns-go/release在本地对源码进行编辑修改,查找所有的9876,修改为想要的端口。修改util--user.go中:所有../.ddns_go_config.yaml -> ../.ddns_go_config_one.yaml(不同文件名即可,后缀需相同)。主目录main.go下:
svcConfig := &service.Config{Name:        "ddns-go", #修改为ddns-go-one 为了解决启动时与原服务冲突DisplayName: "ddns-go", #修改为ddns-go-one 为了解决启动时与原服务冲突...
}

修改完保存文件,进入Linux服务器,由于作者使用golang1.19编写,需要在服务器安装go环境。

获取压缩包:https://dl.google.com/go/go1.19.4.linux-amd64.tar.gz解压到对应文件夹:tar -zxvf ...tar.gz -C /opt/builder/go编辑环境文件:vim /etc/profile加上:export PATH=$PATH:/opt/builder/go/bin(对应自己地址) 保存退出刷新一下环境配置:source /etc/profile使用:go -version 查看是否安装成功

言归正传,进入到自定义ddns-go编译,作者提供了Makefile文件编译ddns-go

进入到上传ddns-go源码地址,使用make build进行编译如果报错timeout,使用以下两句命令$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct

然后将生成的ddns-go可执行文件像之前那么操作即可

3.9 Nextcloud

网盘软件,版本25.0.0。

下载软件包:https://download.nextcloud.com/server/releases/nextcloud-25.0.0.zip解压到对应地址:unzip nextcloud-25.0.0.zip -d /opt/nextcloud赋予权限:chmod —R 777 /opt/nextcloud配置文件:/opt/nextcloud/config/config.php

将用来访问的域名地址添加至配置文件中,不然显示从不被信任的站点访问,在网页中访问地址(前面Apache配置已经指向了NextCloud文件路径)即可进行对网盘的初始配置和安装,注意要配置数据库。

为解决NextCloud检查中的错误,需要在Xampp中PHP安装扩展,高版本不存在的扩展可以在低版本中找到,如/php-7.4.21/ext/下很多扩展。

首先找到对应的插件包,解压到对应目录,如:/opt/php-extension/extension1进入解压文件夹:cd /opt/php-extension/extension1利用PHP的phpize创建configure文件:/opt/lampp/bin/phpize然后:export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig #不明所以然后:echo $PKG_CONFIG_PATH #查看是否配置成功然后将配置文件指定到PHP配置文件:./configure --with-php-config=/opt/lampp/bin/php-config然后使用make最后使用make install输出Installing shared extensions: /opt/lampp/lib/php/extensions/no-debug-non-zts-20210902/(对应自己目录)即可然后去/opt/lampp/etc下编辑php.ini:vim php.ini 增加extension="extension.so"重启apache:./lampp restartapache

3.10 邮件服务器

域名解析到服务器地址,mail@example.comubuntu安装postfix:apt-get install mailutils自定义安装,测试邮件发送sendmail -F Luod -f admin -t name@163.com
Subject: zhuti
neirong
.(结束标志)检查邮件,收件箱和垃圾邮箱报错1:SMTPUTF8 is required, but was not offered by host(服务端未提供SMTPUTF8)
解决:在服务器/etc/postfix/main.cf文件下增加:smtputf8_enable = no,然后重启postfix(systemctl重启方法)报错2: 550 Domain may not exist or DNS check failed
解决:似乎是关于域名解析和注册的问题

家庭宽带基本是会被系统拦截的,使用各邮箱的SMTP服务代发邮箱即可,发向QQ邮件需要域名可连通。

4. 启动服务

开启所有服务,使用域名即可访问自己的网盘和服务,速度取决于家庭宽带速度和服务器处理速度,Enjoy it。

5. 其他

为解决服务器长时间运行(非专业服务器)压力,可以定时重启释放资源,重启后配置的服务均可自动重启,唯一未找到自动重启的是Xampp下的Apache,但是可以在重启后使用定时任务启动。

1.创建定时任务:crontab -e0 2 * * * /sbin/reboot #凌晨两点重启服务器5 2 * * * /opt/lampp/lampp startapache #凌晨两点5分重启Apache2.php安装扩展报错:Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.apt-get install autoconf3.php安装扩展报错:configure: error: no acceptable C compiler found in $PATHapt-get install gcc4.configure: error: The pkg-config script could not be found or is too old.  Make sure itapt-get install pkg-config5.Please provide a path to MagickWand-config or Wand-config program.apt install libmagick++-dev6.No package 'oniguruma' foundapt-get install libonig-dev7.sodium安装先安装libsodium-stable
wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-stable.tar.gz
tar -zxf libsodium-1.0.18-stable.tar.gz
cd libsodium-stable
./configure --with-php-config=/opt/lampp/bin/php-config
make
make install再安装sodium,操作和安装php扩展一致

家庭宽带搭建ipv6私人网盘相关推荐

  1. 云服务器体验——搭建简单私人网盘

    因为有项目要做,需要用到服务器,就开始玩玩服务器 云服务器就像一台虚拟的24小时不停运作的电脑,可以干很多事情,比如搭建自己的私人网盘.正好有大文件需要分享给别人,就打算学着搭建一个私人网盘,这样就避 ...

  2. 键盘侠Linux干货| 使用Nginx搭建一个私人网盘

    前言 使用Nginx搭建一个私人网盘 安装Nginx 增加 Nginx 官方源 cat << EOF > /etc/yum.repos.d/nginx.repo [nginx-sta ...

  3. linux部署来源网盘,在CentOS8.2上搭建Nextcloud私人网盘

    前言 Nextcloudd是一个开源的.基于本地的文件共享和协作平台,它允许您保存文件并通过多个设备(如PC.智能手机和平板电脑)访问它们. 同样的我们可以自己购买一个云服务器,部署一个属于自己的私人 ...

  4. 历害了!教你自己搭建一个私人网盘..

    作者 |zhaoolee 来源 |https://www.jianshu.com/p/54f157a211af 本文教大家用docker搭建一款自己的私有网盘,教程给大家分享一下. 开源云盘选择 搭建 ...

  5. 如何搭建一个私人网盘

    文章主要讲了为什么要搭建私有网盘,以及如何用 docker + ownCloud 搭建.原文地址:http://geekplux.com/2016/10/2... 前两天,360 云盘宣布将停止个人服 ...

  6. 如何用免费服务器搭建一个私人网盘

    往期精彩回顾 照片+视频备份 | 百度出品 | 无限空间 | 你只需要我的一个无限码 WordPress 网站架设 InfinityFree 免费无限流虚拟主机申请与一键架设好WordPress 教程 ...

  7. 搭建自己私人网盘-Nextcloud

    前期需要软件 远程SSH控制台软件(本教程使用 Remote Terminal 此为win10商店软件)[点我下载(此软件为Xshell)] 支持Sftp的FTP软件(本教程使用 FileZilla) ...

  8. 【亚马逊云科技】利用 Graviton2 芯片的 EC2 和 S3 免费搭建NextCloud私人网盘

    文章目录 一.前言

  9. 再见xx网盘!4 行命令搭建属于你的私人网盘!

    在之前的文章中,我分享了如何利用一台云服务器配置远程Jupyter Notebook. 最后我也提到,拥有一台服务器之后能做的绝不止这一个功能. 另一个常见的个人服务器用处就是用来搭建一个私人网盘.本 ...

最新文章

  1. Asp.net中具体的日期格式化用法
  2. Django后台admin的使用
  3. 工业4.0提出者孔翰宁详解工业4.0
  4. 损失函数(Loss function) 和 代价函数(Cost function)
  5. 大话Linux内核中锁机制之原子操作、自旋锁【转】
  6. 音频编码解码器库 libZPlay
  7. C语言头文件尖括号和双引号的区别
  8. ubuntu18.04,Linux使用远程连接工具连接失败解决
  9. maven-3.5.3通过eclipse打包问题(1)
  10. ScriptX打印控件的使用
  11. How To Read C Declarations
  12. VUE day_08(7.26)学子商城项目详细版
  13. 学习笔记(11):ArcGIS10.X入门实战视频教程(GIS思维)-快速制作一幅土地利用现状图(引入制图表达)
  14. 8086CPU 的寻址方式(重点)
  15. Transmission搭建BT下载服务器
  16. Linux中的基础I/O
  17. 怎么用c语言让电脑定时开关机,台式电脑定时开机怎么设置(怎么让电脑定时开机开关机)...
  18. HDOJ 1066 题解
  19. mac下安装使用switchyomega
  20. 5G NR标准 第4章 LTE概述

热门文章

  1. 一次性注册所有DLL!
  2. 【Git的学习笔记】老板让我用Git提交,但我还没学过Git
  3. java_servlet字符过滤器filter
  4. mysql数据库数据类型_MySQL-数据类型
  5. ESP32入门教程-怎么跑起来
  6. Excel-VBA 快速上手(二、条件判断和循环)
  7. 陆奇:“黑客精神”过时了吗?答案是永远不会
  8. keras指定gpu_Keras多GPU训练指南
  9. AlexNet 之karas实现
  10. 数据结构基本概念和术语