admin 管理员组文章数量: 887021
家庭宽带搭建ipv6私人网盘
起:本人穷,只能购买1核2G1M的云服务器,访问大一点的图片就很吃力,于是乎想着将家中1000M的宽带拿来做服务器网络,访问服务器理论上行100MB/s,下行30MB/s(取决于宽带速率)。正好自己有一台闲置电脑,然后就开始了折磨历程,本人具备一点网络知识,不多但是够用。在最后运行起来,服务器8核4G1000M上行30M下行,结果还是令本人满意,除去域名有时候寻址慢点,访问设备有限制外(需具备公网ipv6地址,手机用流量或连接具有ipv6属性的无线网),其他都还在可接受范围内。
准备:一台可以安装虚拟机的电脑或直接上服务器,一条移动宽带(本人用的移动的宽带)。
搭建平台:物理机(Windows11),虚拟机(Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-56-generic x86_64))。
框架1:Apache承载 + NextCloud本体 + PHP执行语言 + MySQL数据存储 + DDNS-GO域名自动映射。
框架2:PHP-fmp + Nginx + NextCloud + MySQL + Redis + DDNS-GO。前3者搭建与配置可参考此文章:Ubuntu安装nginx+php+nextcloud
更注重云盘属性的方案:Cloudreve搭建私人云盘
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,可能需要光猫的超管密码设置参数,这个需要找宽带运维人员获取。进入光猫管理界面192.168.1.1(网线直连),在防火墙-攻击保护设置-关闭Ipv6Spi即可在公网访问内网具有公网ipv6地址的设备。
检查是否连通,可在具有公网地址的PC上WIN+R输入cmd,然后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-server
systemctl start ssh #启动ssh
sytemctl stop ssh #停止ssh
systemctl 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
推荐:不推荐集成LAMP环境,推荐更简便搭建NextCloud需要的集成环境(PHP+Apache2)参考:Apche2整合PHP 。
版本: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 on
AllowOverride All
Require all granted
#Order allow,deny
#Allow from all
Options 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.com
ServerAlias *
ServerAdmin 207239****@qq
ErrorLog "/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>
# 开启ssl
SSLEngine on
# 证书
SSLCertificateFile "/opt/webapps/ssl-docs/example/example.crt"
# 证书密钥
SSLCertificateKeyFile "/opt/webapps/ssl-docs/example/example.key"
# 证书链文件
SSLCertificateChainFile "/opt/webapps/ssl-docs/example/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.0
CustomLog "/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 #启动nginx
sytemctl stop nginx #停止nginx
systemctl enable nginx #开机自启动nginx
systemctl status nginx #查看nginx运行状态
配置样例443-https端口,ssl证书是腾讯云免费证书nginx版本
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name example.com;
#隐藏nginx版本号
server_tokens off;
#ssl证书文件--example.com
ssl_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 /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;
}
}
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 password
systemctl start redis #启动redis
sytemctl stop redis #停止redis
systemctl enable redis #开机自启动redis
systemctl status redis #查看redis运行状态
参考链接:Redis安装使用
3.7 frp
版本:0.45.0,公网代理实现内网穿透(需要一台具有公网IP的服务器),经测试,代理速度取决于公网服务器带宽速率。
下载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
ubuntu安装postfix:apt-get install mailutils
自定义安装,测试邮件发送sendmail -F Luod -f admin -t name@163
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 -e
0 2 * * * /sbin/reboot #凌晨两点重启服务器
5 2 * * * /opt/lampp/lampp startapache #凌晨两点5分重启Apache
2.php安装扩展报错:Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
apt-get install autoconf
3.php安装扩展报错:configure: error: no acceptable C compiler found in $PATH
apt-get install gcc
4.configure: error: The pkg-config script could not be found or is too old. Make sure it
apt-get install pkg-config
5.Please provide a path to MagickWand-config or Wand-config program.
apt install libmagick++-dev
6.No package 'oniguruma' found
apt-get install libonig-dev
7.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私人网盘 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1726360498h944508.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论