马卫青的博客

爱思思爱猫爱技术

安装必要的软件和环境

● 安装宝塔面板或类似工具:如果你选择使用宝塔面板,可参考其官方文档进行安装。确保安装好 PHP(如 8.0.2 版本)、Mysql(如 5.7 版本)、Nginx(如 1.21 版本)。

● 配置数据库:创建一个数据库用于兰空图床存储数据,记录数据库的名称、用户名、密码等信息。

下载兰空图床代码

● 从兰空图床的官方网站或开源代码仓库获取图床的代码文件。

部署到本地服务器

● 通过宝塔面板部署(如果使用宝塔):
     ○ 将下载的兰空图床代码文件上传到服务器的指定目录(可通过宝塔的文件管理功能进行操作)。
     ○ 在宝塔面板中创建一个新的网站站点,并将该站点的根目录设置为存放兰空图床代码的目录。
     ○ 打开网站的配置文件(通常是 Nginx 或 Apache 的配置文件),进行必要的配置,如设置网站的访问权限、错误页面处理等。
     ○ 在浏览器中输入本地服务器的地址(通常是 localhost 或 127.0.0.1)加上指定的端口号(如果有设置非默认端口),访问兰空图床的安装页面。
     ○ 根据安装页面的提示,填写数据库信息(数据库名称、用户名、密码等)以及其他必要的配置项,完成兰空图床的安装。

● 使用 Docker 部署(另一种常见方式):
     ○ 安装 Docker 和 Docker Compose。
     ○ 创建一个安装目录,进入该目录并创建一个  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
version: '3'
services:
lsky-pro:
container_name: lsky-pro
image: dko0/lsky-pro
restart: always
volumes:
- /root/data/docker_data/lsky-pro/lsky-pro-data:/var/www/html # 映射到本地
ports:
- 7791:80
environment:
- MYSQL_HOST=mysql
- MYSQL_DATABASE=lsky-pro
- MYSQL_USER=lsky-pro
- MYSQL_PASSWORD=lsky-pro
mysql:
image: mysql:8.0
container_name: lsky-pro-db
restart: always
environment:
- MYSQL_DATABASE=lsky-pro
- MYSQL_USER=lsky-pro
- MYSQL_PASSWORD=lsky-pro
- MYSQL_ROOT_PASSWORD=lsky-pro
volumes:
- /root/data/docker_data/lsky-pro/db:/var/lib/mysql
  • 保存  docker-compose.yml  文件,然后在该目录下执行  docker-compose up -d  命令来启动兰空图床容器。 - 等待容器创建完成后,在浏览器中输入相应的地址和端口号(如 7791 端口)访问兰空图床的安装页面,后续步骤与上述通过宝塔面板部署的安装步骤类似,填写数据库信息等完成安装。

不同的操作系统和具体环境可能会导致一些细节上的差异,如果在部署过程中遇到问题,建议参考兰空图床的官方文档或相关的技术论坛获取更详细的帮助和解决方案。同时,确保遵守相关的法律法规和软件使用规定。

前言

本教程基于绿联的NAS设备DX4600 Pro的docker功能进行搭建。

简介

NginxWebUI是一个基于Java的,专门用来管理Nginx的图形界面工具。它是开源的,使用相对简单且功能全面。

使用NginxWebUI,用户可以在图形界面中完成Nginx的配置管理,不需要直接编辑配置文件。它提供了对Nginx的各项功能的可视化操作,包括服务器的启动、停止、重载配置、编辑配置文件等。

NginxWebUI通过直观的界面和操作,可以极大地简化Nginx的管理工作,特别适合不熟悉命令行操作或者希望简化Nginx管理工作的用户。

另外,NginxWebUI还支持多节点管理,可以在一个界面上管理多台Nginx服务器。这对于管理大规模、分布式的Nginx环境是非常有帮助的。

在功能上,NginxWebUI除了基本的启动、停止、重载配置等操作,还支持配置文件的备份和恢复,支持查看Nginx的状态和日志,支持配置负载均衡和代理设置等。

部署

打开Docker管理器,在“镜像管理”中选择“镜像仓库”,在右上角进行搜索cym1102/nginxwebui​​​,找到如下图所示的镜像进行下载。

下载完成以后,在“本地镜像”中找到它,点击“创建容器”。

勾选“创建后启动容器”,然后直接点击“下一步”。

将“基础设置”中的重启策略配置成“容器退出时总是重启容器”。

将“网络”中的“网络名称”配置成“host​​​”。

这里必须使用“host”,因为内部nginx可能使用任意一个端口, 所以必须映射本机所有端口。

在NAS中创建一个目录,用于保存nginxwebui的配置和数据,在“存储空间”内与容器的/home/nginxWebUI​​​目录建立映射,并配置为“读写”类型。

在“环境”中,点击“添加”,增加一行,配置好后,点击“下一步”。

参数示例:

1
2
3
4
5
6
--server.port={port}​
​--project.home={path}​
​--spring.database.type=mysql​
​--spring.datasource.url=jdbc:mysql://{ip}:{port}/nginxwebui​
​--spring.datasource.username={username}​
​--spring.datasource.password={password}​


