1、docker拉取OpenWRT镜像docker pull unifreq/openwrt-aarch64 等待下载完成,也可以拉取其他大佬的镜像2、开启网卡混杂模式ip link set eth0 promisc on重启 N1 就会失效。网卡永久设置混杂模式修改 /etc/rc.local 加入如下代码（vi打开文件，i键进入编辑模式，输入后按esc退出编辑模式，按 :wq!保存退出）：vi /etc/rc.local ip link set eth0 promisc on改完后重启网络 /etc/init.d/network restart 或者重启系统检查网卡是否混杂模式。查看是否设置成功，输入ifconfig命令，如·下图红色框·所示：网卡名eth0按自己实际的来看创建 Docker 虚拟网络docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.1 -o parent=eth0 macnet ps：eth0 为自己实际的网卡名，一般是eth0，看自己ssh连接的ip网卡名就行注意：macnet 为名称，macvlan 为模式，另外请将 192.168.0 修改为你自己主路由网段。运行OpenWRT容器docker run --restart always -d --name=OpenWRT --network macnet --privileged unifreq/openwrt-aarch64 /sbin/init注意：OpenWrt 包名与前述导入/pull下来的保持一致，后面 /sbin/init 可以省略。macnet 虚拟网络名字与前面创建的一致。配置 OpenWRT 容器网络docker exec -it OpenWRT bashOpenWRT 是前面 --name 指定的容器名字，没有指定的话以通过运行 docker container ls 显示出的NAMES字段获得。这样我们就进到OpenWRT的系统里了。vi /etc/config/network将 option ipaddr 192.168.X.1 替换旁路由 OpenWRT IP 地址（如 192.168.0.254），注意需与主路由同网段。如果确定只做旁路有还可以顺带把 DHCP 和桥接关掉，然后 ESC，:wq! 保存退出。参考配置：config interface 'lan' option ifname 'eth0' option proto 'static' option netmask '255.255.255.0' option gateway '192.168.0.1' option ip6assign '60' option dns ' 8.8.8.8 114.114.114.114' option ipaddr '192.168.0.254' option broadcast '192.168.0.255' reboot或者/etc/init.d/network restart重启 OpenWRT/网络，就可以 192.168.0.254 登录Docker 里的 OpenWRT的路由了。用户名 密码（root password）禁用dhcp功能配置科学上网如图所示，就不细说了，懂都懂。配置全局设置(所有设备都能直接代理)此方案优点是可以让一些不能配置网关的设备通过N1代理, 例如Xbox等, 就只能用这种方法.缺点是需要更改主路由设定, 如果多人共用主路由不建议这样设置除非所有人都有代理需求.方法如下:打开主路由的设置界面, 进入DHCP设置, 将网关设置为N1的IP也就是192.168.0.254, 保存后再去电脑上查询IP设定时会发现网关已经是N1的IP了. 若未发生变化建议断开网络后重新连接以刷新网关设定这个地方提醒一下各位小白不要设置成WAN接口的网关了,否则可能上不了网了, 比如我这个路由器就会给我提示设置错误.其他品牌的路由器设置应该大同小异.非全局设置（手动配置过的设备能代理）非全局方案好处是可以想让哪台设备上网就让哪台设备上网, 并且不会打扰到别人的网络体验.缺点是某些无法自定义网关的设备例如Xbox无法通过N1代理.电脑首先连接到主路由的网络, 打开Control PanelNetwork and InternetNetwork Connections, 如图进行操作记住下面这张图里的IPv4 Address这里IP Address里面填刚刚记下的IPv4 Address最后确定即可生效和电脑上类似,先记下原来的IP地址, 然后开启静态IP, 将网关改为192.168.0.254选择静态，然后和电脑配置一样。设置网关为192.168.0.254
1、N1系统选择我的是刷在U盘（32G）里的armbain（Armbian是轻量级的Debian系统和为ARM开发板专门发行并重新编译的Debian系统(Ubuntu派生自Debian)）。N1系统2G+8G，容器什么的安装比较多的话8G很快就用完了，我安装玩这一套，差不多5G左右。N1只要你降级后，刷入过别的系统（这个降级刷机，网上很多教程，这里就不细说了），很简单，直接下载镜像，同个写盘软件写入到U盘即可。写盘软件->（https://www.aliyundrive.com/s/KNHUbi7M4xq）。镜像包（flippy大神的Armbian_5.98，已经换了清华源，Linux version 5.3.8-amlogic-flippy-11+ (root@x96-max) (gcc version 8.3.0 (Debian 8.3.0-6)) #32 SMP PREEMPT Wed Oct 30 09:30:31 CST 2019）->链接:https://www.123pan.com/s/xWd9-edRP3要解压后得到img结尾的镜像包刷入u网上找的写盘图：等到写盘完成后，弹出格式化不要点，退出U盘。插入N1的usb口（靠近hdmi的那个），插电开机，然后查看路由器里新的ip，ssh连接，用户名root 密码1234 第一次进系统会要去改密码，自己设置一个记住，然后就可以使用armbain啦。2、docker安装登录后，先执行命令 apt-get update更新，然后再执行 apt-get upgrade更新软件，都是选y，我记得我还再执行了一下apt-get update。等到都更新完后，在/root目录下有安装docker的脚本install-docker.sh，执行cd /root ./install-docker.sh就开始安装docker了。install.sh是写入系统emmc的脚本，想安装在系统emmc的可以执行后，拔掉U盘重启后再执行上面说的更新命令等安装完成后，执行命令docker -v 有版本号说明安装成功，可以去一键docker了 ##3、各个docker容器安装## 我是在/opt创建了docker目录，作为各个容器的挂载目录portainer(docker容器管理ui界面)创建目录mkdir /opt/docker/protainer/下载汉化包，可以中文显示，当然你要是直接用英文也是没问题的链接: https://pan.baidu.com/s/1pTWptTaiw05x0CCpbRKpQg 提取码: ec8a解压后，使用winscp或者其他上传工具到/opt/docker/protainer/目录下一键梭哈命令docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /opt/docker/protainer/portainer_data:/data -v /opt/docker/protainer/public:/public -e TZ=Asia/Shanghai --name portainer portainer/portainer:latest然后http://ip:9000端口就可以访问了，第一次创建用户名和密码，点击local就能进去docker管理界面qinglong一键梭哈命令：mkdir /opt/docker/QL docker run -dit --name QL --hostname QL --restart always -p 5700:5700 -v /opt/docker/QL/config:/ql/config -v /opt/docker/docker/QL/log:/ql/log -v /opt/docker/QL/db:/ql/db -v /opt/docker/QL/scripts:/ql/scripts -v /opt/docker/QL/jbot:/ql/jbot whyour/qinglong:latest然后http://ip:5700端口就可以访问了，第一次创建用户名和密码，这个大伙应该都很熟悉了nvjdccaptcha(ARM64的nolanJDCopenv镜像)nuolan大佬的教程很详细：https://github.com/NolanHzy/nvjdcdocker/blob/main/Arm安装说明.md//拉源码git clone https://ghproxy.com/https://github.com/NolanHzy/nvjdcdocker.git /root/nolanjdc//拉取镜像docker pull nolanhzy/nvjdccaptcha:arm//运行容器docker run --name nvjdccaptcha -p 5703:5000 --restart=always -d -it --privileged=true nolanhzy/nvjdccaptcha:arm//安装浏览器apt-get install chromium//创建一个目录放配置cd /root/nolanjdc mkdir -p Config && cd Config//手动建立Config.json 配置文件 注意ARM多一个配置 Captchaurl{ ///浏览器最多几个网页 "MaxTab": "4", //回收时间分钟 不填默认3分钟 "Closetime": "5", //Opencv镜像地址 刚刚镜像的地址 "Captchaurl": "http://xxxxx:5703", //网站标题 "Title": "NolanJDCloud", //网站公告 "Announcement": "本项目脚本收集于互联网。为了您的财产安全，请关闭京东免密支付。", ///XDD PLUS Url http://IP地址:端口/api/login/smslogin "XDDurl": "", ///xddToken "XDDToken": "", "AutoCaptchaCount": "5", ///## 8. Push Plus官方网站：http: //www.pushplus.plus ///下方填写您的Token，微信扫码登录后一对一推送或一对多推送下面的token，只填" "PUSH_PLUS_TOKEN", "PUSH_PLUS_TOKEN": "", //下方填写您的一对多推送的 "群组编码" ，（一对多推送下面->您的群组(如无则新建)->群组编码） "PUSH_PLUS_USER": "", ///开启打印等待日志卡短信验证登陆 可开启 拿到日志群里回复 "Debug": "1", ///青龙配置 注意 如果不要青龙 Config :[] "Config": [ { //序号必填从1 开始 "QLkey": 1, //服务器名称 "QLName": "阿里云", //青龙地址 "QLurl": "xxx", //青龙2,9 OpenApi Client ID "QL_CLIENTID": "", //青龙2,9 OpenApi Client Secret "QL_SECRET": "", //CK最大数量 "QL_CAPACITY": 99, "QRurl": "" } ] } //回到的目录 下载NET5.shcd /root/nolanjdc wget https://dot.net/v1/dotnet-install.sh// 设置权限chmod 777 dotnet-install.sh//下载NET5./dotnet-install.sh -c 5.0//设置 pathexport PATH="$PATH:$HOME/.dotnet"//启动nohup dotnet NETJDC.dll --urls=http://*:5701 1>"$(pwd)"/log 2>&1 & #ARM64配置文件在最后文章末尾我会提供下载配置文件的QL_CLIENTID 和 QL_SECRET青龙里生成的，这个我就不细说了，站里有很多教程这里有几个地方需要注意：1、安装浏览器默认只有Ubuntu有 chromium-browser 所以我这边armbain换成了chromium，不行可以执行以下命令，我是这么做的，自己多试试吧= _ =||apt-get update apt-get install snapd snap install core snap install chromium apt-get install chromium安装后，默认是没有/usr/bin/chromium-browser的，要我们把安装后的浏览器软链接到这里。执行命令：ln -s /etc/alternatives/gnome-www-browser /usr/bin/chromium-browser然后查看就是如下图所示，指向真正的地址2、安装.NET5这个可能和个人的网络有关系，下载dotnet-install.sh脚本后，执行，一直下载不到压缩包，然后我就vim到脚本里，修改curl为wget了，反正我是下载了一晚上才下载好（晚上执行，第二天早上醒来是安装好了）3、执行nohup dotnet NETJDC.dll --urls=http://*:5701 1>"$(pwd)"/log 2>&1 & ARM64 这是是注释运行后，然后可以查看cat /root/nolanjdc/log 日志文件，看是否报错 访问：http://ip:5701(注意5703是容器openv的访问接口，不是nvjdc的)（点击获取验证码报错 ：The type initializer for 'Gdip' threw an exception）安装so库，命令：apt-get install libgdiplus傻妞-sillyGirl我用的猫咪大佬的一键安装直接执行set sillyGirl download_prefix https://ghproxy.com/ cd /etc s=sillyGirl;a=arm64;if [[ $(uname -a | grep "x86_64") != "" ]];then a=amd64;fi ;if [ ! -d $s ];then mkdir $s;fi ;cd $s;wget https://mirror.ghproxy.com/https://github.com/cdle/${s}/releases/download/main/${s}_linux_$a -O $s && chmod 777 $s;pkill -9 $s;$(pwd)/$s 在目录/etc/sillyGirl下新建sets.conf可以进行初始化配置。配置文件文章末尾提供cd /etc/sillyGirl./sillyGirl 运行看是否能正常node-onebot（抄的站里的@yml大佬的文章教程https://www.kejiwanjia.com/jiaocheng/53488.html）先安装nvmwget -qO- https://ghproxy.com/https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash然后执行source ~/.bashrc 可能就是重启(刷新)下吧执行nvm -v检查nvm是否安装成功成功后就可以方便的安装node了使用 nvm ls-remote命令即可列出所有可以安装的node版本其实直接执行nvm install 你想安装的版本即可,例如安装node最新的长支持版nvm install v16.13.1即可安装v16.13.1 版本node是包含npm的,此时你可以使用npm -v测试是否成功安装pm2请执行 npm install -g pm2即可安装执行pm2 -v即可检查是否安装成功然后我们配置node-onebotcd /home cd到你要安装的目录打开后克隆这个仓库git clone https://ghproxy.com/https://github.com/takayama-lily/node-onebot.git然后就会有很多文件会出现在node-onebot这个文件夹
docker的存放位置 var/lib/dockerdocker命令行[scode type="green"]docker run表示运行容器，-p设置端口映射（宿主机端口:容器端口），--name设置容器名，--restart设置重启方式，-v表示卷的映射，最后是镜像的作者及名称（默认会去docker hub拉取镜像）。[/scode]1、自动挂载外接盘blkid 或者uuid，替换这个备用 UUID=你外接存储设备的uuid号 /media ntfs defaults,nofail 0 2 我挂载到/media下边的，以下所有镜像都挂在这个目录下边，修改需谨慎。vim /etc/fstab把上边替换后的复制进入2、实现minidlna作用：实现流媒体播放docker run -d \ --name minidlna \ --net=host \ -v /docker/minidlna:/etc/minidlna \ -v /docker/minidlna/media:/media \ lstcml/minidlna标签说明：latest：不支持rmvb，镜像大小较小rmvb：支持rmvb，镜像大小较大目录说明：/etc/minidlna：配置文件目录/media：扫描的媒体文件目录浏览器打开：http://localhost:8200可查看扫描或设备连接情况Mobile App推荐：海贝音乐、nplay3、Samba作用：局域网共享host模式：docker run -d \ --name samba \ --restart=always \ --net=host \ -v /docker/samb/conf:/etc/samba \ -v /docker/samb/share:/mnt/share \ -v /docker/samb/data:/mnt/data \ lstcml/samba非host模式：docker run -d \ --name samba \ --restart=always \ -p 137:137/udp \ -p 138:138/udp \ -p 139:139/tcp \ -p 445:445/tcp \ -v /docker/samb/conf:/etc/samba \ -v /docker/samb/share:/mnt/share \ -v /docker/samb/data:/mnt/data \ lstcml/samba注意：1、如果是小钢炮或其他安装了samba服务的系统需要关闭自带samba服务，否则端口占用导致创建容器失败2、如果访问没权限，说明映射到宿主机的目录没有权限，如/docker/samba/data，需基于对应读写权限(完整权限：chmod 777 /docker/samba/data)默认生成两个目录，默认用户账户密码：admin/admin/etc/samba：配置文件目录/mnt/share：匿名访问目录，拥有读写删权限/mnt/data：用户访问目录，拥有读写删权限4、安装并配置aria2docker pull p3terx/aria2-pro docker run -d --restart unless-stopped --name aria2-pro --log-opt max-size=1m --network host -e PUID=$UID -e PGID=$GID -e RPC_SECRET=123 -e DISK_CACHE=128M -e RPC_PORT=6800 -e LISTEN_PORT=6888 -v /media/aria2/config:/config -v /media/aria2:/downloads p3terx/aria2-pro5、docker版可道云docker pull azking/kodexplorer:4.4.0-arm64 docker run -d --restart=always --name kodexplorer -p 8001:80 -v /media/kodexplorer:/var/www/html azking/kodexplorer:4.4.0-arm64或者用这个源docker run -d \ --name kdcloud \ -p 8068:80 \ --restart=always \ -v /docker/kdcloud:/var/www/html \ lstcml/n1_kodcloud浏览器中输入N1的ip地址+端口，如http://192.168.8.8:8068即可见证奇迹新版可道云kodbox作用：类似windows的web资源文件管理器目前最新版可道云kodboxdocker run -d \ --name kodbox \ -p 8091:80 \ --restart=always \ -v /docker/kdcloud:/var/www/html \ lstcml/kodbox说明：浏览器中输入http://192.168.8.8:8091即可见证奇迹6、微力同步作用：局域网通过同步工具，几乎覆盖全平*（windows、linux、群晖、安装、ios、openwrt等等）docker run -d \ --name verysync \ --restart=always \ -p 8076:8886 \ -v /docker/versync/sync:/media \ lstcml/n1_verysync浏览器中输入N1的ip地址+8076端口，如http://192.168.8.8:8076即可见证奇迹，使用教程->灰机直达主要是通过宿主机需同步目录映射到容器目录中，在容器中进行实时同步7、轻量版Nginx+PHP作用：用于建站，可以自行安装数据库docker run \ --name alpine-nginx-php \ --restart=always \ -d -p 8069:80 \ -v /docker/alpine-nginx-php:/var/www/html \ -e PHP_ERRORS=1 \ -e PHP_UPLOAD_MAX_FILESIZE=250 \ lstcml/alpine-nginx-phpN1中/var/www/html即为站点根目录，浏览器中输入N1的ip地址+8069端口，如http://192.168.8.8:8069即可见证奇迹8、静态化博客hexo作用：可用于搭建博客docker run -d \ --name blog \ --restart=always \ -p 8070:4000 \ -v /docker/hexo:/hexo \ lstcml/hexo浏览器中输入N1的ip地址+4000端口，如http://192.168.8.8:8070即可见证奇迹，hexo具体使用教程请自行百度9、蚂蚁笔记leanote作用：自建笔记服务端docker run -d \ --name leanote \ --restart=always \ -p 8072:9000 \ -v /docker/leanote/leanote/data:/data \ lstcml/n1_leanote浏览器中输入N1的ip地址+8072端口，如http://192.168.8.8:8072即可见证奇迹，windows、mac、ios、Android的客户端可以前往官网下载->飞机直达注：客户端登录自建服务时，注意服务器地址最后不带/，如http://192.168.8.8:8072或http://xxx.xxx.com即可admin/abc123 (管理员用户)demo@leanote.com/demo@leanote.com (体验用户)10、Webdav作用：自建webdav服务器，支持中文文件或目录脚本必须以管理员身份运行docker run -d \ --name webdav \ --restart=always \ -e USERNAME=webdav \ -e PASSWORD=123456 \ -v /media/webdav:/webdav \ -p 8073:80 \ lstcml/n1_webdavps：1、如未自定义账号密码，默认为admin/passwd2、已开启目录浏览，浏览地址为IP+端口号，如：如192.168.8.8:80733、挂载webdav地址为IP+端口号/webdav，如192.168.8.8:8073/webdav4、部分Windows无法映射webdav的情况是因为win7以上默认不支持http，开启同时支持http和https：下载附件解压双击脚本即可 webdav.zip11、Dosgame作用：强大的回忆杀，重返小时候的小霸王、世嘉、Gameboy时代docker run -d \ --name dosgame \ --restart=always \ -p 8074:6000 \ -v /docker/dosgame:/app/static/games/ \ lstcml/dosgame注：打包的镜像中只有42种游戏，下载更多游戏方法（目前共1898种游戏，共31.9G，所以悠着点，需要更多游戏的时候记得创建容器的时候把/app/static/games/挂载到移动硬盘后再去下载，否则后果不堪设想）：docker exec -it dosgame sh进入容器后操作mv /app/static/games/games.json /app/static/games/42games.jsonmv /app/static/games/1898all_games.json /app/static/games/games.jsonpython /app/static/games/download_data.py等待下载完后重启容器即可docker restart dosgame浏览器中输入N1的ip地址+8074端口，如http://192.168.8.8:8074即可见证奇迹12、在线MD编辑器作用：在线编辑MD文本，支持导出本地docker run -d \ --name markdown \ --restart=always \ -p 8075:2000 \ lstcml/n1_markdown浏览器中输入N1的ip地址+8075端口，如http://192.168.8.8:8075即可见证奇迹13、喜马拉雅转泛播客作用：一款喜马拉雅转泛播客的工具docker run -d \ --restart=always \ --name xmlypf \ -p 8077:5000 \ lstcml/ximalaya-podcast-factory浏览器中输入N1的ip地址+5000端口，如http://192.168.8.8:8077即可见证奇迹，使用很简单，打开就知道13、安装并配置nextcloud数据库，可选装，不装忽略。docker run -d --restart=always --name mysqldb -v /meiad/nextcloud/mysqldb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=密码1 -e MYSQL_DATABASE=数据库名称 -e MYSQL_USER=用户名 -e MYSQL_PASSWORD=密码2 mariadbnextcloud范例-安装及配置。docker pull nextcloud docker run -d --restart=unless-stopped --name nextcloud -p 8080:80 -v /media/nextcloud:/var/www/html --link mysqldb:mysql nextcloud #没装数据库的话，这句删掉。14、旁路由openwrt网络设置apt install ipset ip link set eth0 promisc on docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macnet安装镜像docker pull p3terx/openwrt-mini:latest docker run -d --restart always --name ladder --network macnet --privileged p3terx/openwrt-mini:latest /sbin/init配置ip和网关docker ps获得容器IDdocker exec -it 容器ID sh从armbian 进入openwrt镜像vi /etc/config/network编译openwrt镜像的网络设置option type 'bridge' option ifname 'eth0' option proto 'static' option ipaddr '192.168.0.2' #设置openwrt的固定IP option netmask '255.255.255.0' option gateway '192.168.0.1' #网关/主路由IPvi /etc/config/network 编译openwrt镜像的网络设置先按：i 编辑lan ip打开文件修改完成后，需要如下命令：先按：【Esc】 键盘左上角然后：:wq! 解析：: 必须要带w：保存。q：退出!：强制保存退出。rootadminpassword15、漂亮的相册docker run -d \ --name=lychee-laravel \ --restart always \ -v /media/50001/lychee/srv/http/lychee-laravel/conf:/conf \ -v /media/50001/lychee/srv/http/lychee-laravel/uploads:/uploads \ -e PHP_TZ=Asia/Shanghai \ -e PHP_MAX_EXECUTION_TIME=600 \ -e DB_CONNECTION=sqlite \ -e DB_DATABASE=/conf/lychee.db \ -p 90:80 \ 80x86/lychee:latest16、漂亮的文件索引docker run -d \ -p 8085:80 \ -p 8084:443 \ -e HTTP_AUTH="on" \ -e HTTP_USERNAME="my-username" \ -e HTTP_PASSWD="secret-password" \ -v /media/50001/home/my-files:/app/public \ --restart unless-stopped \ --mount type=tmpfs,destination=/tmp \ 80x86/nginx-fancyindex17、博客系统docker run -d \ --name=typecho-blog \ --restart always \ --mount type=tmpfs,destination=/tmp \ -v /media/50001/blog/srv/http/typecho:/data \ -e PHP_TZ=Asia/Shanghai \ -e PHP_MAX_EXECUTION_TIME=600 \ -p 901:80 \ 80x86/typecho:latest18、花生壳内网版作用：用于内网穿透，远程访问N1的http或tcpdocker run -d \ --restart=always \ --name oray \ --mac-address 11:22:33:44:55:66 \ lstcml/oray其中--mac-address主要用于固定MAC地址，为了防止SN码每次在重启主机时候变化，后面的的12位MAC地址自行随机输入，官方内网穿透教程请参考-->飞机直达获取SN码：ssh登录N1后，输入docker logs oray回车（oray是容器名称，如有更变自行替换）14、花生壳蒲公英作用：免费3个成员，同时加入一个虚拟局域网，可相互访问目前发现与zerotier、n2n有冲突，导致容器重启后无法加入局域网，建议三选一docker run -d \ --restart=always \ --device=/dev/net/tun \ --net=host \ --cap-add=NET_ADMIN \ --cap-add=SYS_ADMIN \ --name pgy \ lstcml/n1_pgy进入容器：docker exec -it pgy bash按照提示输入花生壳注册的账号登录，然后手机安卓或水果机或PC电脑安装蒲公英，启动用输入虚拟局域网ip即可访问N1（默认全端口映射），官网资料19、sshd作用：基于alpine的ssh客户端与服务端，可用于作为跳板访问其他设备docker run -d \ --name sshd \ --restart=always \ lstcml/sshd注意，默认不设置密码下，每次重启容器root密码会更变，SSH账户为root，默认密码请查看容器日志docker logs sshd启动容器时设置ROOT密码docker run -d --restart=always --name ssh -e PASSWORD=test123 lstcml/n1_sshd20、百度云同步工具bypy作用：可映射（挂载）主机的目录，通过bypy同步到百度云盘docker run -dit \ --name bypy \ --restart=always \ -v /docker/bypy/sync:/sync \ lstcml/bypy具体使用方法找了个百度的，自己看看-->飞机直达21、mmPlayer作用：也是个人音乐厅，接口来自网易云，支持登录网易云账号，可听个人歌单注意：这个搭建可能相对麻烦一点，请仔细看清楚docker run -d \ --name mmplayer \ -p 8079:8080 \ -p 服务端端口:3000 \ -e HOST=宿主机IP \ -e SPORT=服务端端口 \ lstcml/n1_mmplayer实例：docker run -d \ --name mmplayer \ -p 8079:8080 \ -p 3210:3000 \ -e HOST=192.168.8.188 \ -e SPORT=3210 \ lstcml/n1_mmplayerHOST：输入宿主机，也就是N1的IP地址或域名也行SPORT：必须与映射3000端口的宿主机端口一致22、chfs作用：一款漂亮的web管理器支持上传下载，支持webdavdocker run -d \ --name chfs \ --restart=always \ -e TIMEOUT=3600 \ -p 8080:8080 \ -v /docker/chfs:/data \ lstcml/chfsTIMEOUT：session过期时间，默认1440（24小时），单位为分钟权限：""：不可访问创建用户：docker exec chfs addusr 用户名 密码 权限实例：docker exec chfs addusr lstcml 123456 RWD删除用户：docker exec chfs delusr 用户名实例：docker exec chfs delusr lstcml注：不管创建还是删除用户记得重启容器23、zerotier作用：内网穿透，把不同局域网机器加入同一虚拟局域网实现相互访问，类似蒲公英、n2ndocker run -d \ --name zerotier \ --restart=always \ --device=/dev/net/tun \ --net=host \ --cap-add=NET_ADMIN \ --cap-add=SYS_ADMIN \ lstcml/n1_zerotier查看状态：docker exec zerotier zerotier-cli info加入网络：docker exec zerotier zerotier-cli join NETWORK_ID如果提示tun不存在：docker: Error response from daemon: linux runtime spec devices: error gathering device information while adding custom device "/dev/net/tun": no such file or directory可尝试启动：modprobe tun24、oneindex作用：利用OneDrive打造专属分享型网盘docker run -d \ --name oneindex \ -p 8086:80 \ --restart=always \ -v ~/oneindex/config:/var/www/html/config \ -v ~/oneindex/cache:/var/www/html/cache \ -e REFRESH_TOKEN='0 * * * *' \ -e REFRESH_CACHE='*/10 * * * *' \ lstcml/oneindex说明：浏览器中输入http://192.168.8.8:8086即可见证奇迹REFRESH_TOKEN：使用crontab进行token更新，默认0 ，即每小时更新一次REFRESH_CACHE：使用crontab进行缓存更新，默认/10 *，即每10分钟更新一次25、Webdavdocker pull ugeek/webdav:armdocker run --name webdav \ --restart=unless-stopped \ -p 80:80 \ -v $HOME/docker/webdav（磁盘目录）:/media \ -e USERNAME=用户名自设 \ -e PASSWORD=密码自设 \ -e TZ=Asia/Shanghai \ -e UDI=1000 \ -e GID=1000 \ -d ugeek/webdav:arm \绿底 按需修改 ，管理地址http://xxxxxx:8025、青龙安装docker run -dit \ -v $PWD/ql/config:/ql/config \ -v $PWD/ql/log:/ql/log \ -v $PWD/ql/db:/ql/db \ -v $PWD/ql/repo:/ql/repo \ -v $PWD/ql/raw:/ql/raw \ -v $PWD/ql/scripts:/ql/scripts \ -v $PWD/ql/jbot:/ql/jbot \ -p 5700:5700 \ --name qinglong \ --hostname qinglong \ --restart unless-stopped \ whyour/qinglong:2.11.326、Docker中容器的备份、恢复和迁移备份容器首先，为了备份Docker中的容器，我们会想看看我们想要备份的容器列表。要达成该目的，我们需要在我们运行着Docker引擎，并已创建了容器的Linux机器中运行 docker ps 命令。# docker ps Docker Containers List在此之后，我们要选择我们想要备份的容器，然后去创建该容器的快照。我们可以使用 docker commit 命令来创建快照。# docker commit -p 30b8f18f20b4 container-backup Docker Commit该命令会生成一个作为Docker镜像的容器快照，我们可以通过运行 docker images 命令来查看Docker镜像，如下。# docker images Docker Images正如我们所看见的，上面做的快照已经作为Docker镜像保存了。现在，为了备份该快照，我们有两个选择，一个是我们可以登录进Docker注册中心，并推送该镜像；另一个是我们可以将Docker镜像打包成tar包备份，以供今后使用。如果我们想要在Docker注册中心上传或备份镜像，我们只需要运行 docker login 命令来登录进Docker注册中心，然后推送所需的镜像即可。# docker login 172.16.101.192 Docker Login# docker tag a25ddfec4d2a arunpyasi/container-backup:test # docker push arunpyasi/container-backup Docker Push如果我们不想备份到docker注册中心，而是想要将此镜像保存在本地机器中，以供日后使用，那么我们可以将其作为tar包备份。要完成该操作，我们需要运行以下 docker save 命令。# docker save -o ~/container-backup.tar container-backup taking tarball backup要验证tar包是否已经生成，我们只需要在保存tar包的目录中运行 ls 命令即可。恢复容器接下来，在我们成功备份了我们的Docker容器后，我们现在来恢复这些制作了Docker镜像快照的容器。如果我们已经在注册中心推送了这些Docker镜像，那么我们仅仅需要把那个Docker镜像拖回并直接运行即可。# docker pull arunpyasi/container-backup:test Docker Pull但是，如果我们将这些Docker镜像作为tar包文件备份到了本地，那么我们只要使用 docker load 命令，后面加上tar包的备份路径，就可以加载该Docker镜像了。# docker load -i ~/container-backup.tar现在，为了确保这些Docker镜像已经加载成功，我们来运行 docker images 命令。# docker images在镜像被加载后，我们将用加载的镜像去运行Docker容器。# docker run -d -p 80:80 container-backup Restoring Docker Tarball迁移Docker容器迁移容器同时涉及到了上面两个操作，备份和恢复。我们可以将任何一个Docker容器从一台机器迁移到另一台机器。在迁移过程中，首先我们将把容器备份为Docker镜像快照。然后，该Docker镜像或者是被推送到了Docker注册中心，或者被作为tar包文件保存到了本地。如果我们将镜像推送到了Docker注册中心，我们简单地从任何我们想要的机器上使用 docker run 命令来恢复并运行该容器。但是，如果我们将镜像打包成tar包备份到了本地，我们只需要拷贝或移动该镜像到我们想要的机器上，加载该镜像并运行需要的容器即可。
一、N1安装Zerotier准备工作1、硬件：一台已经成功刷机的小钢炮二、小白级操作——安装Zerotier操作分两个步骤进行，安装entwarey以及zerotier。主要参考了张大妈“”上“Ttiramisu”发布的“N1小钢炮安装zerotier 进行内网穿透”一文，这篇文章写得过于简单，全是代码，初看完全摸不着头脑。先安装entware，具体操作：启动Mobaxterm，点击“Session”创建会话，选择SSH，输入N1的IP地址（打开路由器后台自行查看即可），其他不用设置，如下图：进入到对话框，输入N1账户名，一般是“root”，然后回车，会要求输入密码，N1小钢炮的登陆密码，不是其他，注意，此时输入密码是不显示的，不要觉得奇怪，果断输入完后直接回车就可以连接上N1，如下图。然后可以利用张大妈上“Ttiramisu”发布的“N1小钢炮安装zerotier 进行内网穿透”一文中的命令先安装entware，再安装zerotier。安装entware命令，先后输入：1、rm -rf /opt；2、mkdir /opt；3、cd /opt；4、wget -O - http://bin.entware.net/aarch64-k3.10/installer/alternative.sh | sh以上，一步一步输入命令回车即可。注意这一步：将自带opkg改名为opkg_bak暂时停用 灯大固件更新可以改回来免重装系统更新软件（代码为mv /usr/bin/opkg /usr/bin/opkg_bak），输入后说是找不到文件，如下图，直接略过了。接下来，配置entware环境变量以及检查是否报错，先后输入命令：1、输入vim /etc/profile，回车后直接在前面/usr/sbin:这行下直接添加下面两行：（第一行为/opt/bin:），（第二行为/opt/sbin:）。然后保存退出，保存退出操作为：先按ESC，然后输入命令为:wq，再Enter回车即可。然后，使配置生效，输入命令为：source /etc/profile。检查entware环境安装情况看是否报错，依次输入命令为：opkg update。回车后，再输入命令opkg list，再回车，无报错就算成功了，如下图。最后一步安装zerotier，输入安装命令，opkg install zerotier，然后输入启动命令，zerotier-one -d，启动zerotier。再输入检查命令，zerotier-cli inifo，回车无报错，显示 zerotier版本，至此N1小钢炮成功安装zerotier，参考下图，暂时不要关闭Mobaxterm，下面也会用到。注意这一步无法操作，再次略过： zerotier配置开启自启命令，输入vim /etc/init.d/S50zerotier.sh，然后写入命令，#!/bin/shzerotier-one -d，最后保存，接下来输入命令，chmod 777 S50zerotier.sh，给予权限。三、手机端安装Zerotier远程访问N1第一步，度娘“zerotier”选择官网进去，注册Zerotier账号，主要是输入邮箱，虽然是全英文界面，但非常简洁，很容易操作。然后，进入账户，点击右上方的“network”，进入界面，再点击“create a network”,创建网络，会随机得到一个network id，这个很重要，后面会用到，如下图：点击network id进入设置界面，里面实际上也不用进行过多设置，下拉到“Members”这个位置，显示“no devices”也就是没有设备连接到网络，接下来就是将N1以及要访问N1的设备连接到Zerotier。第二步，回到之前的Mobaxterm对话框，如果掉线了，按照之前的操作重新登录连接N1，然后输入命令，zerotier-one -d，启动zerotier，如果已经启动了就不用输入，否则会报错为不能连接端口。直接输入连接Zerotier命令，zerotier-cli join xxxxxxx，（xxxx即为此前获得的network id），连接成功显示：200 join ok，此时N1即成功连接Zerotier，如下图：再进入此前在Zerotier网站上创建的network id，会发现“Members”位置已有设备接入，即为N1。注意，Auth一栏未打钩对应前面为红线，表示还未对设备授权，打钩后会变成绿色，中间位置的IP即作为外网访问之用。第三步，手机端安装Zerotier，安卓以及iOS均有客户端，本次利用苹果端操作，目前苹果端中国区Zerotier已下架，须用美区账号下载，此处下载操作省略。下载安装成功后点击桌面上的图标进入，再点击右上角的加号进去，输入此前的network id，最后点击下方的add network，手机提示建立VPN，同意即可，即完成，再到网页端进行授权。网页端勾选两个设备前面的框即完成Zerotier的所有连接操作，胜利在望。小白折腾记：N1小钢炮安装Zerotier 实现远程访问四、远程访问N1成功根据上图，此处N1获得Zerotier自动分配的IP地址为10.244.141.133。小白折腾记：N1小钢炮安装Zerotier 实现远程访问断开手机wifi，利用数据流量，用该IP在苹果手机浏览器登陆N1小钢炮。小白折腾记：N1小钢炮安装Zerotier 实现远程访问成功进入小钢炮的登录页面，输入密码。小白折腾记：N1小钢炮安装Zerotier 实现远程访问“废物”再利用，外网小钢炮登录成功，远程访问大功告成。
安装命令：以下为IPV6的设置范例 docker run -d --restart=always --net=host \ -e "AKID=根据自己的修改" \ -e "AKSCT=根据自己的修改" \ -e "DOMAIN=域名" \ -e "ENDPOINT=cn-hangzhou" \ -e "REDO=30" \ -e "TTL=600" \ -e "TIMEZONE=8.0" \ -e "TYPE=AAAA" \ IPV6/IPV4为单A sanjusss/aliyun-ddns
测试了很多版本的Armbian+omv，OMV经常会报错，改用了XQ7的N1首个支持FullCone Nat的Armbian系统，非常好用下面是链接https://www.right.com.cn/forum/thread-788004-1-1.htmlROM下载地址：链接：https://share.weiyun.com/5IsYMcO 密码：fop0i5需要说明的是img制作成U盘后，不需要替换dtb，不需要更换内核，直接使用就可以，一步到位。先把镜像写入U盘，从U盘启动后，从路由器找到N1的ip地址通过Xshell登陆 输入N1的ip 账号root 密码1234第一次进入需要修改密码再写入N1的内置存储，用下面的命令就可以了/boot/create-mbr-linux.sh /root/install.sh写入完成后，断电，拔U盘，插电重启切换中国时间ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone运行nano /etc/apt/sources.list修改源为国内源deb http://mirrors.tuna.tsinghua.edu.cn/debian stretch main contrib non-free deb http://mirrors.tuna.tsinghua.edu.cn/debian stretch-updates main contrib non-free deb http://mirrors.tuna.tsinghua.edu.cn/debian-security stretch/updates main contrib non-free deb http://mirrors.tuna.tsinghua.edu.cn/debian stretch-backports main或者deb http://mirrors.ustc.edu.cn/debian stretch main contrib non-free deb http://mirrors.ustc.edu.cn/debian stretch-updates main contrib non-free deb http://mirrors.ustc.edu.cn/debian stretch-backports main contrib non-free deb http://mirrors.ustc.edu.cn/debian-security/ stretch/updates main contrib non-free保存后，更新源执行 apt-get update 命令即可更新源执行 apt-get upgrade 更新软件omv安装armbian-config选择Software，回车确认 接着选择Softy，回车确认 最后选择OMV，空格勾选，回车确认开始安装然后，按tab键，选择OK，回车确认 最后等OMV程序自动安装完成依次选择Exit、Cancel，返回命令行至此OMV安装完毕，正常的话，浏览器输入N1 ip或http://aml/ ,会看到OpenMediaVault登陆界面此时使用默认用户名：admin 默认密码：openmediavault ，登陆即可omv-firstaidFirst aid 界面翻译configure network interface 配置网络界面configure web control panel 配置Web控制面板change control panel administrator password 更改控制面板管理员密码restore failed login attempt counter 恢复失败登录尝试计数器restore configuration backup 恢复配置备份check configuration status file 检查配置状态文件check RRD database 检查RRD数据库clear local upload package repository 清除本地上传包存储库clean apt 清除aptclear web control panel cache 清除Web控制面板缓存submit diagnostic report to administrator 向管理员提交诊断卸载相关apt-get remove 会删除软件包而保留软件的配置文件apt-get purge 会同时清除软件包和软件的配置文件卸载openmediavault命令apt-get purge openmediavaultarmbian-config可视化操作里面有许多快捷的系统设置，比如说基本的时间设置、网络设置，Wi-Fi设置，设置热点、安装桌面和远程、安装热门的第三方软件（诸如nginx Nextcloud、Plex、OpenMediaVault、Pi-hole、Transmission、Docker等热门软件）下面收集了一些omv的相关教程，可以参考omv使用phicomm N1 armbian环境下安装功能丰富的开源NAS系统 OpenMediaVaulthttps://www.right.com.cn/forum/thread-342164-1-1.htmlN1 OpenMediaVault 使用DLNA+VLC多媒体应用的小白教程https://www.right.com.cn/forum/thread-342841-1-1.htmlOpenMediaVault(OMV)配置Dockerhttps://www.jianshu.com/p/5b0eacc61527OMV安装可道云(kodexplorer)https://www.jianshu.com/p/4731a1ef01d1OMV安装web服务器详细教程https://jingyan.baidu.com/article/0aa223757304e688cd0d6464.html安装PHP插件 数据库等https://www.azurew.com/6350.html
N1安装好omv后，进入系统，常规设置，修改web管理员密码，需要安装的lnmp搭建网站的话，还需要修改端口，自动登出时间可以设置为1天。进入磁盘，文件管理，挂着ext4格式的U盘或者硬盘（其他格式的不能修改权限比如777 755等）进入共享文件夹，设置共享，设置ftp nfs smb 等进入omv-extars，打开docker ce进入插件安装transmissionbt ，webdav docker启动容器，设置路径数据盘，避免8G内存不够用安装transmission-webhttps://github.com/ronggang/transmission-web-control wget https://github.com/ronggang/transmission-web-control/raw/master/release/install-tr-control-cn.sh bash install-tr-control-cn.sh安装最新发布版本 docker安装portainerdocker run -d -p 9888:9000 --restart=always --name portainer -v /var/run/docker.sock:/var/run/docker.sock -v /Users/lee/dev/docker_file/portainer/data:/data docker.io/portainer/portainer安装lnmp（我试过通过docker安装deibian后安装lnmp和宝塔，omv是改过端口的，安装后omv还是打不开，所以我选择直接安装）宝塔会占内存，经常安装出错，所以我选择安装lnmp无人值守安装https://lnmp.org/auto.html 选择版本无人值守安装命令：wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz -cO lnmp1.6.tar.gz && tar zxf lnmp1.6.tar.gz && cd lnmp1.6 && LNMP_Auto="y" DBSelect="3" DB_Root_Password="lnmp.org" InstallInnodb="y" PHPSelect="8" SelectMalloc="1" ./install.sh lnmp默认数据库密码是lnmp.org 大家可以先修改一切都是自动的，大概要2个小时，安装好后，打开NI的ip在首页可以看到 查看本地环境: 探针 phpinfo phpMyAdmin再参考LNMP添加、删除虚拟主机及伪静态使用教程https://lnmp.org/faq/lnmp-vhost-add-howto.html安装好后，先停止 nginxlnmp nginx stop移动wwwroot文件夹到数据盘比如我的数据盘目录是/sharedfolders/2t/wwwmv /home/wwwroot /sharedfolders/2t/www将数据盘的wwwroot印射回/home/wwwrootln -s /sharedfolders/2t/www/wwwroot /home/wwwroot这样网站的数据就不占N1的空间了，都是在外接的数据盘上面了（必须ext4格式）添加域名后/home/wwwroot/目录回有一个域名的目录，在里面上传php程序安装，（比如我的这个博客typecho）下面是lnmp相关的命令添加主机lnmp vhost add 修改添加的主机的端口 /usr/local/nginx/conf/vhost重启lnmp start|stop|restart 启动停止重新启动lnmp restart lnmp nginx restart列出网站(虚拟主机)执行：lnmp vhost list删除网站(虚拟主机)执行：lnmp vhost del