[{"data":1,"prerenderedAt":5294},["ShallowReactive",2],{"article-\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F03.容器项目-相册类":3,"article-around-\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F03.容器项目-相册类":5076},{"id":4,"title":5,"author":6,"body":7,"category":5062,"cover":5063,"date":5064,"description":5065,"draft":5066,"extension":5067,"image":5068,"license":5063,"meta":5069,"minutes":80,"navigation":265,"path":5071,"pinned":5066,"seo":5072,"stem":5073,"tags":5074,"__hash__":5075},"blog\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F03.容器项目&相册类.md","容器项目&相册类","张萌萌",{"type":8,"value":9,"toc":5040},"minimark",[10,14,18,21,191,194,198,203,206,215,222,228,234,236,240,243,653,656,1267,1296,1298,1302,1306,1309,1320,1325,1332,1351,1353,1357,1363,1371,1373,1377,1383,1628,1630,1634,1640,1932,1934,1938,1943,2701,2703,2707,2712,3476,3478,3482,3487,4230,4232,4236,4241,4971,4973,4977,4980,4985,4987,4991,4995,4998,5000,5004,5011,5017,5030,5036],[11,12,13],"h2",{"id":13},"相册",[15,16,17],"p",{},"说起相册，大家肯定都是熟悉群辉的 Synology Photo s这样的品牌 NAS 的相册。当然，免费的飞牛 NAS 的相册也是不错的，而且有 AI 相册。容器类得相册项目，现在主要有两个项目，国产收费的 MT Photos 和国外免费项目 immich。",[15,19,20],{},"我先把我的 docker 树目录再放出来，方便你修改路径，如果和我一样的路径就不需要修改。",[22,23,28],"pre",{"className":24,"code":25,"language":26,"meta":27,"style":27},"language-bash shiki shiki-themes github-light github-dark","root（根目录）\n├── docker（分支层级：docker目录）\n│ ├── apps（具体目录：docker app目录）\n│ │ ├── mt-photos路径\n│ │ └── immich路径\n│ └── docker-compose（具体目录：docker-compose.yaml目录）\n│ │ ├── mt-photos\n│ │ │ └── docker-compsoe.yaml\n│ │ ├── immich\n│ │ └──── docker-compsoe.yaml\n│ ├── photos\n│ │ ├── mt-photos\n│ │ └── immich-photos\n...\n","bash","",[29,30,31,40,50,65,78,91,101,113,127,139,151,161,172,184],"code",{"__ignoreMap":27},[32,33,36],"span",{"class":34,"line":35},"line",1,[32,37,39],{"class":38},"sScJk","root（根目录）\n",[32,41,43,46],{"class":34,"line":42},2,[32,44,45],{"class":38},"├──",[32,47,49],{"class":48},"sZZnC"," docker（分支层级：docker目录）\n",[32,51,53,56,59,62],{"class":34,"line":52},3,[32,54,55],{"class":38},"│",[32,57,58],{"class":48}," ├──",[32,60,61],{"class":48}," apps（具体目录：docker",[32,63,64],{"class":48}," app目录）\n",[32,66,68,70,73,75],{"class":34,"line":67},4,[32,69,55],{"class":38},[32,71,72],{"class":48}," │",[32,74,58],{"class":48},[32,76,77],{"class":48}," mt-photos路径\n",[32,79,81,83,85,88],{"class":34,"line":80},5,[32,82,55],{"class":38},[32,84,72],{"class":48},[32,86,87],{"class":48}," └──",[32,89,90],{"class":48}," immich路径\n",[32,92,94,96,98],{"class":34,"line":93},6,[32,95,55],{"class":38},[32,97,87],{"class":48},[32,99,100],{"class":48}," docker-compose（具体目录：docker-compose.yaml目录）\n",[32,102,104,106,108,110],{"class":34,"line":103},7,[32,105,55],{"class":38},[32,107,72],{"class":48},[32,109,58],{"class":48},[32,111,112],{"class":48}," mt-photos\n",[32,114,116,118,120,122,124],{"class":34,"line":115},8,[32,117,55],{"class":38},[32,119,72],{"class":48},[32,121,72],{"class":48},[32,123,87],{"class":48},[32,125,126],{"class":48}," docker-compsoe.yaml\n",[32,128,130,132,134,136],{"class":34,"line":129},9,[32,131,55],{"class":38},[32,133,72],{"class":48},[32,135,58],{"class":48},[32,137,138],{"class":48}," immich\n",[32,140,142,144,146,149],{"class":34,"line":141},10,[32,143,55],{"class":38},[32,145,72],{"class":48},[32,147,148],{"class":48}," └────",[32,150,126],{"class":48},[32,152,154,156,158],{"class":34,"line":153},11,[32,155,55],{"class":38},[32,157,58],{"class":48},[32,159,160],{"class":48}," photos\n",[32,162,164,166,168,170],{"class":34,"line":163},12,[32,165,55],{"class":38},[32,167,72],{"class":48},[32,169,58],{"class":48},[32,171,112],{"class":48},[32,173,175,177,179,181],{"class":34,"line":174},13,[32,176,55],{"class":38},[32,178,72],{"class":48},[32,180,87],{"class":48},[32,182,183],{"class":48}," immich-photos\n",[32,185,187],{"class":34,"line":186},14,[32,188,190],{"class":189},"sj4cs","...\n",[192,193],"hr",{},[11,195,197],{"id":196},"_1-mt-photos","1 MT Photos",[199,200,202],"h3",{"id":201},"_11-什么是mt-photos","1.1 什么是MT Photos",[15,204,205],{},"MT Photos 是什么? MT Photos 是一款为NAS用户量身打造的照片管理系统。通过 AI 技术，自动将您的照片整理、分类，包括但不限于时间、地点、人物、照片类型。先不看项目地址，我们先来看一下 MT Photos 在线 dome 地址体验一下。",[15,207,208],{},[209,210,214],"a",{"href":211,"rel":212},"https:\u002F\u002Fd.mtmt.tech\u002F",[213],"nofollow","MT Photos dome地址",[15,216,217],{},[209,218,221],{"href":219,"rel":220},"https:\u002F\u002Fmtmt.tech\u002F",[213],"MT Photos 项目地址",[15,223,224],{},[225,226,227],"strong",{},"账号：demo，密码：mtphotos",[15,229,230],{},[231,232],"img",{"alt":27,"src":233},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780569215911.avif",[192,235],{},[199,237,239],{"id":238},"_12-部署项目-mt-photos","1.2 部署项目 MT Photos",[15,241,242],{},"如果不需要同时部署 MT Photos AI，那么只需要下面的代码就行。",[22,244,248],{"className":245,"code":246,"language":247,"meta":27,"style":27},"language-yaml shiki shiki-themes github-light github-dark","# 官方文档\n# https:\u002F\u002Fmtmt.tech\u002F\n\n# 体验demo，账号demo，密码demo\n# https:\u002F\u002Fd.mtmt.tech\u002Flogin\n\n# GPS API 配置\n# https:\u002F\u002Fmtmt.tech\u002Fdocs\u002Fstart\u002Fgps_api\u002F\n\n# 生成激活码\n# https:\u002F\u002Fauth.mtmt.tech\u002FiKey\n\n# ---\n\nname: mt-photos\n# 最后编辑时间：2025-02-28\nservices:\n  mt-photos:\n    # 镜像地址\n    image: registry.cn-hangzhou.aliyuncs.com\u002Fmtphotos\u002Fmt-photos:latest\n    # 容器名\n    container_name: mt-photos\n    # 主机名\n    hostname: mt-photos\n    environment:\n      # 用户和用户组权限，ssh中使用“id 用户名”查看，用户组一般为100(users)\n      # 第一个用户而言，群晖为1026，新绿联为1001，linux类系统为1000，后续用户均+1\n      # 如果出现无法下载的情况，改为0\n      - PUID=1000\n      - PGID=100\n      # 默认创建新文件的权限，一般写022  \n      - UMASK=022\n      # 时区\n      - TZ=Asia\u002FShanghai\n    # 驱动  \n    devices:\n      # 添加硬件加速转码\n      - \u002Fdev\u002Fdri:\u002Fdev\u002Fdri\n    # dns  \n    dns: \n      - 114.114.114.114  \n    # 路径\n    volumes:\n      # 配置文件目录 \n      # mt-photos配置文件路径\n      - \u002Fdocker\u002Fapps\u002Fmt-photos\u002Fconfig:\u002Fconfig\n      # mt-photos手机相册上传路径\n      - \u002Fdocker\u002Fapps\u002Fmt_photos\u002Fupload:\u002Fupload\n      # 其他相册路径\n      - \u002Fphotos\u002Fmt-photos:\u002Fphotos\n    # 网络模式：桥接模式\n    network_mode: bridge\n    # 端口\n    ports:\n      # webUI端口\n      - 8063:8063\n    # 重启策略，总是重启\n    restart: always\n","yaml",[29,249,250,256,261,267,272,277,281,286,291,295,300,305,309,314,318,332,338,347,355,361,372,378,388,394,404,412,418,424,430,439,447,453,461,467,475,481,489,495,503,509,518,529,535,543,549,555,563,569,577,583,591,597,608,614,622,628,636,642],{"__ignoreMap":27},[32,251,252],{"class":34,"line":35},[32,253,255],{"class":254},"sJ8bj","# 官方文档\n",[32,257,258],{"class":34,"line":42},[32,259,260],{"class":254},"# https:\u002F\u002Fmtmt.tech\u002F\n",[32,262,263],{"class":34,"line":52},[32,264,266],{"emptyLinePlaceholder":265},true,"\n",[32,268,269],{"class":34,"line":67},[32,270,271],{"class":254},"# 体验demo，账号demo，密码demo\n",[32,273,274],{"class":34,"line":80},[32,275,276],{"class":254},"# https:\u002F\u002Fd.mtmt.tech\u002Flogin\n",[32,278,279],{"class":34,"line":93},[32,280,266],{"emptyLinePlaceholder":265},[32,282,283],{"class":34,"line":103},[32,284,285],{"class":254},"# GPS API 配置\n",[32,287,288],{"class":34,"line":115},[32,289,290],{"class":254},"# https:\u002F\u002Fmtmt.tech\u002Fdocs\u002Fstart\u002Fgps_api\u002F\n",[32,292,293],{"class":34,"line":129},[32,294,266],{"emptyLinePlaceholder":265},[32,296,297],{"class":34,"line":141},[32,298,299],{"class":254},"# 生成激活码\n",[32,301,302],{"class":34,"line":153},[32,303,304],{"class":254},"# https:\u002F\u002Fauth.mtmt.tech\u002FiKey\n",[32,306,307],{"class":34,"line":163},[32,308,266],{"emptyLinePlaceholder":265},[32,310,311],{"class":34,"line":174},[32,312,313],{"class":254},"# ---\n",[32,315,316],{"class":34,"line":186},[32,317,266],{"emptyLinePlaceholder":265},[32,319,321,325,329],{"class":34,"line":320},15,[32,322,324],{"class":323},"s9eBZ","name",[32,326,328],{"class":327},"sVt8B",": ",[32,330,331],{"class":48},"mt-photos\n",[32,333,335],{"class":34,"line":334},16,[32,336,337],{"class":254},"# 最后编辑时间：2025-02-28\n",[32,339,341,344],{"class":34,"line":340},17,[32,342,343],{"class":323},"services",[32,345,346],{"class":327},":\n",[32,348,350,353],{"class":34,"line":349},18,[32,351,352],{"class":323},"  mt-photos",[32,354,346],{"class":327},[32,356,358],{"class":34,"line":357},19,[32,359,360],{"class":254},"    # 镜像地址\n",[32,362,364,367,369],{"class":34,"line":363},20,[32,365,366],{"class":323},"    image",[32,368,328],{"class":327},[32,370,371],{"class":48},"registry.cn-hangzhou.aliyuncs.com\u002Fmtphotos\u002Fmt-photos:latest\n",[32,373,375],{"class":34,"line":374},21,[32,376,377],{"class":254},"    # 容器名\n",[32,379,381,384,386],{"class":34,"line":380},22,[32,382,383],{"class":323},"    container_name",[32,385,328],{"class":327},[32,387,331],{"class":48},[32,389,391],{"class":34,"line":390},23,[32,392,393],{"class":254},"    # 主机名\n",[32,395,397,400,402],{"class":34,"line":396},24,[32,398,399],{"class":323},"    hostname",[32,401,328],{"class":327},[32,403,331],{"class":48},[32,405,407,410],{"class":34,"line":406},25,[32,408,409],{"class":323},"    environment",[32,411,346],{"class":327},[32,413,415],{"class":34,"line":414},26,[32,416,417],{"class":254},"      # 用户和用户组权限，ssh中使用“id 用户名”查看，用户组一般为100(users)\n",[32,419,421],{"class":34,"line":420},27,[32,422,423],{"class":254},"      # 第一个用户而言，群晖为1026，新绿联为1001，linux类系统为1000，后续用户均+1\n",[32,425,427],{"class":34,"line":426},28,[32,428,429],{"class":254},"      # 如果出现无法下载的情况，改为0\n",[32,431,433,436],{"class":34,"line":432},29,[32,434,435],{"class":327},"      - ",[32,437,438],{"class":48},"PUID=1000\n",[32,440,442,444],{"class":34,"line":441},30,[32,443,435],{"class":327},[32,445,446],{"class":48},"PGID=100\n",[32,448,450],{"class":34,"line":449},31,[32,451,452],{"class":254},"      # 默认创建新文件的权限，一般写022  \n",[32,454,456,458],{"class":34,"line":455},32,[32,457,435],{"class":327},[32,459,460],{"class":48},"UMASK=022\n",[32,462,464],{"class":34,"line":463},33,[32,465,466],{"class":254},"      # 时区\n",[32,468,470,472],{"class":34,"line":469},34,[32,471,435],{"class":327},[32,473,474],{"class":48},"TZ=Asia\u002FShanghai\n",[32,476,478],{"class":34,"line":477},35,[32,479,480],{"class":254},"    # 驱动  \n",[32,482,484,487],{"class":34,"line":483},36,[32,485,486],{"class":323},"    devices",[32,488,346],{"class":327},[32,490,492],{"class":34,"line":491},37,[32,493,494],{"class":254},"      # 添加硬件加速转码\n",[32,496,498,500],{"class":34,"line":497},38,[32,499,435],{"class":327},[32,501,502],{"class":48},"\u002Fdev\u002Fdri:\u002Fdev\u002Fdri\n",[32,504,506],{"class":34,"line":505},39,[32,507,508],{"class":254},"    # dns  \n",[32,510,512,515],{"class":34,"line":511},40,[32,513,514],{"class":323},"    dns",[32,516,517],{"class":327},": \n",[32,519,521,523,526],{"class":34,"line":520},41,[32,522,435],{"class":327},[32,524,525],{"class":189},"114.114.114.114",[32,527,528],{"class":327},"  \n",[32,530,532],{"class":34,"line":531},42,[32,533,534],{"class":254},"    # 路径\n",[32,536,538,541],{"class":34,"line":537},43,[32,539,540],{"class":323},"    volumes",[32,542,346],{"class":327},[32,544,546],{"class":34,"line":545},44,[32,547,548],{"class":254},"      # 配置文件目录 \n",[32,550,552],{"class":34,"line":551},45,[32,553,554],{"class":254},"      # mt-photos配置文件路径\n",[32,556,558,560],{"class":34,"line":557},46,[32,559,435],{"class":327},[32,561,562],{"class":48},"\u002Fdocker\u002Fapps\u002Fmt-photos\u002Fconfig:\u002Fconfig\n",[32,564,566],{"class":34,"line":565},47,[32,567,568],{"class":254},"      # mt-photos手机相册上传路径\n",[32,570,572,574],{"class":34,"line":571},48,[32,573,435],{"class":327},[32,575,576],{"class":48},"\u002Fdocker\u002Fapps\u002Fmt_photos\u002Fupload:\u002Fupload\n",[32,578,580],{"class":34,"line":579},49,[32,581,582],{"class":254},"      # 其他相册路径\n",[32,584,586,588],{"class":34,"line":585},50,[32,587,435],{"class":327},[32,589,590],{"class":48},"\u002Fphotos\u002Fmt-photos:\u002Fphotos\n",[32,592,594],{"class":34,"line":593},51,[32,595,596],{"class":254},"    # 网络模式：桥接模式\n",[32,598,600,603,605],{"class":34,"line":599},52,[32,601,602],{"class":323},"    network_mode",[32,604,328],{"class":327},[32,606,607],{"class":48},"bridge\n",[32,609,611],{"class":34,"line":610},53,[32,612,613],{"class":254},"    # 端口\n",[32,615,617,620],{"class":34,"line":616},54,[32,618,619],{"class":323},"    ports",[32,621,346],{"class":327},[32,623,625],{"class":34,"line":624},55,[32,626,627],{"class":254},"      # webUI端口\n",[32,629,631,633],{"class":34,"line":630},56,[32,632,435],{"class":327},[32,634,635],{"class":48},"8063:8063\n",[32,637,639],{"class":34,"line":638},57,[32,640,641],{"class":254},"    # 重启策略，总是重启\n",[32,643,645,648,650],{"class":34,"line":644},58,[32,646,647],{"class":323},"    restart",[32,649,328],{"class":327},[32,651,652],{"class":48},"always\n",[15,654,655],{},"但是如果需要同时部署 MT Photos AI，那么需要下面的代码才可以。",[22,657,659],{"className":245,"code":658,"language":247,"meta":27,"style":27},"# 官方文档\n# https:\u002F\u002Fmtmt.tech\u002F\n\n# 体验demo，账号demo，密码demo\n# https:\u002F\u002Fd.mtmt.tech\u002Flogin\n\n# 添加智能识别\n# https:\u002F\u002Fmtmt.tech\u002Fdocs\u002Fadvanced\u002Focr_api\u002F\n\n# 添加人脸识别API\n# https:\u002F\u002Fmtmt.tech\u002Fdocs\u002Fadvanced\u002Ffacial_api\u002F\n\n# GPS API 配置\n# https:\u002F\u002Fmtmt.tech\u002Fdocs\u002Fstart\u002Fgps_api\u002F\n\n# 生成激活码\n# https:\u002F\u002Fauth.mtmt.tech\u002FiKey\n\n# ---\n\nname: mt-photos\n# 最后编辑时间：2025-02-28\nservices:\n  mt-photos:\n    # 镜像地址\n    image: registry.cn-hangzhou.aliyuncs.com\u002Fmtphotos\u002Fmt-photos:latest\n    # 容器名\n    container_name: mt-photos\n    # 主机名\n    hostname: mt-photos\n    environment:\n      # 用户和用户组权限，ssh中使用“id 用户名”查看，用户组一般为100(users)\n      # 第一个用户而言，群晖为1026，新绿联为1001，linux类系统为1000，后续用户均+1\n      # 如果出现无法下载的情况，改为0\n      - PUID=1000\n      - PGID=100\n      # 默认创建新文件的权限，一般写022  \n      - UMASK=022\n      # 时区\n      - TZ=Asia\u002FShanghai\n    # 驱动  \n    devices:\n      # 添加硬件加速转码\n      - \u002Fdev\u002Fdri:\u002Fdev\u002Fdri\n    # dns  \n    dns: \n      - 114.114.114.114\n    # 依赖     \n    depends_on:\n      # 连接AI相册\n      - mtphotos_ai\n      # 连接AI人脸识别\n      - mtphotos_face_api\n    # 路径\n    volumes:\n      # 配置文件目录 \n      # mt-photos配置文件路径\n      - \u002Fdocker\u002Fapps\u002Fmt-photos\u002Fconfig:\u002Fconfig\n      # mt-photos手机相册上传路径\n      - \u002Fdocker\u002Fapps\u002Fmt_photos\u002Fupload:\u002Fupload\n      # 其他相册路径\n      - \u002Fphotos\u002Fmt-photos:\u002Fphotos\n    # 网络模式：桥接模式\n    network_mode: bridge\n    # 端口\n    ports:\n      # webUI端口\n      - 8063:8063\n    # 重启策略，总是重启\n    restart: always\n\n  mtphotos_ai:\n    # 镜像地址\n    image: registry.cn-hangzhou.aliyuncs.com\u002Fmtphotos\u002Fmt-photos-ai:onnx-latest\n    # 容器名\n    container_name: mtphotos_ai\n    # 主机名\n    hostname: mtphotos_ai\n    environment:\n      # mtphotos_ai密码，可以自定义，不改也行\n      - API_AUTH_KEY=mt_photos_ai_extra \n    ports:\n      # AI相册连接端口\n      - 8060:8060\n    # 重启策略，总是重启\n    restart: always\n\n  mtphotos_face_api:\n    # 镜像地址\n    # 如果下载不到，前面加上加速地址\n    # crpi-gcuyquw9co62xzjn.cn-guangzhou.personal.cr.aliyuncs.com\n    image: devfox101\u002Fmt-photos-insightface-unofficial:latest\n    # 容器名\n    container_name: mtphotos_face_api\n    # 主机名\n    hostname: mtphotos_face_api\n    environment:\n      # mtphotos_face_ai密码，可以自定义，不改也行\n      - API_AUTH_KEY=mt_photos_ai_extra\n    ports:\n      # AI人脸识别连接端口\n      - 8066:8066\n    # 重启策略，总是重启\n    restart: always\n",[29,660,661,665,669,673,677,681,685,690,695,699,704,709,713,717,721,725,729,733,737,741,745,753,757,763,769,773,781,785,793,797,805,811,815,819,823,829,835,839,845,849,855,859,865,869,875,879,885,892,897,904,909,916,921,928,932,938,942,946,952,957,964,969,976,981,990,995,1002,1007,1014,1019,1028,1033,1041,1046,1056,1061,1070,1075,1084,1091,1097,1108,1115,1121,1129,1134,1143,1148,1156,1161,1167,1173,1183,1188,1197,1202,1211,1218,1224,1232,1239,1245,1253,1258],{"__ignoreMap":27},[32,662,663],{"class":34,"line":35},[32,664,255],{"class":254},[32,666,667],{"class":34,"line":42},[32,668,260],{"class":254},[32,670,671],{"class":34,"line":52},[32,672,266],{"emptyLinePlaceholder":265},[32,674,675],{"class":34,"line":67},[32,676,271],{"class":254},[32,678,679],{"class":34,"line":80},[32,680,276],{"class":254},[32,682,683],{"class":34,"line":93},[32,684,266],{"emptyLinePlaceholder":265},[32,686,687],{"class":34,"line":103},[32,688,689],{"class":254},"# 添加智能识别\n",[32,691,692],{"class":34,"line":115},[32,693,694],{"class":254},"# https:\u002F\u002Fmtmt.tech\u002Fdocs\u002Fadvanced\u002Focr_api\u002F\n",[32,696,697],{"class":34,"line":129},[32,698,266],{"emptyLinePlaceholder":265},[32,700,701],{"class":34,"line":141},[32,702,703],{"class":254},"# 添加人脸识别API\n",[32,705,706],{"class":34,"line":153},[32,707,708],{"class":254},"# https:\u002F\u002Fmtmt.tech\u002Fdocs\u002Fadvanced\u002Ffacial_api\u002F\n",[32,710,711],{"class":34,"line":163},[32,712,266],{"emptyLinePlaceholder":265},[32,714,715],{"class":34,"line":174},[32,716,285],{"class":254},[32,718,719],{"class":34,"line":186},[32,720,290],{"class":254},[32,722,723],{"class":34,"line":320},[32,724,266],{"emptyLinePlaceholder":265},[32,726,727],{"class":34,"line":334},[32,728,299],{"class":254},[32,730,731],{"class":34,"line":340},[32,732,304],{"class":254},[32,734,735],{"class":34,"line":349},[32,736,266],{"emptyLinePlaceholder":265},[32,738,739],{"class":34,"line":357},[32,740,313],{"class":254},[32,742,743],{"class":34,"line":363},[32,744,266],{"emptyLinePlaceholder":265},[32,746,747,749,751],{"class":34,"line":374},[32,748,324],{"class":323},[32,750,328],{"class":327},[32,752,331],{"class":48},[32,754,755],{"class":34,"line":380},[32,756,337],{"class":254},[32,758,759,761],{"class":34,"line":390},[32,760,343],{"class":323},[32,762,346],{"class":327},[32,764,765,767],{"class":34,"line":396},[32,766,352],{"class":323},[32,768,346],{"class":327},[32,770,771],{"class":34,"line":406},[32,772,360],{"class":254},[32,774,775,777,779],{"class":34,"line":414},[32,776,366],{"class":323},[32,778,328],{"class":327},[32,780,371],{"class":48},[32,782,783],{"class":34,"line":420},[32,784,377],{"class":254},[32,786,787,789,791],{"class":34,"line":426},[32,788,383],{"class":323},[32,790,328],{"class":327},[32,792,331],{"class":48},[32,794,795],{"class":34,"line":432},[32,796,393],{"class":254},[32,798,799,801,803],{"class":34,"line":441},[32,800,399],{"class":323},[32,802,328],{"class":327},[32,804,331],{"class":48},[32,806,807,809],{"class":34,"line":449},[32,808,409],{"class":323},[32,810,346],{"class":327},[32,812,813],{"class":34,"line":455},[32,814,417],{"class":254},[32,816,817],{"class":34,"line":463},[32,818,423],{"class":254},[32,820,821],{"class":34,"line":469},[32,822,429],{"class":254},[32,824,825,827],{"class":34,"line":477},[32,826,435],{"class":327},[32,828,438],{"class":48},[32,830,831,833],{"class":34,"line":483},[32,832,435],{"class":327},[32,834,446],{"class":48},[32,836,837],{"class":34,"line":491},[32,838,452],{"class":254},[32,840,841,843],{"class":34,"line":497},[32,842,435],{"class":327},[32,844,460],{"class":48},[32,846,847],{"class":34,"line":505},[32,848,466],{"class":254},[32,850,851,853],{"class":34,"line":511},[32,852,435],{"class":327},[32,854,474],{"class":48},[32,856,857],{"class":34,"line":520},[32,858,480],{"class":254},[32,860,861,863],{"class":34,"line":531},[32,862,486],{"class":323},[32,864,346],{"class":327},[32,866,867],{"class":34,"line":537},[32,868,494],{"class":254},[32,870,871,873],{"class":34,"line":545},[32,872,435],{"class":327},[32,874,502],{"class":48},[32,876,877],{"class":34,"line":551},[32,878,508],{"class":254},[32,880,881,883],{"class":34,"line":557},[32,882,514],{"class":323},[32,884,517],{"class":327},[32,886,887,889],{"class":34,"line":565},[32,888,435],{"class":327},[32,890,891],{"class":189},"114.114.114.114\n",[32,893,894],{"class":34,"line":571},[32,895,896],{"class":254},"    # 依赖     \n",[32,898,899,902],{"class":34,"line":579},[32,900,901],{"class":323},"    depends_on",[32,903,346],{"class":327},[32,905,906],{"class":34,"line":585},[32,907,908],{"class":254},"      # 连接AI相册\n",[32,910,911,913],{"class":34,"line":593},[32,912,435],{"class":327},[32,914,915],{"class":48},"mtphotos_ai\n",[32,917,918],{"class":34,"line":599},[32,919,920],{"class":254},"      # 连接AI人脸识别\n",[32,922,923,925],{"class":34,"line":610},[32,924,435],{"class":327},[32,926,927],{"class":48},"mtphotos_face_api\n",[32,929,930],{"class":34,"line":616},[32,931,534],{"class":254},[32,933,934,936],{"class":34,"line":624},[32,935,540],{"class":323},[32,937,346],{"class":327},[32,939,940],{"class":34,"line":630},[32,941,548],{"class":254},[32,943,944],{"class":34,"line":638},[32,945,554],{"class":254},[32,947,948,950],{"class":34,"line":644},[32,949,435],{"class":327},[32,951,562],{"class":48},[32,953,955],{"class":34,"line":954},59,[32,956,568],{"class":254},[32,958,960,962],{"class":34,"line":959},60,[32,961,435],{"class":327},[32,963,576],{"class":48},[32,965,967],{"class":34,"line":966},61,[32,968,582],{"class":254},[32,970,972,974],{"class":34,"line":971},62,[32,973,435],{"class":327},[32,975,590],{"class":48},[32,977,979],{"class":34,"line":978},63,[32,980,596],{"class":254},[32,982,984,986,988],{"class":34,"line":983},64,[32,985,602],{"class":323},[32,987,328],{"class":327},[32,989,607],{"class":48},[32,991,993],{"class":34,"line":992},65,[32,994,613],{"class":254},[32,996,998,1000],{"class":34,"line":997},66,[32,999,619],{"class":323},[32,1001,346],{"class":327},[32,1003,1005],{"class":34,"line":1004},67,[32,1006,627],{"class":254},[32,1008,1010,1012],{"class":34,"line":1009},68,[32,1011,435],{"class":327},[32,1013,635],{"class":48},[32,1015,1017],{"class":34,"line":1016},69,[32,1018,641],{"class":254},[32,1020,1022,1024,1026],{"class":34,"line":1021},70,[32,1023,647],{"class":323},[32,1025,328],{"class":327},[32,1027,652],{"class":48},[32,1029,1031],{"class":34,"line":1030},71,[32,1032,266],{"emptyLinePlaceholder":265},[32,1034,1036,1039],{"class":34,"line":1035},72,[32,1037,1038],{"class":323},"  mtphotos_ai",[32,1040,346],{"class":327},[32,1042,1044],{"class":34,"line":1043},73,[32,1045,360],{"class":254},[32,1047,1049,1051,1053],{"class":34,"line":1048},74,[32,1050,366],{"class":323},[32,1052,328],{"class":327},[32,1054,1055],{"class":48},"registry.cn-hangzhou.aliyuncs.com\u002Fmtphotos\u002Fmt-photos-ai:onnx-latest\n",[32,1057,1059],{"class":34,"line":1058},75,[32,1060,377],{"class":254},[32,1062,1064,1066,1068],{"class":34,"line":1063},76,[32,1065,383],{"class":323},[32,1067,328],{"class":327},[32,1069,915],{"class":48},[32,1071,1073],{"class":34,"line":1072},77,[32,1074,393],{"class":254},[32,1076,1078,1080,1082],{"class":34,"line":1077},78,[32,1079,399],{"class":323},[32,1081,328],{"class":327},[32,1083,915],{"class":48},[32,1085,1087,1089],{"class":34,"line":1086},79,[32,1088,409],{"class":323},[32,1090,346],{"class":327},[32,1092,1094],{"class":34,"line":1093},80,[32,1095,1096],{"class":254},"      # mtphotos_ai密码，可以自定义，不改也行\n",[32,1098,1100,1102,1105],{"class":34,"line":1099},81,[32,1101,435],{"class":327},[32,1103,1104],{"class":48},"API_AUTH_KEY=mt_photos_ai_extra",[32,1106,1107],{"class":327}," \n",[32,1109,1111,1113],{"class":34,"line":1110},82,[32,1112,619],{"class":323},[32,1114,346],{"class":327},[32,1116,1118],{"class":34,"line":1117},83,[32,1119,1120],{"class":254},"      # AI相册连接端口\n",[32,1122,1124,1126],{"class":34,"line":1123},84,[32,1125,435],{"class":327},[32,1127,1128],{"class":48},"8060:8060\n",[32,1130,1132],{"class":34,"line":1131},85,[32,1133,641],{"class":254},[32,1135,1137,1139,1141],{"class":34,"line":1136},86,[32,1138,647],{"class":323},[32,1140,328],{"class":327},[32,1142,652],{"class":48},[32,1144,1146],{"class":34,"line":1145},87,[32,1147,266],{"emptyLinePlaceholder":265},[32,1149,1151,1154],{"class":34,"line":1150},88,[32,1152,1153],{"class":323},"  mtphotos_face_api",[32,1155,346],{"class":327},[32,1157,1159],{"class":34,"line":1158},89,[32,1160,360],{"class":254},[32,1162,1164],{"class":34,"line":1163},90,[32,1165,1166],{"class":254},"    # 如果下载不到，前面加上加速地址\n",[32,1168,1170],{"class":34,"line":1169},91,[32,1171,1172],{"class":254},"    # crpi-gcuyquw9co62xzjn.cn-guangzhou.personal.cr.aliyuncs.com\n",[32,1174,1176,1178,1180],{"class":34,"line":1175},92,[32,1177,366],{"class":323},[32,1179,328],{"class":327},[32,1181,1182],{"class":48},"devfox101\u002Fmt-photos-insightface-unofficial:latest\n",[32,1184,1186],{"class":34,"line":1185},93,[32,1187,377],{"class":254},[32,1189,1191,1193,1195],{"class":34,"line":1190},94,[32,1192,383],{"class":323},[32,1194,328],{"class":327},[32,1196,927],{"class":48},[32,1198,1200],{"class":34,"line":1199},95,[32,1201,393],{"class":254},[32,1203,1205,1207,1209],{"class":34,"line":1204},96,[32,1206,399],{"class":323},[32,1208,328],{"class":327},[32,1210,927],{"class":48},[32,1212,1214,1216],{"class":34,"line":1213},97,[32,1215,409],{"class":323},[32,1217,346],{"class":327},[32,1219,1221],{"class":34,"line":1220},98,[32,1222,1223],{"class":254},"      # mtphotos_face_ai密码，可以自定义，不改也行\n",[32,1225,1227,1229],{"class":34,"line":1226},99,[32,1228,435],{"class":327},[32,1230,1231],{"class":48},"API_AUTH_KEY=mt_photos_ai_extra\n",[32,1233,1235,1237],{"class":34,"line":1234},100,[32,1236,619],{"class":323},[32,1238,346],{"class":327},[32,1240,1242],{"class":34,"line":1241},101,[32,1243,1244],{"class":254},"      # AI人脸识别连接端口\n",[32,1246,1248,1250],{"class":34,"line":1247},102,[32,1249,435],{"class":327},[32,1251,1252],{"class":48},"8066:8066\n",[32,1254,1256],{"class":34,"line":1255},103,[32,1257,641],{"class":254},[32,1259,1261,1263,1265],{"class":34,"line":1260},104,[32,1262,647],{"class":323},[32,1264,328],{"class":327},[32,1266,652],{"class":48},[1268,1269,1270,1282,1290,1293],"ul",{},[1271,1272,1273,1274,1277,1278,1281],"li",{},"mt-photos ai，识别需要填写接口地址 ",[29,1275,1276],{},"http:\u002F\u002Fip:8060","，API_AUTH_KEY填写 ",[29,1279,1280],{},"mt\\_photos\\_ai\\_extra","（或者你自定义密码）。",[1271,1283,1284,1285,1277,1288,1281],{},"添加人脸识别 API，需要填写接口地址 ",[29,1286,1287],{},"http:\u002F\u002Fip:8066",[29,1289,1280],{},[1271,1291,1292],{},"最后一个需要 GPS 信息识别地址的话，那就看教程 wiki 地址，注册高德地图，获取 api 填写就行。为什么我不用内置的识别模型，首先内置识别识别率低，其次自己跟着搭建各种API有参与感。",[1271,1294,1295],{},"总结，mt-photos 是付费的国产相册软件，体验也不错，安装免费试用一个月，好用就买，不好用就看下面我介绍得 immich。",[192,1297],{},[11,1299,1301],{"id":1300},"_2-immich","2 immich",[199,1303,1305],{"id":1304},"_21-什么是-immich","2.1 什么是 immich",[15,1307,1308],{},"immich 是作者仿照谷歌相册写的一款相册软件，非常得外国化，以前不支持中文，现在加入了中文。永久免费的软件，自带 AI 识别，更新快其实有的时候也不是一件好事儿，作者开发积极，更新频繁。当然你不更新其实也没什么事情的，一样的好用。先不看项目地址，我们先来看一下 immich 在线 dome 地址体验一下。",[15,1310,1311],{},[225,1312,1313,1314,1319],{},"邮箱：",[209,1315,1318],{"href":1316,"rel":1317},"https:\u002F\u002Fdemo.immich.app\u002F",[213],"demo@immich.app","，密码：demo",[15,1321,1322],{},[231,1323],{"alt":27,"src":1324},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780569157203.avif",[15,1326,1327],{},[209,1328,1331],{"href":1329,"rel":1330},"https:\u002F\u002Fimmich.app\u002F",[213],"体验了dome相册，我们再来看看immich项目具体的wiki。",[15,1333,1334,1335,1338,1339,1342,1343,1346,1347,1350],{},"immich 我们需要创建 4 个文件，immich 原本项目的 ",[29,1336,1337],{},"docker-compose.yaml"," 文件，但是根据不同硬件我介绍了四个配置，你可以根据自己硬件选择不同的文件。最后就是需要创建硬件加速 ",[29,1340,1341],{},"hwaccel.ml.yaml","，ai大模型 ",[29,1344,1345],{},"hwaccel.transcoding.yaml"," 以及 ",[29,1348,1349],{},".env"," 的配置文件。",[192,1352],{},[199,1354,1356],{"id":1355},"_22-创建路径配置文件","2.2 创建路径配置文件",[15,1358,1359,1360,1362],{},"首先我们来创建 ",[29,1361,1349],{}," 配置文件。",[22,1364,1369],{"className":1365,"code":1367,"language":1368},[1366],"language-text","# immich照片存储路径\nUPLOAD_LOCATION=\u002Fdocker\u002Fapps\u002Fimmich\u002Flibrary\n\n# postgres数据库存储路径，这里建议存储在\u002Fdocker\u002Fapps\u002Fimmich目录下，方便管理。\nDB_DATA_LOCATION=\u002Fdocker\u002Fapps\u002Fimmich\u002Fpostgres\nTZ=Asia\u002FShanghai\n\n#要使用的immich版本。您可以将其固定到特定版本，如“v1.71.0”\nIMMICH_VERSION=release\n\n#postgres数据库的访问密码\nDB_PASSWORD=postgres\nDB_USERNAME=postgres\nDB_DATABASE_NAME=immich\n","text",[29,1370,1367],{"__ignoreMap":27},[192,1372],{},[199,1374,1376],{"id":1375},"_23-创建硬件加速文件","2.3 创建硬件加速文件",[15,1378,1379,1380,1382],{},"其次我们来创建 ",[29,1381,1341],{}," 硬件加速文件。",[22,1384,1386],{"className":245,"code":1385,"language":247,"meta":27,"style":27},"services:\n  armnn:\n    devices:\n      - \u002Fdev\u002Fmali0:\u002Fdev\u002Fmali0\n    volumes:\n      - \u002Flib\u002Ffirmware\u002Fmali_csffw.bin:\u002Flib\u002Ffirmware\u002Fmali_csffw.bin:ro # Mali firmware for your chipset (not always required depending on the driver)\n      - \u002Fusr\u002Flib\u002Flibmali.so:\u002Fusr\u002Flib\u002Flibmali.so:ro # Mali driver for your chipset (always required)\n\n  cpu: {}\n\n  cuda:\n    deploy:\n      resources:\n        reservations:\n          devices:\n            - driver: nvidia\n              count: 1\n              capabilities:\n                - gpu\n\n  openvino:\n    device_cgroup_rules:\n      - 'c 189:* rmw'\n    devices:\n      - \u002Fdev\u002Fdri:\u002Fdev\u002Fdri\n    volumes:\n      - \u002Fdev\u002Fbus\u002Fusb:\u002Fdev\u002Fbus\u002Fusb\n\n  openvino-wsl:\n    devices:\n      - \u002Fdev\u002Fdri:\u002Fdev\u002Fdri\n      - \u002Fdev\u002Fdxg:\u002Fdev\u002Fdxg\n    volumes:\n      - \u002Fdev\u002Fbus\u002Fusb:\u002Fdev\u002Fbus\u002Fusb\n      - \u002Fusr\u002Flib\u002Fwsl:\u002Fusr\u002Flib\u002Fwsl\n",[29,1387,1388,1394,1401,1407,1414,1420,1430,1440,1444,1452,1456,1463,1470,1477,1484,1491,1504,1514,1521,1529,1533,1540,1547,1554,1560,1566,1572,1579,1583,1590,1596,1602,1609,1615,1621],{"__ignoreMap":27},[32,1389,1390,1392],{"class":34,"line":35},[32,1391,343],{"class":323},[32,1393,346],{"class":327},[32,1395,1396,1399],{"class":34,"line":42},[32,1397,1398],{"class":323},"  armnn",[32,1400,346],{"class":327},[32,1402,1403,1405],{"class":34,"line":52},[32,1404,486],{"class":323},[32,1406,346],{"class":327},[32,1408,1409,1411],{"class":34,"line":67},[32,1410,435],{"class":327},[32,1412,1413],{"class":48},"\u002Fdev\u002Fmali0:\u002Fdev\u002Fmali0\n",[32,1415,1416,1418],{"class":34,"line":80},[32,1417,540],{"class":323},[32,1419,346],{"class":327},[32,1421,1422,1424,1427],{"class":34,"line":93},[32,1423,435],{"class":327},[32,1425,1426],{"class":48},"\u002Flib\u002Ffirmware\u002Fmali_csffw.bin:\u002Flib\u002Ffirmware\u002Fmali_csffw.bin:ro",[32,1428,1429],{"class":254}," # Mali firmware for your chipset (not always required depending on the driver)\n",[32,1431,1432,1434,1437],{"class":34,"line":103},[32,1433,435],{"class":327},[32,1435,1436],{"class":48},"\u002Fusr\u002Flib\u002Flibmali.so:\u002Fusr\u002Flib\u002Flibmali.so:ro",[32,1438,1439],{"class":254}," # Mali driver for your chipset (always required)\n",[32,1441,1442],{"class":34,"line":115},[32,1443,266],{"emptyLinePlaceholder":265},[32,1445,1446,1449],{"class":34,"line":129},[32,1447,1448],{"class":323},"  cpu",[32,1450,1451],{"class":327},": {}\n",[32,1453,1454],{"class":34,"line":141},[32,1455,266],{"emptyLinePlaceholder":265},[32,1457,1458,1461],{"class":34,"line":153},[32,1459,1460],{"class":323},"  cuda",[32,1462,346],{"class":327},[32,1464,1465,1468],{"class":34,"line":163},[32,1466,1467],{"class":323},"    deploy",[32,1469,346],{"class":327},[32,1471,1472,1475],{"class":34,"line":174},[32,1473,1474],{"class":323},"      resources",[32,1476,346],{"class":327},[32,1478,1479,1482],{"class":34,"line":186},[32,1480,1481],{"class":323},"        reservations",[32,1483,346],{"class":327},[32,1485,1486,1489],{"class":34,"line":320},[32,1487,1488],{"class":323},"          devices",[32,1490,346],{"class":327},[32,1492,1493,1496,1499,1501],{"class":34,"line":334},[32,1494,1495],{"class":327},"            - ",[32,1497,1498],{"class":323},"driver",[32,1500,328],{"class":327},[32,1502,1503],{"class":48},"nvidia\n",[32,1505,1506,1509,1511],{"class":34,"line":340},[32,1507,1508],{"class":323},"              count",[32,1510,328],{"class":327},[32,1512,1513],{"class":189},"1\n",[32,1515,1516,1519],{"class":34,"line":349},[32,1517,1518],{"class":323},"              capabilities",[32,1520,346],{"class":327},[32,1522,1523,1526],{"class":34,"line":357},[32,1524,1525],{"class":327},"                - ",[32,1527,1528],{"class":48},"gpu\n",[32,1530,1531],{"class":34,"line":363},[32,1532,266],{"emptyLinePlaceholder":265},[32,1534,1535,1538],{"class":34,"line":374},[32,1536,1537],{"class":323},"  openvino",[32,1539,346],{"class":327},[32,1541,1542,1545],{"class":34,"line":380},[32,1543,1544],{"class":323},"    device_cgroup_rules",[32,1546,346],{"class":327},[32,1548,1549,1551],{"class":34,"line":390},[32,1550,435],{"class":327},[32,1552,1553],{"class":48},"'c 189:* rmw'\n",[32,1555,1556,1558],{"class":34,"line":396},[32,1557,486],{"class":323},[32,1559,346],{"class":327},[32,1561,1562,1564],{"class":34,"line":406},[32,1563,435],{"class":327},[32,1565,502],{"class":48},[32,1567,1568,1570],{"class":34,"line":414},[32,1569,540],{"class":323},[32,1571,346],{"class":327},[32,1573,1574,1576],{"class":34,"line":420},[32,1575,435],{"class":327},[32,1577,1578],{"class":48},"\u002Fdev\u002Fbus\u002Fusb:\u002Fdev\u002Fbus\u002Fusb\n",[32,1580,1581],{"class":34,"line":426},[32,1582,266],{"emptyLinePlaceholder":265},[32,1584,1585,1588],{"class":34,"line":432},[32,1586,1587],{"class":323},"  openvino-wsl",[32,1589,346],{"class":327},[32,1591,1592,1594],{"class":34,"line":441},[32,1593,486],{"class":323},[32,1595,346],{"class":327},[32,1597,1598,1600],{"class":34,"line":449},[32,1599,435],{"class":327},[32,1601,502],{"class":48},[32,1603,1604,1606],{"class":34,"line":455},[32,1605,435],{"class":327},[32,1607,1608],{"class":48},"\u002Fdev\u002Fdxg:\u002Fdev\u002Fdxg\n",[32,1610,1611,1613],{"class":34,"line":463},[32,1612,540],{"class":323},[32,1614,346],{"class":327},[32,1616,1617,1619],{"class":34,"line":469},[32,1618,435],{"class":327},[32,1620,1578],{"class":48},[32,1622,1623,1625],{"class":34,"line":477},[32,1624,435],{"class":327},[32,1626,1627],{"class":48},"\u002Fusr\u002Flib\u002Fwsl:\u002Fusr\u002Flib\u002Fwsl\n",[192,1629],{},[199,1631,1633],{"id":1632},"_24-创建-ai-大模型文件","2.4 创建 AI 大模型文件",[15,1635,1636,1637,1639],{},"再次，我们来创建 ",[29,1638,1345],{}," 文件。",[22,1641,1643],{"className":245,"code":1642,"language":247,"meta":27,"style":27},"services:\n  cpu: {}\n\n  nvenc:\n    deploy:\n      resources:\n        reservations:\n          devices:\n            - driver: nvidia\n              count: 1\n              capabilities:\n                - gpu\n                - compute\n                - video\n\n  quicksync:\n    devices:\n      - \u002Fdev\u002Fdri:\u002Fdev\u002Fdri\n\n  rkmpp:\n    security_opt: \n      - systempaths=unconfined\n      - apparmor=unconfined\n    group_add:\n      - video\n    devices:\n      - \u002Fdev\u002Frga:\u002Fdev\u002Frga\n      - \u002Fdev\u002Fdri:\u002Fdev\u002Fdri\n      - \u002Fdev\u002Fdma_heap:\u002Fdev\u002Fdma_heap\n      - \u002Fdev\u002Fmpp_service:\u002Fdev\u002Fmpp_service\n      #- \u002Fdev\u002Fmali0:\u002Fdev\u002Fmali0 # only required to enable OpenCL-accelerated HDR -> SDR tonemapping\n    volumes:\n      #- \u002Fetc\u002FOpenCL:\u002Fetc\u002FOpenCL:ro # only required to enable OpenCL-accelerated HDR -> SDR tonemapping\n      #- \u002Fusr\u002Flib\u002Faarch64-linux-gnu\u002Flibmali.so.1:\u002Fusr\u002Flib\u002Faarch64-linux-gnu\u002Flibmali.so.1:ro # only required to enable OpenCL-accelerated HDR -> SDR tonemapping\n\n  vaapi:\n    devices:\n      - \u002Fdev\u002Fdri:\u002Fdev\u002Fdri\n\n  vaapi-wsl: # use this for VAAPI if you're running Immich in WSL2\n    devices:\n      - \u002Fdev\u002Fdri:\u002Fdev\u002Fdri\n    volumes:\n      - \u002Fusr\u002Flib\u002Fwsl:\u002Fusr\u002Flib\u002Fwsl\n    environment:\n      - LIBVA_DRIVER_NAME=d3d12\n",[29,1644,1645,1651,1657,1661,1668,1674,1680,1686,1692,1702,1710,1716,1722,1729,1736,1740,1747,1753,1759,1763,1770,1777,1784,1791,1798,1804,1810,1817,1823,1830,1837,1842,1848,1853,1858,1862,1869,1875,1881,1885,1895,1901,1907,1913,1919,1925],{"__ignoreMap":27},[32,1646,1647,1649],{"class":34,"line":35},[32,1648,343],{"class":323},[32,1650,346],{"class":327},[32,1652,1653,1655],{"class":34,"line":42},[32,1654,1448],{"class":323},[32,1656,1451],{"class":327},[32,1658,1659],{"class":34,"line":52},[32,1660,266],{"emptyLinePlaceholder":265},[32,1662,1663,1666],{"class":34,"line":67},[32,1664,1665],{"class":323},"  nvenc",[32,1667,346],{"class":327},[32,1669,1670,1672],{"class":34,"line":80},[32,1671,1467],{"class":323},[32,1673,346],{"class":327},[32,1675,1676,1678],{"class":34,"line":93},[32,1677,1474],{"class":323},[32,1679,346],{"class":327},[32,1681,1682,1684],{"class":34,"line":103},[32,1683,1481],{"class":323},[32,1685,346],{"class":327},[32,1687,1688,1690],{"class":34,"line":115},[32,1689,1488],{"class":323},[32,1691,346],{"class":327},[32,1693,1694,1696,1698,1700],{"class":34,"line":129},[32,1695,1495],{"class":327},[32,1697,1498],{"class":323},[32,1699,328],{"class":327},[32,1701,1503],{"class":48},[32,1703,1704,1706,1708],{"class":34,"line":141},[32,1705,1508],{"class":323},[32,1707,328],{"class":327},[32,1709,1513],{"class":189},[32,1711,1712,1714],{"class":34,"line":153},[32,1713,1518],{"class":323},[32,1715,346],{"class":327},[32,1717,1718,1720],{"class":34,"line":163},[32,1719,1525],{"class":327},[32,1721,1528],{"class":48},[32,1723,1724,1726],{"class":34,"line":174},[32,1725,1525],{"class":327},[32,1727,1728],{"class":48},"compute\n",[32,1730,1731,1733],{"class":34,"line":186},[32,1732,1525],{"class":327},[32,1734,1735],{"class":48},"video\n",[32,1737,1738],{"class":34,"line":320},[32,1739,266],{"emptyLinePlaceholder":265},[32,1741,1742,1745],{"class":34,"line":334},[32,1743,1744],{"class":323},"  quicksync",[32,1746,346],{"class":327},[32,1748,1749,1751],{"class":34,"line":340},[32,1750,486],{"class":323},[32,1752,346],{"class":327},[32,1754,1755,1757],{"class":34,"line":349},[32,1756,435],{"class":327},[32,1758,502],{"class":48},[32,1760,1761],{"class":34,"line":357},[32,1762,266],{"emptyLinePlaceholder":265},[32,1764,1765,1768],{"class":34,"line":363},[32,1766,1767],{"class":323},"  rkmpp",[32,1769,346],{"class":327},[32,1771,1772,1775],{"class":34,"line":374},[32,1773,1774],{"class":323},"    security_opt",[32,1776,517],{"class":327},[32,1778,1779,1781],{"class":34,"line":380},[32,1780,435],{"class":327},[32,1782,1783],{"class":48},"systempaths=unconfined\n",[32,1785,1786,1788],{"class":34,"line":390},[32,1787,435],{"class":327},[32,1789,1790],{"class":48},"apparmor=unconfined\n",[32,1792,1793,1796],{"class":34,"line":396},[32,1794,1795],{"class":323},"    group_add",[32,1797,346],{"class":327},[32,1799,1800,1802],{"class":34,"line":406},[32,1801,435],{"class":327},[32,1803,1735],{"class":48},[32,1805,1806,1808],{"class":34,"line":414},[32,1807,486],{"class":323},[32,1809,346],{"class":327},[32,1811,1812,1814],{"class":34,"line":420},[32,1813,435],{"class":327},[32,1815,1816],{"class":48},"\u002Fdev\u002Frga:\u002Fdev\u002Frga\n",[32,1818,1819,1821],{"class":34,"line":426},[32,1820,435],{"class":327},[32,1822,502],{"class":48},[32,1824,1825,1827],{"class":34,"line":432},[32,1826,435],{"class":327},[32,1828,1829],{"class":48},"\u002Fdev\u002Fdma_heap:\u002Fdev\u002Fdma_heap\n",[32,1831,1832,1834],{"class":34,"line":441},[32,1833,435],{"class":327},[32,1835,1836],{"class":48},"\u002Fdev\u002Fmpp_service:\u002Fdev\u002Fmpp_service\n",[32,1838,1839],{"class":34,"line":449},[32,1840,1841],{"class":254},"      #- \u002Fdev\u002Fmali0:\u002Fdev\u002Fmali0 # only required to enable OpenCL-accelerated HDR -> SDR tonemapping\n",[32,1843,1844,1846],{"class":34,"line":455},[32,1845,540],{"class":323},[32,1847,346],{"class":327},[32,1849,1850],{"class":34,"line":463},[32,1851,1852],{"class":254},"      #- \u002Fetc\u002FOpenCL:\u002Fetc\u002FOpenCL:ro # only required to enable OpenCL-accelerated HDR -> SDR tonemapping\n",[32,1854,1855],{"class":34,"line":469},[32,1856,1857],{"class":254},"      #- \u002Fusr\u002Flib\u002Faarch64-linux-gnu\u002Flibmali.so.1:\u002Fusr\u002Flib\u002Faarch64-linux-gnu\u002Flibmali.so.1:ro # only required to enable OpenCL-accelerated HDR -> SDR tonemapping\n",[32,1859,1860],{"class":34,"line":477},[32,1861,266],{"emptyLinePlaceholder":265},[32,1863,1864,1867],{"class":34,"line":483},[32,1865,1866],{"class":323},"  vaapi",[32,1868,346],{"class":327},[32,1870,1871,1873],{"class":34,"line":491},[32,1872,486],{"class":323},[32,1874,346],{"class":327},[32,1876,1877,1879],{"class":34,"line":497},[32,1878,435],{"class":327},[32,1880,502],{"class":48},[32,1882,1883],{"class":34,"line":505},[32,1884,266],{"emptyLinePlaceholder":265},[32,1886,1887,1890,1892],{"class":34,"line":511},[32,1888,1889],{"class":323},"  vaapi-wsl",[32,1891,328],{"class":327},[32,1893,1894],{"class":254},"# use this for VAAPI if you're running Immich in WSL2\n",[32,1896,1897,1899],{"class":34,"line":520},[32,1898,486],{"class":323},[32,1900,346],{"class":327},[32,1902,1903,1905],{"class":34,"line":531},[32,1904,435],{"class":327},[32,1906,502],{"class":48},[32,1908,1909,1911],{"class":34,"line":537},[32,1910,540],{"class":323},[32,1912,346],{"class":327},[32,1914,1915,1917],{"class":34,"line":545},[32,1916,435],{"class":327},[32,1918,1627],{"class":48},[32,1920,1921,1923],{"class":34,"line":551},[32,1922,409],{"class":323},[32,1924,346],{"class":327},[32,1926,1927,1929],{"class":34,"line":557},[32,1928,435],{"class":327},[32,1930,1931],{"class":48},"LIBVA_DRIVER_NAME=d3d12\n",[192,1933],{},[199,1935,1937],{"id":1936},"_25-创建无核显cpu-运行大模型文件","2.5 创建无核显+cpu 运行大模型文件",[15,1939,1940,1941,1639],{},"众所周知，硬件加速需要硬件支持，假如你的硬件是不支持核显或者图形显卡加速，再或者你不知道怎么选择，直接用本文件肯定没错。根据自己配置，我们来创建 ",[29,1942,1337],{},[22,1944,1946],{"className":245,"code":1945,"language":247,"meta":27,"style":27},"# 基于官方模板制作\n# 官方文档\n# https:\u002F\u002Fimmich.app\n# 官方compose教程\n# https:\u002F\u002Fimmich.app\u002Fdocs\u002Finstall\u002Fdocker-compose\n# 官方变量说明\n# https:\u002F\u002Fimmich.app\u002Fdocs\u002Finstall\u002Fenvironment-variables\n# 官方CLIP说明\n# https:\u002F\u002Fimmich.app\u002Fdocs\u002Ffeatures\u002Fcommand-line-interface\n# 官方硬件转码说明\n# https:\u002F\u002Fimmich.app\u002Fdocs\u002Ffeatures\u002Fhardware-transcoding\n# https:\u002F\u002Fhub.docker.com\u002Fr\u002Ftensorchord\u002Fpgvecto-rs\n\n# 如果官方的镜像不好拉取，可以选择拉取以下两个镜像作为替代，部署参数完全相同，将模板上对应的镜像进行修改即可，tag也是release\n# https:\u002F\u002Fhub.docker.com\u002Fr\u002Faltran1502\u002Fimmich-server\n# https:\u002F\u002Fhub.docker.com\u002Fr\u002Faltran1502\u002Fimmich-machine-learning\n\n# ---\n\nname: immich\n# 最后编辑时间：2025-02-14\nservices:\n  immich-server:\n    # 镜像地址\n    image: ghcr.nju.edu.cn\u002Fimmich-app\u002Fimmich-server:${IMMICH_VERSION:-release}\n    # 容器名\n    container_name: immich_server\n    # 主机名\n    hostname: immich-server\n    volumes:\n      # 请去.env修改路径\n      - ${UPLOAD_LOCATION}:\u002Fusr\u002Fsrc\u002Fapp\u002Fupload \n      - \u002Fetc\u002Flocaltime:\u002Fetc\u002Flocaltime:ro\n    # 配置文件，指定版本，指定相册路径，数据库路径\n    env_file:\n      - .env\n    # 调用数据库\n    depends_on:\n      - redis\n      - database\n    # 健康检查\n    healthcheck:\n      disable: false\n    # webUI端口  \n    ports:\n      - 2283:2283\n    # 重启策略，总是重启\n    restart: always\n\n  immich-machine-learning:\n    # 镜像名称\n    image: ghcr.nju.edu.cn\u002Fimmich-app\u002Fimmich-machine-learning:${IMMICH_VERSION:-release}-openvino\n    # 容器名\n    container_name: immich_machine_learning\n    # 主机名\n    hostname: immich_machine_learning\n    volumes:\n      #修改机器学习模型存储路径\n      - \u002Fdocker\u002Fapps\u002Fimmich\u002Fmodel-cache:\u002Fcache\n    # 配置文件，指定版本，指定相册路径，数据库路径\n    env_file:\n      - .env\n    # 健康检查\n    healthcheck:\n      disable: false\n    # 重启策略，总是重启\n    restart: always\n\n  redis:\n    # 镜像名称\n    image: docker.io\u002Fredis:6.2-alpine\n    # 容器名\n    container_name: immich_redis\n    # 主机名\n    hostname: immich_redis\n    # 健康检查\n    healthcheck:\n      test: redis-cli ping || exit 1\n    # 重启策略，总是重启\n    restart: always\n\n  database:\n    # 镜像名称\n    image: docker.io\u002Ftensorchord\u002Fpgvecto-rs:pg14-v0.2.0\n    # 容器名\n    container_name: immich_postgres\n    # 主机名\n    hostname: immich_postgres\n    # 配置文件\n    environment:\n      # 数据库用户\n      POSTGRES_USER: ${DB_USERNAME}\n      # 数据库密码\n      POSTGRES_PASSWORD: ${DB_PASSWORD}\n      # 数据库名称\n      POSTGRES_DB: ${DB_DATABASE_NAME}\n      POSTGRES_INITDB_ARGS: '--data-checksums'\n    volumes:\n      # 请去.env修改路径\n      - ${DB_DATA_LOCATION}:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n    # 健康检查\n    healthcheck:\n      test: >-\n        pg_isready --dbname=\"$${POSTGRES_DB}\" --username=\"$${POSTGRES_USER}\" || exit 1;\n        Chksum=\"$$(psql --dbname=\"$${POSTGRES_DB}\" --username=\"$${POSTGRES_USER}\" --tuples-only --no-align\n        --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')\";\n        echo \"checksum failure count is $$Chksum\";\n        [ \"$$Chksum\" = '0' ] || exit 1\n      interval: 5m\n      start_interval: 30s\n      start_period: 5m\n    command: >-\n      postgres\n      -c shared_preload_libraries=vectors.so\n      -c 'search_path=\"$$user\", public, vectors'\n      -c logging_collector=on\n      -c max_wal_size=2GB\n      -c shared_buffers=512MB\n      -c wal_compression=on\n    # 重启策略，总是重启\n    restart: always\n",[29,1947,1948,1953,1957,1962,1967,1972,1977,1982,1987,1992,1997,2002,2007,2011,2016,2021,2026,2030,2034,2038,2047,2052,2058,2065,2069,2078,2082,2091,2095,2104,2110,2115,2124,2131,2136,2143,2150,2155,2161,2168,2175,2180,2187,2197,2202,2208,2215,2219,2227,2231,2238,2243,2252,2256,2265,2269,2277,2283,2288,2295,2299,2305,2311,2315,2321,2329,2333,2341,2345,2352,2356,2365,2369,2378,2382,2390,2394,2400,2410,2414,2422,2426,2433,2437,2446,2450,2459,2463,2471,2476,2482,2487,2497,2502,2512,2517,2527,2537,2543,2547,2554,2558,2564,2574,2579,2585,2591,2597,2603,2614,2625,2635,2645,2651,2657,2663,2669,2675,2681,2687,2692],{"__ignoreMap":27},[32,1949,1950],{"class":34,"line":35},[32,1951,1952],{"class":254},"# 基于官方模板制作\n",[32,1954,1955],{"class":34,"line":42},[32,1956,255],{"class":254},[32,1958,1959],{"class":34,"line":52},[32,1960,1961],{"class":254},"# https:\u002F\u002Fimmich.app\n",[32,1963,1964],{"class":34,"line":67},[32,1965,1966],{"class":254},"# 官方compose教程\n",[32,1968,1969],{"class":34,"line":80},[32,1970,1971],{"class":254},"# https:\u002F\u002Fimmich.app\u002Fdocs\u002Finstall\u002Fdocker-compose\n",[32,1973,1974],{"class":34,"line":93},[32,1975,1976],{"class":254},"# 官方变量说明\n",[32,1978,1979],{"class":34,"line":103},[32,1980,1981],{"class":254},"# https:\u002F\u002Fimmich.app\u002Fdocs\u002Finstall\u002Fenvironment-variables\n",[32,1983,1984],{"class":34,"line":115},[32,1985,1986],{"class":254},"# 官方CLIP说明\n",[32,1988,1989],{"class":34,"line":129},[32,1990,1991],{"class":254},"# https:\u002F\u002Fimmich.app\u002Fdocs\u002Ffeatures\u002Fcommand-line-interface\n",[32,1993,1994],{"class":34,"line":141},[32,1995,1996],{"class":254},"# 官方硬件转码说明\n",[32,1998,1999],{"class":34,"line":153},[32,2000,2001],{"class":254},"# https:\u002F\u002Fimmich.app\u002Fdocs\u002Ffeatures\u002Fhardware-transcoding\n",[32,2003,2004],{"class":34,"line":163},[32,2005,2006],{"class":254},"# https:\u002F\u002Fhub.docker.com\u002Fr\u002Ftensorchord\u002Fpgvecto-rs\n",[32,2008,2009],{"class":34,"line":174},[32,2010,266],{"emptyLinePlaceholder":265},[32,2012,2013],{"class":34,"line":186},[32,2014,2015],{"class":254},"# 如果官方的镜像不好拉取，可以选择拉取以下两个镜像作为替代，部署参数完全相同，将模板上对应的镜像进行修改即可，tag也是release\n",[32,2017,2018],{"class":34,"line":320},[32,2019,2020],{"class":254},"# https:\u002F\u002Fhub.docker.com\u002Fr\u002Faltran1502\u002Fimmich-server\n",[32,2022,2023],{"class":34,"line":334},[32,2024,2025],{"class":254},"# https:\u002F\u002Fhub.docker.com\u002Fr\u002Faltran1502\u002Fimmich-machine-learning\n",[32,2027,2028],{"class":34,"line":340},[32,2029,266],{"emptyLinePlaceholder":265},[32,2031,2032],{"class":34,"line":349},[32,2033,313],{"class":254},[32,2035,2036],{"class":34,"line":357},[32,2037,266],{"emptyLinePlaceholder":265},[32,2039,2040,2042,2044],{"class":34,"line":363},[32,2041,324],{"class":323},[32,2043,328],{"class":327},[32,2045,2046],{"class":48},"immich\n",[32,2048,2049],{"class":34,"line":374},[32,2050,2051],{"class":254},"# 最后编辑时间：2025-02-14\n",[32,2053,2054,2056],{"class":34,"line":380},[32,2055,343],{"class":323},[32,2057,346],{"class":327},[32,2059,2060,2063],{"class":34,"line":390},[32,2061,2062],{"class":323},"  immich-server",[32,2064,346],{"class":327},[32,2066,2067],{"class":34,"line":396},[32,2068,360],{"class":254},[32,2070,2071,2073,2075],{"class":34,"line":406},[32,2072,366],{"class":323},[32,2074,328],{"class":327},[32,2076,2077],{"class":48},"ghcr.nju.edu.cn\u002Fimmich-app\u002Fimmich-server:${IMMICH_VERSION:-release}\n",[32,2079,2080],{"class":34,"line":414},[32,2081,377],{"class":254},[32,2083,2084,2086,2088],{"class":34,"line":420},[32,2085,383],{"class":323},[32,2087,328],{"class":327},[32,2089,2090],{"class":48},"immich_server\n",[32,2092,2093],{"class":34,"line":426},[32,2094,393],{"class":254},[32,2096,2097,2099,2101],{"class":34,"line":432},[32,2098,399],{"class":323},[32,2100,328],{"class":327},[32,2102,2103],{"class":48},"immich-server\n",[32,2105,2106,2108],{"class":34,"line":441},[32,2107,540],{"class":323},[32,2109,346],{"class":327},[32,2111,2112],{"class":34,"line":449},[32,2113,2114],{"class":254},"      # 请去.env修改路径\n",[32,2116,2117,2119,2122],{"class":34,"line":455},[32,2118,435],{"class":327},[32,2120,2121],{"class":48},"${UPLOAD_LOCATION}:\u002Fusr\u002Fsrc\u002Fapp\u002Fupload",[32,2123,1107],{"class":327},[32,2125,2126,2128],{"class":34,"line":463},[32,2127,435],{"class":327},[32,2129,2130],{"class":48},"\u002Fetc\u002Flocaltime:\u002Fetc\u002Flocaltime:ro\n",[32,2132,2133],{"class":34,"line":469},[32,2134,2135],{"class":254},"    # 配置文件，指定版本，指定相册路径，数据库路径\n",[32,2137,2138,2141],{"class":34,"line":477},[32,2139,2140],{"class":323},"    env_file",[32,2142,346],{"class":327},[32,2144,2145,2147],{"class":34,"line":483},[32,2146,435],{"class":327},[32,2148,2149],{"class":48},".env\n",[32,2151,2152],{"class":34,"line":491},[32,2153,2154],{"class":254},"    # 调用数据库\n",[32,2156,2157,2159],{"class":34,"line":497},[32,2158,901],{"class":323},[32,2160,346],{"class":327},[32,2162,2163,2165],{"class":34,"line":505},[32,2164,435],{"class":327},[32,2166,2167],{"class":48},"redis\n",[32,2169,2170,2172],{"class":34,"line":511},[32,2171,435],{"class":327},[32,2173,2174],{"class":48},"database\n",[32,2176,2177],{"class":34,"line":520},[32,2178,2179],{"class":254},"    # 健康检查\n",[32,2181,2182,2185],{"class":34,"line":531},[32,2183,2184],{"class":323},"    healthcheck",[32,2186,346],{"class":327},[32,2188,2189,2192,2194],{"class":34,"line":537},[32,2190,2191],{"class":323},"      disable",[32,2193,328],{"class":327},[32,2195,2196],{"class":189},"false\n",[32,2198,2199],{"class":34,"line":545},[32,2200,2201],{"class":254},"    # webUI端口  \n",[32,2203,2204,2206],{"class":34,"line":551},[32,2205,619],{"class":323},[32,2207,346],{"class":327},[32,2209,2210,2212],{"class":34,"line":557},[32,2211,435],{"class":327},[32,2213,2214],{"class":48},"2283:2283\n",[32,2216,2217],{"class":34,"line":565},[32,2218,641],{"class":254},[32,2220,2221,2223,2225],{"class":34,"line":571},[32,2222,647],{"class":323},[32,2224,328],{"class":327},[32,2226,652],{"class":48},[32,2228,2229],{"class":34,"line":579},[32,2230,266],{"emptyLinePlaceholder":265},[32,2232,2233,2236],{"class":34,"line":585},[32,2234,2235],{"class":323},"  immich-machine-learning",[32,2237,346],{"class":327},[32,2239,2240],{"class":34,"line":593},[32,2241,2242],{"class":254},"    # 镜像名称\n",[32,2244,2245,2247,2249],{"class":34,"line":599},[32,2246,366],{"class":323},[32,2248,328],{"class":327},[32,2250,2251],{"class":48},"ghcr.nju.edu.cn\u002Fimmich-app\u002Fimmich-machine-learning:${IMMICH_VERSION:-release}-openvino\n",[32,2253,2254],{"class":34,"line":610},[32,2255,377],{"class":254},[32,2257,2258,2260,2262],{"class":34,"line":616},[32,2259,383],{"class":323},[32,2261,328],{"class":327},[32,2263,2264],{"class":48},"immich_machine_learning\n",[32,2266,2267],{"class":34,"line":624},[32,2268,393],{"class":254},[32,2270,2271,2273,2275],{"class":34,"line":630},[32,2272,399],{"class":323},[32,2274,328],{"class":327},[32,2276,2264],{"class":48},[32,2278,2279,2281],{"class":34,"line":638},[32,2280,540],{"class":323},[32,2282,346],{"class":327},[32,2284,2285],{"class":34,"line":644},[32,2286,2287],{"class":254},"      #修改机器学习模型存储路径\n",[32,2289,2290,2292],{"class":34,"line":954},[32,2291,435],{"class":327},[32,2293,2294],{"class":48},"\u002Fdocker\u002Fapps\u002Fimmich\u002Fmodel-cache:\u002Fcache\n",[32,2296,2297],{"class":34,"line":959},[32,2298,2135],{"class":254},[32,2300,2301,2303],{"class":34,"line":966},[32,2302,2140],{"class":323},[32,2304,346],{"class":327},[32,2306,2307,2309],{"class":34,"line":971},[32,2308,435],{"class":327},[32,2310,2149],{"class":48},[32,2312,2313],{"class":34,"line":978},[32,2314,2179],{"class":254},[32,2316,2317,2319],{"class":34,"line":983},[32,2318,2184],{"class":323},[32,2320,346],{"class":327},[32,2322,2323,2325,2327],{"class":34,"line":992},[32,2324,2191],{"class":323},[32,2326,328],{"class":327},[32,2328,2196],{"class":189},[32,2330,2331],{"class":34,"line":997},[32,2332,641],{"class":254},[32,2334,2335,2337,2339],{"class":34,"line":1004},[32,2336,647],{"class":323},[32,2338,328],{"class":327},[32,2340,652],{"class":48},[32,2342,2343],{"class":34,"line":1009},[32,2344,266],{"emptyLinePlaceholder":265},[32,2346,2347,2350],{"class":34,"line":1016},[32,2348,2349],{"class":323},"  redis",[32,2351,346],{"class":327},[32,2353,2354],{"class":34,"line":1021},[32,2355,2242],{"class":254},[32,2357,2358,2360,2362],{"class":34,"line":1030},[32,2359,366],{"class":323},[32,2361,328],{"class":327},[32,2363,2364],{"class":48},"docker.io\u002Fredis:6.2-alpine\n",[32,2366,2367],{"class":34,"line":1035},[32,2368,377],{"class":254},[32,2370,2371,2373,2375],{"class":34,"line":1043},[32,2372,383],{"class":323},[32,2374,328],{"class":327},[32,2376,2377],{"class":48},"immich_redis\n",[32,2379,2380],{"class":34,"line":1048},[32,2381,393],{"class":254},[32,2383,2384,2386,2388],{"class":34,"line":1058},[32,2385,399],{"class":323},[32,2387,328],{"class":327},[32,2389,2377],{"class":48},[32,2391,2392],{"class":34,"line":1063},[32,2393,2179],{"class":254},[32,2395,2396,2398],{"class":34,"line":1072},[32,2397,2184],{"class":323},[32,2399,346],{"class":327},[32,2401,2402,2405,2407],{"class":34,"line":1077},[32,2403,2404],{"class":323},"      test",[32,2406,328],{"class":327},[32,2408,2409],{"class":48},"redis-cli ping || exit 1\n",[32,2411,2412],{"class":34,"line":1086},[32,2413,641],{"class":254},[32,2415,2416,2418,2420],{"class":34,"line":1093},[32,2417,647],{"class":323},[32,2419,328],{"class":327},[32,2421,652],{"class":48},[32,2423,2424],{"class":34,"line":1099},[32,2425,266],{"emptyLinePlaceholder":265},[32,2427,2428,2431],{"class":34,"line":1110},[32,2429,2430],{"class":323},"  database",[32,2432,346],{"class":327},[32,2434,2435],{"class":34,"line":1117},[32,2436,2242],{"class":254},[32,2438,2439,2441,2443],{"class":34,"line":1123},[32,2440,366],{"class":323},[32,2442,328],{"class":327},[32,2444,2445],{"class":48},"docker.io\u002Ftensorchord\u002Fpgvecto-rs:pg14-v0.2.0\n",[32,2447,2448],{"class":34,"line":1131},[32,2449,377],{"class":254},[32,2451,2452,2454,2456],{"class":34,"line":1136},[32,2453,383],{"class":323},[32,2455,328],{"class":327},[32,2457,2458],{"class":48},"immich_postgres\n",[32,2460,2461],{"class":34,"line":1145},[32,2462,393],{"class":254},[32,2464,2465,2467,2469],{"class":34,"line":1150},[32,2466,399],{"class":323},[32,2468,328],{"class":327},[32,2470,2458],{"class":48},[32,2472,2473],{"class":34,"line":1158},[32,2474,2475],{"class":254},"    # 配置文件\n",[32,2477,2478,2480],{"class":34,"line":1163},[32,2479,409],{"class":323},[32,2481,346],{"class":327},[32,2483,2484],{"class":34,"line":1169},[32,2485,2486],{"class":254},"      # 数据库用户\n",[32,2488,2489,2492,2494],{"class":34,"line":1175},[32,2490,2491],{"class":323},"      POSTGRES_USER",[32,2493,328],{"class":327},[32,2495,2496],{"class":48},"${DB_USERNAME}\n",[32,2498,2499],{"class":34,"line":1185},[32,2500,2501],{"class":254},"      # 数据库密码\n",[32,2503,2504,2507,2509],{"class":34,"line":1190},[32,2505,2506],{"class":323},"      POSTGRES_PASSWORD",[32,2508,328],{"class":327},[32,2510,2511],{"class":48},"${DB_PASSWORD}\n",[32,2513,2514],{"class":34,"line":1199},[32,2515,2516],{"class":254},"      # 数据库名称\n",[32,2518,2519,2522,2524],{"class":34,"line":1204},[32,2520,2521],{"class":323},"      POSTGRES_DB",[32,2523,328],{"class":327},[32,2525,2526],{"class":48},"${DB_DATABASE_NAME}\n",[32,2528,2529,2532,2534],{"class":34,"line":1213},[32,2530,2531],{"class":323},"      POSTGRES_INITDB_ARGS",[32,2533,328],{"class":327},[32,2535,2536],{"class":48},"'--data-checksums'\n",[32,2538,2539,2541],{"class":34,"line":1220},[32,2540,540],{"class":323},[32,2542,346],{"class":327},[32,2544,2545],{"class":34,"line":1226},[32,2546,2114],{"class":254},[32,2548,2549,2551],{"class":34,"line":1234},[32,2550,435],{"class":327},[32,2552,2553],{"class":48},"${DB_DATA_LOCATION}:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n",[32,2555,2556],{"class":34,"line":1241},[32,2557,2179],{"class":254},[32,2559,2560,2562],{"class":34,"line":1247},[32,2561,2184],{"class":323},[32,2563,346],{"class":327},[32,2565,2566,2568,2570],{"class":34,"line":1255},[32,2567,2404],{"class":323},[32,2569,328],{"class":327},[32,2571,2573],{"class":2572},"szBVR",">-\n",[32,2575,2576],{"class":34,"line":1260},[32,2577,2578],{"class":48},"        pg_isready --dbname=\"$${POSTGRES_DB}\" --username=\"$${POSTGRES_USER}\" || exit 1;\n",[32,2580,2582],{"class":34,"line":2581},105,[32,2583,2584],{"class":48},"        Chksum=\"$$(psql --dbname=\"$${POSTGRES_DB}\" --username=\"$${POSTGRES_USER}\" --tuples-only --no-align\n",[32,2586,2588],{"class":34,"line":2587},106,[32,2589,2590],{"class":48},"        --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')\";\n",[32,2592,2594],{"class":34,"line":2593},107,[32,2595,2596],{"class":48},"        echo \"checksum failure count is $$Chksum\";\n",[32,2598,2600],{"class":34,"line":2599},108,[32,2601,2602],{"class":48},"        [ \"$$Chksum\" = '0' ] || exit 1\n",[32,2604,2606,2609,2611],{"class":34,"line":2605},109,[32,2607,2608],{"class":323},"      interval",[32,2610,328],{"class":327},[32,2612,2613],{"class":48},"5m\n",[32,2615,2617,2620,2622],{"class":34,"line":2616},110,[32,2618,2619],{"class":323},"      start_interval",[32,2621,328],{"class":327},[32,2623,2624],{"class":48},"30s\n",[32,2626,2628,2631,2633],{"class":34,"line":2627},111,[32,2629,2630],{"class":323},"      start_period",[32,2632,328],{"class":327},[32,2634,2613],{"class":48},[32,2636,2638,2641,2643],{"class":34,"line":2637},112,[32,2639,2640],{"class":323},"    command",[32,2642,328],{"class":327},[32,2644,2573],{"class":2572},[32,2646,2648],{"class":34,"line":2647},113,[32,2649,2650],{"class":48},"      postgres\n",[32,2652,2654],{"class":34,"line":2653},114,[32,2655,2656],{"class":48},"      -c shared_preload_libraries=vectors.so\n",[32,2658,2660],{"class":34,"line":2659},115,[32,2661,2662],{"class":48},"      -c 'search_path=\"$$user\", public, vectors'\n",[32,2664,2666],{"class":34,"line":2665},116,[32,2667,2668],{"class":48},"      -c logging_collector=on\n",[32,2670,2672],{"class":34,"line":2671},117,[32,2673,2674],{"class":48},"      -c max_wal_size=2GB\n",[32,2676,2678],{"class":34,"line":2677},118,[32,2679,2680],{"class":48},"      -c shared_buffers=512MB\n",[32,2682,2684],{"class":34,"line":2683},119,[32,2685,2686],{"class":48},"      -c wal_compression=on\n",[32,2688,2690],{"class":34,"line":2689},120,[32,2691,641],{"class":254},[32,2693,2695,2697,2699],{"class":34,"line":2694},121,[32,2696,647],{"class":323},[32,2698,328],{"class":327},[32,2700,652],{"class":48},[192,2702],{},[199,2704,2706],{"id":2705},"_26-创建-intel-6-代核显-vaapicpu-运行大模型文件","2.6 创建 intel 6 代核显 vaapi+cpu 运行大模型文件",[15,2708,2709,2710,1639],{},"众所周知，硬件加速需要硬件支持，假如你的硬件是 intel 6 代以上 hd610 或者 hd630 核显加速，那么你选择本文件。根据自己配置，我们来创建 ",[29,2711,1337],{},[22,2713,2715],{"className":245,"code":2714,"language":247,"meta":27,"style":27},"# 基于官方模板制作\n# 官方文档\n# https:\u002F\u002Fimmich.app\n# 官方compose教程\n# https:\u002F\u002Fimmich.app\u002Fdocs\u002Finstall\u002Fdocker-compose\n# 官方变量说明\n# https:\u002F\u002Fimmich.app\u002Fdocs\u002Finstall\u002Fenvironment-variables\n# 官方CLIP说明\n# https:\u002F\u002Fimmich.app\u002Fdocs\u002Ffeatures\u002Fcommand-line-interface\n# 官方硬件转码说明\n# https:\u002F\u002Fimmich.app\u002Fdocs\u002Ffeatures\u002Fhardware-transcoding\n# https:\u002F\u002Fhub.docker.com\u002Fr\u002Ftensorchord\u002Fpgvecto-rs\n\n# 如果官方的镜像不好拉取，可以选择拉取以下两个镜像作为替代，部署参数完全相同，将模板上对应的镜像进行修改即可，tag也是release\n# https:\u002F\u002Fhub.docker.com\u002Fr\u002Faltran1502\u002Fimmich-server\n# https:\u002F\u002Fhub.docker.com\u002Fr\u002Faltran1502\u002Fimmich-machine-learning\n\n# ---\n\nname: immich\n# 最后编辑时间：2025-02-14\nservices:\n  immich-server:\n    # 镜像地址\n    image: ghcr.nju.edu.cn\u002Fimmich-app\u002Fimmich-server:${IMMICH_VERSION:-release}\n    # 容器名\n    container_name: immich_server\n    # 主机名\n    hostname: immich-server\n    # 拓展\n    extends:\n       # 调用转码文件 \n       file: hwaccel.transcoding.yaml\n       # 请去设置四个中的一个转码方式 [nvenc 英伟达, quicksync 英特尔核显, rkmpp rk系列的arm, vaapi, vaapi-wsl] \n       service: vaapi \n    volumes:\n      # 请去.env修改路径\n      - ${UPLOAD_LOCATION}:\u002Fusr\u002Fsrc\u002Fapp\u002Fupload \n      - \u002Fetc\u002Flocaltime:\u002Fetc\u002Flocaltime:ro\n    # 配置文件，指定版本，指定相册路径，数据库路径\n    env_file:\n      - .env\n    # 调用数据库\n    depends_on:\n      - redis\n      - database\n    # 健康检查\n    healthcheck:\n      disable: false\n    # webUI端口  \n    ports:\n      - 2283:2283\n    # 重启策略，总是重启\n    restart: always\n\n  immich-machine-learning:\n    # 镜像名称\n    image: ghcr.nju.edu.cn\u002Fimmich-app\u002Fimmich-machine-learning:${IMMICH_VERSION:-release}-openvino\n    # 容器名\n    container_name: immich_machine_learning\n    # 主机名\n    hostname: immich_machine_learning\n    # [armnn arm图形使用, cuda n卡cuda, openvino intel核显]，机器学习调用编码器\n    # Example tag: ${IMMICH_VERSION:-release}-cuda 在image的镜像最后面添加相应的图形解码，如果想使用cpu则删除就可以\n    # 拓展\n    extends: \n      # 调用转码文件 \n      file: hwaccel.ml.yaml\n      service: openvino # 设置四个图形解码中的一个 [armnn arm图形使用, cuda n卡cuda, openvino 优先使用，intel核显, openvino-wsl intel核显] \n    volumes:\n      #修改机器学习模型存储路径\n      - \u002Fdocker\u002Fapps\u002Fimmich\u002Fmodel-cache:\u002Fcache\n    # 配置文件，指定版本，指定相册路径，数据库路径\n    env_file:\n      - .env\n    # 健康检查\n    healthcheck:\n      disable: false\n    # 重启策略，总是重启\n    restart: always\n\n  redis:\n    # 镜像名称\n    image: docker.io\u002Fredis:6.2-alpine\n    # 容器名\n    container_name: immich_redis\n    # 主机名\n    hostname: immich_redis\n    # 健康检查\n    healthcheck:\n      test: redis-cli ping || exit 1\n    # 重启策略，总是重启\n    restart: always\n\n  database:\n    # 镜像名称\n    image: docker.io\u002Ftensorchord\u002Fpgvecto-rs:pg14-v0.2.0\n    # 容器名\n    container_name: immich_postgres\n    # 主机名\n    hostname: immich_postgres\n    # 配置文件\n    environment:\n      # 数据库用户\n      POSTGRES_USER: ${DB_USERNAME}\n      # 数据库密码\n      POSTGRES_PASSWORD: ${DB_PASSWORD}\n      # 数据库名称\n      POSTGRES_DB: ${DB_DATABASE_NAME}\n      POSTGRES_INITDB_ARGS: '--data-checksums'\n    volumes:\n      # 请去.env修改路径\n      - ${DB_DATA_LOCATION}:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n    # 健康检查\n    healthcheck:\n      test: >-\n        pg_isready --dbname=\"$${POSTGRES_DB}\" --username=\"$${POSTGRES_USER}\" || exit 1;\n        Chksum=\"$$(psql --dbname=\"$${POSTGRES_DB}\" --username=\"$${POSTGRES_USER}\" --tuples-only --no-align\n        --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')\";\n        echo \"checksum failure count is $$Chksum\";\n        [ \"$$Chksum\" = '0' ] || exit 1\n      interval: 5m\n      start_interval: 30s\n      start_period: 5m\n    command: >-\n      postgres\n      -c shared_preload_libraries=vectors.so\n      -c 'search_path=\"$$user\", public, vectors'\n      -c logging_collector=on\n      -c max_wal_size=2GB\n      -c shared_buffers=512MB\n      -c wal_compression=on\n    # 重启策略，总是重启\n    restart: always\n",[29,2716,2717,2721,2725,2729,2733,2737,2741,2745,2749,2753,2757,2761,2765,2769,2773,2777,2781,2785,2789,2793,2801,2805,2811,2817,2821,2829,2833,2841,2845,2853,2858,2865,2870,2880,2885,2897,2903,2907,2915,2921,2925,2931,2937,2941,2947,2953,2959,2963,2969,2977,2981,2987,2993,2997,3005,3009,3015,3019,3027,3031,3039,3043,3051,3056,3061,3065,3071,3076,3086,3099,3105,3109,3115,3119,3125,3131,3135,3141,3149,3153,3161,3165,3171,3175,3183,3187,3195,3199,3207,3211,3217,3225,3229,3237,3241,3247,3251,3259,3263,3271,3275,3283,3287,3293,3297,3305,3309,3317,3321,3329,3337,3343,3347,3353,3357,3363,3371,3375,3379,3383,3387,3391,3400,3409,3418,3427,3432,3437,3442,3447,3452,3457,3462,3467],{"__ignoreMap":27},[32,2718,2719],{"class":34,"line":35},[32,2720,1952],{"class":254},[32,2722,2723],{"class":34,"line":42},[32,2724,255],{"class":254},[32,2726,2727],{"class":34,"line":52},[32,2728,1961],{"class":254},[32,2730,2731],{"class":34,"line":67},[32,2732,1966],{"class":254},[32,2734,2735],{"class":34,"line":80},[32,2736,1971],{"class":254},[32,2738,2739],{"class":34,"line":93},[32,2740,1976],{"class":254},[32,2742,2743],{"class":34,"line":103},[32,2744,1981],{"class":254},[32,2746,2747],{"class":34,"line":115},[32,2748,1986],{"class":254},[32,2750,2751],{"class":34,"line":129},[32,2752,1991],{"class":254},[32,2754,2755],{"class":34,"line":141},[32,2756,1996],{"class":254},[32,2758,2759],{"class":34,"line":153},[32,2760,2001],{"class":254},[32,2762,2763],{"class":34,"line":163},[32,2764,2006],{"class":254},[32,2766,2767],{"class":34,"line":174},[32,2768,266],{"emptyLinePlaceholder":265},[32,2770,2771],{"class":34,"line":186},[32,2772,2015],{"class":254},[32,2774,2775],{"class":34,"line":320},[32,2776,2020],{"class":254},[32,2778,2779],{"class":34,"line":334},[32,2780,2025],{"class":254},[32,2782,2783],{"class":34,"line":340},[32,2784,266],{"emptyLinePlaceholder":265},[32,2786,2787],{"class":34,"line":349},[32,2788,313],{"class":254},[32,2790,2791],{"class":34,"line":357},[32,2792,266],{"emptyLinePlaceholder":265},[32,2794,2795,2797,2799],{"class":34,"line":363},[32,2796,324],{"class":323},[32,2798,328],{"class":327},[32,2800,2046],{"class":48},[32,2802,2803],{"class":34,"line":374},[32,2804,2051],{"class":254},[32,2806,2807,2809],{"class":34,"line":380},[32,2808,343],{"class":323},[32,2810,346],{"class":327},[32,2812,2813,2815],{"class":34,"line":390},[32,2814,2062],{"class":323},[32,2816,346],{"class":327},[32,2818,2819],{"class":34,"line":396},[32,2820,360],{"class":254},[32,2822,2823,2825,2827],{"class":34,"line":406},[32,2824,366],{"class":323},[32,2826,328],{"class":327},[32,2828,2077],{"class":48},[32,2830,2831],{"class":34,"line":414},[32,2832,377],{"class":254},[32,2834,2835,2837,2839],{"class":34,"line":420},[32,2836,383],{"class":323},[32,2838,328],{"class":327},[32,2840,2090],{"class":48},[32,2842,2843],{"class":34,"line":426},[32,2844,393],{"class":254},[32,2846,2847,2849,2851],{"class":34,"line":432},[32,2848,399],{"class":323},[32,2850,328],{"class":327},[32,2852,2103],{"class":48},[32,2854,2855],{"class":34,"line":441},[32,2856,2857],{"class":254},"    # 拓展\n",[32,2859,2860,2863],{"class":34,"line":449},[32,2861,2862],{"class":323},"    extends",[32,2864,346],{"class":327},[32,2866,2867],{"class":34,"line":455},[32,2868,2869],{"class":254},"       # 调用转码文件 \n",[32,2871,2872,2875,2877],{"class":34,"line":463},[32,2873,2874],{"class":323},"       file",[32,2876,328],{"class":327},[32,2878,2879],{"class":48},"hwaccel.transcoding.yaml\n",[32,2881,2882],{"class":34,"line":469},[32,2883,2884],{"class":254},"       # 请去设置四个中的一个转码方式 [nvenc 英伟达, quicksync 英特尔核显, rkmpp rk系列的arm, vaapi, vaapi-wsl] \n",[32,2886,2887,2890,2892,2895],{"class":34,"line":477},[32,2888,2889],{"class":323},"       service",[32,2891,328],{"class":327},[32,2893,2894],{"class":48},"vaapi",[32,2896,1107],{"class":327},[32,2898,2899,2901],{"class":34,"line":483},[32,2900,540],{"class":323},[32,2902,346],{"class":327},[32,2904,2905],{"class":34,"line":491},[32,2906,2114],{"class":254},[32,2908,2909,2911,2913],{"class":34,"line":497},[32,2910,435],{"class":327},[32,2912,2121],{"class":48},[32,2914,1107],{"class":327},[32,2916,2917,2919],{"class":34,"line":505},[32,2918,435],{"class":327},[32,2920,2130],{"class":48},[32,2922,2923],{"class":34,"line":511},[32,2924,2135],{"class":254},[32,2926,2927,2929],{"class":34,"line":520},[32,2928,2140],{"class":323},[32,2930,346],{"class":327},[32,2932,2933,2935],{"class":34,"line":531},[32,2934,435],{"class":327},[32,2936,2149],{"class":48},[32,2938,2939],{"class":34,"line":537},[32,2940,2154],{"class":254},[32,2942,2943,2945],{"class":34,"line":545},[32,2944,901],{"class":323},[32,2946,346],{"class":327},[32,2948,2949,2951],{"class":34,"line":551},[32,2950,435],{"class":327},[32,2952,2167],{"class":48},[32,2954,2955,2957],{"class":34,"line":557},[32,2956,435],{"class":327},[32,2958,2174],{"class":48},[32,2960,2961],{"class":34,"line":565},[32,2962,2179],{"class":254},[32,2964,2965,2967],{"class":34,"line":571},[32,2966,2184],{"class":323},[32,2968,346],{"class":327},[32,2970,2971,2973,2975],{"class":34,"line":579},[32,2972,2191],{"class":323},[32,2974,328],{"class":327},[32,2976,2196],{"class":189},[32,2978,2979],{"class":34,"line":585},[32,2980,2201],{"class":254},[32,2982,2983,2985],{"class":34,"line":593},[32,2984,619],{"class":323},[32,2986,346],{"class":327},[32,2988,2989,2991],{"class":34,"line":599},[32,2990,435],{"class":327},[32,2992,2214],{"class":48},[32,2994,2995],{"class":34,"line":610},[32,2996,641],{"class":254},[32,2998,2999,3001,3003],{"class":34,"line":616},[32,3000,647],{"class":323},[32,3002,328],{"class":327},[32,3004,652],{"class":48},[32,3006,3007],{"class":34,"line":624},[32,3008,266],{"emptyLinePlaceholder":265},[32,3010,3011,3013],{"class":34,"line":630},[32,3012,2235],{"class":323},[32,3014,346],{"class":327},[32,3016,3017],{"class":34,"line":638},[32,3018,2242],{"class":254},[32,3020,3021,3023,3025],{"class":34,"line":644},[32,3022,366],{"class":323},[32,3024,328],{"class":327},[32,3026,2251],{"class":48},[32,3028,3029],{"class":34,"line":954},[32,3030,377],{"class":254},[32,3032,3033,3035,3037],{"class":34,"line":959},[32,3034,383],{"class":323},[32,3036,328],{"class":327},[32,3038,2264],{"class":48},[32,3040,3041],{"class":34,"line":966},[32,3042,393],{"class":254},[32,3044,3045,3047,3049],{"class":34,"line":971},[32,3046,399],{"class":323},[32,3048,328],{"class":327},[32,3050,2264],{"class":48},[32,3052,3053],{"class":34,"line":978},[32,3054,3055],{"class":254},"    # [armnn arm图形使用, cuda n卡cuda, openvino intel核显]，机器学习调用编码器\n",[32,3057,3058],{"class":34,"line":983},[32,3059,3060],{"class":254},"    # Example tag: ${IMMICH_VERSION:-release}-cuda 在image的镜像最后面添加相应的图形解码，如果想使用cpu则删除就可以\n",[32,3062,3063],{"class":34,"line":992},[32,3064,2857],{"class":254},[32,3066,3067,3069],{"class":34,"line":997},[32,3068,2862],{"class":323},[32,3070,517],{"class":327},[32,3072,3073],{"class":34,"line":1004},[32,3074,3075],{"class":254},"      # 调用转码文件 \n",[32,3077,3078,3081,3083],{"class":34,"line":1009},[32,3079,3080],{"class":323},"      file",[32,3082,328],{"class":327},[32,3084,3085],{"class":48},"hwaccel.ml.yaml\n",[32,3087,3088,3091,3093,3096],{"class":34,"line":1016},[32,3089,3090],{"class":323},"      service",[32,3092,328],{"class":327},[32,3094,3095],{"class":48},"openvino",[32,3097,3098],{"class":254}," # 设置四个图形解码中的一个 [armnn arm图形使用, cuda n卡cuda, openvino 优先使用，intel核显, openvino-wsl intel核显] \n",[32,3100,3101,3103],{"class":34,"line":1021},[32,3102,540],{"class":323},[32,3104,346],{"class":327},[32,3106,3107],{"class":34,"line":1030},[32,3108,2287],{"class":254},[32,3110,3111,3113],{"class":34,"line":1035},[32,3112,435],{"class":327},[32,3114,2294],{"class":48},[32,3116,3117],{"class":34,"line":1043},[32,3118,2135],{"class":254},[32,3120,3121,3123],{"class":34,"line":1048},[32,3122,2140],{"class":323},[32,3124,346],{"class":327},[32,3126,3127,3129],{"class":34,"line":1058},[32,3128,435],{"class":327},[32,3130,2149],{"class":48},[32,3132,3133],{"class":34,"line":1063},[32,3134,2179],{"class":254},[32,3136,3137,3139],{"class":34,"line":1072},[32,3138,2184],{"class":323},[32,3140,346],{"class":327},[32,3142,3143,3145,3147],{"class":34,"line":1077},[32,3144,2191],{"class":323},[32,3146,328],{"class":327},[32,3148,2196],{"class":189},[32,3150,3151],{"class":34,"line":1086},[32,3152,641],{"class":254},[32,3154,3155,3157,3159],{"class":34,"line":1093},[32,3156,647],{"class":323},[32,3158,328],{"class":327},[32,3160,652],{"class":48},[32,3162,3163],{"class":34,"line":1099},[32,3164,266],{"emptyLinePlaceholder":265},[32,3166,3167,3169],{"class":34,"line":1110},[32,3168,2349],{"class":323},[32,3170,346],{"class":327},[32,3172,3173],{"class":34,"line":1117},[32,3174,2242],{"class":254},[32,3176,3177,3179,3181],{"class":34,"line":1123},[32,3178,366],{"class":323},[32,3180,328],{"class":327},[32,3182,2364],{"class":48},[32,3184,3185],{"class":34,"line":1131},[32,3186,377],{"class":254},[32,3188,3189,3191,3193],{"class":34,"line":1136},[32,3190,383],{"class":323},[32,3192,328],{"class":327},[32,3194,2377],{"class":48},[32,3196,3197],{"class":34,"line":1145},[32,3198,393],{"class":254},[32,3200,3201,3203,3205],{"class":34,"line":1150},[32,3202,399],{"class":323},[32,3204,328],{"class":327},[32,3206,2377],{"class":48},[32,3208,3209],{"class":34,"line":1158},[32,3210,2179],{"class":254},[32,3212,3213,3215],{"class":34,"line":1163},[32,3214,2184],{"class":323},[32,3216,346],{"class":327},[32,3218,3219,3221,3223],{"class":34,"line":1169},[32,3220,2404],{"class":323},[32,3222,328],{"class":327},[32,3224,2409],{"class":48},[32,3226,3227],{"class":34,"line":1175},[32,3228,641],{"class":254},[32,3230,3231,3233,3235],{"class":34,"line":1185},[32,3232,647],{"class":323},[32,3234,328],{"class":327},[32,3236,652],{"class":48},[32,3238,3239],{"class":34,"line":1190},[32,3240,266],{"emptyLinePlaceholder":265},[32,3242,3243,3245],{"class":34,"line":1199},[32,3244,2430],{"class":323},[32,3246,346],{"class":327},[32,3248,3249],{"class":34,"line":1204},[32,3250,2242],{"class":254},[32,3252,3253,3255,3257],{"class":34,"line":1213},[32,3254,366],{"class":323},[32,3256,328],{"class":327},[32,3258,2445],{"class":48},[32,3260,3261],{"class":34,"line":1220},[32,3262,377],{"class":254},[32,3264,3265,3267,3269],{"class":34,"line":1226},[32,3266,383],{"class":323},[32,3268,328],{"class":327},[32,3270,2458],{"class":48},[32,3272,3273],{"class":34,"line":1234},[32,3274,393],{"class":254},[32,3276,3277,3279,3281],{"class":34,"line":1241},[32,3278,399],{"class":323},[32,3280,328],{"class":327},[32,3282,2458],{"class":48},[32,3284,3285],{"class":34,"line":1247},[32,3286,2475],{"class":254},[32,3288,3289,3291],{"class":34,"line":1255},[32,3290,409],{"class":323},[32,3292,346],{"class":327},[32,3294,3295],{"class":34,"line":1260},[32,3296,2486],{"class":254},[32,3298,3299,3301,3303],{"class":34,"line":2581},[32,3300,2491],{"class":323},[32,3302,328],{"class":327},[32,3304,2496],{"class":48},[32,3306,3307],{"class":34,"line":2587},[32,3308,2501],{"class":254},[32,3310,3311,3313,3315],{"class":34,"line":2593},[32,3312,2506],{"class":323},[32,3314,328],{"class":327},[32,3316,2511],{"class":48},[32,3318,3319],{"class":34,"line":2599},[32,3320,2516],{"class":254},[32,3322,3323,3325,3327],{"class":34,"line":2605},[32,3324,2521],{"class":323},[32,3326,328],{"class":327},[32,3328,2526],{"class":48},[32,3330,3331,3333,3335],{"class":34,"line":2616},[32,3332,2531],{"class":323},[32,3334,328],{"class":327},[32,3336,2536],{"class":48},[32,3338,3339,3341],{"class":34,"line":2627},[32,3340,540],{"class":323},[32,3342,346],{"class":327},[32,3344,3345],{"class":34,"line":2637},[32,3346,2114],{"class":254},[32,3348,3349,3351],{"class":34,"line":2647},[32,3350,435],{"class":327},[32,3352,2553],{"class":48},[32,3354,3355],{"class":34,"line":2653},[32,3356,2179],{"class":254},[32,3358,3359,3361],{"class":34,"line":2659},[32,3360,2184],{"class":323},[32,3362,346],{"class":327},[32,3364,3365,3367,3369],{"class":34,"line":2665},[32,3366,2404],{"class":323},[32,3368,328],{"class":327},[32,3370,2573],{"class":2572},[32,3372,3373],{"class":34,"line":2671},[32,3374,2578],{"class":48},[32,3376,3377],{"class":34,"line":2677},[32,3378,2584],{"class":48},[32,3380,3381],{"class":34,"line":2683},[32,3382,2590],{"class":48},[32,3384,3385],{"class":34,"line":2689},[32,3386,2596],{"class":48},[32,3388,3389],{"class":34,"line":2694},[32,3390,2602],{"class":48},[32,3392,3394,3396,3398],{"class":34,"line":3393},122,[32,3395,2608],{"class":323},[32,3397,328],{"class":327},[32,3399,2613],{"class":48},[32,3401,3403,3405,3407],{"class":34,"line":3402},123,[32,3404,2619],{"class":323},[32,3406,328],{"class":327},[32,3408,2624],{"class":48},[32,3410,3412,3414,3416],{"class":34,"line":3411},124,[32,3413,2630],{"class":323},[32,3415,328],{"class":327},[32,3417,2613],{"class":48},[32,3419,3421,3423,3425],{"class":34,"line":3420},125,[32,3422,2640],{"class":323},[32,3424,328],{"class":327},[32,3426,2573],{"class":2572},[32,3428,3430],{"class":34,"line":3429},126,[32,3431,2650],{"class":48},[32,3433,3435],{"class":34,"line":3434},127,[32,3436,2656],{"class":48},[32,3438,3440],{"class":34,"line":3439},128,[32,3441,2662],{"class":48},[32,3443,3445],{"class":34,"line":3444},129,[32,3446,2668],{"class":48},[32,3448,3450],{"class":34,"line":3449},130,[32,3451,2674],{"class":48},[32,3453,3455],{"class":34,"line":3454},131,[32,3456,2680],{"class":48},[32,3458,3460],{"class":34,"line":3459},132,[32,3461,2686],{"class":48},[32,3463,3465],{"class":34,"line":3464},133,[32,3466,641],{"class":254},[32,3468,3470,3472,3474],{"class":34,"line":3469},134,[32,3471,647],{"class":323},[32,3473,328],{"class":327},[32,3475,652],{"class":48},[192,3477],{},[199,3479,3481],{"id":3480},"_27-创建-intel-核显-qsvopenvino-文件","2.7 创建 intel 核显 qsv+openvino 文件",[15,3483,3484,3485,1639],{},"众所周知，硬件加速需要硬件支持，假如你的硬件是 intel 11 代以上核显加速，那么你选择本文件。根据自己配置，我们来创建 ",[29,3486,1337],{},[22,3488,3490],{"className":245,"code":3489,"language":247,"meta":27,"style":27},"# 基于官方模板制作\n# 官方文档\n# https:\u002F\u002Fimmich.app\n# 官方compose教程\n# https:\u002F\u002Fimmich.app\u002Fdocs\u002Finstall\u002Fdocker-compose\n# 官方变量说明\n# https:\u002F\u002Fimmich.app\u002Fdocs\u002Finstall\u002Fenvironment-variables\n# 官方CLIP说明\n# https:\u002F\u002Fimmich.app\u002Fdocs\u002Ffeatures\u002Fcommand-line-interface\n# 官方硬件转码说明\n# https:\u002F\u002Fimmich.app\u002Fdocs\u002Ffeatures\u002Fhardware-transcoding\n# https:\u002F\u002Fhub.docker.com\u002Fr\u002Ftensorchord\u002Fpgvecto-rs\n\n# 如果官方的镜像不好拉取，可以选择拉取以下两个镜像作为替代，部署参数完全相同，将模板上对应的镜像进行修改即可，tag也是release\n# https:\u002F\u002Fhub.docker.com\u002Fr\u002Faltran1502\u002Fimmich-server\n# https:\u002F\u002Fhub.docker.com\u002Fr\u002Faltran1502\u002Fimmich-machine-learning\n\n# ---\n\nname: immich\n# 最后编辑时间：2025-02-14\nservices:\n  immich-server:\n    # 镜像地址\n    image: ghcr.nju.edu.cn\u002Fimmich-app\u002Fimmich-server:${IMMICH_VERSION:-release}\n    # 容器名\n    container_name: immich_server\n    # 主机名\n    hostname: immich-server\n    # 拓展\n    extends:\n       # 调用转码文件 \n       file: hwaccel.transcoding.yaml\n      # 请去设置四个中的一个转码方式 [nvenc 英伟达, quicksync 英特尔核显, rkmpp rk系列的arm, vaapi, vaapi-wsl] \n      service: quicksync \n    volumes:\n      # 请去.env修改路径\n      - ${UPLOAD_LOCATION}:\u002Fusr\u002Fsrc\u002Fapp\u002Fupload \n      - \u002Fetc\u002Flocaltime:\u002Fetc\u002Flocaltime:ro\n    # 配置文件，指定版本，指定相册路径，数据库路径\n    env_file:\n      - .env\n    # 调用数据库\n    depends_on:\n      - redis\n      - database\n    # 健康检查\n    healthcheck:\n      disable: false\n    # webUI端口  \n    ports:\n      - 2283:2283\n    # 重启策略，总是重启\n    restart: always\n\n  immich-machine-learning:\n    # 镜像名称\n    image: ghcr.nju.edu.cn\u002Fimmich-app\u002Fimmich-machine-learning:${IMMICH_VERSION:-release}-openvino\n    # 容器名\n    container_name: immich_machine_learning\n    # 主机名\n    hostname: immich_machine_learning\n    # [armnn arm图形使用, cuda n卡cuda, openvino intel核显]，机器学习调用编码器\n    # Example tag: ${IMMICH_VERSION:-release}-cuda 在image的镜像最后面添加相应的图形解码，如果想使用cpu则删除就可以\n    # 拓展\n    extends: \n      # 调用转码文件 \n      file: hwaccel.ml.yaml\n      # 设置四个图形解码中的一个 [armnn arm图形使用, cuda n卡cuda, openvino 优先使用，intel核显, openvino-wsl intel核显] \n      service: openvino \n    volumes:\n      #修改机器学习模型存储路径\n      - \u002Fdocker\u002Fapps\u002Fimmich\u002Fmodel-cache:\u002Fcache\n    # 配置文件，指定版本，指定相册路径，数据库路径\n    env_file:\n      - .env\n    # 健康检查\n    healthcheck:\n      disable: false\n    # 重启策略，总是重启\n    restart: always\n\n  redis:\n    # 镜像名称\n    image: docker.io\u002Fredis:6.2-alpine\n    # 容器名\n    container_name: immich_redis\n    # 主机名\n    hostname: immich_redis\n    # 健康检查\n    healthcheck:\n      test: redis-cli ping || exit 1\n    # 重启策略，总是重启\n    restart: always\n\n  database:\n    # 镜像名称\n    image: docker.io\u002Ftensorchord\u002Fpgvecto-rs:pg14-v0.2.0\n    # 容器名\n    container_name: immich_postgres\n    # 主机名\n    hostname: immich_postgres\n    # 配置文件\n    environment:\n      # 数据库用户\n      POSTGRES_USER: ${DB_USERNAME}\n      # 数据库密码\n      POSTGRES_PASSWORD: ${DB_PASSWORD}\n      # 数据库名称\n      POSTGRES_DB: ${DB_DATABASE_NAME}\n      POSTGRES_INITDB_ARGS: '--data-checksums'\n    volumes:\n      # 请去.env修改路径\n      - ${DB_DATA_LOCATION}:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n    # 健康检查\n    healthcheck:\n      test: >-\n        pg_isready --dbname=\"$${POSTGRES_DB}\" --username=\"$${POSTGRES_USER}\" || exit 1;\n        Chksum=\"$$(psql --dbname=\"$${POSTGRES_DB}\" --username=\"$${POSTGRES_USER}\" --tuples-only --no-align\n        --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')\";\n        echo \"checksum failure count is $$Chksum\";\n        [ \"$$Chksum\" = '0' ] || exit 1\n      interval: 5m\n      start_interval: 30s\n      start_period: 5m\n    command: >-\n      postgres\n      -c shared_preload_libraries=vectors.so\n      -c 'search_path=\"$$user\", public, vectors'\n      -c logging_collector=on\n      -c max_wal_size=2GB\n      -c shared_buffers=512MB\n      -c wal_compression=on\n    # 重启策略，总是重启\n    restart: always\n",[29,3491,3492,3496,3500,3504,3508,3512,3516,3520,3524,3528,3532,3536,3540,3544,3548,3552,3556,3560,3564,3568,3576,3580,3586,3592,3596,3604,3608,3616,3620,3628,3632,3638,3642,3650,3655,3666,3672,3676,3684,3690,3694,3700,3706,3710,3716,3722,3728,3732,3738,3746,3750,3756,3762,3766,3774,3778,3784,3788,3796,3800,3808,3812,3820,3824,3828,3832,3838,3842,3850,3855,3865,3871,3875,3881,3885,3891,3897,3901,3907,3915,3919,3927,3931,3937,3941,3949,3953,3961,3965,3973,3977,3983,3991,3995,4003,4007,4013,4017,4025,4029,4037,4041,4049,4053,4059,4063,4071,4075,4083,4087,4095,4103,4109,4113,4119,4123,4129,4137,4141,4145,4149,4153,4157,4165,4173,4181,4189,4193,4197,4201,4205,4209,4213,4217,4221],{"__ignoreMap":27},[32,3493,3494],{"class":34,"line":35},[32,3495,1952],{"class":254},[32,3497,3498],{"class":34,"line":42},[32,3499,255],{"class":254},[32,3501,3502],{"class":34,"line":52},[32,3503,1961],{"class":254},[32,3505,3506],{"class":34,"line":67},[32,3507,1966],{"class":254},[32,3509,3510],{"class":34,"line":80},[32,3511,1971],{"class":254},[32,3513,3514],{"class":34,"line":93},[32,3515,1976],{"class":254},[32,3517,3518],{"class":34,"line":103},[32,3519,1981],{"class":254},[32,3521,3522],{"class":34,"line":115},[32,3523,1986],{"class":254},[32,3525,3526],{"class":34,"line":129},[32,3527,1991],{"class":254},[32,3529,3530],{"class":34,"line":141},[32,3531,1996],{"class":254},[32,3533,3534],{"class":34,"line":153},[32,3535,2001],{"class":254},[32,3537,3538],{"class":34,"line":163},[32,3539,2006],{"class":254},[32,3541,3542],{"class":34,"line":174},[32,3543,266],{"emptyLinePlaceholder":265},[32,3545,3546],{"class":34,"line":186},[32,3547,2015],{"class":254},[32,3549,3550],{"class":34,"line":320},[32,3551,2020],{"class":254},[32,3553,3554],{"class":34,"line":334},[32,3555,2025],{"class":254},[32,3557,3558],{"class":34,"line":340},[32,3559,266],{"emptyLinePlaceholder":265},[32,3561,3562],{"class":34,"line":349},[32,3563,313],{"class":254},[32,3565,3566],{"class":34,"line":357},[32,3567,266],{"emptyLinePlaceholder":265},[32,3569,3570,3572,3574],{"class":34,"line":363},[32,3571,324],{"class":323},[32,3573,328],{"class":327},[32,3575,2046],{"class":48},[32,3577,3578],{"class":34,"line":374},[32,3579,2051],{"class":254},[32,3581,3582,3584],{"class":34,"line":380},[32,3583,343],{"class":323},[32,3585,346],{"class":327},[32,3587,3588,3590],{"class":34,"line":390},[32,3589,2062],{"class":323},[32,3591,346],{"class":327},[32,3593,3594],{"class":34,"line":396},[32,3595,360],{"class":254},[32,3597,3598,3600,3602],{"class":34,"line":406},[32,3599,366],{"class":323},[32,3601,328],{"class":327},[32,3603,2077],{"class":48},[32,3605,3606],{"class":34,"line":414},[32,3607,377],{"class":254},[32,3609,3610,3612,3614],{"class":34,"line":420},[32,3611,383],{"class":323},[32,3613,328],{"class":327},[32,3615,2090],{"class":48},[32,3617,3618],{"class":34,"line":426},[32,3619,393],{"class":254},[32,3621,3622,3624,3626],{"class":34,"line":432},[32,3623,399],{"class":323},[32,3625,328],{"class":327},[32,3627,2103],{"class":48},[32,3629,3630],{"class":34,"line":441},[32,3631,2857],{"class":254},[32,3633,3634,3636],{"class":34,"line":449},[32,3635,2862],{"class":323},[32,3637,346],{"class":327},[32,3639,3640],{"class":34,"line":455},[32,3641,2869],{"class":254},[32,3643,3644,3646,3648],{"class":34,"line":463},[32,3645,2874],{"class":323},[32,3647,328],{"class":327},[32,3649,2879],{"class":48},[32,3651,3652],{"class":34,"line":469},[32,3653,3654],{"class":254},"      # 请去设置四个中的一个转码方式 [nvenc 英伟达, quicksync 英特尔核显, rkmpp rk系列的arm, vaapi, vaapi-wsl] \n",[32,3656,3657,3659,3661,3664],{"class":34,"line":477},[32,3658,3090],{"class":323},[32,3660,328],{"class":327},[32,3662,3663],{"class":48},"quicksync",[32,3665,1107],{"class":327},[32,3667,3668,3670],{"class":34,"line":483},[32,3669,540],{"class":323},[32,3671,346],{"class":327},[32,3673,3674],{"class":34,"line":491},[32,3675,2114],{"class":254},[32,3677,3678,3680,3682],{"class":34,"line":497},[32,3679,435],{"class":327},[32,3681,2121],{"class":48},[32,3683,1107],{"class":327},[32,3685,3686,3688],{"class":34,"line":505},[32,3687,435],{"class":327},[32,3689,2130],{"class":48},[32,3691,3692],{"class":34,"line":511},[32,3693,2135],{"class":254},[32,3695,3696,3698],{"class":34,"line":520},[32,3697,2140],{"class":323},[32,3699,346],{"class":327},[32,3701,3702,3704],{"class":34,"line":531},[32,3703,435],{"class":327},[32,3705,2149],{"class":48},[32,3707,3708],{"class":34,"line":537},[32,3709,2154],{"class":254},[32,3711,3712,3714],{"class":34,"line":545},[32,3713,901],{"class":323},[32,3715,346],{"class":327},[32,3717,3718,3720],{"class":34,"line":551},[32,3719,435],{"class":327},[32,3721,2167],{"class":48},[32,3723,3724,3726],{"class":34,"line":557},[32,3725,435],{"class":327},[32,3727,2174],{"class":48},[32,3729,3730],{"class":34,"line":565},[32,3731,2179],{"class":254},[32,3733,3734,3736],{"class":34,"line":571},[32,3735,2184],{"class":323},[32,3737,346],{"class":327},[32,3739,3740,3742,3744],{"class":34,"line":579},[32,3741,2191],{"class":323},[32,3743,328],{"class":327},[32,3745,2196],{"class":189},[32,3747,3748],{"class":34,"line":585},[32,3749,2201],{"class":254},[32,3751,3752,3754],{"class":34,"line":593},[32,3753,619],{"class":323},[32,3755,346],{"class":327},[32,3757,3758,3760],{"class":34,"line":599},[32,3759,435],{"class":327},[32,3761,2214],{"class":48},[32,3763,3764],{"class":34,"line":610},[32,3765,641],{"class":254},[32,3767,3768,3770,3772],{"class":34,"line":616},[32,3769,647],{"class":323},[32,3771,328],{"class":327},[32,3773,652],{"class":48},[32,3775,3776],{"class":34,"line":624},[32,3777,266],{"emptyLinePlaceholder":265},[32,3779,3780,3782],{"class":34,"line":630},[32,3781,2235],{"class":323},[32,3783,346],{"class":327},[32,3785,3786],{"class":34,"line":638},[32,3787,2242],{"class":254},[32,3789,3790,3792,3794],{"class":34,"line":644},[32,3791,366],{"class":323},[32,3793,328],{"class":327},[32,3795,2251],{"class":48},[32,3797,3798],{"class":34,"line":954},[32,3799,377],{"class":254},[32,3801,3802,3804,3806],{"class":34,"line":959},[32,3803,383],{"class":323},[32,3805,328],{"class":327},[32,3807,2264],{"class":48},[32,3809,3810],{"class":34,"line":966},[32,3811,393],{"class":254},[32,3813,3814,3816,3818],{"class":34,"line":971},[32,3815,399],{"class":323},[32,3817,328],{"class":327},[32,3819,2264],{"class":48},[32,3821,3822],{"class":34,"line":978},[32,3823,3055],{"class":254},[32,3825,3826],{"class":34,"line":983},[32,3827,3060],{"class":254},[32,3829,3830],{"class":34,"line":992},[32,3831,2857],{"class":254},[32,3833,3834,3836],{"class":34,"line":997},[32,3835,2862],{"class":323},[32,3837,517],{"class":327},[32,3839,3840],{"class":34,"line":1004},[32,3841,3075],{"class":254},[32,3843,3844,3846,3848],{"class":34,"line":1009},[32,3845,3080],{"class":323},[32,3847,328],{"class":327},[32,3849,3085],{"class":48},[32,3851,3852],{"class":34,"line":1016},[32,3853,3854],{"class":254},"      # 设置四个图形解码中的一个 [armnn arm图形使用, cuda n卡cuda, openvino 优先使用，intel核显, openvino-wsl intel核显] \n",[32,3856,3857,3859,3861,3863],{"class":34,"line":1021},[32,3858,3090],{"class":323},[32,3860,328],{"class":327},[32,3862,3095],{"class":48},[32,3864,1107],{"class":327},[32,3866,3867,3869],{"class":34,"line":1030},[32,3868,540],{"class":323},[32,3870,346],{"class":327},[32,3872,3873],{"class":34,"line":1035},[32,3874,2287],{"class":254},[32,3876,3877,3879],{"class":34,"line":1043},[32,3878,435],{"class":327},[32,3880,2294],{"class":48},[32,3882,3883],{"class":34,"line":1048},[32,3884,2135],{"class":254},[32,3886,3887,3889],{"class":34,"line":1058},[32,3888,2140],{"class":323},[32,3890,346],{"class":327},[32,3892,3893,3895],{"class":34,"line":1063},[32,3894,435],{"class":327},[32,3896,2149],{"class":48},[32,3898,3899],{"class":34,"line":1072},[32,3900,2179],{"class":254},[32,3902,3903,3905],{"class":34,"line":1077},[32,3904,2184],{"class":323},[32,3906,346],{"class":327},[32,3908,3909,3911,3913],{"class":34,"line":1086},[32,3910,2191],{"class":323},[32,3912,328],{"class":327},[32,3914,2196],{"class":189},[32,3916,3917],{"class":34,"line":1093},[32,3918,641],{"class":254},[32,3920,3921,3923,3925],{"class":34,"line":1099},[32,3922,647],{"class":323},[32,3924,328],{"class":327},[32,3926,652],{"class":48},[32,3928,3929],{"class":34,"line":1110},[32,3930,266],{"emptyLinePlaceholder":265},[32,3932,3933,3935],{"class":34,"line":1117},[32,3934,2349],{"class":323},[32,3936,346],{"class":327},[32,3938,3939],{"class":34,"line":1123},[32,3940,2242],{"class":254},[32,3942,3943,3945,3947],{"class":34,"line":1131},[32,3944,366],{"class":323},[32,3946,328],{"class":327},[32,3948,2364],{"class":48},[32,3950,3951],{"class":34,"line":1136},[32,3952,377],{"class":254},[32,3954,3955,3957,3959],{"class":34,"line":1145},[32,3956,383],{"class":323},[32,3958,328],{"class":327},[32,3960,2377],{"class":48},[32,3962,3963],{"class":34,"line":1150},[32,3964,393],{"class":254},[32,3966,3967,3969,3971],{"class":34,"line":1158},[32,3968,399],{"class":323},[32,3970,328],{"class":327},[32,3972,2377],{"class":48},[32,3974,3975],{"class":34,"line":1163},[32,3976,2179],{"class":254},[32,3978,3979,3981],{"class":34,"line":1169},[32,3980,2184],{"class":323},[32,3982,346],{"class":327},[32,3984,3985,3987,3989],{"class":34,"line":1175},[32,3986,2404],{"class":323},[32,3988,328],{"class":327},[32,3990,2409],{"class":48},[32,3992,3993],{"class":34,"line":1185},[32,3994,641],{"class":254},[32,3996,3997,3999,4001],{"class":34,"line":1190},[32,3998,647],{"class":323},[32,4000,328],{"class":327},[32,4002,652],{"class":48},[32,4004,4005],{"class":34,"line":1199},[32,4006,266],{"emptyLinePlaceholder":265},[32,4008,4009,4011],{"class":34,"line":1204},[32,4010,2430],{"class":323},[32,4012,346],{"class":327},[32,4014,4015],{"class":34,"line":1213},[32,4016,2242],{"class":254},[32,4018,4019,4021,4023],{"class":34,"line":1220},[32,4020,366],{"class":323},[32,4022,328],{"class":327},[32,4024,2445],{"class":48},[32,4026,4027],{"class":34,"line":1226},[32,4028,377],{"class":254},[32,4030,4031,4033,4035],{"class":34,"line":1234},[32,4032,383],{"class":323},[32,4034,328],{"class":327},[32,4036,2458],{"class":48},[32,4038,4039],{"class":34,"line":1241},[32,4040,393],{"class":254},[32,4042,4043,4045,4047],{"class":34,"line":1247},[32,4044,399],{"class":323},[32,4046,328],{"class":327},[32,4048,2458],{"class":48},[32,4050,4051],{"class":34,"line":1255},[32,4052,2475],{"class":254},[32,4054,4055,4057],{"class":34,"line":1260},[32,4056,409],{"class":323},[32,4058,346],{"class":327},[32,4060,4061],{"class":34,"line":2581},[32,4062,2486],{"class":254},[32,4064,4065,4067,4069],{"class":34,"line":2587},[32,4066,2491],{"class":323},[32,4068,328],{"class":327},[32,4070,2496],{"class":48},[32,4072,4073],{"class":34,"line":2593},[32,4074,2501],{"class":254},[32,4076,4077,4079,4081],{"class":34,"line":2599},[32,4078,2506],{"class":323},[32,4080,328],{"class":327},[32,4082,2511],{"class":48},[32,4084,4085],{"class":34,"line":2605},[32,4086,2516],{"class":254},[32,4088,4089,4091,4093],{"class":34,"line":2616},[32,4090,2521],{"class":323},[32,4092,328],{"class":327},[32,4094,2526],{"class":48},[32,4096,4097,4099,4101],{"class":34,"line":2627},[32,4098,2531],{"class":323},[32,4100,328],{"class":327},[32,4102,2536],{"class":48},[32,4104,4105,4107],{"class":34,"line":2637},[32,4106,540],{"class":323},[32,4108,346],{"class":327},[32,4110,4111],{"class":34,"line":2647},[32,4112,2114],{"class":254},[32,4114,4115,4117],{"class":34,"line":2653},[32,4116,435],{"class":327},[32,4118,2553],{"class":48},[32,4120,4121],{"class":34,"line":2659},[32,4122,2179],{"class":254},[32,4124,4125,4127],{"class":34,"line":2665},[32,4126,2184],{"class":323},[32,4128,346],{"class":327},[32,4130,4131,4133,4135],{"class":34,"line":2671},[32,4132,2404],{"class":323},[32,4134,328],{"class":327},[32,4136,2573],{"class":2572},[32,4138,4139],{"class":34,"line":2677},[32,4140,2578],{"class":48},[32,4142,4143],{"class":34,"line":2683},[32,4144,2584],{"class":48},[32,4146,4147],{"class":34,"line":2689},[32,4148,2590],{"class":48},[32,4150,4151],{"class":34,"line":2694},[32,4152,2596],{"class":48},[32,4154,4155],{"class":34,"line":3393},[32,4156,2602],{"class":48},[32,4158,4159,4161,4163],{"class":34,"line":3402},[32,4160,2608],{"class":323},[32,4162,328],{"class":327},[32,4164,2613],{"class":48},[32,4166,4167,4169,4171],{"class":34,"line":3411},[32,4168,2619],{"class":323},[32,4170,328],{"class":327},[32,4172,2624],{"class":48},[32,4174,4175,4177,4179],{"class":34,"line":3420},[32,4176,2630],{"class":323},[32,4178,328],{"class":327},[32,4180,2613],{"class":48},[32,4182,4183,4185,4187],{"class":34,"line":3429},[32,4184,2640],{"class":323},[32,4186,328],{"class":327},[32,4188,2573],{"class":2572},[32,4190,4191],{"class":34,"line":3434},[32,4192,2650],{"class":48},[32,4194,4195],{"class":34,"line":3439},[32,4196,2656],{"class":48},[32,4198,4199],{"class":34,"line":3444},[32,4200,2662],{"class":48},[32,4202,4203],{"class":34,"line":3449},[32,4204,2668],{"class":48},[32,4206,4207],{"class":34,"line":3454},[32,4208,2674],{"class":48},[32,4210,4211],{"class":34,"line":3459},[32,4212,2680],{"class":48},[32,4214,4215],{"class":34,"line":3464},[32,4216,2686],{"class":48},[32,4218,4219],{"class":34,"line":3469},[32,4220,641],{"class":254},[32,4222,4224,4226,4228],{"class":34,"line":4223},135,[32,4225,647],{"class":323},[32,4227,328],{"class":327},[32,4229,652],{"class":48},[192,4231],{},[199,4233,4235],{"id":4234},"_29-创建-n-卡-nvenccuda-文件","2.9 创建 N 卡 nvenc+cuda 文件",[15,4237,4238,4239,1639],{},"众所周知，硬件加速需要硬件支持，假如你的硬件是 N 卡英伟达 cuda 加速，那么你选择本文件。根据自己配置，我们来创建 ",[29,4240,1337],{},[22,4242,4244],{"className":245,"code":4243,"language":247,"meta":27,"style":27},"# 基于官方模板制作\n# 官方文档\n# https:\u002F\u002Fimmich.app\n# 官方compose教程\n# https:\u002F\u002Fimmich.app\u002Fdocs\u002Finstall\u002Fdocker-compose\n# 官方变量说明\n# https:\u002F\u002Fimmich.app\u002Fdocs\u002Finstall\u002Fenvironment-variables\n# 官方CLIP说明\n# https:\u002F\u002Fimmich.app\u002Fdocs\u002Ffeatures\u002Fcommand-line-interface\n# 官方硬件转码说明\n# https:\u002F\u002Fimmich.app\u002Fdocs\u002Ffeatures\u002Fhardware-transcoding\n# https:\u002F\u002Fhub.docker.com\u002Fr\u002Ftensorchord\u002Fpgvecto-rs\n\n# 如果官方的镜像不好拉取，可以选择拉取以下两个镜像作为替代，部署参数完全相同，将模板上对应的镜像进行修改即可，tag也是release\n# https:\u002F\u002Fhub.docker.com\u002Fr\u002Faltran1502\u002Fimmich-server\n# https:\u002F\u002Fhub.docker.com\u002Fr\u002Faltran1502\u002Fimmich-machine-learning\n\n# ---\n\nname: immich\n# 最后编辑时间：2025-02-14\nservices:\n  immich-server:\n    # 镜像地址\n    image: ghcr.nju.edu.cn\u002Fimmich-app\u002Fimmich-server:${IMMICH_VERSION:-release}\n    # 容器名\n    container_name: immich_server\n    # 主机名\n    hostname: immich-server\n    extends:\n       file: hwaccel.transcoding.yml\n       # 请去设置四个中的一个转码方式 [nvenc 英伟达, quicksync 英特尔核显, rkmpp rk系列的arm, vaapi, vaapi-wsl] \n       service: nvenc \n    volumes:\n      # 请去.env修改路径\n      - ${UPLOAD_LOCATION}:\u002Fusr\u002Fsrc\u002Fapp\u002Fupload \n      - \u002Fetc\u002Flocaltime:\u002Fetc\u002Flocaltime:ro\n    # 配置文件，指定版本，指定相册路径，数据库路径\n    env_file:\n      - .env\n    # 调用数据库\n    depends_on:\n      - redis\n      - database\n    # 健康检查\n    healthcheck:\n      disable: false\n    # webUI端口  \n    ports:\n      - 2283:2283\n    # 重启策略，总是重启\n    restart: always\n\n  immich-machine-learning:\n    # 镜像名称\n    image: ghcr.nju.edu.cn\u002Fimmich-app\u002Fimmich-machine-learning:${IMMICH_VERSION:-release}-openvino\n    # 容器名\n    container_name: immich_machine_learning\n    # 主机名\n    hostname: immich_machine_learning\n    # [armnn arm图形使用, cuda n卡cuda, openvino intel核显]，机器学习调用编码器\n    # Example tag: ${IMMICH_VERSION:-release}-cuda 在image的镜像最后面添加相应的图形解码，如果想使用cpu则删除就可以\n    # 拓展\n    extends: \n      # 调用转码文件 \n       file: hwaccel.ml.yaml\n       service: cuda # 设置四个图形解码中的一个 [armnn arm图形使用, cuda n卡cuda, openvino 优先使用，intel核显, openvino-wsl intel核显] \n    volumes:\n      #修改机器学习模型存储路径\n      - \u002Fdocker\u002Fapps\u002Fimmich\u002Fmodel-cache:\u002Fcache\n    # 配置文件，指定版本，指定相册路径，数据库路径\n    env_file:\n      - .env\n    # 健康检查\n    healthcheck:\n      disable: false\n    # 重启策略，总是重启\n    restart: always\n\n  redis:\n    # 镜像名称\n    image: docker.io\u002Fredis:6.2-alpine\n    # 容器名\n    container_name: immich_redis\n    # 主机名\n    hostname: immich_redis\n    # 健康检查\n    healthcheck:\n      test: redis-cli ping || exit 1\n    # 重启策略，总是重启\n    restart: always\n\n  database:\n    # 镜像名称\n    image: docker.io\u002Ftensorchord\u002Fpgvecto-rs:pg14-v0.2.0\n    # 容器名\n    container_name: immich_postgres\n    # 主机名\n    hostname: immich_postgres\n    # 配置文件\n    environment:\n      # 数据库用户\n      POSTGRES_USER: ${DB_USERNAME}\n      # 数据库密码\n      POSTGRES_PASSWORD: ${DB_PASSWORD}\n      # 数据库名称\n      POSTGRES_DB: ${DB_DATABASE_NAME}\n      POSTGRES_INITDB_ARGS: '--data-checksums'\n    volumes:\n      # 请去.env修改路径\n      - ${DB_DATA_LOCATION}:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n    # 健康检查\n    healthcheck:\n      test: >-\n        pg_isready --dbname=\"$${POSTGRES_DB}\" --username=\"$${POSTGRES_USER}\" || exit 1;\n        Chksum=\"$$(psql --dbname=\"$${POSTGRES_DB}\" --username=\"$${POSTGRES_USER}\" --tuples-only --no-align\n        --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')\";\n        echo \"checksum failure count is $$Chksum\";\n        [ \"$$Chksum\" = '0' ] || exit 1\n      interval: 5m\n      start_interval: 30s\n      start_period: 5m\n    command: >-\n      postgres\n      -c shared_preload_libraries=vectors.so\n      -c 'search_path=\"$$user\", public, vectors'\n      -c logging_collector=on\n      -c max_wal_size=2GB\n      -c shared_buffers=512MB\n      -c wal_compression=on\n    # 重启策略，总是重启\n    restart: always\n",[29,4245,4246,4250,4254,4258,4262,4266,4270,4274,4278,4282,4286,4290,4294,4298,4302,4306,4310,4314,4318,4322,4330,4334,4340,4346,4350,4358,4362,4370,4374,4382,4388,4397,4401,4412,4418,4422,4430,4436,4440,4446,4452,4456,4462,4468,4474,4478,4484,4492,4496,4502,4508,4512,4520,4524,4530,4534,4542,4546,4554,4558,4566,4570,4574,4578,4584,4588,4596,4607,4613,4617,4623,4627,4633,4639,4643,4649,4657,4661,4669,4673,4679,4683,4691,4695,4703,4707,4715,4719,4725,4733,4737,4745,4749,4755,4759,4767,4771,4779,4783,4791,4795,4801,4805,4813,4817,4825,4829,4837,4845,4851,4855,4861,4865,4871,4879,4883,4887,4891,4895,4899,4907,4915,4923,4931,4935,4939,4943,4947,4951,4955,4959,4963],{"__ignoreMap":27},[32,4247,4248],{"class":34,"line":35},[32,4249,1952],{"class":254},[32,4251,4252],{"class":34,"line":42},[32,4253,255],{"class":254},[32,4255,4256],{"class":34,"line":52},[32,4257,1961],{"class":254},[32,4259,4260],{"class":34,"line":67},[32,4261,1966],{"class":254},[32,4263,4264],{"class":34,"line":80},[32,4265,1971],{"class":254},[32,4267,4268],{"class":34,"line":93},[32,4269,1976],{"class":254},[32,4271,4272],{"class":34,"line":103},[32,4273,1981],{"class":254},[32,4275,4276],{"class":34,"line":115},[32,4277,1986],{"class":254},[32,4279,4280],{"class":34,"line":129},[32,4281,1991],{"class":254},[32,4283,4284],{"class":34,"line":141},[32,4285,1996],{"class":254},[32,4287,4288],{"class":34,"line":153},[32,4289,2001],{"class":254},[32,4291,4292],{"class":34,"line":163},[32,4293,2006],{"class":254},[32,4295,4296],{"class":34,"line":174},[32,4297,266],{"emptyLinePlaceholder":265},[32,4299,4300],{"class":34,"line":186},[32,4301,2015],{"class":254},[32,4303,4304],{"class":34,"line":320},[32,4305,2020],{"class":254},[32,4307,4308],{"class":34,"line":334},[32,4309,2025],{"class":254},[32,4311,4312],{"class":34,"line":340},[32,4313,266],{"emptyLinePlaceholder":265},[32,4315,4316],{"class":34,"line":349},[32,4317,313],{"class":254},[32,4319,4320],{"class":34,"line":357},[32,4321,266],{"emptyLinePlaceholder":265},[32,4323,4324,4326,4328],{"class":34,"line":363},[32,4325,324],{"class":323},[32,4327,328],{"class":327},[32,4329,2046],{"class":48},[32,4331,4332],{"class":34,"line":374},[32,4333,2051],{"class":254},[32,4335,4336,4338],{"class":34,"line":380},[32,4337,343],{"class":323},[32,4339,346],{"class":327},[32,4341,4342,4344],{"class":34,"line":390},[32,4343,2062],{"class":323},[32,4345,346],{"class":327},[32,4347,4348],{"class":34,"line":396},[32,4349,360],{"class":254},[32,4351,4352,4354,4356],{"class":34,"line":406},[32,4353,366],{"class":323},[32,4355,328],{"class":327},[32,4357,2077],{"class":48},[32,4359,4360],{"class":34,"line":414},[32,4361,377],{"class":254},[32,4363,4364,4366,4368],{"class":34,"line":420},[32,4365,383],{"class":323},[32,4367,328],{"class":327},[32,4369,2090],{"class":48},[32,4371,4372],{"class":34,"line":426},[32,4373,393],{"class":254},[32,4375,4376,4378,4380],{"class":34,"line":432},[32,4377,399],{"class":323},[32,4379,328],{"class":327},[32,4381,2103],{"class":48},[32,4383,4384,4386],{"class":34,"line":441},[32,4385,2862],{"class":323},[32,4387,346],{"class":327},[32,4389,4390,4392,4394],{"class":34,"line":449},[32,4391,2874],{"class":323},[32,4393,328],{"class":327},[32,4395,4396],{"class":48},"hwaccel.transcoding.yml\n",[32,4398,4399],{"class":34,"line":455},[32,4400,2884],{"class":254},[32,4402,4403,4405,4407,4410],{"class":34,"line":463},[32,4404,2889],{"class":323},[32,4406,328],{"class":327},[32,4408,4409],{"class":48},"nvenc",[32,4411,1107],{"class":327},[32,4413,4414,4416],{"class":34,"line":469},[32,4415,540],{"class":323},[32,4417,346],{"class":327},[32,4419,4420],{"class":34,"line":477},[32,4421,2114],{"class":254},[32,4423,4424,4426,4428],{"class":34,"line":483},[32,4425,435],{"class":327},[32,4427,2121],{"class":48},[32,4429,1107],{"class":327},[32,4431,4432,4434],{"class":34,"line":491},[32,4433,435],{"class":327},[32,4435,2130],{"class":48},[32,4437,4438],{"class":34,"line":497},[32,4439,2135],{"class":254},[32,4441,4442,4444],{"class":34,"line":505},[32,4443,2140],{"class":323},[32,4445,346],{"class":327},[32,4447,4448,4450],{"class":34,"line":511},[32,4449,435],{"class":327},[32,4451,2149],{"class":48},[32,4453,4454],{"class":34,"line":520},[32,4455,2154],{"class":254},[32,4457,4458,4460],{"class":34,"line":531},[32,4459,901],{"class":323},[32,4461,346],{"class":327},[32,4463,4464,4466],{"class":34,"line":537},[32,4465,435],{"class":327},[32,4467,2167],{"class":48},[32,4469,4470,4472],{"class":34,"line":545},[32,4471,435],{"class":327},[32,4473,2174],{"class":48},[32,4475,4476],{"class":34,"line":551},[32,4477,2179],{"class":254},[32,4479,4480,4482],{"class":34,"line":557},[32,4481,2184],{"class":323},[32,4483,346],{"class":327},[32,4485,4486,4488,4490],{"class":34,"line":565},[32,4487,2191],{"class":323},[32,4489,328],{"class":327},[32,4491,2196],{"class":189},[32,4493,4494],{"class":34,"line":571},[32,4495,2201],{"class":254},[32,4497,4498,4500],{"class":34,"line":579},[32,4499,619],{"class":323},[32,4501,346],{"class":327},[32,4503,4504,4506],{"class":34,"line":585},[32,4505,435],{"class":327},[32,4507,2214],{"class":48},[32,4509,4510],{"class":34,"line":593},[32,4511,641],{"class":254},[32,4513,4514,4516,4518],{"class":34,"line":599},[32,4515,647],{"class":323},[32,4517,328],{"class":327},[32,4519,652],{"class":48},[32,4521,4522],{"class":34,"line":610},[32,4523,266],{"emptyLinePlaceholder":265},[32,4525,4526,4528],{"class":34,"line":616},[32,4527,2235],{"class":323},[32,4529,346],{"class":327},[32,4531,4532],{"class":34,"line":624},[32,4533,2242],{"class":254},[32,4535,4536,4538,4540],{"class":34,"line":630},[32,4537,366],{"class":323},[32,4539,328],{"class":327},[32,4541,2251],{"class":48},[32,4543,4544],{"class":34,"line":638},[32,4545,377],{"class":254},[32,4547,4548,4550,4552],{"class":34,"line":644},[32,4549,383],{"class":323},[32,4551,328],{"class":327},[32,4553,2264],{"class":48},[32,4555,4556],{"class":34,"line":954},[32,4557,393],{"class":254},[32,4559,4560,4562,4564],{"class":34,"line":959},[32,4561,399],{"class":323},[32,4563,328],{"class":327},[32,4565,2264],{"class":48},[32,4567,4568],{"class":34,"line":966},[32,4569,3055],{"class":254},[32,4571,4572],{"class":34,"line":971},[32,4573,3060],{"class":254},[32,4575,4576],{"class":34,"line":978},[32,4577,2857],{"class":254},[32,4579,4580,4582],{"class":34,"line":983},[32,4581,2862],{"class":323},[32,4583,517],{"class":327},[32,4585,4586],{"class":34,"line":992},[32,4587,3075],{"class":254},[32,4589,4590,4592,4594],{"class":34,"line":997},[32,4591,2874],{"class":323},[32,4593,328],{"class":327},[32,4595,3085],{"class":48},[32,4597,4598,4600,4602,4605],{"class":34,"line":1004},[32,4599,2889],{"class":323},[32,4601,328],{"class":327},[32,4603,4604],{"class":48},"cuda",[32,4606,3098],{"class":254},[32,4608,4609,4611],{"class":34,"line":1009},[32,4610,540],{"class":323},[32,4612,346],{"class":327},[32,4614,4615],{"class":34,"line":1016},[32,4616,2287],{"class":254},[32,4618,4619,4621],{"class":34,"line":1021},[32,4620,435],{"class":327},[32,4622,2294],{"class":48},[32,4624,4625],{"class":34,"line":1030},[32,4626,2135],{"class":254},[32,4628,4629,4631],{"class":34,"line":1035},[32,4630,2140],{"class":323},[32,4632,346],{"class":327},[32,4634,4635,4637],{"class":34,"line":1043},[32,4636,435],{"class":327},[32,4638,2149],{"class":48},[32,4640,4641],{"class":34,"line":1048},[32,4642,2179],{"class":254},[32,4644,4645,4647],{"class":34,"line":1058},[32,4646,2184],{"class":323},[32,4648,346],{"class":327},[32,4650,4651,4653,4655],{"class":34,"line":1063},[32,4652,2191],{"class":323},[32,4654,328],{"class":327},[32,4656,2196],{"class":189},[32,4658,4659],{"class":34,"line":1072},[32,4660,641],{"class":254},[32,4662,4663,4665,4667],{"class":34,"line":1077},[32,4664,647],{"class":323},[32,4666,328],{"class":327},[32,4668,652],{"class":48},[32,4670,4671],{"class":34,"line":1086},[32,4672,266],{"emptyLinePlaceholder":265},[32,4674,4675,4677],{"class":34,"line":1093},[32,4676,2349],{"class":323},[32,4678,346],{"class":327},[32,4680,4681],{"class":34,"line":1099},[32,4682,2242],{"class":254},[32,4684,4685,4687,4689],{"class":34,"line":1110},[32,4686,366],{"class":323},[32,4688,328],{"class":327},[32,4690,2364],{"class":48},[32,4692,4693],{"class":34,"line":1117},[32,4694,377],{"class":254},[32,4696,4697,4699,4701],{"class":34,"line":1123},[32,4698,383],{"class":323},[32,4700,328],{"class":327},[32,4702,2377],{"class":48},[32,4704,4705],{"class":34,"line":1131},[32,4706,393],{"class":254},[32,4708,4709,4711,4713],{"class":34,"line":1136},[32,4710,399],{"class":323},[32,4712,328],{"class":327},[32,4714,2377],{"class":48},[32,4716,4717],{"class":34,"line":1145},[32,4718,2179],{"class":254},[32,4720,4721,4723],{"class":34,"line":1150},[32,4722,2184],{"class":323},[32,4724,346],{"class":327},[32,4726,4727,4729,4731],{"class":34,"line":1158},[32,4728,2404],{"class":323},[32,4730,328],{"class":327},[32,4732,2409],{"class":48},[32,4734,4735],{"class":34,"line":1163},[32,4736,641],{"class":254},[32,4738,4739,4741,4743],{"class":34,"line":1169},[32,4740,647],{"class":323},[32,4742,328],{"class":327},[32,4744,652],{"class":48},[32,4746,4747],{"class":34,"line":1175},[32,4748,266],{"emptyLinePlaceholder":265},[32,4750,4751,4753],{"class":34,"line":1185},[32,4752,2430],{"class":323},[32,4754,346],{"class":327},[32,4756,4757],{"class":34,"line":1190},[32,4758,2242],{"class":254},[32,4760,4761,4763,4765],{"class":34,"line":1199},[32,4762,366],{"class":323},[32,4764,328],{"class":327},[32,4766,2445],{"class":48},[32,4768,4769],{"class":34,"line":1204},[32,4770,377],{"class":254},[32,4772,4773,4775,4777],{"class":34,"line":1213},[32,4774,383],{"class":323},[32,4776,328],{"class":327},[32,4778,2458],{"class":48},[32,4780,4781],{"class":34,"line":1220},[32,4782,393],{"class":254},[32,4784,4785,4787,4789],{"class":34,"line":1226},[32,4786,399],{"class":323},[32,4788,328],{"class":327},[32,4790,2458],{"class":48},[32,4792,4793],{"class":34,"line":1234},[32,4794,2475],{"class":254},[32,4796,4797,4799],{"class":34,"line":1241},[32,4798,409],{"class":323},[32,4800,346],{"class":327},[32,4802,4803],{"class":34,"line":1247},[32,4804,2486],{"class":254},[32,4806,4807,4809,4811],{"class":34,"line":1255},[32,4808,2491],{"class":323},[32,4810,328],{"class":327},[32,4812,2496],{"class":48},[32,4814,4815],{"class":34,"line":1260},[32,4816,2501],{"class":254},[32,4818,4819,4821,4823],{"class":34,"line":2581},[32,4820,2506],{"class":323},[32,4822,328],{"class":327},[32,4824,2511],{"class":48},[32,4826,4827],{"class":34,"line":2587},[32,4828,2516],{"class":254},[32,4830,4831,4833,4835],{"class":34,"line":2593},[32,4832,2521],{"class":323},[32,4834,328],{"class":327},[32,4836,2526],{"class":48},[32,4838,4839,4841,4843],{"class":34,"line":2599},[32,4840,2531],{"class":323},[32,4842,328],{"class":327},[32,4844,2536],{"class":48},[32,4846,4847,4849],{"class":34,"line":2605},[32,4848,540],{"class":323},[32,4850,346],{"class":327},[32,4852,4853],{"class":34,"line":2616},[32,4854,2114],{"class":254},[32,4856,4857,4859],{"class":34,"line":2627},[32,4858,435],{"class":327},[32,4860,2553],{"class":48},[32,4862,4863],{"class":34,"line":2637},[32,4864,2179],{"class":254},[32,4866,4867,4869],{"class":34,"line":2647},[32,4868,2184],{"class":323},[32,4870,346],{"class":327},[32,4872,4873,4875,4877],{"class":34,"line":2653},[32,4874,2404],{"class":323},[32,4876,328],{"class":327},[32,4878,2573],{"class":2572},[32,4880,4881],{"class":34,"line":2659},[32,4882,2578],{"class":48},[32,4884,4885],{"class":34,"line":2665},[32,4886,2584],{"class":48},[32,4888,4889],{"class":34,"line":2671},[32,4890,2590],{"class":48},[32,4892,4893],{"class":34,"line":2677},[32,4894,2596],{"class":48},[32,4896,4897],{"class":34,"line":2683},[32,4898,2602],{"class":48},[32,4900,4901,4903,4905],{"class":34,"line":2689},[32,4902,2608],{"class":323},[32,4904,328],{"class":327},[32,4906,2613],{"class":48},[32,4908,4909,4911,4913],{"class":34,"line":2694},[32,4910,2619],{"class":323},[32,4912,328],{"class":327},[32,4914,2624],{"class":48},[32,4916,4917,4919,4921],{"class":34,"line":3393},[32,4918,2630],{"class":323},[32,4920,328],{"class":327},[32,4922,2613],{"class":48},[32,4924,4925,4927,4929],{"class":34,"line":3402},[32,4926,2640],{"class":323},[32,4928,328],{"class":327},[32,4930,2573],{"class":2572},[32,4932,4933],{"class":34,"line":3411},[32,4934,2650],{"class":48},[32,4936,4937],{"class":34,"line":3420},[32,4938,2656],{"class":48},[32,4940,4941],{"class":34,"line":3429},[32,4942,2662],{"class":48},[32,4944,4945],{"class":34,"line":3434},[32,4946,2668],{"class":48},[32,4948,4949],{"class":34,"line":3439},[32,4950,2674],{"class":48},[32,4952,4953],{"class":34,"line":3444},[32,4954,2680],{"class":48},[32,4956,4957],{"class":34,"line":3449},[32,4958,2686],{"class":48},[32,4960,4961],{"class":34,"line":3454},[32,4962,641],{"class":254},[32,4964,4965,4967,4969],{"class":34,"line":3459},[32,4966,647],{"class":323},[32,4968,328],{"class":327},[32,4970,652],{"class":48},[192,4972],{},[199,4974,4976],{"id":4975},"_29-immich-总结","2.9 immich 总结",[15,4978,4979],{},"根据自己的配置创建好这 4 个文件，我们直接把 immich 这个文件夹上传到我们对应的目录，然后运行 compose 项目就行。",[15,4981,4982],{},[231,4983],{"alt":27,"src":4984},"https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780569242961.avif",[192,4986],{},[11,4988,4990],{"id":4989},"_3-ai-大模型配置","3 AI 大模型配置",[199,4992,4994],{"id":4993},"_31-mt-photos-ai-大模型配置","3.1 MT Photos AI 大模型配置",[15,4996,4997],{},"mt photos 的 ai 大模型配置在官方文档都有介绍，想用高德地图也有教程文档，我这里就不多说了。",[192,4999],{},[199,5001,5003],{"id":5002},"_32-immich-ai-大模型配置","3.2 immich AI 大模型配置",[15,5005,5006,5007,5010],{},"immich 基本都是英文文档，首先主要是智能搜索中的中文模型。安装好 immich 后，依次打开",[225,5008,5009],{},"设置→机器学习设置→智能搜索→CLIP模型","修改为以下的代码。",[22,5012,5015],{"className":5013,"code":5014,"language":1368},[1366],"XLM-Roberta-Large-Vit-B-16Plus\n",[29,5016,5014],{"__ignoreMap":27},[15,5018,5019,5020,5023,5024,5029],{},"其次，就是需要改成中文地图。依次打开",[225,5021,5022],{},"设置→地图与GPS设置→地图→浅色模式和深色模式","都修改为以下的代码，其他设置根据自己需求修改，",[209,5025,5028],{"href":5026,"rel":5027},"https:\u002F\u002Fcloud.maptiler.com\u002F",[213],"以下的 aip 是通过一个地图网站自己编辑的","。",[22,5031,5034],{"className":5032,"code":5033,"language":1368},[1366],"https:\u002F\u002Fapi.maptiler.com\u002Fmaps\u002F5f203af3-3f1d-4a6d-b1ab-612ec5b58ceb\u002Fstyle.json?key=18pTCzPiaEcdoABeRqDh\n",[29,5035,5033],{"__ignoreMap":27},[5037,5038,5039],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":27,"searchDepth":42,"depth":42,"links":5041},[5042,5043,5047,5058],{"id":13,"depth":42,"text":13},{"id":196,"depth":42,"text":197,"children":5044},[5045,5046],{"id":201,"depth":52,"text":202},{"id":238,"depth":52,"text":239},{"id":1300,"depth":42,"text":1301,"children":5048},[5049,5050,5051,5052,5053,5054,5055,5056,5057],{"id":1304,"depth":52,"text":1305},{"id":1355,"depth":52,"text":1356},{"id":1375,"depth":52,"text":1376},{"id":1632,"depth":52,"text":1633},{"id":1936,"depth":52,"text":1937},{"id":2705,"depth":52,"text":2706},{"id":3480,"depth":52,"text":3481},{"id":4234,"depth":52,"text":4235},{"id":4975,"depth":52,"text":4976},{"id":4989,"depth":42,"text":4990,"children":5059},[5060,5061],{"id":4993,"depth":52,"text":4994},{"id":5002,"depth":52,"text":5003},"docker",null,"2025-08-05","采用 docker 搭建 AI 相册",false,"md","https:\u002F\u002Fimg.nw177.cn\u002Fblog\u002F2026\u002F06\u002F04\u002F1780562873352.avif",{"published":5070},"2025-08-11","\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F03.容器项目-相册类",{"title":5,"description":5065},"blog\u002F10-技术专栏\u002F10-docker\u002F03.容器项目&相册类",[5062,247,13],"kxyN5TFf_KdIheIl1gL0-SlCLf6Axw29JL5ak9PwUFg",[5077,5081,5085,5089,5092,5095,5099,5102,5106,5110,5114,5118,5122,5126,5130,5134,5138,5142,5146,5149,5153,5157,5161,5165,5168,5172,5176,5180,5184,5188,5192,5196,5200,5204,5208,5212,5216,5219,5223,5227,5231,5235,5238,5241,5242,5245,5248,5251,5254,5257,5260,5263,5266,5269,5272,5275,5278,5281,5284,5287,5290],{"path":5078,"title":5079,"date":5080},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F16.IPv6与DNS的分手协议","IPv6 与 DNS 的分手协议","2026-10-02",{"path":5082,"title":5083,"date":5084},"\u002Fblog\u002F10-技术专栏\u002F50-AI\u002F04.我的-AI-入坑记","我的 AI 入坑记","2026-09-24",{"path":5086,"title":5087,"date":5088},"\u002Fblog\u002F10-技术专栏\u002F50-AI\u002F01.用-Docker-部署-Ollama-与-Open-WebUI-搭建本地大模型","用 Docker 部署 Ollama 与 Open WebUI 搭建本地大模型","2026-09-23",{"path":5090,"title":5091,"date":5088},"\u002Fblog\u002F10-技术专栏\u002F50-AI\u002F02.用-New-API-搭建统一-LLM-网关与-Lucky-反代外网访问","用 New API 搭建统一 LLM 网关与 Lucky 反代外网访问",{"path":5093,"title":5094,"date":5088},"\u002Fblog\u002F10-技术专栏\u002F50-AI\u002F03.用-Dify-搭建本地知识库让-AI-读懂你写的博客","用 Dify 搭建本地知识库，让 AI 读懂你写的博客",{"path":5096,"title":5097,"date":5098},"\u002Fblog\u002F20-生活碎片\u002F03-2026年秋季计划","2026 年秋季计划","2026-09-19",{"path":5100,"title":5101,"date":5098},"\u002Fblog\u002F30-学习笔记\u002F02.Python入门书单","Python 入门书单：从第一行代码到写出真正的程序",{"path":5103,"title":5104,"date":5105},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F09-Cloudflare-低延迟接入方案","Cloudflare 低延迟接入方案","2026-07-22 03:17:28",{"path":5107,"title":5108,"date":5109},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F08-Cloudflare-ImgBed-免费私有图床完整部署手册","Cloudflare ImgBed 免费私有图床完整部署手册","2026-07-19 02:09:08",{"path":5111,"title":5112,"date":5113},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F07-腾讯云-EdgeOne-边缘函数实现七牛-S3-随机图床-API","腾讯云 EdgeOne 边缘函数实现七牛云 & S3 存储随机图床 API","2026-07-13 21:25:48",{"path":5115,"title":5116,"date":5117},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F06-腾讯-EdgeOne-部署-Twikoo-评论系统指南","腾讯EdgeOne部署Twikoo评论系统指南","2026-06-14 17:41:11",{"path":5119,"title":5120,"date":5121},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F05-OpenList-接入-S3-对象存储完整使用教程","OpenList 接入 S3 对象存储完整使用教程","2026-06-11 13:08:07",{"path":5123,"title":5124,"date":5125},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F04-Cloudflare-R2-图床与全球加速方案","Cloudflare R2 图床与全球加速方案","2026-06-09 13:07:35",{"path":5127,"title":5128,"date":5129},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F03-免费图床与CDN加速方案","免费图床与 CDN 加速方案","2026-06-09",{"path":5131,"title":5132,"date":5133},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F02-零基础优雅搭建静态博客全教程","零基础优雅搭建静态博客全教程","2026-06-04",{"path":5135,"title":5136,"date":5137},"\u002Fblog\u002F10-技术专栏\u002F40-WebsiteBuilding\u002F01-远古产物—博客","赛博空间的私人岛屿：博客架构与风格美学","2026-06-03",{"path":5139,"title":5140,"date":5141},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F15.关于NAT回流与内网域名直连的终极指南","关于 NAT 回流与内网域名直连的终极指南","2026-05-13",{"path":5143,"title":5144,"date":5145},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F14.飞牛安全访问与Lucky反代雷池防护","飞牛安全访问与 Lucky 反代雷池防护","2026-02-03",{"path":5147,"title":5148,"date":5145},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F18.一键DD纯净系统脚本","一键 DD 纯净系统脚本",{"path":5150,"title":5151,"date":5152},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F17.Ventoy多系统启动盘制作与使用全指南","Ventoy 多系统启动盘制作与使用全指南","2026-02-02",{"path":5154,"title":5155,"date":5156},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F16.Emby元数据匹配与中文命名规范","Emby 元数据匹配与中文命名规范","2026-02-01",{"path":5158,"title":5159,"date":5160},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F15.基于PVE系统安装LXC-debian","基于 PVE 系统安装 LXC-debian","2026-01-19",{"path":5162,"title":5163,"date":5164},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F13.Lucky反向代理终极指南","Lucky 反向代理终极指南","2026-01-16",{"path":5166,"title":5167,"date":5164},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F14.OEC盒子Armbian刷机指南","OEC 盒子 Armbian 刷机指南",{"path":5169,"title":5170,"date":5171},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F13.oec-fnOS安装","OEC-Turbo (RK3566) 安装飞牛 OS","2026-01-15",{"path":5173,"title":5174,"date":5175},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F12.新的篇章，debian12的配置","新的篇章，debian12 的配置","2026-01-14",{"path":5177,"title":5178,"date":5179},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F11.飞牛OS安装后必要配置","飞牛 OS 安装后必要配置","2026-01-06",{"path":5181,"title":5182,"date":5183},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F11.NAS-导航页的终极形态","告别繁琐配置：NAS 导航页的终极形态 —— 从 Sun-Panel 到 FlatNAS","2026-01-05",{"path":5185,"title":5186,"date":5187},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F10.LogVar-弹幕-API-部署指南","LogVar 弹幕 API  (纯本地缓存版) 部署指南","2025-12-30",{"path":5189,"title":5190,"date":5191},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F10.基于Lucky与QMediaSync的飞牛远程媒体访问","基于 Lucky 与 QMediaSync 的飞牛远程媒体访问","2025-12-26",{"path":5193,"title":5194,"date":5195},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F09.新的篇章，PVE虚拟机","新的篇章，PVE虚拟机","2025-12-21",{"path":5197,"title":5198,"date":5199},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F08.Linux系统，音响有底噪","Linux 系统，音响有底噪怎么办？","2025-12-17",{"path":5201,"title":5202,"date":5203},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F07.飞牛OS的安装","飞牛 OS 的安装","2025-12-14",{"path":5205,"title":5206,"date":5207},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F06.Debian13换源","Debian13 换源","2025-11-29",{"path":5209,"title":5210,"date":5211},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F05.Kodi-CoreELEC安装指南","Kodi & CoreELEC 安装指南","2025-11-21",{"path":5213,"title":5214,"date":5215},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F09.兰空图床和高清图标库","兰空图床和高清图标库","2025-11-15",{"path":5217,"title":5218,"date":5215},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F04.N1盒子Armbian刷机与配置","N1 盒子 Armbian 刷机与配置",{"path":5220,"title":5221,"date":5222},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F08.你是否需要一个图床？","你是否需要一个图床？","2025-11-14",{"path":5224,"title":5225,"date":5226},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F03.飞牛NAS第三方应用商店安装","飞牛 NAS 第三方应用商店 (FnDepot) 安装指南","2025-10-13",{"path":5228,"title":5229,"date":5230},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F02.Hills播放器-Windows-安卓","Hills 播放器（Windows + 安卓）","2025-09-24",{"path":5232,"title":5233,"date":5234},"\u002Fblog\u002F10-技术专栏\u002F30-Linux\u002F01.一行代码降低服务器功耗","一行代码降低服务器功耗","2025-08-19",{"path":5236,"title":5237,"date":5064},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F01.容器-docker-docker-compose","容器 & docker & docker-compose",{"path":5239,"title":5240,"date":5064},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F02.容器项目-传输类","容器项目&传输类",{"path":5071,"title":5,"date":5064},{"path":5243,"title":5244,"date":5064},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F04.容器项目-媒体类","容器项目&媒体类",{"path":5246,"title":5247,"date":5064},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F05.Emby自有授权媒体库（一）","Emby 自有授权媒体库（一）",{"path":5249,"title":5250,"date":5064},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F06.Emby自有授权媒体库（二）","Emby 自有授权媒体库（二）",{"path":5252,"title":5253,"date":5064},"\u002Fblog\u002F10-技术专栏\u002F10-docker\u002F07.Adguard-Home去广告","Adguard Home 去广告",{"path":5255,"title":5256,"date":5064},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F01.新的篇章，软路由","新的篇章，软路由",{"path":5258,"title":5259,"date":5064},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F02.如何玩公网，怎么远程访问（一）","如何玩公网，怎么远程访问（一）",{"path":5261,"title":5262,"date":5064},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F03.如何玩公网，怎么远程访问（二）","如何玩公网，怎么远程访问（二）",{"path":5264,"title":5265,"date":5064},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F04.如何玩公网，怎么远程访问（三）","如何玩公网，怎么远程访问（三）",{"path":5267,"title":5268,"date":5064},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F05.免费域名与远程访问","免费域名与远程访问",{"path":5270,"title":5271,"date":5064},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F06.没有公网如何远程访问","没有公网如何远程访问",{"path":5273,"title":5274,"date":5064},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F07.爱快与OpenWRT双软路由MAC地址重复问题修正","爱快与 OpenWRT 双软路由MAC地址重复问题修正",{"path":5276,"title":5277,"date":5064},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F08.OpenWRT扩容","OpenWRT 扩容",{"path":5279,"title":5280,"date":5064},"\u002Fblog\u002F10-技术专栏\u002F20-network\u002F09.OpenWRT旁路由一条龙教程","OpenWRT 旁路由一条龙教程",{"path":5282,"title":5283,"date":5064},"\u002Fblog\u002F20-生活碎片\u002F02.在裂缝中种满阳光","让灵魂带着光行走：在裂缝中种满太阳",{"path":5285,"title":5286,"date":5064},"\u002Fblog\u002F30-学习笔记\u002F01.Typora学习笔记","Typora学习笔记",{"path":5288,"title":5289,"date":5064},"\u002Fblog\u002F30-学习笔记\u002F02.Markdown-拓展","Markdown 拓展",{"path":5291,"title":5292,"date":5293},"\u002Fblog\u002F20-生活碎片\u002F01.拥抱生活中的光与热","拥抱生活中的光与热","2025-07-05",1791304411491]