完成以上步骤后,检查一下,确认无误后直接点击“完成”。

在浏览器中输入{IP}:{Port}​​,即可访问。

使用
请参考官方文档 nginxWebUI Doc(https://gitee.com/cym1102/nginxWebUI)


一、前言
没有申请到公网IP,内网穿透只好选用zerotier,好处就是P2P端点的带宽,不受云服务器和FRP带宽限制。

打算用zerotier组建了笔记本——NAS——手机三个端,满足NAS在IPV4大内网环境下的相互访问。

zerotier主服务器在外网会有网络波动风险,打算自行构建Moon节点缓解并提升访问速度。

二、新建网络
https://www.zerotier.com注册账号,登陆后点击Create A Network 创建一个虚拟网络,复制下NETWORK ID备用。

点进去修改下信息,最好选择Private安全一些。

三、window端操作

zerotier下载地址:https://www.zerotier.com/download/,选择Window下载。 

安装之后,桌面任务栏右下角选择Join New Network加入网络,粘贴之前复制的NETWORK ID。

回到zerotier网页,往下翻到 Members条目,点击Auth?给授权。


至此,Windows操作系统的笔记本已经加入该虚拟网络。
四、手机端操作
ios需要科学上网其他区的Apple ID下载zerotier App,安卓需要去应用商店下载zerotier App,安装完毕后同样选择加入新网络,填写NETWORK ID即可,记得在软件的设置中勾选使用手机流量数据(ios不用)。

五、NAS&Linux端操作
NAS中zerotier的安装可参考群晖安装docker zerotier_docker安装zerotier_xiliu542的博客-CSDN博客

采用docker的方式在黑群晖中安装zerotier,鉴于最近群晖docker套件中搜索注册表总是抽风,直接ssh安装。

ssh进入NAS,输入下面命令搜索。

1
sudo docker search zerotier-synology

输入下面命令安装。

1
sudo docker pull zerotier-synology


安装后返回群晖docker,在映像中选择zerotier-synology并配置。

配置内容如下:




双击这个容器出现下图选择“终端机”,点击“新增”右边的下三角标按钮,选择”通过命令启动”。

出现对话框后输入zerotier-cli join 粘贴之前复制的NETWORK ID。

然后点击左侧的zerotier-cli,显示 200 join OK。

继续去网页授权,现在这三个端可以互相访问,访问IP为Managed IPs

五、Moon搭建和优化

zerotier默认使用全球的服务节点,高峰时刻不稳定,官方也有说明,可以搭建自己的moon服务器作为跳板,加速网络,但应注意需要公网IP,为此选择三丰云的免费云服务器(需要注册及简单的实名认证)。

我选择了以下配置,请记住公网IP:

moon 服务器搭建较为简单,登录云服务器后,如下下载安装:

1
curl -s https://install.zerotier.com/ | sudo bash

进入 zerotier 配置目录。

1
cd /var/lib/zerotier-one

生成 moon.json 签名文件,并编辑

1
zerotier-idtool initmoon identity.public >>moon.jsonvi moon.json

将你的公网IP添加到”stableEndpoints”: [] 中,类似 “stableEndpoints”: [ “xxx.xxx.xx.xxx/9993”] 这种。后面的端口若没有改变则默认都是9993端口, 且是UDP协议的, 此处在防火墙上需要开放UDP,否则是连接不上Moon的.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"id": "3648b35427",
"objtype": "world",
"roots": [
{
"identity": "3648b35427:0:49fbcc3fb665ac07dbbf5825a63d771d38dcc37f94393de88766d3a39a488156e02f6d816e3a3a3684af5d2385b7401944ce54651fd8de6b2a13f4d8d0ec9a5c",
"stableEndpoints": ["34.84.xxx.xxx/9993"]
}
],
"signingKey": "3475482010c71caf78bf00573552ebcd53cd83b2e09572374eaeae2383c9773d9d0c697e4ee0b3ae4a74e20abd04651c9fe6a339a1077f47bbeedce2a10d44f1",
"signingKey_SECRET": "294e4d31e71847eeea842aa60c2aba603f95666263970bb39e21eb4c349ee77c265bf903fce3b1870f9825346b87de7861b1538f24006d93e20b90f1a9bd9913",
"updatesMustBeSignedBy": "3475482010c71caf78bf00573552ebcd53cd83b2e09572374eaeae2383c9773d9d0c697e4ee0b3ae4a74e20abd04651c9fe6a339a1077f47bbeedce2a10d44f1",
"worldType": "moon"
}

生成 .moon 签名文件

1
zerotier-idtool genmoon moon.json

目录下会有一个.moon后缀文件生成,把它复制到moon.d文件夹下,重启systemctl restart zerotier-one.service,moon服务器搭建成功。

其他端接入这个moon,先复制服务器的id,通过 zerotier-cli info 查看。

windows通过管理员运行cmd,输入 zerotier-cli.bat orbit Moon服务器的id Moon服务器的id

linux直接输入 zerotier-cli orbit Moon服务器的id Moon服务器的id

最后通过 zerotier-cli listpeers 有出现MOON成功。

