From 53bd2cf7e498f6f665a5dd12fe6f8ec727c8c922 Mon Sep 17 00:00:00 2001 From: wanghe-fit2cloud Date: Tue, 2 Jul 2024 17:13:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=BA=94=E7=94=A8=E5=AE=89=E8=A3=85=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/dataease/2.7.1/docker-compose.yml | 1 + apps/discourse/3.2.2/data.yml | 321 ----------------------- apps/discourse/3.2.2/docker-compose.yml | 111 -------- apps/discourse/README.md | 5 - apps/discourse/data.yml | 19 -- apps/discourse/logo.png | Bin 8538 -> 0 bytes apps/gotify/2.5.0/docker-compose.yml | 1 - apps/gotify/README.md | 38 +-- apps/gotify/data.yml | 8 +- apps/homepage/0.9.2/data.yml | 32 +-- apps/homepage/0.9.2/docker-compose.yml | 6 +- apps/homepage/README.md | 14 +- apps/homepage/data.yml | 16 +- apps/homepage/logo.png | Bin 30860 -> 4166 bytes apps/lobe-chat/1.1.16/docker-compose.yml | 1 - apps/lobe-chat/README.md | 24 +- apps/lobe-chat/data.yml | 4 +- apps/ntfy/2.11.0/docker-compose.yml | 1 - apps/ntfy/README.md | 35 +-- apps/openldap/2.6.8/data.yml | 64 ++--- apps/openldap/data.yml | 9 +- 21 files changed, 116 insertions(+), 594 deletions(-) delete mode 100644 apps/discourse/3.2.2/data.yml delete mode 100644 apps/discourse/3.2.2/docker-compose.yml delete mode 100644 apps/discourse/README.md delete mode 100644 apps/discourse/data.yml delete mode 100644 apps/discourse/logo.png diff --git a/apps/dataease/2.7.1/docker-compose.yml b/apps/dataease/2.7.1/docker-compose.yml index 8cabcfedd..808a1e569 100644 --- a/apps/dataease/2.7.1/docker-compose.yml +++ b/apps/dataease/2.7.1/docker-compose.yml @@ -11,6 +11,7 @@ services: - ./data/static-resource:/opt/dataease2.0/data/static-resource - ./cache:/opt/dataease2.0/cache - ./data/geo:/opt/dataease2.0/data/geo + - ./data/exportData:/opt/dataease2.0/data/exportData environment: PANEL_DB_HOST: ${PANEL_DB_HOST} PANEL_DB_PORT: ${PANEL_DB_PORT} diff --git a/apps/discourse/3.2.2/data.yml b/apps/discourse/3.2.2/data.yml deleted file mode 100644 index d114e3d1c..000000000 --- a/apps/discourse/3.2.2/data.yml +++ /dev/null @@ -1,321 +0,0 @@ -additionalProperties: - formFields: - - default: "40268" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "plugins public/backups public/uploads" - disabled: true - envKey: DISCOURSE_DATA_TO_PERSIST - labelEn: Data to Persist - labelZh: 持久化数据 - required: true - type: text - - default: "no" - edit: true - envKey: DISCOURSE_ENABLE_HTTPS - labelEn: Enable HTTPS - labelZh: 启用 HTTPS - required: true - type: select - values: - - label: "yes" - value: "yes" - - label: "no" - value: "no" - - default: "80" - edit: true - envKey: DISCOURSE_EXTERNAL_HTTP_PORT_NUMBER - labelEn: External HTTP Port - labelZh: 外部 HTTP 端口 - required: true - type: number - - default: "443" - edit: true - envKey: DISCOURSE_EXTERNAL_HTTPS_PORT_NUMBER - labelEn: External HTTPS Port - labelZh: 外部 HTTPS 端口 - required: true - type: number - - default: "www.example.com" - edit: true - envKey: DISCOURSE_HOST - labelEn: Discourse Host - labelZh: Discourse 主机 - required: true - type: text - - default: "3000" - edit: true - envKey: DISCOURSE_PORT_NUMBER - labelEn: Discourse Port - labelZh: Discourse 端口 - required: true - type: number - - default: "" - edit: true - envKey: DISCOURSE_SKIP_BOOTSTRAP - labelEn: Skip Bootstrap - labelZh: 跳过引导 - required: false - type: text - - default: "My site!" - edit: true - envKey: DISCOURSE_SITE_NAME - labelEn: Site Name - labelZh: 网站名称 - required: true - type: text - - default: "production" - edit: true - envKey: DISCOURSE_ENV - labelEn: Environment - labelZh: 环境 - required: true - type: select - values: - - label: development - value: "development" - - label: production - value: "production" - - label: test - value: "test" - - default: "yes" - edit: true - envKey: DISCOURSE_PRECOMPILE_ASSETS - labelEn: Precompile Assets - labelZh: 预编译资产 - required: true - type: select - values: - - label: "yes" - value: "yes" - - label: "no" - value: "no" - - default: "no" - edit: true - envKey: DISCOURSE_ENABLE_CONF_PERSISTENCE - labelEn: Enable Config Persistence - labelZh: 启用配置持久化 - required: true - type: select - values: - - label: "yes" - value: "yes" - - label: "no" - value: "no" - - default: "yes" - edit: true - envKey: DISCOURSE_EXTRA_CONF_CONTENT - labelEn: Extra Config Content - labelZh: 额外配置内容 - required: true - type: select - values: - - label: "yes" - value: "yes" - - label: "no" - value: "no" - - default: "direct" - edit: true - envKey: DISCOURSE_PASSENGER_SPAWN_METHOD - labelEn: Passenger Spawn Method - labelZh: Passenger 启动方法 - required: true - type: select - values: - - label: "direct" - value: "direct" - - label: "smart" - value: "smart" - - default: "" - edit: true - envKey: DISCOURSE_PASSENGER_EXTRA_FLAGS - labelEn: Passenger Extra Flags - labelZh: Passenger 额外标志 - required: false - type: text - - default: "siteadmin" - edit: true - envKey: DISCOURSE_USERNAME - labelEn: Username - labelZh: 用户名 - required: true - type: text - - default: "siteadmin12345" - edit: true - envKey: DISCOURSE_PASSWORD - labelEn: Password - labelZh: 密码 - random: true - required: true - rule: paramComplexity - type: password - - default: "admin@localhost.com" - edit: true - envKey: DISCOURSE_EMAIL - labelEn: Email - labelZh: 电子邮箱 - required: true - type: text - - default: "Admin" - edit: true - envKey: DISCOURSE_FIRST_NAME - labelEn: First Name - labelZh: 名 - required: true - type: text - - default: "User" - edit: true - envKey: DISCOURSE_LAST_NAME - labelEn: Last Name - labelZh: 姓 - required: true - type: text - - default: "" - edit: true - envKey: DISCOURSE_SMTP_HOST - labelEn: SMTP Host - labelZh: SMTP 主机 - required: false - type: text - - default: "" - edit: true - envKey: DISCOURSE_SMTP_PORT_NUMBER - labelEn: SMTP Port - labelZh: SMTP 端口 - required: false - type: number - - default: "" - edit: true - envKey: DISCOURSE_SMTP_USER - labelEn: SMTP User - labelZh: SMTP 用户名 - required: false - type: text - - default: "" - edit: true - envKey: DISCOURSE_SMTP_PASSWORD - labelEn: SMTP Password - labelZh: SMTP 密码 - required: false - type: password - - default: "" - edit: true - envKey: DISCOURSE_SMTP_PROTOCOL - labelEn: SMTP Protocol - labelZh: SMTP 协议 - required: false - type: text - - default: "login" - edit: true - envKey: DISCOURSE_SMTP_AUTH - labelEn: SMTP Auth - labelZh: SMTP 认证 - required: true - type: select - values: - - label: login - value: "login" - - label: plain - value: "plain" - - label: cram_md5 - value: "cram_md5" - - default: "" - edit: true - envKey: DISCOURSE_SMTP_OPEN_TIMEOUT - labelEn: SMTP Open Timeout - labelZh: SMTP 打开超时 - required: false - type: number - - default: "" - edit: true - envKey: DISCOURSE_SMTP_READ_TIMEOUT - labelEn: SMTP Read Timeout - labelZh: SMTP 读取超时 - required: false - type: number - - default: "" - edit: true - envKey: PANEL_DB_HOST - key: postgresql - labelEn: Database Service - labelZh: 数据库服务 - required: true - type: service - - default: "5432" - edit: true - envKey: PANEL_DB_PORT - labelEn: Database Port Number - labelZh: 数据库端口号 - required: true - rule: paramPort - type: number - - default: "bitnami_discourse" - envKey: PANEL_DB_NAME - labelEn: Database - labelZh: 数据库名 - random: true - required: true - rule: paramCommon - type: text - - default: "bn_discourse" - envKey: PANEL_DB_USER - labelEn: User - labelZh: 数据库用户 - random: true - required: true - rule: paramCommon - type: text - - default: discourse - envKey: PANEL_DB_USER_PASSWORD - labelEn: Password - labelZh: 数据库用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: "" - edit: true - envKey: REDIS_HOST - key: redis - labelEn: Redis Service - labelZh: Redis服务 - required: true - type: service - - default: "6379" - edit: true - envKey: REDIS_PORT - labelEn: Redis Service Port - labelZh: Redis服务端口 - required: true - rule: paramPort - type: number - - default: "" - envKey: PANEL_REDIS_ROOT_PASSWORD - labelEn: Redis Password - labelZh: Redis 密码 - required: false - type: password - - default: "no" - edit: true - envKey: DISCOURSE_REDIS_USE_SSL - labelEn: Redis Use SSL - labelZh: Redis 使用 SSL - required: true - type: select - values: - - label: "yes" - value: "yes" - - label: "no" - value: "no" - - default: "hstore,pg_trgm" - disabled: true - envKey: POSTGRESQL_CLIENT_CREATE_DATABASE_EXTENSIONS - labelEn: PostgreSQL Client Create Database Extensions - labelZh: PostgreSQL 客户端创建数据库扩展 - required: true - type: text diff --git a/apps/discourse/3.2.2/docker-compose.yml b/apps/discourse/3.2.2/docker-compose.yml deleted file mode 100644 index c5b226a07..000000000 --- a/apps/discourse/3.2.2/docker-compose.yml +++ /dev/null @@ -1,111 +0,0 @@ -services: - discourse: - image: "bitnami/discourse:3.2.2" - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:${DISCOURSE_PORT_NUMBER}" - volumes: - - ./data/discourse:/bitnami/discourse - environment: - - DISCOURSE_DATA_TO_PERSIST=${DISCOURSE_DATA_TO_PERSIST} - - DISCOURSE_ENABLE_HTTPS=${DISCOURSE_ENABLE_HTTPS} - - DISCOURSE_EXTERNAL_HTTP_PORT_NUMBER=${DISCOURSE_EXTERNAL_HTTP_PORT_NUMBER} - - DISCOURSE_EXTERNAL_HTTPS_PORT_NUMBER=${DISCOURSE_EXTERNAL_HTTPS_PORT_NUMBER} - - DISCOURSE_HOST=${DISCOURSE_HOST} - - DISCOURSE_PORT_NUMBER=${DISCOURSE_PORT_NUMBER} - - DISCOURSE_SKIP_BOOTSTRAP=${DISCOURSE_SKIP_BOOTSTRAP} - - DISCOURSE_SITE_NAME=${DISCOURSE_SITE_NAME} - - DISCOURSE_ENV=${DISCOURSE_ENV} - - DISCOURSE_PRECOMPILE_ASSETS=${DISCOURSE_PRECOMPILE_ASSETS} - - DISCOURSE_ENABLE_CONF_PERSISTENCE=${DISCOURSE_ENABLE_CONF_PERSISTENCE} - - DISCOURSE_EXTRA_CONF_CONTENT=${DISCOURSE_EXTRA_CONF_CONTENT} - - DISCOURSE_PASSENGER_SPAWN_METHOD=${DISCOURSE_PASSENGER_SPAWN_METHOD} - - DISCOURSE_PASSENGER_EXTRA_FLAGS=${DISCOURSE_PASSENGER_EXTRA_FLAGS} - - DISCOURSE_USERNAME=${DISCOURSE_USERNAME} - - DISCOURSE_PASSWORD=${DISCOURSE_PASSWORD} - - DISCOURSE_EMAIL=${DISCOURSE_EMAIL} - - DISCOURSE_FIRST_NAME=${DISCOURSE_FIRST_NAME} - - DISCOURSE_LAST_NAME=${DISCOURSE_LAST_NAME} - - DISCOURSE_SMTP_HOST=${DISCOURSE_SMTP_HOST} - - DISCOURSE_SMTP_PORT_NUMBER=${DISCOURSE_SMTP_PORT_NUMBER} - - DISCOURSE_SMTP_USER=${DISCOURSE_SMTP_USER} - - DISCOURSE_SMTP_PASSWORD=${DISCOURSE_SMTP_PASSWORD} - - DISCOURSE_SMTP_PROTOCOL=${DISCOURSE_SMTP_PROTOCOL} - - DISCOURSE_SMTP_AUTH=${DISCOURSE_SMTP_AUTH} - - DISCOURSE_SMTP_OPEN_TIMEOUT=${DISCOURSE_SMTP_OPEN_TIMEOUT} - - DISCOURSE_SMTP_READ_TIMEOUT=${DISCOURSE_SMTP_READ_TIMEOUT} - - DISCOURSE_DATABASE_HOST=${PANEL_DB_HOST} - - DISCOURSE_DATABASE_PORT_NUMBER=${PANEL_DB_PORT} - - DISCOURSE_DATABASE_NAME=${PANEL_DB_NAME} - - DISCOURSE_DATABASE_USER=${PANEL_DB_USER} - - DISCOURSE_DATABASE_PASSWORD=${PANEL_DB_USER_PASSWORD} - - DISCOURSE_DB_BACKUP_HOST=${PANEL_DB_HOST} - - DISCOURSE_DB_BACKUP_PORT=${PANEL_DB_PORT} - - DISCOURSE_REDIS_HOST=${REDIS_HOST} - - DISCOURSE_REDIS_PORT_NUMBER=${REDIS_PORT} - - DISCOURSE_REDIS_PASSWORD=${PANEL_REDIS_ROOT_PASSWORD} - - DISCOURSE_REDIS_USE_SSL=${DISCOURSE_REDIS_USE_SSL} - - POSTGRESQL_CLIENT_POSTGRES_USER=${PANEL_DB_USER} - - POSTGRESQL_CLIENT_POSTGRES_PASSWORD=${PANEL_DB_USER_PASSWORD} - - POSTGRESQL_CLIENT_CREATE_DATABASE_NAME=${PANEL_DB_NAME} - - POSTGRESQL_CLIENT_CREATE_DATABASE_EXTENSIONS=${POSTGRESQL_CLIENT_CREATE_DATABASE_EXTENSIONS} - labels: - createdBy: "Apps" - - discourse-sidekiq: - image: "bitnami/discourse:3.2.2" - container_name: ${CONTAINER_NAME}-sidekiq - restart: always - networks: - - 1panel-network - volumes: - - ./data/sidekiq:/bitnami/discourse - command: /opt/bitnami/scripts/discourse-sidekiq/run.sh - environment: - - DISCOURSE_DATA_TO_PERSIST=${DISCOURSE_DATA_TO_PERSIST} - - DISCOURSE_ENABLE_HTTPS=${DISCOURSE_ENABLE_HTTPS} - - DISCOURSE_EXTERNAL_HTTP_PORT_NUMBER=${DISCOURSE_EXTERNAL_HTTP_PORT_NUMBER} - - DISCOURSE_EXTERNAL_HTTPS_PORT_NUMBER=${DISCOURSE_EXTERNAL_HTTPS_PORT_NUMBER} - - DISCOURSE_HOST=${DISCOURSE_HOST} - - DISCOURSE_PORT_NUMBER=${DISCOURSE_PORT_NUMBER} - - DISCOURSE_SKIP_BOOTSTRAP=${DISCOURSE_SKIP_BOOTSTRAP} - - DISCOURSE_SITE_NAME=${DISCOURSE_SITE_NAME} - - DISCOURSE_ENV=${DISCOURSE_ENV} - - DISCOURSE_PRECOMPILE_ASSETS=${DISCOURSE_PRECOMPILE_ASSETS} - - DISCOURSE_ENABLE_CONF_PERSISTENCE=${DISCOURSE_ENABLE_CONF_PERSISTENCE} - - DISCOURSE_EXTRA_CONF_CONTENT=${DISCOURSE_EXTRA_CONF_CONTENT} - - DISCOURSE_PASSENGER_SPAWN_METHOD=${DISCOURSE_PASSENGER_SPAWN_METHOD} - - DISCOURSE_PASSENGER_EXTRA_FLAGS=${DISCOURSE_PASSENGER_EXTRA_FLAGS} - - DISCOURSE_USERNAME=${DISCOURSE_USERNAME} - - DISCOURSE_PASSWORD=${DISCOURSE_PASSWORD} - - DISCOURSE_EMAIL=${DISCOURSE_EMAIL} - - DISCOURSE_FIRST_NAME=${DISCOURSE_FIRST_NAME} - - DISCOURSE_LAST_NAME=${DISCOURSE_LAST_NAME} - - DISCOURSE_SMTP_HOST=${DISCOURSE_SMTP_HOST} - - DISCOURSE_SMTP_PORT_NUMBER=${DISCOURSE_SMTP_PORT_NUMBER} - - DISCOURSE_SMTP_USER=${DISCOURSE_SMTP_USER} - - DISCOURSE_SMTP_PASSWORD=${DISCOURSE_SMTP_PASSWORD} - - DISCOURSE_SMTP_PROTOCOL=${DISCOURSE_SMTP_PROTOCOL} - - DISCOURSE_SMTP_AUTH=${DISCOURSE_SMTP_AUTH} - - DISCOURSE_SMTP_OPEN_TIMEOUT=${DISCOURSE_SMTP_OPEN_TIMEOUT} - - DISCOURSE_SMTP_READ_TIMEOUT=${DISCOURSE_SMTP_READ_TIMEOUT} - - DISCOURSE_DATABASE_HOST=${PANEL_DB_HOST} - - DISCOURSE_DATABASE_PORT_NUMBER=${PANEL_DB_PORT} - - DISCOURSE_DATABASE_NAME=${PANEL_DB_NAME} - - DISCOURSE_DATABASE_USER=${PANEL_DB_USER} - - DISCOURSE_DATABASE_PASSWORD=${PANEL_DB_USER_PASSWORD} - - DISCOURSE_DB_BACKUP_HOST=${PANEL_DB_HOST} - - DISCOURSE_DB_BACKUP_PORT=${PANEL_DB_PORT} - - DISCOURSE_REDIS_HOST=${REDIS_HOST} - - DISCOURSE_REDIS_PORT_NUMBER=${REDIS_PORT} - - DISCOURSE_REDIS_PASSWORD=${PANEL_REDIS_ROOT_PASSWORD} - - DISCOURSE_REDIS_USE_SSL=${DISCOURSE_REDIS_USE_SSL} - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/discourse/README.md b/apps/discourse/README.md deleted file mode 100644 index 1aa166772..000000000 --- a/apps/discourse/README.md +++ /dev/null @@ -1,5 +0,0 @@ - - - - -Discourse 是您社区的在线家园。我们为那些想要完全控制其网站运行方式和位置的用户提供 100% 开源社区平台。 \ No newline at end of file diff --git a/apps/discourse/data.yml b/apps/discourse/data.yml deleted file mode 100644 index e062eaba8..000000000 --- a/apps/discourse/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Discourse -tags: - - 建站 -title: 开源讨论平台 -description: 开源讨论平台 -additionalProperties: - key: discourse - name: Discourse - tags: - - WebSite - shortDescZh: 开源讨论平台 - shortDescEn: Open-source discussion platform - type: website - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://www.discourse.org - github: https://github.com/discourse/discourse - document: https://docs.discourse.org diff --git a/apps/discourse/logo.png b/apps/discourse/logo.png deleted file mode 100644 index 0596417f45980cd45dcd46b8d66f0aec3dcd5bfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8538 zcmV-gA*J4lP)FK*_ z|EMH$bypu#T~#wv@7L=~rn{VPsJ z2#A0O2mmS&KK!~NAO`dR-9YH@I0&>JKG&rHG)+Uc+lVQG3@igq0FDQaMHlgWprQo7 zFA1~&`+!}*HsEz&2M{m8@0&IVu7}P@6L1c2*5PpypxA1WP8xU<*bF=aJdf_pUC=$W z{vVez;8Ngj;2l7lLSrBBL*RXY-|RPLDlyXqJqx%6_%r&~xZT1uV?=>Xz(;{f^WLhd z!Aul%5V#Te6Oh7w0hV&afd_%B0IwNup3|90f<7C#4~SsD(Cio?;M>5W$-a?JX1WX7 z4}1dsCdzI>Ic2E8ld<1;~Xi76(1nmmhobe`bB~y4RGSvm`2fl>9glxAMrqkF0oL<1^;25T=patMs z-~jf2_|tW$z&+@(`YFRy6!c2;6DfWK#oOhcxUpuND?m_93dQ*HbeJsHc< zOcg<&4!n*1AL>jW!@%u0*jqbY&@#GLp6*N3Q*Ats9_x1;P8ReM;AQOp@Z6DkbO7tK zetI_HR6%b52C@G`bBFOz(N|<0vmoO%K`X#_u>XT{M`2?V4oOvYlAvb+&td=5)fvHwkW$21kS)q=hg``=u5 z*fYL@1z0KQFJS+hTGF8if>tR>+H6_TX3L7!C@WfpC~1-)*lwFc#-}MUnxmv)W@!Pl$K~p=@IJ*gjkn@awnm59 z8jG+s8X-P?1)c&f2A(X%#Y-*dbJ5FeO_{1a^|H)+$|_k~R>8@>KuH9gi@2t;WjMlL zBZE8{2{WXoEw`b>3;<`KFPEE2DFwY0eY0h?*%vk&k07wFEXd`-YEJc+IqIt^3JS9jPQ6 z2YUHkxR;1JEu{Snunv71VhW`Yv;h1MaJg9*G@C|Q;p5fyTvkzqr$keVv;awufaa4B z{UV|yAW9%f5`rY4CRNlFq!VezQMoHy2Zyr+9{5IUj&-%IdIEwx_fzldMI{JZA z&`Xj{3Nr;=2fP8yp6rFpWSQ5;SL^4n-0Lg)8XAzSRhTtLBFF z+A=&w+*_hUe5I?Mj#Sb<`-ZwW=9 za-om9@_uBm^S;tG4Te)yw6%Z|()$QSRF&`cbnv@ypS{Kv#}|QbOy&Y+3HlSjk0)~h zGij6+zS+>sDqosdMPE79u5sulGr_j1UwZ9^VP0)!c*&}F@+w= zd$rgLm?7wS=&i;|(b}wF&JL7wXG1f=BIe5RpiJ`ujquV8b)ge{}5dwZtvey~c;&HUW z2-@HfYG*fUX9%?;M7q5LwY^iHZy1nFDYSM4Nwh@xQfJ##yJ0MP>M>bCe+0d6iLHnT z{7Zck8-j%`N~VF}N<_@+5F=8S}aa_?*Y<#_mkeW zht%%9kY%AIma3rTP54RMA@1$>oLE5eJR~_7wWU$q2d{y`Nugp)WKOMG&~Np_z4M z!Gd0ws8LwBD2AdWCiVM;UUFi?}TDliIm_`TzdK zZnKQ|7W$sloD?ePYtXk-*}_?Ya_(+ACa*Yi8kn`(L(o@P{8gGe8{Z9ABh8;%l#Nq~ z%ZGQIcIzW)K19lZTfsM9?Doil8k?`wg%5%p(y$4K$tV zp-d@2%%X_*(sg(*UFWE%MXAvShuC-Tuc_Iwn_tdf%xzzL!funYk(ZY)M9`OGQqF3j zhzQ&}XMSF}85&T3vOUq16(U;bhi1bo+T zz|{@Ws=Odjy)NGAIZa<`je8EqbrovheuY7 zq#y$yGu50txw*PNuMl11NnR8sk6ds`B5>=C$SanZVBPfQy15HkRjIGUJ}d8H#kVK5 zE2w#u-ZOKiYBy&w=?xpSYY%i6*{@fQ71Om5w7y#R=%R7nyW@<=>tJi&`3=g#T%tY3p? z?OA4+Hskoh(&LZ*9MYac`p75Yl#6V%Xbf4S9oYnZ8G10=Qa%{0$?2VARWen9{+!p6 zS1iG|;e94qHuLyE(>&%M&Nol0D$U;e;Ggb=xyx*}4A7^;m6;A?6ZD4C*^(Jq5V$&z zx%0xsxo-l6>Pq}KU+2b|CxIvk{QZIv@$Qf9$1lDPU-%USY~SSXL3g?n$n=RTfaTvU zYXcS3O2&Kg(sR6cJvp}J3j%?guA36ON}SF|=Pe%7nV`!1AT%w6Tkf*Ys1Y(c-AsZ$ z2OH{aT#;kfwgwzCJCgG{o{QEZEnR4mRWqAuW2~vb^JG6ZA&SE>C7b!&G<(xa&^Re@h3KezZ`D) zu8o!fdcT%2j2Co0u+kb^Mp#>BJj03AD0q~(;W^5=ry(t#Z=zK$0Dehg{j9N`xZeLK z{fCp+!x`_l!K$N7_&Odh=(8;{9F;Kpx&r}%QkljL~D6+0R)=yR>JMQ61yU|3NX@2AITG_&YVOd+DJb-7NP-$G=)^pKX1n-n-g*at7y}EA99__VEMFvMsj9`{PbD!=8*>% z-3VnFSEEbK$&AwRXhB=pyC( zQ95PldkulHf?j2{C5v<19nY#ZsM9A1u6MSO<>eE-Z#Wf2Q1^{Iamh`PBYmMn9CgOy zryQ2DK$);|d6cvOesM7CaryY=h&5Fuu*xM9jXpnt3}UTTN7crwovp{FttX?PEl+@$ zYar-YrEIuY&~wh|C9ufFh(#F|z{))13hl4E-Xd$paCD=nt%9B{XBTv^G5ayW??XPp z@-LJbPbNY4q}pM0Ux3x?pt9aNqjZjH_lTey(08d=N}WO8MNKgKjuiRCW8It$8)(W< zR$@3E2d#7D2~mPGEYEM7fArTM{&zv<^GZvN!Om`2Y0+ z&&-&6UrK6$au^Y`<;y&ZAmGh1NlpqNd$Kf*lqDp$9Dywav)uDkj&E3X?AdxYp0zB1 z5kcp!>S8iJgFC)hAp0?S$wCBg_W89->B#1x{c_LPCnN<7{S&M9tE{HmYVQ zE`OZ8g0?N8H4{ExmgR6kKw5Z=wZ^y{C7jB<1+G7tVFB!zm5^s$ZmR-=EELD-DxlN@q$0ZLU zsg%Ld49DhMT7oSABZ9WP5O6}%NMxCliDKp{huG9mN|Ri2(3>>a*QsSVHfL$+jG2fB zMg(n39IP*$`7d5nGtbq;y8Ih%x|mOE)M)2@h5|sdEsaP?VB?enpgW78vmw^ow#~-{ zI2bi5^pjzlSZ`@tiwdw=(Cx|0o>I$|2YBdohQIn)EQ2S= zr(dB<$#}KDC+o3tIY3q^DVA+w9wxgL))3b;c4hF=(V;ANhBdW^Q4AYL7G;xQq z7R}LL#ib-{>Nse4JS{HHe$YBWw}S%&4e*!9#0{}MLle_PwL#;;jV|W1E!@YRh(W<0 zK?1>`HAUE9?rknD;1EGS6$wws1nBLY7>ri?GVF|SDJj1`xYzJ_l{|;Tc|j8i_dtR9 zIz`e041q%g9ZIEmX?U#nmAWV9d1$@;7Fpy1`j)F-wHgaLmNb}d^cc^*O{C?>4~`Ht zz{7+6V;+~O0tt2OQn%XGZJ|Xjf9h(>kunNH@@d%*cC?slP~)j3AcPe#HM@}oP3 z#_l^vw|7`+(v0WF`*s^1_lh163_NuEyV;MK%l0EbI7ZM(P2<6E-Rqr0q!5@B|a+FTsf$c)<&WoYG(*-IGX9DE++Gx zJv+%2_3zVilqzW1VVXTT*mmRxM+v$+o#K&Eb7=uMG(0v>AidAnYq(6F1JMZg9@t}e zj#pGrrPbL_hz>!k@s!0RBEZqA>y8pMz&(8-lB2wIX!lr;oZho<{7YO+<{NKsGhFHh z2yh&RPUjpo&zI+`}Dqp?h<$j`TWjTGUlj{rdpl_ zLXHvz+nzDeDnp(h{lJle?oX%rVQ<&b$4YCQ^pU%1RVB53mra&UZyxPv<)K5l?@_|( z2`#qAozM+?UNgxmLo{H^=qDU0Xn+U8ee8)O(fA7f6VQTBPY%g;ulHqiU+qS=) z^Sq!OBrWGCmHYA^t(re?<8WgC5gaS%w5IWuP#fyu`F?EIFsi0cJyJV%p=H{5=u$NQ z^5(1THAq4_LM*)=!`L&xiw~J&RBrw_{t3ql8emsE#*UcorTqxB^yxJvwRpny(kAju zcPHO}_pO}gRmc@28~LhJLzd;)PFpnK zhF71b&9H!sPNm#HN?x1$qEGy6vS#JWpMeP}nT{6pO7BRvT>_12VI)57S#yRRCQU28 zw(AWxb+qPn?f@T0U%NG6`?JuNJBDo%zs>ZdqXoUfJF*fLsg)6g!(WWDglEl}Hd!@2 z_+9&czOw7}yv{8XP6r{6&SMY#=j4papBS(y(*Z{ddbEe0J%2>p%IT}!I(L)ch2Ac% z-ZNUa&ckE4jA2V} zi1%-Kita4si^mg`0}SvPvhL;{&C8GJ(GBbPFQbEw_0UHI-R}YAaLX{|{IkHI1Fg$M z9_cv91)CqwTg+ZjW=OpqggpA$#G~+EUznVMh4CU_xDCd!>NpazE1!SZQ!6r_bKTf; zA$r=G z`1RHqcrQHHPLrk#FZXqG-7C);mhZ}hU%i5;_mcchjt#?IH(QmnafI)avAgG394Y8! zha1gEbA3PzdD$YwX19y15lL0$j@{e%`rF%b?l>8bKYb-p-{twg;HRI34omlT4gmM$ zbD|>!edLDlNGD{E>zxgGp|^{hUwe_Ab`UDB@$@#x%_bXOM zH9+^ycjbGs;{@F(D^y7mLk$Xo7{hbH*>0$A9R0}z-+pHY-+T8hhKs1~Su0o5qkR@U z1+2Js9e{6M2S)wAOT%42f4(O>PSD35o^H&ZDmvJt%ZB{?_vA6B9?_xFEtY4AHY{&QdcYjU*Dk5ovmjl@Y6zH$Nu3VE^VC4`x~2CQ`bmPp4b|r6sVfUj=_E&?P%rE z&Q@ON>B?)LpAiAcgO*rNNV$rfyG_P3)DK_3+Ac8z{1bV^oyX%SLC=yEY9*O^e;Ch& z1%5RaNN*y}Z`=3tKwAq>cXyzUirxOSWj8-<*^ML!oKjWG*|oDcy}F*0Dr;C+R)J(f zSKFRMoYw|=d9k;P7kWc%=?&3eb*Xy6b}JOA|UB+X)K*)AeCewnP4E9pf8zVZ)A{nBZKUT44Nk1 z@zk@3Zt(_sqllX`m(r&Bz9=pess z-_NFwgCufP)l>u#pQtdH&K#bKrqjGJ(90V+o4H$uCN;^X&Es9|{QBTtHg&WTF^JU$B_HLcm%&e-Qg@GRh6eghj^f^g$LXB6HZO+q9qCf^8L4V#9L? zODB*lKb=l|P?o=4ns+`S@23F}6T7I2KZUPsA6@j4vZf#*)p9vXd>*}=NkTb|PRX15 zMY&MZ@X+0G|DATM{$=8Gz@*E{I!4edynY%^tVe99H#|=RUg`~Tf7?DDXlvons6BG^ zQaMVzj-mKM2K{FcRhG~u2~e4*5&d2I5^rB8oOnL?#^ztEzUB1#mLGl;Lyo*mWqLba z-yx!MFMa9B&prL3LIpLX5={)ToP_Tb`h+^eV)+HL`xW@n?XZ8Ri5Hy|j{`q6<3f%R z^!t}K(s1?JS&zRy(98X;`}j>;3oXM#cm$C;s+kpAL^!>iSmil{gevf(kMSg8`tFL* zLFjIUQ0v%#yW1c&D)La%2-p29to>k?8&n^uvh(O+R6@L%KuEWuMEBxVJCVgOk`P6d z;>d!AB&ehjNvWWz9#qXkLaQbwHj?tqMH8EdQmJn^E5!n7=pg*}*WmdFt=!a_i%#I9 zFzK*60D`7z2!ikjptOPC96a`S=Wy}Q|8b0Xb`1`&v27psx3beV>sH(faes_ zWve*)_o!*QcReE5p0Q+M-NcGpF6Q0HAouNU;g1J;=os=4PAn$kJsGWEgV2GALJhS-Py1N!S_Xx$Bu{1BeL-zoFt@q7XJmRT2bjG$M{o5eN%dOc5sqU`NS5qd{O zJv7S84mv01OJzO0=XyB*T4-8mw>1+u@81U53m14_ryc}rTu;8(E*$Wm|p+D6?CbP6j*qIF7jhmLi2K%y$Gsi z6@IN)1UmOa+ipEssAY#9b{lZ+3Z?;3;5?utDSVoyIVWs4tw<-~ovr#9jqHKCIS{Oc zvPuY4!l)X4Bx3r_+hDIg2D*!n&Nz=Guz?bZ`3SC{tt6GurwZ1V0B`~-`m%P(OO(31 zPhG6wQ-CG44_raJl$u)s%W8(XQx2C>@=4%FR{lcQL%Wm$6&u71u7`Fpp9JuK$kKML z)VP9nF_SQG8Sso<2DpNDF^hx1CFH2EUuxVrw2K*RMqkdhRm|WD+GXE+au7`FpW-oej(I4$LBwt()?UIQodeOvVnL=U)*F(EZWFvZcfdh6M zQVgz#b~(bIfYrdYOi?j|D`*$JYS9|tV&FAQ z{5N_d_(_+pbt0~yX9lmM?;iOzCRZzR8m^$HF9*>h78}t8JtJ@hJ-v7r*aZ9zJxAHG zl^RQhE9j|B1YNj~1CIi4+iQ;fxPqQqv;eQ7i}+desYJouR;M$rpq)n?*oU4+u@~5l zF5GPt*vNe*azxN(#Ui8VABa;)qJK@>#SpqjO#s6{4Cnzuher>3n&ym~` - - - -

