主题
FnOS
优化
code-server & qwen coder cli打造浏览器里的AI IDE
code-server
下载最新的包到本地
bash
wget https://github.com/coder/code-server/releases/download/v4.103.1/code-server-4.103.1-linux-amd64.tar.gz
tar -vxf code-server-4.103.1-linux-amd64.tar.gz
code-server-4.103.1-linux-amd64/bin/code-server配置
bash
vi ~/.config/code-server/config.yamlyml
bind-addr: 0.0.0.0:8443
auth: password
password: your_pwd
cert: false关闭服务,改成开机启动,创建 code-server 的 systemd 服务文件
在 /etc/systemd/system/ 目录下创建一个名为 code-server.service 的文件,内容如下:
ini
[Unit]
Description=code-server
After=network.target
[Service]
Type=simple
User=xxx
ExecStart=/path/to/your/code-server
Restart=always
[Install]
WantedBy=multi-user.target- 将 <你的用户名> 替换为你的 Linux 用户名。
- 将 /path/to/your/code-server 替换为你的 code-server 可执行文件的实际路径。
重新加载 systemd 配置
运行以下命令,让 systemd 重新加载配置文件:
bash
sudo systemctl daemon-reload启用并启动服务
运行以下命令,启用 code-server 服务,并立即启动它:
bash
sudo systemctl enable --now code-server验证服务状态
运行以下命令,检查 code-server 服务的状态:
bash
sudo systemctl status code-server如果一切正常,你应该能看到服务正在运行,并且会在系统启动时自动启动。
配置qwen cli
安装nodejs
bash
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs验证版本(需要>=20):
bash
node -v
npm -v安装 Qwen
bash
npm install -g @qwen-code/qwen-code@latest
qwen --versionAPI 配置
设置您的 Qwen API 密钥(在 Qwen Code 项目中,您也可以在 .env 文件中设置您的 API 密钥)。.env 文件应放置在当前项目的根目录中。
获取API Key(魔塔每天免费2000次)
前往 https://bailian.console.aliyun.com/ 或 https://modelscope.cn/docs/model-service/API-Inference/intro 申请 API 密钥
bash
export OPENAI_API_KEY="your_api_key_here"
export OPENAI_BASE_URL="https://api-inference.modelscope.cn/v1"
export OPENAI_MODEL="Qwen/Qwen3-Coder-480B-A35B-Instruct" # 或其他模型启动软件:
bash
qwen需要先登录授权