六、总结
互相ping,看下延迟。

结束。

winscp有什么用呢?对于群晖NAS来说,这东西用处还是很大的,特别是对一些代码大神,winscp和putty这俩东西是标配。putty可以登陆群晖系统,执行代码,有时安装一些套件就会用到。而winscp是Windows环境下使用SSH的开源图形化SFTP客户端,可以很方便地管理群晖里面的文件。啥?群晖的文件不是直接登陆群晖,在file station里面就能管理了吗?不全是,file station里面只显示一些可以让你管理的文件,但还有很多的系统文件、套件程序文件、缓存文件、临时文件等是不能在file station里面管理的,压根就不显示出来。因为这些文件涉及系统的运行,怕你瞎搞,影响到系统运行。其实和手机一个道理,手机经常都说root,就是获取root权限,直接管理手机里面的所有文件。 下图所示就是winSCP这个软件界面,可以非常方便地把电脑上面的文件上传到群晖里面。

群晖DSM6.0以后就封锁了ROOT权限登录,导致无法使用WinSCP使用root登录修改文件(使用admin账号是没有权限的)。 下面就教大家如何使用这个winSCP。 1、控制面板–终端机和SNMP–启动SSH功能和Telnet功能。

2、使用putty登陆群晖,没有这个软件的先下载一个。 打开putty,在主机名称输入群晖的局域网IP地址,然后点击下面的【打开】。

3、弹出一个黑色的窗口,输入管理员账号:admin,按回车,然后输入admin的密码,要注意的是,输入密码的时候,光标是不会动的,你尽管输就行。
4、切换到root权限。输入sudo -i,按回车,然后也是输入admin的密码。
5、更改root登陆winscp的账号密码,输入synouser –setpw root nkhd01(其中这个nkhd01就是密码,可以和admin密码一样)

6、输入vi /etc/ssh/sshd_config

出现以下提示,绿色部分提示一共有6个选项,我们要编辑文件,所以输入E,就是Edit anyway。 
7、修改ssh配置文件,允许root账号登录winscp。点击键盘的字母  i,会进入编辑模式,在窗口最底部会显示– INSERT –字样。 使用键盘的上下方向箭头(使用鼠标移动或者滚轮移动是无效的)移动到 #PermitRootLogin prohibit-password 这行,把这行删掉,修改成PermitRootLogin yes,有些用户可能没有上面那一行,而是#PermitRootLogin yes,那就把#PermitRootLogin yes前面的#去掉即可。

最后按下键盘Esc键退出编辑模式,输入 :wq 按回车后就保存退出了,然后重启一下你的nas。 到这里就完成了,可以使用root账号通过winscp登陆群晖了。 主机名输入群晖ip地址,用户名是root,密码就是前面设置的那个密码(不是admin的密码) 登陆成功后如下图所示,一般左边是你电脑上的文件,右边窗口就是群晖的。 双击那个直角箭头,就可以看到群晖里面的文件夹了。

 以下节选自知乎 https://zhuanlan.zhihu.com/p/399860541

四、连接群辉用ROOT账户登录并使用WinSCP及PuTTY操作

新建站点,主机名仍输入群晖ip地址,用户名用root,密码就是前面设置的那个密码123456

注意:如果用SFTP登录出现意外关闭,要用SCP

登陆成功后如下图所示,一般左边窗口是你电脑上本地文件,右边窗口是群晖在root下的完整目录文件夹。
双击volume1这个文件夹,就能进入群辉存储空间1的文件目录。这里面就能看到你自己建的文件夹和系统文件夹,在此可以完全操作。如里面的@download,它就是download station的缓存文件夹,经常有用户碰到删除了PT任务和下载的文件,但空间并没有增加,就是因为缓存没有删除。使用root在winSCP登陆的话,可以在这里直接删除。

下一步开始屏蔽群晖更新并且套件更新不受影响!!!!

vsftpd Docker image based on Centos 7. Supports passive mode and virtual users.

fauria/vsftpd

This Docker container implements a vsftpd server, with the following features:

  • Centos 7 base image.
  • vsftpd 3.0
  • Virtual users
  • Passive mode
  • Logging to a file or STDOUT.
Installation from Docker registry hub⁠.

You can download the image with the following command:

1
docker pull fauria/vsftpd

Environment variables