+# Gotify -

gotify/server

+**Gotify** 是一个简单的服务器来发送和接收消息(通过 WebSocket 实时发送和接收) -

- - Build Status - - - codecov - - - Go Report Card - - - Matrix - - - Docker Pulls - - - latest release - -

+## 特征: -## 介绍 -Gotify 是一个用于通过 Web 套接字实时发送和接收消息的服务器。 +- 通过 REST-API 发送消息 +- 通过 WebSocket 接收消息 +- 管理用户、客户端和应用程序 +- [插件](https://gotify.net/docs/plugin) +- Web-UI -> [./ui](https://github.com/gotify/server/tree/master/ui) +- 发送消息的 CLI -> [gotify/cli](https://github.com/gotify/cli) +- Android-APP -> [gotify/android](https://github.com/gotify/android) \ No newline at end of file diff --git a/apps/gotify/data.yml b/apps/gotify/data.yml index 58dd56a53..d45916efe 100644 --- a/apps/gotify/data.yml +++ b/apps/gotify/data.yml @@ -1,15 +1,15 @@ name: Gotify tags: - 开发工具 -title: 自托管通知服务器 -description: 自托管通知服务器 +title: 简单的服务器来发送和接收消息 +description: 简单的服务器来发送和接收消息 additionalProperties: key: gotify name: Gotify tags: - DevTool - shortDescZh: 自托管通知服务器 - shortDescEn: Self-hosted notification server + shortDescZh: 简单的服务器来发送和接收消息 + shortDescEn: A simple server for sending and receiving messages type: tool crossVersionUpdate: true limit: 0 diff --git a/apps/homepage/0.9.2/data.yml b/apps/homepage/0.9.2/data.yml index 01dd5f94b..279c74d16 100644 --- a/apps/homepage/0.9.2/data.yml +++ b/apps/homepage/0.9.2/data.yml @@ -1,17 +1,17 @@ additionalProperties: - formFields: - - default: 3000 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: HTTP Port - labelZh: HTTP端口 - required: true - rule: paramPort - type: number - - default: Asia/Shanghai - edit: true - envKey: TIME_ZONE - labelEn: Time zone - labelZh: 时区 - required: true - type: text + formFields: + - default: 3000 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: HTTP Port + labelZh: HTTP端口 + required: true + rule: paramPort + type: number + - default: Asia/Shanghai + edit: true + envKey: TIME_ZONE + labelEn: Time zone + labelZh: 时区 + required: true + type: text diff --git a/apps/homepage/0.9.2/docker-compose.yml b/apps/homepage/0.9.2/docker-compose.yml index 2c914b093..c9dee6fdb 100644 --- a/apps/homepage/0.9.2/docker-compose.yml +++ b/apps/homepage/0.9.2/docker-compose.yml @@ -1,8 +1,7 @@ -version: "3.3" services: homepage: container_name: ${CONTAINER_NAME} - image: ghcr.io/gethomepage/homepage:latest + image: ghcr.io/gethomepage/homepage:v0.9.2 restart: always networks: - 1panel-network @@ -17,7 +16,6 @@ services: - TZ=${TIME_ZONE} labels: createdBy: "Apps" - networks: 1panel-network: - external: true + external: true \ No newline at end of file diff --git a/apps/homepage/README.md b/apps/homepage/README.md index 8dc08134e..1f4dda1aa 100644 --- a/apps/homepage/README.md +++ b/apps/homepage/README.md @@ -1,6 +1,14 @@ # HomePage -是一个现代化的、完全静态的、快速的、安全的、高度可定制的应用程序仪表板 -他可以通过YAML文件或Docker标签发现轻松配置。大家更习惯称这类应用为「导航页」。 +**HomePage** 是一个现代、完全静态、快速、安全、完全代理、高度可定制的应用程序仪表板,集成了 100 多种服务并可翻译成多种语言。可通过 YAML 文件或通过 docker 标签发现轻松配置。 -Home­page 已支持超过 15 种语言,集成了至少 25 种应用程序的快捷服务,还可自行配置天气、书签、Docker 容器概况、NAS 系统基本情况等各种小部件。有了 Home­page,我等 NAS 用户就再也不用一遍又一遍地往浏览器地址栏里输入 NAS 的 IP,不用特地去记住各种服务的端口。要做的只是把它们都一一配置在 Home­page 里,各项服务就能一触即达。 \ No newline at end of file +## 特征: + +- **快速**:网站在构建时静态生成,以便立即加载。 +- **安全**:所有对后端服务的 API 请求都经过代理,从而隐藏您的 API 密钥。社区不断审查其安全性。 +- **适合所有人**:为 AMD64、ARM64、ARMv7 和 ARMv6 构建的图像。 +- **完整的 i18n**:支持超过 40 种语言。 +- **服务和网络书签**:将自定义链接添加到主页。 +- **Docker 集成**:容器状态和统计信息。通过标签自动发现服务。 +- **服务集成**:超过 100 种服务集成,包括流行的 starr 和自托管应用程序。 +- **信息和实用程序小部件**:天气、时间、日期、搜索等。 \ No newline at end of file diff --git a/apps/homepage/data.yml b/apps/homepage/data.yml index f1a12885c..0fa607f03 100644 --- a/apps/homepage/data.yml +++ b/apps/homepage/data.yml @@ -1,19 +1,19 @@ name: Homepage tags: - - 安全 -title: 多功能个人导航页 -description: 一款网络书签仪表盘, 多用于解决内网服务搭建太多,记不住网址的问题 + - 实用工具 +title: 现代的、完全静态的、快速的、安全的、完全代理的、高度可定制的应用程序仪表板 +description: 现代的、完全静态的、快速的、安全的、完全代理的、高度可定制的应用程序仪表板 additionalProperties: key: homepage name: Homepage tags: - - WebSite - shortDescZh: 个人导航页 - shortDescEn: personal homepage website - type: webSite + - Tool + shortDescZh: 现代的、完全静态的、快速的、安全的、完全代理的、高度可定制的应用程序仪表板 + shortDescEn: A modern, fully static, fast, secure fully proxied, highly customizable application dashboard + type: tool crossVersionUpdate: true limit: 0 - recommend: 12 + recommend: 0 website: https://gethomepage.dev/ github: https://github.com/gethomepage/homepage document: https://gethomepage.dev/latest/configs/ diff --git a/apps/homepage/logo.png b/apps/homepage/logo.png index 67e9d0d1b5195012c207e90f079c133d56bc8541..b2befb0892a18c8190c9daf01a07679d88c01735 100644 GIT binary patch literal 4166 zcmV-M5V`M(P)VU%NbiU?ky5wKB z;#IQYO0M5Ps@*oG+*y^uEuz{apV%9j)fAA=4Ti}DdchiPr~qlL;J3EQ00008bW%=J z03Szll(p9JW-;_u000k-NklQd3oami7@E^b3|N~SiP7BsO+JMiLod;= z{B(>7%TE(U=%<%>%<ng%%?|xELp`R9jL>2lVqYC{HIVwrK-Z#23nCORVjd9_Om&SIs?DIp6my0T2VJ=Z`=A8L^fvWRZm^6PhVa z)8_fY%z<(#YE+h2=G)WCYyn`GFz589SjPuD*&!<_1PLZtaVlGRFjxXxkB0WZGjeI zjNT<{N|UQiY-J7`^ed=QMm_5)uNC%;DbQZDf+tl3l#8{PdMxpJ+EEt4N@q7QnWwE1 zH0olMCPT&`D*cK-u*^%w?I?%49fX*9F}h5yY}J{Qt`Ku^F$k79z3wMV>gQmo#mFfF zQ&(pNnWb5nV3}y`B8!|pXGs+Ro0WM>!Ua2};_{};xk8^%(l8TcRY2bY2 z@X&rR^{dzr{5r{B%Zk;kuaz~bGk14_jJOK&5=EJ_-6 zeml{`Y6*+QA~0?Mx_!~quUv#OR{(Cb4c;2oa(k>ZTGvqNUm>K@B)3OaMLo;;NyrKw zMxmm%A7sL^b!h>}Ip&{-pQFs7=wAH@2gFyRUiCJU?mc9471nIg*V z$$qfk$YQR5qpZQBm)kdRMIj^LM0dm$a5_%9o&{8MyE{Mzp8RYfCalkDA9wkSk{tmAGz0txijDS z1D7lOqN>5?d5XnphI+p}y$Q%o)Ws1ei~FLiNxk2mHL@7FKkfF3)Kn#FG9KFV*!geg zgP|?j;|kSS66{Ati?aURLzQIpv_N<>nPADpK#mPmLED%`aSM~E(;aT0UeD@$v7U@*- ztNJ=v=gMUl6|4Il1ogfsw)z$Oq_Dx$7s_n$D;S2>!H6^(bjf0>>ifa*e8p7=*rX{I z(UbbsPU|3_3j>;H8IJA;^R7bGub3=ZgZDpuU_UtCX9y9Z374U@Bwv-+!J$5b|KN{A z%g~p>O@0N#c%Om3o<+9|t>yjp{ntT0xr$~!NWtqh{lmq?s`=IaeTH}z|Njqku68N0 z#`c3Fxt$Lj`nvI7S1epetV6ATH9j9?uJZ3yf~r{9G9M(whW#qeO?1h^zJC{AH;ZWC#%(9FxP$dxu(=jw~n9EZ3PC#$~>?w;G(uawCGM&^U#xt-QWWwJ{1!Ci8@ zHN>aQ^u^kLKFF2Ez8(U-s#t~j;6AzC8uO-3))~*q5O9dABm9>|#oBEh~I@f%VY2!4pyp|=awhoT>83-)SqHrsF z&?Kwc7xlaGK0`LT_beeQ*1+6(WIhOv?Vi14$?`fm-+VADLSPY5m8_)YFqqrP+?lp~ zTO>=CZ+AvNKlt{1b6uJb=K0Fsi;4v_`;PhG%X71v+jKtI-#^ptN0uytCj$*gxoS^u z4Y1>nm>BqT{p?rP!tO_!tZW@@Z>uXD4oBt+r^n@wySlf4Ny)FQQGgW{E92_@6|2{D z&)$G4NQXD;C>SU#!y-sxUoXVBnWJ#{FWDz1J!iy%o4));y{-#(K#r_Wd85e`*H==4} z9aLTL{re1;mj#;LrhbuhKo(i13+r8QYilei~SMi%Op6QX3>5cH1W;G20l6p{sZ?^5SM z4$8-{X;SZZ-mFjrUih9VDfZ5lR#}PrSH)z3=5q)`g$1=^n7D^rP8P^7XfRiuD#ghf z&Xve2LDLfYjU}$M%JOk2SA}K4J#cR?DyjnOm4$&^fnHW92)A{AFRDLTKtEUIWr1#Q z0Cc6^1*}UI6w8X#&sBL@pxFWkT@tFm&@5{>SHNb8!uS@_S}dXz%SzpEmt+;AdZ0tH za0r&}F_eAQv8(5Z;_xFMmwShHS;wyAE9bJ%otJ$(pk3B14&*AXHYkjoeK^Pn>X(Hh zS0KEucDNd|J6Q!kNwOqYz;+dIMe2urvOa?>{5gZ0Rm4?sk50Cunq_(arz@%UtHF1@ zCwST@O_sQVRQpw-b`}`WpDb}D)qZto)*e67(?+Q*$(2<5)oC6G`jaK9Al3c>RF4d~ z)2uUDHvye4srHY7|8eq6Pg|X`_)zWJh!2HYc@U+^!W-08y8>I0q_b4YqTMn;0sfw3 zHB>5#HqQYns2{25Y8cLzMeB8h68K*#*;#=j&SR;^6~cdO05PHr@hn+HVY!LWL-?@< zh)@W|Iqa5Os3Lw}N9at}cKHfze1D3hQI>2OG_n2vwUjKlnURMljuA!{5hg2}7){oc zWWi)*5&*DOcNU(&usO^lMlfP95t&oSu+o|$E10beI!n}8dyi9NPh~1b@eX^~n~X6U zLWj-aC>1*FlZR0};{e$lj!+W-tN1(|09eIm*Sk=gkda_nv?c`0qLm*ki`K+o*@8GV zSazJw-DBA{K7aErkahg2Q=xTycDvgk<`1C_;O6)|TeOyaDzj%XNfSZ%$hu704r)Mt451?U_=K@?{b QZvX%Q07*qoM6N<$f_G3#umAu6 literal 30860 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