成功后就可以在浏览器里玩耍了
clouddrive2
反复测试众多网盘挂载工具,包括飞牛自带的,clouddrive2绝对是消耗资源最小,速度最快的,
但飞牛没有直接可安装的app,docker安装复杂又麻烦,问题还多
所以可以直接安装linux-x86版 clouddrive-2
首先官网下载 clouddrive-2-linux-x86_64-0.9.8.tgz改为简短的名字clouddrive2.tgz
然后上传到飞牛文件夹,比如我上传到home,复制文件夹地址/vol1/1000/home
ssh登录飞牛
进入文件夹:
html
cd /vol1/1000/home解压缩,这时home文件夹下应该有程序文件夹clouddrive2
html
tar zxvf clouddrive2.tgz进入程序文件夹:
html
cd clouddrive2启动程序:
html
./clouddrive这时在浏览器输入 飞牛ip:19798 就可以打开clouddrive2了
当然每次都这样手动启动不现实
接下来就需要把clouddrive2设置为服务,开机自启动
具体方法是要在etc/systemd/system上传一个文本文件clouddrive.service
文件内容为:
html
[Unit]
Description= Clouddrive Service
After=smbd.service
[Service]
ExecStart=*/vol1/1000/home/clouddrive2/*./clouddrive
WorkingDirectory=*/vol1/1000/home/clouddrive2*
Restart=always
[Install]
WantedBy=multi-user.target星号部分更换为你的实际程序地址
生成这个文件有很多方法
1.在电脑先生成这个文本文件clouddrive.service,然后用winscp 或者 飞牛 1panel app 上传到飞牛etc/systemd/system,这可能要root权限,具体方法另行搜索
2.ssh直接新建文件,命令如下
html
sudo nano /etc/systemd/system/clouddrive.service粘贴上面的文件内容
ctrl+o保存,
ctrl+x退出
文件clouddrive.service创建成功后,执行下面3条命令让服务生效
html
sudo systemctl daemon-reload
sudo systemctl enable clouddrive.service
sudo systemctl start clouddrive.service这样就成功安装了clouddrive2,重启也会自动运行
可以用下面命令确认程序运行状态
html
sudo systemctl status clouddrive.service应该会得到
html
● clouddrive.service - Clouddrive Service
Loaded: loaded (/etc/systemd/system/clouddrive.service; enabled; preset: enabled)
Active: active (running) since Mon 2025-09-01 11:24:23 CST; 1h 28min ago
Main PID: 1760 (clouddrive)
Tasks: 96 (limit: 4593)
Memory: 104.1M
CPU: 30.789s
CGroup: /system.slice/clouddrive.service
\*\*─1760 /vol1/1000/home/clouddrive2/./clouddrive
\*\*─1868 /vol1/1000/home/clouddrive2/./clouddrive Start-Service 1760Sep 01 11:24:23 gf systemd[1]: Started clouddrive.service - Clouddrive Service.
Sep 01 11:24:23 gf clouddrive[1760]: housekeeping /vol1/1000/home/clouddrive2/./clouddrive
Sep 01 11:24:23 gf clouddrive[1868]: welcome to clouddrive v0.9.8 with cloudapi v0.9.8 build 25-08-26 01:59:25
Sep 01 11:24:23 gf clouddrive[1868]: system initializing...
Sep 01 11:24:23 gf clouddrive[1868]: database initialized
Sep 01 11:24:23 gf clouddrive[1868]: FileProperties SQLite path: ./Waytech/CloudDrive2/fileproperties.sqlite
Sep 01 11:24:23 gf clouddrive[1868]: system initialized!飞牛开启bbr算法,给自带下载提提速
1、sudo nano /etc/sysctl.conf 2、最后加入两行代码,保存退出
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr3、刷新让代码生效 sudo sysctl -p 4、如要恢复,可重新进文件把两行代码#掉。
Docker
OnlyOffice 的本地网页文档编辑器
基于 OnlyOffice 的本地网页文档编辑器,允许您直接在浏览器中编辑文档,无需服务器端处理,确保您的隐私和安全。
🔒 **隐私优先 **:所有文档处理都在浏览器本地进行,不上传到任何服务器
📝 **多格式支持 **:支持 DOCX、XLSX、PPTX、CSV 和多种其他文档格式
⚡ **实时编辑 **:提供流畅的实时文档编辑体验
🚀 **无需服务器 **:纯前端实现,无需服务器端处理
🎯 **即用 **:立即打开网页开始编辑文档
🌐 **从 URL 打开 **:通过 URL 参数直接从远程 URL 加载文档 (原项目刚支持,我打包镜像的时候还没有支持)
🌍 **多语言 **:支持多种语言(英语、中文),并可轻松切换(原项目刚支持,我打包镜像的时候还没有支持)
原项目地址
我汉化和构建docker镜像的
yml
#version: '3'
name: ranuts-document
services:
ranuts-document:
container_name: ranuts-document
image: swr.cn-north-4.myhuaweicloud.com/firfe/ranuts-document:2025.11.12
network_mode: bridge
restart: always
logging:
options:
max-size: 1m
max-file: '1'
ports:
- 5162:5162TrWebOCR
一个开源易用的中文离线 OCR 项目,识别率媲美大厂,并且提供了易用的 Web 页面及接口
Docker Compose
yml
services:
trwebocr:
image: mmmz/trwebocr:latest
container_name: trwebocr
ports:
- 8089:8089
restart: always浏览器中输入 http://NAS的IP:8089 就能看到界面
悟空CRM
在飞牛NAS上使用Docker Compose一键部署悟空CRM开源版!这可是企业级客户关系管理系统,完全免费开源,功能强大到让你惊喜!
悟空CRM官网地址:https://www.5kcrm.com/crm
开源项目地址:https://github.com/WuKongOpenSource/Wukong_AI_CRM_15
- 至少4GB内存(推荐8GB以获得流畅体验)
- 20GB以上存储空间
- 到https://github.com/WuKongOpenSource/Wukong_AI_CRM_15项目地址下载项目文件夹docker下载到NAS
html
# Docker Compose 版本
version: '3.8'
# 服务定义
services:
# MySQL 数据库服务
mysql:
image: docker.io/mysql/mysql-server:8.0.32 # 使用官方 MySQL 8.0.32 镜像
container_name: mysql # 容器名称
volumes:
# 1. 挂载自定义配置文件(注意:直接挂载文件可能产生权限问题)
- /vol1/1000/Docker/wukongCRM/mysql/my.cnf:/etc/my.cnf
# 2. 挂载初始化脚本目录(容器启动时会自动执行该目录下的SQL文件)
- /vol1/1000/Docker/wukongCRM/mysql:/docker-entrypoint-initdb.d/
# 3. 数据持久化挂载(将数据库数据保存到宿主机)
- /vol1/1000/Docker/wukongCRM/mysql/data:/var/lib/mysql
ports:
- "53306:3306" # 修改为五位数端口,避免冲突
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-wukongCrm@2025} # root密码,支持环境变量
MYSQL_ROOT_HOST: "%" # 允许所有主机连接
TZ: Asia/Shanghai # 时区设置
LANG: en_US.UTF-8 # 语言设置
restart: always # 总是重启
command: >
bash -c "chmod 644 /etc/my.cnf && exec /entrypoint.sh mysqld --lower_case_table_names=1" # 设置配置文件权限并启动,表名小写
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] # 健康检查:ping数据库
interval: 10s # 检查间隔
timeout: 30s # 超时时间
retries: 10 # 重试次数
start_period: 180s # 启动后等待时间
networks:
- kaka # 使用自定义网络
# Redis 缓存服务
redis:
image: docker.io/redis:7.0.4 # 使用 Redis 7.0.4 镜像
restart: always
environment:
REDISCLI_AUTH: ${REDIS_PASSWORD:-123456} # Redis CLI 认证密码
volumes:
- /vol1/1000/Docker/wukongCRM/redis/data:/data # 数据持久化
command: redis-server --requirepass ${REDIS_PASSWORD:-123456} # 启动时设置密码
ports:
- "56379:6379" # 修改为五位数端口
healthcheck:
test: ["CMD-SHELL", "redis-cli -a ${REDIS_PASSWORD:-123456} ping | grep -q PONG"] # 健康检查
interval: 10s
timeout: 30s
retries: 5
start_period: 10s
networks:
- kaka
# MinIO 对象存储服务
minio:
container_name: minio
restart: always
image: docker.io/minio/minio:RELEASE.2024-10-02T17-50-41Z # 特定版本MinIO
environment:
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin} # 访问密钥
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin} # 秘密密钥
MINIO_DOMAIN: minio # 域名设置
volumes:
- /vol1/1000/Docker/wukongCRM/minio/data:/minio_data # 存储数据挂载
command: minio server /minio_data --console-address ":9001" # 启动命令,包含控制台地址
ports:
- "${MINIO_PORT:-59000}:9000" # API端口改为五位数
- "${MINIO_CONSOLE_PORT:-59001}:9001" # 控制台端口改为五位数
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] # 健康检查
interval: 30s
timeout: 20s
retries: 3
start_period: 60s
networks:
- kaka
# MinIO 初始化服务(用于创建别名和设置权限)
minio-init:
image: docker.io/quay.io/minio/mc:RELEASE.2024-11-21T17-21-54Z # MinIO客户端
container_name: minio-init
depends_on:
minio:
condition: service_healthy # 等待minio服务健康后再启动
entrypoint: >
/bin/sh -c "
sleep 10 && \ # 等待10秒确保minio完全启动
mc alias set kaka http://minio:9000 minioadmin minioadmin && \ # 设置别名
mc anonymous set download kaka/wukong-public || true" # 设置公开桶的下载权限
networks:
- kaka
restart: "no" # 不重启(一次性任务)
# Elasticsearch 搜索服务
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.13.4 # 官方ES镜像
container_name: elasticsearch
restart: always
volumes:
- /vol1/1000/Docker/wukongCRM/elasticsearch/plugins:/usr/share/elasticsearch/plugins # 插件目录
environment:
ELASTIC_PASSWORD: ${ELASTICSEARCH_PASSWORD:-c6oRpADe1SW304zDjqKlNst0} # 密码
cluster.name: es-cluster # 集群名称
node.name: es0 # 节点名称
discovery.type: single-node # 单节点模式
xpack.license.self_generated.type: basic # 许可证类型
xpack.security.enabled: "true" # 启用安全
xpack.security.http.ssl.enabled: "false" # 禁用HTTPS
ports:
- ${ELASTICSEARCH_PORT:-59200}:9200 # ES端口改为五位数
deploy:
resources:
limits:
memory: 2g # 内存限制
healthcheck:
test: ["CMD", "curl", "-s", "http://localhost:9200/_cluster/health?pretty"] # 集群健康检查
interval: 30s
timeout: 10s
retries: 50
start_period: 120s
networks:
- kaka
# 悟空CRM 主应用服务
wk_crm:
image: wuknogcrm-registry.cn-beijing.cr.aliyuncs.com/wukongcrm/wk_crm:20251015 # 私有镜像
platform: linux/amd64 # 指定平台
container_name: wk_crm
restart: always
volumes:
- /vol1/1000/Docker/wukongCRM/wukong/logs:/opt/wk_boot/logs # 日志目录
- /vol1/1000/Docker/wukongCRM/wukong/config:/opt/wk_boot/config # 配置目录
depends_on:
minio:
condition: service_healthy # 依赖所有基础服务健康状态
redis:
condition: service_healthy
elasticsearch:
condition: service_healthy
mysql:
condition: service_healthy
ports:
- "58445:8445" # 主应用端口改为五位数
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8445/ping"] # 应用健康检查
interval: 30s
timeout: 20s
retries: 3
start_period: 60s
environment:
- LANG=zh_CN.UTF-8 # 中文环境设置
- LANGUAGE=zh_CN:zh
- LC_ALL=zh_CN.UTF-8
networks:
- kaka
# Nginx 反向代理服务
nginx:
container_name: nginx
image: docker.io/nginx:latest # 最新版Nginx
restart: always
volumes:
- /vol1/1000/Docker/wukongCRM/nginx/conf.d:/etc/nginx/conf.d # 配置文件
- /vol1/1000/Docker/wukongCRM/nginx/cert:/etc/nginx/cert # SSL证书
environment:
NGINX_SERVER_NAME: ${NGINX_SERVER_NAME:-_} # 服务器名称
NGINX_PORT: ${NGINX_PORT:-80} # 监听端口
ports:
- '58280:80' # 映射到宿主机五位数端口
networks:
- kaka
# 自定义网络配置
networks:
kaka:
driver: bridge # 使用桥接网络模式这个 Docker Compose 配置文件定义了一个完整的悟空CRM系统,包含以下核心服务:
MySQL - 关系型数据库 53306:3306
Redis - 缓存服务 56379:6379
MinIO - 对象存储服务 59000:9000
Elasticsearch - 搜索引擎 59200:9200
wk_crm - 主应用服务 58445:8445
Nginx - 反向代理服务器 58280:80
所有服务都通过自定义的 kaka网络进行通信,确保服务间的网络隔离和安全。
悟空CRM系统: http://你的NAS_IP:58280
MinIO控制台: http://你的NAS_IP:59001 (账号: minioadmin/minioadmin)
Elasticsearch: http://你的NAS_IP:59200
OmniBox
OmniBox,可以说是我最近最满意的家庭影视方案之一,建议镜像转存一下省的没了,它不是单纯的播放器,而是一个“以聚合为核心”的家庭影音中枢——多源影视、网盘资源、电视源、直播源,全都能一站整合。
OmniBox 还支持 弹幕 API、TMDB API 接入,播放页面能直接展示分季分集的海报、剧照、剧情简介、演员信息、评分等,整个观影流程非常舒服。
如果你不喜欢在网页端看,也没关系,它还能无缝接入 TVBox、MBOX 等播放端,在 PC、手机、电视上都能随时开看。
🐳Docker Compose 部署代码
html
services:
omnibox:
image: lampon/omnibox:latest
container_name: omnibox
restart: always
environment:
- TZ=Asia/Shanghai
ports:
- "7023:7023"
volumes:
- ./data:/app/data
networks:
default:
name: media-net
external: false浏览器访http://ip:7023进行访问使用
进去后首页虽然有封面,但是没有资源可以看,所以还需要导入json资源配置文件,点右上角 我的- >管理, 进入配置页面或者链接快速进入
json资源配置文件下载我会不定期更新里面的资源
html
https://xiaoxu.lanzoub.com/iMhBJ3cft4hg下载是一个压缩包,解压后会有个json文件,我们点导入/导出按钮,把json文件导入进去
这些资源懂得都懂,玩过的肯定都是知道的
此时就可以搜索资源观看了
他还支持搜索网盘资源,默认是不支持的,我们需要在部署一个pansou的Docker项目,对接上去才可以,部署教程之前发过,其实和前面一样的,我直接给代码
html
services:
pansou:
image: ghcr.io/fish2018/pansou-web:latest
container_name: pansou-app
ports:
- "8080:80"
- "4433:443"
environment:
- DOMAIN=localhost
- PANSOU_PORT=8888
- PANSOU_HOST=127.0.0.1
volumes:
- ./pansou-data:/app/data
- ./pansou-logs:/app/logs
restart: unless-stopped
networks:
- media-net # 添加到同一个网络
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
# 定义网络(与 omnibox 相同)
networks:
media-net:
external: true # 确保与 omnibox 一致左边侧栏选择网盘资源->盘搜应用->配置应用地址,填入部署的盘搜地址就行,外网如果要用就填外网访问域名,网盘类型全选就行
html
http://ip:8080在盘搜项目上能搜索到的,omnibox上面都可以
此时再去搜索就会有网盘的选择项了
如果网盘资源需要**就需要进行授权登录,我试了夸克基本秒播,如果只转存资源可以不授权登录
支持电视直播(自己部署或者网上找填入.m3u地址就行)和自定义平台直播(选择平台填入房间号)
可以切换画质,就是没有弹幕可看
插件设置,可以设置弹幕API和TMDB的API,感觉没什么用
TVBox等软件的对接,管理界面的右上角有一个订阅按钮,可以获取到API链接
打开 TVBox 填进去就行
其他的自己研究试试看,相当于就是盘搜和之前已经退场几款项目的结合体,有能力的自己转存一下镜像,或者保持本地,省的今后消失。
Qinglong
一款支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台
Docker Compose
html
services:
qinglong:
image: whyour/qinglong:latest
container_name: qinglong
ports:
- 5700:5700
volumes:
- ./data:/ql/data
restart: unless-stopped浏览器中输入 http://NAS的IP:5700 就能看到界面
命令
飞牛 NAS 基于 Linux 系统(通常是 Debian/Ubuntu 衍生版本),其命令基本遵循 Linux 系统规范,同时结合 NAS 的存储、服务管理特性,常用命令可分为以下几类,供参考:
一、系统管理基础命令
- 登录与权限
ssh 用户名@NAS_IP:通过 SSH 连接 NAS(需先在 Web 界面开启 SSH)sudo -i:切换到 root 管理员权限(输入当前用户密码)exit:退出 SSH 连接或 root 权限
- 系统状态查看
df -h:查看磁盘分区及空间使用情况(重点看 NAS 存储盘)du -sh 目录路径:查看指定目录占用空间free -h:查看内存使用情况top或htop(需安装):实时查看进程和 CPU 占用uname -a:查看系统内核版本uptime:查看系统运行时间(是否刚重启等)
- 关机与重启
reboot:立即重启 NASshutdown -h now:立即关机shutdown -r +10:10 分钟后重启(+ 后面为分钟数)
二、存储与磁盘管理
- 磁盘与分区
fdisk -l:列出所有磁盘及分区信息(需 root 权限)lsblk:以树形结构显示磁盘、分区及挂载点mount:查看已挂载的存储设备(含 NAS 共享目录)mount /dev/sdX /mnt/目录:手动挂载磁盘分区(需先创建目录)umount /mnt/目录:卸载已挂载的分区
- 共享目录相关
ls /mnt或ls /volume:查看 NAS 的存储卷(通常共享目录在此路径下)chmod 权限 目录/文件:修改文件 / 目录权限(如chmod 777 /mnt/share开放所有权限)chown 用户名:用户组 目录/文件:修改文件 / 目录的所有者
三、服务与进程管理
- 服务控制(常用 NAS 服务)
systemctl status 服务名:查看服务状态(如smbd是 Samba 服务,nfs-kernel-server是 NFS 服务)systemctl start 服务名:启动服务systemctl stop 服务名:停止服务systemctl restart 服务名:重启服务systemctl enable 服务名:设置服务开机自启
- 进程管理
ps aux | grep 关键词:查找指定进程(如ps aux | grep samba)kill -9 进程ID:强制终止进程(进程 ID 通过ps命令获取)
四、网络管理
ifconfig或ip addr:查看网络接口及 IP 地址ping 目标IP/域名:测试网络连通性netstat -tuln或ss -tuln:查看端口占用情况(如 NAS 的 80 端口、445 端口等)hostname -I:快速查看本机 IP 地址
五、软件包管理(基于 Debian/Ubuntu)
apt update:更新软件源列表apt upgrade -y:升级已安装的软件包apt install 软件名:安装软件(如apt install htop)apt remove 软件名:卸载软件apt autoremove:清理无用依赖包
六、计划任务(定时操作)
crontab -e:编辑当前用户的定时任务(需 root 权限可设置系统级任务)crontab -l:查看已设置的定时任务- 格式:
分 时 日 月 周 命令(如0 3 * * * reboot表示每天凌晨 3 点重启)
注意事项
- 操作前建议通过飞牛 NAS 的 Web 界面备份重要数据,避免误操作导致数据丢失。
- 部分命令需要
root权限(前缀加sudo),执行时确保了解命令作用。 - 飞牛 NAS 可能对部分系统目录做了限制,修改核心配置文件前建议先查阅官方文档。
如果需要特定场景(如 RAID 管理、用户权限配置)的命令,可以进一步说明具体需求。