This image uses environment variables to allow the configuration of some parameters at run time:

  • Variable name: FTP_USER
  • Default value: admin
  • Accepted values: Any string. Avoid whitespaces and special chars.
  • Description: Username for the default FTP account. If you don’t specify it through the FTP_USER environment variable at run time, admin will be used by default.

  • Variable name: FTP_PASS
  • Default value: Random string.
  • Accepted values: Any string.
  • Description: If you don’t specify a password for the default FTP account through FTP_PASS, a 16 character random string will be automatically generated. You can obtain this value through the container logs⁠.

  • Variable name: PASV_ADDRESS
  • Default value: Docker host IP / Hostname.
  • Accepted values: Any IPv4 address or Hostname (see PASV_ADDRESS_RESOLVE).
  • Description: If you don’t specify an IP address to be used in passive mode, the routed IP address of the Docker host will be used. Bear in mind that this could be a local address.

  • Variable name: PASV_ADDR_RESOLVE
  • Default value: NO
  • Accepted values: <NO|YES>
  • Description: Set to YES if you want to use a hostname (as opposed to IP address) in the PASV_ADDRESS option.

  • Variable name: PASV_ENABLE
  • Default value: YES
  • Accepted values: <NO|YES>
  • Description: Set to NO if you want to disallow the PASV method of obtaining a data connection.

  • Variable name: PASV_MIN_PORT
  • Default value: 21100
  • Accepted values: Any valid port number.
  • Description: This will be used as the lower bound of the passive mode port range. Remember to publish your ports with docker -p parameter.

  • Variable name: PASV_MAX_PORT
  • Default value: 21110
  • Accepted values: Any valid port number.
  • Description: This will be used as the upper bound of the passive mode port range. It will take longer to start a container with a high number of published ports.

  • Variable name: XFERLOG_STD_FORMAT
  • Default value: NO
  • Accepted values: <NO|YES>
  • Description: Set to YES if you want the transfer log file to be written in standard xferlog format.

  • Variable name: LOG_STDOUT
  • Default value: Empty string.
  • Accepted values: Any string to enable, empty string or not defined to disable.
  • Description: Output vsftpd log through STDOUT, so that it can be accessed through the container logs⁠.

  • Variable name: FILE_OPEN_MODE
  • Default value: 0666
  • Accepted values: File system permissions.
  • Description: The permissions with which uploaded files are created. Umasks are applied on top of this value. You may wish to change to 0777 if you want uploaded files to be executable.

  • Variable name: LOCAL_UMASK
  • Default value: 077
  • Accepted values: File system permissions.
  • Description: The value that the umask for file creation is set to for local users. NOTE! If you want to specify octal values, remember the “0” prefix otherwise the value will be treated as a base 10 integer!

  • Variable name: REVERSE_LOOKUP_ENABLE
  • Default value: YES
  • Accepted values: <NO|YES>
  • Description: Set to NO if you want to avoid performance issues where a name server doesn’t respond to a reverse lookup.

  • Variable name: PASV_PROMISCUOUS
  • Default value: NO
  • Accepted values: <NO|YES>
  • Description: Set to YES if you want to disable the PASV security check that ensures the data connection originates from the same IP address as the control connection. Only enable if you know what you are doing! The only legitimate use for this is in some form of secure tunnelling scheme, or perhaps to facilitate FXP support.

  • Variable name: PORT_PROMISCUOUS
  • Default value: NO
  • Accepted values: <NO|YES>
  • Description: Set to YES if you want to disable the PORT security check that ensures that outgoing data connections can only connect to the client. Only enable if you know what you are doing! Legitimate use for this is to facilitate FXP support.

Exposed ports and volumes

The image exposes ports 20 and 21. Also, exports two volumes: /home/vsftpd, which contains users home directories, and /var/log/vsftpd, used to store logs.

When sharing a homes directory between the host and the container (/home/vsftpd) the owner user id and group id should be 14 and 50 respectively. This corresponds to ftp user and ftp group on the container, but may match something else on the host.

Use cases

1、 Create a temporary container for testing purposes:

1
docker run --rm fauria/vsftpd
  1. Create a container in active mode using the default user account, with a binded data directory:
1
2
3
docker run -d -p 21:21 -v /my/data/directory:/home/vsftpd --name vsftpd fauria/vsftpd
# see logs for credentials:
docker logs vsftpd
  1. Create a production container with a custom user account, binding a data directory and enabling both active and passive mode:
1
2
3
4
5
docker run -d -v /my/data/directory:/home/vsftpd \
-p 20:20 -p 21:21 -p 21100-21110:21100-21110 \
-e FTP_USER=myuser -e FTP_PASS=mypass \
-e PASV_ADDRESS=127.0.0.1 -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 \
--name vsftpd --restart=always fauria/vsftpd
  1. Manually add a new FTP user to an existing container:
1
2
3
4
5
6
docker exec -i -t vsftpd bash
mkdir /home/vsftpd/myuser
echo -e "myuser\nmypass" >> /etc/vsftpd/virtual_users.txt
/usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
exit
docker restart vsftpd

手动安装 ffmpeg

步骤 1: 下载静态构建的 ffmpeg 打开终端(通过 SSH 或直接访问)。 下载静态构建的 ffmpeg(适用于大多数 Linux 系统):

1
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz

解压文件:

1
tar -xf ffmpeg-release-amd64-static.tar.xz

步骤 2: 安装 ffmpeg 将 ffmpeg 可执行文件移动到 /usr/local/bin:

1
2
cp ffmpeg-*-amd64-static/ffmpeg /usr/local/bin/
cp ffmpeg-*-amd64-static/ffprobe /usr/local/bin/

设置可执行权限:

1
2
chmod +x /usr/local/bin/ffmpeg
chmod +x /usr/local/bin/ffprobe

步骤 3: 验证安装 运行以下命令检查是否安装成功:

1
ffmpeg -version

如果显示版本信息,说明安装成功。
步骤 4: 清理下载的文件 删除下载和解压的文件:

1
rm -rf ffmpeg-release-amd64-static.tar.xz ffmpeg-*-amd64-static

使用 Docker 容器

如果你更倾向于使用 Docker,可以通过 Docker 容器运行 ffmpeg。

步骤 1: 安装 Docker 插件(如果尚未安装) 进入 Unraid 的 Web 界面。 点击 “Apps” 选项卡。 搜索 “Docker” 并安装。

步骤 2: 运行 ffmpeg 容器 打开终端(通过 SSH 或直接访问)。 运行以下命令启动一个包含 ffmpeg 的容器:

1
docker run --rm -it jrottenberg/ffmpeg ffmpeg -version

这将下载并运行一个包含 ffmpeg 的 Docker 镜像,并显示版本信息。

步骤 3: 使用 ffmpeg 容器

你可以将 ffmpeg 容器用于各种任务。例如,转换视频格式:

1
docker run --rm -v /path/to/input:/input -v /path/to/output:/output jrottenberg/ffmpeg -i /input/video.mp4 /output/video.avi

手动安装 cifs-utils

步骤 1: 下载 cifs-utils 包
访问 Slackware 的官方镜像站点,找到最新的 cifs-utils 包。例如: Slackware 官方镜像 进入 slackware64-current/slackware64/n/ 目录,查找 cifs-utils 的最新版本。
使用 wget 下载正确的包。例如:

1
wget http://mirrors.slackware.com/slackware/slackware64-current/slackware64/n/cifs-utils-7.2-x86_64-1.txz

(注意:版本号可能会变化,请根据实际情况调整。)

步骤 2: 安装 cifs-utils

1
installpkg cifs-utils-*.txz

验证安装:

1
mount.cifs --version

如果显示版本信息,说明安装成功。

安装

下载安装包,RoonServer_linuxx64.tar.bz2一起拷到linux机器上,确认sh文件有执行权限后:

1
2
chmod +x roonserver-installer-linuxx64.sh
sudo ./roonserver-installer-linuxx64.sh

安装脚本会将文件解压到 /opt/RoonServer 目录。

如果搞砸了,执行

1
sudo ./roonserver-installer-linuxx64.sh uninstall

再来一遍即可

手动启动 Roon Server

由于 Unraid 使用的是 BusyBox不支持 Systemd 或 SysVinit,Roon Server 的安装脚本无法自动配置服务。 你需要手动启动 Roon Server,并通过编辑 /boot/config/go 文件设置开机自启动。

为了解决这些问题,我们需要手动调整安装过程。以下是详细的解决方案:

步骤 1: 启动 Roon Server 进入 Roon Server 的安装目录:

1
cd /opt/RoonServer

启动 Roon Server:

1
./start.sh

步骤 2: 验证 Roon Server 是否运行
检查 Roon Server 是否正在运行:

1
ps aux | grep RoonServer

如果看到 RoonServer 进程,说明启动成功。
打开浏览器,访问 http://:9330,确认 Roon Server 的 Web 界面是否可用。

设置开机自启动 由于 Unraid 不支持 Systemd 或 SysVinit,我们需要通过 Unraid 的自启动机制来启动 Roon Server。
步骤 1: 编辑 /boot/config/go 文件 打开 /boot/config/go 文件:

1
nano /boot/config/go

在文件末尾添加以下内容:

1
2
# Start Roon Server
/opt/RoonServer/start.sh &

保存并退出编辑器(按 Ctrl + X,然后按 Y 确认保存)。
步骤 2: 重启 Unraid 重启 Unraid:

1
reboot

重启后,检查 Roon Server 是否自动启动:

1
ps aux | grep RoonServer

停止 Roon Server 如果需要手动停止 Roon Server,可以运行以下命令:

1
/opt/RoonServer/stop.sh

卸载 Roon Server
如果需要卸载 Roon Server,可以执行以下步骤: 停止 Roon Server:

1
/opt/RoonServer/stop.sh

删除安装目录:

1
rm -rf /opt/RoonServer

删除开机自启动配置(如果已添加): 编辑 /boot/config/go 文件,删除与 Roon Server 相关的行。

1
2
3
4
5
6
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.1ms.run"]
}
EOF

示例:

科大镜像:https://docker.mirrors.ustc.edu.cn/
网易:https://hub-mirror.c.163.com/
阿里云:https://<你的ID>.mirror.aliyuncs.com
七牛云加速器:https://reg-mirror.qiniu.com

阿里云登录地址 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

2、UNraid 的设置中找到Docker

先关闭,在开启。

3、这样设置后可以使用,但一旦UNraid重启后又恢复原状。所以要进行以下设置。

(1)打开控制台

(2)输入命令:

cd /boot/config/

vi go

打开go文件后,添加以下信息:

1
2
3
4
5
6
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.1ms.run"]
}
EOF

最后wq保存即可。

一、环境 本文搭建的ftp服务器是在Ubuntu20.04上搭建的vsftp服务器,运行在腾讯云上
二、安装软件
安装vsftp软件

1
sudo apt-get install vsftpd

设置成开机启动

