一个想法引发的大升级!

开端是……

事情要从备份说起,想着群晖有坏掉的可能,于是试了一下网盘备份。

Hyper Bankup在备份是可以加密不用担心隐私外泄。

接着吧,既然加密了就利用下注册过的网盘,顺便整理下数据。

之后就想到了外网访问的群晖。故事就这样开始了。

家里的网络一般是没有固定IP的,想要访问家里的设备可以用VPN连会家里。

这是第一种方法。速度可以接受,在深圳的时候就是这样用的。

第二种就是使用域名向访问网站一样,访问家里的设备,这是就要用工具打一个洞,进行访问。

打洞的工具 是一个域名 , 一个VPSfrps

就是这样引发了之后的全面升级(灬ꈍ ꈍ灬)

Ps:

为啥传一张,删一张,还是显肤色的那张 😭 😭 😭

安装frps引发的故事

使用docker安装frps时,出现了同一个docker-netwrok下不能加载UI的问题。

端口映射是没有问题,镜像也是没有问题的,在本地环境是可以打开的。

那么问题就是nginx-proxy!这货让我吃了不少苦 😱 😱 😱 !看看之前的文章就知道了!

搜索解决方案的时候,发现了一个新的东西!

Nginx Proxy Manager 一个有UI的nginx-proxy 😇 😇 😇 安装到是也简单。

升级到Nginx Proxy Manager

复制 docker-compose.yml

安装镜像,就官网,直接复制docker-compose.yml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
environment:
DB_MYSQL_HOST: "db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm"
DB_MYSQL_PASSWORD: "npm"
DB_MYSQL_NAME: "npm"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
db:
image: 'jc21/mariadb-aria:latest'
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npm'
volumes:
- ./data/mysql:/var/lib/mysql

启动

1
docker-compose up -d

登录

地址是 http://VPS_IPv4:81

默认账号

1
2
Email: [email protected]
Password: changeme

结语

跟着官方文档没事什么大问题。

之后是就是将其他的镜像启动,并设置了 🤡 🤡 🤡

很简单是吧~ 做梦征程才刚刚开始!😏 😏 😏

最基础的web服务

当然是静态网站了。

就使用最简单的nginx镜像加载一个位置而且。

nginx基本镜像

1
2
3
4
5
6
7
8
version: '3'
services:
web:
image: nginx:latest
restart: unless-stopped
container_name: web
volumes:
- ./web:/usr/share/nginx/html:ro

第一个坑如约而至🙃

没错在正确设置nginx-proxy的情况下,并不能访问的代理镜像。

原因是nginx-proxyweb并没有在一个docker network中。

解决办法每个docker-compose.yml文件中指定网络

1
2
3
4
networks:
default:
external:
name: nginx-proxy-manager-default

之后设置域名对应到镜像端口。

可以使用镜像IP与可以使用镜像名。

我用的是<镜像名>:<端口>

结语

到这里web可以正常使用了,我放的就是这个站了。

v2fly

v2flyv2ray 的升级版

文档

使用WebSocket + tls + web,请求域名:443

设置的时候开启WebSocket,转发到镜像对应接口。

没什么难点。想要伪站的可以设置个nginx二次转发WebSocket

怎么设置之前都写过传送门

私人邮件服务

不更改设置的情况下可以直接使用之前是docker-compose.yml文件

但是请求是不加密的。载入Nginx Proxy Manager请求的tls证书不能正确读取。

找文档的时候发现tvial/docker-mailserver被弃用了!😳 😳 😳

新的镜像是docker.io/mailserver/docker-mailserver

处处是惊喜,更新吧!

过时docker-compose

镜像的docker-compose.yml3.8,老的docker-compose不支持了

升级之,嗯,算个小石子吧 😏

过时的文档

文档是使用 setup.sh文件可以快速设置。

照做会发现集成到镜像里了,会导致路径错误 😓

手动修正

1
2
3
volumes:
# - ./docker-data/dms/config/:/tmp/docker-mailserver/
- ./config/:/tmp/docker-mailserver/

之后添加账号和dkim,照做文档就行。

