首页
关于
友情链接
推荐
悠笙の喵罐头
Search
1
给Android 4.9内核添加KernelSU支持
334 阅读
2
Docker下中心化部署EasyTier
211 阅读
3
记一次为Android 4.9内核的ROM启用erofs支持
152 阅读
4
在TrueNAS上使用Docker安装1Panel
97 阅读
5
为黑群晖迁移RR引导盘
93 阅读
Android
运维
NAS
开发
登录
Search
标签搜索
Linux
Android
AOSP
C&C++
Docker
TrueNAS
Windows
caf/clo
Kernel
MSVC
编程
EasyTier
Web
群晖
Alist
OneDrive
1Panel
STL
神楽悠笙
累计撰写
11
篇文章
累计收到
1
条评论
首页
栏目
Android
运维
NAS
开发
页面
关于
友情链接
推荐
悠笙の喵罐头
搜索到
3
篇与
的结果
2025-04-15
Docker下中心化部署EasyTier
EasyTier本身是个去中心化的p2p工具,任意节点都可作为转发服务器使用。但是每个节点的配置文件都得手动编写,从tailscale迁移过来时觉得有点不习惯。再加上摸索阶段经常需要修改配置文件的内容,故打算还是中心化部署EasyTier的Dashboard,统一管理设备。 项目仓库:{cloud title="easytier/easytier" type="github" url="https://github.com/easytier/easytier" password=""/}官方文档并未提供单独部署config-server的方式,但是实际上也不难,服务端已经包含在下载下来的二进制文件中了。本文着重论述通过Docker Compose安装,需要二进制模式安装的可参考下方参考文章。分析dashboard的部署主要分为两个部分,一个是后端RESTful API,一个是前端web控制台。其中API的服务端即Release里的easytier-web,直接运行即可运行服务,而web控制台是静态HTML,官方提供了一个网站但是自建api用不了,源码也开源在GitHub仓库下的easytier-web目录下。开整部署APIDocker部署,没什么好说的。 需要开放两个端口:11211/tcp: API接口,HTTP22020/udp: 用于客户端(easytier-core)和服务器通信目录映射需要映射容器内/app文件夹,用作存储持久化数据。 Compose文件如下:services: easytier: restart: always hostname: easytier volumes: - /opt/easytier/api:/app ports: - "127.0.0.1:11211:11211" - "22020:22020/udp" environment: - TZ=Asia/Shanghai image: easytier/easytier:latest entrypoint: easytier-web此处镜像和官方文档的Docker部署客户端用的是同一个,默认入口点是easytier-core,因此运行webapi需要指定entrypoint为easytier-web。 因为API接口需要HTTPS,故此处没有直接将11211端口暴露公网,而是暴露到127.0.0.1再使用反向代理实现HTTPS。设置反向代理我使用的是1Panel,因此直接在面板中创建一个网站,反向代理到设置的API端口即可。部署Web控制台如果直接使用官方的控制台然后填入自建API地址的话实测会有CORS跨域问题,解决后发现注册会过不了验证码,不清楚为什么。查阅issues说用自己的域名部署就不会出这个问题。正常部署流程拉取代码仓库,配置nodejs环境,执行下面两个指令编译出html文件:pnpm -r install pnpm -r build再将编译出的文件上传到服务器上。不正常部署流程因为懒得配置nodejs环境了我选择直接偷官方的(官方对不起!(红豆泥私密马赛qwq)) 在1Panel面板中为网站添加反向代理:将官方的web控制台反向代理到API站点下的/web/路径。注册控制台账号完成部署后打开https://你的域名/web/,将Api Host改为https://你的域名,注意填Api Host的时候URL末尾不要带“/”,否则会出莫名其妙的问题。点击下方Register注册一个账号再使用这个账号登录即可进入控制台。客户端配置将启动参数全部删除,仅保留--config-server udp://你的ip:22020/你的用户名即可。运行easytier-core,再回到控制台即可看到设备。点击右边的设置按钮,点击Create为其创建网络,接下来的步骤就和本地GUI模式操作一样了,这里就不赘述了。保存后在network栏选择新建的网络即可加入。因为Docker重启容器内数据会丢失,Docker下部署客户端时需要映射一个文件到容器内/usr/local/bin/et_machine_id用作保存machine id,否则每次重启后都需要重新为其配置网络。同时,给容器设置hostname可以作为设备在web控制台显示的名称。这里贴一下我的compose:services: easytier: command: '--config-server udp://<ip>:22020/KaguraiYoRoy' environment: - TZ=Asia/Shanghai hostname: truenas image: easytier/easytier:latest labels: com.centurylinklabs.watchtower.enable: 'true' mem_limit: 0m network_mode: host privileged: True restart: always volumes: - >- /mnt/systemdata/DockerData/easytier/app/et_machine_id:/usr/local/bin/et_machine_id watchtower: command: '--interval 3600 --cleanup --label-enable' environment: - TZ=Asia/Shanghai - WATCHTOWER_NO_STARTUP_MESSAGE image: containrrr/watchtower restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock参考文章:https://blog.mitsea.com/1a57bda595c580088006c17d6ba2a744/https://github.com/EasyTier/EasyTier/issues/722https://github.com/EasyTier/EasyTier/issues/577
2025年04月15日
211 阅读
0 评论
1 点赞
2025-03-13
通过Alist使TrueNAS同步到OneDrive
背景手上有个E5订阅,本来用的方案是Docker运行driveone/onedrive:edge的方式来实现同步,但是这个方案一个是这种方式没有GUI/WebUI,一个是每次同步的时候都会占用掉CPU 25%-50%的性能。考虑到TrueNAS自带的同步方案可以向WebDAV同步,因此想到能用Alist来挂载OneDrive并转换成WebDAV供TrueNAS挂载。折腾过程安装Alist为Alist创建持久化存储文件夹,并根据Alist官方文档编写Docker Compose:services: alist: environment: - PUID=3000 - PGID=950 - UMASK=022 image: xhofe/alist:latest ports: - '8088:5244' restart: always volumes: - /mnt/systemdata/DockerData/alist/etc:/opt/alist/data - /mnt/data/Storage:/mnt/data此处我将Alist端口开放在8088,其中映射/mnt/data/Storage是为了让Alist可以管理本地的存储;映射/mnt/systemdata/DockerData/alist/etc作为存储Alist数据的文件夹。 关于如何配置Alist上的OneDrive本文不做讨论,请查询Alist官方文档。此处我将我的OneDrive挂载在/OneDrive。 完成后进入Alist后台-用户,编辑你的用户或者创建一个新用户,勾选Webdav 读取、Webdav 管理以使得该用户可以使用WebDAV。 配置TrueNAS同步进入TrueNAS后台-Credentials-Backup Credentials,添加一个Cloud Credential,参数如下:Provider: WebDAVName: 自定义URL: Alist地址+/dav,例如我这里填写http://127.0.0.1:8088/davWebDAV Service: OTHERUsername和Password: Alist账号密码Verify Credential确认没问题之后保存。 接着进入TrueNAS后台-Data Protection,添加一个Cloud Sync Task,Provider下的Credentials选择刚刚创建的Alist的WebDAV,点击下一步。此处的参数有很多种,详解如下:Direction: 分为PULL和PUSH,分别对应云端同步到本地和本地同步到云端Transfer Mode:COPY: 复制文件,若源文件夹中先前有的文件后来删除了云端的不会被删除MOVE: Copy后删除源文件夹相关文件SYNC: 保持源文件夹和目标文件夹同步,源文件夹删除的文件也会在目标里删除Directory/Files: 即本地需要同步的文件或文件夹Folder: 即云端需要同步的文件夹Description: 注释Schedule: Cron定时,可以使用他预设的时段或者自己编写比如我这里选择的是PUSH,SYNC,从/mnt/data/Storage同步到/OneDrive/TrueNAS,每天0:00执行。 编辑完成后保存,即可在你设置的时段自动将本地文件上传到OneDrive。旧方案的项目地址:https://github.com/abraunegg/onedrive参考文章:https://alist.nn.ci/zh/guide/install/docker.htmlhttps://alist.nn.ci/zh/guide/drivers/onedrive.html
2025年03月13日
78 阅读
0 评论
0 点赞
2025-03-07
在TrueNAS上使用Docker安装1Panel
背景家里TrueNAS性能剩余,想着部署个web服务。想要装个面板减少点工作量,又考虑到虚拟机性能折损和zfs cache对内存的要求比较大以及NAS本身性能也不好,便打算使用docker部署。再加上1Panel本身也是以docker为介质,二者共同控制TrueNAS宿主机的docker daemon,约等于直接将网站部署到TrueNAS本地并且也便于管理。分析{alert type="warning"}本文默认TrueNAS可以访问dockerhub并且已经配置好了docker daemon{/alert}环境信息Storage Pool存在两个存储池:/mnt/data: 1 x MIRROR | 2 wide | 2.73 TiB | HDD/mnt/systemdata: 1 x DISK | 1 wide | 223.57 GiB | SSD其中docker数据存储在2号存储池中。Datasets存在三个数据集:Storage: 位于data存储池,存放冷数据DockerData: 位于systemdata存储池,存放容器的持久化存储文件KaguraiYoRoy: 位于systemdata,用户home文件夹安装1Panel使用了moelin/1panel:latest镜像部署,此步骤很多部分都可以参考镜像作者写的README。项目地址:{cloud title="okxlin/docker-1panel" type="github" url="https://github.com/okxlin/docker-1panel" password=""/}在DockerData数据集创建了一个文件夹专门用于存储1panel数据,即用作容器内/opt/1panel,位于/mnt/systemdata/DockerData/1panel。持久卷因为要允许1Panel管理宿主机docker,因此需要映射/var/run/docker.sock和宿主的docker文件夹映射上文为其创建的数据文件夹TrueNAS的docker文件夹和一般的Linux位置不一样,一般的Linux位于/var/lib/docker而TrueNAS的位于/mnt/.ix-apps/docker。环境变量和端口映射环境变量和镜像作者的设置相同,传入TZ=Asia/Shanghai;端口映射根据需要自行设置即可,容器内端口为10086。Docker Compose有了上述信息,编写docker compose就容易许多了。 完整Docker Compose文件如下:services: 1panel: dns: - 223.5.5.5 environment: - TZ=Asia/Shanghai image: moelin/1panel:latest labels: createdBy: Apps ports: - '8085:10086' restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock - /mnt/.ix-apps/docker:/var/lib/docker - /mnt/systemdata/DockerData/1panel/opt:/opt/1panel - /mnt/systemdata/DockerData/1panel/root:/root - /etc/docker:/etc/docker这里映射/root是因为我需要在容器内运行Git,而Git config存储在/root下; 设置dns是因为1Panel制作环境镜像的时候需要连网下载数据,不指定dns会报错。 安装完成后访问你设置的端口即可。 1Panel基础信息:默认账户:1panel默认密码:1panel_password默认入口:entrance故障处理Docker镜像源实际测试的时候发现如果不设置镜像源,即使配置了Proxy,在安装PHP环境的时候也会报错,并且配置了镜像源同时配置了Proxy也会安装失败,不清楚为什么 打开TrueNAS的/etc/docker/daemon.json并添加registry-mirrors:{ "data-root": "/mnt/.ix-apps/docker", "default-address-pools": [ { "base": "172.17.0.0/12", "size": 24 } ], "exec-opts": [ "native.cgroupdriver=cgroupfs" ], "iptables": true, "registry-mirrors": [ "https://docker.1panel.live" ], "storage-driver": "overlay2" }保存,重启主机docker,再去1Panel里安装环境。 {alert type="warning"}这一步的配置重启后会丢失,尽量一次性安装好环境和需要的app{/alert}1Panel创建的容器无法启动这个是因为在1Panel中,默认存储数据的文件夹是我们所映射出来的/opt/1panel,但是实际上创建的容器运行在TrueNAS里,访问的是TrueNAS里不存在的/opt/1panel,并且其/opt默认是只读的,因此在启动容器的时候会报错Read-only filesystem。 我自己的解决方案也很简单粗暴,在TrueNAS主机中先挂载/opt为可读写,再创建一个软链接指向1Panel的数据文件夹。cd /opt mount -o remount,rw /opt ln -s /mnt/systemdata/DockerData/1panel/opt 1panel然后就可以正常使用啦 有一个需要注意的点,在1Panel中安装OpenResty时记得避开使用80和443端口,这俩是TrueNAS的webui默认端口
2025年03月07日
97 阅读
0 评论
0 点赞