1
sudo systemctl enable vsftpd

启动ftp服务

1
sudo systemctl start vsftpd

确认服务是否启动

1
sudo netstat -antup | grep ftp


此时,vsftpd 已默认开启匿名访问模式,无需通过用户名和密码即可登录 FTP 服务器。使用此方式登录 FTP 服务器的用户没有权修改或上传文件的权限。
三、vsftp配置文件 创建ftp用户,使用m参数,把ftp用户的home目录一起创建

1
sudo useradd -m ftpuser

设置ftp用户密码

1
sudo passwd ftpuser

创建 FTP 服务使用的文件目录,本文以 /home/ftpuser为例,创建用户时已经一起创建好 打开 vsftpd.conf 文件

1
sudo vim /etc/vsftpd.conf

修改以下配置参数,设置匿名用户和本地用户的登录权限,设置指定例外用户列表文件的路径,并开启监听 IPv4 sockets(创建vsftpd目录,安装的时候,可能没有创建该目录,直接安装到/var目录下了)

1
2
3
4
5
6
7
anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
write_enable=YES

在行首添加 #,注释 listen_ipv6=YES 配置参数,关闭监听 IPv6 sockets

1
#listen_ipv6=YES

添加以下配置参数,开启被动模式,设置本地用户登录后所在目录,以及云服务器建立数据传输可使用的端口范围值,并保存退出

1
2
3
4
5
6
local_root=/var/ftp
allow_writeable_chroot=YES
pasv_enable=YES
pasv_address=xxx.xx.xxx.xx #请修改为您服务器公网 IP
pasv_min_port=40000
pasv_max_port=45000

创建并编辑 chroot_list 文件

1
sudo vim /etc/vsftpd/chroot_list

输入用户名,一个用户名占据一行,设置完成后按 Esc 并输入 :wq 保存后退出 重启 FTP 服务

1
sudo systemctl restart vsftpd

四、权限设置

如果是使用ftpuser的home目录,给与sudo权限

1
sudo vim /etc/sudoers

增加一行

1
ftpuser ALL=(ALL) NOPASSWD: ALL

五、防火墙设置

使用被动模式,需要放开如下端口 

被动模式:放通端口21,及 修改配置文件 中设置的 pasv_min_port 到 pasv_max_port 之间的所有端口,本文放通端口为40000 - 45000 

六、Filezila设置


使用filezila连接成功

七、vsftpd 服务启动失败

1、检查 vsftpd 配置文件 vsftpd 的主配置文件是 /etc/vsftpd.conf。确保该文件没有语法错误或无效配置。可以使用以下命令检查配置文件:

1
sudo nano /etc/vsftpd.conf

确保配置文件中的参数正确。以下是一个常见的配置示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

如果配置文件中有无效参数或语法错误,修正后保存并退出。
2. 测试 vsftpd 配置 使用以下命令测试 vsftpd 配置文件的正确性:

1
sudo vsftpd /etc/vsftpd.conf

如果配置文件有误,vsftpd 会输出具体的错误信息。根据错误信息修正配置文件。
3. 检查日志 查看 vsftpd 的日志文件以获取更多信息。日志文件通常位于 /var/log/vsftpd.log 或 /var/log/syslog。运行以下命令查看日志:

1
sudo tail -n 50 /var/log/vsftpd.log

或者:

1
sudo grep vsftpd /var/log/syslog

日志中可能会包含具体的错误信息,帮助你进一步排查问题。
4. 检查端口冲突 vsftpd 默认使用端口 21。确保没有其他服务占用该端口。可以使用以下命令检查端口占用情况:

1
sudo netstat -tuln | grep :21

如果端口被占用,停止占用端口的服务,或者修改 vsftpd 的配置文件,使用其他端口。
5. 检查 SELinux/AppArmor 如果你的系统启用了 SELinux 或 AppArmor,它们可能会阻止 vsftpd 启动。可以尝试临时禁用 SELinux 或 AppArmor,然后重新启动 vsftpd: 禁用 SELinux(仅适用于使用 SELinux 的系统):

1
sudo setenforce 0

禁用 AppArmor(仅适用于使用 AppArmor 的系统):

1
2
sudo systemctl stop apparmor
sudo systemctl disable apparmor

6、 重新启动 vsftpd 服务 在修正配置文件后,重新启动 vsftpd 服务:

1
sudo systemctl restart vsftpd

7、 查看服务状态 再次查看 vsftpd 服务的状态,确认是否启动成功:

1
sudo systemctl status vsftpd

8、 重新安装 vsftpd 如果问题仍然无法解决,可能是 vsftpd 安装不完整或损坏。尝试重新安装:

1
2
sudo apt remove --purge vsftpd
sudo apt install vsftpd

9、 检查系统资源 确保系统资源(如内存、磁盘空间等)充足。可以使用以下命令检查系统资源:

1
2
free -h
df -h

之前分享的配置rustdesk的帖子只是搭建了一个简易服务器,仅能实现简单的远程桌面功能。在后续的使用中切换设备使用时无法看到之前连接的设备,必须知道每个设备的id号,才能在新设备上连接。数据无法在设备间迁移,感觉很麻烦。而官方将账号登录的功能放到了专业版里,普通的自建服务器想实现账号管理只能另想办法。

