无敌好用,打造私家APPS,威联通应用模板制作

2023-11-09 07:50:54 42点赞 252收藏 30评论

前言

相信很多用过unraid的用户,都对其APPS商店印象深刻。现如今各类轻NAS装docker的教程漫天飞,群晖有矿神套件源,热门软件一键安装(系统权限所限,部分软件需root下修复权限),istoreOS也打造了专属应用商店(缺点是要等打包且数量不够,某些应用还不敢上)。而unraid没有重复造套件轮子,而是推出了APPS应用模板,把复杂的docker安装简化,配上精美图标展示,能及时跟上最新版本。

无敌好用,打造私家APPS,威联通应用模板制作

威联通巧了,既有docker安装(一步步设置或compose部署),又有庞大的第三方商店(全是英文介绍),还有应用模板的功能(类似unraid的apps),我在三年前盛赞了威联通的compose网页部署很方便,也希望威联通能多做些应用模板,打造最强docker安装体验,现如今compose功能更好用了,但是应用模板仍然少的可怜(11个自带模板只有两个是程序),不过好在多了个“自定义模板”功能。

无敌好用,打造私家APPS,威联通应用模板制作

一、应用模板结构

首先,我们先看看官方文档,[https://www.qnap.com.cn/zh-cn/how-to/tutorial/article/如何在-container-station-3-中配置并部署自定义应用程序模板](https://www.qnap.com.cn/zh-cn/how-to/tutorial/article/如何在-container-station-3-中配置并部署自定义应用程序模板)

无敌好用,打造私家APPS,威联通应用模板制作


“type”: 1用于 Docker 容器,10用于 LXD 容器。看完文档后我折腾了几天,由于没学过编程,凭感觉写出来的模板始终有问题,哪怕错一个字符都会导致没法识别。后来进去ssh看了自带的模板json(”/share/CACHEDEV1_DATA/.qpkg/container-station/data/templates/default/templates.json”),才发现官方docker没按模板写那么多参数,复杂的docker直接用了compose文件,而且分类为”type”: 3,文档里都没提3。

无敌好用,打造私家APPS,威联通应用模板制作


我松了口气,能用compose后就不用转换写法了,直接借用软件dockerhub页面的说明制作compose文件,(以前文章介绍过[https://post.smzdm.com/p/aekwr7r3/),或者在应用程序页面点右侧齿轮→检测→下载,把你以前装的容器编排导出配置文件。](https://post.smzdm.com/p/aekwr7r3/>),或者在应用程序页面点右侧齿轮→检测→下载,把你以前装的容器编排导出配置文件。)

无敌好用,打造私家APPS,威联通应用模板制作


现在,让我们新建一个程序模板开始吧,你每放置一个compose,就要准备一个yml文件,png图标文件,并在模板app.json里添加一段描述,例如下图:

无敌好用,打造私家APPS,威联通应用模板制作


你可以先复制下面的代码保存为app.json,然后填充信息,例如:type种类填3,title标题,sub_title副标题,description描述,logo图标,location项目网址,platform适用平台,categories分类,composefile配置文件,env环境变量(可以像unraid模板那样生成重要参数框),default_web_port默认端口(填了可自动生成网址加端口),support_os支持QTS。

{ "templates": [ { "type": 3, "title": "Jellyfin", "sub_title": "媒体库", "description": "一个自由的软件媒体系统,用于控制和管理媒体和流媒体。它是 emby 和 plex 的替代品,通过多个应用程序从专用服务器向终端用户设备提供媒体。Jellyfin 属于 Emby 3.5.2 的下一代,并移植.NET 核心框架以完全的跨平台支持。特性:电影海报,电视节目,并让它们自动分季,没有内置的跟踪,也没有收集数据的中央服务器。选用N大镜像,转码效果更好 https://hub.docker.com/r/nyanmisaka/jellyfin", "logo": "/jellyfin.png", "location": "https://hub.docker.com/r/nyanmisaka/jellyfin", "platform": "linux", "categories": [ "媒体" ], "composefile": "jellyfin.yml", "env": [ { "name": "HTTP_PORT", "label": "访问端口", "default": "8096", "port": true } ], "default_web_port": { "service": "jellyfin", "container_port": 8096 }, "support_os": ["QTS"] }, { # 你的其它程序模板…… # 记得最后一个右大括号千万别加“,” } ] }


二、模板部署和应用

接着我们需要使应用程序模板供Container Station使用。要用到自带的Web服务器托管模板文件,转到控制台→应用程序→Web服务器→启用Web服务器→应用。

无敌好用,打造私家APPS,威联通应用模板制作


启用了web服务器后,复制IP地址备用,你应该能在文件管理中看到一个Web文件夹。把你准备好的json,yml,png文件全部丢进去。

无敌好用,打造私家APPS,威联通应用模板制作


打开Container Station,选择偏好设置→应用程序模板→启用自定义模板→粘贴[http://威联通IP地址/app.json,应用。](,应用。">http://威联通IP地址/app.json>,应用。)

无敌好用,打造私家APPS,威联通应用模板制作


现在,在界面左下方点击应用程序模板,你就能看到自己刚刚app.json里的模板了。相比于外国人的应用商店,你再也不用担心满屏英文,直接一键安装,docker拉取都是最新程序代码。

无敌好用,打造私家APPS,威联通应用模板制作


如果你只是拿给自己用,compose文件直接用个人的,那么教程可以到此为止,但是点开部署按钮,你会发现我的程序模板居然还有几个参数框,这是怎么做到的?

无敌好用,打造私家APPS,威联通应用模板制作


之前遇到过朋友被开盒,因为他直接安装群晖套件,不能改端口,用户和密码也直接用默认的,显然别人就能很轻易登陆进去。那么应用模板不能光考虑方便,应该能设定重要事项吧?我在摸索中发现这个app.json和程序.yml之间是可以传递变量的。

无敌好用,打造私家APPS,威联通应用模板制作


我拿PhotoPrism举例,在app.json里,可以设置它的变量,例如变量名USER,那么在compose语法文件里就可以使用{HTTP_PORT}。因为端口号有最大值,所以还可以对”HTTP_PORT”添加port为true。

无敌好用,打造私家APPS,威联通应用模板制作


“default_web_port”又是什么意思呢,因为compose里可能有两个以上的程序,那么你就可以指定某个程序内部端口为默认端口,就能在Container Station应用程序页生成一键打开的网址。

无敌好用,打造私家APPS,威联通应用模板制作

三、我制作的一堆模板

随便举几个例子,jellyfin很多人装上不能转码,不能连接tmdb刮削,不能读取威联通文件混合网关HybridMount挂载的网盘,但是很好解决,我加载了/dev/dri,权限默认最高,添加了tmdb的hosts,直接挂载/share为媒体文件夹(所有盘文件都能在/share找到):

无敌好用,打造私家APPS,威联通应用模板制作

version: "3" services: jellyfin: image: nyanmisaka/jellyfin:latest container_name: jellyfin environment: - PUID=0 - PGID=0 - TZ=Asia/Shanghai volumes: - /share/Container/jellyfin:/config #配置文件 - /share:/media #媒体库路径 ports: - ${HTTP_PORT}:8096 #网页访问端口 - 8920:8920 devices: - /dev/dri:/dev/dri #调用核显 extra_hosts: - "api.themoviedb.org:108.138.246.55" - "image.themoviedb.org:104.16.61.155" restart: unless-stopped

photoprism相册的官方安装文件很多很复杂?咱们一次搞定。qbit,alist这些简单软件更不用说,小众的动漫追番软件auto_bangumi也能轻松入库,外国人的商店肯定不会加它。

无敌好用,打造私家APPS,威联通应用模板制作

version: '3' services: photoprism: image: photoprism/photoprism:latest restart: unless-stopped stop_grace_period: 10s depends_on: - mariadb security_opt: - seccomp:unconfined - apparmor:unconfined ports: - "${HTTP_PORT}:2342" # HTTP port (host:container) environment: PHOTOPRISM_ADMIN_USER: "${USER}" # admin login username PHOTOPRISM_ADMIN_PASSWORD: "${PWD}" # initial admin password (8-72 characters) PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password) PHOTOPRISM_SITE_URL: "http://localhost:2342/" # server URL in the format "http(s)://domain.name(:port)/(path)" PHOTOPRISM_DISABLE_TLS: "false" # disables HTTPS/TLS even if the site URL starts with https:// and a certificate is available PHOTOPRISM_DEFAULT_TLS: "true" # defaults to a self-signed HTTPS/TLS certificate if no other certificate is available PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video) PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip) PHOTOPRISM_LOG_LEVEL: "info" # log level: trace, debug, info, warning, error, fatal, or panic PHOTOPRISM_READONLY: "false" # do not modify originals directory (reduced functionality) PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features PHOTOPRISM_DISABLE_CHOWN: "false" # disables updating storage permissions via chmod and chown on startup PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server PHOTOPRISM_DISABLE_SETTINGS: "false" # disables settings UI and API PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow PHOTOPRISM_DISABLE_FACES: "false" # disables face detection and recognition (requires TensorFlow) PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification (requires TensorFlow) PHOTOPRISM_DISABLE_VECTORS: "false" # disables vector graphics support PHOTOPRISM_DISABLE_RAW: "false" # disables indexing and conversion of RAW images PHOTOPRISM_RAW_PRESETS: "false" # enables applying user presets when converting RAW images (reduces performance) PHOTOPRISM_JPEG_QUALITY: 85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100) PHOTOPRISM_DETECT_NSFW: "false" # automatically flags photos as private that MAY be offensive (requires TensorFlow) PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive (no effect without TensorFlow) # PHOTOPRISM_DATABASE_DRIVER: "sqlite" # SQLite is an embedded database that doesn't require a server PHOTOPRISM_DATABASE_DRIVER: "mysql" # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance PHOTOPRISM_DATABASE_SERVER: "mariadb:3306" # MariaDB or MySQL database server (hostname:port) PHOTOPRISM_DATABASE_NAME: "photoprism" # MariaDB or MySQL database schema name PHOTOPRISM_DATABASE_USER: "photoprism" # MariaDB or MySQL database user name PHOTOPRISM_DATABASE_PASSWORD: "insecure" # MariaDB or MySQL database user password PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App" PHOTOPRISM_SITE_DESCRIPTION: "" # meta site description PHOTOPRISM_SITE_AUTHOR: "" # meta site author # PHOTOPRISM_FFMPEG_ENCODER: "software" # H.264/AVC encoder (software, intel, nvidia, apple, raspberry, or vaapi) # PHOTOPRISM_FFMPEG_SIZE: "1920" # video size limit in pixels (720-7680) (default: 3840) # PHOTOPRISM_FFMPEG_BITRATE: "32" # video bitrate limit in Mbit/s (default: 50) ## Run/install on first startup (options: update https gpu tensorflow davfs clitools clean): # PHOTOPRISM_INIT: "https gpu tensorflow" ## Run as a non-root user after initialization (supported: 0, 33, 50-99, 500-600, and 900-1200): PHOTOPRISM_UID: 0 PHOTOPRISM_GID: 0 PHOTOPRISM_UMASK: 0000 PHOTOPRISM_FFMPEG_ENCODER: "intel" # H.264/AVC encoder (software, intel, nvidia, apple, raspberry, or vaapi) devices: - "/dev/dri:/dev/dri" # Intel QSV # - "/dev/nvidia0:/dev/nvidia0" # Nvidia CUDA # - "/dev/nvidiactl:/dev/nvidiactl" # - "/dev/nvidia-modeset:/dev/nvidia-modeset" # - "/dev/nvidia-nvswitchctl:/dev/nvidia-nvswitchctl" # - "/dev/nvidia-uvm:/dev/nvidia-uvm" # - "/dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools" # - "/dev/video11:/dev/video11" # Video4Linux Video Encode Device (h264_v4l2m2m) working_dir: "/photoprism" # do not change or remove volumes: - /share/Container/photoprism:/photoprism/storage - /share/share/Pictures:/photoprism/originals mariadb: image: mariadb:10.11 ## If MariaDB gets stuck in a restart loop, this points to a memory or filesystem issue: ## https://docs.photoprism.app/getting-started/troubleshooting/#fatal-server-errors restart: unless-stopped stop_grace_period: 5s security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239 - seccomp:unconfined - apparmor:unconfined command: mariadbd --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120 ## Never store database files on an unreliable device such as a USB flash drive, an SD card, or a shared network folder: volumes: - "/share/Container/photoprism/database:/var/lib/mysql" # DO NOT REMOVE environment: MARIADB_AUTO_UPGRADE: "1" MARIADB_INITDB_SKIP_TZINFO: "1" MARIADB_DATABASE: "photoprism" MARIADB_USER: "photoprism" MARIADB_PASSWORD: "insecure" MARIADB_ROOT_PASSWORD: "insecure"

阅读3服务器版,WPS办公,music-tag音乐刮削,bitwarden密码管理,感觉NAS一下子有用了起来……

无敌好用,打造私家APPS,威联通应用模板制作

version: '3.1' services: reader: image: hectorqin/reader #image: hectorqin/reader:openj9-latest #docker镜像,arm64架构或小内存机器优先使用此镜像.启用需删除上一行 container_name: reader #容器名 可自行修改 restart: always ports: - ${HTTP_PORT}:8080 #4396端口映射可自行修改 networks: - share_net volumes: - /share/Container/reader/logs:/logs #log映射目录 /home/reader/logs 映射目录可自行修改 - /share/Container/reader/storage:/storage #数据映射目录 /home/reader/storage 映射目录可自行修改 environment: - SPRING_PROFILES_ACTIVE=prod - READER_APP_USERLIMIT=50 #用户上限,默认50 - READER_APP_USERBOOKLIMIT=200 #用户书籍上限,默认200 - READER_APP_CACHECHAPTERCONTENT=true #开启缓存章节内容 V2.0 # 如果启用远程webview,需要取消注释下面的 remote-webview 服务 # - READER_APP_REMOTEWEBVIEWAPI=http://remote-webview:8050 #开启远程webview # 下面都是多用户模式配置 - READER_APP_SECURE=true #开启登录鉴权,开启后将支持多用户模式 - READER_APP_SECUREKEY=${PWD} #管理员密码 建议修改 - READER_APP_INVITECODE=${CODE} #注册邀请码 建议修改,如不需要可注释或删除 # remote-webview: # image: hectorqin/remote-webview # container_name: remote-webview #容器名 可自行修改 # restart: always # ports: # - 8050:8050 # networks: # - share_net networks: share_net: driver: bridge


结语

琢磨了一周多,终于打造出一堆满意的模板,一键安装还能传参,看上去很好是吧。但是由于事情太多,我每添加一个compose就相当于搞一篇小教程的工作量,现在决定先搁置(lanwei)一段时间,目前就刚刚截图的十几个模板完工了,剩下的应用程序模板有时间我再搞吧……
应用模板文件链接:
[https://pan.baidu.com/s/1uO0g2TVHtxaKQLuBIHoiAA?pwd=nnnb](https://pan.baidu.com/s/1uO0g2TVHtxaKQLuBIHoiAA?pwd=nnnb)
[https://wwir.lanzoum.com/inHK01e955za](https://wwir.lanzoum.com/inHK01e955za)

无敌好用,打造私家APPS,威联通应用模板制作
展开 收起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2599元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3199元起

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

1999元起

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

1199元起

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C2 4盘位NAS(赛扬N5095、8GB)

2699元起

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

1899元起

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

QNAP 威联通 TS-564 五盘位NAS (N5105、8GB)

1825元起

QNAP 威联通 TS-416 四盘位NAS(Cortex-A55、4GB)

QNAP 威联通 TS-416 四盘位NAS(Cortex-A55、4GB)

1599元起

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

1699元起

QNAP 威联通 TS-264C-4G 双盘位 NAS存储(N5105、4GB)

QNAP 威联通 TS-264C-4G 双盘位 NAS存储(N5105、4GB)

1899元起

QNAP 威联通 TS-264C 宇宙魔方 8G内存2盘位四核心处理器网络存储服务器内置双 M.2 插槽NAS私有云

QNAP 威联通 TS-264C 宇宙魔方 8G内存2盘位四核心处理器网络存储服务器内置双 M.2 插槽NAS私有云

1899元起

QNAP 威联通 TS-464C 4盘位NAS 黑色(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS 黑色(赛扬N5095、8GB)

3499元起

QNAP 威联通 TS-464C 4盘位8G内存四核心处理器网络存储服务器内置双M.2插槽NAS(含企

QNAP 威联通 TS-464C 4盘位8G内存四核心处理器网络存储服务器内置双M.2插槽NAS(含企

2099元起

QNAP 威联通 TS-873A 8盘NAS(V1500B、8GB)

QNAP 威联通 TS-873A 8盘NAS(V1500B、8GB)

7480元起

QNAP 威联通 TS-212P3 双盘位NAS(Realtek RTD1295、1GB)

QNAP 威联通 TS-212P3 双盘位NAS(Realtek RTD1295、1GB)

799元起

QNAP 威联通 TS-453Bmini 4盘位NAS(J3455、4GB)

QNAP 威联通 TS-453Bmini 4盘位NAS(J3455、4GB)

1899元起
30评论

  • 精彩
  • 最新
  • 啊啊啊,为什么就什么值得买上面compose语法全乱套了 [内伤] ,大家还是下载应用模板文件来观摩吧

    校验提示文案

    提交
    去看看

    解压到Web文件夹。把json,yml,png文件全部丢进去

    校验提示文案

    提交
    收起所有回复
  • 太赞了,每天都能从大佬学到新东西 [赞一个]

    校验提示文案

    提交
    可惜我写的太慢了,这篇文章构思其实起源于上个月,但是每次尝试时总是各种不顺,直到上周,我才掌握了基本模板写法,以及变量的设置。搞了十几个模板之后,实在觉得拖太久了,终于决定先把制作方法详细讲一遍,反正这种文章很难火起来,费太多时间制作也没太大意义。

    校验提示文案

    提交
    收起所有回复
  • 其他都可以了,就是png图片不显示,不知道为什么

    校验提示文案

    提交
    本文主要是介绍方法,我这段时间弄了十几个实例,有图标yml可部署。后面的模板只是json描述过,图标和yml没管了 [皱眉]

    校验提示文案

    提交
    收起所有回复
  • 请教下大家,用compose创建的容器怎么更新到最新的镜像,威联通

    校验提示文案

    提交
    docker run --rm --name watchtowerone -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --run-once

    校验提示文案

    提交
    请问下在哪输入这个命令,本人比较小白

    校验提示文案

    提交
    收起所有回复
  • 下载的模版里面没有watchtower.yml,而且弄好后无法显示图标。

    校验提示文案

    提交
    制作了前面十几个模板,后面的一堆只有描述没做了 [皱眉]

    校验提示文案

    提交
    要怎样显示图标?是在json文件修改logo后面图标文件的地址吗?

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 非常实用的教程,赞👍🏻

    校验提示文案

    提交
  • 技术贴,支持一下

    校验提示文案

    提交
  • 前来学习

    校验提示文案

    提交
  • 群里,支持下,真的厉害了

    校验提示文案

    提交
  • compose 模板很方便

    校验提示文案

    提交
  • 不折腾,对小白及其友好

    校验提示文案

    提交
  • 给大佬点赞,实用。

    校验提示文案

    提交
  • 学习学习,刚入手威联通,还在摸索

    校验提示文案

    提交
  • 感谢大佬造福小白用户,太实用啦!

    校验提示文案

    提交
  • 大佬厉害了,玩了这么久一直没往模板这方面想,学到了 [棒棒哒]

    校验提示文案

    提交
  • 牛牛牛

    校验提示文案

    提交
  • 把大佬的文件解压缩到/Web/下,在应用程序模板里填上[!#去看看||去看看/app.ison#!],到自定义模板里更新一下,发现没有东西。随后浏览器访问去看看:80提示Forbidden,You don't have permission to access this resource.我是没有打开威联通的防火墙,可是为什么内网80端口都填呢?

    校验提示文案

    提交
    不用访问80端口,只要你的http服务器打开了,那么直接访问威联通IP/app.json就可以了

    校验提示文案

    提交
    还有3条回复
    收起所有回复
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
252
扫一下,分享更方便,购买更轻松