打印dkim并设置域名的时候,注意段落p="要全部去掉。

这时启动镜就可以使用邮件服务了。

要注意的是mac的邮件账号要关闭使用tls才可以发邮件。

发邮件是dns不能解析

添加dns设置到docker-compose.yml

1
2
3
4
5
dns:
- 9.9.9.9
- 8.8.8.8
- 1.1.1.1
- 1.0.0.1

邮件使用tls证书

添加tls设置到docker-compose.yml

<user>改为自己的用户名

<npm-*>改为对应域名的证书

这里的坑点nginx-proxy-manager/letsencrypt/live/<npm-*>目录的权限不够,

转而使用nginx-proxy-manager/archive/live/<npm-*>目录中的,

你可以对之前的目录提权。反正archive就是live复制来的。

1
2
3
4
5
6
volumes:
- /<user>/nginx-proxy-manager/letsencrypt/archive/<npm-*>:/tmp/dms/custom-certs/:ro
environment:
- SSL_TYPE=manual
- SSL_CERT_PATH=/tmp/dms/custom-certs/fullchain1.pem
- SSL_KEY_PATH=/tmp/dms/custom-certs/privkey1.pem

到这里就可以使用tls收发邮件了!👏 👏 👏

其他

其他的问题都不大,之后的文章还是有点作用的。

frp 他人经验 = 坑中之王

没什么软用的frp,少年现在回头还来的急🤧

坑点1: 话不说全,装的很大

坑点2: 速度一般,视频别想

坑点3: 设置复杂

最后: OpenVPN真香 🤣 ,有问题一般是设置没对。看文档比搜索有用。

预备式

安装frps镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: '3'
services:
frps:
image: stilleshan/frps:latest
container_name: frps
restart: always
expose:
- "7500"
ports:
- 7000:7000
- 7600:7600
volumes:
- ./frps.ini:/frp/frps.ini
networks:
default:
external:
name: nginx-proxy-manager-default

起跳式

这里要准备两个域名,一个用来连接,一个用来代理。

Type Name Content 用处
A frp XXX.XXX.XXX.XXX【IPv4】 连接frp服务
CNAME link frp.your.domain【穿透用的域名】 frp转发的域名

重点:如果使用的是cloudflare要关闭frp.your.domainProxied

填写frps.ini服务器端用,开一个7000就够了,其他流量frps能自动识别。

按照下面的设置开启的是windows远程桌面与80网站入口

远程桌面使用link.your.domain:7600访问

网站使用link.your.domain访问

其实,这个网站的地址可以是局域网内的任意位置,都可以访问的。

token是密码,subdomain_host是一级域名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[common]
bind_addr = 0.0.0.0
bind_port = 7000
# bind_udp_port = 7001
# kcp_bind_port = 7000
vhost_http_port = 7000
# vhost_https_port = 443
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
log_file = ./frps.log
log_level = info
log_max_days = 3
disable_log_color = false
authentication_method = token
token = 12345678
subdomain_host = your.domain
tcp_mux = true

设置frpc.ini客户端用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[common]
server_addr = frp.your.domain
server_port = 7000
tcp_mux = true
token = 12345678


[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 7600
subdomain = link
use_encryption = true
use_compression = true


[web]
type = http
local_ip = 127.0.0.1
local_port = 80
remote_port = 80
subdomain = link
use_encryption = true
use_compression = true

躺式

frp外网访问很慢,视频是看不了的,没有朝内的VPS,不做评价。

远程桌面的话,就输入文字还行。

不是必要的话,还是OpenVPN好用 😘

最后关闭 UI

nginx proxy manager

注释掉docker-compose.yml中的81端口。

1
2
ports:
# - "81:81"

重启镜像

1
docker-compose restart

frps

注释掉docker-compose.yml

1
2
# expose:
# - "7500"

注释frps.ini

1
2
3
4
# dashboard_addr = 0.0.0.0
# dashboard_port = 7500
# dashboard_user = admin
# dashboard_pwd = admin

重启镜像

1
docker-compose restart

最后

群晖在没有公网IP的情况下如何做镜像是个问题。