​ 好在网上有一些大佬自建了rustdesk-api服务器项目,本文测试了网上的一些方法,统一整理了一个简单搭建方案作为补充。另外还整理了傻瓜式搭建rustdesk服务器的方法。

1
2
3
参考资料:
https://github.com/lejianwen/rustdesk-api
https://github.com/lejianwen/rustdesk-api/pkgs/container/rustdesk-api

windows一键部署
下载文件需要能访问国外网站

1、RustDesk
· 下载安装包
下载地址:windows-x86_64.zip

· 运行
a. 解压文件

b. 运行前需要安装node.js
下载地址:Node.js

c. 安装pm2
打开cmd,输入下列命令

1
2
3
npm install -g pm2
npm install pm2-windows-startup -g
pm2-startup install

d. 运行hbbr和hbbs
在解压后的文件目录下打开cmd

1
2
3
4
cd C:\rustdesk-server-windows-x64
pm2 start hbbs.exe
pm2 start hbbr.exe
pm2 save #保存PM2,开机自启

查看运行状态

1
pm2 list

2、API
· 下载安装包
下载地址:Releases · lejianwen/rustdesk-api
· 运行
a. 解压安装包

b. 编辑配置文件

记事本或其他文本编辑器打开config.yaml

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
lang: "zh-CN"
app:
web-client: 1 # 1:启用 0:禁用
gin:
api-addr: "0.0.0.0:21114"
mode: "release" #release,debug,test
resources-path: 'resources' #对外静态文件目录
trust-proxy: ""
gorm:
type: "sqlite"
max-idle-conns: 10
max-open-conns: 100
mysql:
username: ""
password: ""
addr: ""
dbname: ""
rustdesk: # 自行配置信息
id-server: "你的api服务器的域名或IP:21116"
relay-server: "你的api服务器的域名或IP:21117"
api-server: "http://你的api服务器的域名或IP:21114"
key: "自己设置key"
personal: 1
logger:
path: "./runtime/log.txt"
level: "warn" #trace,debug,info,warn,error,fatal
report-caller: true
proxy:
enable: false
host: ""
redis:
addr: "127.0.0.1:6379"
password: ""
db: 0
cache:
type: "file"
file-dir: "./runtime/cache"
redis-addr: "127.0.0.1:6379"
redis-pwd: ""
redis-db: 0
oss:
access-key-id: ""
access-key-secret: ""
host: ""
callback-url: ""
expire-time: 30
max-byte: 10240
jwt:
private-key: "./conf/jwt_pri.pem"
expire-duration: 360000

c. 双击运行apimain.exe

d. 访问后台
浏览器打开IP或域名:21114,默认用户名和密码都是admin

Linux一键部署
1、RustDesk
· 下载安装包
下载地址:Releases · lejianwen/rustdesk-api
下载压缩包直接解压,下载deb文件使用dpkg命令进行安装。

· 运行
给hbbr和hbbs增加可执行权限,然后直接 ./ 运行即可
2、API
· 下载安装包
下载地址:Releases · lejianwen/rustdesk-api
· 运行
a. 编辑配置文件

配置信息和之前的一样

b. 执行apimain
给apimain文件增加执行权限,./apimain 直接执行即可

c. 访问后台
依旧浏览器打开IP或域名:21114,默认用户名和密码都是admin

Linux的docker安装
RustDesk
查看我的rustdesk基础配置文章:自建RustDesk实现远程桌面

API
· 拉取镜像(需要能访问国外网站)

1
docker pull ghcr.io/lejianwen/rustdesk-api:latest

· 使用docker-compose安装

1
2
3
mkdir /data/rustdesk/api	# 创建项目目录
cd /data/rustdesk/api
vim docker-compose.yaml # 创建yaml文件

docker-compose.yaml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
version: '2.1'
services:
rustdesk-api:
container_name: rustdesk-api
environment:
- TZ=Asia/Shanghai
- RUSTDESK_API_RUSTDESK_ID_SERVER=域名或IP:21116
- RUSTDESK_API_RUSTDESK_RELAY_SERVER=域名或IP:21117
- RUSTDESK_API_RUSTDESK_API_SERVER=http://域名或IP:21114
- RUSTDESK_API_RUSTDESK_KEY=自设置key
ports:
- 21114:21114
image: lejianwen/rustdesk-api
volumes:
- /data/rustdesk/api:/app/data #将数据库挂载出来方便备份
networks:
- rustdesk-net
restart: unless-stopped
networks:
rustdesk-net:
external: false

· 运行docker

1
docker-compose up -d

· 访问后台
依旧浏览器打开IP或域名:21114,默认用户名和密码都是admin

后续登录配置
​ 上面的步骤配置完后就能在后台创建账号,客户端要使用创建的账号进行登录,还需要配置客户端信息。在客户端设置中配置api服务器,就能实现登录功能。

若想使用github绑定登录账号,需要配置oauth

· GitHub创建oauth apps

地址:https://github.com/settings/developers

填写相关信息,自己服务器的IP或域名