o08s7L>j-akEb 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 O&pf}NIfb+2-~JzhTW8q- diff --git a/apps/lobe-chat/1.1.16/docker-compose.yml b/apps/lobe-chat/1.1.16/docker-compose.yml index aa33e4bdb..2193d392c 100644 --- a/apps/lobe-chat/1.1.16/docker-compose.yml +++ b/apps/lobe-chat/1.1.16/docker-compose.yml @@ -14,7 +14,6 @@ services: - OPENAI_MODEL_LIST=${OPENAI_MODEL_LIST} labels: createdBy: "Apps" - networks: 1panel-network: external: true diff --git a/apps/lobe-chat/README.md b/apps/lobe-chat/README.md index 06ff5fd18..66f2dcf89 100644 --- a/apps/lobe-chat/README.md +++ b/apps/lobe-chat/README.md @@ -1,12 +1,18 @@ -

+# LobeChat -

Lobe Chat

+**LobeChat** 是一个现代化设计的开源 ChatGPT/LLMs 聊天应用与开发框架,支持语音合成、多模态、可扩展的(function call)插件系统,一键免费拥有你自己的 ChatGPT/Gemini/Claude/Ollama 应用。 -现代化设计的开源 ChatGPT/LLMs 聊天应用与开发框架
-支持语音合成、多模态、可扩展的([function call][docs-functionc-call])插件系统
-一键**免费**拥有你自己的 ChatGPT/Gemini/Claude/Ollama 应用 +## 特性: -[English](https://github.com/lobehub/lobe-chat/blob/main/README.md) · **简体中文** · [更新日志](https://github.com/lobehub/lobe-chat/blob/main/CHANGELOG.md) · [文档](https://lobehub.com/docs) · [报告问题](https://github.com/lobehub/lobe-chat/issues) · [请求功能](https://github.com/lobehub/lobe-chat/issues) - - -![](https://private-user-images.githubusercontent.com/28616219/306135690-9f155dff-4737-429f-9cad-a70a1a860c5f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTYyNjc0OTgsIm5iZiI6MTcxNjI2NzE5OCwicGF0aCI6Ii8yODYxNjIxOS8zMDYxMzU2OTAtOWYxNTVkZmYtNDczNy00MjlmLTljYWQtYTcwYTFhODYwYzVmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA1MjElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNTIxVDA0NTMxOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJlOWNlODY5NmI4ODA2Y2Y5NmM3NzVjNzU4MjAzYWE3NDU2YmJlMzdmOWU1YjIyNjcwMGRjNTJhNTRhYTFjZjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.5xWoXxU6RhqvqRFH2e17oshXIeMqJLUDPLonpz9wTGU) \ No newline at end of file +- 多模型服务商支持; +- 支持本地大语言模型 (LLM); +- 模型视觉识别 (Model Visual); +- TTS & STT 语音会话; +- Text to Image 文生图; +- 插件系统 (Function Calling); +- 助手市场 (GPTs); +- 支持本地 / 远程数据库; +- 支持多用户管理; +- 渐进式 Web 应用 (PWA); +- 移动设备适配; +- 自定义主题。 \ No newline at end of file diff --git a/apps/lobe-chat/data.yml b/apps/lobe-chat/data.yml index 59397dc7d..4257ccb88 100644 --- a/apps/lobe-chat/data.yml +++ b/apps/lobe-chat/data.yml @@ -1,8 +1,8 @@ name: LobeChat tags: - AI / 大模型 -title: 现代化设计的开源 ChatGPT/LLMs 聊天应用与开发框架 -description: 现代化设计的开源 ChatGPT/LLMs 聊天应用与开发框架 +title: 开源、现代设计的 ChatGPT/LLMs UI/框架 +description: 开源、现代设计的 ChatGPT/LLMs UI/框架 additionalProperties: key: lobe-chat name: LobeChat diff --git a/apps/ntfy/2.11.0/docker-compose.yml b/apps/ntfy/2.11.0/docker-compose.yml index 848a72e59..83db4590e 100644 --- a/apps/ntfy/2.11.0/docker-compose.yml +++ b/apps/ntfy/2.11.0/docker-compose.yml @@ -23,7 +23,6 @@ services: start_period: 40s labels: createdBy: "Apps" - networks: 1panel-network: external: true diff --git a/apps/ntfy/README.md b/apps/ntfy/README.md index 5061e1828..5ce53d200 100644 --- a/apps/ntfy/README.md +++ b/apps/ntfy/README.md @@ -1,28 +1,13 @@ -![ntfy](https://github.com/binwiederhier/ntfy/raw/main/web/public/static/images/ntfy.png) +# ntfy -# ntfy.sh -## 通过 PUT/POST 发送推送通知到你的手机或桌面 -[![Release](https://img.shields.io/github/release/binwiederhier/ntfy.svg?color=success&style=flat-square)](https://github.com/binwiederhier/ntfy/releases/latest) -[![Go Reference](https://pkg.go.dev/badge/heckel.io/ntfy.svg)](https://pkg.go.dev/heckel.io/ntfy/v2) -[![Tests](https://github.com/binwiederhier/ntfy/workflows/test/badge.svg)](https://github.com/binwiederhier/ntfy/actions) -[![Go Report Card](https://goreportcard.com/badge/github.com/binwiederhier/ntfy)](https://goreportcard.com/report/github.com/binwiederhier/ntfy) -[![codecov](https://codecov.io/gh/binwiederhier/ntfy/branch/main/graph/badge.svg?token=A597KQ463G)](https://codecov.io/gh/binwiederhier/ntfy) -[![Discord](https://img.shields.io/discord/874398661709295626?label=Discord)](https://discord.gg/cT7ECsZj9w) -[![Matrix](https://img.shields.io/matrix/ntfy:matrix.org?label=Matrix)](https://matrix.to/#/#ntfy:matrix.org) -[![Matrix space](https://img.shields.io/matrix/ntfy-space:matrix.org?label=Matrix+space)](https://matrix.to/#/#ntfy-space:matrix.org) -[![Healthcheck](https://healthchecks.io/badge/68b65976-b3b0-4102-aec9-980921/kcoEgrLY.svg)](https://ntfy.statuspage.io/) -[![Gitpod](https://img.shields.io/badge/Contribute%20with-Gitpod-908a85?logo=gitpod)](https://gitpod.io/#https://github.com/binwiederhier/ntfy) +**ntfy** 是一种基于 HTTP 的简单发布-订阅 通知服务。使用 ntfy,您可以通过任何计算机的 脚本将通知发送到您的手机或桌面,而无需注册或支付任何费用。 -**ntfy**(发音为 "*notify*")是一个简单的基于 HTTP 的[发布-订阅](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern)通知服务。通过 ntfy,你可以**通过脚本从任何计算机发送通知到你的手机或桌面**,**无需注册或支付任何费用**。如果你想运行自己的服务实例,你可以很容易地做到,因为 ntfy 是开源的。 +## 主要功能: -你可以通过 **[ntfy.sh](https://ntfy.sh)** 访问免费的 ntfy 服务。这里还有一个[开源的 Android 应用](https://github.com/binwiederhier/ntfy-android),可以在[Google Play](https://play.google.com/store/apps/details?id=io.heckel.ntfy) 或 [F-Droid](https://f-droid.org/en/packages/io.heckel.ntfy/) 上找到,还有一个[开源的 iOS 应用](https://github.com/binwiederhier/ntfy-ios),可以在[App Store](https://apps.apple.com/us/app/ntfy/id1625396347) 上找到。 - -## 使用说明 - -可以通过修改配置文件来自定义设置,文件路径如下,按需修改,将`server.yml.sample`修改为`server.yml`, - -然后自定义修改内容即可。 - -``` -/opt/1panel/apps/local/ntfy/ntfy/data/ntfy/server.yml.sample -``` \ No newline at end of file +- **多平台支持**:Ntfy 支持在不同平台上使用,包括 Android、iOS、Windows、Linux 和 macOS 等。 +- **多种传输方式**:通知可以通过 HTTP API、命令行工具、Email、WebSocket 等多种方式发送和接收。 +- **自托管**:用户可以选择将 Ntfy 部署在自己的服务器上,实现完全的控制和隐私保护。 +- **订阅模式**:Ntfy 允许用户订阅特定主题,从而只接收相关的通知。 +- **简单集成**:通过简单的 HTTP 请求,Ntfy 可以与各种应用和脚本轻松集成。 +- **实时通知**:支持即时通知,让用户能够第一时间收到重要信息。 +- **开放源代码**:Ntfy 是一个开源项目,用户可以查看源代码,进行自定义和扩展。 \ No newline at end of file diff --git a/apps/openldap/2.6.8/data.yml b/apps/openldap/2.6.8/data.yml index fc0355268..48f55d139 100644 --- a/apps/openldap/2.6.8/data.yml +++ b/apps/openldap/2.6.8/data.yml @@ -1,33 +1,33 @@ additionalProperties: - formFields: - - envKey: LDAP_ROOT - default: dc=example,dc=org - labelEn: LDAP baseDN - labelZh: LDAP baseDN - random: false - required: true - type: text - - envKey: LDAP_ADMIN_USERNAME - default: admin - labelEn: LDAP admin username - labelZh: LDAP 管理员用户名 - random: false - required: true - rule: paramCommon - type: text - - envKey: LDAP_ADMIN_PASSWORD - default: adminpassword - labelEn: LDAP admin password - labelZh: LDAP 管理员密码 - random: true - required: true - rule: paramComplexity - type: password - - envKey: LDAP_PORT - default: 1389 - edit: true - labelEn: LDAP listening port - labelZh: LDAP 监听端口 - required: true - rule: paramPort - type: number \ No newline at end of file + formFields: + - envKey: LDAP_ROOT + default: dc=example,dc=org + labelEn: LDAP baseDN + labelZh: LDAP baseDN + random: false + required: true + type: text + - envKey: LDAP_ADMIN_USERNAME + default: admin + labelEn: LDAP admin username + labelZh: LDAP 管理员用户名 + random: false + required: true + rule: paramCommon + type: text + - envKey: LDAP_ADMIN_PASSWORD + default: adminpassword + labelEn: LDAP admin password + labelZh: LDAP 管理员密码 + random: true + required: true + rule: paramComplexity + type: password + - envKey: LDAP_PORT + default: 1389 + edit: true + labelEn: LDAP listening port + labelZh: LDAP 监听端口 + required: true + rule: paramPort + type: number \ No newline at end of file diff --git a/apps/openldap/data.yml b/apps/openldap/data.yml index bf111ccfc..fe0d5b919 100644 --- a/apps/openldap/data.yml +++ b/apps/openldap/data.yml @@ -1,18 +1,19 @@ name: OpenLDAP tags: - 数据库 -title: OpenLDAP -description: OpenLDAP 是一个开源的 LDAP(Lightweight Directory Access Protocol) 服务软件。 +title: 开源的 LDAP(Lightweight Directory Access Protocol) 服务软件 +description: 开源的 LDAP(Lightweight Directory Access Protocol) 服务软件 additionalProperties: key: openldap name: OpenLDAP tags: - Database - shortDescZh: OpenLDAP 是一个开源的 LDAP(Lightweight Directory Access Protocol) 服务软件。 - shortDescEn: OpenLDAP Software is an open source implementation of the Lightweight Directory Access Protocol. + shortDescZh: 开源的 LDAP(Lightweight Directory Access Protocol) 服务软件 + shortDescEn: An open source implementation of the Lightweight Directory Access Protocol type: database crossVersionUpdate: true limit: 0 recommend: 0 website: https://openldap.org/ + github: https://github.com/openldap/openldap document: https://hub.docker.com/r/bitnami/openldap