创建好后会生成ClientId和ClientSecret

· api后台创建oauth

填入生成的ClientId和ClientSecret

​ RedirectUrl为:http://你的域名或IP/api/oauth/callback

​ 选择github进行创建

· 配置完后就可以使用GitHub绑定账号进行授权登录了
解决登录账号后连接慢的问题
4种解决方案
1、server端指定key。
· 优点:简单
· 缺点:链接不是加密的

1
2
3
4
5
hbbs -r <relay-server-ip[:port]> -k <key>
hbbr -k <key>
比如
hbbs -r <relay-server-ip[:port]> -k abc1234567
hbbr -k abc1234567

hbbs -r <relay-server-ip[:port]> -k
hbbr -k
比如
hbbs -r <relay-server-ip[:port]> -k abc1234567
hbbr -k abc1234567

Linux安装

机器上缺少依赖包,需要先执行

1
sudo apt install ffmpeg cifs-utils

RoonServer_linuxx64.tar.bz2拷到linux机器上,执行

1
2
chmod +x roonserver-installer-linuxx64.sh
sudo ./roonserver-installer-linuxx64.sh

如果搞砸了,执行

1
sudo ./roonserver-installer-linuxx64.sh uninstall

Roon Optimized Core Kit (ROCK):安装方法

1、下载ROCK的安装U盘镜像文件,官方ROCK下载地址:https://download.roonlabs.com/builds/roonbox-linuxx64-nuc3-usb-factoryreset.img.gz

2、把”linux 2.0学习版安装包“解压出来,用Rufus写入U盘里;

3、进入BIOS设置,启动方式为ROCK这个安装U盘,接上网线;

4、启动系统,出现选择ROCK是否安装,选1,然后选择安装位置,这里第一个选固态硬盘,选y,自动进行安装,安装完毕,重启;[拔掉ROCK安装用的U盘,按回车自动重启]

5、重启进入系统,出现IP地址,现在可以通过局域网里头的电脑进行登录;

6、如果出现CODES问题,下载ffmpeg-release-amd64-static,下载地址:https://www.johnvansickle.com/ffmpeg/ 仅仅解压出ffmpeg文件,包里其它文件不需要,使用电脑的资源管理器,访问ipDataCodecs,拷贝ffmpeg文件到这个目录,[对第二块硬盘Internal Music Storage进行格式化;]

7、重启ROCK,正常启动,[ipDataStorageInternalStorage进入第二个固态或机械硬盘,拷贝音乐到这个硬盘,]其它Roon设备就可以正常访问了;

Synology DSM7.0下的安装方法

1、用File Station,新增一个共享文件夹”RoonServer” 然后在RoonServer上点右键,选属性-权限-新增-用户或组-沟选”Everyone”及其读取权限。(如果安装过官方版请删除里面的文件)

2、将下载好的Linux文件夹下的RoonServer_linuxx64.tar.bz2复制到群晖下面的RoonServer共享文件夹中,注意RoonServer共享文件夹用户”Everyone”要获得读取权限。

3、在群晖里选手动安装RoonServer_Synology_DSM7_x86_64_2.0.1470.spk套件




5.选离线安装(记住别选错了)


6. 关于音乐库权限:




晖新套件:UPnPBridge 将DLNA转为SqueezeBox

本套件是群友需求,研究了下制作的。因为Roon本身不支持输出,但是支持Squeezebox设备(就是LMS(Logitech MediaServer)体系),将Roon使用Squeezebox协议输出的音频转成DLNA的协议使用这个软件实现:Squeeze2upnp,他的目的就是将DLNA设备变成SqueezeBox设备。采用开源项目LMS-uPnP,本站基于AirConnect-Synology修改。支持DSM7.x的x86_64、armv8群晖机型!矿神群晖SPK套件源上线啦!支持DSM7.x矿神群晖SPK套件源提供各类国内常用的DSM6、DSM7套件,目前上架DSM7套件:Aria2、ffmpeg、Jellyfin、qBittorrent、Syncthing、Transmission等等,持续更新.



配置参数
注意:局域网有DLAN设备才会生成配置文件:config.xml,套件才能正常运行!!!修改配置文件前先停用套件!
1、如果局域网没有DLAN设备本次启动就无法生成config.xml,但下次有DLAN设备时启动套件会自动生成;
2、如果局域网又增加了DLAN设备,可以先删除config.xml,再重新启动套件会重新生成新的配置文件。
安装后会建共享文件夹:UPnPBridge,生成配置文件:config.xml,下载自行编辑后上传覆盖(覆盖!不是删除后上传)。

Roon使用参考:https://zhuanlan.zhihu.com/p/449665739,在识别的设备参数增加:

1
<roon_mode>1</roon_mode>

另外重要的一点,需要在Huawei Sound的”device”段中增加以下属性,否则会不能播放下一首,或者播放进度条不走

1
<accept_nexturi>1</accept_nexturi>

后续有新设备发现,squeeze2upnp会为新设备增加一个device段到配置文件。如果你不想自动增加新设备(可能会造成问题),可以将”common”段的”enabled”属性设置为0

roon-web-controller



0%