From 89bd23ee5d77cb0cb88cd653e573db6c2ce62bd8 Mon Sep 17 00:00:00 2001 From: BakaCookie520 Date: Fri, 20 Feb 2026 17:19:54 +0800 Subject: [PATCH] =?UTF-8?q?del:=E5=88=A0=E9=99=A4=E4=B8=8E=E5=AE=98?= =?UTF-8?q?=E6=96=B9=E5=95=86=E5=BA=97=E9=87=8D=E5=90=88=E7=9A=84=E5=BA=94?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/2fauth/6.0.0/.env.sample | 54 - apps/2fauth/6.0.0/data.yml | 426 ------ apps/2fauth/6.0.0/data/.gitkeep | 0 apps/2fauth/6.0.0/docker-compose.yml | 73 -- apps/2fauth/6.0.0/scripts/init.sh | 3 - apps/2fauth/README.md | 7 - apps/2fauth/data.yml | 19 - apps/2fauth/latest/.env.sample | 54 - apps/2fauth/latest/data.yml | 426 ------ apps/2fauth/latest/data/.gitkeep | 0 apps/2fauth/latest/docker-compose.yml | 73 -- apps/2fauth/latest/scripts/init.sh | 3 - apps/2fauth/logo.png | Bin 1861 -> 0 bytes apps/act_runner/0.2.12/.env.sample | 6 - apps/act_runner/0.2.12/data.yml | 38 - apps/act_runner/0.2.12/docker-compose.yml | 23 - apps/act_runner/README.md | 3 - apps/act_runner/data.yml | 19 - apps/act_runner/latest/.env.sample | 6 - apps/act_runner/latest/data.yml | 38 - apps/act_runner/latest/docker-compose.yml | 23 - apps/act_runner/logo.png | Bin 7043 -> 0 bytes apps/adguardhome/0.107.63/.env.sample | 13 - apps/adguardhome/0.107.63/data.yml | 96 -- apps/adguardhome/0.107.63/docker-compose.yml | 31 - apps/adguardhome/README.md | 529 -------- apps/adguardhome/data.yml | 19 - apps/adguardhome/latest/.env.sample | 13 - apps/adguardhome/latest/data.yml | 96 -- apps/adguardhome/latest/docker-compose.yml | 31 - apps/adguardhome/logo.png | Bin 6363 -> 0 bytes apps/alist/3.44.0/.env.sample | 4 - apps/alist/3.44.0/data.yml | 24 - apps/alist/3.44.0/docker-compose.yml | 23 - apps/alist/README.md | 144 --- apps/alist/aria2-latest/data.yml | 24 - apps/alist/aria2-latest/docker-compose.yml | 23 - apps/alist/aria2-latest/env.sample | 4 - apps/alist/data.yml | 19 - apps/alist/latest/.env.sample | 4 - apps/alist/latest/data.yml | 24 - apps/alist/latest/docker-compose.yml | 23 - apps/alist/logo.png | Bin 3647 -> 0 bytes apps/answer/1.2.0/.env.sample | 3 - apps/answer/1.2.0/data.yml | 17 - apps/answer/1.2.0/docker-compose.yml | 17 - apps/answer/README.md | 39 - apps/answer/data.yml | 19 - apps/answer/latest/.env.sample | 3 - apps/answer/latest/data.yml | 17 - apps/answer/latest/docker-compose.yml | 17 - apps/answer/logo.png | Bin 3419 -> 0 bytes apps/artalk/2.9.1/.env.sample | 3 - apps/artalk/2.9.1/data.yml | 17 - apps/artalk/2.9.1/docker-compose.yml | 17 - apps/artalk/README.md | 82 -- apps/artalk/data.yml | 19 - apps/artalk/latest/.env.sample | 3 - apps/artalk/latest/data.yml | 17 - apps/artalk/latest/docker-compose.yml | 17 - apps/artalk/logo.png | Bin 6063 -> 0 bytes apps/audiobookshelf/2.25.1/.env.sample | 6 - apps/audiobookshelf/2.25.1/data.yml | 38 - apps/audiobookshelf/2.25.1/docker-compose.yml | 20 - apps/audiobookshelf/README.md | 308 ----- apps/audiobookshelf/data.yml | 19 - apps/audiobookshelf/latest/.env.sample | 6 - apps/audiobookshelf/latest/data.yml | 38 - apps/audiobookshelf/latest/docker-compose.yml | 20 - apps/audiobookshelf/logo.png | Bin 3820 -> 0 bytes apps/beszel/0.11.1/.env.sample | 3 - apps/beszel/0.11.1/data.yml | 17 - apps/beszel/0.11.1/docker-compose.yml | 17 - apps/beszel/README.md | 14 - apps/beszel/data.yml | 19 - apps/beszel/latest/.env.sample | 3 - apps/beszel/latest/data.yml | 17 - apps/beszel/latest/docker-compose.yml | 17 - apps/beszel/logo.png | Bin 1076 -> 0 bytes apps/bililive-go/0.7.34/.env.sample | 3 - apps/bililive-go/0.7.34/data.yml | 17 - apps/bililive-go/0.7.34/docker-compose.yml | 17 - apps/bililive-go/README.md | 209 --- apps/bililive-go/data.yml | 19 - apps/bililive-go/latest/.env.sample | 3 - apps/bililive-go/latest/data.yml | 17 - apps/bililive-go/latest/docker-compose.yml | 17 - apps/bililive-go/logo.png | Bin 5134 -> 0 bytes apps/bitwarden/1.35.2-alpine/.env.sample | 7 - apps/bitwarden/1.35.2-alpine/data.yml | 60 - .../1.35.2-alpine/docker-compose.yml | 21 - .../1.35.2-alpine/scripts/upgrade.sh | 40 - apps/bitwarden/README.md | 3 - apps/bitwarden/data.yml | 19 - apps/bitwarden/latest/.env.sample | 7 - apps/bitwarden/latest/data.yml | 60 - apps/bitwarden/latest/docker-compose.yml | 21 - apps/bitwarden/latest/scripts/upgrade.sh | 40 - apps/bitwarden/logo.png | Bin 2480 -> 0 bytes apps/bytebase/3.8.0/.env.sample | 8 - apps/bytebase/3.8.0/data.yml | 57 - apps/bytebase/3.8.0/docker-compose.yml | 29 - apps/bytebase/README.md | 366 ------ apps/bytebase/data.yml | 19 - apps/bytebase/logo.png | Bin 4576 -> 0 bytes apps/calibre-web/0.6.24/.env.sample | 4 - apps/calibre-web/0.6.24/data.yml | 24 - apps/calibre-web/0.6.24/docker-compose.yml | 24 - apps/calibre-web/README.md | 133 -- apps/calibre-web/data.yml | 19 - apps/calibre-web/latest/.env.sample | 4 - apps/calibre-web/latest/data.yml | 24 - apps/calibre-web/latest/docker-compose.yml | 24 - apps/calibre-web/logo.png | Bin 8719 -> 0 bytes apps/certd/1.28.3/.env.sample | 10 - apps/certd/1.28.3/data.yml | 76 -- apps/certd/1.28.3/docker-compose.yml | 26 - apps/certd/README.md | 24 - apps/certd/data.yml | 19 - apps/certd/latest-postgres/.env.sample | 15 - apps/certd/latest-postgres/data.yml | 116 -- apps/certd/latest-postgres/docker-compose.yml | 33 - apps/certd/latest/.env.sample | 10 - apps/certd/latest/data.yml | 76 -- apps/certd/latest/docker-compose.yml | 26 - apps/certd/logo.png | Bin 1489 -> 0 bytes apps/certimate/0.3.18/.env.sample | 3 - apps/certimate/0.3.18/data.yml | 17 - apps/certimate/0.3.18/docker-compose.yml | 17 - apps/certimate/README.md | 20 - apps/certimate/data.yml | 19 - apps/certimate/latest/.env.sample | 3 - apps/certimate/latest/data.yml | 17 - apps/certimate/latest/docker-compose.yml | 17 - apps/certimate/logo.png | Bin 1924 -> 0 bytes apps/changedetectionio/0.50/.env.sample | 3 - apps/changedetectionio/0.50/data.yml | 17 - .../changedetectionio/0.50/docker-compose.yml | 17 - apps/changedetectionio/README.md | 260 ---- apps/changedetectionio/data.yml | 19 - apps/changedetectionio/latest/.env.sample | 3 - apps/changedetectionio/latest/data.yml | 17 - .../latest/docker-compose.yml | 17 - apps/changedetectionio/logo.png | Bin 4600 -> 0 bytes apps/chatgpt-next-web/2.16.0/.env.sample | 6 - apps/chatgpt-next-web/2.16.0/data.yml | 40 - .../2.16.0/docker-compose.yml | 20 - apps/chatgpt-next-web/README.md | 186 --- apps/chatgpt-next-web/data.yml | 19 - apps/chatgpt-next-web/latest/.env.sample | 6 - apps/chatgpt-next-web/latest/data.yml | 40 - .../latest/docker-compose.yml | 20 - apps/chatgpt-next-web/logo.png | Bin 2283 -> 0 bytes apps/cloudbeaver/25.0.0/.env.sample | 3 - apps/cloudbeaver/25.0.0/data.yml | 17 - apps/cloudbeaver/25.0.0/docker-compose.yml | 18 - apps/cloudbeaver/README.md | 70 - apps/cloudbeaver/data.yml | 19 - apps/cloudbeaver/latest/.env.sample | 3 - apps/cloudbeaver/latest/data.yml | 17 - apps/cloudbeaver/latest/docker-compose.yml | 18 - apps/cloudbeaver/logo.png | Bin 1606 -> 0 bytes apps/cloudflared/2026.1.2/.env.sample | 2 - apps/cloudflared/2026.1.2/data.yml | 9 - apps/cloudflared/2026.1.2/docker-compose.yml | 14 - apps/cloudflared/README.md | 17 - apps/cloudflared/data.yml | 18 - apps/cloudflared/latest/.env.sample | 2 - apps/cloudflared/latest/data.yml | 9 - apps/cloudflared/latest/docker-compose.yml | 14 - apps/cloudflared/logo.png | Bin 3026 -> 0 bytes apps/cloudreve/4.1.3/.env.sample | 4 - apps/cloudreve/4.1.3/data.yml | 24 - apps/cloudreve/4.1.3/data/cloudreve.db | 0 apps/cloudreve/4.1.3/data/conf.ini | 0 apps/cloudreve/4.1.3/docker-compose.yml | 21 - apps/cloudreve/README.md | 110 -- apps/cloudreve/data.yml | 19 - apps/cloudreve/latest/.env.sample | 4 - apps/cloudreve/latest/data.yml | 24 - apps/cloudreve/latest/data/cloudreve.db | 0 apps/cloudreve/latest/data/conf.ini | 0 apps/cloudreve/latest/docker-compose.yml | 21 - apps/cloudreve/logo.png | Bin 2747 -> 0 bytes apps/code-server/4.108.2/.env.sample | 5 - apps/code-server/4.108.2/data.yml | 33 - apps/code-server/4.108.2/docker-compose.yml | 24 - apps/code-server/README.md | 78 -- apps/code-server/data.yml | 19 - apps/code-server/latest/.env.sample | 5 - apps/code-server/latest/data.yml | 33 - apps/code-server/latest/docker-compose.yml | 24 - apps/code-server/logo.png | Bin 4492 -> 0 bytes apps/dashy/3.1.0/.env.sample | 2 - apps/dashy/3.1.0/data.yml | 10 - apps/dashy/3.1.0/data/item-icons/.gitkeep | 0 apps/dashy/3.1.0/data/user-data/conf.yml | 47 - apps/dashy/3.1.0/docker-compose.yml | 28 - apps/dashy/3.1.0/scripts/init.sh | 3 - apps/dashy/README.md | 32 - apps/dashy/data.yml | 19 - apps/dashy/latest/.env.sample | 2 - apps/dashy/latest/data.yml | 10 - apps/dashy/latest/data/item-icons/.gitkeep | 0 apps/dashy/latest/data/user-data/conf.yml | 47 - apps/dashy/latest/docker-compose.yml | 28 - apps/dashy/latest/scripts/init.sh | 3 - apps/dashy/logo.png | Bin 9409 -> 0 bytes apps/ddns-go/6.15.0/.env.sample | 3 - apps/ddns-go/6.15.0/data.yml | 17 - apps/ddns-go/6.15.0/docker-compose.yml | 10 - apps/ddns-go/README.md | 5 - apps/ddns-go/data.yml | 19 - apps/ddns-go/latest-bridge/.env.sample | 3 - apps/ddns-go/latest-bridge/data.yml | 17 - apps/ddns-go/latest-bridge/docker-compose.yml | 17 - apps/ddns-go/latest/.env.sample | 3 - apps/ddns-go/latest/data.yml | 17 - apps/ddns-go/latest/docker-compose.yml | 10 - apps/ddns-go/logo.png | Bin 4768 -> 0 bytes apps/discourse/3.4.5/.env.sample | 40 - apps/discourse/3.4.5/data.yml | 321 ----- apps/discourse/3.4.5/docker-compose.yml | 111 -- apps/discourse/README.md | 5 - apps/discourse/data.yml | 19 - apps/discourse/latest/.env.sample | 40 - apps/discourse/latest/data.yml | 321 ----- apps/discourse/latest/docker-compose.yml | 111 -- apps/discourse/logo.png | Bin 8538 -> 0 bytes apps/discuz/3.4/.env.sample | 3 - apps/discuz/3.4/data.yml | 18 - apps/discuz/3.4/docker-compose.yml | 21 - apps/discuz/README.md | 73 -- apps/discuz/data.yml | 19 - apps/discuz/latest/.env.sample | 3 - apps/discuz/latest/data.yml | 18 - apps/discuz/latest/docker-compose.yml | 21 - apps/discuz/logo.png | Bin 7523 -> 0 bytes apps/dockge/1.5.0/.env.sample | 4 - apps/dockge/1.5.0/data.yml | 24 - apps/dockge/1.5.0/docker-compose.yml | 22 - apps/dockge/README.md | 165 --- apps/dockge/data.yml | 19 - apps/dockge/latest/.env.sample | 4 - apps/dockge/latest/data.yml | 24 - apps/dockge/latest/docker-compose.yml | 22 - apps/dockge/logo.png | Bin 3286 -> 0 bytes apps/domain-admin/1.6.69/.env.sample | 3 - apps/domain-admin/1.6.69/data.yml | 17 - apps/domain-admin/1.6.69/docker-compose.yml | 18 - apps/domain-admin/README.md | 89 -- apps/domain-admin/data.yml | 19 - apps/domain-admin/latest/.env.sample | 3 - apps/domain-admin/latest/data.yml | 17 - apps/domain-admin/latest/docker-compose.yml | 18 - apps/domain-admin/logo.png | Bin 7876 -> 0 bytes apps/dosgame/README.md | 52 - apps/dosgame/data.yml | 19 - apps/dosgame/latest/.env.sample | 2 - apps/dosgame/latest/data.yml | 10 - apps/dosgame/latest/docker-compose.yml | 20 - apps/dosgame/logo.png | Bin 8039 -> 0 bytes apps/easyimage2/2.8.3-r1/.env.sample | 3 - apps/easyimage2/2.8.3-r1/data.yml | 17 - apps/easyimage2/2.8.3-r1/docker-compose.yml | 23 - apps/easyimage2/README.md | 76 -- apps/easyimage2/data.yml | 19 - apps/easyimage2/latest/.env.sample | 3 - apps/easyimage2/latest/data.yml | 17 - apps/easyimage2/latest/docker-compose.yml | 23 - apps/easyimage2/logo.png | Bin 4768 -> 0 bytes apps/filebrowser/2.36.1/.env.sample | 3 - apps/filebrowser/2.36.1/data.yml | 17 - .../filebrowser/2.36.1/data/.filebrowser.json | 8 - apps/filebrowser/2.36.1/data/database.db | 0 apps/filebrowser/2.36.1/docker-compose.yml | 20 - apps/filebrowser/README.md | 44 - apps/filebrowser/data.yml | 19 - apps/filebrowser/latest/.env.sample | 3 - apps/filebrowser/latest/data.yml | 17 - .../filebrowser/latest/data/.filebrowser.json | 8 - apps/filebrowser/latest/data/database.db | 0 apps/filebrowser/latest/docker-compose.yml | 20 - apps/filebrowser/logo.png | Bin 7872 -> 0 bytes apps/filecodebox/README.md | 37 - apps/filecodebox/beta/.env.sample | 3 - apps/filecodebox/beta/data.yml | 17 - apps/filecodebox/beta/docker-compose.yml | 17 - apps/filecodebox/data.yml | 19 - apps/filecodebox/logo.png | Bin 6396 -> 0 bytes apps/flarum/1.8.10/.env.sample | 10 - apps/flarum/1.8.10/data.yml | 78 -- apps/flarum/1.8.10/docker-compose.yml | 35 - apps/flarum/README.md | 69 - apps/flarum/data.yml | 19 - apps/flarum/latest/.env.sample | 10 - apps/flarum/latest/data.yml | 78 -- apps/flarum/latest/docker-compose.yml | 35 - apps/flarum/logo.png | Bin 2192 -> 0 bytes apps/focalboard/7.11.4/.env.sample | 2 - apps/focalboard/7.11.4/data.yml | 10 - apps/focalboard/7.11.4/data/config.json | 16 - .../7.11.4/data/postgres-config.json | 17 - apps/focalboard/7.11.4/docker-compose.yml | 22 - apps/focalboard/README.md | 149 --- apps/focalboard/data.yml | 19 - apps/focalboard/latest/.env.sample | 2 - apps/focalboard/latest/data.yml | 10 - apps/focalboard/latest/data/config.json | 16 - .../latest/data/postgres-config.json | 17 - apps/focalboard/latest/docker-compose.yml | 22 - apps/focalboard/logo.png | Bin 4069 -> 0 bytes apps/freshrss/1.26.3/.env.sample | 7 - apps/freshrss/1.26.3/data.yml | 50 - apps/freshrss/1.26.3/docker-compose.yml | 23 - apps/freshrss/README.md | 18 - apps/freshrss/data.yml | 19 - apps/freshrss/latest/.env.sample | 7 - apps/freshrss/latest/data.yml | 50 - apps/freshrss/latest/docker-compose.yml | 23 - apps/freshrss/logo.png | Bin 5706 -> 0 bytes apps/frpc/0.63.0/.env.sample | 1 - apps/frpc/0.63.0/data.yml | 23 - apps/frpc/0.63.0/data/frpc.ini | 9 - apps/frpc/0.63.0/data/frpc.toml | 42 - apps/frpc/0.63.0/data/frpc_full.ini | 365 ------ apps/frpc/0.63.0/data/frpc_full.toml | 366 ------ apps/frpc/0.63.0/data/frps.ini | 2 - apps/frpc/0.63.0/data/frps.toml | 42 - apps/frpc/0.63.0/data/frps_full.ini | 168 --- apps/frpc/0.63.0/data/frps_full.toml | 164 --- apps/frpc/0.63.0/docker-compose.yml | 12 - apps/frpc/README.md | 1152 ----------------- apps/frpc/data.yml | 19 - apps/frpc/latest/.env.sample | 1 - apps/frpc/latest/data.yml | 23 - apps/frpc/latest/data/frpc.ini | 9 - apps/frpc/latest/data/frpc.toml | 42 - apps/frpc/latest/data/frpc_full.ini | 365 ------ apps/frpc/latest/data/frpc_full.toml | 366 ------ apps/frpc/latest/data/frps.ini | 2 - apps/frpc/latest/data/frps.toml | 42 - apps/frpc/latest/data/frps_full.ini | 168 --- apps/frpc/latest/data/frps_full.toml | 164 --- apps/frpc/latest/docker-compose.yml | 12 - apps/frpc/logo.png | Bin 4768 -> 0 bytes apps/frps/0.63.0/.env.sample | 2 - apps/frps/0.63.0/data.yml | 23 - apps/frps/0.63.0/data/frpc.ini | 9 - apps/frps/0.63.0/data/frpc.toml | 42 - apps/frps/0.63.0/data/frpc_full.ini | 365 ------ apps/frps/0.63.0/data/frpc_full.toml | 366 ------ apps/frps/0.63.0/data/frps.ini | 2 - apps/frps/0.63.0/data/frps.toml | 42 - apps/frps/0.63.0/data/frps_full.ini | 168 --- apps/frps/0.63.0/data/frps_full.toml | 164 --- apps/frps/0.63.0/docker-compose.yml | 12 - apps/frps/README.md | 1152 ----------------- apps/frps/data.yml | 19 - apps/frps/latest/.env.sample | 2 - apps/frps/latest/data.yml | 23 - apps/frps/latest/data/frpc.ini | 9 - apps/frps/latest/data/frpc.toml | 42 - apps/frps/latest/data/frpc_full.ini | 365 ------ apps/frps/latest/data/frpc_full.toml | 366 ------ apps/frps/latest/data/frps.ini | 2 - apps/frps/latest/data/frps.toml | 42 - apps/frps/latest/data/frps_full.ini | 168 --- apps/frps/latest/data/frps_full.toml | 164 --- apps/frps/latest/docker-compose.yml | 12 - apps/frps/logo.png | Bin 4768 -> 0 bytes apps/glance/0.8.4/.env.sample | 3 - apps/glance/0.8.4/data.yml | 17 - apps/glance/0.8.4/data/glance.yml | 106 -- apps/glance/0.8.4/docker-compose.yml | 19 - apps/glance/README.md | 3 - apps/glance/data.yml | 19 - apps/glance/latest/.env.sample | 3 - apps/glance/latest/data.yml | 17 - apps/glance/latest/data/glance.yml | 106 -- apps/glance/latest/docker-compose.yml | 19 - apps/glance/logo.png | Bin 4504 -> 0 bytes apps/gotify/2.6.3/.env.sample | 30 - apps/gotify/2.6.3/data.yml | 235 ---- apps/gotify/2.6.3/docker-compose.yml | 46 - apps/gotify/README.md | 31 - apps/gotify/data.yml | 19 - apps/gotify/latest/.env.sample | 30 - apps/gotify/latest/data.yml | 235 ---- apps/gotify/latest/docker-compose.yml | 46 - apps/gotify/logo.png | Bin 7232 -> 0 bytes apps/grafana/12.0.2/.env.sample | 2 - apps/grafana/12.0.2/10.4.3/.env.sample | 2 - apps/grafana/12.0.2/10.4.3/data.yml | 10 - apps/grafana/12.0.2/10.4.3/docker-compose.yml | 18 - apps/grafana/12.0.2/data.yml | 10 - apps/grafana/12.0.2/docker-compose.yml | 18 - apps/grafana/README.md | 59 - apps/grafana/data.yml | 19 - apps/grafana/latest/.env.sample | 2 - apps/grafana/latest/data.yml | 10 - apps/grafana/latest/docker-compose.yml | 18 - apps/grafana/logo.png | Bin 4458 -> 0 bytes apps/heimdall/2.7.6/.env.sample | 4 - apps/heimdall/2.7.6/data.yml | 25 - apps/heimdall/2.7.6/docker-compose.yml | 22 - apps/heimdall/README.md | 219 ---- apps/heimdall/data.yml | 19 - apps/heimdall/latest/.env.sample | 4 - apps/heimdall/latest/data.yml | 25 - apps/heimdall/latest/docker-compose.yml | 22 - apps/heimdall/logo.png | Bin 2680 -> 0 bytes .../2023.8.0.dev20230723/.env.sample | 2 - .../2023.8.0.dev20230723/data.yml | 9 - .../2023.8.0.dev20230723/docker-compose.yml | 12 - apps/home-assistant/README.md | 33 - apps/home-assistant/data.yml | 19 - apps/home-assistant/latest/.env.sample | 2 - apps/home-assistant/latest/data.yml | 9 - apps/home-assistant/latest/docker-compose.yml | 12 - apps/home-assistant/logo.png | Bin 7060 -> 0 bytes apps/homepage/1.3.2/.env.sample | 2 - apps/homepage/1.3.2/data.yml | 10 - apps/homepage/1.3.2/docker-compose.yml | 21 - apps/homepage/1.3.2/scripts/init.sh | 3 - apps/homepage/README.md | 40 - apps/homepage/data.yml | 19 - apps/homepage/latest/.env.sample | 2 - apps/homepage/latest/data.yml | 10 - apps/homepage/latest/docker-compose.yml | 21 - apps/homepage/latest/scripts/init.sh | 3 - apps/homepage/logo.png | Bin 3353 -> 0 bytes apps/it-tools/2024.10.22-7ca5933/.env.sample | 2 - apps/it-tools/2024.10.22-7ca5933/data.yml | 10 - .../2024.10.22-7ca5933/docker-compose.yml | 15 - apps/it-tools/README.md | 120 -- apps/it-tools/data.yml | 19 - apps/it-tools/latest/.env.sample | 2 - apps/it-tools/latest/data.yml | 10 - apps/it-tools/latest/docker-compose.yml | 15 - apps/it-tools/logo.png | Bin 5551 -> 0 bytes apps/jellyfin/10.10.7/.env.sample | 4 - apps/jellyfin/10.10.7/data.yml | 24 - apps/jellyfin/10.10.7/docker-compose.yml | 22 - apps/jellyfin/README.md | 176 --- apps/jellyfin/data.yml | 19 - apps/jellyfin/latest/.env.sample | 4 - apps/jellyfin/latest/data.yml | 24 - apps/jellyfin/latest/docker-compose.yml | 22 - apps/jellyfin/logo.png | Bin 3440 -> 0 bytes apps/jellyfin/nyanmisaka-latest/.env.sample | 4 - apps/jellyfin/nyanmisaka-latest/data.yml | 24 - .../nyanmisaka-latest/docker-compose.yml | 22 - apps/jellyfin/unstable/.env.sample | 4 - apps/jellyfin/unstable/data.yml | 24 - apps/jellyfin/unstable/docker-compose.yml | 22 - apps/jsonhero/README.md | 154 --- apps/jsonhero/data.yml | 19 - apps/jsonhero/latest/.env.sample | 2 - apps/jsonhero/latest/data.yml | 10 - apps/jsonhero/latest/docker-compose.yml | 15 - apps/jsonhero/logo.png | Bin 4097 -> 0 bytes apps/kkfileview/4.1.0/.env.sample | 2 - apps/kkfileview/4.1.0/data.yml | 10 - apps/kkfileview/4.1.0/docker-compose.yml | 15 - apps/kkfileview/README.md | 173 --- apps/kkfileview/data.yml | 19 - apps/kkfileview/latest/.env.sample | 2 - apps/kkfileview/latest/data.yml | 10 - apps/kkfileview/latest/docker-compose.yml | 15 - apps/kkfileview/logo.png | Bin 5959 -> 0 bytes apps/koodo-reader/README.md | 136 -- apps/koodo-reader/data.yml | 19 - apps/koodo-reader/latest/.env.sample | 2 - apps/koodo-reader/latest/data.yml | 10 - apps/koodo-reader/latest/docker-compose.yml | 15 - apps/koodo-reader/logo.png | Bin 8819 -> 0 bytes apps/linux-command/1.21.0/.env.sample | 2 - apps/linux-command/1.21.0/data.yml | 10 - apps/linux-command/1.21.0/docker-compose.yml | 15 - apps/linux-command/README.md | 16 - apps/linux-command/data.yml | 19 - apps/linux-command/latest/.env.sample | 2 - apps/linux-command/latest/data.yml | 10 - apps/linux-command/latest/docker-compose.yml | 15 - apps/linux-command/logo.png | Bin 6575 -> 0 bytes apps/lobe-chat/1.36.30/.env.sample | 6 - apps/lobe-chat/1.36.30/data.yml | 40 - apps/lobe-chat/1.36.30/docker-compose.yml | 20 - apps/lobe-chat/README.md | 12 - apps/lobe-chat/data.yml | 19 - apps/lobe-chat/latest/.env.sample | 6 - apps/lobe-chat/latest/data.yml | 40 - apps/lobe-chat/latest/docker-compose.yml | 20 - apps/lobe-chat/logo.png | Bin 9050 -> 0 bytes apps/lsky-pro/README.md | 98 -- apps/lsky-pro/data.yml | 19 - apps/lsky-pro/latest/.env.sample | 3 - apps/lsky-pro/latest/data.yml | 17 - apps/lsky-pro/latest/docker-compose.yml | 19 - apps/lsky-pro/logo.png | Bin 4317 -> 0 bytes apps/maddy-mail/0.8.1/.env.sample | 8 - apps/maddy-mail/0.8.1/data.yml | 56 - apps/maddy-mail/0.8.1/docker-compose.yml | 28 - apps/maddy-mail/README.md | 126 -- apps/maddy-mail/data.yml | 19 - apps/maddy-mail/latest/.env.sample | 8 - apps/maddy-mail/latest/data.yml | 56 - apps/maddy-mail/latest/docker-compose.yml | 28 - apps/maddy-mail/logo.png | Bin 7045 -> 0 bytes apps/mcsmanager-daemon/3.4.0/.env.sample | 3 - apps/mcsmanager-daemon/3.4.0/data.yml | 17 - .../3.4.0/docker-compose.yml | 18 - apps/mcsmanager-daemon/README.md | 244 ---- apps/mcsmanager-daemon/data.yml | 19 - apps/mcsmanager-daemon/latest/.env.sample | 3 - apps/mcsmanager-daemon/latest/data.yml | 17 - .../latest/docker-compose.yml | 18 - apps/mcsmanager-daemon/logo.png | Bin 2198 -> 0 bytes apps/mcsmanager-web/10.1.0/.env.sample | 3 - apps/mcsmanager-web/10.1.0/data.yml | 17 - apps/mcsmanager-web/10.1.0/docker-compose.yml | 17 - apps/mcsmanager-web/README.md | 244 ---- apps/mcsmanager-web/data.yml | 19 - apps/mcsmanager-web/latest/.env.sample | 3 - apps/mcsmanager-web/latest/data.yml | 17 - apps/mcsmanager-web/latest/docker-compose.yml | 17 - apps/mcsmanager-web/logo.png | Bin 2198 -> 0 bytes apps/memcached/1.6.19/.env.sample | 3 - apps/memcached/1.6.19/data.yml | 17 - apps/memcached/1.6.19/docker-compose.yml | 15 - apps/memcached/README.md | 54 - apps/memcached/data.yml | 19 - apps/memcached/latest/.env.sample | 3 - apps/memcached/latest/data.yml | 17 - apps/memcached/latest/docker-compose.yml | 15 - apps/memcached/logo.png | Bin 3533 -> 0 bytes apps/mysql/5.5.62/conf/my.cnf | 5 - apps/mysql/5.5.62/data.yml | 17 - apps/mysql/5.5.62/docker-compose.yml | 27 - apps/mysql/5.6.51/conf/my.cnf | 71 - apps/mysql/5.6.51/data.yml | 17 - apps/mysql/5.6.51/docker-compose.yml | 26 - apps/mysql/5.7.44/conf/my.cnf | 42 - apps/mysql/5.7.44/data.yml | 17 - apps/mysql/5.7.44/docker-compose.yml | 28 - apps/mysql/8.0.40/conf/my.cnf | 19 - apps/mysql/8.0.40/data.yml | 17 - apps/mysql/8.0.40/docker-compose.yml | 24 - apps/mysql/8.4.3/conf/my.cnf | 13 - apps/mysql/8.4.3/data.yml | 17 - apps/mysql/8.4.3/docker-compose.yml | 24 - apps/mysql/8.4.3/scripts/upgrade.sh | 9 - apps/mysql/README.md | 37 - apps/mysql/README_en.md | 37 - apps/mysql/data.yml | 19 - apps/mysql/logo.png | Bin 3617 -> 0 bytes apps/navidrome/README.md | 93 -- apps/navidrome/data.yml | 19 - apps/navidrome/latest/.env.sample | 4 - apps/navidrome/latest/data.yml | 24 - apps/navidrome/latest/docker-compose.yml | 24 - apps/navidrome/logo.png | Bin 3944 -> 0 bytes apps/navidrome/pr-2295/.env.sample | 4 - apps/navidrome/pr-2295/data.yml | 24 - apps/navidrome/pr-2295/docker-compose.yml | 24 - apps/neko/README.md | 33 - apps/neko/data.yml | 19 - apps/neko/latest/.env.sample | 37 - apps/neko/latest/data.yml | 316 ----- apps/neko/latest/data/Downloads/.gitkeep | 0 apps/neko/latest/docker-compose.yml | 52 - apps/neko/latest/scripts/init.sh | 3 - apps/neko/logo.png | Bin 2796 -> 0 bytes apps/nextcloud/32.0.5/.env.sample | 3 - apps/nextcloud/32.0.5/data.yml | 17 - apps/nextcloud/32.0.5/docker-compose.yml | 22 - apps/nextcloud/README.md | 163 --- apps/nextcloud/data.yml | 19 - apps/nextcloud/latest/.env.sample | 3 - apps/nextcloud/latest/data.yml | 17 - apps/nextcloud/latest/docker-compose.yml | 22 - apps/nextcloud/logo.png | Bin 8999 -> 0 bytes apps/nginx-proxy-manager/README.md | 122 -- apps/nginx-proxy-manager/data.yml | 19 - .../github-pr-3281/.env.sample | 6 - .../github-pr-3281/data.yml | 40 - .../github-pr-3281/docker-compose.yml | 20 - apps/nginx-proxy-manager/latest/.env.sample | 6 - apps/nginx-proxy-manager/latest/data.yml | 40 - .../latest/docker-compose.yml | 20 - apps/nginx-proxy-manager/logo.png | Bin 5905 -> 0 bytes .../nginx-proxy-manager/zh-latest/.env.sample | 6 - apps/nginx-proxy-manager/zh-latest/data.yml | 40 - .../zh-latest/docker-compose.yml | 20 - apps/nodebb/2.8/.env.sample | 2 - apps/nodebb/2.8/data.yml | 10 - apps/nodebb/2.8/data/.gitkeep | 0 apps/nodebb/2.8/docker-compose.yml | 17 - apps/nodebb/2.8/scripts/init.sh | 3 - apps/nodebb/README.md | 13 - apps/nodebb/data.yml | 18 - apps/nodebb/latest/.env.sample | 2 - apps/nodebb/latest/data.yml | 10 - apps/nodebb/latest/data/.gitkeep | 0 apps/nodebb/latest/docker-compose.yml | 17 - apps/nodebb/latest/scripts/init.sh | 3 - apps/nodebb/logo.png | Bin 3102 -> 0 bytes apps/ntfy/2.12.0/.env.sample | 6 - apps/ntfy/2.12.0/data.yml | 39 - apps/ntfy/2.12.0/data/ntfy/server.yml.sample | 372 ------ apps/ntfy/2.12.0/docker-compose.yml | 29 - apps/ntfy/README.md | 28 - apps/ntfy/data.yml | 19 - apps/ntfy/latest/.env.sample | 6 - apps/ntfy/latest/data.yml | 39 - apps/ntfy/latest/data/ntfy/server.yml.sample | 372 ------ apps/ntfy/latest/docker-compose.yml | 29 - apps/ntfy/logo.png | Bin 5552 -> 0 bytes apps/onedev/14.1.1/.env.sample | 4 - apps/onedev/14.1.1/data.yml | 25 - apps/onedev/14.1.1/docker-compose.yml | 19 - apps/onedev/README.md | 140 -- apps/onedev/data.yml | 19 - apps/onedev/latest/.env.sample | 4 - apps/onedev/latest/data.yml | 25 - apps/onedev/latest/docker-compose.yml | 19 - apps/onedev/logo.png | Bin 5285 -> 0 bytes apps/onlyoffice/9.2.1.1/.env.sample | 4 - apps/onlyoffice/9.2.1.1/data.yml | 26 - apps/onlyoffice/9.2.1.1/docker-compose.yml | 22 - apps/onlyoffice/README.md | 149 --- apps/onlyoffice/data.yml | 19 - apps/onlyoffice/latest/.env.sample | 4 - apps/onlyoffice/latest/data.yml | 26 - apps/onlyoffice/latest/docker-compose.yml | 22 - apps/onlyoffice/logo.png | Bin 3476 -> 0 bytes apps/openlitespeed/1.8.1-lsphp74/.env.sample | 6 - apps/openlitespeed/1.8.1-lsphp74/data.yml | 40 - .../data/bin/container/appinstallctl.sh | 660 ---------- .../data/bin/container/certhookctl.sh | 18 - .../data/bin/container/domainctl.sh | 160 --- .../data/bin/container/owaspctl.sh | 236 ---- .../data/bin/container/serialctl.sh | 84 -- .../1.8.1-lsphp74/data/sites/.gitignore | 2 - .../1.8.1-lsphp74/docker-compose.yml | 29 - apps/openlitespeed/1.8.3-lsphp81/.env.sample | 6 - apps/openlitespeed/1.8.3-lsphp81/data.yml | 40 - .../data/bin/container/appinstallctl.sh | 660 ---------- .../data/bin/container/certhookctl.sh | 18 - .../data/bin/container/domainctl.sh | 160 --- .../data/bin/container/owaspctl.sh | 236 ---- .../data/bin/container/serialctl.sh | 84 -- .../1.8.3-lsphp81/data/sites/.gitignore | 2 - .../1.8.3-lsphp81/docker-compose.yml | 29 - apps/openlitespeed/README.md | 43 - apps/openlitespeed/data.yml | 19 - apps/openlitespeed/latest/.env.sample | 6 - apps/openlitespeed/latest/data.yml | 40 - .../data/bin/container/appinstallctl.sh | 660 ---------- .../latest/data/bin/container/certhookctl.sh | 18 - .../latest/data/bin/container/domainctl.sh | 160 --- .../latest/data/bin/container/owaspctl.sh | 236 ---- .../latest/data/bin/container/serialctl.sh | 84 -- .../latest/data/sites/.gitignore | 2 - apps/openlitespeed/latest/docker-compose.yml | 29 - apps/openlitespeed/logo.png | Bin 7056 -> 0 bytes apps/pgadmin4/9.5/.env.sample | 4 - apps/pgadmin4/9.5/data.yml | 26 - apps/pgadmin4/9.5/docker-compose.yml | 25 - apps/pgadmin4/README.md | 286 ---- apps/pgadmin4/data.yml | 19 - apps/pgadmin4/latest/.env.sample | 4 - apps/pgadmin4/latest/data.yml | 26 - apps/pgadmin4/latest/docker-compose.yml | 25 - apps/pgadmin4/logo.png | Bin 2178 -> 0 bytes apps/photoprism/231128/.env.sample | 16 - apps/photoprism/231128/data.yml | 107 -- apps/photoprism/231128/docker-compose.yml | 80 -- apps/photoprism/README.md | 119 -- apps/photoprism/data.yml | 19 - apps/photoprism/latest/.env.sample | 16 - apps/photoprism/latest/data.yml | 107 -- apps/photoprism/latest/docker-compose.yml | 80 -- apps/photoprism/logo.png | Bin 4424 -> 0 bytes apps/photoprism/sqlite-latest/.env.sample | 16 - apps/photoprism/sqlite-latest/data.yml | 138 -- .../sqlite-latest/docker-compose.yml | 80 -- apps/prometheus/3.4.2/.env.sample | 2 - apps/prometheus/3.4.2/data.yml | 10 - apps/prometheus/3.4.2/data/prometheus.yml | 29 - apps/prometheus/3.4.2/docker-compose.yml | 17 - apps/prometheus/README.md | 197 --- apps/prometheus/data.yml | 19 - apps/prometheus/latest/.env.sample | 2 - apps/prometheus/latest/data.yml | 10 - apps/prometheus/latest/data/prometheus.yml | 29 - apps/prometheus/latest/docker-compose.yml | 17 - apps/prometheus/logo.png | Bin 5765 -> 0 bytes apps/qBittorrent/4.3.5/.env.sample | 5 - apps/qBittorrent/4.3.5/data.yml | 32 - apps/qBittorrent/4.3.5/data/.cache/.gitkeep | 0 .../data/.config/qBittorrent/qBittorrent.conf | 75 -- apps/qBittorrent/4.3.5/data/.local/.gitkeep | 0 .../qBittorrent/4.3.5/data/downloads/.gitkeep | 0 apps/qBittorrent/4.3.5/docker-compose.yml | 27 - apps/qBittorrent/4.5.2/.env.sample | 5 - apps/qBittorrent/4.5.2/data.yml | 32 - apps/qBittorrent/4.5.2/data/.cache/.gitkeep | 0 .../data/.config/qBittorrent/qBittorrent.conf | 75 -- apps/qBittorrent/4.5.2/data/.local/.gitkeep | 0 .../qBittorrent/4.5.2/data/downloads/.gitkeep | 0 apps/qBittorrent/4.5.2/docker-compose.yml | 27 - apps/qBittorrent/README.md | 73 -- apps/qBittorrent/data.yml | 19 - apps/qBittorrent/latest/.env.sample | 5 - apps/qBittorrent/latest/data.yml | 32 - apps/qBittorrent/latest/data/.cache/.gitkeep | 0 .../data/.config/qBittorrent/qBittorrent.conf | 75 -- apps/qBittorrent/latest/data/.local/.gitkeep | 0 .../latest/data/downloads/.gitkeep | 0 apps/qBittorrent/latest/docker-compose.yml | 27 - apps/qBittorrent/logo.png | Bin 5426 -> 0 bytes apps/qiandao/20250129/.env.sample | 5 - apps/qiandao/20250129/data.yml | 35 - apps/qiandao/20250129/docker-compose.yml | 152 --- apps/qiandao/README.md | 134 -- apps/qiandao/data.yml | 19 - apps/qiandao/latest/.env.sample | 5 - apps/qiandao/latest/data.yml | 35 - apps/qiandao/latest/docker-compose.yml | 152 --- apps/qiandao/logo.png | Bin 2334 -> 0 bytes apps/reader/2.7.4/.env.sample | 7 - apps/reader/2.7.4/data.yml | 51 - apps/reader/2.7.4/docker-compose.yml | 28 - apps/reader/3.2.13/.env.sample | 7 - apps/reader/3.2.13/data.yml | 51 - apps/reader/3.2.13/docker-compose.yml | 28 - apps/reader/README.md | 87 -- apps/reader/data.yml | 19 - apps/reader/latest/.env.sample | 7 - apps/reader/latest/data.yml | 51 - apps/reader/latest/docker-compose.yml | 28 - apps/reader/logo.png | Bin 5112 -> 0 bytes apps/rustdesk/README.md | 241 ---- apps/rustdesk/data.yml | 19 - apps/rustdesk/latest/.env.sample | 7 - apps/rustdesk/latest/data.yml | 50 - apps/rustdesk/latest/docker-compose.yml | 49 - apps/rustdesk/logo.png | Bin 2210 -> 0 bytes apps/rustdesk/s6-latest/.env.sample | 7 - apps/rustdesk/s6-latest/data.yml | 50 - apps/rustdesk/s6-latest/docker-compose.yml | 25 - apps/siyuan/3.2.0/.env.sample | 3 - apps/siyuan/3.2.0/data.yml | 17 - apps/siyuan/3.2.0/docker-compose.yml | 19 - apps/siyuan/README.md | 301 ----- apps/siyuan/data.yml | 19 - apps/siyuan/latest/.env.sample | 3 - apps/siyuan/latest/data.yml | 17 - apps/siyuan/latest/docker-compose.yml | 19 - apps/siyuan/logo.png | Bin 6417 -> 0 bytes apps/synapse/1.146.0/.env.sample | 2 - apps/synapse/1.146.0/data.yml | 10 - apps/synapse/1.146.0/docker-compose.yml | 29 - apps/synapse/README.md | 244 ---- apps/synapse/data.yml | 19 - apps/synapse/latest/.env.sample | 2 - apps/synapse/latest/data.yml | 10 - apps/synapse/latest/docker-compose.yml | 29 - apps/synapse/logo.png | Bin 2949 -> 0 bytes apps/trilium/0.63.7/.env.sample | 3 - apps/trilium/0.63.7/data.yml | 17 - apps/trilium/0.63.7/docker-compose.yml | 18 - apps/trilium/README.md | 77 -- apps/trilium/data.yml | 19 - apps/trilium/latest/.env.sample | 3 - apps/trilium/latest/data.yml | 17 - apps/trilium/latest/docker-compose.yml | 18 - apps/trilium/logo.png | Bin 4890 -> 0 bytes apps/twikoo/README.md | 137 -- apps/twikoo/arm32v7/.env.sample | 3 - apps/twikoo/arm32v7/data.yml | 17 - apps/twikoo/arm32v7/docker-compose.yml | 20 - apps/twikoo/data.yml | 19 - apps/twikoo/latest/.env.sample | 3 - apps/twikoo/latest/data.yml | 17 - apps/twikoo/latest/docker-compose.yml | 20 - apps/twikoo/logo.png | Bin 3268 -> 0 bytes apps/uuwaf/6.2.0/.env.sample | 7 - apps/uuwaf/6.2.0/data.yml | 47 - apps/uuwaf/6.2.0/docker-compose.yml | 58 - apps/uuwaf/6.2.0/low-memory-my.cnf | 63 - apps/uuwaf/6.2.0/scripts/uninstall.sh | 3 - apps/uuwaf/README.md | 26 - apps/uuwaf/data.yml | 19 - apps/uuwaf/logo.png | Bin 1765 -> 0 bytes apps/verdaccio/6.2.4/.env.sample | 9 - apps/verdaccio/6.2.4/data.yml | 59 - apps/verdaccio/6.2.4/data/config/config.yaml | 203 --- apps/verdaccio/6.2.4/data/plugins/.gitkeep | 0 apps/verdaccio/6.2.4/data/storage/.gitkeep | 0 apps/verdaccio/6.2.4/docker-compose.yml | 25 - apps/verdaccio/6.2.4/scripts/init.sh | 3 - apps/verdaccio/README.md | 17 - apps/verdaccio/data.yml | 19 - apps/verdaccio/logo.png | Bin 6802 -> 0 bytes apps/verdaccio/nightly-master/.env.sample | 9 - apps/verdaccio/nightly-master/data.yml | 59 - .../nightly-master/data/config/config.yaml | 203 --- .../nightly-master/data/plugins/.gitkeep | 0 .../nightly-master/data/storage/.gitkeep | 0 .../nightly-master/docker-compose.yml | 25 - apps/verdaccio/nightly-master/scripts/init.sh | 3 - apps/wallos/4.6.0/.env.sample | 3 - apps/wallos/4.6.0/data.yml | 16 - apps/wallos/4.6.0/docker-compose.yml | 20 - apps/wallos/README.md | 26 - apps/wallos/data.yml | 19 - apps/wallos/latest/.env.sample | 3 - apps/wallos/latest/data.yml | 16 - apps/wallos/latest/docker-compose.yml | 20 - apps/wallos/logo.png | Bin 2877 -> 0 bytes apps/watchtower/1.7.1/.env.sample | 3 - apps/watchtower/1.7.1/data.yml | 16 - apps/watchtower/1.7.1/docker-compose.yml | 19 - apps/watchtower/README.md | 175 --- apps/watchtower/data.yml | 19 - apps/watchtower/latest/.env.sample | 3 - apps/watchtower/latest/data.yml | 16 - apps/watchtower/latest/docker-compose.yml | 19 - apps/watchtower/logo.png | Bin 2471 -> 0 bytes apps/web-check/README.md | 493 ------- apps/web-check/data.yml | 19 - apps/web-check/latest/.env.sample | 2 - apps/web-check/latest/data.yml | 10 - apps/web-check/latest/docker-compose.yml | 16 - apps/web-check/logo.png | Bin 6266 -> 0 bytes apps/windows/5.14/.env.sample | 12 - apps/windows/5.14/data.yml | 95 -- apps/windows/5.14/docker-compose.yml | 32 - apps/windows/README.md | 48 - apps/windows/data.yml | 19 - apps/windows/latest-online/.env.sample | 15 - apps/windows/latest-online/data.yml | 116 -- apps/windows/latest-online/docker-compose.yml | 35 - apps/windows/latest/.env.sample | 12 - apps/windows/latest/data.yml | 95 -- apps/windows/latest/docker-compose.yml | 32 - apps/windows/logo.png | Bin 7042 -> 0 bytes apps/woodpecker/3.7.0/.env.sample | 21 - apps/woodpecker/3.7.0/data.yml | 143 -- apps/woodpecker/3.7.0/docker-compose.yml | 72 -- apps/woodpecker/README.md | 123 -- apps/woodpecker/data.yml | 19 - apps/woodpecker/latest/.env.sample | 21 - apps/woodpecker/latest/data.yml | 143 -- apps/woodpecker/latest/docker-compose.yml | 72 -- apps/woodpecker/logo.png | Bin 5286 -> 0 bytes apps/woodpecker/mysql-latest/.env.sample | 26 - apps/woodpecker/mysql-latest/data.yml | 194 --- .../mysql-latest/docker-compose.yml | 67 - apps/yesplaymusic/0.4.9/.env.sample | 3 - apps/yesplaymusic/0.4.9/data.yml | 10 - apps/yesplaymusic/0.4.9/docker-compose.yml | 15 - apps/yesplaymusic/README.md | 260 ---- apps/yesplaymusic/data.yml | 19 - apps/yesplaymusic/latest/.env.sample | 3 - apps/yesplaymusic/latest/data.yml | 10 - apps/yesplaymusic/latest/docker-compose.yml | 15 - apps/yesplaymusic/logo.png | Bin 4120 -> 0 bytes apps/yourls/1.10.1/.env.sample | 12 - apps/yourls/1.10.1/data.yml | 94 -- apps/yourls/1.10.1/docker-compose.yml | 26 - apps/yourls/README.md | 116 -- apps/yourls/data.yml | 19 - apps/yourls/latest/.env.sample | 12 - apps/yourls/latest/data.yml | 94 -- apps/yourls/latest/docker-compose.yml | 26 - apps/yourls/logo.png | Bin 5534 -> 0 bytes apps/zabbix-agent/6.4.4/.env.sample | 5 - apps/zabbix-agent/6.4.4/data.yml | 32 - apps/zabbix-agent/6.4.4/docker-compose.yml | 19 - apps/zabbix-agent/README.md | 32 - apps/zabbix-agent/data.yml | 19 - apps/zabbix-agent/latest/.env.sample | 5 - apps/zabbix-agent/latest/data.yml | 32 - apps/zabbix-agent/latest/docker-compose.yml | 19 - apps/zabbix-agent/logo.png | Bin 5442 -> 0 bytes apps/zabbix-server/6.4.13&mysql/.env.sample | 7 - apps/zabbix-server/6.4.13&mysql/conf/my.cnf | 19 - apps/zabbix-server/6.4.13&mysql/data.yml | 50 - .../6.4.13&mysql/docker-compose.yml | 76 -- .../zabbix-server/6.4.13-postgres/.env.sample | 8 - apps/zabbix-server/6.4.13-postgres/data.yml | 58 - .../6.4.13-postgres/data/.gitkeep | 0 .../6.4.13-postgres/docker-compose.yml | 55 - .../6.4.13-postgres/scripts/init.sh | 3 - apps/zabbix-server/6.4.13/.env.sample | 8 - apps/zabbix-server/6.4.13/data.yml | 62 - apps/zabbix-server/6.4.13/docker-compose.yml | 51 - apps/zabbix-server/README.md | 57 - apps/zabbix-server/data.yml | 19 - apps/zabbix-server/latest&mysql/.env.sample | 7 - apps/zabbix-server/latest&mysql/conf/my.cnf | 19 - apps/zabbix-server/latest&mysql/data.yml | 50 - .../latest&mysql/docker-compose.yml | 76 -- .../zabbix-server/latest-postgres/.env.sample | 8 - apps/zabbix-server/latest-postgres/data.yml | 58 - .../latest-postgres/data/.gitkeep | 0 .../latest-postgres/docker-compose.yml | 55 - .../latest-postgres/scripts/init.sh | 3 - apps/zabbix-server/latest/.env.sample | 8 - apps/zabbix-server/latest/data.yml | 62 - apps/zabbix-server/latest/docker-compose.yml | 51 - apps/zabbix-server/logo.png | Bin 5442 -> 0 bytes apps/zfile/4.5.0/.env.sample | 4 - apps/zfile/4.5.0/data.yml | 24 - apps/zfile/4.5.0/docker-compose.yml | 19 - apps/zfile/README.md | 71 - apps/zfile/data.yml | 19 - apps/zfile/latest/.env.sample | 4 - apps/zfile/latest/data.yml | 24 - apps/zfile/latest/docker-compose.yml | 19 - apps/zfile/logo.png | Bin 5737 -> 0 bytes 925 files changed, 38262 deletions(-) delete mode 100644 apps/2fauth/6.0.0/.env.sample delete mode 100644 apps/2fauth/6.0.0/data.yml delete mode 100644 apps/2fauth/6.0.0/data/.gitkeep delete mode 100644 apps/2fauth/6.0.0/docker-compose.yml delete mode 100644 apps/2fauth/6.0.0/scripts/init.sh delete mode 100644 apps/2fauth/README.md delete mode 100644 apps/2fauth/data.yml delete mode 100644 apps/2fauth/latest/.env.sample delete mode 100644 apps/2fauth/latest/data.yml delete mode 100644 apps/2fauth/latest/data/.gitkeep delete mode 100644 apps/2fauth/latest/docker-compose.yml delete mode 100644 apps/2fauth/latest/scripts/init.sh delete mode 100644 apps/2fauth/logo.png delete mode 100644 apps/act_runner/0.2.12/.env.sample delete mode 100644 apps/act_runner/0.2.12/data.yml delete mode 100644 apps/act_runner/0.2.12/docker-compose.yml delete mode 100644 apps/act_runner/README.md delete mode 100644 apps/act_runner/data.yml delete mode 100644 apps/act_runner/latest/.env.sample delete mode 100644 apps/act_runner/latest/data.yml delete mode 100644 apps/act_runner/latest/docker-compose.yml delete mode 100644 apps/act_runner/logo.png delete mode 100644 apps/adguardhome/0.107.63/.env.sample delete mode 100644 apps/adguardhome/0.107.63/data.yml delete mode 100644 apps/adguardhome/0.107.63/docker-compose.yml delete mode 100644 apps/adguardhome/README.md delete mode 100644 apps/adguardhome/data.yml delete mode 100644 apps/adguardhome/latest/.env.sample delete mode 100644 apps/adguardhome/latest/data.yml delete mode 100644 apps/adguardhome/latest/docker-compose.yml delete mode 100644 apps/adguardhome/logo.png delete mode 100644 apps/alist/3.44.0/.env.sample delete mode 100644 apps/alist/3.44.0/data.yml delete mode 100644 apps/alist/3.44.0/docker-compose.yml delete mode 100644 apps/alist/README.md delete mode 100644 apps/alist/aria2-latest/data.yml delete mode 100644 apps/alist/aria2-latest/docker-compose.yml delete mode 100644 apps/alist/aria2-latest/env.sample delete mode 100644 apps/alist/data.yml delete mode 100644 apps/alist/latest/.env.sample delete mode 100644 apps/alist/latest/data.yml delete mode 100644 apps/alist/latest/docker-compose.yml delete mode 100644 apps/alist/logo.png delete mode 100644 apps/answer/1.2.0/.env.sample delete mode 100644 apps/answer/1.2.0/data.yml delete mode 100644 apps/answer/1.2.0/docker-compose.yml delete mode 100644 apps/answer/README.md delete mode 100644 apps/answer/data.yml delete mode 100644 apps/answer/latest/.env.sample delete mode 100644 apps/answer/latest/data.yml delete mode 100644 apps/answer/latest/docker-compose.yml delete mode 100644 apps/answer/logo.png delete mode 100644 apps/artalk/2.9.1/.env.sample delete mode 100644 apps/artalk/2.9.1/data.yml delete mode 100644 apps/artalk/2.9.1/docker-compose.yml delete mode 100644 apps/artalk/README.md delete mode 100644 apps/artalk/data.yml delete mode 100644 apps/artalk/latest/.env.sample delete mode 100644 apps/artalk/latest/data.yml delete mode 100644 apps/artalk/latest/docker-compose.yml delete mode 100644 apps/artalk/logo.png delete mode 100644 apps/audiobookshelf/2.25.1/.env.sample delete mode 100644 apps/audiobookshelf/2.25.1/data.yml delete mode 100644 apps/audiobookshelf/2.25.1/docker-compose.yml delete mode 100644 apps/audiobookshelf/README.md delete mode 100644 apps/audiobookshelf/data.yml delete mode 100644 apps/audiobookshelf/latest/.env.sample delete mode 100644 apps/audiobookshelf/latest/data.yml delete mode 100644 apps/audiobookshelf/latest/docker-compose.yml delete mode 100644 apps/audiobookshelf/logo.png delete mode 100644 apps/beszel/0.11.1/.env.sample delete mode 100644 apps/beszel/0.11.1/data.yml delete mode 100644 apps/beszel/0.11.1/docker-compose.yml delete mode 100644 apps/beszel/README.md delete mode 100644 apps/beszel/data.yml delete mode 100644 apps/beszel/latest/.env.sample delete mode 100644 apps/beszel/latest/data.yml delete mode 100644 apps/beszel/latest/docker-compose.yml delete mode 100644 apps/beszel/logo.png delete mode 100644 apps/bililive-go/0.7.34/.env.sample delete mode 100644 apps/bililive-go/0.7.34/data.yml delete mode 100644 apps/bililive-go/0.7.34/docker-compose.yml delete mode 100644 apps/bililive-go/README.md delete mode 100644 apps/bililive-go/data.yml delete mode 100644 apps/bililive-go/latest/.env.sample delete mode 100644 apps/bililive-go/latest/data.yml delete mode 100644 apps/bililive-go/latest/docker-compose.yml delete mode 100644 apps/bililive-go/logo.png delete mode 100644 apps/bitwarden/1.35.2-alpine/.env.sample delete mode 100644 apps/bitwarden/1.35.2-alpine/data.yml delete mode 100644 apps/bitwarden/1.35.2-alpine/docker-compose.yml delete mode 100644 apps/bitwarden/1.35.2-alpine/scripts/upgrade.sh delete mode 100644 apps/bitwarden/README.md delete mode 100644 apps/bitwarden/data.yml delete mode 100644 apps/bitwarden/latest/.env.sample delete mode 100644 apps/bitwarden/latest/data.yml delete mode 100644 apps/bitwarden/latest/docker-compose.yml delete mode 100644 apps/bitwarden/latest/scripts/upgrade.sh delete mode 100644 apps/bitwarden/logo.png delete mode 100644 apps/bytebase/3.8.0/.env.sample delete mode 100644 apps/bytebase/3.8.0/data.yml delete mode 100644 apps/bytebase/3.8.0/docker-compose.yml delete mode 100644 apps/bytebase/README.md delete mode 100644 apps/bytebase/data.yml delete mode 100644 apps/bytebase/logo.png delete mode 100644 apps/calibre-web/0.6.24/.env.sample delete mode 100644 apps/calibre-web/0.6.24/data.yml delete mode 100644 apps/calibre-web/0.6.24/docker-compose.yml delete mode 100644 apps/calibre-web/README.md delete mode 100644 apps/calibre-web/data.yml delete mode 100644 apps/calibre-web/latest/.env.sample delete mode 100644 apps/calibre-web/latest/data.yml delete mode 100644 apps/calibre-web/latest/docker-compose.yml delete mode 100644 apps/calibre-web/logo.png delete mode 100644 apps/certd/1.28.3/.env.sample delete mode 100644 apps/certd/1.28.3/data.yml delete mode 100644 apps/certd/1.28.3/docker-compose.yml delete mode 100644 apps/certd/README.md delete mode 100644 apps/certd/data.yml delete mode 100644 apps/certd/latest-postgres/.env.sample delete mode 100644 apps/certd/latest-postgres/data.yml delete mode 100644 apps/certd/latest-postgres/docker-compose.yml delete mode 100644 apps/certd/latest/.env.sample delete mode 100644 apps/certd/latest/data.yml delete mode 100644 apps/certd/latest/docker-compose.yml delete mode 100644 apps/certd/logo.png delete mode 100644 apps/certimate/0.3.18/.env.sample delete mode 100644 apps/certimate/0.3.18/data.yml delete mode 100644 apps/certimate/0.3.18/docker-compose.yml delete mode 100644 apps/certimate/README.md delete mode 100644 apps/certimate/data.yml delete mode 100644 apps/certimate/latest/.env.sample delete mode 100644 apps/certimate/latest/data.yml delete mode 100644 apps/certimate/latest/docker-compose.yml delete mode 100644 apps/certimate/logo.png delete mode 100644 apps/changedetectionio/0.50/.env.sample delete mode 100644 apps/changedetectionio/0.50/data.yml delete mode 100644 apps/changedetectionio/0.50/docker-compose.yml delete mode 100644 apps/changedetectionio/README.md delete mode 100644 apps/changedetectionio/data.yml delete mode 100644 apps/changedetectionio/latest/.env.sample delete mode 100644 apps/changedetectionio/latest/data.yml delete mode 100644 apps/changedetectionio/latest/docker-compose.yml delete mode 100644 apps/changedetectionio/logo.png delete mode 100644 apps/chatgpt-next-web/2.16.0/.env.sample delete mode 100644 apps/chatgpt-next-web/2.16.0/data.yml delete mode 100644 apps/chatgpt-next-web/2.16.0/docker-compose.yml delete mode 100644 apps/chatgpt-next-web/README.md delete mode 100644 apps/chatgpt-next-web/data.yml delete mode 100644 apps/chatgpt-next-web/latest/.env.sample delete mode 100644 apps/chatgpt-next-web/latest/data.yml delete mode 100644 apps/chatgpt-next-web/latest/docker-compose.yml delete mode 100644 apps/chatgpt-next-web/logo.png delete mode 100644 apps/cloudbeaver/25.0.0/.env.sample delete mode 100644 apps/cloudbeaver/25.0.0/data.yml delete mode 100644 apps/cloudbeaver/25.0.0/docker-compose.yml delete mode 100644 apps/cloudbeaver/README.md delete mode 100644 apps/cloudbeaver/data.yml delete mode 100644 apps/cloudbeaver/latest/.env.sample delete mode 100644 apps/cloudbeaver/latest/data.yml delete mode 100644 apps/cloudbeaver/latest/docker-compose.yml delete mode 100644 apps/cloudbeaver/logo.png delete mode 100644 apps/cloudflared/2026.1.2/.env.sample delete mode 100644 apps/cloudflared/2026.1.2/data.yml delete mode 100644 apps/cloudflared/2026.1.2/docker-compose.yml delete mode 100644 apps/cloudflared/README.md delete mode 100644 apps/cloudflared/data.yml delete mode 100644 apps/cloudflared/latest/.env.sample delete mode 100644 apps/cloudflared/latest/data.yml delete mode 100644 apps/cloudflared/latest/docker-compose.yml delete mode 100644 apps/cloudflared/logo.png delete mode 100644 apps/cloudreve/4.1.3/.env.sample delete mode 100644 apps/cloudreve/4.1.3/data.yml delete mode 100644 apps/cloudreve/4.1.3/data/cloudreve.db delete mode 100644 apps/cloudreve/4.1.3/data/conf.ini delete mode 100644 apps/cloudreve/4.1.3/docker-compose.yml delete mode 100644 apps/cloudreve/README.md delete mode 100644 apps/cloudreve/data.yml delete mode 100644 apps/cloudreve/latest/.env.sample delete mode 100644 apps/cloudreve/latest/data.yml delete mode 100644 apps/cloudreve/latest/data/cloudreve.db delete mode 100644 apps/cloudreve/latest/data/conf.ini delete mode 100644 apps/cloudreve/latest/docker-compose.yml delete mode 100644 apps/cloudreve/logo.png delete mode 100644 apps/code-server/4.108.2/.env.sample delete mode 100644 apps/code-server/4.108.2/data.yml delete mode 100644 apps/code-server/4.108.2/docker-compose.yml delete mode 100644 apps/code-server/README.md delete mode 100644 apps/code-server/data.yml delete mode 100644 apps/code-server/latest/.env.sample delete mode 100644 apps/code-server/latest/data.yml delete mode 100644 apps/code-server/latest/docker-compose.yml delete mode 100644 apps/code-server/logo.png delete mode 100644 apps/dashy/3.1.0/.env.sample delete mode 100644 apps/dashy/3.1.0/data.yml delete mode 100644 apps/dashy/3.1.0/data/item-icons/.gitkeep delete mode 100644 apps/dashy/3.1.0/data/user-data/conf.yml delete mode 100644 apps/dashy/3.1.0/docker-compose.yml delete mode 100644 apps/dashy/3.1.0/scripts/init.sh delete mode 100644 apps/dashy/README.md delete mode 100644 apps/dashy/data.yml delete mode 100644 apps/dashy/latest/.env.sample delete mode 100644 apps/dashy/latest/data.yml delete mode 100644 apps/dashy/latest/data/item-icons/.gitkeep delete mode 100644 apps/dashy/latest/data/user-data/conf.yml delete mode 100644 apps/dashy/latest/docker-compose.yml delete mode 100644 apps/dashy/latest/scripts/init.sh delete mode 100644 apps/dashy/logo.png delete mode 100644 apps/ddns-go/6.15.0/.env.sample delete mode 100644 apps/ddns-go/6.15.0/data.yml delete mode 100644 apps/ddns-go/6.15.0/docker-compose.yml delete mode 100644 apps/ddns-go/README.md delete mode 100644 apps/ddns-go/data.yml delete mode 100644 apps/ddns-go/latest-bridge/.env.sample delete mode 100644 apps/ddns-go/latest-bridge/data.yml delete mode 100644 apps/ddns-go/latest-bridge/docker-compose.yml delete mode 100644 apps/ddns-go/latest/.env.sample delete mode 100644 apps/ddns-go/latest/data.yml delete mode 100644 apps/ddns-go/latest/docker-compose.yml delete mode 100644 apps/ddns-go/logo.png delete mode 100644 apps/discourse/3.4.5/.env.sample delete mode 100644 apps/discourse/3.4.5/data.yml delete mode 100644 apps/discourse/3.4.5/docker-compose.yml delete mode 100644 apps/discourse/README.md delete mode 100644 apps/discourse/data.yml delete mode 100644 apps/discourse/latest/.env.sample delete mode 100644 apps/discourse/latest/data.yml delete mode 100644 apps/discourse/latest/docker-compose.yml delete mode 100644 apps/discourse/logo.png delete mode 100644 apps/discuz/3.4/.env.sample delete mode 100644 apps/discuz/3.4/data.yml delete mode 100644 apps/discuz/3.4/docker-compose.yml delete mode 100644 apps/discuz/README.md delete mode 100644 apps/discuz/data.yml delete mode 100644 apps/discuz/latest/.env.sample delete mode 100644 apps/discuz/latest/data.yml delete mode 100644 apps/discuz/latest/docker-compose.yml delete mode 100644 apps/discuz/logo.png delete mode 100644 apps/dockge/1.5.0/.env.sample delete mode 100644 apps/dockge/1.5.0/data.yml delete mode 100644 apps/dockge/1.5.0/docker-compose.yml delete mode 100644 apps/dockge/README.md delete mode 100644 apps/dockge/data.yml delete mode 100644 apps/dockge/latest/.env.sample delete mode 100644 apps/dockge/latest/data.yml delete mode 100644 apps/dockge/latest/docker-compose.yml delete mode 100644 apps/dockge/logo.png delete mode 100644 apps/domain-admin/1.6.69/.env.sample delete mode 100644 apps/domain-admin/1.6.69/data.yml delete mode 100644 apps/domain-admin/1.6.69/docker-compose.yml delete mode 100644 apps/domain-admin/README.md delete mode 100644 apps/domain-admin/data.yml delete mode 100644 apps/domain-admin/latest/.env.sample delete mode 100644 apps/domain-admin/latest/data.yml delete mode 100644 apps/domain-admin/latest/docker-compose.yml delete mode 100644 apps/domain-admin/logo.png delete mode 100644 apps/dosgame/README.md delete mode 100644 apps/dosgame/data.yml delete mode 100644 apps/dosgame/latest/.env.sample delete mode 100644 apps/dosgame/latest/data.yml delete mode 100644 apps/dosgame/latest/docker-compose.yml delete mode 100644 apps/dosgame/logo.png delete mode 100644 apps/easyimage2/2.8.3-r1/.env.sample delete mode 100644 apps/easyimage2/2.8.3-r1/data.yml delete mode 100644 apps/easyimage2/2.8.3-r1/docker-compose.yml delete mode 100644 apps/easyimage2/README.md delete mode 100644 apps/easyimage2/data.yml delete mode 100644 apps/easyimage2/latest/.env.sample delete mode 100644 apps/easyimage2/latest/data.yml delete mode 100644 apps/easyimage2/latest/docker-compose.yml delete mode 100644 apps/easyimage2/logo.png delete mode 100644 apps/filebrowser/2.36.1/.env.sample delete mode 100644 apps/filebrowser/2.36.1/data.yml delete mode 100644 apps/filebrowser/2.36.1/data/.filebrowser.json delete mode 100644 apps/filebrowser/2.36.1/data/database.db delete mode 100644 apps/filebrowser/2.36.1/docker-compose.yml delete mode 100644 apps/filebrowser/README.md delete mode 100644 apps/filebrowser/data.yml delete mode 100644 apps/filebrowser/latest/.env.sample delete mode 100644 apps/filebrowser/latest/data.yml delete mode 100644 apps/filebrowser/latest/data/.filebrowser.json delete mode 100644 apps/filebrowser/latest/data/database.db delete mode 100644 apps/filebrowser/latest/docker-compose.yml delete mode 100644 apps/filebrowser/logo.png delete mode 100644 apps/filecodebox/README.md delete mode 100644 apps/filecodebox/beta/.env.sample delete mode 100644 apps/filecodebox/beta/data.yml delete mode 100644 apps/filecodebox/beta/docker-compose.yml delete mode 100644 apps/filecodebox/data.yml delete mode 100644 apps/filecodebox/logo.png delete mode 100644 apps/flarum/1.8.10/.env.sample delete mode 100644 apps/flarum/1.8.10/data.yml delete mode 100644 apps/flarum/1.8.10/docker-compose.yml delete mode 100644 apps/flarum/README.md delete mode 100644 apps/flarum/data.yml delete mode 100644 apps/flarum/latest/.env.sample delete mode 100644 apps/flarum/latest/data.yml delete mode 100644 apps/flarum/latest/docker-compose.yml delete mode 100644 apps/flarum/logo.png delete mode 100644 apps/focalboard/7.11.4/.env.sample delete mode 100644 apps/focalboard/7.11.4/data.yml delete mode 100644 apps/focalboard/7.11.4/data/config.json delete mode 100644 apps/focalboard/7.11.4/data/postgres-config.json delete mode 100644 apps/focalboard/7.11.4/docker-compose.yml delete mode 100644 apps/focalboard/README.md delete mode 100644 apps/focalboard/data.yml delete mode 100644 apps/focalboard/latest/.env.sample delete mode 100644 apps/focalboard/latest/data.yml delete mode 100644 apps/focalboard/latest/data/config.json delete mode 100644 apps/focalboard/latest/data/postgres-config.json delete mode 100644 apps/focalboard/latest/docker-compose.yml delete mode 100644 apps/focalboard/logo.png delete mode 100644 apps/freshrss/1.26.3/.env.sample delete mode 100644 apps/freshrss/1.26.3/data.yml delete mode 100644 apps/freshrss/1.26.3/docker-compose.yml delete mode 100644 apps/freshrss/README.md delete mode 100644 apps/freshrss/data.yml delete mode 100644 apps/freshrss/latest/.env.sample delete mode 100644 apps/freshrss/latest/data.yml delete mode 100644 apps/freshrss/latest/docker-compose.yml delete mode 100644 apps/freshrss/logo.png delete mode 100644 apps/frpc/0.63.0/.env.sample delete mode 100644 apps/frpc/0.63.0/data.yml delete mode 100644 apps/frpc/0.63.0/data/frpc.ini delete mode 100644 apps/frpc/0.63.0/data/frpc.toml delete mode 100644 apps/frpc/0.63.0/data/frpc_full.ini delete mode 100644 apps/frpc/0.63.0/data/frpc_full.toml delete mode 100644 apps/frpc/0.63.0/data/frps.ini delete mode 100644 apps/frpc/0.63.0/data/frps.toml delete mode 100644 apps/frpc/0.63.0/data/frps_full.ini delete mode 100644 apps/frpc/0.63.0/data/frps_full.toml delete mode 100644 apps/frpc/0.63.0/docker-compose.yml delete mode 100644 apps/frpc/README.md delete mode 100644 apps/frpc/data.yml delete mode 100644 apps/frpc/latest/.env.sample delete mode 100644 apps/frpc/latest/data.yml delete mode 100644 apps/frpc/latest/data/frpc.ini delete mode 100644 apps/frpc/latest/data/frpc.toml delete mode 100644 apps/frpc/latest/data/frpc_full.ini delete mode 100644 apps/frpc/latest/data/frpc_full.toml delete mode 100644 apps/frpc/latest/data/frps.ini delete mode 100644 apps/frpc/latest/data/frps.toml delete mode 100644 apps/frpc/latest/data/frps_full.ini delete mode 100644 apps/frpc/latest/data/frps_full.toml delete mode 100644 apps/frpc/latest/docker-compose.yml delete mode 100644 apps/frpc/logo.png delete mode 100644 apps/frps/0.63.0/.env.sample delete mode 100644 apps/frps/0.63.0/data.yml delete mode 100644 apps/frps/0.63.0/data/frpc.ini delete mode 100644 apps/frps/0.63.0/data/frpc.toml delete mode 100644 apps/frps/0.63.0/data/frpc_full.ini delete mode 100644 apps/frps/0.63.0/data/frpc_full.toml delete mode 100644 apps/frps/0.63.0/data/frps.ini delete mode 100644 apps/frps/0.63.0/data/frps.toml delete mode 100644 apps/frps/0.63.0/data/frps_full.ini delete mode 100644 apps/frps/0.63.0/data/frps_full.toml delete mode 100644 apps/frps/0.63.0/docker-compose.yml delete mode 100644 apps/frps/README.md delete mode 100644 apps/frps/data.yml delete mode 100644 apps/frps/latest/.env.sample delete mode 100644 apps/frps/latest/data.yml delete mode 100644 apps/frps/latest/data/frpc.ini delete mode 100644 apps/frps/latest/data/frpc.toml delete mode 100644 apps/frps/latest/data/frpc_full.ini delete mode 100644 apps/frps/latest/data/frpc_full.toml delete mode 100644 apps/frps/latest/data/frps.ini delete mode 100644 apps/frps/latest/data/frps.toml delete mode 100644 apps/frps/latest/data/frps_full.ini delete mode 100644 apps/frps/latest/data/frps_full.toml delete mode 100644 apps/frps/latest/docker-compose.yml delete mode 100644 apps/frps/logo.png delete mode 100644 apps/glance/0.8.4/.env.sample delete mode 100644 apps/glance/0.8.4/data.yml delete mode 100644 apps/glance/0.8.4/data/glance.yml delete mode 100644 apps/glance/0.8.4/docker-compose.yml delete mode 100644 apps/glance/README.md delete mode 100644 apps/glance/data.yml delete mode 100644 apps/glance/latest/.env.sample delete mode 100644 apps/glance/latest/data.yml delete mode 100644 apps/glance/latest/data/glance.yml delete mode 100644 apps/glance/latest/docker-compose.yml delete mode 100644 apps/glance/logo.png delete mode 100644 apps/gotify/2.6.3/.env.sample delete mode 100644 apps/gotify/2.6.3/data.yml delete mode 100644 apps/gotify/2.6.3/docker-compose.yml delete mode 100644 apps/gotify/README.md delete mode 100644 apps/gotify/data.yml delete mode 100644 apps/gotify/latest/.env.sample delete mode 100644 apps/gotify/latest/data.yml delete mode 100644 apps/gotify/latest/docker-compose.yml delete mode 100644 apps/gotify/logo.png delete mode 100644 apps/grafana/12.0.2/.env.sample delete mode 100644 apps/grafana/12.0.2/10.4.3/.env.sample delete mode 100644 apps/grafana/12.0.2/10.4.3/data.yml delete mode 100644 apps/grafana/12.0.2/10.4.3/docker-compose.yml delete mode 100644 apps/grafana/12.0.2/data.yml delete mode 100644 apps/grafana/12.0.2/docker-compose.yml delete mode 100644 apps/grafana/README.md delete mode 100644 apps/grafana/data.yml delete mode 100644 apps/grafana/latest/.env.sample delete mode 100644 apps/grafana/latest/data.yml delete mode 100644 apps/grafana/latest/docker-compose.yml delete mode 100644 apps/grafana/logo.png delete mode 100644 apps/heimdall/2.7.6/.env.sample delete mode 100644 apps/heimdall/2.7.6/data.yml delete mode 100644 apps/heimdall/2.7.6/docker-compose.yml delete mode 100644 apps/heimdall/README.md delete mode 100644 apps/heimdall/data.yml delete mode 100644 apps/heimdall/latest/.env.sample delete mode 100644 apps/heimdall/latest/data.yml delete mode 100644 apps/heimdall/latest/docker-compose.yml delete mode 100644 apps/heimdall/logo.png delete mode 100644 apps/home-assistant/2023.8.0.dev20230723/.env.sample delete mode 100644 apps/home-assistant/2023.8.0.dev20230723/data.yml delete mode 100644 apps/home-assistant/2023.8.0.dev20230723/docker-compose.yml delete mode 100644 apps/home-assistant/README.md delete mode 100644 apps/home-assistant/data.yml delete mode 100644 apps/home-assistant/latest/.env.sample delete mode 100644 apps/home-assistant/latest/data.yml delete mode 100644 apps/home-assistant/latest/docker-compose.yml delete mode 100644 apps/home-assistant/logo.png delete mode 100644 apps/homepage/1.3.2/.env.sample delete mode 100644 apps/homepage/1.3.2/data.yml delete mode 100644 apps/homepage/1.3.2/docker-compose.yml delete mode 100644 apps/homepage/1.3.2/scripts/init.sh delete mode 100644 apps/homepage/README.md delete mode 100644 apps/homepage/data.yml delete mode 100644 apps/homepage/latest/.env.sample delete mode 100644 apps/homepage/latest/data.yml delete mode 100644 apps/homepage/latest/docker-compose.yml delete mode 100644 apps/homepage/latest/scripts/init.sh delete mode 100644 apps/homepage/logo.png delete mode 100644 apps/it-tools/2024.10.22-7ca5933/.env.sample delete mode 100644 apps/it-tools/2024.10.22-7ca5933/data.yml delete mode 100644 apps/it-tools/2024.10.22-7ca5933/docker-compose.yml delete mode 100644 apps/it-tools/README.md delete mode 100644 apps/it-tools/data.yml delete mode 100644 apps/it-tools/latest/.env.sample delete mode 100644 apps/it-tools/latest/data.yml delete mode 100644 apps/it-tools/latest/docker-compose.yml delete mode 100644 apps/it-tools/logo.png delete mode 100644 apps/jellyfin/10.10.7/.env.sample delete mode 100644 apps/jellyfin/10.10.7/data.yml delete mode 100644 apps/jellyfin/10.10.7/docker-compose.yml delete mode 100644 apps/jellyfin/README.md delete mode 100644 apps/jellyfin/data.yml delete mode 100644 apps/jellyfin/latest/.env.sample delete mode 100644 apps/jellyfin/latest/data.yml delete mode 100644 apps/jellyfin/latest/docker-compose.yml delete mode 100644 apps/jellyfin/logo.png delete mode 100644 apps/jellyfin/nyanmisaka-latest/.env.sample delete mode 100644 apps/jellyfin/nyanmisaka-latest/data.yml delete mode 100644 apps/jellyfin/nyanmisaka-latest/docker-compose.yml delete mode 100644 apps/jellyfin/unstable/.env.sample delete mode 100644 apps/jellyfin/unstable/data.yml delete mode 100644 apps/jellyfin/unstable/docker-compose.yml delete mode 100644 apps/jsonhero/README.md delete mode 100644 apps/jsonhero/data.yml delete mode 100644 apps/jsonhero/latest/.env.sample delete mode 100644 apps/jsonhero/latest/data.yml delete mode 100644 apps/jsonhero/latest/docker-compose.yml delete mode 100644 apps/jsonhero/logo.png delete mode 100644 apps/kkfileview/4.1.0/.env.sample delete mode 100644 apps/kkfileview/4.1.0/data.yml delete mode 100644 apps/kkfileview/4.1.0/docker-compose.yml delete mode 100644 apps/kkfileview/README.md delete mode 100644 apps/kkfileview/data.yml delete mode 100644 apps/kkfileview/latest/.env.sample delete mode 100644 apps/kkfileview/latest/data.yml delete mode 100644 apps/kkfileview/latest/docker-compose.yml delete mode 100644 apps/kkfileview/logo.png delete mode 100644 apps/koodo-reader/README.md delete mode 100644 apps/koodo-reader/data.yml delete mode 100644 apps/koodo-reader/latest/.env.sample delete mode 100644 apps/koodo-reader/latest/data.yml delete mode 100644 apps/koodo-reader/latest/docker-compose.yml delete mode 100644 apps/koodo-reader/logo.png delete mode 100644 apps/linux-command/1.21.0/.env.sample delete mode 100644 apps/linux-command/1.21.0/data.yml delete mode 100644 apps/linux-command/1.21.0/docker-compose.yml delete mode 100644 apps/linux-command/README.md delete mode 100644 apps/linux-command/data.yml delete mode 100644 apps/linux-command/latest/.env.sample delete mode 100644 apps/linux-command/latest/data.yml delete mode 100644 apps/linux-command/latest/docker-compose.yml delete mode 100644 apps/linux-command/logo.png delete mode 100644 apps/lobe-chat/1.36.30/.env.sample delete mode 100644 apps/lobe-chat/1.36.30/data.yml delete mode 100644 apps/lobe-chat/1.36.30/docker-compose.yml delete mode 100644 apps/lobe-chat/README.md delete mode 100644 apps/lobe-chat/data.yml delete mode 100644 apps/lobe-chat/latest/.env.sample delete mode 100644 apps/lobe-chat/latest/data.yml delete mode 100644 apps/lobe-chat/latest/docker-compose.yml delete mode 100644 apps/lobe-chat/logo.png delete mode 100644 apps/lsky-pro/README.md delete mode 100644 apps/lsky-pro/data.yml delete mode 100644 apps/lsky-pro/latest/.env.sample delete mode 100644 apps/lsky-pro/latest/data.yml delete mode 100644 apps/lsky-pro/latest/docker-compose.yml delete mode 100644 apps/lsky-pro/logo.png delete mode 100644 apps/maddy-mail/0.8.1/.env.sample delete mode 100644 apps/maddy-mail/0.8.1/data.yml delete mode 100644 apps/maddy-mail/0.8.1/docker-compose.yml delete mode 100644 apps/maddy-mail/README.md delete mode 100644 apps/maddy-mail/data.yml delete mode 100644 apps/maddy-mail/latest/.env.sample delete mode 100644 apps/maddy-mail/latest/data.yml delete mode 100644 apps/maddy-mail/latest/docker-compose.yml delete mode 100644 apps/maddy-mail/logo.png delete mode 100644 apps/mcsmanager-daemon/3.4.0/.env.sample delete mode 100644 apps/mcsmanager-daemon/3.4.0/data.yml delete mode 100644 apps/mcsmanager-daemon/3.4.0/docker-compose.yml delete mode 100644 apps/mcsmanager-daemon/README.md delete mode 100644 apps/mcsmanager-daemon/data.yml delete mode 100644 apps/mcsmanager-daemon/latest/.env.sample delete mode 100644 apps/mcsmanager-daemon/latest/data.yml delete mode 100644 apps/mcsmanager-daemon/latest/docker-compose.yml delete mode 100644 apps/mcsmanager-daemon/logo.png delete mode 100644 apps/mcsmanager-web/10.1.0/.env.sample delete mode 100644 apps/mcsmanager-web/10.1.0/data.yml delete mode 100644 apps/mcsmanager-web/10.1.0/docker-compose.yml delete mode 100644 apps/mcsmanager-web/README.md delete mode 100644 apps/mcsmanager-web/data.yml delete mode 100644 apps/mcsmanager-web/latest/.env.sample delete mode 100644 apps/mcsmanager-web/latest/data.yml delete mode 100644 apps/mcsmanager-web/latest/docker-compose.yml delete mode 100644 apps/mcsmanager-web/logo.png delete mode 100644 apps/memcached/1.6.19/.env.sample delete mode 100644 apps/memcached/1.6.19/data.yml delete mode 100644 apps/memcached/1.6.19/docker-compose.yml delete mode 100644 apps/memcached/README.md delete mode 100644 apps/memcached/data.yml delete mode 100644 apps/memcached/latest/.env.sample delete mode 100644 apps/memcached/latest/data.yml delete mode 100644 apps/memcached/latest/docker-compose.yml delete mode 100644 apps/memcached/logo.png delete mode 100644 apps/mysql/5.5.62/conf/my.cnf delete mode 100644 apps/mysql/5.5.62/data.yml delete mode 100644 apps/mysql/5.5.62/docker-compose.yml delete mode 100644 apps/mysql/5.6.51/conf/my.cnf delete mode 100644 apps/mysql/5.6.51/data.yml delete mode 100644 apps/mysql/5.6.51/docker-compose.yml delete mode 100644 apps/mysql/5.7.44/conf/my.cnf delete mode 100644 apps/mysql/5.7.44/data.yml delete mode 100644 apps/mysql/5.7.44/docker-compose.yml delete mode 100644 apps/mysql/8.0.40/conf/my.cnf delete mode 100644 apps/mysql/8.0.40/data.yml delete mode 100644 apps/mysql/8.0.40/docker-compose.yml delete mode 100644 apps/mysql/8.4.3/conf/my.cnf delete mode 100644 apps/mysql/8.4.3/data.yml delete mode 100644 apps/mysql/8.4.3/docker-compose.yml delete mode 100644 apps/mysql/8.4.3/scripts/upgrade.sh delete mode 100644 apps/mysql/README.md delete mode 100644 apps/mysql/README_en.md delete mode 100644 apps/mysql/data.yml delete mode 100644 apps/mysql/logo.png delete mode 100644 apps/navidrome/README.md delete mode 100644 apps/navidrome/data.yml delete mode 100644 apps/navidrome/latest/.env.sample delete mode 100644 apps/navidrome/latest/data.yml delete mode 100644 apps/navidrome/latest/docker-compose.yml delete mode 100644 apps/navidrome/logo.png delete mode 100644 apps/navidrome/pr-2295/.env.sample delete mode 100644 apps/navidrome/pr-2295/data.yml delete mode 100644 apps/navidrome/pr-2295/docker-compose.yml delete mode 100644 apps/neko/README.md delete mode 100644 apps/neko/data.yml delete mode 100644 apps/neko/latest/.env.sample delete mode 100644 apps/neko/latest/data.yml delete mode 100644 apps/neko/latest/data/Downloads/.gitkeep delete mode 100644 apps/neko/latest/docker-compose.yml delete mode 100644 apps/neko/latest/scripts/init.sh delete mode 100644 apps/neko/logo.png delete mode 100644 apps/nextcloud/32.0.5/.env.sample delete mode 100644 apps/nextcloud/32.0.5/data.yml delete mode 100644 apps/nextcloud/32.0.5/docker-compose.yml delete mode 100644 apps/nextcloud/README.md delete mode 100644 apps/nextcloud/data.yml delete mode 100644 apps/nextcloud/latest/.env.sample delete mode 100644 apps/nextcloud/latest/data.yml delete mode 100644 apps/nextcloud/latest/docker-compose.yml delete mode 100644 apps/nextcloud/logo.png delete mode 100644 apps/nginx-proxy-manager/README.md delete mode 100644 apps/nginx-proxy-manager/data.yml delete mode 100644 apps/nginx-proxy-manager/github-pr-3281/.env.sample delete mode 100644 apps/nginx-proxy-manager/github-pr-3281/data.yml delete mode 100644 apps/nginx-proxy-manager/github-pr-3281/docker-compose.yml delete mode 100644 apps/nginx-proxy-manager/latest/.env.sample delete mode 100644 apps/nginx-proxy-manager/latest/data.yml delete mode 100644 apps/nginx-proxy-manager/latest/docker-compose.yml delete mode 100644 apps/nginx-proxy-manager/logo.png delete mode 100644 apps/nginx-proxy-manager/zh-latest/.env.sample delete mode 100644 apps/nginx-proxy-manager/zh-latest/data.yml delete mode 100644 apps/nginx-proxy-manager/zh-latest/docker-compose.yml delete mode 100644 apps/nodebb/2.8/.env.sample delete mode 100644 apps/nodebb/2.8/data.yml delete mode 100644 apps/nodebb/2.8/data/.gitkeep delete mode 100644 apps/nodebb/2.8/docker-compose.yml delete mode 100644 apps/nodebb/2.8/scripts/init.sh delete mode 100644 apps/nodebb/README.md delete mode 100644 apps/nodebb/data.yml delete mode 100644 apps/nodebb/latest/.env.sample delete mode 100644 apps/nodebb/latest/data.yml delete mode 100644 apps/nodebb/latest/data/.gitkeep delete mode 100644 apps/nodebb/latest/docker-compose.yml delete mode 100644 apps/nodebb/latest/scripts/init.sh delete mode 100644 apps/nodebb/logo.png delete mode 100644 apps/ntfy/2.12.0/.env.sample delete mode 100644 apps/ntfy/2.12.0/data.yml delete mode 100644 apps/ntfy/2.12.0/data/ntfy/server.yml.sample delete mode 100644 apps/ntfy/2.12.0/docker-compose.yml delete mode 100644 apps/ntfy/README.md delete mode 100644 apps/ntfy/data.yml delete mode 100644 apps/ntfy/latest/.env.sample delete mode 100644 apps/ntfy/latest/data.yml delete mode 100644 apps/ntfy/latest/data/ntfy/server.yml.sample delete mode 100644 apps/ntfy/latest/docker-compose.yml delete mode 100644 apps/ntfy/logo.png delete mode 100644 apps/onedev/14.1.1/.env.sample delete mode 100644 apps/onedev/14.1.1/data.yml delete mode 100644 apps/onedev/14.1.1/docker-compose.yml delete mode 100644 apps/onedev/README.md delete mode 100644 apps/onedev/data.yml delete mode 100644 apps/onedev/latest/.env.sample delete mode 100644 apps/onedev/latest/data.yml delete mode 100644 apps/onedev/latest/docker-compose.yml delete mode 100644 apps/onedev/logo.png delete mode 100644 apps/onlyoffice/9.2.1.1/.env.sample delete mode 100644 apps/onlyoffice/9.2.1.1/data.yml delete mode 100644 apps/onlyoffice/9.2.1.1/docker-compose.yml delete mode 100644 apps/onlyoffice/README.md delete mode 100644 apps/onlyoffice/data.yml delete mode 100644 apps/onlyoffice/latest/.env.sample delete mode 100644 apps/onlyoffice/latest/data.yml delete mode 100644 apps/onlyoffice/latest/docker-compose.yml delete mode 100644 apps/onlyoffice/logo.png delete mode 100644 apps/openlitespeed/1.8.1-lsphp74/.env.sample delete mode 100644 apps/openlitespeed/1.8.1-lsphp74/data.yml delete mode 100644 apps/openlitespeed/1.8.1-lsphp74/data/bin/container/appinstallctl.sh delete mode 100644 apps/openlitespeed/1.8.1-lsphp74/data/bin/container/certhookctl.sh delete mode 100644 apps/openlitespeed/1.8.1-lsphp74/data/bin/container/domainctl.sh delete mode 100644 apps/openlitespeed/1.8.1-lsphp74/data/bin/container/owaspctl.sh delete mode 100644 apps/openlitespeed/1.8.1-lsphp74/data/bin/container/serialctl.sh delete mode 100644 apps/openlitespeed/1.8.1-lsphp74/data/sites/.gitignore delete mode 100644 apps/openlitespeed/1.8.1-lsphp74/docker-compose.yml delete mode 100644 apps/openlitespeed/1.8.3-lsphp81/.env.sample delete mode 100644 apps/openlitespeed/1.8.3-lsphp81/data.yml delete mode 100644 apps/openlitespeed/1.8.3-lsphp81/data/bin/container/appinstallctl.sh delete mode 100644 apps/openlitespeed/1.8.3-lsphp81/data/bin/container/certhookctl.sh delete mode 100644 apps/openlitespeed/1.8.3-lsphp81/data/bin/container/domainctl.sh delete mode 100644 apps/openlitespeed/1.8.3-lsphp81/data/bin/container/owaspctl.sh delete mode 100644 apps/openlitespeed/1.8.3-lsphp81/data/bin/container/serialctl.sh delete mode 100644 apps/openlitespeed/1.8.3-lsphp81/data/sites/.gitignore delete mode 100644 apps/openlitespeed/1.8.3-lsphp81/docker-compose.yml delete mode 100644 apps/openlitespeed/README.md delete mode 100644 apps/openlitespeed/data.yml delete mode 100644 apps/openlitespeed/latest/.env.sample delete mode 100644 apps/openlitespeed/latest/data.yml delete mode 100644 apps/openlitespeed/latest/data/bin/container/appinstallctl.sh delete mode 100644 apps/openlitespeed/latest/data/bin/container/certhookctl.sh delete mode 100644 apps/openlitespeed/latest/data/bin/container/domainctl.sh delete mode 100644 apps/openlitespeed/latest/data/bin/container/owaspctl.sh delete mode 100644 apps/openlitespeed/latest/data/bin/container/serialctl.sh delete mode 100644 apps/openlitespeed/latest/data/sites/.gitignore delete mode 100644 apps/openlitespeed/latest/docker-compose.yml delete mode 100644 apps/openlitespeed/logo.png delete mode 100644 apps/pgadmin4/9.5/.env.sample delete mode 100644 apps/pgadmin4/9.5/data.yml delete mode 100644 apps/pgadmin4/9.5/docker-compose.yml delete mode 100644 apps/pgadmin4/README.md delete mode 100644 apps/pgadmin4/data.yml delete mode 100644 apps/pgadmin4/latest/.env.sample delete mode 100644 apps/pgadmin4/latest/data.yml delete mode 100644 apps/pgadmin4/latest/docker-compose.yml delete mode 100644 apps/pgadmin4/logo.png delete mode 100644 apps/photoprism/231128/.env.sample delete mode 100644 apps/photoprism/231128/data.yml delete mode 100644 apps/photoprism/231128/docker-compose.yml delete mode 100644 apps/photoprism/README.md delete mode 100644 apps/photoprism/data.yml delete mode 100644 apps/photoprism/latest/.env.sample delete mode 100644 apps/photoprism/latest/data.yml delete mode 100644 apps/photoprism/latest/docker-compose.yml delete mode 100644 apps/photoprism/logo.png delete mode 100644 apps/photoprism/sqlite-latest/.env.sample delete mode 100644 apps/photoprism/sqlite-latest/data.yml delete mode 100644 apps/photoprism/sqlite-latest/docker-compose.yml delete mode 100644 apps/prometheus/3.4.2/.env.sample delete mode 100644 apps/prometheus/3.4.2/data.yml delete mode 100644 apps/prometheus/3.4.2/data/prometheus.yml delete mode 100644 apps/prometheus/3.4.2/docker-compose.yml delete mode 100644 apps/prometheus/README.md delete mode 100644 apps/prometheus/data.yml delete mode 100644 apps/prometheus/latest/.env.sample delete mode 100644 apps/prometheus/latest/data.yml delete mode 100644 apps/prometheus/latest/data/prometheus.yml delete mode 100644 apps/prometheus/latest/docker-compose.yml delete mode 100644 apps/prometheus/logo.png delete mode 100644 apps/qBittorrent/4.3.5/.env.sample delete mode 100644 apps/qBittorrent/4.3.5/data.yml delete mode 100644 apps/qBittorrent/4.3.5/data/.cache/.gitkeep delete mode 100644 apps/qBittorrent/4.3.5/data/.config/qBittorrent/qBittorrent.conf delete mode 100644 apps/qBittorrent/4.3.5/data/.local/.gitkeep delete mode 100644 apps/qBittorrent/4.3.5/data/downloads/.gitkeep delete mode 100644 apps/qBittorrent/4.3.5/docker-compose.yml delete mode 100644 apps/qBittorrent/4.5.2/.env.sample delete mode 100644 apps/qBittorrent/4.5.2/data.yml delete mode 100644 apps/qBittorrent/4.5.2/data/.cache/.gitkeep delete mode 100644 apps/qBittorrent/4.5.2/data/.config/qBittorrent/qBittorrent.conf delete mode 100644 apps/qBittorrent/4.5.2/data/.local/.gitkeep delete mode 100644 apps/qBittorrent/4.5.2/data/downloads/.gitkeep delete mode 100644 apps/qBittorrent/4.5.2/docker-compose.yml delete mode 100644 apps/qBittorrent/README.md delete mode 100644 apps/qBittorrent/data.yml delete mode 100644 apps/qBittorrent/latest/.env.sample delete mode 100644 apps/qBittorrent/latest/data.yml delete mode 100644 apps/qBittorrent/latest/data/.cache/.gitkeep delete mode 100644 apps/qBittorrent/latest/data/.config/qBittorrent/qBittorrent.conf delete mode 100644 apps/qBittorrent/latest/data/.local/.gitkeep delete mode 100644 apps/qBittorrent/latest/data/downloads/.gitkeep delete mode 100644 apps/qBittorrent/latest/docker-compose.yml delete mode 100644 apps/qBittorrent/logo.png delete mode 100644 apps/qiandao/20250129/.env.sample delete mode 100644 apps/qiandao/20250129/data.yml delete mode 100644 apps/qiandao/20250129/docker-compose.yml delete mode 100644 apps/qiandao/README.md delete mode 100644 apps/qiandao/data.yml delete mode 100644 apps/qiandao/latest/.env.sample delete mode 100644 apps/qiandao/latest/data.yml delete mode 100644 apps/qiandao/latest/docker-compose.yml delete mode 100644 apps/qiandao/logo.png delete mode 100644 apps/reader/2.7.4/.env.sample delete mode 100644 apps/reader/2.7.4/data.yml delete mode 100644 apps/reader/2.7.4/docker-compose.yml delete mode 100644 apps/reader/3.2.13/.env.sample delete mode 100644 apps/reader/3.2.13/data.yml delete mode 100644 apps/reader/3.2.13/docker-compose.yml delete mode 100644 apps/reader/README.md delete mode 100644 apps/reader/data.yml delete mode 100644 apps/reader/latest/.env.sample delete mode 100644 apps/reader/latest/data.yml delete mode 100644 apps/reader/latest/docker-compose.yml delete mode 100644 apps/reader/logo.png delete mode 100644 apps/rustdesk/README.md delete mode 100644 apps/rustdesk/data.yml delete mode 100644 apps/rustdesk/latest/.env.sample delete mode 100644 apps/rustdesk/latest/data.yml delete mode 100644 apps/rustdesk/latest/docker-compose.yml delete mode 100644 apps/rustdesk/logo.png delete mode 100644 apps/rustdesk/s6-latest/.env.sample delete mode 100644 apps/rustdesk/s6-latest/data.yml delete mode 100644 apps/rustdesk/s6-latest/docker-compose.yml delete mode 100644 apps/siyuan/3.2.0/.env.sample delete mode 100644 apps/siyuan/3.2.0/data.yml delete mode 100644 apps/siyuan/3.2.0/docker-compose.yml delete mode 100644 apps/siyuan/README.md delete mode 100644 apps/siyuan/data.yml delete mode 100644 apps/siyuan/latest/.env.sample delete mode 100644 apps/siyuan/latest/data.yml delete mode 100644 apps/siyuan/latest/docker-compose.yml delete mode 100644 apps/siyuan/logo.png delete mode 100644 apps/synapse/1.146.0/.env.sample delete mode 100644 apps/synapse/1.146.0/data.yml delete mode 100644 apps/synapse/1.146.0/docker-compose.yml delete mode 100644 apps/synapse/README.md delete mode 100644 apps/synapse/data.yml delete mode 100644 apps/synapse/latest/.env.sample delete mode 100644 apps/synapse/latest/data.yml delete mode 100644 apps/synapse/latest/docker-compose.yml delete mode 100644 apps/synapse/logo.png delete mode 100644 apps/trilium/0.63.7/.env.sample delete mode 100644 apps/trilium/0.63.7/data.yml delete mode 100644 apps/trilium/0.63.7/docker-compose.yml delete mode 100644 apps/trilium/README.md delete mode 100644 apps/trilium/data.yml delete mode 100644 apps/trilium/latest/.env.sample delete mode 100644 apps/trilium/latest/data.yml delete mode 100644 apps/trilium/latest/docker-compose.yml delete mode 100644 apps/trilium/logo.png delete mode 100644 apps/twikoo/README.md delete mode 100644 apps/twikoo/arm32v7/.env.sample delete mode 100644 apps/twikoo/arm32v7/data.yml delete mode 100644 apps/twikoo/arm32v7/docker-compose.yml delete mode 100644 apps/twikoo/data.yml delete mode 100644 apps/twikoo/latest/.env.sample delete mode 100644 apps/twikoo/latest/data.yml delete mode 100644 apps/twikoo/latest/docker-compose.yml delete mode 100644 apps/twikoo/logo.png delete mode 100644 apps/uuwaf/6.2.0/.env.sample delete mode 100644 apps/uuwaf/6.2.0/data.yml delete mode 100644 apps/uuwaf/6.2.0/docker-compose.yml delete mode 100644 apps/uuwaf/6.2.0/low-memory-my.cnf delete mode 100644 apps/uuwaf/6.2.0/scripts/uninstall.sh delete mode 100644 apps/uuwaf/README.md delete mode 100644 apps/uuwaf/data.yml delete mode 100644 apps/uuwaf/logo.png delete mode 100644 apps/verdaccio/6.2.4/.env.sample delete mode 100644 apps/verdaccio/6.2.4/data.yml delete mode 100644 apps/verdaccio/6.2.4/data/config/config.yaml delete mode 100644 apps/verdaccio/6.2.4/data/plugins/.gitkeep delete mode 100644 apps/verdaccio/6.2.4/data/storage/.gitkeep delete mode 100644 apps/verdaccio/6.2.4/docker-compose.yml delete mode 100644 apps/verdaccio/6.2.4/scripts/init.sh delete mode 100644 apps/verdaccio/README.md delete mode 100644 apps/verdaccio/data.yml delete mode 100644 apps/verdaccio/logo.png delete mode 100644 apps/verdaccio/nightly-master/.env.sample delete mode 100644 apps/verdaccio/nightly-master/data.yml delete mode 100644 apps/verdaccio/nightly-master/data/config/config.yaml delete mode 100644 apps/verdaccio/nightly-master/data/plugins/.gitkeep delete mode 100644 apps/verdaccio/nightly-master/data/storage/.gitkeep delete mode 100644 apps/verdaccio/nightly-master/docker-compose.yml delete mode 100644 apps/verdaccio/nightly-master/scripts/init.sh delete mode 100644 apps/wallos/4.6.0/.env.sample delete mode 100644 apps/wallos/4.6.0/data.yml delete mode 100644 apps/wallos/4.6.0/docker-compose.yml delete mode 100644 apps/wallos/README.md delete mode 100644 apps/wallos/data.yml delete mode 100644 apps/wallos/latest/.env.sample delete mode 100644 apps/wallos/latest/data.yml delete mode 100644 apps/wallos/latest/docker-compose.yml delete mode 100644 apps/wallos/logo.png delete mode 100644 apps/watchtower/1.7.1/.env.sample delete mode 100644 apps/watchtower/1.7.1/data.yml delete mode 100644 apps/watchtower/1.7.1/docker-compose.yml delete mode 100644 apps/watchtower/README.md delete mode 100644 apps/watchtower/data.yml delete mode 100644 apps/watchtower/latest/.env.sample delete mode 100644 apps/watchtower/latest/data.yml delete mode 100644 apps/watchtower/latest/docker-compose.yml delete mode 100644 apps/watchtower/logo.png delete mode 100644 apps/web-check/README.md delete mode 100644 apps/web-check/data.yml delete mode 100644 apps/web-check/latest/.env.sample delete mode 100644 apps/web-check/latest/data.yml delete mode 100644 apps/web-check/latest/docker-compose.yml delete mode 100644 apps/web-check/logo.png delete mode 100644 apps/windows/5.14/.env.sample delete mode 100644 apps/windows/5.14/data.yml delete mode 100644 apps/windows/5.14/docker-compose.yml delete mode 100644 apps/windows/README.md delete mode 100644 apps/windows/data.yml delete mode 100644 apps/windows/latest-online/.env.sample delete mode 100644 apps/windows/latest-online/data.yml delete mode 100644 apps/windows/latest-online/docker-compose.yml delete mode 100644 apps/windows/latest/.env.sample delete mode 100644 apps/windows/latest/data.yml delete mode 100644 apps/windows/latest/docker-compose.yml delete mode 100644 apps/windows/logo.png delete mode 100644 apps/woodpecker/3.7.0/.env.sample delete mode 100644 apps/woodpecker/3.7.0/data.yml delete mode 100644 apps/woodpecker/3.7.0/docker-compose.yml delete mode 100644 apps/woodpecker/README.md delete mode 100644 apps/woodpecker/data.yml delete mode 100644 apps/woodpecker/latest/.env.sample delete mode 100644 apps/woodpecker/latest/data.yml delete mode 100644 apps/woodpecker/latest/docker-compose.yml delete mode 100644 apps/woodpecker/logo.png delete mode 100644 apps/woodpecker/mysql-latest/.env.sample delete mode 100644 apps/woodpecker/mysql-latest/data.yml delete mode 100644 apps/woodpecker/mysql-latest/docker-compose.yml delete mode 100644 apps/yesplaymusic/0.4.9/.env.sample delete mode 100644 apps/yesplaymusic/0.4.9/data.yml delete mode 100644 apps/yesplaymusic/0.4.9/docker-compose.yml delete mode 100644 apps/yesplaymusic/README.md delete mode 100644 apps/yesplaymusic/data.yml delete mode 100644 apps/yesplaymusic/latest/.env.sample delete mode 100644 apps/yesplaymusic/latest/data.yml delete mode 100644 apps/yesplaymusic/latest/docker-compose.yml delete mode 100644 apps/yesplaymusic/logo.png delete mode 100644 apps/yourls/1.10.1/.env.sample delete mode 100644 apps/yourls/1.10.1/data.yml delete mode 100644 apps/yourls/1.10.1/docker-compose.yml delete mode 100644 apps/yourls/README.md delete mode 100644 apps/yourls/data.yml delete mode 100644 apps/yourls/latest/.env.sample delete mode 100644 apps/yourls/latest/data.yml delete mode 100644 apps/yourls/latest/docker-compose.yml delete mode 100644 apps/yourls/logo.png delete mode 100644 apps/zabbix-agent/6.4.4/.env.sample delete mode 100644 apps/zabbix-agent/6.4.4/data.yml delete mode 100644 apps/zabbix-agent/6.4.4/docker-compose.yml delete mode 100644 apps/zabbix-agent/README.md delete mode 100644 apps/zabbix-agent/data.yml delete mode 100644 apps/zabbix-agent/latest/.env.sample delete mode 100644 apps/zabbix-agent/latest/data.yml delete mode 100644 apps/zabbix-agent/latest/docker-compose.yml delete mode 100644 apps/zabbix-agent/logo.png delete mode 100644 apps/zabbix-server/6.4.13&mysql/.env.sample delete mode 100644 apps/zabbix-server/6.4.13&mysql/conf/my.cnf delete mode 100644 apps/zabbix-server/6.4.13&mysql/data.yml delete mode 100644 apps/zabbix-server/6.4.13&mysql/docker-compose.yml delete mode 100644 apps/zabbix-server/6.4.13-postgres/.env.sample delete mode 100644 apps/zabbix-server/6.4.13-postgres/data.yml delete mode 100644 apps/zabbix-server/6.4.13-postgres/data/.gitkeep delete mode 100644 apps/zabbix-server/6.4.13-postgres/docker-compose.yml delete mode 100644 apps/zabbix-server/6.4.13-postgres/scripts/init.sh delete mode 100644 apps/zabbix-server/6.4.13/.env.sample delete mode 100644 apps/zabbix-server/6.4.13/data.yml delete mode 100644 apps/zabbix-server/6.4.13/docker-compose.yml delete mode 100644 apps/zabbix-server/README.md delete mode 100644 apps/zabbix-server/data.yml delete mode 100644 apps/zabbix-server/latest&mysql/.env.sample delete mode 100644 apps/zabbix-server/latest&mysql/conf/my.cnf delete mode 100644 apps/zabbix-server/latest&mysql/data.yml delete mode 100644 apps/zabbix-server/latest&mysql/docker-compose.yml delete mode 100644 apps/zabbix-server/latest-postgres/.env.sample delete mode 100644 apps/zabbix-server/latest-postgres/data.yml delete mode 100644 apps/zabbix-server/latest-postgres/data/.gitkeep delete mode 100644 apps/zabbix-server/latest-postgres/docker-compose.yml delete mode 100644 apps/zabbix-server/latest-postgres/scripts/init.sh delete mode 100644 apps/zabbix-server/latest/.env.sample delete mode 100644 apps/zabbix-server/latest/data.yml delete mode 100644 apps/zabbix-server/latest/docker-compose.yml delete mode 100644 apps/zabbix-server/logo.png delete mode 100644 apps/zfile/4.5.0/.env.sample delete mode 100644 apps/zfile/4.5.0/data.yml delete mode 100644 apps/zfile/4.5.0/docker-compose.yml delete mode 100644 apps/zfile/README.md delete mode 100644 apps/zfile/data.yml delete mode 100644 apps/zfile/latest/.env.sample delete mode 100644 apps/zfile/latest/data.yml delete mode 100644 apps/zfile/latest/docker-compose.yml delete mode 100644 apps/zfile/logo.png diff --git a/apps/2fauth/6.0.0/.env.sample b/apps/2fauth/6.0.0/.env.sample deleted file mode 100644 index 2fcfa632..00000000 --- a/apps/2fauth/6.0.0/.env.sample +++ /dev/null @@ -1,54 +0,0 @@ -APP_DEBUG="false" -APP_ENV="local" -APP_KEY="yuBiR9dlyokasPeguSPl8oPRLpHiqAbr" -APP_NAME="2FAuth" -APP_TIMEZONE="Asia/Shanghai" -APP_URL="http://192.168.123.9:40273" -AUTHENTICATION_GUARD="web-guard" -AUTHENTICATION_LOG_RETENTION=365 -AUTH_PROXY_HEADER_FOR_EMAIL="" -AUTH_PROXY_HEADER_FOR_USER="" -BROADCAST_DRIVER="log" -CACHE_DRIVER="file" -CONTAINER_NAME="2fauth" -DB_DATABASE="/srv/database/database.sqlite" -GITHUB_CLIENT_ID="" -GITHUB_CLIENT_SECRET="" -IS_DEMO_APP="false" -LOGIN_THROTTLE=5 -LOG_CHANNEL="daily" -LOG_LEVEL="notice" -MAIL_ENCRYPTION="" -MAIL_FROM_ADDRESS="" -MAIL_FROM_NAME="" -MAIL_HOST="" -MAIL_MAILER="log" -MAIL_PASSWORD="" -MAIL_PORT="" -MAIL_USERNAME="" -MAIL_VERIFY_SSL_PEER="true" -MIX_ENV="local" -OPENID_AUTHORIZE_URL="" -OPENID_CLIENT_ID="" -OPENID_CLIENT_SECRET="" -OPENID_TOKEN_URL="" -OPENID_USERINFO_URL="" -PANEL_APP_PORT_HTTP=40273 -PANEL_REDIS_ROOT_PASSWORD="redis_password" -PROXY_FOR_OUTGOING_REQUESTS="" -PROXY_LOGOUT_URL="" -PUSHER_APP_CLUSTER="mt1" -PUSHER_APP_ID="" -PUSHER_APP_KEY="" -PUSHER_APP_SECRET="" -QUEUE_DRIVER="sync" -REDIS_HOST="redis" -REDIS_PORT=6379 -SESSION_DRIVER="file" -SESSION_LIFETIME=120 -SITE_OWNER="admin@localhost.com" -THROTTLE_API=60 -TRUSTED_PROXIES="" -WEBAUTHN_ID="" -WEBAUTHN_NAME="2FAuth" -WEBAUTHN_USER_VERIFICATION="preferred" diff --git a/apps/2fauth/6.0.0/data.yml b/apps/2fauth/6.0.0/data.yml deleted file mode 100644 index 2b75b155..00000000 --- a/apps/2fauth/6.0.0/data.yml +++ /dev/null @@ -1,426 +0,0 @@ -additionalProperties: - formFields: - - default: "40273" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "2FAuth" - edit: true - envKey: APP_NAME - labelEn: App Name - labelZh: 应用名 - required: true - type: text - - default: "local" - edit: true - envKey: APP_ENV - labelEn: App Environment - labelZh: 应用环境 - required: true - type: select - values: - - label: "local" - value: "local" - - label: "production" - value: "production" - - default: "Asia/Shanghai" - edit: true - envKey: APP_TIMEZONE - labelEn: Timezone - labelZh: 时区 - required: true - type: text - - default: "false" - edit: true - envKey: APP_DEBUG - labelEn: Debug Mode - labelZh: 调试模式 - required: true - type: select - values: - - label: "True" - value: "true" - - label: "False" - value: "false" - - default: "admin@localhost.com" - edit: true - envKey: SITE_OWNER - labelEn: Site Owner - labelZh: 站点拥有者 - required: true - type: text - - default: "yuBiR9dlyokasPeguSPl8oPRLpHiqAbr" - edit: true - envKey: APP_KEY - labelEn: App Key (32 characters) - labelZh: 应用密钥 (32 位字符) - required: true - type: text - - default: "http://localhost:40273" - edit: true - envKey: APP_URL - labelEn: App URL (External URL) - labelZh: 应用网址 (外部访问地址) - required: true - rule: paramExtUrl - type: text - - default: "false" - edit: true - envKey: IS_DEMO_APP - labelEn: Demo Mode - labelZh: 演示模式 - required: true - type: select - values: - - label: "True" - value: "true" - - label: "False" - value: "false" - - default: "daily" - edit: true - envKey: LOG_CHANNEL - labelEn: Log Channel - labelZh: 日志通道 - required: true - type: text - - default: "notice" - edit: true - envKey: LOG_LEVEL - labelEn: Log Level - labelZh: 日志级别 - required: true - type: select - values: - - label: "debug" - value: "debug" - - label: "info" - value: "info" - - label: "notice" - value: "notice" - - label: "warning" - value: "warning" - - label: "error" - value: "error" - - label: "critical" - value: "critical" - - label: "alert" - value: "alert" - - label: "emergency" - value: "emergency" - - default: "/srv/database/database.sqlite" - disabled: true - envKey: DB_DATABASE - labelEn: Database Path - labelZh: 数据库路径 - required: true - type: text - - default: "file" - disabled: true - envKey: CACHE_DRIVER - labelEn: Cache Driver - labelZh: 缓存驱动 - required: true - type: text - - default: "file" - disabled: true - envKey: SESSION_DRIVER - labelEn: Session Driver - labelZh: 会话驱动 - required: true - type: text - - default: "log" - edit: true - envKey: MAIL_MAILER - labelEn: Mailer - labelZh: 邮件发送方式 - required: true - type: text - - default: "" - edit: true - envKey: MAIL_HOST - labelEn: Mail Host - labelZh: 邮件服务器 - required: false - type: text - - default: "" - edit: true - envKey: MAIL_PORT - labelEn: Mail Port - labelZh: 邮件端口 - required: false - type: number - - default: "" - edit: true - envKey: MAIL_USERNAME - labelEn: Mail Username - labelZh: 邮件用户名 - required: false - type: text - - default: "" - edit: true - envKey: MAIL_PASSWORD - labelEn: Mail Password - labelZh: 邮件密码 - required: false - type: password - - default: "" - edit: true - envKey: MAIL_ENCRYPTION - labelEn: Mail Encryption - labelZh: 邮件加密方式 - required: false - type: text - - default: "" - edit: true - envKey: MAIL_FROM_NAME - labelEn: Mail From Name - labelZh: 邮件发件人姓名 - required: false - type: text - - default: "" - edit: true - envKey: MAIL_FROM_ADDRESS - labelEn: Mail From Address - labelZh: 邮件发件人地址 - required: false - type: text - - default: "true" - edit: true - envKey: MAIL_VERIFY_SSL_PEER - labelEn: Mail Verify SSL Peer - labelZh: 邮件验证 SSL 证书 - required: true - type: select - values: - - label: "True" - value: "true" - - label: "False" - value: "false" - - default: "60" - edit: true - envKey: THROTTLE_API - labelEn: API Throttle - labelZh: API 限制 - required: true - type: number - - default: "5" - edit: true - envKey: LOGIN_THROTTLE - labelEn: Login Throttle - labelZh: 登录限制 - required: true - type: number - - default: "web-guard" - edit: true - envKey: AUTHENTICATION_GUARD - labelEn: Authentication Guard - labelZh: 认证保护 - required: true - type: select - values: - - label: "web-guard" - value: "web-guard" - - label: "reverse-proxy-guard" - value: "reverse-proxy-guard" - - default: "365" - edit: true - envKey: AUTHENTICATION_LOG_RETENTION - labelEn: Authentication Log Retention - labelZh: 认证日志保留 - required: true - type: number - - default: "" - edit: true - envKey: AUTH_PROXY_HEADER_FOR_USER - labelEn: Authentication Proxy Header for User - labelZh: 用户认证代理头 - required: false - type: text - - default: "" - edit: true - envKey: AUTH_PROXY_HEADER_FOR_EMAIL - labelEn: Authentication Proxy Header for Email - labelZh: 邮箱认证代理头 - required: false - type: text - - default: "" - edit: true - envKey: PROXY_LOGOUT_URL - labelEn: Proxy Logout URL - labelZh: 代理注销网址 - required: false - type: text - - default: "2FAuth" - edit: true - envKey: WEBAUTHN_NAME - labelEn: WebAuthn Name - labelZh: WebAuthn 名称 - required: true - type: text - - default: "" - edit: true - envKey: WEBAUTHN_ID - labelEn: WebAuthn ID - labelZh: WebAuthn ID - required: false - type: text - - default: "preferred" - edit: true - envKey: WEBAUTHN_USER_VERIFICATION - labelEn: WebAuthn User Verification - labelZh: WebAuthn 用户验证 - required: true - type: select - values: - - label: "Preferred" - value: "preferred" - - label: "Required" - value: "required" - - label: "Discouraged" - value: "discouraged" - - default: "" - edit: true - envKey: TRUSTED_PROXIES - labelEn: Trusted Proxies - labelZh: 信任代理 - required: false - type: text - - default: "" - edit: true - envKey: PROXY_FOR_OUTGOING_REQUESTS - labelEn: Proxy for Outgoing Requests - labelZh: 出站请求代理 - required: false - type: text - - default: "log" - edit: true - envKey: BROADCAST_DRIVER - labelEn: Broadcast Driver - labelZh: 广播驱动 - required: true - type: text - - default: "sync" - edit: true - envKey: QUEUE_DRIVER - labelEn: Queue Driver - labelZh: 队列驱动 - required: true - type: text - - default: "120" - edit: true - envKey: SESSION_LIFETIME - labelEn: Session Lifetime - labelZh: 会话有效期 - required: true - type: number - - 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: "" - edit: true - envKey: PANEL_REDIS_ROOT_PASSWORD - labelEn: Redis Password - labelZh: Redis 密码 - required: true - type: password - - default: "" - edit: true - envKey: PUSHER_APP_ID - labelEn: Pusher App ID - labelZh: Pusher 应用 ID - required: false - type: text - - default: "" - edit: true - envKey: PUSHER_APP_KEY - labelEn: Pusher App Key - labelZh: Pusher 应用密钥 - required: false - type: text - - default: "" - edit: true - envKey: PUSHER_APP_SECRET - labelEn: Pusher App Secret - labelZh: Pusher 应用密钥 - required: false - type: password - - default: "mt1" - edit: true - envKey: PUSHER_APP_CLUSTER - labelEn: Pusher App Cluster - labelZh: Pusher 应用集群 - required: true - type: text - - default: "local" - edit: true - envKey: MIX_ENV - labelEn: Mix Environment - labelZh: Mix 环境 - required: true - type: text - - default: "" - edit: true - envKey: OPENID_AUTHORIZE_URL - labelEn: OpenID Authorize URL (Edit to remove comments in compose.yml to take effect) - labelZh: OpenID 授权 URL (编辑去除compose.yml里的注释生效) - required: false - type: text - - default: "" - edit: true - envKey: OPENID_TOKEN_URL - labelEn: OpenID Token URL (Edit to remove comments in compose.yml to take effect) - labelZh: OpenID 令牌 URL (编辑去除compose.yml里的注释生效) - required: false - type: text - - default: "" - edit: true - envKey: OPENID_USERINFO_URL - labelEn: OpenID Userinfo URL (Edit to remove comments in compose.yml to take effect) - labelZh: OpenID 用户信息 URL (编辑去除compose.yml里的注释生效) - required: false - type: text - - default: "" - edit: true - envKey: OPENID_CLIENT_ID - labelEn: OpenID Client ID (Edit to remove comments in compose.yml to take effect) - labelZh: OpenID 客户端 ID (编辑去除compose.yml里的注释生效) - required: false - type: text - - default: "" - edit: true - envKey: OPENID_CLIENT_SECRET - labelEn: OpenID Client Secret (Edit to remove comments in compose.yml to take effect) - labelZh: OpenID 客户端密钥 (编辑去除compose.yml里的注释生效) - required: false - type: password - - default: "" - edit: true - envKey: GITHUB_CLIENT_ID - labelEn: GitHub Client ID (Edit to remove comments in compose.yml to take effect) - labelZh: GitHub 客户端 ID (编辑去除compose.yml里的注释生效) - required: false - type: text - - default: "" - edit: true - envKey: GITHUB_CLIENT_SECRET - labelEn: GitHub Client Secret (Edit to remove comments in compose.yml to take effect) - labelZh: GitHub 客户端密钥 (编辑去除compose.yml里的注释生效) - required: false - type: password diff --git a/apps/2fauth/6.0.0/data/.gitkeep b/apps/2fauth/6.0.0/data/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/2fauth/6.0.0/docker-compose.yml b/apps/2fauth/6.0.0/docker-compose.yml deleted file mode 100644 index 4fbdec09..00000000 --- a/apps/2fauth/6.0.0/docker-compose.yml +++ /dev/null @@ -1,73 +0,0 @@ -services: - 2fauth: - image: "2fauth/2fauth:6.0.0" - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - ${PANEL_APP_PORT_HTTP}:8000/tcp - volumes: - - ./data:/2fauth - environment: - - APP_NAME=${APP_NAME} - - APP_ENV=${APP_ENV} - - APP_TIMEZONE=${APP_TIMEZONE} - - APP_DEBUG=${APP_DEBUG} - - SITE_OWNER=${SITE_OWNER} - - APP_KEY=${APP_KEY} - - APP_URL=${APP_URL} - - IS_DEMO_APP=${IS_DEMO_APP} - - LOG_CHANNEL=${LOG_CHANNEL} - - LOG_LEVEL=${LOG_LEVEL} - - DB_DATABASE=${DB_DATABASE} - - CACHE_DRIVER=${CACHE_DRIVER} - - SESSION_DRIVER=${SESSION_DRIVER} - - MAIL_MAILER=${MAIL_MAILER} - - MAIL_HOST=${MAIL_HOST} - - MAIL_PORT=${MAIL_PORT} - - MAIL_USERNAME=${MAIL_USERNAME} - - MAIL_PASSWORD=${MAIL_PASSWORD} - - MAIL_ENCRYPTION=${MAIL_ENCRYPTION} - - MAIL_FROM_NAME=${MAIL_FROM_NAME} - - MAIL_FROM_ADDRESS=${MAIL_FROM_ADDRESS} - - MAIL_VERIFY_SSL_PEER=${MAIL_VERIFY_SSL_PEER} - - THROTTLE_API=${THROTTLE_API} - - LOGIN_THROTTLE=${LOGIN_THROTTLE} - - AUTHENTICATION_GUARD=${AUTHENTICATION_GUARD} - - AUTHENTICATION_LOG_RETENTION=${AUTHENTICATION_LOG_RETENTION} - - AUTH_PROXY_HEADER_FOR_USER=${AUTH_PROXY_HEADER_FOR_USER} - - AUTH_PROXY_HEADER_FOR_EMAIL=${AUTH_PROXY_HEADER_FOR_EMAIL} - - PROXY_LOGOUT_URL=${PROXY_LOGOUT_URL} - - WEBAUTHN_NAME=${WEBAUTHN_NAME} - - WEBAUTHN_ID=${WEBAUTHN_ID} - - WEBAUTHN_USER_VERIFICATION=${WEBAUTHN_USER_VERIFICATION} - - TRUSTED_PROXIES=${TRUSTED_PROXIES} - - PROXY_FOR_OUTGOING_REQUESTS=${PROXY_FOR_OUTGOING_REQUESTS} - - BROADCAST_DRIVER=${BROADCAST_DRIVER} - - QUEUE_DRIVER=${QUEUE_DRIVER} - - SESSION_LIFETIME=${SESSION_LIFETIME} - - REDIS_HOST=${REDIS_HOST} - - REDIS_PASSWORD=${PANEL_REDIS_ROOT_PASSWORD} - - REDIS_PORT=${REDIS_PORT} - - PUSHER_APP_ID=${PUSHER_APP_ID} - - PUSHER_APP_KEY=${PUSHER_APP_KEY} - - PUSHER_APP_SECRET=${PUSHER_APP_SECRET} - - PUSHER_APP_CLUSTER=${PUSHER_APP_CLUSTER} - - VITE_PUSHER_APP_KEY=${PUSHER_APP_KEY} - - VITE_PUSHER_APP_CLUSTER=${PUSHER_APP_CLUSTER} - - MIX_ENV=${MIX_ENV} - # 删除以下行前的#号表示启用 - #- OPENID_AUTHORIZE_URL=${OPENID_AUTHORIZE_URL} - #- OPENID_TOKEN_URL=${OPENID_TOKEN_URL} - #- OPENID_USERINFO_URL=${OPENID_USERINFO_URL} - #- OPENID_CLIENT_ID=${OPENID_CLIENT_ID} - #- OPENID_CLIENT_SECRET=${OPENID_CLIENT_SECRET} - #- GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID} - #- GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET} - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true \ No newline at end of file diff --git a/apps/2fauth/6.0.0/scripts/init.sh b/apps/2fauth/6.0.0/scripts/init.sh deleted file mode 100644 index 4e811c86..00000000 --- a/apps/2fauth/6.0.0/scripts/init.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -chown -R 1000:1000 data \ No newline at end of file diff --git a/apps/2fauth/README.md b/apps/2fauth/README.md deleted file mode 100644 index ae5c72b6..00000000 --- a/apps/2fauth/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 2FAuth - -![Docker build status](https://img.shields.io/github/actions/workflow/status/bubka/2fauth/ci-docker-test.yml?branch=master&style=flat-square) -![https://codecov.io/gh/Bubka/2FAuth](https://img.shields.io/codecov/c/github/Bubka/2FAuth?style=flat-square) -![https://github.com/Bubka/2FAuth/blob/master/LICENSE](https://img.shields.io/github/license/Bubka/2FAuth.svg?style=flat-square) - -管理双因素身份验证(2FA)账户并生成其安全代码的网络应用程序。 diff --git a/apps/2fauth/data.yml b/apps/2fauth/data.yml deleted file mode 100644 index 4333313d..00000000 --- a/apps/2fauth/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: 2FAuth -tags: - - 安全 -title: 开源双因素认证管理器 -description: 开源双因素认证管理器 -additionalProperties: - key: 2fauth - name: 2FAuth - tags: - - Security - shortDescZh: 开源双因素认证管理器 - shortDescEn: Open-source two-factor authentication manager - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://docs.2fauth.app - github: https://github.com/Bubka/2FAuth - document: https://docs.2fauth.app diff --git a/apps/2fauth/latest/.env.sample b/apps/2fauth/latest/.env.sample deleted file mode 100644 index 2fcfa632..00000000 --- a/apps/2fauth/latest/.env.sample +++ /dev/null @@ -1,54 +0,0 @@ -APP_DEBUG="false" -APP_ENV="local" -APP_KEY="yuBiR9dlyokasPeguSPl8oPRLpHiqAbr" -APP_NAME="2FAuth" -APP_TIMEZONE="Asia/Shanghai" -APP_URL="http://192.168.123.9:40273" -AUTHENTICATION_GUARD="web-guard" -AUTHENTICATION_LOG_RETENTION=365 -AUTH_PROXY_HEADER_FOR_EMAIL="" -AUTH_PROXY_HEADER_FOR_USER="" -BROADCAST_DRIVER="log" -CACHE_DRIVER="file" -CONTAINER_NAME="2fauth" -DB_DATABASE="/srv/database/database.sqlite" -GITHUB_CLIENT_ID="" -GITHUB_CLIENT_SECRET="" -IS_DEMO_APP="false" -LOGIN_THROTTLE=5 -LOG_CHANNEL="daily" -LOG_LEVEL="notice" -MAIL_ENCRYPTION="" -MAIL_FROM_ADDRESS="" -MAIL_FROM_NAME="" -MAIL_HOST="" -MAIL_MAILER="log" -MAIL_PASSWORD="" -MAIL_PORT="" -MAIL_USERNAME="" -MAIL_VERIFY_SSL_PEER="true" -MIX_ENV="local" -OPENID_AUTHORIZE_URL="" -OPENID_CLIENT_ID="" -OPENID_CLIENT_SECRET="" -OPENID_TOKEN_URL="" -OPENID_USERINFO_URL="" -PANEL_APP_PORT_HTTP=40273 -PANEL_REDIS_ROOT_PASSWORD="redis_password" -PROXY_FOR_OUTGOING_REQUESTS="" -PROXY_LOGOUT_URL="" -PUSHER_APP_CLUSTER="mt1" -PUSHER_APP_ID="" -PUSHER_APP_KEY="" -PUSHER_APP_SECRET="" -QUEUE_DRIVER="sync" -REDIS_HOST="redis" -REDIS_PORT=6379 -SESSION_DRIVER="file" -SESSION_LIFETIME=120 -SITE_OWNER="admin@localhost.com" -THROTTLE_API=60 -TRUSTED_PROXIES="" -WEBAUTHN_ID="" -WEBAUTHN_NAME="2FAuth" -WEBAUTHN_USER_VERIFICATION="preferred" diff --git a/apps/2fauth/latest/data.yml b/apps/2fauth/latest/data.yml deleted file mode 100644 index 2b75b155..00000000 --- a/apps/2fauth/latest/data.yml +++ /dev/null @@ -1,426 +0,0 @@ -additionalProperties: - formFields: - - default: "40273" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "2FAuth" - edit: true - envKey: APP_NAME - labelEn: App Name - labelZh: 应用名 - required: true - type: text - - default: "local" - edit: true - envKey: APP_ENV - labelEn: App Environment - labelZh: 应用环境 - required: true - type: select - values: - - label: "local" - value: "local" - - label: "production" - value: "production" - - default: "Asia/Shanghai" - edit: true - envKey: APP_TIMEZONE - labelEn: Timezone - labelZh: 时区 - required: true - type: text - - default: "false" - edit: true - envKey: APP_DEBUG - labelEn: Debug Mode - labelZh: 调试模式 - required: true - type: select - values: - - label: "True" - value: "true" - - label: "False" - value: "false" - - default: "admin@localhost.com" - edit: true - envKey: SITE_OWNER - labelEn: Site Owner - labelZh: 站点拥有者 - required: true - type: text - - default: "yuBiR9dlyokasPeguSPl8oPRLpHiqAbr" - edit: true - envKey: APP_KEY - labelEn: App Key (32 characters) - labelZh: 应用密钥 (32 位字符) - required: true - type: text - - default: "http://localhost:40273" - edit: true - envKey: APP_URL - labelEn: App URL (External URL) - labelZh: 应用网址 (外部访问地址) - required: true - rule: paramExtUrl - type: text - - default: "false" - edit: true - envKey: IS_DEMO_APP - labelEn: Demo Mode - labelZh: 演示模式 - required: true - type: select - values: - - label: "True" - value: "true" - - label: "False" - value: "false" - - default: "daily" - edit: true - envKey: LOG_CHANNEL - labelEn: Log Channel - labelZh: 日志通道 - required: true - type: text - - default: "notice" - edit: true - envKey: LOG_LEVEL - labelEn: Log Level - labelZh: 日志级别 - required: true - type: select - values: - - label: "debug" - value: "debug" - - label: "info" - value: "info" - - label: "notice" - value: "notice" - - label: "warning" - value: "warning" - - label: "error" - value: "error" - - label: "critical" - value: "critical" - - label: "alert" - value: "alert" - - label: "emergency" - value: "emergency" - - default: "/srv/database/database.sqlite" - disabled: true - envKey: DB_DATABASE - labelEn: Database Path - labelZh: 数据库路径 - required: true - type: text - - default: "file" - disabled: true - envKey: CACHE_DRIVER - labelEn: Cache Driver - labelZh: 缓存驱动 - required: true - type: text - - default: "file" - disabled: true - envKey: SESSION_DRIVER - labelEn: Session Driver - labelZh: 会话驱动 - required: true - type: text - - default: "log" - edit: true - envKey: MAIL_MAILER - labelEn: Mailer - labelZh: 邮件发送方式 - required: true - type: text - - default: "" - edit: true - envKey: MAIL_HOST - labelEn: Mail Host - labelZh: 邮件服务器 - required: false - type: text - - default: "" - edit: true - envKey: MAIL_PORT - labelEn: Mail Port - labelZh: 邮件端口 - required: false - type: number - - default: "" - edit: true - envKey: MAIL_USERNAME - labelEn: Mail Username - labelZh: 邮件用户名 - required: false - type: text - - default: "" - edit: true - envKey: MAIL_PASSWORD - labelEn: Mail Password - labelZh: 邮件密码 - required: false - type: password - - default: "" - edit: true - envKey: MAIL_ENCRYPTION - labelEn: Mail Encryption - labelZh: 邮件加密方式 - required: false - type: text - - default: "" - edit: true - envKey: MAIL_FROM_NAME - labelEn: Mail From Name - labelZh: 邮件发件人姓名 - required: false - type: text - - default: "" - edit: true - envKey: MAIL_FROM_ADDRESS - labelEn: Mail From Address - labelZh: 邮件发件人地址 - required: false - type: text - - default: "true" - edit: true - envKey: MAIL_VERIFY_SSL_PEER - labelEn: Mail Verify SSL Peer - labelZh: 邮件验证 SSL 证书 - required: true - type: select - values: - - label: "True" - value: "true" - - label: "False" - value: "false" - - default: "60" - edit: true - envKey: THROTTLE_API - labelEn: API Throttle - labelZh: API 限制 - required: true - type: number - - default: "5" - edit: true - envKey: LOGIN_THROTTLE - labelEn: Login Throttle - labelZh: 登录限制 - required: true - type: number - - default: "web-guard" - edit: true - envKey: AUTHENTICATION_GUARD - labelEn: Authentication Guard - labelZh: 认证保护 - required: true - type: select - values: - - label: "web-guard" - value: "web-guard" - - label: "reverse-proxy-guard" - value: "reverse-proxy-guard" - - default: "365" - edit: true - envKey: AUTHENTICATION_LOG_RETENTION - labelEn: Authentication Log Retention - labelZh: 认证日志保留 - required: true - type: number - - default: "" - edit: true - envKey: AUTH_PROXY_HEADER_FOR_USER - labelEn: Authentication Proxy Header for User - labelZh: 用户认证代理头 - required: false - type: text - - default: "" - edit: true - envKey: AUTH_PROXY_HEADER_FOR_EMAIL - labelEn: Authentication Proxy Header for Email - labelZh: 邮箱认证代理头 - required: false - type: text - - default: "" - edit: true - envKey: PROXY_LOGOUT_URL - labelEn: Proxy Logout URL - labelZh: 代理注销网址 - required: false - type: text - - default: "2FAuth" - edit: true - envKey: WEBAUTHN_NAME - labelEn: WebAuthn Name - labelZh: WebAuthn 名称 - required: true - type: text - - default: "" - edit: true - envKey: WEBAUTHN_ID - labelEn: WebAuthn ID - labelZh: WebAuthn ID - required: false - type: text - - default: "preferred" - edit: true - envKey: WEBAUTHN_USER_VERIFICATION - labelEn: WebAuthn User Verification - labelZh: WebAuthn 用户验证 - required: true - type: select - values: - - label: "Preferred" - value: "preferred" - - label: "Required" - value: "required" - - label: "Discouraged" - value: "discouraged" - - default: "" - edit: true - envKey: TRUSTED_PROXIES - labelEn: Trusted Proxies - labelZh: 信任代理 - required: false - type: text - - default: "" - edit: true - envKey: PROXY_FOR_OUTGOING_REQUESTS - labelEn: Proxy for Outgoing Requests - labelZh: 出站请求代理 - required: false - type: text - - default: "log" - edit: true - envKey: BROADCAST_DRIVER - labelEn: Broadcast Driver - labelZh: 广播驱动 - required: true - type: text - - default: "sync" - edit: true - envKey: QUEUE_DRIVER - labelEn: Queue Driver - labelZh: 队列驱动 - required: true - type: text - - default: "120" - edit: true - envKey: SESSION_LIFETIME - labelEn: Session Lifetime - labelZh: 会话有效期 - required: true - type: number - - 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: "" - edit: true - envKey: PANEL_REDIS_ROOT_PASSWORD - labelEn: Redis Password - labelZh: Redis 密码 - required: true - type: password - - default: "" - edit: true - envKey: PUSHER_APP_ID - labelEn: Pusher App ID - labelZh: Pusher 应用 ID - required: false - type: text - - default: "" - edit: true - envKey: PUSHER_APP_KEY - labelEn: Pusher App Key - labelZh: Pusher 应用密钥 - required: false - type: text - - default: "" - edit: true - envKey: PUSHER_APP_SECRET - labelEn: Pusher App Secret - labelZh: Pusher 应用密钥 - required: false - type: password - - default: "mt1" - edit: true - envKey: PUSHER_APP_CLUSTER - labelEn: Pusher App Cluster - labelZh: Pusher 应用集群 - required: true - type: text - - default: "local" - edit: true - envKey: MIX_ENV - labelEn: Mix Environment - labelZh: Mix 环境 - required: true - type: text - - default: "" - edit: true - envKey: OPENID_AUTHORIZE_URL - labelEn: OpenID Authorize URL (Edit to remove comments in compose.yml to take effect) - labelZh: OpenID 授权 URL (编辑去除compose.yml里的注释生效) - required: false - type: text - - default: "" - edit: true - envKey: OPENID_TOKEN_URL - labelEn: OpenID Token URL (Edit to remove comments in compose.yml to take effect) - labelZh: OpenID 令牌 URL (编辑去除compose.yml里的注释生效) - required: false - type: text - - default: "" - edit: true - envKey: OPENID_USERINFO_URL - labelEn: OpenID Userinfo URL (Edit to remove comments in compose.yml to take effect) - labelZh: OpenID 用户信息 URL (编辑去除compose.yml里的注释生效) - required: false - type: text - - default: "" - edit: true - envKey: OPENID_CLIENT_ID - labelEn: OpenID Client ID (Edit to remove comments in compose.yml to take effect) - labelZh: OpenID 客户端 ID (编辑去除compose.yml里的注释生效) - required: false - type: text - - default: "" - edit: true - envKey: OPENID_CLIENT_SECRET - labelEn: OpenID Client Secret (Edit to remove comments in compose.yml to take effect) - labelZh: OpenID 客户端密钥 (编辑去除compose.yml里的注释生效) - required: false - type: password - - default: "" - edit: true - envKey: GITHUB_CLIENT_ID - labelEn: GitHub Client ID (Edit to remove comments in compose.yml to take effect) - labelZh: GitHub 客户端 ID (编辑去除compose.yml里的注释生效) - required: false - type: text - - default: "" - edit: true - envKey: GITHUB_CLIENT_SECRET - labelEn: GitHub Client Secret (Edit to remove comments in compose.yml to take effect) - labelZh: GitHub 客户端密钥 (编辑去除compose.yml里的注释生效) - required: false - type: password diff --git a/apps/2fauth/latest/data/.gitkeep b/apps/2fauth/latest/data/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/2fauth/latest/docker-compose.yml b/apps/2fauth/latest/docker-compose.yml deleted file mode 100644 index c1d09756..00000000 --- a/apps/2fauth/latest/docker-compose.yml +++ /dev/null @@ -1,73 +0,0 @@ -services: - 2fauth: - image: "2fauth/2fauth:latest" - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - ${PANEL_APP_PORT_HTTP}:8000/tcp - volumes: - - ./data:/2fauth - environment: - - APP_NAME=${APP_NAME} - - APP_ENV=${APP_ENV} - - APP_TIMEZONE=${APP_TIMEZONE} - - APP_DEBUG=${APP_DEBUG} - - SITE_OWNER=${SITE_OWNER} - - APP_KEY=${APP_KEY} - - APP_URL=${APP_URL} - - IS_DEMO_APP=${IS_DEMO_APP} - - LOG_CHANNEL=${LOG_CHANNEL} - - LOG_LEVEL=${LOG_LEVEL} - - DB_DATABASE=${DB_DATABASE} - - CACHE_DRIVER=${CACHE_DRIVER} - - SESSION_DRIVER=${SESSION_DRIVER} - - MAIL_MAILER=${MAIL_MAILER} - - MAIL_HOST=${MAIL_HOST} - - MAIL_PORT=${MAIL_PORT} - - MAIL_USERNAME=${MAIL_USERNAME} - - MAIL_PASSWORD=${MAIL_PASSWORD} - - MAIL_ENCRYPTION=${MAIL_ENCRYPTION} - - MAIL_FROM_NAME=${MAIL_FROM_NAME} - - MAIL_FROM_ADDRESS=${MAIL_FROM_ADDRESS} - - MAIL_VERIFY_SSL_PEER=${MAIL_VERIFY_SSL_PEER} - - THROTTLE_API=${THROTTLE_API} - - LOGIN_THROTTLE=${LOGIN_THROTTLE} - - AUTHENTICATION_GUARD=${AUTHENTICATION_GUARD} - - AUTHENTICATION_LOG_RETENTION=${AUTHENTICATION_LOG_RETENTION} - - AUTH_PROXY_HEADER_FOR_USER=${AUTH_PROXY_HEADER_FOR_USER} - - AUTH_PROXY_HEADER_FOR_EMAIL=${AUTH_PROXY_HEADER_FOR_EMAIL} - - PROXY_LOGOUT_URL=${PROXY_LOGOUT_URL} - - WEBAUTHN_NAME=${WEBAUTHN_NAME} - - WEBAUTHN_ID=${WEBAUTHN_ID} - - WEBAUTHN_USER_VERIFICATION=${WEBAUTHN_USER_VERIFICATION} - - TRUSTED_PROXIES=${TRUSTED_PROXIES} - - PROXY_FOR_OUTGOING_REQUESTS=${PROXY_FOR_OUTGOING_REQUESTS} - - BROADCAST_DRIVER=${BROADCAST_DRIVER} - - QUEUE_DRIVER=${QUEUE_DRIVER} - - SESSION_LIFETIME=${SESSION_LIFETIME} - - REDIS_HOST=${REDIS_HOST} - - REDIS_PASSWORD=${PANEL_REDIS_ROOT_PASSWORD} - - REDIS_PORT=${REDIS_PORT} - - PUSHER_APP_ID=${PUSHER_APP_ID} - - PUSHER_APP_KEY=${PUSHER_APP_KEY} - - PUSHER_APP_SECRET=${PUSHER_APP_SECRET} - - PUSHER_APP_CLUSTER=${PUSHER_APP_CLUSTER} - - VITE_PUSHER_APP_KEY=${PUSHER_APP_KEY} - - VITE_PUSHER_APP_CLUSTER=${PUSHER_APP_CLUSTER} - - MIX_ENV=${MIX_ENV} - # 删除以下行前的#号表示启用 - #- OPENID_AUTHORIZE_URL=${OPENID_AUTHORIZE_URL} - #- OPENID_TOKEN_URL=${OPENID_TOKEN_URL} - #- OPENID_USERINFO_URL=${OPENID_USERINFO_URL} - #- OPENID_CLIENT_ID=${OPENID_CLIENT_ID} - #- OPENID_CLIENT_SECRET=${OPENID_CLIENT_SECRET} - #- GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID} - #- GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET} - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true \ No newline at end of file diff --git a/apps/2fauth/latest/scripts/init.sh b/apps/2fauth/latest/scripts/init.sh deleted file mode 100644 index 4e811c86..00000000 --- a/apps/2fauth/latest/scripts/init.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -chown -R 1000:1000 data \ No newline at end of file diff --git a/apps/2fauth/logo.png b/apps/2fauth/logo.png deleted file mode 100644 index 11c3eca457b48fd79f87d9a5f8fae56c838d25d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1861 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 diff --git a/apps/adguardhome/0.107.63/.env.sample b/apps/adguardhome/0.107.63/.env.sample deleted file mode 100644 index ffd81e37..00000000 --- a/apps/adguardhome/0.107.63/.env.sample +++ /dev/null @@ -1,13 +0,0 @@ -CONTAINER_NAME="adguardhome" -PLAIN_DNS_PORT="20053" -DHCP_PORT1="20067" -DHCP_PORT2="20068" -HTTP_PORT="23000" -PANEL_APP_PORT_HTTP="23001" -DOH_PORT="20443" -DOT_PORT="853" -QUIC_PORT1="20784" -QUIC_PORT2="8853" -DNS_CRYPT_PORT="5443" -WORK_PATH="./data/work" -CONFIG_PATH="./data/conf" diff --git a/apps/adguardhome/0.107.63/data.yml b/apps/adguardhome/0.107.63/data.yml deleted file mode 100644 index 13053a04..00000000 --- a/apps/adguardhome/0.107.63/data.yml +++ /dev/null @@ -1,96 +0,0 @@ -additionalProperties: - formFields: - - default: 20053 - edit: true - envKey: PLAIN_DNS_PORT - labelEn: Plain DNS port - labelZh: 普通DNS端口 - required: true - rule: paramPort - type: number - - default: 20067 - edit: true - envKey: DHCP_PORT1 - labelEn: DHCP service port 1 - labelZh: DHCP服务端口1 - required: true - rule: paramPort - type: number - - default: 20068 - edit: true - envKey: DHCP_PORT2 - labelEn: DHCP service port 2 - labelZh: DHCP服务端口2 - required: true - rule: paramPort - type: number - - default: 23000 - edit: true - envKey: HTTP_PORT - labelEn: HTTP web port - labelZh: HTTP网页端口 - required: true - rule: paramPort - type: number - - default: 23001 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Initial setup web page port - labelZh: 初始设置网页端口 - required: true - rule: paramPort - type: number - - default: 20443 - edit: true - envKey: DOH_PORT - labelEn: DOH service port - labelZh: DOH服务端口 - required: true - rule: paramPort - type: number - - default: 853 - edit: true - envKey: DOT_PORT - labelEn: DOT service port - labelZh: DOT服务端口 - required: true - rule: paramPort - type: number - - default: 20784 - edit: true - envKey: QUIC_PORT1 - labelEn: QUIC service port 1 - labelZh: QUIC服务端口1 - required: true - rule: paramPort - type: number - - default: 8853 - edit: true - envKey: QUIC_PORT2 - labelEn: QUIC service port 2 - labelZh: QUIC服务端口2 - required: true - rule: paramPort - type: number - - default: 5443 - edit: true - envKey: DNS_CRYPT_PORT - labelEn: DNS Crypt service port - labelZh: DNS Crypt服务端口 - required: true - rule: paramPort - type: number - - default: ./data/work - edit: true - envKey: WORK_PATH - labelEn: Work data folder path - labelZh: 工作数据文件夹路径 - required: true - type: text - - default: ./data/conf - edit: true - envKey: CONFIG_PATH - labelEn: Configuration folder path - labelZh: 配置文件夹路径 - required: true - type: text diff --git a/apps/adguardhome/0.107.63/docker-compose.yml b/apps/adguardhome/0.107.63/docker-compose.yml deleted file mode 100644 index d00e9220..00000000 --- a/apps/adguardhome/0.107.63/docker-compose.yml +++ /dev/null @@ -1,31 +0,0 @@ -services: - adguardhome: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - ${PLAIN_DNS_PORT}:53/tcp - - ${PLAIN_DNS_PORT}:53/udp - - ${DHCP_PORT1}:67/udp - - ${DHCP_PORT2}:68/udp - - ${HTTP_PORT}:80/tcp - - ${DOH_PORT}:443/tcp - - ${DOH_PORT}:443/udp - - ${PANEL_APP_PORT_HTTP}:3000/tcp - - ${DOT_PORT}:853/tcp - - ${QUIC_PORT1}:784/udp - - ${DOT_PORT}:853/udp - - ${QUIC_PORT2}:8853/udp - - ${DNS_CRYPT_PORT}:5443/tcp - - ${DNS_CRYPT_PORT}:5443/udp - volumes: - - ${WORK_PATH}:/opt/adguardhome/work - - ${CONFIG_PATH}:/opt/adguardhome/conf - image: adguard/adguardhome:v0.107.63 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/adguardhome/README.md b/apps/adguardhome/README.md deleted file mode 100644 index 6aa82def..00000000 --- a/apps/adguardhome/README.md +++ /dev/null @@ -1,529 +0,0 @@ -  -

- - - AdGuard Home - -

-

Privacy protection center for you and your devices

-

- Free and open source, powerful network-wide ads & trackers blocking DNS - server. -

-

- AdGuard.com | - Wiki | - Reddit | - Twitter | - Telegram -

- - Code Coverage - - - Go Report Card - - - Docker Pulls - -
- - Latest release - - - adguard-home - -

-
-

- -

-
- -AdGuard Home is a network-wide software for blocking ads and tracking. After you -set it up, it'll cover ALL your home devices, and you don't need any client-side -software for that. - -It operates as a DNS server that re-routes tracking domains to a “black hole”, -thus preventing your devices from connecting to those servers. It's based on -software we use for our public [AdGuard DNS] servers, and both share a lot of -code. - -[AdGuard DNS]: https://adguard-dns.io/ - - - - * [Getting Started](#getting-started) - * [Automated install (Unix)](#automated-install-linux-and-mac) - * [Alternative methods](#alternative-methods) - * [Guides](#guides) - * [API](#api) - * [Comparing AdGuard Home to other solutions](#comparison) - * [How is this different from public AdGuard DNS servers?](#comparison-adguard-dns) - * [How does AdGuard Home compare to Pi-Hole](#comparison-pi-hole) - * [How does AdGuard Home compare to traditional ad blockers](#comparison-adblock) - * [Known limitations](#comparison-limitations) - * [How to build from source](#how-to-build) - * [Prerequisites](#prerequisites) - * [Building](#building) - * [Contributing](#contributing) - * [Test unstable versions](#test-unstable-versions) - * [Reporting issues](#reporting-issues) - * [Help with translations](#translate) - * [Other](#help-other) - * [Projects that use AdGuard Home](#uses) - * [Acknowledgments](#acknowledgments) - * [Privacy](#privacy) - - - -## Getting Started - - ### Automated install (Unix) - -To install with `curl` run the following command: - -```sh -curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v -``` - -To install with `wget` run the following command: - -```sh -wget --no-verbose -O - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v -``` - -To install with `fetch` run the following command: - -```sh -fetch -o - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v -``` - -The script also accepts some options: - - * `-c ` to use specified channel; - * `-r` to reinstall AdGuard Home; - * `-u` to uninstall AdGuard Home; - * `-v` for verbose output. - -Note that options `-r` and `-u` are mutually exclusive. - - - - ### Alternative methods - - #### Manual installation - -Please read the **[Getting Started][wiki-start]** article on our Wiki to learn -how to install AdGuard Home manually, and how to configure your devices to use -it. - - #### Docker - -You can use our official Docker image on [Docker Hub]. - - #### Snap Store - -If you're running **Linux,** there's a secure and easy way to install AdGuard -Home: get it from the [Snap Store]. - -[Docker Hub]: https://hub.docker.com/r/adguard/adguardhome -[Snap Store]: https://snapcraft.io/adguard-home -[wiki-start]: https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started - - - - ### Guides - -See our [Wiki][wiki]. - -[wiki]: https://github.com/AdguardTeam/AdGuardHome/wiki - - - - ### API - -If you want to integrate with AdGuard Home, you can use our [REST API][openapi]. -Alternatively, you can use this [python client][pyclient], which is used to -build the [AdGuard Home Hass.io Add-on][hassio]. - -[hassio]: https://www.home-assistant.io/integrations/adguard/ -[openapi]: https://github.com/AdguardTeam/AdGuardHome/tree/master/openapi -[pyclient]: https://pypi.org/project/adguardhome/ - - - -## Comparing AdGuard Home to other solutions - - ### How is this different from public AdGuard DNS servers? - -Running your own AdGuard Home server allows you to do much more than using a -public DNS server. It's a completely different level. See for yourself: - - * Choose what exactly the server blocks and permits. - - * Monitor your network activity. - - * Add your own custom filtering rules. - - * **Most importantly, it's your own server, and you are the only one who's in - control.** - - - - ### How does AdGuard Home compare to Pi-Hole - -At this point, AdGuard Home has a lot in common with Pi-Hole. Both block ads -and trackers using the so-called “DNS sinkholing” method and both allow -customizing what's blocked. - - - -AdGuard Home provides a lot of features out-of-the-box with no need to install -and configure additional software. We want it to be simple to the point when -even casual users can set it up with minimal effort. - -**Disclaimer:** some of the listed features can be added to Pi-Hole by -installing additional software or by manually using SSH terminal and -reconfiguring one of the utilities Pi-Hole consists of. However, in our -opinion, this cannot be legitimately counted as a Pi-Hole's feature. - -| Feature | AdGuard Home | Pi-Hole | -|-------------------------------------------------------------------------|-------------------|-----------------------------------------------------------| -| Blocking ads and trackers | ✅ | ✅ | -| Customizing blocklists | ✅ | ✅ | -| Built-in DHCP server | ✅ | ✅ | -| HTTPS for the Admin interface | ✅ | Kind of, but you'll need to manually configure lighttpd | -| Encrypted DNS upstream servers (DNS-over-HTTPS, DNS-over-TLS, DNSCrypt) | ✅ | ❌ (requires additional software) | -| Cross-platform | ✅ | ❌ (not natively, only via Docker) | -| Running as a DNS-over-HTTPS or DNS-over-TLS server | ✅ | ❌ (requires additional software) | -| Blocking phishing and malware domains | ✅ | ❌ (requires non-default blocklists) | -| Parental control (blocking adult domains) | ✅ | ❌ | -| Force Safe search on search engines | ✅ | ❌ | -| Per-client (device) configuration | ✅ | ✅ | -| Access settings (choose who can use AGH DNS) | ✅ | ❌ | -| Running [without root privileges][wiki-noroot] | ✅ | ❌ | - -[wiki-noroot]: https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#running-without-superuser - - - - ### How does AdGuard Home compare to traditional ad blockers - -It depends. - -DNS sinkholing is capable of blocking a big percentage of ads, but it lacks -the flexibility and the power of traditional ad blockers. You can get a good -impression about the difference between these methods by reading [this -article][blog-adaway], which compares AdGuard for Android (a traditional ad -blocker) to hosts-level ad blockers (which are almost identical to DNS-based -blockers in their capabilities). This level of protection is enough for some -users. - -Additionally, using a DNS-based blocker can help to block ads, tracking and -analytics requests on other types of devices, such as SmartTVs, smart speakers -or other kinds of IoT devices (on which you can't install traditional ad -blockers). - - - - ### Known limitations - -Here are some examples of what cannot be blocked by a DNS-level blocker: - - * YouTube, Twitch ads; - - * Facebook, Twitter, Instagram sponsored posts. - -Essentially, any advertising that shares a domain with content cannot be blocked -by a DNS-level blocker. - -Is there a chance to handle this in the future? DNS will never be enough to do -this. Our only option is to use a content blocking proxy like what we do in the -standalone AdGuard applications. We're [going to bring][issue-1228] this -feature support to AdGuard Home in the future. Unfortunately, even in this -case, there still will be cases when this won't be enough or would require quite -a complicated configuration. - -[blog-adaway]: https://adguard.com/blog/adguard-vs-adaway-dns66.html -[issue-1228]: https://github.com/AdguardTeam/AdGuardHome/issues/1228 - - - -## How to build from source - - ### Prerequisites - -Run `make init` to prepare the development environment. - -You will need this to build AdGuard Home: - - * [Go](https://golang.org/dl/) v1.19 or later; - * [Node.js](https://nodejs.org/en/download/) v10.16.2 or later; - * [npm](https://www.npmjs.com/) v6.14 or later; - * [yarn](https://yarnpkg.com/) v1.22.5 or later. - - - - ### Building - -Open your terminal and execute these commands: - -```sh -git clone https://github.com/AdguardTeam/AdGuardHome -cd AdGuardHome -make -``` - -**NOTE:** The non-standard `-j` flag is currently not supported, so building -with `make -j 4` or setting your `MAKEFLAGS` to include, for example, `-j 4` is -likely to break the build. If you do have your `MAKEFLAGS` set to that, and you -don't want to change it, you can override it by running `make -j 1`. - -Check the [`Makefile`][src-makefile] to learn about other commands. - - #### Building for a different platform - -You can build AdGuard Home for any OS/ARCH that Go supports. In order to do -this, specify `GOOS` and `GOARCH` environment variables as macros when running -`make`. - -For example: - -```sh -env GOOS='linux' GOARCH='arm64' make -``` - -or: - -```sh -make GOOS='linux' GOARCH='arm64' -``` - - #### Preparing releases - -You'll need [`snapcraft`] to prepare a release build. Once installed, run the -following command: - -```sh -make build-release CHANNEL='...' VERSION='...' -``` - -See the [`build-release` target documentation][targ-release]. - - #### Docker image - -Run `make build-docker` to build the Docker image locally (the one that we -publish to DockerHub). Please note, that we're using [Docker Buildx][buildx] to -build our official image. - -You may need to prepare before using these builds: - - * (Linux-only) Install Qemu: - - ```sh - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes --credential yes - ``` - - * Prepare the builder: - - ```sh - docker buildx create --name buildx-builder --driver docker-container --use - ``` - -See the [`build-docker` target documentation][targ-docker]. - - #### Debugging the frontend - -When you need to debug the frontend without recompiling the production version -every time, for example to check how your labels would look on a form, you can -run the frontend build a development environment. - -1. In a separate terminal, run: - - ```sh - ( cd ./client/ && env NODE_ENV='development' npm run watch ) - ``` - -2. Run your `AdGuardHome` binary with the `--local-frontend` flag, which - instructs AdGuard Home to ignore the built-in frontend files and use those - from the `./build/` directory. - -3. Now any changes you make in the `./client/` directory should be recompiled - and become available on the web UI. Make sure that you disable the browser - cache to make sure that you actually get the recompiled version. - -[`snapcraft`]: https://snapcraft.io/ -[buildx]: https://docs.docker.com/buildx/working-with-buildx/ -[src-makefile]: https://github.com/AdguardTeam/AdGuardHome/blob/master/Makefile -[targ-docker]: https://github.com/AdguardTeam/AdGuardHome/tree/master/scripts#build-dockersh-build-a-multi-architecture-docker-image -[targ-release]: https://github.com/AdguardTeam/AdGuardHome/tree/master/scripts#build-releasesh-build-a-release-for-all-platforms - - - -## Contributing - -You are welcome to fork this repository, make your changes and [submit a pull -request][pr]. Please make sure you follow our [code guidelines][guide] though. - -Please note that we don't expect people to contribute to both UI and backend -parts of the program simultaneously. Ideally, the backend part is implemented -first, i.e. configuration, API, and the functionality itself. The UI part can -be implemented later in a different pull request by a different person. - -[guide]: https://github.com/AdguardTeam/CodeGuidelines/ -[pr]: https://github.com/AdguardTeam/AdGuardHome/pulls - - - - ### Test unstable versions - -There are two update channels that you can use: - - * `beta`: beta versions of AdGuard Home. More or less stable versions, - usually released every two weeks or more often. - - * `edge`: the newest version of AdGuard Home from the development branch. New - updates are pushed to this channel daily. - -There are three options how you can install an unstable version: - -1. [Snap Store]: look for the `beta` and `edge` channels. - -2. [Docker Hub]: look for the `beta` and `edge` tags. - -3. Standalone builds. Use the automated installation script or look for the - available builds [on the Wiki][wiki-platf]. - - Script to install a beta version: - - ```sh - curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -c beta - ``` - - Script to install an edge version: - - ```sh - curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -c edge - ``` -[wiki-platf]: https://github.com/AdguardTeam/AdGuardHome/wiki/Platforms - - - - ### Report issues - -If you run into any problem or have a suggestion, head to [this page][iss] and -click on the “New issue” button. - -[iss]: https://github.com/AdguardTeam/AdGuardHome/issues - - - - ### Help with translations - -If you want to help with AdGuard Home translations, please learn more about -translating AdGuard products [in our Knowledge Base][kb-trans]. You can -contribute to the [AdGuardHome project on CrowdIn][crowdin]. - -[crowdin]: https://crowdin.com/project/adguard-applications/en#/adguard-home -[kb-trans]: https://kb.adguard.com/en/general/adguard-translations - - - - ### Other - -Another way you can contribute is by [looking for issues][iss-help] marked as -`help wanted`, asking if the issue is up for grabs, and sending a PR fixing the -bug or implementing the feature. - -[iss-help]: https://github.com/AdguardTeam/AdGuardHome/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22 - - - -## Projects that use AdGuard Home - - - - * [AdGuard Home Remote](https://apps.apple.com/app/apple-store/id1543143740): - iOS app by [Joost](https://rocketscience-it.nl/). - - * [Python library](https://github.com/frenck/python-adguardhome) by - [@frenck](https://github.com/frenck). - - * [Home Assistant add-on](https://github.com/hassio-addons/addon-adguard-home) - by [@frenck](https://github.com/frenck). - - * [OpenWrt LUCI app](https://github.com/kongfl888/luci-app-adguardhome) by - [@kongfl888](https://github.com/kongfl888) (originally by - [@rufengsuixing](https://github.com/rufengsuixing)). - - * [Prometheus exporter for AdGuard - Home](https://github.com/ebrianne/adguard-exporter) by - [@ebrianne](https://github.com/ebrianne). - - * [Terminal-based, real-time traffic monitoring and statistics for your AdGuard Home - instance](https://github.com/Lissy93/AdGuardian-Term) by - [@Lissy93](https://github.com/Lissy93) - - * [AdGuard Home on GLInet - routers](https://forum.gl-inet.com/t/adguardhome-on-gl-routers/10664) by - [Gl-Inet](https://gl-inet.com/). - - * [Cloudron app](https://git.cloudron.io/cloudron/adguard-home-app) by - [@gramakri](https://github.com/gramakri). - - * [Asuswrt-Merlin-AdGuardHome-Installer](https://github.com/jumpsmm7/Asuswrt-Merlin-AdGuardHome-Installer) - by [@jumpsmm7](https://github.com/jumpsmm7) aka - [@SomeWhereOverTheRainBow](https://www.snbforums.com/members/somewhereovertherainbow.64179/). - - * [Node.js library](https://github.com/Andrea055/AdguardHomeAPI) by - [@Andrea055](https://github.com/Andrea055/). - - - -## Acknowledgments - - - -This software wouldn't have been possible without: - - * [Go](https://golang.org/dl/) and its libraries: - * [gcache](https://github.com/bluele/gcache) - * [miekg's dns](https://github.com/miekg/dns) - * [go-yaml](https://github.com/go-yaml/yaml) - * [service](https://godoc.org/github.com/kardianos/service) - * [dnsproxy](https://github.com/AdguardTeam/dnsproxy) - * [urlfilter](https://github.com/AdguardTeam/urlfilter) - * [Node.js](https://nodejs.org/) and its libraries: - * And many more Node.js packages. - * [React.js](https://reactjs.org) - * [Tabler](https://github.com/tabler/tabler) - * [whotracks.me data](https://github.com/cliqz-oss/whotracks.me) - -You might have seen that [CoreDNS] was mentioned here before, but we've stopped -using it in AdGuard Home. - -For the full list of all Node.js packages in use, please take a look at -[`client/package.json`][src-packagejson] file. - -[CoreDNS]: https://coredns.io -[src-packagejson]: https://github.com/AdguardTeam/AdGuardHome/blob/master/client/package.json - - - -## Privacy - -Our main idea is that you are the one, who should be in control of your data. -So it is only natural, that AdGuard Home does not collect any usage statistics, -and does not use any web services unless you configure it to do so. See also -the [full privacy policy][privacy] with every bit that *could in theory be sent* -by AdGuard Home is available. - -[privacy]: https://adguard.com/en/privacy/home.html diff --git a/apps/adguardhome/data.yml b/apps/adguardhome/data.yml deleted file mode 100644 index a62e75b4..00000000 --- a/apps/adguardhome/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: AdGuardHome -tags: - - 安全 -title: 自由且开源的,功能强大的网络广告和跟踪器屏蔽DNS服务器 -description: 自由且开源的,功能强大的网络广告和跟踪器屏蔽DNS服务器 -additionalProperties: - key: adguardhome - name: AdGuardHome - tags: - - Security - shortDescZh: 自由且开源的,功能强大的网络广告和跟踪器屏蔽DNS服务器 - shortDescEn: Free and open source, powerful network-wide ads & trackers blocking DNS server - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://hub.docker.com/r/adguard/adguardhome - github: https://github.com/AdguardTeam/AdGuardHome - document: https://github.com/AdguardTeam/AdGuardHome/wiki diff --git a/apps/adguardhome/latest/.env.sample b/apps/adguardhome/latest/.env.sample deleted file mode 100644 index ffd81e37..00000000 --- a/apps/adguardhome/latest/.env.sample +++ /dev/null @@ -1,13 +0,0 @@ -CONTAINER_NAME="adguardhome" -PLAIN_DNS_PORT="20053" -DHCP_PORT1="20067" -DHCP_PORT2="20068" -HTTP_PORT="23000" -PANEL_APP_PORT_HTTP="23001" -DOH_PORT="20443" -DOT_PORT="853" -QUIC_PORT1="20784" -QUIC_PORT2="8853" -DNS_CRYPT_PORT="5443" -WORK_PATH="./data/work" -CONFIG_PATH="./data/conf" diff --git a/apps/adguardhome/latest/data.yml b/apps/adguardhome/latest/data.yml deleted file mode 100644 index 13053a04..00000000 --- a/apps/adguardhome/latest/data.yml +++ /dev/null @@ -1,96 +0,0 @@ -additionalProperties: - formFields: - - default: 20053 - edit: true - envKey: PLAIN_DNS_PORT - labelEn: Plain DNS port - labelZh: 普通DNS端口 - required: true - rule: paramPort - type: number - - default: 20067 - edit: true - envKey: DHCP_PORT1 - labelEn: DHCP service port 1 - labelZh: DHCP服务端口1 - required: true - rule: paramPort - type: number - - default: 20068 - edit: true - envKey: DHCP_PORT2 - labelEn: DHCP service port 2 - labelZh: DHCP服务端口2 - required: true - rule: paramPort - type: number - - default: 23000 - edit: true - envKey: HTTP_PORT - labelEn: HTTP web port - labelZh: HTTP网页端口 - required: true - rule: paramPort - type: number - - default: 23001 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Initial setup web page port - labelZh: 初始设置网页端口 - required: true - rule: paramPort - type: number - - default: 20443 - edit: true - envKey: DOH_PORT - labelEn: DOH service port - labelZh: DOH服务端口 - required: true - rule: paramPort - type: number - - default: 853 - edit: true - envKey: DOT_PORT - labelEn: DOT service port - labelZh: DOT服务端口 - required: true - rule: paramPort - type: number - - default: 20784 - edit: true - envKey: QUIC_PORT1 - labelEn: QUIC service port 1 - labelZh: QUIC服务端口1 - required: true - rule: paramPort - type: number - - default: 8853 - edit: true - envKey: QUIC_PORT2 - labelEn: QUIC service port 2 - labelZh: QUIC服务端口2 - required: true - rule: paramPort - type: number - - default: 5443 - edit: true - envKey: DNS_CRYPT_PORT - labelEn: DNS Crypt service port - labelZh: DNS Crypt服务端口 - required: true - rule: paramPort - type: number - - default: ./data/work - edit: true - envKey: WORK_PATH - labelEn: Work data folder path - labelZh: 工作数据文件夹路径 - required: true - type: text - - default: ./data/conf - edit: true - envKey: CONFIG_PATH - labelEn: Configuration folder path - labelZh: 配置文件夹路径 - required: true - type: text diff --git a/apps/adguardhome/latest/docker-compose.yml b/apps/adguardhome/latest/docker-compose.yml deleted file mode 100644 index da1106ee..00000000 --- a/apps/adguardhome/latest/docker-compose.yml +++ /dev/null @@ -1,31 +0,0 @@ -services: - adguardhome: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - ${PLAIN_DNS_PORT}:53/tcp - - ${PLAIN_DNS_PORT}:53/udp - - ${DHCP_PORT1}:67/udp - - ${DHCP_PORT2}:68/udp - - ${HTTP_PORT}:80/tcp - - ${DOH_PORT}:443/tcp - - ${DOH_PORT}:443/udp - - ${PANEL_APP_PORT_HTTP}:3000/tcp - - ${DOT_PORT}:853/tcp - - ${QUIC_PORT1}:784/udp - - ${DOT_PORT}:853/udp - - ${QUIC_PORT2}:8853/udp - - ${DNS_CRYPT_PORT}:5443/tcp - - ${DNS_CRYPT_PORT}:5443/udp - volumes: - - ${WORK_PATH}:/opt/adguardhome/work - - ${CONFIG_PATH}:/opt/adguardhome/conf - image: adguard/adguardhome:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/adguardhome/logo.png b/apps/adguardhome/logo.png deleted file mode 100644 index 87ad08af453528cff500e66df77f2706f022a0d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6363 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 diff --git a/apps/alist/3.44.0/.env.sample b/apps/alist/3.44.0/.env.sample deleted file mode 100644 index ce9d0b12..00000000 --- a/apps/alist/3.44.0/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME="alist" -PANEL_APP_PORT_HTTP="40034" -DATA_PATH="./data/data" -MOUNT_PATH="./data/mnt" \ No newline at end of file diff --git a/apps/alist/3.44.0/data.yml b/apps/alist/3.44.0/data.yml deleted file mode 100644 index 926c1679..00000000 --- a/apps/alist/3.44.0/data.yml +++ /dev/null @@ -1,24 +0,0 @@ -additionalProperties: - formFields: - - default: 40034 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data/data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: ./data/mnt - edit: true - envKey: MOUNT_PATH - labelEn: Mount folder path - labelZh: 挂载文件夹路径 - required: true - type: text diff --git a/apps/alist/3.44.0/docker-compose.yml b/apps/alist/3.44.0/docker-compose.yml deleted file mode 100644 index f236508c..00000000 --- a/apps/alist/3.44.0/docker-compose.yml +++ /dev/null @@ -1,23 +0,0 @@ -services: - alist: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:5244" - volumes: - - "${DATA_PATH}:/opt/alist/data" - - "${MOUNT_PATH}:/mnt/data" - environment: - - PUID=0 - - PGID=0 - - UMASK=022 - image: xhofe/alist:v3.44.0 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true - diff --git a/apps/alist/README.md b/apps/alist/README.md deleted file mode 100644 index ac73ec7f..00000000 --- a/apps/alist/README.md +++ /dev/null @@ -1,144 +0,0 @@ -# 使用说明 - -- 账户与密码 - -查看容器日志,或者容器功能界面找到`alist`的容器,点击终端连接到容器内部, 运行 -``` -./alist admin -``` -# 原始相关 - -
- logo -

🗂一个支持多存储的文件列表程序,使用 Gin 和 Solidjs。

- - -
- ---- - -[English](./README.md) | 中文 | [Contributing](./CONTRIBUTING.md) | [CODE_OF_CONDUCT](./CODE_OF_CONDUCT.md) - -## 功能 - -- [x] 多种存储 - - [x] 本地存储 - - [x] [阿里云盘](https://www.aliyundrive.com/) - - [x] OneDrive / Sharepoint([国际版](https://www.office.com/), [世纪互联](https://portal.partner.microsoftonline.cn),de,us) - - [x] [天翼云盘](https://cloud.189.cn) (个人云, 家庭云) - - [x] [GoogleDrive](https://drive.google.com/) - - [x] [123云盘](https://www.123pan.com/) - - [x] FTP / SFTP - - [x] [PikPak](https://www.mypikpak.com/) - - [x] [S3](https://aws.amazon.com/cn/s3/) - - [x] [Seafile](https://seafile.com/) - - [x] [又拍云对象存储](https://www.upyun.com/products/file-storage) - - [x] WebDav(支持无API的OneDrive/SharePoint) - - [x] Teambition([中国](https://www.teambition.com/ ),[国际](https://us.teambition.com/ )) - - [x] [分秒帧](https://www.mediatrack.cn/) - - [x] [和彩云](https://yun.139.com/) (个人云, 家庭云) - - [x] [Yandex.Disk](https://disk.yandex.com/) - - [x] [百度网盘](http://pan.baidu.com/) - - [x] [夸克网盘](https://pan.quark.cn) - - [x] [迅雷网盘](https://pan.xunlei.com) - - [x] [蓝奏云](https://www.lanzou.com/) - - [x] [阿里云盘分享](https://www.aliyundrive.com/) - - [x] [谷歌相册](https://photos.google.com/) - - [x] [Mega.nz](https://mega.nz) - - [x] [一刻相册](https://photo.baidu.com/) - - [x] SMB - - [x] [115](https://115.com/) - - [X] Cloudreve -- [x] 部署方便,开箱即用 -- [x] 文件预览(PDF、markdown、代码、纯文本……) -- [x] 画廊模式下的图像预览 -- [x] 视频和音频预览,支持歌词和字幕 -- [x] Office 文档预览(docx、pptx、xlsx、...) -- [x] `README.md` 预览渲染 -- [x] 文件永久链接复制和直接文件下载 -- [x] 黑暗模式 -- [x] 国际化 -- [x] 受保护的路由(密码保护和身份验证) -- [x] WebDav (具体见 https://alist.nn.ci/zh/guide/webdav.html) -- [x] [Docker 部署](https://hub.docker.com/r/xhofe/alist) -- [x] Cloudflare workers 中转 -- [x] 文件/文件夹打包下载 -- [x] 网页上传(可以允许访客上传),删除,新建文件夹,重命名,移动,复制 -- [x] 离线下载 -- [x] 跨存储复制文件 - -## 文档 - - - -## Demo - - - -## 讨论 - -一般问题请到[讨论论坛](https://github.com/Xhofe/alist/discussions) ,**issue仅针对错误报告和功能请求。** - -## 赞助 - -AList 是一个开源软件,如果你碰巧喜欢这个项目,并希望我继续下去,请考虑赞助我或提供一个单一的捐款!感谢所有的爱和支持:https://alist.nn.ci/zh/guide/sponsor.html - -### 特别赞助 - -- [找资源 - 阿里云盘资源搜索引擎](https://zhaoziyuan.la/) -- [KinhDown 百度云盘不限速下载!永久免费!已稳定运行3年!非常可靠!Q群 -> 786799372](https://kinhdown.com) -- [JetBrains: Essential tools for software developers and teams](https://www.jetbrains.com/) - -## 贡献者 - -Thanks goes to these wonderful people: - -[![Contributors](http://contributors.nn.ci/api?repo=alist-org/alist&repo=alist-org/alist-web&repo=alist-org/docs)](https://github.com/alist-org/alist/graphs/contributors) - -## 许可 - -`AList` 是在 AGPL-3.0 许可下许可的开源软件。 - -## 免责声明 -- 本程序为免费开源项目,旨在分享网盘文件,方便下载以及学习golang,使用时请遵守相关法律法规,请勿滥用; -- 本程序通过调用官方sdk/接口实现,无破坏官方接口行为; -- 本程序仅做302重定向/流量转发,不拦截、存储、篡改任何用户数据; -- 在使用本程序之前,你应了解并承担相应的风险,包括但不限于账号被ban,下载限速等,与本程序无关; -- 如有侵权,请通过[邮件](mailto:i@nn.ci)与我联系,会及时处理。 - ---- - -> [@博客](https://nn.ci/) · [@GitHub](https://github.com/Xhofe) · [@Telegram群](https://t.me/alist_chat) · [@Discord](https://discord.gg/F4ymsH4xv2) - diff --git a/apps/alist/aria2-latest/data.yml b/apps/alist/aria2-latest/data.yml deleted file mode 100644 index 926c1679..00000000 --- a/apps/alist/aria2-latest/data.yml +++ /dev/null @@ -1,24 +0,0 @@ -additionalProperties: - formFields: - - default: 40034 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data/data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: ./data/mnt - edit: true - envKey: MOUNT_PATH - labelEn: Mount folder path - labelZh: 挂载文件夹路径 - required: true - type: text diff --git a/apps/alist/aria2-latest/docker-compose.yml b/apps/alist/aria2-latest/docker-compose.yml deleted file mode 100644 index c782ef59..00000000 --- a/apps/alist/aria2-latest/docker-compose.yml +++ /dev/null @@ -1,23 +0,0 @@ -services: - alist: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:5244" - volumes: - - "${DATA_PATH}:/opt/alist/data" - - "${MOUNT_PATH}:/mnt/data" - environment: - - PUID=0 - - PGID=0 - - UMASK=022 - image: xhofe/alist-aria2:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true - diff --git a/apps/alist/aria2-latest/env.sample b/apps/alist/aria2-latest/env.sample deleted file mode 100644 index ce9d0b12..00000000 --- a/apps/alist/aria2-latest/env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME="alist" -PANEL_APP_PORT_HTTP="40034" -DATA_PATH="./data/data" -MOUNT_PATH="./data/mnt" \ No newline at end of file diff --git a/apps/alist/data.yml b/apps/alist/data.yml deleted file mode 100644 index fde7321b..00000000 --- a/apps/alist/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Alist -tags: - - 工具 -title: 一个支持多存储的文件列表程序 -description: 一个支持多存储的文件列表程序 -additionalProperties: - key: alist - name: Alist - tags: - - Tool - shortDescZh: 一个支持多存储的文件列表程序 - shortDescEn: A file list program that supports multiple storage - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://github.com/alist-org/alist - github: https://github.com/alist-org/alist - document: https://alist.nn.ci/zh/ diff --git a/apps/alist/latest/.env.sample b/apps/alist/latest/.env.sample deleted file mode 100644 index ce9d0b12..00000000 --- a/apps/alist/latest/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME="alist" -PANEL_APP_PORT_HTTP="40034" -DATA_PATH="./data/data" -MOUNT_PATH="./data/mnt" \ No newline at end of file diff --git a/apps/alist/latest/data.yml b/apps/alist/latest/data.yml deleted file mode 100644 index 926c1679..00000000 --- a/apps/alist/latest/data.yml +++ /dev/null @@ -1,24 +0,0 @@ -additionalProperties: - formFields: - - default: 40034 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data/data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: ./data/mnt - edit: true - envKey: MOUNT_PATH - labelEn: Mount folder path - labelZh: 挂载文件夹路径 - required: true - type: text diff --git a/apps/alist/latest/docker-compose.yml b/apps/alist/latest/docker-compose.yml deleted file mode 100644 index 8f10e16f..00000000 --- a/apps/alist/latest/docker-compose.yml +++ /dev/null @@ -1,23 +0,0 @@ -services: - alist: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:5244" - volumes: - - "${DATA_PATH}:/opt/alist/data" - - "${MOUNT_PATH}:/mnt/data" - environment: - - PUID=0 - - PGID=0 - - UMASK=022 - image: xhofe/alist:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true - diff --git a/apps/alist/logo.png b/apps/alist/logo.png deleted file mode 100644 index 70282047f8dddb9f73ca9836554c73a95d46aa64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3647 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 RWcEY|urRYZ`x@g-`5%LJrKA7= diff --git a/apps/answer/1.2.0/.env.sample b/apps/answer/1.2.0/.env.sample deleted file mode 100644 index 7b11e7c8..00000000 --- a/apps/answer/1.2.0/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="answer" -PANEL_APP_PORT_HTTP="40065" -DATA_PATH="./data" diff --git a/apps/answer/1.2.0/data.yml b/apps/answer/1.2.0/data.yml deleted file mode 100644 index 94857d3c..00000000 --- a/apps/answer/1.2.0/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40065 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/answer/1.2.0/docker-compose.yml b/apps/answer/1.2.0/docker-compose.yml deleted file mode 100644 index aa40526a..00000000 --- a/apps/answer/1.2.0/docker-compose.yml +++ /dev/null @@ -1,17 +0,0 @@ -services: - answer: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - volumes: - - "${DATA_PATH}:/data" - image: answerdev/answer:1.2.0 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/answer/README.md b/apps/answer/README.md deleted file mode 100644 index 8fdafe94..00000000 --- a/apps/answer/README.md +++ /dev/null @@ -1,39 +0,0 @@ - - logo - - -# Answer - 构建问答社区 - -一款问答形式的知识社区开源软件,你可以使用它快速建立你的问答社区,用于产品技术支持、客户支持、用户交流等。 - -了解更多关于该项目的内容,请访问 [answer.dev](https://answer.dev). - -[![LICENSE](https://img.shields.io/github/license/answerdev/answer)](https://github.com/answerdev/answer/blob/main/LICENSE) -[![Language](https://img.shields.io/badge/language-go-blue.svg)](https://golang.org/) -[![Language](https://img.shields.io/badge/language-react-blue.svg)](https://reactjs.org/) -[![Go Report Card](https://goreportcard.com/badge/github.com/answerdev/answer)](https://goreportcard.com/report/github.com/answerdev/answer) -[![Discord](https://img.shields.io/badge/discord-chat-5865f2?logo=discord&logoColor=f5f5f5)](https://discord.gg/Jm7Y4cbUej) - -## 截图 - -![screenshot](https://github.com/answerdev/answer/raw/main/docs/img/screenshot.png) - -## 快速开始 - -### 使用 docker 快速搭建 - -```bash -docker run -d -p 9080:80 -v answer-data:/data --name answer answerdev/answer:latest -``` - -其他安装配置细节请参考 [Installation](https://answer.dev/docs/installation) - -## 贡献 - -我们随时欢迎你的贡献! - -参考 [CONTRIBUTING](https://answer.dev/docs/development/contributing/) 开始贡献。 - -## License - -[Apache License 2.0](https://github.com/answerdev/answer/blob/main/LICENSE) \ No newline at end of file diff --git a/apps/answer/data.yml b/apps/answer/data.yml deleted file mode 100644 index 531943de..00000000 --- a/apps/answer/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Answer -tags: - - 建站 -title: 一款适合任何团队的问答平台软件 -description: 一款适合任何团队的问答平台软件 -additionalProperties: - key: answer - name: Answer - tags: - - Website - shortDescZh: 一款适合任何团队的问答平台软件 - shortDescEn: A Q&A platform software for teams at any scales - type: website - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://answer.dev/ - github: https://github.com/answerdev/answer - document: https://answer.dev/zh-CN/docs diff --git a/apps/answer/latest/.env.sample b/apps/answer/latest/.env.sample deleted file mode 100644 index 7b11e7c8..00000000 --- a/apps/answer/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="answer" -PANEL_APP_PORT_HTTP="40065" -DATA_PATH="./data" diff --git a/apps/answer/latest/data.yml b/apps/answer/latest/data.yml deleted file mode 100644 index 94857d3c..00000000 --- a/apps/answer/latest/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40065 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/answer/latest/docker-compose.yml b/apps/answer/latest/docker-compose.yml deleted file mode 100644 index ebe58949..00000000 --- a/apps/answer/latest/docker-compose.yml +++ /dev/null @@ -1,17 +0,0 @@ -services: - answer: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - volumes: - - "${DATA_PATH}:/data" - image: answerdev/answer:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/answer/logo.png b/apps/answer/logo.png deleted file mode 100644 index 444ad16b8b04c871c2e806ce2954e63b11f6311b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3419 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 h_KPb*Me*jj{SjYeX diff --git a/apps/artalk/2.9.1/.env.sample b/apps/artalk/2.9.1/.env.sample deleted file mode 100644 index fe1aab6f..00000000 --- a/apps/artalk/2.9.1/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="artalk" -PANEL_APP_PORT_HTTP="40159" -DATA_PATH="./data" diff --git a/apps/artalk/2.9.1/data.yml b/apps/artalk/2.9.1/data.yml deleted file mode 100644 index 62130e66..00000000 --- a/apps/artalk/2.9.1/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40159 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/artalk/2.9.1/docker-compose.yml b/apps/artalk/2.9.1/docker-compose.yml deleted file mode 100644 index 1caea403..00000000 --- a/apps/artalk/2.9.1/docker-compose.yml +++ /dev/null @@ -1,17 +0,0 @@ -services: - artalk: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:23366" - volumes: - - "${DATA_PATH}:/data" - image: artalk/artalk-go:2.9.1 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/artalk/README.md b/apps/artalk/README.md deleted file mode 100644 index a9338706..00000000 --- a/apps/artalk/README.md +++ /dev/null @@ -1,82 +0,0 @@ -# 使用说明 -## Artalk 设置账号密码 - -以下两种方式相同。 - -### 1. 宿主机 -``` -docker exec -it artalk artalk admin -``` - -- 修改`artalk`改为容器名 -- 如 `1Panel-localartalk-tYWg` -- 更改后 -``` -docker exec -it 1Panel-localartalk-tYWg artalk admin -``` - -### 2. 面板执行 - -面板`容器`界面,连接容器终端,执行以下命令 - -``` -artalk admin -``` - -# 原始相关 -

-Artalk -

- -# Artalk - -[![](https://img.shields.io/npm/v/artalk.svg?style=flat-square)](https://www.npmjs.com/package/artalk) -[![](https://img.shields.io/npm/dt/artalk.svg?style=flat-square)](https://www.npmjs.com/package/artalk) -[![](https://badgen.net/bundlephobia/minzip/artalk?style=flat-square)](https://bundlephobia.com/package/artalk) -[![Docker Pulls](https://img.shields.io/docker/pulls/artalk/artalk-go?style=flat-square)](https://hub.docker.com/r/artalk/artalk-go) -[![CircleCI](https://circleci.com/gh/ArtalkJS/Artalk/tree/master.svg?style=svg)](https://circleci.com/gh/ArtalkJS/Artalk/tree/master) - -> 🌌 Golang 自托管评论系统 - -[English](https://github.com/ArtalkJS/Artalk/blob/master/README.en.md) / [官方文档](https://artalk.js.org) / [最新版本](https://github.com/ArtalkJS/Artalk/releases) - ---- - -- 🍃 轻量 (~30kB) -- 👨‍👧‍👦 安全 (自托管) -- 🐳 易上手 (防脱发) -- 🍱 Golang 后端 (快速 / 跨平台) -- 🌊 Vanilla × TypeScript × Vite (纯天然 / 无依赖) - -## 特性 - -- 侧 边 栏 :支持多站点集中化管理 -- 通知中心:红点的标记 / 提及列表 -- 身份验证:徽标自定义 / 密码验证 -- 评论审核:反垃圾检测 / 频率限制 -- 表情符号:插入表情包 / 快速导入 -- 邮件提醒:模版自定义 / 多管理员 -- 站点隔离:管理员分配 / 多个站点 -- 页面管理:标题可显示 / 快速跳转 -- 图片上传:上传到本地 / 多种图床 -- 多元推送:支持 钉钉 飞书 TG -- 无限层级:可切换为平铺模式 -- 评论投票:赞同还是反对评论 -- 评论排序:按热度或时间排序 -- 评论置顶:重要消息置顶显示 -- 只看作者:仅显示作者的评论 -- 说说模式:仅自己可发布评论 -- 异步处理:发送评论无需等待 -- 滚动加载:评论内容分页处置 -- 自动保存:用户输入防丢功能 -- 自动填充:用户链接自动填充 -- 实时预览:评论内容实时预览 -- 夜间模式:防止眼部疾病伤害 -- 评论折叠:这个不打算给你康 -- 数据备份:防止评论数据丢失 -- 数据迁移:快速切换评论系统 -- Markdown:默认支持 MD 语法 -- 支持 Latex:提供集成 Katex 插件 -- 使用 [Vite](https://github.com/vitejs/vite):属于开发者的极致体验 - -更多内容请查看:[“**介绍文档**”](https://artalk.js.org/guide/intro.html) \ No newline at end of file diff --git a/apps/artalk/data.yml b/apps/artalk/data.yml deleted file mode 100644 index 522bc790..00000000 --- a/apps/artalk/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Artalk -tags: - - 工具 -title: 一款简洁的自托管评论系统 -description: 一款简洁的自托管评论系统 -additionalProperties: - key: artalk - name: Artalk - tags: - - Tool - shortDescZh: 一款简洁的自托管评论系统 - shortDescEn: A concise self hosted comment system - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://artalk.js.org - github: https://github.com/ArtalkJS/Artalk - document: https://artalk.js.org/guide/intro.html diff --git a/apps/artalk/latest/.env.sample b/apps/artalk/latest/.env.sample deleted file mode 100644 index fe1aab6f..00000000 --- a/apps/artalk/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="artalk" -PANEL_APP_PORT_HTTP="40159" -DATA_PATH="./data" diff --git a/apps/artalk/latest/data.yml b/apps/artalk/latest/data.yml deleted file mode 100644 index 62130e66..00000000 --- a/apps/artalk/latest/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40159 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/artalk/latest/docker-compose.yml b/apps/artalk/latest/docker-compose.yml deleted file mode 100644 index abb4ab7b..00000000 --- a/apps/artalk/latest/docker-compose.yml +++ /dev/null @@ -1,17 +0,0 @@ -services: - artalk: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:23366" - volumes: - - "${DATA_PATH}:/data" - image: artalk/artalk-go:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/artalk/logo.png b/apps/artalk/logo.png deleted file mode 100644 index e51d39b67468dfaecb2d466f48d89d1ce1e0ba18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6063 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 VKLsZh-4l2`Ee$>O235Q0{{g8Ilc4|r diff --git a/apps/audiobookshelf/2.25.1/.env.sample b/apps/audiobookshelf/2.25.1/.env.sample deleted file mode 100644 index d3732dd2..00000000 --- a/apps/audiobookshelf/2.25.1/.env.sample +++ /dev/null @@ -1,6 +0,0 @@ -CONTAINER_NAME="audiobookshelf" -DATA_PATH1="./data/audiobooks" -DATA_PATH2="./data/podcasts" -DATA_PATH3="./data/metadata" -DATA_PATH="./data/config" -PANEL_APP_PORT_HTTP="40096" diff --git a/apps/audiobookshelf/2.25.1/data.yml b/apps/audiobookshelf/2.25.1/data.yml deleted file mode 100644 index 7b558dda..00000000 --- a/apps/audiobookshelf/2.25.1/data.yml +++ /dev/null @@ -1,38 +0,0 @@ -additionalProperties: - formFields: - - default: 40096 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data/config - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: ./data/audiobooks - edit: true - envKey: DATA_PATH1 - labelEn: audiobooks folder path - labelZh: audiobooks 文件夹路径 - required: true - type: text - - default: ./data/podcasts - edit: true - envKey: DATA_PATH2 - labelEn: podcasts folder path - labelZh: podcasts 文件夹路径 - required: true - type: text - - default: ./data/metadata - edit: true - envKey: DATA_PATH3 - labelEn: metadata folder path - labelZh: metadata 文件夹路径 - required: true - type: text diff --git a/apps/audiobookshelf/2.25.1/docker-compose.yml b/apps/audiobookshelf/2.25.1/docker-compose.yml deleted file mode 100644 index f803fbe1..00000000 --- a/apps/audiobookshelf/2.25.1/docker-compose.yml +++ /dev/null @@ -1,20 +0,0 @@ -services: - audiobookshelf: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - volumes: - - "${DATA_PATH1}:/audiobooks" - - "${DATA_PATH2}:/podcasts" - - "${DATA_PATH}:/config" - - "${DATA_PATH3}:/metadata" - image: advplyr/audiobookshelf:2.25.1 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/audiobookshelf/README.md b/apps/audiobookshelf/README.md deleted file mode 100644 index 87fdfec7..00000000 --- a/apps/audiobookshelf/README.md +++ /dev/null @@ -1,308 +0,0 @@ -
-
- -# About - -Audiobookshelf is a self-hosted audiobook and podcast server. - -### Features - -* Fully **open-source**, including the [android & iOS app](https://github.com/advplyr/audiobookshelf-app) *(in beta)* -* Stream all audio formats on the fly -* Search and add podcasts to download episodes w/ auto-download -* Multi-user support w/ custom permissions -* Keeps progress per user and syncs across devices -* Auto-detects library updates, no need to re-scan -* Upload books and podcasts w/ bulk upload drag and drop folders -* Backup your metadata + automated daily backups -* Progressive Web App (PWA) -* Chromecast support on the web app and android app -* Fetch metadata and cover art from several sources -* Chapter editor and chapter lookup (using [Audnexus API](https://audnex.us/)) -* Merge your audio files into a single m4b -* Embed metadata and cover image into your audio files (using [Tone](https://github.com/sandreas/tone)) -* Basic ebook support and ereader - * Epub, pdf, cbr, cbz - * Send ebook to device (i.e. Kindle) -* Open RSS feeds for podcasts and audiobooks - -Is there a feature you are looking for? [Suggest it](https://github.com/advplyr/audiobookshelf/issues/new/choose) - -Join us on [Discord](https://discord.gg/pJsjuNCKRq) or [Matrix](https://matrix.to/#/#audiobookshelf:matrix.org) - -### Android App (beta) -Try it out on the [Google Play Store](https://play.google.com/store/apps/details?id=com.audiobookshelf.app) - -### iOS App (beta) -Available using Test Flight: https://testflight.apple.com/join/wiic7QIW - [Join the discussion](https://github.com/advplyr/audiobookshelf-app/discussions/60) - -### Build your own tools & clients -Check out the [API documentation](https://api.audiobookshelf.org/) - -
- -Library Screenshot - -
- -# Organizing your audiobooks - -#### Directory structure and folder names are important to Audiobookshelf! - - See [documentation](https://audiobookshelf.org/docs#book-directory-structure) for supported directory structure, folder naming conventions, and audio file metadata usage. - -
- -# Installation - -See [install docs](https://www.audiobookshelf.org/docs) - -
- -# Reverse Proxy Set Up - -#### Important! Audiobookshelf requires a websocket connection. - -#### Note: Subfolder paths (e.g. /audiobooks) are not supported yet. See [issue](https://github.com/advplyr/audiobookshelf/issues/385) - -### NGINX Proxy Manager - -Toggle websockets support. - -NGINX Web socket - -### NGINX Reverse Proxy - -Add this to the site config file on your nginx server after you have changed the relevant parts in the <> brackets, and inserted your certificate paths. - - -```bash -server -{ - listen 443 ssl; - server_name ..; - - access_log /var/log/nginx/audiobookshelf.access.log; - error_log /var/log/nginx/audiobookshelf.error.log; - - ssl_certificate /path/to/certificate; - ssl_certificate_key /path/to/key; - - location / { - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header Host $host; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - - proxy_http_version 1.1; - - proxy_pass http://; - proxy_redirect http:// https://; - } -} -``` - -### Apache Reverse Proxy - -Add this to the site config file on your Apache server after you have changed the relevant parts in the <> brackets, and inserted your certificate paths. - -For this to work you must enable at least the following mods using `a2enmod`: - - `ssl` - - `proxy` - - `proxy_http` - - `proxy_balancer` - - `proxy_wstunnel` - - `rewrite` - -```bash - - - ServerName .. - - ErrorLog ${APACHE_LOG_DIR}/error.log - CustomLog ${APACHE_LOG_DIR}/access.log combined - - ProxyPreserveHost On - ProxyPass / http://localhost:/ - RewriteEngine on - RewriteCond %{HTTP:Upgrade} websocket [NC] - RewriteCond %{HTTP:Connection} upgrade [NC] - RewriteRule ^/?(.*) "ws://localhost:/$1" [P,L] - - # unless you're doing something special this should be generated by a - # tool like certbot by let's encrypt - SSLCertificateFile /path/to/cert/file - SSLCertificateKeyFile /path/to/key/file - - -``` - -Some SSL certificates like those signed by Let's Encrypt require ACME validation. To allow Let's Encrypt to write and confirm -the ACME challenge, edit your VirtualHost definition to prevent proxying traffic that queries `/.well-known` and instead -serve that directly: -```bash - - # ... - - # create the directory structure /.well-known/acme-challenges - # within DocumentRoot and give the HTTP user recursive write - # access to it. - DocumentRoot /path/to/local/directory - - ProxyPreserveHost On - ProxyPass /.well-known ! - ProxyPass / http://localhost:/ - - # ... - -``` - - -### SWAG Reverse Proxy - -[See LinuxServer.io config sample](https://github.com/linuxserver/reverse-proxy-confs/blob/master/audiobookshelf.subdomain.conf.sample) - -### Synology Reverse Proxy - -1. Open Control Panel > Application Portal -2. Change to the Reverse Proxy tab -3. Select the proxy rule for which you want to enable Websockets and click on Edit -4. Change to the "Custom Header" tab -5. Click Create > WebSocket -6. Click Save - -[from @silentArtifact](https://github.com/advplyr/audiobookshelf/issues/241#issuecomment-1036732329) - -### [Traefik Reverse Proxy](https://doc.traefik.io/traefik/) - -Middleware relating to CORS will cause the app to report Unknown Error when logging in. To prevent this don't apply any of the following headers to the router for this site: - -
    -
  • accessControlAllowMethods
  • -
  • accessControlAllowOriginList
  • -
  • accessControlMaxAge
  • -
- -From [@Dondochaka](https://discord.com/channels/942908292873723984/942914154254176257/945074590374318170) and [@BeastleeUK](https://discord.com/channels/942908292873723984/942914154254176257/970366039294611506) -
- -### Example Caddyfile - [Caddy Reverse Proxy](https://caddyserver.com/docs/caddyfile/directives/reverse_proxy) - -``` -subdomain.domain.com { - encode gzip zstd - reverse_proxy : -} -``` - - -# Run from source - -# Contributing - -This application is built using [NodeJs](https://nodejs.org/). - -### Dev Container Setup -The easiest way to begin developing this project is to use a dev container. An introduction to dev containers in VSCode can be found [here](https://code.visualstudio.com/docs/devcontainers/containers). - -Required Software: -* [Docker Desktop](https://www.docker.com/products/docker-desktop/) -* [VSCode](https://code.visualstudio.com/download) - -*Note, it is possible to use other container software than Docker and IDEs other than VSCode. However, this setup is more complicated and not covered here.* - -
-
-Install the required software on Windows with winget - -

-Note: This requires a PowerShell prompt with winget installed. You should be able to copy and paste the code block to install. If you use an elevated PowerShell prompt, UAC will not pop up during the installs. - -```PowerShell -winget install -e --id Docker.DockerDesktop; ` -winget install -e --id Microsoft.VisualStudioCode -``` - -

-
-
- -
-
-Install the required software on MacOS with homebrew - -

- -```sh -brew install --cask docker visual-studio-code -``` - -

-
-
- -
-
-Install the required software on Linux with snap - -

- -```sh -sudo snap install docker; \ -sudo snap install code --classic -``` - -

-
-
- -After installing these packages, you can now install the [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) extension for VSCode. After installing this extension open the command pallet (`ctrl+shift+p` or `cmd+shift+p`) and select the command `>Dev Containers: Rebuild and Reopen in Container`. This will cause the development environment container to be built and launched. - -You are now ready to start development! - -### Manual Environment Setup - -If you don't want to use the dev container, you can still develop this project. First, you will need to install [NodeJs](https://nodejs.org/) (version 16) and [FFmpeg](https://ffmpeg.org/). - -Next you will need to create a `dev.js` file in the project's root directory. This contains configuration information and paths unique to your development environment. You can find an example of this file in `.devcontainer/dev.js`. - -You are now ready to build the client: - -```sh -npm ci -cd client -npm ci -npm run generate -cd .. -``` - -### Development Commands - -After setting up your development environment, either using the dev container or using your own custom environment, the following commands will help you run the server and client. - -To run the server, you can use the command `npm run dev`. This will use the client that was built when you ran `npm run generate` in the client directory or when you started the dev container. If you make changes to the server, you will need to restart the server. If you make changes to the client, you will need to run the command `(cd client; npm run generate)` and then restart the server. By default the client runs at `localhost:3333`, though the port can be configured in `dev.js`. - -You can also build a version of the client that supports live reloading. To do this, start the server, then run the command `(cd client; npm run dev)`. This will run a separate instance of the client at `localhost:3000` that will be automatically updated as you make changes to the client. - -If you are using VSCode, this project includes a couple of pre-defined targets to speed up this process. First, if you build the project (`ctrl+shift+b` or `cmd+shift+b`) it will automatically generate the client. Next, there are debug commands for running the server and client. You can view these targets using the debug panel (bring it up with (`ctrl+shift+d` or `cmd+shift+d`): - -* `Debug server`—Run the server. -* `Debug client (nuxt)`—Run the client with live reload. -* `Debug server and client (nuxt)`—Runs both the preceding two debug targets. - - -# How to Support - -[See the incomplete "How to Support" page](https://www.audiobookshelf.org/support) \ No newline at end of file diff --git a/apps/audiobookshelf/data.yml b/apps/audiobookshelf/data.yml deleted file mode 100644 index fb68aa90..00000000 --- a/apps/audiobookshelf/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Audiobookshelf -tags: - - 多媒体 -type: 工具 -description: 一个自托管有声读物和播客服务器 -additionalProperties: - key: audiobookshelf - name: Audiobookshelf - tags: - - Media - shortDescZh: 一个自托管有声读物和播客服务器 - shortDescEn: A Self-hosted audiobook and podcast server - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://www.audiobookshelf.org/ - github: https://github.com/advplyr/audiobookshelf - document: https://www.audiobookshelf.org/docs diff --git a/apps/audiobookshelf/latest/.env.sample b/apps/audiobookshelf/latest/.env.sample deleted file mode 100644 index d3732dd2..00000000 --- a/apps/audiobookshelf/latest/.env.sample +++ /dev/null @@ -1,6 +0,0 @@ -CONTAINER_NAME="audiobookshelf" -DATA_PATH1="./data/audiobooks" -DATA_PATH2="./data/podcasts" -DATA_PATH3="./data/metadata" -DATA_PATH="./data/config" -PANEL_APP_PORT_HTTP="40096" diff --git a/apps/audiobookshelf/latest/data.yml b/apps/audiobookshelf/latest/data.yml deleted file mode 100644 index 7b558dda..00000000 --- a/apps/audiobookshelf/latest/data.yml +++ /dev/null @@ -1,38 +0,0 @@ -additionalProperties: - formFields: - - default: 40096 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data/config - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: ./data/audiobooks - edit: true - envKey: DATA_PATH1 - labelEn: audiobooks folder path - labelZh: audiobooks 文件夹路径 - required: true - type: text - - default: ./data/podcasts - edit: true - envKey: DATA_PATH2 - labelEn: podcasts folder path - labelZh: podcasts 文件夹路径 - required: true - type: text - - default: ./data/metadata - edit: true - envKey: DATA_PATH3 - labelEn: metadata folder path - labelZh: metadata 文件夹路径 - required: true - type: text diff --git a/apps/audiobookshelf/latest/docker-compose.yml b/apps/audiobookshelf/latest/docker-compose.yml deleted file mode 100644 index eac4d59f..00000000 --- a/apps/audiobookshelf/latest/docker-compose.yml +++ /dev/null @@ -1,20 +0,0 @@ -services: - audiobookshelf: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - volumes: - - "${DATA_PATH1}:/audiobooks" - - "${DATA_PATH2}:/podcasts" - - "${DATA_PATH}:/config" - - "${DATA_PATH3}:/metadata" - image: advplyr/audiobookshelf:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/audiobookshelf/logo.png b/apps/audiobookshelf/logo.png deleted file mode 100644 index 3341219056477804959d9e6749ca98cce2e7f2b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3820 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 - - 站点 - url - 支持情况 - cookie - - - Acfun直播 - live.acfun.cn - 滋瓷 - - - - 哔哩哔哩直播 - live.bilibili.com - 滋瓷 - 滋瓷 - - - 战旗直播 - www.zhanqi.tv - 滋瓷 - - - - 斗鱼直播 - www.douyu.com - 滋瓷 - - - - 火猫直播 - www.huomao.com - 滋瓷 - - - - 龙珠直播 - longzhu.com - 滋瓷 - - - - 虎牙直播 - www.huya.com - 滋瓷 - - - - CC直播 - cc.163.com - 滋瓷 - - - - 一直播 - www.yizhibo.com - 滋瓷 - - - - twitch - www.twitch.tv - TODO - - - - OPENREC - www.openrec.tv - 滋瓷 - - - - 企鹅电竞 - egame.qq.com - 滋瓷 - - - - 浪live - play.lang.live & www.lang.live - 滋瓷 - - - - 花椒 - www.huajiao.com - 滋瓷 - - - - 抖音直播 - live.douyin.com - 滋瓷 - 滋瓷 - - - 猫耳 - fm.missevan.com - 滋瓷 - - - - 克拉克拉 - www.hongdoufm.com - 滋瓷 - - - - 快手 - live.kuaishou.com - 滋瓷 - 滋瓷 - - - YY直播 - www.yy.com - 滋瓷 - - - - 微博直播 - weibo.com - 滋瓷 - - - - -### cookie 在 config.yml 中的设置方法 - -cookie的设置以域名为单位。比如想在录制抖音直播时使用 cookie,那么 config.yml 中可以像下面这样写: -``` -cookies: - live.douyin.com: __ac_nonce=123456789012345678903;name=value -``` - -## Grafana 面板 - -> 请自行部署 prometheus 和 grafana - -![image](https://github.com/hr3lxphr6j/bililive-go/raw/master/docs/dashboard.webp) - -## 依赖 -* [ffmpeg](https://ffmpeg.org/) - -## 使用例子 -- 本地 - ``` - ./bililive-go -i https://live.bilibili.com/1030 -i https://www.douyu.com/6655 - ``` -- docker - ``` - docker run --restart=always -v ~/Videos:/srv/bililive -p 8080:8080 -d chigusa/bililive-go - ``` - -## 开发环境搭建(linux系统) -``` -一、环境准备 - 1. 前端环境 - 1)前往https://nodejs.org/zh-cn/下载当前版本node(18.12.1) - 2)命令行运行 node -v 若控制台输出版本号则前端环境搭建成功 - 2.后端环境 - 1)下载golang安装 版本号1.19 - 国际: https://golang.org/dl/ - 国内: https://golang.google.cn/dl/ - 2)命令行运行 go 若控制台输出各类提示命令 则安装成功 输入 go version 确认版本 - 3.安装 ffmpeg (以centos7为例) - 1) yum install -y epel-release rpm - 2) rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 - 3) yum repolist - 4) rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro - 5) rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm - 6) yum repolist - 7) yum install -y ffmpeg -二、克隆代码并编译(linux环境) - 1. git clone https://github.com/hr3lxphr6j/bililive-go.git - 2. cd bililive-go - 3. make build-web - 4. make -三、linux编译其他环境(以windows 为例) - 1. GOOS=windows GOARCH=amd64 CGO_ENABLED=0 UPX_ENABLE=0 TAGS=dev ./src/hack/build.sh bililive - 2.如果不需要调试,可以改成 - GOOS=windows GOARCH=amd64 CGO_ENABLED=0 UPX_ENABLE=0 TAGS=release ./src/hack/build.sh bililive -``` - -## Wiki -[Wiki](https://github.com/hr3lxphr6j/bililive-go/wiki) - -## API -[API doc](https://github.com/hr3lxphr6j/bililive-go/blob/master/docs/API.md) - -## 参考 -- [you-get](https://github.com/soimort/you-get) -- [ykdl](https://github.com/zhangn1985/ykdl) -- [youtube-dl](https://github.com/ytdl-org/youtube-dl) \ No newline at end of file diff --git a/apps/bililive-go/data.yml b/apps/bililive-go/data.yml deleted file mode 100644 index 749b564d..00000000 --- a/apps/bililive-go/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Bililive-go -tags: - - 工具 -title: 一个支持多种直播平台的直播录制工具 -description: 一个支持多种直播平台的直播录制工具 -additionalProperties: - key: bililive-go - name: Bililive-go - tags: - - Tool - shortDescZh: 一个支持多种直播平台的直播录制工具 - shortDescEn: A live recording tool that supports multiple live streaming platforms - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://github.com/hr3lxphr6j/bililive-go - github: https://github.com/hr3lxphr6j/bililive-go - document: https://github.com/hr3lxphr6j/bililive-go/wiki diff --git a/apps/bililive-go/latest/.env.sample b/apps/bililive-go/latest/.env.sample deleted file mode 100644 index 31c0e42b..00000000 --- a/apps/bililive-go/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="bililive-go" -PANEL_APP_PORT_HTTP="40079" -DATA_PATH="./data" diff --git a/apps/bililive-go/latest/data.yml b/apps/bililive-go/latest/data.yml deleted file mode 100644 index ee8014d5..00000000 --- a/apps/bililive-go/latest/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40079 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/bililive-go/latest/docker-compose.yml b/apps/bililive-go/latest/docker-compose.yml deleted file mode 100644 index a8da78c9..00000000 --- a/apps/bililive-go/latest/docker-compose.yml +++ /dev/null @@ -1,17 +0,0 @@ -services: - bililive-go: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8080" - volumes: - - "${DATA_PATH}:/srv/bililive" - image: chigusa/bililive-go:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/bililive-go/logo.png b/apps/bililive-go/logo.png deleted file mode 100644 index c06afbe296484f9ca8b0c50a386542e7c7b42b13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5134 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 K@jFB3sQ&|scBAtE diff --git a/apps/bitwarden/1.35.2-alpine/.env.sample b/apps/bitwarden/1.35.2-alpine/.env.sample deleted file mode 100644 index dd948fb7..00000000 --- a/apps/bitwarden/1.35.2-alpine/.env.sample +++ /dev/null @@ -1,7 +0,0 @@ -ADMIN_TOKEN="" -CONTAINER_NAME="bitwarden" -DATA_PATH="./data" -INVITATIONS_ALLOWED="true" -PANEL_APP_PORT_HTTP=40031 -SIGNUPS_ALLOWED="true" -WEBSOCKET_ENABLED="false" diff --git a/apps/bitwarden/1.35.2-alpine/data.yml b/apps/bitwarden/1.35.2-alpine/data.yml deleted file mode 100644 index be5e2553..00000000 --- a/apps/bitwarden/1.35.2-alpine/data.yml +++ /dev/null @@ -1,60 +0,0 @@ -additionalProperties: - formFields: - - default: "40031" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "./data" - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: "true" - edit: true - envKey: SIGNUPS_ALLOWED - labelEn: Allow Signups - labelZh: 允许注册 - required: true - type: select - values: - - label: "True" - value: "true" - - label: "False" - value: "false" - - default: "true" - edit: true - envKey: INVITATIONS_ALLOWED - labelEn: Allow Invitations - labelZh: 允许邀请 - required: true - type: select - values: - - label: "True" - value: "true" - - label: "False" - value: "false" - - default: "false" - edit: true - envKey: WEBSOCKET_ENABLED - labelEn: WebSocket Enabled - labelZh: 启用 WebSocket - required: true - type: select - values: - - label: "True" - value: "true" - - label: "False" - value: "false" - - default: "" - edit: true - envKey: ADMIN_TOKEN - labelEn: Admin Token - labelZh: 管理员令牌 - required: false - type: password diff --git a/apps/bitwarden/1.35.2-alpine/docker-compose.yml b/apps/bitwarden/1.35.2-alpine/docker-compose.yml deleted file mode 100644 index 2b05cdc1..00000000 --- a/apps/bitwarden/1.35.2-alpine/docker-compose.yml +++ /dev/null @@ -1,21 +0,0 @@ -services: - bitwarden: - image: "vaultwarden/server:1.35.2-alpine" - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - volumes: - - "${DATA_PATH}:/data" - environment: - - SIGNUPS_ALLOWED=${SIGNUPS_ALLOWED} - - INVITATIONS_ALLOWED=${INVITATIONS_ALLOWED} - - WEBSOCKET_ENABLED=${WEBSOCKET_ENABLED} - - ADMIN_TOKEN=${ADMIN_TOKEN} - labels: - createdBy: "Apps" -networks: - 1panel-network: - external: true diff --git a/apps/bitwarden/1.35.2-alpine/scripts/upgrade.sh b/apps/bitwarden/1.35.2-alpine/scripts/upgrade.sh deleted file mode 100644 index 9640eb46..00000000 --- a/apps/bitwarden/1.35.2-alpine/scripts/upgrade.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -# 检查 .env 文件是否存在 -if [[ -f ./.env ]]; then - - # 检查并添加 ADMIN_TOKEN 参数 - if ! grep -q '^ADMIN_TOKEN=' ./.env; then - echo 'ADMIN_TOKEN=""' >> ./.env - echo "已添加 ADMIN_TOKEN=" - else - echo "ADMIN_TOKEN 参数已存在" - fi - - # 检查并添加 INVITATIONS_ALLOWED 参数 - if ! grep -q '^INVITATIONS_ALLOWED=' ./.env; then - echo 'INVITATIONS_ALLOWED="true"' >> ./.env - echo "已添加 INVITATIONS_ALLOWED=true" - else - echo "INVITATIONS_ALLOWED 参数已存在" - fi - - # 检查并添加 SIGNUPS_ALLOWED 参数 - if ! grep -q '^SIGNUPS_ALLOWED=' ./.env; then - echo 'SIGNUPS_ALLOWED="true"' >> ./.env - echo "已添加 SIGNUPS_ALLOWED=true" - else - echo "SIGNUPS_ALLOWED 参数已存在" - fi - - # 检查并添加 WEBSOCKET_ENABLED 参数 - if ! grep -q '^WEBSOCKET_ENABLED=' ./.env; then - echo 'WEBSOCKET_ENABLED="false"' >> ./.env - echo "已添加 WEBSOCKET_ENABLED=false" - else - echo "WEBSOCKET_ENABLED 参数已存在" - fi - -else - echo ".env 文件不存在" -fi diff --git a/apps/bitwarden/README.md b/apps/bitwarden/README.md deleted file mode 100644 index df512c69..00000000 --- a/apps/bitwarden/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Vaultwarden - -Vaultwarden 是 Bitwarden 客户端 API 的替代服务器实现,使用 Rust 编写,兼容 [官方 Bitwarden 客户端](https://bitwarden.com/download/)(详见 [免责声明](https://github.com/dani-garcia/vaultwarden/blob/main/README.md#disclaimer))。它非常适合在需要自托管的环境中部署,尤其是在官方服务资源消耗较大的情况下提供了更轻量的解决方案。 \ No newline at end of file diff --git a/apps/bitwarden/data.yml b/apps/bitwarden/data.yml deleted file mode 100644 index 4ccfa27b..00000000 --- a/apps/bitwarden/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Bitwarden -tags: - - 安全 -title: 一个开源的密码管理服务 -description: 一个开源的密码管理服务 -additionalProperties: - key: bitwarden - name: Bitwarden - tags: - - Security - shortDescZh: 一个开源的密码管理服务 - shortDescEn: An open source password management service - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://bitwarden.com/ - github: https://github.com/dani-garcia/vaultwarden - document: https://github.com/dani-garcia/vaultwarden/wiki diff --git a/apps/bitwarden/latest/.env.sample b/apps/bitwarden/latest/.env.sample deleted file mode 100644 index dd948fb7..00000000 --- a/apps/bitwarden/latest/.env.sample +++ /dev/null @@ -1,7 +0,0 @@ -ADMIN_TOKEN="" -CONTAINER_NAME="bitwarden" -DATA_PATH="./data" -INVITATIONS_ALLOWED="true" -PANEL_APP_PORT_HTTP=40031 -SIGNUPS_ALLOWED="true" -WEBSOCKET_ENABLED="false" diff --git a/apps/bitwarden/latest/data.yml b/apps/bitwarden/latest/data.yml deleted file mode 100644 index be5e2553..00000000 --- a/apps/bitwarden/latest/data.yml +++ /dev/null @@ -1,60 +0,0 @@ -additionalProperties: - formFields: - - default: "40031" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "./data" - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: "true" - edit: true - envKey: SIGNUPS_ALLOWED - labelEn: Allow Signups - labelZh: 允许注册 - required: true - type: select - values: - - label: "True" - value: "true" - - label: "False" - value: "false" - - default: "true" - edit: true - envKey: INVITATIONS_ALLOWED - labelEn: Allow Invitations - labelZh: 允许邀请 - required: true - type: select - values: - - label: "True" - value: "true" - - label: "False" - value: "false" - - default: "false" - edit: true - envKey: WEBSOCKET_ENABLED - labelEn: WebSocket Enabled - labelZh: 启用 WebSocket - required: true - type: select - values: - - label: "True" - value: "true" - - label: "False" - value: "false" - - default: "" - edit: true - envKey: ADMIN_TOKEN - labelEn: Admin Token - labelZh: 管理员令牌 - required: false - type: password diff --git a/apps/bitwarden/latest/docker-compose.yml b/apps/bitwarden/latest/docker-compose.yml deleted file mode 100644 index a1db423c..00000000 --- a/apps/bitwarden/latest/docker-compose.yml +++ /dev/null @@ -1,21 +0,0 @@ -services: - bitwarden: - image: "vaultwarden/server:latest" - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - volumes: - - "${DATA_PATH}:/data" - environment: - - SIGNUPS_ALLOWED=${SIGNUPS_ALLOWED} - - INVITATIONS_ALLOWED=${INVITATIONS_ALLOWED} - - WEBSOCKET_ENABLED=${WEBSOCKET_ENABLED} - - ADMIN_TOKEN=${ADMIN_TOKEN} - labels: - createdBy: "Apps" -networks: - 1panel-network: - external: true diff --git a/apps/bitwarden/latest/scripts/upgrade.sh b/apps/bitwarden/latest/scripts/upgrade.sh deleted file mode 100644 index 9640eb46..00000000 --- a/apps/bitwarden/latest/scripts/upgrade.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -# 检查 .env 文件是否存在 -if [[ -f ./.env ]]; then - - # 检查并添加 ADMIN_TOKEN 参数 - if ! grep -q '^ADMIN_TOKEN=' ./.env; then - echo 'ADMIN_TOKEN=""' >> ./.env - echo "已添加 ADMIN_TOKEN=" - else - echo "ADMIN_TOKEN 参数已存在" - fi - - # 检查并添加 INVITATIONS_ALLOWED 参数 - if ! grep -q '^INVITATIONS_ALLOWED=' ./.env; then - echo 'INVITATIONS_ALLOWED="true"' >> ./.env - echo "已添加 INVITATIONS_ALLOWED=true" - else - echo "INVITATIONS_ALLOWED 参数已存在" - fi - - # 检查并添加 SIGNUPS_ALLOWED 参数 - if ! grep -q '^SIGNUPS_ALLOWED=' ./.env; then - echo 'SIGNUPS_ALLOWED="true"' >> ./.env - echo "已添加 SIGNUPS_ALLOWED=true" - else - echo "SIGNUPS_ALLOWED 参数已存在" - fi - - # 检查并添加 WEBSOCKET_ENABLED 参数 - if ! grep -q '^WEBSOCKET_ENABLED=' ./.env; then - echo 'WEBSOCKET_ENABLED="false"' >> ./.env - echo "已添加 WEBSOCKET_ENABLED=false" - else - echo "WEBSOCKET_ENABLED 参数已存在" - fi - -else - echo ".env 文件不存在" -fi diff --git a/apps/bitwarden/logo.png b/apps/bitwarden/logo.png deleted file mode 100644 index 302e0a6d4b081441af66eb840938d151155a0a8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2480 zcmV;h2~YNkP)N+n+vtbsi|d-M-2JX)AQ%C218KK zaq$8DeCzm%$)lh_G7i%R1L%5=gTK7K*X}UsgA|8@OB^B;Y`R9qZp0d)+Z{iY!kqa~ zX#I8(28itx_heqm+)BOF8QH4K%VIyl^}S zc=$MEAnqW8n+=L=SZ}%Hz<|?pN0DZV5M;1IP=rRMU(9i%*AYV)O$2D#WFcFP2;x}M zS`Iy%(A5^wAAC?Mmg;zH{lljlZ6U20JN4kbv4+0qCx;elrH$`*#ZFKA3S)@ddXy(e z1~D2V^j1o7YG{e3jnETya%ha8e1Sprd&N$!2txn3c3N}APA&*~$Z+gjSmofyA~SjE zYy&&8;`P7rC#whkD_72akYmk@(9Z>ElYI^tlT^IN(2CH%LN+IkHizJ1e!cKTdPO3J&ig3M z$Kw{$4(7`yUk3Zy-%+GY`;MR?3#}JZ&BwLBQu1dTfKB8!EIl*176G;%|h%ZvH;Da zX|zwJTR5B`YiK4j(7BL$>o&IN#6mK`ub?%rhOV$ogsz^(YSz~1;ig!NY742j_?9j1 ztxv()yPrQj&2xde*R^TQ8fxuzLd#g4g!Kd@x-(ay`Bn(5f>lk{)ml&TIhySFM64<6 z;qo~i6qswXuGV@YvJsg63+k{I`&p~v8s$`4Tkdz@L|XGA^r^JYWxF%$V_5rVt^d|q zi?h~eyFRn7%NouWVuOaWH=ZNkS?k)Y#XrJA;A|mhZ#-w2znj)@C~J5#*7WIm@J3oo z#?;$b2>v70+pwnds5i2ZEc9Q-y16&9H}uBtn|Wgj`sA!H_p=s&b(4%$vc7T=jFxroM&FpYkp~u!ul2Wbt&BpAtY`J}}V0UPA*)OG? zW}Pe&7tyOHBD!z{*N!{!1gf=A%2a z5j6N?KlIO=2CNnTabvbhuOD+2NEYa;O(SnyM9*FLIjJnry}Kq_Qv}gl!P}G?qGTG? zW$7kqnzi;k5V41O6GbPj^hV~dYO&UP9l)o0Q`PGazR#E4SfF9*)?tmvl7aRDqJ2H9 zgf>?Ly-m5xq_n0w8-9BiZAo7gsx^wNsY0iYg-8KRke3@8TYo?FZaGxVnu4>?8O9?U z>Btgjkuld_+#0O$5f86OJ9_nCCTg%&{_UowU905!E__x8TEJx;3*p*vU7ABv!BNBb z7<_VTu~rM$Gn0r`UC8t{Xbv}`s%?8lkCX&jgUci;{WIvq9sf%BzjFki)R%dOn0)xu(RTPkP8g4WkX32~b^Y z?u}UMEnS_-O;rXSmV&c7&x!&d)hgXY3yyfW4ZjZtp8NiJ*) z%u>^7wGg^NSyovHdduj+L_E}E@F8HiGNe*yrX-rS=apLsS4&gQL9e-(TZ{HA@tV^l zfm~Iv26eTLYlkrC31+Ly-9~wg+DC<38Y_T7J`dJk?CmbB8G*=(;u z5FSSE=H{UJXc^lE{(5~>Ofgo|WfJzQd;t_e`)az`9UgQS#xMIC-i17JB{J6>+bFvJX(Fol)FG3 zXdQp~be%8rSw?wQ&u?p{Q=-Tx*FDfWROD7W-ekE>s@CvE0L{Eij{Ih~$efzibT{LS z@qJyJ*)xi~K1wJ>PQ{SoMFmu+xY!gc*mTm5t8uObGq#S`S&%Cn$j((6bn+f)oX;>#UqI{kKvdL(n<~VL=e6id z*Q|3hHs0=JLaF7g6)s~`!BqgpeK%FgsEbX#d#U!6u@~!93qeYTkPwoK@P~En8Mx4OQYtR#ag3AOT2yyqf+&? z3SvEnowI`NB?_U3%T0tz-qPy$QNWYsVN(pLw7bGvrLKbmf7IQ1Wt;j*62mWbD zlwKI7V8H?b6inR+S*RFPl*|#+RpTA7EMU`%ZF(K&jIc>-?|vR~b6-*#^@J&-zYm0{ znvv*ZFi_7rkGDV0!Z@JI@|l<5FP&{5Sd9S^vA?yyeVof&3@gbaa^+mef?C#d0c!I3 z-(Th|RCTCOqXo5x)O#%t<&(e9pp!?#v2JP+W!{)^c%03$i7V`!GXC?LT5;<1+EI(4 zo;av8HK1E@>NXI8{#Nx~EQM|$YCTG^M-2n5s?8$*p^9$Sf<}!u$}V(v|H?FLnU8Qw z!($q=K@ZciS!0}@Zm2Wqabw)zgNkl)p{k`%6_!DTxXwhhB&K#gT?D_C@eQNMV~ZxU zz^H24Jm~i0)=8mTHC55r4j4oaZzx>qfc5%YUn|H#u%ia(l%((8bi*g+Bx+NY#+wg> zj6K%GNV*I1lIB`Sp2`aWtSWBgq5&l((TkgF^@pwZJUpmL6^e-?q?X`R`*pkH>(x-B z{#wYOizqGy(W*sT2%VzcVG!1i5%$!A7RDuukd0mImC@G@4;xvSb%cR#8rREDCt281 utNU^N=u$pCe||_-;?5}>^xtI~^#2dyVz3*ukt2@)0000 - - Bytebase - - - -

- 🔥 Live Demo • - ⚙️ Install • - 📚 Docs • - 💬 Discord • - 🙋‍♀️ Book Demo -

- -

- - go report - - - Artifact Hub - - - Github Stars - -

- -

- Different database development tasks -

- -

- Multiple database systems -

- -

- Unified process -

- -

- Single tool -

- -
- -

- -

- -
- -

- -

- -
- -

- -

- -
- -

🪜

-

Change

-

- Want to formalize the database change process but don't know how? -

- -| | | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| Standard Operating Procedure (SOP)
Standardize the database schema and data change process across different database systems, small or [large tables](https://www.bytebase.com/docs/change-database/online-schema-migration-for-mysql) and [different tenants](https://www.bytebase.com/docs/change-database/batch-change/#change-databases-from-multiple-tenants).

SQL Review
[100+ lint rules](https://www.bytebase.com/docs/sql-review/review-rules) to detect SQL anti-patterns and enforce consistent SQL style in the organization.

GitOps
[Point-and-click GitHub and GitLab integration](https://www.bytebase.com/docs/vcs-integration/overview) to enable GitOps workflow for changing database. | | - -
- -

🔮

-

Query

-

- Want to control the data access but don't know how? -

- -| | | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| All-in-one SQL Editor
Web-based IDE specifically for performing SQL specific tasks.

Data Masking
State-of-the-art [column level masking](https://www.bytebase.com/docs/sql-editor/mask-data) engine to cover complex situations like subquery, CTE.

Data Access Control
Organization level policy to centralize the [data access control](https://www.bytebase.com/docs/security/data-access-control). | | - -
- -

🔒

-

Secure

-

- Want to avoid data leakage, change outage and detect malicious behavior but don't know how? -

- -| | | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | -| Centralize Change, Query and Admin Tasks
A single place to perform different tasks on different databases, thus enforce policy and monitor activity accordingly.

RBAC
[Two-level RBAC model](https://www.bytebase.com/docs/concepts/roles-and-permissions) mapping to the organization wide privileges and application team privileges respectively.

Anomaly Center and Audit Logging
Capture all database [anomalies](https://www.bytebase.com/docs/administration/anomaly-center), user actions and system events and present them in a holistic view. | | - -
- -

👩‍💼

-

Govern

-

- Want to enforce organization policy but don't know how? -

- -| | | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | -| Manage Database Resources
A single place to manage environments, database instances, database users for application development, with optional [Terraform integration](https://registry.terraform.io/providers/bytebase/bytebase/latest/docs).

Policy Enforcement
Enforce organization wide SQL Review policy, backup policy and data access policy.

SQL Editor Admin mode
[CLI like experience](https://www.bytebase.com/docs/sql-editor/admin-mode) without setting up bastion. | | - -
- -# 🖖 Intro - -Bytebase is a Database CI/CD solution for the Developers and DBAs. It's the **only database CI/CD project** included by the [CNCF Landscape](https://landscape.cncf.io/?selected=bytebase). The Bytebase family consists of these tools: - -- [Bytebase Console](https://bytebase.com/?source=github): A web-based GUI for developers and DBAs to manage the database development lifecycle. -- [Bytebase CLI (bb)](https://www.bytebase.com/docs/cli/overview): The CLI to help developers integrate database changes into the existing CI/CD workflow. -- [Bytebase GitHub App](https://github.com/marketplace/bytebase) and [SQL Review GitHub Action](https://github.com/marketplace/actions/sql-review): The GitHub App and GitHub Action to detect SQL anti-patterns and enforce a consistent SQL style guide during Pull Request. -- [Terraform Bytebase Provider](https://registry.terraform.io/providers/bytebase/bytebase/latest/docs): The Terraform - provider enables team to manage Bytebase resources via Terraform. A typical setup involves teams using - Terraform to provision database instances from Cloud vendors, followed by using Bytebase provider to - prepare those instances ready for application use. - -| | Topic | -| --- | :------------------------------------------------------------------ | -| 🏗️ | [Installation](#-installation) | -| 🎮 | [Demo](#-demo) | -| 👩‍🏫 | [Tutorials](#-tutorials) | -| 💎 | [Design Principles](#-design-principles) | -| 🧩 | [Data Model](#-data-model) | -| 🎭 | [Roles](#-roles) | -| 🕊 | [Developing and Contributing](#-developing-and-contributing) | -| 🤺 | [Bytebase vs Alternatives](#-bytebase-vs-alternatives) | - -
- -# 🏗️ Installation - -### One liner - -```bash -# One-liner installation script from latest release -/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/bytebase/install/main/install.sh)" - -``` - -- [Build from source](https://www.bytebase.com/docs/get-started/install/build-from-source-code) -- [Docker](https://www.bytebase.com/docs/get-started/install/deploy-with-docker) -- [Kubernetes](https://www.bytebase.com/docs/get-started/install/deploy-to-kubernetes) -- [render.com](https://www.bytebase.com/docs/get-started/install/deploy-to-render) -- [Rainbond](https://www.bytebase.com/docs/get-started/install/deploy-to-rainbond) - -
- -# 🎮 Demo - -Live demo at https://demo.bytebase.com - -You can also [book a 30min product walkthrough](https://cal.com/adela-bytebase/30min) with one of -our product experts. - -
- -# 👩‍🏫 Tutorials - -Product tutorials are available at https://www.bytebase.com/tutorial. - -## Integrations - -- [Manage Supabase PostgreSQL](https://www.bytebase.com/docs/how-to/integrations/supabase) -- [Manage render PostgreSQL](https://www.bytebase.com/docs/how-to/integrations/render) -- [Manage Neon database](https://www.bytebase.com/docs/how-to/integrations/neon) -- [Deploy to sealos](https://www.bytebase.com/docs/get-started/install/deploy-to-sealos) -- [Deploy to Rainbond](https://www.bytebase.com/docs/get-started/install/deploy-to-rainbond) - -
- -# 💎 Design Principles - -| | | | -| --- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| 🪶 | Dependency Free | Start with a single command `./bytebase` without any external dependency. External PostgreSQL data store and others are optional. | -| 🔗 | Integration First | Solely focus on database management and leave the rest to others. We have native VCS integration with [GitHub/GitLab](https://www.bytebase.com/docs/vcs-integration/overview), [Terraform Provider](https://registry.terraform.io/providers/bytebase/bytebase/latest/docs), [webhook](https://www.bytebase.com/docs/change-database/webhook), and etc. | -| 💂‍♀️ | Engineering Disciplined | Disciplined [bi-weekly release](https://www.bytebase.com/changelog) and [engineering practice](https://github.com/bytebase/bytebase/blob/main/docs/life-of-a-feature.md). | - -
- -# 🧩 Data Model - -More details in [Data Model Doc](https://www.bytebase.com/docs/concepts/data-model). - -

- Data Model -

- -
- -# 🎭 Roles - -More details in [Roles and Permissions Doc](https://www.bytebase.com/docs/concepts/roles-and-permissions). - -Bytebase employs RBAC (Role-Based-Access-Control) and provides two role sets at the workspace and project level: - -- Workspace roles: `Owner`, `DBA`, `Developer`. The workspace role maps to the role in an engineering organization. -- Project roles: `Owner`, `Developer`. The project level role maps to the role in a specific team or project. - -Every user is assigned a workspace role, and if a particular user is involved in a particular project, then she will also be assigned a project role accordingly. - -Below diagram describes a typical mapping between an engineering org and the corresponding roles in the Bytebase workspace - -

- Role Mapping -

- -
- -# 🕊 Developing and Contributing - -

- Tech Stack -

- -- Bytebase is built with a curated tech stack. It is optimized for **developer experience** and is very easy to start - working on the code: - - 1. It has no external dependency. - 1. It requires zero config. - 1. 1 command to start backend and 1 command to start frontend, both with live reload support. - -- Interactive code walkthrough - - - [Life of a schema change](https://sourcegraph.com/github.com/bytebase/bytebase/-/blob/docs/design/life-of-a-schema-change.snb.md) - - [SQL Review](https://sourcegraph.com/github.com/bytebase/bytebase/-/blob/docs/design/sql-review-source-code-tour.snb.md) - -- Follow [Life of a Feature](https://github.com/bytebase/bytebase/blob/main/docs/life-of-a-feature.md). - -## Dev Environment Setup - -### Prerequisites - -- [Go](https://golang.org/doc/install) (1.21.3 or later) -- [pnpm](https://pnpm.io/installation) -- [Air](https://github.com/bytebase/air) (**our forked repo @87187cc with the proper signal handling**). This is for backend live reload. - ```bash - go install github.com/bytebase/air@87187cc - ``` - -### Steps - -1. Pull source. - - ```bash - git clone https://github.com/bytebase/bytebase - ``` - -1. Create an external Postgres database on localhost. - - ```sql - CREATE USER bbdev SUPERUSER; - CREATE DATABASE bbdev; - ``` - -1. Start backend using air (with live reload). - - ```bash - PG_URL=postgresql://bbdev@localhost/bbdev air -c scripts/.air.toml - ``` - - Change the open file limit if you encounter "error: too many open files". - - ```bash - ulimit -n 10240 - ``` - - If you need additional runtime parameters such as --backup-bucket, please add them like this: - - ```bash - air -c scripts/.air.toml -- --backup-region us-east-1 --backup-bucket s3:\\/\\/example-bucket --backup-credential ~/.aws/credentials - ``` - -1. Start frontend (with live reload). - - ```bash - cd frontend && pnpm i && pnpm dev - ``` - - Bytebase should now be running at http://localhost:3000 and change either frontend or backend code would trigger live reload. - -### Tips - -* Use [Code Inspector](https://en.inspector.fe-dev.cn/guide/start.html#method1-recommend) to locate -frontend code from UI. Hold `Option + Shift` on Mac or `Alt + Shift` on Windows - - -
- -# Bytebase vs Flyway, Liquibase - -- [Bytebase vs Liquibase](https://www.bytebase.com/blog/bytebase-vs-liquibase/) -- [Bytebase vs Flyway](https://www.bytebase.com/blog/bytebase-vs-flyway/) - -Either Flyway or Liquibase is a library and CLI focusing on schema change. While Bytebase is an one-stop -solution covering the entire database development lifecycle for Developers and DBAs to collaborate. - -Another key difference is Bytebase **doesn't** support Oracle and SQL Server. This is a conscious -decision we make so that we can focus on supporting other databases without good tooling support. -In particular, many of our users tell us Bytebase is by far the best (and sometimes the only) database -tool that can support their PostgreSQL and ClickHouse use cases. - -[![Star History Chart](https://api.star-history.com/svg?repos=bytebase/bytebase,liquibase/liquibase,flyway/flyway&type=Date)](https://star-history.com/#bytebase/bytebase&liquibase/liquibase&flyway/flyway&Date) - -# Bytebase vs Yearning, Archery - -Either Yearning or Archery provides a DBA operation portal. While Bytebase provides a collaboration -workspace for DBAs and Developers, and brings DevOps practice to the Database Change Management (DCM). -Bytebase has the similar `Project` concept seen in GitLab/GitHub and provides native GitOps integration -with GitLab/GitHub. - -Another key difference is Yearning, Archery are open source projects maintained by the individuals part-time. While Bytebase is open-sourced, it adopts an open-core model and is a commercialized product, supported -by a [fully staffed team](https://www.bytebase.com/about#team) [releasing new version every 2 weeks](https://www.bytebase.com/changelog). - -[![Star History Chart](https://api.star-history.com/svg?repos=bytebase/bytebase,cookieY/Yearning,hhyo/Archery&type=Date)](https://star-history.com/#bytebase/bytebase&cookieY/Yearning&hhyo/Archery&Date) - -# 👨‍👩‍👧‍👦 Community - -[![Hang out on Discord](https://img.shields.io/badge/%20-Hang%20out%20on%20Discord-5865F2?style=for-the-badge&logo=discord&labelColor=EEEEEE)](https://discord.gg/huyw7gRsyA) - -[![Follow us on Twitter](https://img.shields.io/badge/Follow%20us%20on%20Twitter-1DA1F2?style=for-the-badge&logo=twitter&labelColor=EEEEEE)](https://twitter.com/Bytebase) - -
- -# 🤔 Frequently Asked Questions (FAQs) - -Check out our [FAQ](https://www.bytebase.com/docs/faq). - -
- -# 🙋 Contact Us - -- Interested in joining us? Check out our [jobs page](https://bytebase.com/jobs?source=github) for openings. -- Want to solve your schema change and database management headache? Book a [30min demo](https://cal.com/adela-bytebase/30min) with one of our product experts. diff --git a/apps/bytebase/data.yml b/apps/bytebase/data.yml deleted file mode 100644 index 8c7e03b8..00000000 --- a/apps/bytebase/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Bytebase -tags: - - DevOps -title: 开源的数据库 DevOps 工具 -description: 开源的数据库 DevOps 工具 -additionalProperties: - key: bytebase - name: Bytebase - tags: - - DevOps - shortDescZh: 开源的数据库 DevOps 工具 - shortDescEn: An open-source database DevOps tool - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://www.bytebase.com - github: https://github.com/bytebase/bytebase - document: https://www.bytebase.com/docs diff --git a/apps/bytebase/logo.png b/apps/bytebase/logo.png deleted file mode 100644 index cf27d62273c980e7b670e9ab83c22b2b3574ba17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4576 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 diff --git a/apps/calibre-web/0.6.24/.env.sample b/apps/calibre-web/0.6.24/.env.sample deleted file mode 100644 index a967d1f7..00000000 --- a/apps/calibre-web/0.6.24/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME="calibre-web" -PANEL_APP_PORT_HTTP="40109" -DATA_PATH="./data/books" -TIME_ZONE="Asia/Shanghai" diff --git a/apps/calibre-web/0.6.24/data.yml b/apps/calibre-web/0.6.24/data.yml deleted file mode 100644 index fa4567d9..00000000 --- a/apps/calibre-web/0.6.24/data.yml +++ /dev/null @@ -1,24 +0,0 @@ -additionalProperties: - formFields: - - default: 40109 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: HTTP Port - labelZh: HTTP端口 - required: true - rule: paramPort - type: number - - default: ./data/books - edit: true - envKey: DATA_PATH - labelEn: Books folder path - labelZh: 书本文件夹路径 - required: true - type: text - - default: Asia/Shanghai - edit: true - envKey: TIME_ZONE - labelEn: Time zone - labelZh: 时区 - required: true - type: text diff --git a/apps/calibre-web/0.6.24/docker-compose.yml b/apps/calibre-web/0.6.24/docker-compose.yml deleted file mode 100644 index 91427527..00000000 --- a/apps/calibre-web/0.6.24/docker-compose.yml +++ /dev/null @@ -1,24 +0,0 @@ -services: - calibre-web: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8083" - volumes: - - "./data/config:/config" - - "${DATA_PATH}:/books" - environment: - - PUID=1000 - - PGID=1000 - - TZ=${TIME_ZONE} - - DOCKER_MODS=linuxserver/mods:universal-calibre #optional - - OAUTHLIB_RELAX_TOKEN_SCOPE=1 #optional - image: linuxserver/calibre-web:0.6.24 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/calibre-web/README.md b/apps/calibre-web/README.md deleted file mode 100644 index bcd0de98..00000000 --- a/apps/calibre-web/README.md +++ /dev/null @@ -1,133 +0,0 @@ -# 使用说明 - -- 默认账户密码 - -``` -username:admin -password:admin123 -``` - -# 原始相关 - -# Calibre-Web - -Calibre-Web is a web app that offers a clean and intuitive interface for browsing, reading, and downloading eBooks using a valid [Calibre](https://calibre-ebook.com) database. - -[![License](https://img.shields.io/github/license/janeczku/calibre-web?style=flat-square)](https://github.com/janeczku/calibre-web/blob/master/LICENSE) -![Commit Activity](https://img.shields.io/github/commit-activity/w/janeczku/calibre-web?logo=github&style=flat-square&label=commits) -[![All Releases](https://img.shields.io/github/downloads/janeczku/calibre-web/total?logo=github&style=flat-square)](https://github.com/janeczku/calibre-web/releases) -[![PyPI](https://img.shields.io/pypi/v/calibreweb?logo=pypi&logoColor=fff&style=flat-square)](https://pypi.org/project/calibreweb/) -[![PyPI - Downloads](https://img.shields.io/pypi/dm/calibreweb?logo=pypi&logoColor=fff&style=flat-square)](https://pypi.org/project/calibreweb/) -[![Discord](https://img.shields.io/discord/838810113564344381?label=Discord&logo=discord&style=flat-square)](https://discord.gg/h2VsJ2NEfB) - -
-Table of Contents (click to expand) - -- [使用说明](#使用说明) -- [原始相关](#原始相关) -- [Calibre-Web](#calibre-web) - - [Features](#features) - - [Installation](#installation) - - [Installation via pip (recommended)](#installation-via-pip-recommended) - - [Quick Start](#quick-start) - - [Default Admin Login:](#default-admin-login) - - [Requirements](#requirements) - - [Docker Images](#docker-images) - - [**LinuxServer - x64, aarch64**](#linuxserver---x64-aarch64) - - [Contributor Recognition](#contributor-recognition) - - [Contact](#contact) - - [Contributing to Calibre-Web](#contributing-to-calibre-web) - -
- - -*This software is a fork of [library](https://github.com/mutschler/calibreserver) and licensed under the GPL v3 License.* - -![Main screen](https://github.com/janeczku/calibre-web/wiki/images/main_screen.png) - -## Features - -- Modern and responsive Bootstrap 3 HTML5 interface -- Full graphical setup -- Comprehensive user management with fine-grained per-user permissions -- Admin interface -- Multilingual user interface supporting 20+ languages ([supported languages](https://github.com/janeczku/calibre-web/wiki/Translation-Status)) -- OPDS feed for eBook reader apps -- Advanced search and filtering options -- Custom book collection (shelves) creation -- eBook metadata editing and deletion support -- Metadata download from various sources (extensible via plugins) -- eBook conversion through Calibre binaries -- eBook download restriction to logged-in users -- Public user registration support -- Send eBooks to E-Readers with a single click -- Sync Kobo devices with your Calibre library -- In-browser eBook reading support for multiple formats -- Upload new books in various formats, including audio formats -- Calibre Custom Columns support -- Content hiding based on categories and Custom Column content per user -- Self-update capability -- "Magic Link" login for easy access on eReaders -- LDAP, Google/GitHub OAuth, and proxy authentication support - -## Installation - -#### Installation via pip (recommended) -1. Create a virtual environment for Calibre-Web to avoid conflicts with existing Python dependencies -2. Install Calibre-Web via pip: `pip install calibreweb` (or `pip3` depending on your OS/distro) -3. Install optional features via pip as needed, see [this page](https://github.com/janeczku/calibre-web/wiki/Dependencies-in-Calibre-Web-Linux-and-Windows) for details -4. Start Calibre-Web by typing `cps` - -*Note: Raspberry Pi OS users may encounter issues during installation. If so, please update pip (`./venv/bin/python3 -m pip install --upgrade pip`) and/or install cargo (`sudo apt install cargo`) before retrying the installation.* - -Refer to the Wiki for additional installation examples: [manual installation](https://github.com/janeczku/calibre-web/wiki/Manual-installation), [Linux Mint](https://github.com/janeczku/calibre-web/wiki/How-To:Install-Calibre-Web-in-Linux-Mint-19-or-20), [Cloud Provider](https://github.com/janeczku/calibre-web/wiki/How-To:-Install-Calibre-Web-on-a-Cloud-Provider). - -## Quick Start - -1. Open your browser and navigate to `http://localhost:8083` or `http://localhost:8083/opds` for the OPDS catalog -2. Log in with the default admin credentials -3. If you don't have a Calibre database, you can use [this database](https://github.com/janeczku/calibre-web/raw/master/library/metadata.db) (move it out of the Calibre-Web folder to prevent overwriting during updates) -4. Set `Location of Calibre database` to the path of the folder containing your Calibre library (metadata.db) and click "Save" -5. Optionally, use Google Drive to host your Calibre library by following the [Google Drive integration guide](https://github.com/janeczku/calibre-web/wiki/G-Drive-Setup#using-google-drive-integration) -6. Configure your Calibre-Web instance via the admin page, referring to the [Basic Configuration](https://github.com/janeczku/calibre-web/wiki/Configuration#basic-configuration) and [UI Configuration](https://github.com/janeczku/calibre-web/wiki/Configuration#ui-configuration) guides - -#### Default Admin Login: -- **Username:** admin -- **Password:** admin123 - -## Requirements - -- Python 3.5+ -- [Imagemagick](https://imagemagick.org/script/download.php) for cover extraction from EPUBs (Windows users may need to install [Ghostscript](https://ghostscript.com/releases/gsdnld.html) for PDF cover extraction) -- Optional: [Calibre desktop program](https://calibre-ebook.com/download) for on-the-fly conversion and metadata editing (set "calibre's converter tool" path on the setup page) -- Optional: [Kepubify tool](https://github.com/pgaskin/kepubify/releases/latest) for Kobo device support (place the binary in `/opt/kepubify` on Linux or `C:\Program Files\kepubify` on Windows) - -## Docker Images - -Pre-built Docker images are available in the following Docker Hub repositories (maintained by the LinuxServer team): - -#### **LinuxServer - x64, aarch64** -- [Docker Hub](https://hub.docker.com/r/linuxserver/calibre-web) -- [GitHub](https://github.com/linuxserver/docker-calibre-web) -- [GitHub - Optional Calibre layer](https://github.com/linuxserver/docker-mods/tree/universal-calibre) - - Include the environment variable `DOCKER_MODS=linuxserver/mods:universal-calibre` in your Docker run/compose file to add the Calibre `ebook-convert` binary (x64 only). Omit this variable for a lightweight image. - - Both the Calibre-Web and Calibre-Mod images are automatically rebuilt on new releases and updates. - - - Set "path to convertertool" to `/usr/bin/ebook-convert` - - Set "path to unrar" to `/usr/bin/unrar` - -## Contributor Recognition - -We would like to thank all the [contributors](https://github.com/janeczku/calibre-web/graphs/contributors) and maintainers of Calibre-Web for their valuable input and dedication to the project. Your contributions are greatly appreciated. - -## Contact - -Join us on [Discord](https://discord.gg/h2VsJ2NEfB) - -For more information, How To's, and FAQs, please visit the [Wiki](https://github.com/janeczku/calibre-web/wiki) - -## Contributing to Calibre-Web - -Check out our [Contributing Guidelines](https://github.com/janeczku/calibre-web/blob/master/CONTRIBUTING.md) diff --git a/apps/calibre-web/data.yml b/apps/calibre-web/data.yml deleted file mode 100644 index eb636ead..00000000 --- a/apps/calibre-web/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Calibre-Web -tags: - - 多媒体 -title: 用于浏览、阅读和下载存储在 Calibre 数据库中的电子书的 Web 应用程序 -description: 用于浏览、阅读和下载存储在 Calibre 数据库中的电子书的 Web 应用程序 -additionalProperties: - key: calibre-web - name: Calibre-Web - tags: - - Media - shortDescZh: 用于浏览、阅读和下载存储在 Calibre 数据库中的电子书的 Web 应用程序 - shortDescEn: Web app for browsing, reading and downloading eBooks stored in a Calibre database - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://calibre-ebook.com - github: https://github.com/janeczku/calibre-web - document: https://calibre-ebook.com/help diff --git a/apps/calibre-web/latest/.env.sample b/apps/calibre-web/latest/.env.sample deleted file mode 100644 index a967d1f7..00000000 --- a/apps/calibre-web/latest/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME="calibre-web" -PANEL_APP_PORT_HTTP="40109" -DATA_PATH="./data/books" -TIME_ZONE="Asia/Shanghai" diff --git a/apps/calibre-web/latest/data.yml b/apps/calibre-web/latest/data.yml deleted file mode 100644 index fa4567d9..00000000 --- a/apps/calibre-web/latest/data.yml +++ /dev/null @@ -1,24 +0,0 @@ -additionalProperties: - formFields: - - default: 40109 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: HTTP Port - labelZh: HTTP端口 - required: true - rule: paramPort - type: number - - default: ./data/books - edit: true - envKey: DATA_PATH - labelEn: Books folder path - labelZh: 书本文件夹路径 - required: true - type: text - - default: Asia/Shanghai - edit: true - envKey: TIME_ZONE - labelEn: Time zone - labelZh: 时区 - required: true - type: text diff --git a/apps/calibre-web/latest/docker-compose.yml b/apps/calibre-web/latest/docker-compose.yml deleted file mode 100644 index 74551a6b..00000000 --- a/apps/calibre-web/latest/docker-compose.yml +++ /dev/null @@ -1,24 +0,0 @@ -services: - calibre-web: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8083" - volumes: - - "./data/config:/config" - - "${DATA_PATH}:/books" - environment: - - PUID=1000 - - PGID=1000 - - TZ=${TIME_ZONE} - - DOCKER_MODS=linuxserver/mods:universal-calibre #optional - - OAUTHLIB_RELAX_TOKEN_SCOPE=1 #optional - image: linuxserver/calibre-web:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/calibre-web/logo.png b/apps/calibre-web/logo.png deleted file mode 100644 index d9e98cc134ab88b26dd2a594dd734b9d2fc2fdc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8719 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 diff --git a/apps/certd/1.28.3/.env.sample b/apps/certd/1.28.3/.env.sample deleted file mode 100644 index d3029589..00000000 --- a/apps/certd/1.28.3/.env.sample +++ /dev/null @@ -1,10 +0,0 @@ -CONTAINER_NAME="certd" -DATA_PATH="./data" -DNS_1="223.5.5.5" -DNS_2="119.29.29.29" -HTTPS_PROXY="" -HTTP_PROXY="" -IMMEDIATE_TRIGGER="false" -PANEL_APP_PORT_HTTP=40311 -RESET_ADMIN_PASSWD="false" -TIME_ZONE="Asia/Shanghai" diff --git a/apps/certd/1.28.3/data.yml b/apps/certd/1.28.3/data.yml deleted file mode 100644 index db2de3e1..00000000 --- a/apps/certd/1.28.3/data.yml +++ /dev/null @@ -1,76 +0,0 @@ -additionalProperties: - formFields: - - default: "40311" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "./data" - edit: true - envKey: DATA_PATH - labelEn: Data Path - labelZh: 数据路径 - required: true - type: text - - default: "223.5.5.5" - edit: true - envKey: DNS_1 - labelEn: Primary DNS - labelZh: 主 DNS - required: true - type: text - - default: "119.29.29.29" - edit: true - envKey: DNS_2 - labelEn: Secondary DNS - labelZh: 次 DNS - required: true - type: text - - default: "Asia/Shanghai" - edit: true - envKey: TIME_ZONE - labelEn: Time Zone - labelZh: 时区 - required: true - type: text - - default: "" - edit: true - envKey: HTTPS_PROXY - labelEn: HTTPS Proxy - labelZh: HTTPS 代理 - required: false - type: text - - default: "" - edit: true - envKey: HTTP_PROXY - labelEn: HTTP Proxy - labelZh: HTTP 代理 - required: false - type: text - - default: "false" - edit: true - envKey: RESET_ADMIN_PASSWD - labelEn: Reset Admin Password - labelZh: 重置管理员密码 - required: true - type: select - values: - - label: "true" - value: "true" - - label: "false" - value: "false" - - default: "false" - edit: true - envKey: IMMEDIATE_TRIGGER - labelEn: Immediate trigger of cron - labelZh: 立即触发定时任务 - required: true - type: select - values: - - label: "true" - value: "true" - - label: "false" - value: "false" diff --git a/apps/certd/1.28.3/docker-compose.yml b/apps/certd/1.28.3/docker-compose.yml deleted file mode 100644 index 249c0ad7..00000000 --- a/apps/certd/1.28.3/docker-compose.yml +++ /dev/null @@ -1,26 +0,0 @@ -services: - certd: - image: "greper/certd:1.28.3" - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - volumes: - - ${DATA_PATH}:/app/data - ports: - - "${PANEL_APP_PORT_HTTP}:7001" - dns: - - ${DNS_1} - - ${DNS_2} - environment: - - TZ=${TIME_ZONE} - - HTTPS_PROXY=${HTTPS_PROXY} - - HTTP_PROXY=${HTTP_PROXY} - - certd_system_resetAdminPasswd=${RESET_ADMIN_PASSWD} - - certd_cron_immediateTriggerOnce=${IMMEDIATE_TRIGGER} - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/certd/README.md b/apps/certd/README.md deleted file mode 100644 index 2e0ee077..00000000 --- a/apps/certd/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# Certd - -Certd 是一个免费全自动申请和自动部署更新SSL证书的管理系统。 -后缀d取自linux守护进程的命名风格,意为证书守护进程。 - -关键字:证书自动申请、证书自动更新、证书自动续期、证书自动续签、证书管理工具 - -## 使用说明 - -- 账户密码 -``` -username: admin -password: 123456 -``` - -## 特性 -本项目不仅支持证书申请过程自动化,还可以自动化部署更新证书,让你的证书永不过期。 - -* 全自动申请证书(支持所有注册商注册的域名) -* 全自动部署更新证书(目前支持部署到主机、部署到阿里云、腾讯云等,目前已支持30+部署插件) -* 支持通配符域名/泛域名,支持多个域名打到一个证书上 -* 邮件通知 -* 私有化部署,保障数据安全 -* 支持sqlite,postgresql数据库 \ No newline at end of file diff --git a/apps/certd/data.yml b/apps/certd/data.yml deleted file mode 100644 index 26f473a9..00000000 --- a/apps/certd/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Certd -tags: - - 安全 -title: 开源 SSL 证书管理工具 -description: 开源 SSL 证书管理工具 -additionalProperties: - key: certd - name: Certd - tags: - - Security - shortDescZh: 开源 SSL 证书管理工具 - shortDescEn: Open source SSL certificate management tool - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://certd.docmirror.cn - github: https://github.com/certd/certd - document: https://certd.docmirror.cn diff --git a/apps/certd/latest-postgres/.env.sample b/apps/certd/latest-postgres/.env.sample deleted file mode 100644 index e9903420..00000000 --- a/apps/certd/latest-postgres/.env.sample +++ /dev/null @@ -1,15 +0,0 @@ -CONTAINER_NAME="certd" -DATA_PATH="./data" -DNS_1="223.5.5.5" -DNS_2="119.29.29.29" -HTTPS_PROXY="" -HTTP_PROXY="" -IMMEDIATE_TRIGGER="false" -PANEL_APP_PORT_HTTP=40311 -PANEL_DB_HOST="postgresql" -PANEL_DB_NAME="certd" -PANEL_DB_PORT=5432 -PANEL_DB_USER="certd" -PANEL_DB_USER_PASSWORD="certd" -RESET_ADMIN_PASSWD="false" -TIME_ZONE="Asia/Shanghai" diff --git a/apps/certd/latest-postgres/data.yml b/apps/certd/latest-postgres/data.yml deleted file mode 100644 index d217bf41..00000000 --- a/apps/certd/latest-postgres/data.yml +++ /dev/null @@ -1,116 +0,0 @@ -additionalProperties: - formFields: - - default: "40311" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "./data" - edit: true - envKey: DATA_PATH - labelEn: Data Path - labelZh: 数据路径 - required: true - type: text - - default: "223.5.5.5" - edit: true - envKey: DNS_1 - labelEn: Primary DNS - labelZh: 主 DNS - required: true - type: text - - default: "119.29.29.29" - edit: true - envKey: DNS_2 - labelEn: Secondary DNS - labelZh: 次 DNS - required: true - type: text - - default: "Asia/Shanghai" - edit: true - envKey: TIME_ZONE - labelEn: Time Zone - labelZh: 时区 - required: true - type: text - - default: "" - edit: true - envKey: HTTPS_PROXY - labelEn: HTTPS Proxy - labelZh: HTTPS 代理 - required: false - type: text - - default: "" - edit: true - envKey: HTTP_PROXY - labelEn: HTTP Proxy - labelZh: HTTP 代理 - required: false - type: text - - default: "false" - edit: true - envKey: RESET_ADMIN_PASSWD - labelEn: Reset Admin Password - labelZh: 重置管理员密码 - required: true - type: select - values: - - label: "true" - value: "true" - - label: "false" - value: "false" - - default: "false" - edit: true - envKey: IMMEDIATE_TRIGGER - labelEn: Immediate trigger of cron - labelZh: 立即触发定时任务 - required: true - type: select - values: - - label: "true" - value: "true" - - label: "false" - value: "false" - - 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: "certd" - envKey: PANEL_DB_NAME - labelEn: Database - labelZh: 数据库名 - random: true - required: true - rule: paramCommon - type: text - - default: "certd" - envKey: PANEL_DB_USER - labelEn: User - labelZh: 数据库用户 - random: true - required: true - rule: paramCommon - type: text - - default: "certd" - envKey: PANEL_DB_USER_PASSWORD - labelEn: Password - labelZh: 数据库用户密码 - random: true - required: true - rule: paramComplexity - type: password diff --git a/apps/certd/latest-postgres/docker-compose.yml b/apps/certd/latest-postgres/docker-compose.yml deleted file mode 100644 index 49f8a73c..00000000 --- a/apps/certd/latest-postgres/docker-compose.yml +++ /dev/null @@ -1,33 +0,0 @@ -services: - certd: - image: "greper/certd:latest" - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - volumes: - - ${DATA_PATH}:/app/data - ports: - - "${PANEL_APP_PORT_HTTP}:7001" - dns: - - ${DNS_1} - - ${DNS_2} - environment: - - TZ=${TIME_ZONE} - - HTTPS_PROXY=${HTTPS_PROXY} - - HTTP_PROXY=${HTTP_PROXY} - - certd_system_resetAdminPasswd=${RESET_ADMIN_PASSWD} - - certd_cron_immediateTriggerOnce=${IMMEDIATE_TRIGGER} - - certd_flyway_scriptDir=./db/migration-pg - - certd_typeorm_dataSource_default_type=postgres - - certd_typeorm_dataSource_default_host=${PANEL_DB_HOST} - - certd_typeorm_dataSource_default_port=${PANEL_DB_PORT} - - certd_typeorm_dataSource_default_username=${PANEL_DB_USER} - - certd_typeorm_dataSource_default_password=${PANEL_DB_USER_PASSWORD} - - certd_typeorm_dataSource_default_database=${PANEL_DB_NAME} - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/certd/latest/.env.sample b/apps/certd/latest/.env.sample deleted file mode 100644 index d3029589..00000000 --- a/apps/certd/latest/.env.sample +++ /dev/null @@ -1,10 +0,0 @@ -CONTAINER_NAME="certd" -DATA_PATH="./data" -DNS_1="223.5.5.5" -DNS_2="119.29.29.29" -HTTPS_PROXY="" -HTTP_PROXY="" -IMMEDIATE_TRIGGER="false" -PANEL_APP_PORT_HTTP=40311 -RESET_ADMIN_PASSWD="false" -TIME_ZONE="Asia/Shanghai" diff --git a/apps/certd/latest/data.yml b/apps/certd/latest/data.yml deleted file mode 100644 index db2de3e1..00000000 --- a/apps/certd/latest/data.yml +++ /dev/null @@ -1,76 +0,0 @@ -additionalProperties: - formFields: - - default: "40311" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "./data" - edit: true - envKey: DATA_PATH - labelEn: Data Path - labelZh: 数据路径 - required: true - type: text - - default: "223.5.5.5" - edit: true - envKey: DNS_1 - labelEn: Primary DNS - labelZh: 主 DNS - required: true - type: text - - default: "119.29.29.29" - edit: true - envKey: DNS_2 - labelEn: Secondary DNS - labelZh: 次 DNS - required: true - type: text - - default: "Asia/Shanghai" - edit: true - envKey: TIME_ZONE - labelEn: Time Zone - labelZh: 时区 - required: true - type: text - - default: "" - edit: true - envKey: HTTPS_PROXY - labelEn: HTTPS Proxy - labelZh: HTTPS 代理 - required: false - type: text - - default: "" - edit: true - envKey: HTTP_PROXY - labelEn: HTTP Proxy - labelZh: HTTP 代理 - required: false - type: text - - default: "false" - edit: true - envKey: RESET_ADMIN_PASSWD - labelEn: Reset Admin Password - labelZh: 重置管理员密码 - required: true - type: select - values: - - label: "true" - value: "true" - - label: "false" - value: "false" - - default: "false" - edit: true - envKey: IMMEDIATE_TRIGGER - labelEn: Immediate trigger of cron - labelZh: 立即触发定时任务 - required: true - type: select - values: - - label: "true" - value: "true" - - label: "false" - value: "false" diff --git a/apps/certd/latest/docker-compose.yml b/apps/certd/latest/docker-compose.yml deleted file mode 100644 index 8f9f5e2f..00000000 --- a/apps/certd/latest/docker-compose.yml +++ /dev/null @@ -1,26 +0,0 @@ -services: - certd: - image: "greper/certd:latest" - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - volumes: - - ${DATA_PATH}:/app/data - ports: - - "${PANEL_APP_PORT_HTTP}:7001" - dns: - - ${DNS_1} - - ${DNS_2} - environment: - - TZ=${TIME_ZONE} - - HTTPS_PROXY=${HTTPS_PROXY} - - HTTP_PROXY=${HTTP_PROXY} - - certd_system_resetAdminPasswd=${RESET_ADMIN_PASSWD} - - certd_cron_immediateTriggerOnce=${IMMEDIATE_TRIGGER} - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/certd/logo.png b/apps/certd/logo.png deleted file mode 100644 index 9b33bec654484f0e22033d8e48da154224dd8632..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1489 zcmd6n`#aMM0LF)C%&p`SQ7#Ly=pYO=n(S-L7_H55S*WdIxs`}!dd_pszi{5?c`rY{KYeoWI3Eo)Lp2Blq5)vgL2KRo z-B6{qRMYvgmXK<^U$FQ0@&8uU1~_uQz<~!$ztX%jE#pJDhSUvXPh5^RJz5akLBQd-257{Xpr>2chQZ3R2GU zm?dWWt#`_a#W}p*M&_bLFu8a4K$U}G7eh2tbc=a#$gVLkByq}?a+j`Lly~siooxMq zT@joucq8H_pLpM0xEK{D=0#nEAU=U}*2&)WZU7HhpX%LgO;3#FaEK2En=k3Vb>&Z! z73dWexg`CdCuaG{&;osA-}I$F)Ge306k{*cNu8-6f0J=jH-(b|W6LaI(OUB3b9#>A zk(#}vS1;Ylk|K~iG;JD_S9Z4U$NaJj^5{Iv+8dY(N?~s`p{A8TlyQjBrzt-Y`IWYCNedS?pKu{ zO~)&SutJn*gAZtx#jkl(!a0R!+Y642c;ll@HBIY$E%oK1C=}EM+#Hzp zau0Q*qW2W7-I~*l%|wN!Nd_q_O@%l0Ew3`*z7XAwCoU6Oo@%ag`=&*uYRd%OR(QGburlaQ(zPpe|Oo28KG6nZ1xgWpQPvmPnqk`|6j)&Ej z#c%K%3xR6j-oFP_e95l;DIUn}r{~Ucizi@BX~?dbSn}=*&5K5in$+sDqogw{Y@8@> zp3b!n=2trNjIHbxyfQGiZq|XrhvBE%w04MWrSO>@Tt|83!p4Sp9XwlTvyZydi7W&N zlEn}17%e8&iq<>+!sQcbbce#br09l&$J$dC%PL%W8CZf<47ANrp4I+K>2}Leqt7)t zOLN+To@`+g5CWqmj4v2?aC0&gdp?-?^SAok-wmSWFRA;ETKEr34vhyyP+TYUat?#& zzPg%9ne#pWz`f#zmetEcxJ4sp*(>Ex2eC2kWZ;!#LP>FJ?vbDVBg;RWd91adlpRAB SA~^v+*bI2%(0s4RjK2Z;DQzME diff --git a/apps/certimate/0.3.18/.env.sample b/apps/certimate/0.3.18/.env.sample deleted file mode 100644 index 3cee25a7..00000000 --- a/apps/certimate/0.3.18/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="certimate" -DATA_PATH="./data" -PANEL_APP_PORT_HTTP=40297 diff --git a/apps/certimate/0.3.18/data.yml b/apps/certimate/0.3.18/data.yml deleted file mode 100644 index be4e63f6..00000000 --- a/apps/certimate/0.3.18/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: "40297" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "./data" - edit: true - envKey: DATA_PATH - labelEn: Data Path - labelZh: 数据路径 - required: true - type: text diff --git a/apps/certimate/0.3.18/docker-compose.yml b/apps/certimate/0.3.18/docker-compose.yml deleted file mode 100644 index 6264702d..00000000 --- a/apps/certimate/0.3.18/docker-compose.yml +++ /dev/null @@ -1,17 +0,0 @@ -services: - certimate: - image: "usual2970/certimate:v0.3.18" - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8090" - volumes: - - "${DATA_PATH}:/app/pb_data" - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/certimate/README.md b/apps/certimate/README.md deleted file mode 100644 index 3a63bb02..00000000 --- a/apps/certimate/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# 🔒Certimate - -做个人产品或在小企业负责运维的同学,需要管理多个域名,要给域名申请证书。但手动申请证书有以下缺点: - -1. 😱麻烦:申请、部署证书虽不困难,但也挺麻烦的,尤其是维护多个域名的时候。 -2. 😭易忘:当前免费证书有效期仅90天,这就要求定期操作,增加工作量的同时,也很容易忘掉,导致网站无法访问。 - -Certimate 就是为了解决上述问题而产生的,它具有以下特点: - -1. 操作简单:自动申请、部署、续期 SSL 证书,全程无需人工干预。 -2. 支持私有部署:部署方法简单,只需下载二进制文件执行即可。二进制文件、docker 镜像全部用 github actions 生成,过程透明,可自行审计。 -3. 数据安全:由于是私有部署,所有数据均存储在本地,不会保存在服务商的服务器,确保数据的安全性。 - -## 使用说明 - -- 账户密码 -``` -username: admin@certimate.fun -password: 1234567890 -``` \ No newline at end of file diff --git a/apps/certimate/data.yml b/apps/certimate/data.yml deleted file mode 100644 index 86d3decb..00000000 --- a/apps/certimate/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Certimate -tags: - - 安全 -title: 开源的 SSL 证书管理工具 -description: 开源的 SSL 证书管理工具 -additionalProperties: - key: certimate - name: Certimate - tags: - - Security - shortDescZh: 开源的 SSL 证书管理工具 - shortDescEn: Open source SSL certificate management tool - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://docs.certimate.me - github: https://github.com/usual2970/certimate - document: https://docs.certimate.me diff --git a/apps/certimate/latest/.env.sample b/apps/certimate/latest/.env.sample deleted file mode 100644 index 3cee25a7..00000000 --- a/apps/certimate/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="certimate" -DATA_PATH="./data" -PANEL_APP_PORT_HTTP=40297 diff --git a/apps/certimate/latest/data.yml b/apps/certimate/latest/data.yml deleted file mode 100644 index be4e63f6..00000000 --- a/apps/certimate/latest/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: "40297" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "./data" - edit: true - envKey: DATA_PATH - labelEn: Data Path - labelZh: 数据路径 - required: true - type: text diff --git a/apps/certimate/latest/docker-compose.yml b/apps/certimate/latest/docker-compose.yml deleted file mode 100644 index f33d6ad1..00000000 --- a/apps/certimate/latest/docker-compose.yml +++ /dev/null @@ -1,17 +0,0 @@ -services: - certimate: - image: "usual2970/certimate:latest" - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8090" - volumes: - - "${DATA_PATH}:/app/pb_data" - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/certimate/logo.png b/apps/certimate/logo.png deleted file mode 100644 index 384211b3684609c6678dc732fa523ab35fd801bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1924 zcmc(g`9B*70>#sfW*tEhNoifJI@WzBrByjJF^BdA!~N<_D+txX*(i>Rn^Bob@?iv4`vd*9Fd@%{92@SfKd)6&ncC3F2p!zD-0Q^b`w zMPz%)WaCk9rsQ2GNoL9AWTy$y+w(_&OeE;v3vB1u9hw%2EbYg=;P$q=< z1>WH|Khjoh--*)*Xvf>BY0?GD=QH*7t6hr5?B5n8os6LtK}Lso5Il!}F$$0LIMmMnSOCLMoW`ugqBK64V-mwqdV7i(LY8-%zuDI@ z-d-IOxMWf^cSA+^M&$L1wC4Qh?Z?feOEIHb<5tNUx$0vTa!d18v(aV39$BFisA4EA zfX5KzDh~GZ?r=a=iZ5PT*zc@`^w`PY19dX7*a8smG7Y~4r5K=8nDKw1cWj3`0l05q z#RoQ)TKLBXl!*Nc4JmimBSr(^Ld-8x8SqyINvW1umHaB@{BH~zi(!{^1u%2CU~bFo zNp#Q__h6cxJ3pVS<`aYY0aXNxUUc@9k&^pSuV&3S1rNp5Y@Ui zXG?zAc1M|atyFn2lW;C9o}9s9VZp1v)+sx&AiT1X9nGPcBH6_a->y=pfR@ZPjOnf} zM@_+k*UHTR*6KXmBKy>H(jTy>_hKx+WR>>xZhsq@EBr!s9+O7}qn(*F8~Vjv-Gj%x ztE4DW^*mQ-7mZyt*;aQKQ2K%2yOdpalzo%1lUpo3ifHKz484sR+Q|G*k(4tvf31%l zZZ_I(`5sAAU(M=`qACy;kJ_PwZt0ct*gm$w@XLvawycTYN-YA~vSQD0jP-pKQr*z% z*cRv@5)D0RF)A8G1T$N3qFz%#WJOhxw;Ay%5!(t4XjbcT%1;>%)*WwwF^#s1;?fIs zMiPhoBvJ=#Q(UBRcCQskZpBVQz*@omL=18;q^l+0ZcZtPuKG{BBQYn} z4<%q@MlVNYPaLz;7aX}YG8wwECL!?gOm5_mRn)8t6gH|3MIuMGrQgDk2QKlsVUg|? z-L*V1)0)fua^skNhe%QG)?DI{=M2(zt)iM_MZKmvtyewvXpWbX#`dp%(VSm0GryJaO+3QUy3=vB{J z=qW$D9oRd!-!W`t68ltlPsiHCktgQV{AU}fw`3aQQR&Y$tteAS?zLf8(+p0I7F9U> zYyD3Jby|#UA4vU%wQrD)NIM@`Nq+Z`X~Jb+vRsPLxGYDO^FXmi=IOukRnHdnfoo)F zlXPlQ2>+8c(SBL`xr3ra7OLTn`Xi%EWt!~}f?(MawV%28ldmG~T2xn(3m?9}I?c|> zPsy3JC4!%|2ar9-nW0^pyGE2djk1#8lTUxT#e#m+gP5XV^&Jm__zXLc(oO2~+3R@q zc6M1GUEiL%_LH6u$ACx}i!@|sDE)FSsLf9k6TmKxrfv)rCeOKNCmRIvcRi-*Cef*z z9XE|W8U5+2$bomP8F@(I0tlkO1Yw3my!A7Vi9;xo5gpYCj~;~JABX}T!fYQgricyG zhXWnqGy)tIiCs>EXO_V)KEsZU!oxmdf!kOb2!YbVE!*HS-EbFw_8+^43oG;oHu=*S g{;1h>=R)Z@-FePdwyfRDlbZqHFrMg6WJtz;0pjbcqW}N^ diff --git a/apps/changedetectionio/0.50/.env.sample b/apps/changedetectionio/0.50/.env.sample deleted file mode 100644 index db8393dc..00000000 --- a/apps/changedetectionio/0.50/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="changedetection" -PANEL_APP_PORT_HTTP="40097" -DATA_PATH="./data" diff --git a/apps/changedetectionio/0.50/data.yml b/apps/changedetectionio/0.50/data.yml deleted file mode 100644 index a3ab2461..00000000 --- a/apps/changedetectionio/0.50/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40097 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/changedetectionio/0.50/docker-compose.yml b/apps/changedetectionio/0.50/docker-compose.yml deleted file mode 100644 index 34caacce..00000000 --- a/apps/changedetectionio/0.50/docker-compose.yml +++ /dev/null @@ -1,17 +0,0 @@ -services: - changedetection: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:5000" - volumes: - - "${DATA_PATH}:/datastore" - image: dgtlmoon/changedetection.io:0.50 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/changedetectionio/README.md b/apps/changedetectionio/README.md deleted file mode 100644 index ea93e742..00000000 --- a/apps/changedetectionio/README.md +++ /dev/null @@ -1,260 +0,0 @@ -## Web Site Change Detection, Restock monitoring and notifications. - -**_Detect website content changes and perform meaningful actions - trigger notifications via Discord, Email, Slack, Telegram, API calls and many more._** - -_Live your data-life pro-actively._ - - -[Self-hosted web page change monitoring](https://changedetection.io?src=github) - -[![Release Version][release-shield]][release-link] [![Docker Pulls][docker-pulls]][docker-link] [![License][license-shield]](https://github.com/dgtlmoon/changedetection.io/blob/master/LICENSE.md) - -![changedetection.io](https://github.com/dgtlmoon/changedetection.io/actions/workflows/test-only.yml/badge.svg?branch=master) - -[**Don't have time? Let us host it for you! try our $8.99/month subscription - use our proxies and support!**](https://changedetection.io) , _half the price of other website change monitoring services!_ - -- Chrome browser included. -- Super fast, no registration needed setup. -- Get started watching and receiving website change notifications straight away. - - -### Target specific parts of the webpage using the Visual Selector tool. - -Available when connected to a playwright content fetcher (included as part of our subscription service) - -[Self-hosted web page change monitoring context difference ](https://changedetection.io?src=github) - -### Easily see what changed, examine by word, line, or individual character. - -[Self-hosted web page change monitoring context difference ](https://changedetection.io?src=github) - - -### Perform interactive browser steps - -Fill in text boxes, click buttons and more, setup your changedetection scenario. - -Using the **Browser Steps** configuration, add basic steps before performing change detection, such as logging into websites, adding a product to a cart, accept cookie logins, entering dates and refining searches. - -[Self-hosted web page change monitoring context difference ](https://changedetection.io?src=github) - -After **Browser Steps** have been run, then visit the **Visual Selector** tab to refine the content you're interested in. -Requires Playwright to be enabled. - - -### Example use cases - -- Products and services have a change in pricing -- _Out of stock notification_ and _Back In stock notification_ -- Monitor and track PDF file changes, know when a PDF file has text changes. -- Governmental department updates (changes are often only on their websites) -- New software releases, security advisories when you're not on their mailing list. -- Festivals with changes -- Discogs restock alerts and monitoring -- Realestate listing changes -- Know when your favourite whiskey is on sale, or other special deals are announced before anyone else -- COVID related news from government websites -- University/organisation news from their website -- Detect and monitor changes in JSON API responses -- JSON API monitoring and alerting -- Changes in legal and other documents -- Trigger API calls via notifications when text appears on a website -- Glue together APIs using the JSON filter and JSON notifications -- Create RSS feeds based on changes in web content -- Monitor HTML source code for unexpected changes, strengthen your PCI compliance -- You have a very sensitive list of URLs to watch and you do _not_ want to use the paid alternatives. (Remember, _you_ are the product) -- Get notified when certain keywords appear in Twitter search results -- Proactively search for jobs, get notified when companies update their careers page, search job portals for keywords. -- Get alerts when new job positions are open on Bamboo HR and other job platforms -- Website defacement monitoring -- Pokémon Card Restock Tracker / Pokémon TCG Tracker - -_Need an actual Chrome runner with Javascript support? We support fetching via WebDriver and Playwright!_ - -#### Key Features - -- Lots of trigger filters, such as "Trigger on text", "Remove text by selector", "Ignore text", "Extract text", also using regular-expressions! -- Target elements with xPath and CSS Selectors, Easily monitor complex JSON with JSONPath or jq -- Switch between fast non-JS and Chrome JS based "fetchers" -- Track changes in PDF files (Monitor text changed in the PDF, Also monitor PDF filesize and checksums) -- Easily specify how often a site should be checked -- Execute JS before extracting text (Good for logging in, see examples in the UI!) -- Override Request Headers, Specify `POST` or `GET` and other methods -- Use the "Visual Selector" to help target specific elements -- Configurable [proxy per watch](https://github.com/dgtlmoon/changedetection.io/wiki/Proxy-configuration) -- Send a screenshot with the notification when a change is detected in the web page - -We [recommend and use Bright Data](https://brightdata.grsm.io/n0r16zf7eivq) global proxy services, Bright Data will match any first deposit up to $100 using our signup link. - -Please :star: star :star: this project and help it grow! https://github.com/dgtlmoon/changedetection.io/ - -## Installation - -### Docker - -With Docker composer, just clone this repository and.. - -```bash -$ docker-compose up -d -``` - -Docker standalone -```bash -$ docker run -d --restart always -p "127.0.0.1:5000:5000" -v datastore-volume:/datastore --name changedetection.io dgtlmoon/changedetection.io -``` - -`:latest` tag is our latest stable release, `:dev` tag is our bleeding edge `master` branch. - -Alternative docker repository over at ghcr - [ghcr.io/dgtlmoon/changedetection.io](https://ghcr.io/dgtlmoon/changedetection.io) - -### Windows - -See the install instructions at the wiki https://github.com/dgtlmoon/changedetection.io/wiki/Microsoft-Windows - -### Python Pip - -Check out our pypi page https://pypi.org/project/changedetection.io/ - -```bash -$ pip3 install changedetection.io -$ changedetection.io -d /path/to/empty/data/dir -p 5000 -``` - -Then visit http://127.0.0.1:5000 , You should now be able to access the UI. - -_Now with per-site configurable support for using a fast built in HTTP fetcher or use a Chrome based fetcher for monitoring of JavaScript websites!_ - -## Updating changedetection.io - -### Docker -``` -docker pull dgtlmoon/changedetection.io -docker kill $(docker ps -a -f name=changedetection.io -q) -docker rm $(docker ps -a -f name=changedetection.io -q) -docker run -d --restart always -p "127.0.0.1:5000:5000" -v datastore-volume:/datastore --name changedetection.io dgtlmoon/changedetection.io -``` - -### docker-compose - -```bash -docker-compose pull && docker-compose up -d -``` - -See the wiki for more information https://github.com/dgtlmoon/changedetection.io/wiki - - -## Filters - -XPath, JSONPath, jq, and CSS support comes baked in! You can be as specific as you need, use XPath exported from various XPath element query creation tools. -(We support LXML `re:test`, `re:match` and `re:replace`.) - -## Notifications - -ChangeDetection.io supports a massive amount of notifications (including email, office365, custom APIs, etc) when a web-page has a change detected thanks to the apprise library. -Simply set one or more notification URL's in the _[edit]_ tab of that watch. - -Just some examples - - discord://webhook_id/webhook_token - flock://app_token/g:channel_id - gitter://token/room - gchat://workspace/key/token - msteams://TokenA/TokenB/TokenC/ - o365://TenantID:AccountEmail/ClientID/ClientSecret/TargetEmail - rocket://user:password@hostname/#Channel - mailto://user:pass@example.com?to=receivingAddress@example.com - json://someserver.com/custom-api - syslog:// - -And everything else in this list! - -Self-hosted web page change monitoring notifications - -Now you can also customise your notification content and use Jinja2 templating for their title and body! - -## JSON API Monitoring - -Detect changes and monitor data in JSON API's by using either JSONPath or jq to filter, parse, and restructure JSON as needed. - -![image](https://raw.githubusercontent.com/dgtlmoon/changedetection.io/master/docs/json-filter-field-example.png) - -This will re-parse the JSON and apply formatting to the text, making it super easy to monitor and detect changes in JSON API results - -![image](https://raw.githubusercontent.com/dgtlmoon/changedetection.io/master/docs/json-diff-example.png) - -### JSONPath or jq? - -For more complex parsing, filtering, and modifying of JSON data, jq is recommended due to the built-in operators and functions. Refer to the [documentation](https://stedolan.github.io/jq/manual/) for more specifc information on jq. - -One big advantage of `jq` is that you can use logic in your JSON filter, such as filters to only show items that have a value greater than/less than etc. - -See the wiki https://github.com/dgtlmoon/changedetection.io/wiki/JSON-Selector-Filter-help for more information and examples - -### Parse JSON embedded in HTML! - -When you enable a `json:` or `jq:` filter, you can even automatically extract and parse embedded JSON inside a HTML page! Amazingly handy for sites that build content based on JSON, such as many e-commerce websites. - -``` - -... - -``` - -`json:$..price` or `jq:..price` would give `3949.99`, or you can extract the whole structure (use a JSONpath test website to validate with) - -The application also supports notifying you that it can follow this information automatically - - -## Proxy Configuration - -See the wiki https://github.com/dgtlmoon/changedetection.io/wiki/Proxy-configuration , we also support using [BrightData proxy services where possible]( https://github.com/dgtlmoon/changedetection.io/wiki/Proxy-configuration#brightdata-proxy-support) - -## Raspberry Pi support? - -Raspberry Pi and linux/arm/v6 linux/arm/v7 arm64 devices are supported! See the wiki for [details](https://github.com/dgtlmoon/changedetection.io/wiki/Fetching-pages-with-WebDriver) - -## API Support - -Supports managing the website watch list [via our API](https://changedetection.io/docs/api_v1/index.html) - -## Support us - -Do you use changedetection.io to make money? does it save you time or money? Does it make your life easier? less stressful? Remember, we write this software when we should be doing actual paid work, we have to buy food and pay rent just like you. - - -Firstly, consider taking out a [change detection monthly subscription - unlimited checks and watches](https://changedetection.io?src=github) , even if you don't use it, you still get the warm fuzzy feeling of helping out the project. (And who knows, you might just use it!) - -Or directly donate an amount PayPal [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/donate/?hosted_button_id=7CP6HR9ZCNDYJ) - -Or BTC `1PLFN327GyUarpJd7nVe7Reqg9qHx5frNn` - -Support us! - -## Commercial Support - -I offer commercial support, this software is depended on by network security, aerospace , data-science and data-journalist professionals just to name a few, please reach out at dgtlmoon@gmail.com for any enquiries, I am more than glad to work with your organisation to further the possibilities of what can be done with changedetection.io - - -[release-shield]: https://img.shields.io:/github/v/release/dgtlmoon/changedetection.io?style=for-the-badge -[docker-pulls]: https://img.shields.io/docker/pulls/dgtlmoon/changedetection.io?style=for-the-badge -[test-shield]: https://github.com/dgtlmoon/changedetection.io/actions/workflows/test-only.yml/badge.svg?branch=master - -[license-shield]: https://img.shields.io/github/license/dgtlmoon/changedetection.io.svg?style=for-the-badge -[release-link]: https://github.com/dgtlmoon/changedetection.io/releases -[docker-link]: https://hub.docker.com/r/dgtlmoon/changedetection.io \ No newline at end of file diff --git a/apps/changedetectionio/data.yml b/apps/changedetectionio/data.yml deleted file mode 100644 index a50aa44e..00000000 --- a/apps/changedetectionio/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Changedetection.io -tags: - - 工具 -title: 网站更改检测、补货监控和通知。 -description: 网站更改检测、补货监控和通知。 -additionalProperties: - key: changedetectionio - name: Changedetection.io - tags: - - Tool - shortDescZh: 网站更改检测、补货监控和通知。 - shortDescEn: Web Site Change Detection, Restock monitoring and notifications - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://changedetection.io/ - github: https://github.com/dgtlmoon/changedetection.io - document: https://github.com/dgtlmoon/changedetection.io/wiki diff --git a/apps/changedetectionio/latest/.env.sample b/apps/changedetectionio/latest/.env.sample deleted file mode 100644 index db8393dc..00000000 --- a/apps/changedetectionio/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="changedetection" -PANEL_APP_PORT_HTTP="40097" -DATA_PATH="./data" diff --git a/apps/changedetectionio/latest/data.yml b/apps/changedetectionio/latest/data.yml deleted file mode 100644 index a3ab2461..00000000 --- a/apps/changedetectionio/latest/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40097 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/changedetectionio/latest/docker-compose.yml b/apps/changedetectionio/latest/docker-compose.yml deleted file mode 100644 index f5129f88..00000000 --- a/apps/changedetectionio/latest/docker-compose.yml +++ /dev/null @@ -1,17 +0,0 @@ -services: - changedetection: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:5000" - volumes: - - "${DATA_PATH}:/datastore" - image: dgtlmoon/changedetection.io:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/changedetectionio/logo.png b/apps/changedetectionio/logo.png deleted file mode 100644 index 8719f226b7bb20ce56a9c5a4b66829467cc7261f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4600 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 -预览 - -

ChatGPT Next Web

- -一键免费部署你的私人 ChatGPT 网页应用。 - -[演示 Demo](https://chat-gpt-next-web.vercel.app/) / [反馈 Issues](https://github.com/Yidadaa/ChatGPT-Next-Web/issues) / [加入 Discord](https://discord.gg/zrhvHCr79N) / [QQ 群](https://user-images.githubusercontent.com/16968934/228190818-7dd00845-e9b9-4363-97e5-44c507ac76da.jpeg) / [打赏开发者](https://user-images.githubusercontent.com/16968934/227772541-5bcd52d8-61b7-488c-a203-0330d8006e2b.jpg) / [Donate](#捐赠-donate-usdt) - -[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FYidadaa%2FChatGPT-Next-Web&env=OPENAI_API_KEY&env=CODE&project-name=chatgpt-next-web&repository-name=ChatGPT-Next-Web) - -[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yidadaa/ChatGPT-Next-Web) - -![主界面](https://github.com/Yidadaa/ChatGPT-Next-Web/raw/main/docs/images/cover.png) - - - -## 开始使用 - -1. 准备好你的 [OpenAI API Key](https://platform.openai.com/account/api-keys); -2. 点击右侧按钮开始部署: - [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FYidadaa%2FChatGPT-Next-Web&env=OPENAI_API_KEY&env=CODE&project-name=chatgpt-next-web&repository-name=ChatGPT-Next-Web),直接使用 Github 账号登录即可,记得在环境变量页填入 API Key 和[页面访问密码](#配置页面访问密码) CODE; -3. 部署完毕后,即可开始使用; -4. (可选)[绑定自定义域名](https://vercel.com/docs/concepts/projects/domains/add-a-domain):Vercel 分配的域名 DNS 在某些区域被污染了,绑定自定义域名即可直连。 - -## 保持更新 - -如果你按照上述步骤一键部署了自己的项目,可能会发现总是提示“存在更新”的问题,这是由于 Vercel 会默认为你创建一个新项目而不是 fork 本项目,这会导致无法正确地检测更新。 -推荐你按照下列步骤重新部署: - -- 删除掉原先的仓库; -- 使用页面右上角的 fork 按钮,fork 本项目; -- 在 Vercel 重新选择并部署,[请查看详细教程](https://github.com/Yidadaa/ChatGPT-Next-Web/raw/main/docs/vercel-cn.md#如何新建项目)。 - -### 打开自动更新 - -> 如果你遇到了 Upstream Sync 执行错误,请手动 Sync Fork 一次! - -当你 fork 项目之后,由于 Github 的限制,需要手动去你 fork 后的项目的 Actions 页面启用 Workflows,并启用 Upstream Sync Action,启用之后即可开启每小时定时自动更新: - -![自动更新](https://github.com/Yidadaa/ChatGPT-Next-Web/raw/main/docs/images/enable-actions.jpg) - -![启用自动更新](https://github.com/Yidadaa/ChatGPT-Next-Web/raw/main/docs/images/enable-actions-sync.jpg) - -### 手动更新代码 - -如果你想让手动立即更新,可以查看 [Github 的文档](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork) 了解如何让 fork 的项目与上游代码同步。 - -你可以 star/watch 本项目或者 follow 作者来及时获得新功能更新通知。 - -## 配置页面访问密码 - -> 配置密码后,用户需要在设置页手动填写访问码才可以正常聊天,否则会通过消息提示未授权状态。 - -> **警告**:请务必将密码的位数设置得足够长,最好 7 位以上,否则[会被爆破](https://github.com/Yidadaa/ChatGPT-Next-Web/issues/518)。 - -本项目提供有限的权限控制功能,请在 Vercel 项目控制面板的环境变量页增加名为 `CODE` 的环境变量,值为用英文逗号分隔的自定义密码: - -``` -code1,code2,code3 -``` - -增加或修改该环境变量后,请**重新部署**项目使改动生效。 - -## 环境变量 - -> 本项目大多数配置项都通过环境变量来设置,教程:[如何修改 Vercel 环境变量](https://github.com/Yidadaa/ChatGPT-Next-Web/raw/main/docs/vercel-cn.md)。 - -### `OPENAI_API_KEY` (必填项) - -OpanAI 密钥,你在 openai 账户页面申请的 api key。 - -### `CODE` (可选) - -访问密码,可选,可以使用逗号隔开多个密码。 - -**警告**:如果不填写此项,则任何人都可以直接使用你部署后的网站,可能会导致你的 token 被急速消耗完毕,建议填写此选项。 - -### `BASE_URL` (可选) - -> Default: `https://api.openai.com` - -> Examples: `http://your-openai-proxy.com` - -OpenAI 接口代理 URL,如果你手动配置了 openai 接口代理,请填写此选项。 - -> 如果遇到 ssl 证书问题,请将 `BASE_URL` 的协议设置为 http。 - -### `OPENAI_ORG_ID` (可选) - -指定 OpenAI 中的组织 ID。 - -### `HIDE_USER_API_KEY` (可选) - -如果你不想让用户自行填入 API Key,将此环境变量设置为 1 即可。 - -### `DISABLE_GPT4` (可选) - -如果你不想让用户使用 GPT-4,将此环境变量设置为 1 即可。 - -### `HIDE_BALANCE_QUERY` (可选) - -如果你不想让用户查询余额,将此环境变量设置为 1 即可。 - -## 开发 - -点击下方按钮,开始二次开发: - -[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Yidadaa/ChatGPT-Next-Web) - -在开始写代码之前,需要在项目根目录新建一个 `.env.local` 文件,里面填入环境变量: - -``` -OPENAI_API_KEY= - -# 中国大陆用户,可以使用本项目自带的代理进行开发,你也可以自由选择其他代理地址 -BASE_URL=https://chatgpt1.nextweb.fun/api/proxy -``` - -### 本地开发 - -1. 安装 nodejs 18 和 yarn,具体细节请询问 ChatGPT; -2. 执行 `yarn install && yarn dev` 即可。⚠️ 注意:此命令仅用于本地开发,不要用于部署! -3. 如果你想本地部署,请使用 `yarn install && yarn build && yarn start` 命令,你可以配合 pm2 来守护进程,防止被杀死,详情询问 ChatGPT。 - -## 部署 - -### 容器部署 (推荐) - -> Docker 版本需要在 20 及其以上,否则会提示找不到镜像。 - -> ⚠️ 注意:docker 版本在大多数时间都会落后最新的版本 1 到 2 天,所以部署后会持续出现“存在更新”的提示,属于正常现象。 - -```shell -docker pull yidadaa/chatgpt-next-web - -docker run -d -p 3000:3000 \ - -e OPENAI_API_KEY="sk-xxxx" \ - -e CODE="页面访问密码" \ - yidadaa/chatgpt-next-web -``` - -你也可以指定 proxy: - -```shell -docker run -d -p 3000:3000 \ - -e OPENAI_API_KEY="sk-xxxx" \ - -e CODE="页面访问密码" \ - --net=host \ - -e PROXY_URL="http://127.0.0.1:7890" \ - yidadaa/chatgpt-next-web -``` - -如果你的本地代理需要账号密码,可以使用: - -```shell --e PROXY_URL="http://127.0.0.1:7890 user password" -``` - -如果你需要指定其他环境变量,请自行在上述命令中增加 `-e 环境变量=环境变量值` 来指定。 - -### 本地部署 - -在控制台运行下方命令: - -```shell -bash <(curl -s https://raw.githubusercontent.com/Yidadaa/ChatGPT-Next-Web/main/scripts/setup.sh) -``` - -⚠️ 注意:如果你安装过程中遇到了问题,请使用 docker 部署。 - -## 鸣谢 - -### 捐赠者 - -> 见英文版。 - -### 贡献者 - -[见项目贡献者列表](https://github.com/Yidadaa/ChatGPT-Next-Web/graphs/contributors) - -## 开源协议 - -> 反对 996,从我开始。 - -[Anti 996 License](https://github.com/kattgu7/Anti-996-License/blob/master/LICENSE_CN_EN) diff --git a/apps/chatgpt-next-web/data.yml b/apps/chatgpt-next-web/data.yml deleted file mode 100644 index 197f9794..00000000 --- a/apps/chatgpt-next-web/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: ChatGPT-Next-Web -tags: - - AI / 大模型 -title: 一键免费部署你的跨平台私人 ChatGPT 应用 -description: 一键免费部署你的跨平台私人 ChatGPT 应用 -additionalProperties: - key: chatgpt-next-web - name: ChatGPT-Next-Web - tags: - - AI - shortDescZh: 一键免费部署你的跨平台私人 ChatGPT 应用 - shortDescEn: One-Click to get well-designed cross-platform ChatGPT web UI - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://github.com/Yidadaa/ChatGPT-Next-Web - github: https://github.com/Yidadaa/ChatGPT-Next-Web - document: https://github.com/Yidadaa/ChatGPT-Next-Web diff --git a/apps/chatgpt-next-web/latest/.env.sample b/apps/chatgpt-next-web/latest/.env.sample deleted file mode 100644 index ecff0a25..00000000 --- a/apps/chatgpt-next-web/latest/.env.sample +++ /dev/null @@ -1,6 +0,0 @@ -CONTAINER_NAME="chatgpt-next-web" -API_BASE_URL="https://api.openai.com" -API_KEY="sk-xxx" -PANEL_APP_PORT_HTTP="40042" -PROXY="" -SECRET_KEY="chatgptnextweb_password" diff --git a/apps/chatgpt-next-web/latest/data.yml b/apps/chatgpt-next-web/latest/data.yml deleted file mode 100644 index aaf4c90a..00000000 --- a/apps/chatgpt-next-web/latest/data.yml +++ /dev/null @@ -1,40 +0,0 @@ -additionalProperties: - formFields: - - default: 40042 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "sk-xxx" - edit: true - envKey: API_KEY - labelEn: OPENAI API KEY - labelZh: OPENAI API KEY - required: true - type: text - - default: "chatgptnextweb" - edit: true - envKey: SECRET_KEY - labelEn: Access rights key, optional (recommended) - labelZh: 访问权限密钥,可选(强烈建议填写) - random: true - required: false - rule: paramComplexity - type: password - - default: "" - edit: true - envKey: PROXY - labelEn: Proxy (example:http://127.0.0.1:7890 user password) - labelZh: 代理地址(例子:http://127.0.0.1:7890 user password) - required: false - type: text - - default: "https://api.openai.com" - edit: true - envKey: API_BASE_URL - labelEn: API interface address - labelZh: API接口地址 - required: true - type: text diff --git a/apps/chatgpt-next-web/latest/docker-compose.yml b/apps/chatgpt-next-web/latest/docker-compose.yml deleted file mode 100644 index c3c62a9a..00000000 --- a/apps/chatgpt-next-web/latest/docker-compose.yml +++ /dev/null @@ -1,20 +0,0 @@ -services: - chatgpt-next-web: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:3000" - environment: - - "OPENAI_API_KEY=${API_KEY}" - - "CODE=${SECRET_KEY}" - - "PROXY_URL=${PROXY}" - - "BASE_URL=${API_BASE_URL}" - image: yidadaa/chatgpt-next-web:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/chatgpt-next-web/logo.png b/apps/chatgpt-next-web/logo.png deleted file mode 100644 index 800649def777f7bba3742028234fa6932de2bc95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2283 zcmVF(Y0`seun=lK8U`2Xkl{~wf$M5dvy+}|*r zmRqu~lFrU`zrDfH)`S2600(qZPE!Cw{`(`cej$#9xBvhMQAtEWRA}DCTfJ`-M-<1B z6WTcI`sdH;o5uag;H3X@L8dFPq;Tu3?`BaRdQI!rnq@%JvsUnPac zx89H)u-{DzkBgQS42wg@#x^I$MoFWEAZKzL{=ZULxUNmwqU9p=GJu0tP`u_MYdxJ`VvG1_i z)PgA)sehqh(R2FoFX-VPjI{1o?6IQ}j!JnoK!}agy8ZgodPumT{n|~0*qH7ePYwG_ zBlN1SxwDA&!5$Mop+I$&&@-XF)T9af3HWWPw0q7oN($($$96EiLtjQ|%ROUz>P}Ls9 z(tC*v&2y$~QMV=S-E@JD^0$|uYk|snPQ+HeC^qPHj+Ib`76{D}SLQzbAVmP^)E@sN zGV~oN?B;JW&V9=W9p#gjpy$A_n@QCK$UYr(RcetN zd@&c+ngeu;O+kmIDz&BtGe_u{;DeGZj1ZBo7)I^o~dirnAiy+F{lc zdKUagL*}&TDVS&q%qU%X4L}R@Zb2C(=#5P~bVJlv`dgbW8nS7JzOf~y zJy8RQ>F&xWL(j?dehkQ}2Hh{~^(qD}(|ZEQC^hIY9%aUJ`hw6Iz3V)qY`Vlo;rnf0 zfuX5d-{Gr2XMv7*M5oX0(-(nGHw)9;*w<}&$d(`o%apzt^cd&GHJu_l^pddYrn|@5 zfE^l0`*i3DannteziNjD@&zPQt*J_HgD#6ZV>G{RNxS|mk+DIGiity?mJi^lYp9~C zLMOV<0MKP6Ng7mlqk{y1ZfM$v?!bgSbBX8ytRVE1qQ*JBMdKHQo|HF1a`u~1rkJg> zGg^HU%2OO2I&xx2>a@_-dH-{MxKohVbfcu4E>jDyrl%Lx<$~TQo`wj?hL8j|0hbwb z(Gcp64efAcke@08&?jA#kIL$!E$v9C#9jn|cGBxCU*MY{`9NwB){uEUTY#YF(-6is zL4lZ&uEFx;6dM^dD+-8PQ2K8jdfX+VbLixZK<`-Gj_S}YAn8MG&9mFozPClYYtRw2 zQNo~~N#}bT0}@*_=+jO)pOp47zm_?!LerX4-~heEGnc3Zd8P_|2HbIA8ZxcbrDQ!3 zp`&@C=T0#6xHyOWyt9VQ>g4LzIz;XNZk3Kvhdz)g4VK5S82TI5%XCqT*PGy(R3dYL2lrVy*Z zUO)Owl(jnlo}SO*rcO-l5NdbA2H;fz ziacU$#Zh`Hn!48;>_MAx4rBj)Lb8cOk7a@hufRQ1(?a>Vh`k;vFH{K=Blpa0KA-PC zxcA`o3Z4FXKJTpQ>}Fyih)YXmrcIR>?XMnvY3i`xYVFpt8!@Xd+++VVO?uR==MHhs zS=0BgcF;N5GW#aHingXZIpkWql2|x*X%*D=q-vWL=8KNT-p3Z_ec$}us~z@U=e=wD zw6k@7UhKHp`1q@~Rqnp9eLXJJ68veO!!)kEoyJ{{?ZzIPqm@!C@tE^FcU*Zf^E^La7O=XE}hmk@nko%DI()8{o+ zpO - -Cloud Database Manager - Community Edition. -CloudBeaver is a web server which provides rich web interface. Server itself is a Java application, web part is written on TypeScript and React. -It is free to use and open-source (licensed under [Apache 2](https://github.com/dbeaver/cloudbeaver/blob/devel/LICENSE) license). -See out [WIKI](https://github.com/dbeaver/cloudbeaver/wiki) for more details. - -![](https://github.com/dbeaver/cloudbeaver/wiki/images/demo_screenshot_1.png) - -## Run in Docker - -- [Official Docker repository](https://hub.docker.com/r/dbeaver/cloudbeaver) -- [Running instructions](https://github.com/dbeaver/cloudbeaver/wiki/Run-Docker-Container) - -## Demo server - -You can see live demo of CloudBeaver here: https://demo.cloudbeaver.io - -[Database access instructions](https://github.com/dbeaver/cloudbeaver/wiki/Demo-Server) - -## Changelog - -### CloudBeaver 23.1.3 - 2023-07-24 - -- Users can simultaneously edit resources, allowing them to work together; -- We have improved the UX in the search bar - users can delete a query or request by clicking on the cross icon; -- The search request considers file names and exclude the .sql file extension for now; -- Different bug fixes and enhancements have been made. - -### CloudBeaver 23.1.2 - 2023-07-10 - -- We have improved the SQL Editor functionality by adding support for displaying tables with nested arrays of objects; -- The ability to compress files during export allows for faster download speeds, particularly for larger files; -- New Settings panel displays the product configuration settings such as Minimum fetch size, Maximum fetch size, and Default fetch size from the Data Editor; -- Different bug fixes and enhancements have been made. - -### CloudBeaver 23.1.1 - 2023-06-26 - -- Connections are consistently displayed now when they are pre-configured into the workspace in the Global Configuration json file. -- Different bug fixes and enhancements have been made. - -### CloudBeaver 23.1.0 - 2023-06-05 - -Changes since 23.0.0 - -- Data viewer: - - New grouping panel menu was added in the Data Viewer. This panel extracts unique values from the database column for count. Users can drag and drop the column to the grouping panel and get the results immediately. Sorting, filtering and exporting of the results are available on the Grouping panel. -- SQL Editor: - - We improved the performance of the SQL-editor - as a result, handling scripts with up to 10 000 lines does not present any challenges; - - In the SQL-editor, pressing Tab/Space followed by Enter now causes the cursor to move to a new line; - - In the SQL editor, when the cursor goes back on the query, the previous hints are displayed; - - Error when running SQL with semicolon has been fixed. -- Connections: - - If there is an error in saving the data, the tab for the chosen connection dialog will stay open to allow corrections; - - The URL-configuration for PostgreSQL now correctly displays only a single database. -- Driver management: - - The CE version now offers the updated sqlite-jdbc driver, version 3.41.2; - - CloudBeaver has the option to connect to H2 database version 2; - - The internal CloudBeaver database is upgraded to the newest H2 version 2 to avoid vulnerability issues. The database will be safely upgraded automatically for the servers with default configurations. You can perform this upgrade manually if you have a custom configuration for this database in your infrastructure. -- Connections: - - Option to increase the maximum size of text files displayed in the value panel (using the sqlTextPreviewMaxLength parameter) has been added; - - Support for custom logging configuration has been added. An external configuration file can be used instead of the default configuration. - - -### Old CloudBeaver releases - -You can find information about earlier releases on the CloudBeaver wiki https://github.com/dbeaver/cloudbeaver/wiki/Releases. - diff --git a/apps/cloudbeaver/data.yml b/apps/cloudbeaver/data.yml deleted file mode 100644 index f98db4ab..00000000 --- a/apps/cloudbeaver/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: CloudBeaver -tags: - - 工具 -title: 云数据库管理器 -description: 云数据库管理器 -additionalProperties: - key: cloudbeaver - name: CloudBeaver - tags: - - Tool - shortDescZh: 云数据库管理器 - shortDescEn: Cloud Database Manager - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://dbeaver.com/ - github: https://github.com/dbeaver/cloudbeaver - document: https://dbeaver.com/docs/cloudbeaver/ diff --git a/apps/cloudbeaver/latest/.env.sample b/apps/cloudbeaver/latest/.env.sample deleted file mode 100644 index dd21cf85..00000000 --- a/apps/cloudbeaver/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="cloudbeaver" -PANEL_APP_PORT_HTTP="40083" -DATA_PATH="./data" diff --git a/apps/cloudbeaver/latest/data.yml b/apps/cloudbeaver/latest/data.yml deleted file mode 100644 index c1eb36eb..00000000 --- a/apps/cloudbeaver/latest/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40083 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: HTTP Port - labelZh: HTTP端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/cloudbeaver/latest/docker-compose.yml b/apps/cloudbeaver/latest/docker-compose.yml deleted file mode 100644 index 684c01ac..00000000 --- a/apps/cloudbeaver/latest/docker-compose.yml +++ /dev/null @@ -1,18 +0,0 @@ -services: - cloudbeaver: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8978" - volumes: - - "${DATA_PATH}:/opt/cloudbeaver/workspace" - tty: true - image: dbeaver/cloudbeaver:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/cloudbeaver/logo.png b/apps/cloudbeaver/logo.png deleted file mode 100644 index 34fc5ffa60ef7f002952d8126909e4989874fcef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1606 zcmV-M2D$l(P)^~ye`E1!4i+{n&Eh(*9ZJl#gv;Izh zx@Jpm;ZvW`eB!e;>wM{+-Pn_lxKGwh`poHUK{5Hcsx8^syf{y)U!MPn7|fP@^$k;0 zq_mBP4aMe%iuOz1?zUYj?;9Uv^W%JG>a)v|$4uQVO|-GKCO$;|aSmb&Ur|bK*A#L} z&D-SXB#kPTKNqapz04qsd39$;G(Ri$z3Gx``S9haaP$I2>4)91?A z=HbTtM@6%IMC$iFgFB7P7uwpG_Q>8;2A9HY&qJOu#%DS_F3)9h|4&6v6RR%YwKExO z)Fwuq)tOkWSsG2+eYB(%qjs;Vjx~m()c#EL#h9LC5AWvYd`o8H+4(5z-mVpLJ*8Kd zPrW0i@0YIg|Dx&7@V02bX9}}fmBxE763u8|h%SQ5n7=IA=E=f}rK?kO9ae(+(8~i4_8LyhvBT|t7H~BEY)1gG~26` zA%$1&5A9Mk^udAL9&}6A=(Fg(L0N0Q;KgsOM0FvdExzWCqU-yXNrsqI$}%Jta(c67 znwwE`7_pLc$;W&dzYN$lFIL+f=2>*LT__R_E48wM1%G5+CYgwYkiAsRqI=eH;g4R` z(u943vrpV@4o6R}a#I2RvQ*=S; z#(XC_1m{^aZz$TmxR5fEJJC(IJ!kWYnh$4Qi3=|QAJ1{f6+<6gU@a2brlndnNs4w| z-h3z8h?9ITx)#xfJ%L4=zVCS%*t_TOagm97A95S?BzoLZ-9F*HOT$%}E#tf|dMeAZ zW>cHQ(l*BAEg1RAmOWbfmFRXadR^{UPsylI+v7&k|5h{yA}j5c`1kM#!&P+8i@?c) zmDa;BrJ}n-;JKt6Q?bih7yQ0^Zt$|@x1u@av8vu|u43Gs1=cLua0Cs5(O{RCz zO`Zl~)rD?pFW`-DXg6bX|GdRni8jfvHU}rDwo*(z_4Afx_3^b~@}Ab?ZJ(aZS#&7b{jM|- z&GFW5?Vd|*8R+;Df7-A37p-Z0f>>PCD%#1Hz0MwYNg0WyufeBHsP2<`X=%#2WKH^B zTP5B?}d*(tkXjiPFTW7l{x^Q-kW&A>AWQckCQPP1E z(YI2Hi;-23rip!;ru$Sh@2=>_xW7qW5!fZ=m^*B<@5|lxY+Y=tQ$KzX_N-FXOH3FDSF+TCiTOO2h~g07J=4xOZpNuhHL1dD%mi!akrcE zqpkC!yn~R_+16tQrycHVp60r@4rM&2o8VHVdrB*9 Access -> Tunnels 创建您的第一个隧道。在那里,您将获得一个单行命令,用于启动和运行您的 cloudflared docker 容器,并进行身份验证到您的 Cloudflare 账户。 - -4. **用途** - 您可以使用 cloudflared 来暴露以下内容: - - 通过公共 DNS 主机名公开的私有基于 HTTP 的服务,可选择由 Cloudflare Access 锁定(请参阅 [https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/) 和 [https://developers.cloudflare.com/cloudflare-one/applications/configure-apps/self-hosted-apps/](https://developers.cloudflare.com/cloudflare-one/applications/configure-apps/self-hosted-apps/)) - - 由 WARP 注册用户访问的私有网络,使用零信任方法访问 TCP/UDP IP/端口,以摆脱您的传统 VPN(请参阅 [https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/private-net/](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/private-net/)) diff --git a/apps/cloudflared/data.yml b/apps/cloudflared/data.yml deleted file mode 100644 index 7046b5f4..00000000 --- a/apps/cloudflared/data.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: cloudflared -tags: - - 实用工具 -title: Cloudflare Tunnel 客户端 -description: Cloudflare Tunnel 客户端 -additionalProperties: - key: cloudflared - name: cloudflared - tags: - - Tool - shortDescZh: Cloudflare Tunnel 客户端 - shortDescEn: Client for Cloudflare Tunnel - type: tool - crossVersionUpdate: true - limit: 0 - website: https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/ - github: https://github.com/cloudflare/cloudflared - document: https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/ diff --git a/apps/cloudflared/latest/.env.sample b/apps/cloudflared/latest/.env.sample deleted file mode 100644 index 83277690..00000000 --- a/apps/cloudflared/latest/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="cloudflared" -CFD_TOKEN="xxxxx" diff --git a/apps/cloudflared/latest/data.yml b/apps/cloudflared/latest/data.yml deleted file mode 100644 index f73a4e58..00000000 --- a/apps/cloudflared/latest/data.yml +++ /dev/null @@ -1,9 +0,0 @@ -additionalProperties: - formFields: - - default: '' - edit: true - envKey: CFD_TOKEN - labelEn: Token - labelZh: Token - required: true - type: text diff --git a/apps/cloudflared/latest/docker-compose.yml b/apps/cloudflared/latest/docker-compose.yml deleted file mode 100644 index bb3b07e9..00000000 --- a/apps/cloudflared/latest/docker-compose.yml +++ /dev/null @@ -1,14 +0,0 @@ -services: - cloudflared: - image: cloudflare/cloudflared:latest - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - command: tunnel --no-autoupdate run --token ${CFD_TOKEN} - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/cloudflared/logo.png b/apps/cloudflared/logo.png deleted file mode 100644 index fb2d4e88d98ee6ae59b2011d008e758c02004f2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3026 zcmai0i8s_=8~={%YZ0c1M3SUPNGRclu|(MtszFS)L<&I`b9U2;{tgK{{D=-)g zt@CkgY%HrkjNKg=5D>6Yb&U^C4^LK`2fNjIqtubvV#jQ;v9`9RVvMOtlK;zxi2(7% zPL)1CA66u=!{cq{YJ)(aj~_pBvHMvF5U163dU~3f2x27wtQdfwiI+8+U z&B0(W=cSyitSmhN#7P8JS63+%%J}#=fk0?)Z_mljiH?r;@$s>992$+bO`T@0|DX}^&!0a>p-{=m$w^5`{HKJ$ zVAKL5UiE2uo*t`QYa>NnRaI3=N{U+~DJ(3^;rEcm;%rknD`TwXLDu4jzP`TJ*4D< z_3t=)?mdH4MDNdF3?Tvo1L-xMmo8n}#Ja4NJ8fbijCU89ReF4HtEi|j(7kA?rL|3?dkaKg|Npvfj;Fm>@=#?>N1{k~?ozOj^73volge0=ji1qjOIC)lR-SsG@%I#V{Op<(0a z0DTh_29tl2v;(x1O2}uV-z7CD2U{4OTq&%fJXX%hz}uL*9JwG! z{;;t%BZ0#FB+&5>iY=yYM`i|mgiwOmaT231SDJUJ#WfHKe$hQIy}^#y19i^EvHgu} zRth;1f#g!P>^cITqGjodG_Uuvhch)E{JWvn>ls`j?4Q50>N|Y40 z;u!sWR=j^+eYNHf1xh$jf0~AJ+6szQ|M_jHmt7tgyAy!!I7OoDLqy%Nxi_$SL;7%p z*Q=hCKMK$MY}F$Tro$-EvBSA9A9anYSnkg+omkOH#Lg}6OfCkWy3wo|UJrw)H{^RZ zUDuneJg#tg}sPl0FLl&Re~5^}^^L*l^FG z{K7n{5#~mIf-azYEiZ$W~S>LPd*H zgZA=AN#a%R^Lw0RKpvo30!_rp|pM9eql= zY49ySB{U7zKp9$+wFK*h1`5iQKy*TLzU>b!brrM@sqNd9nS40+zFM;9bRkc5v2ZHK zLH|DbEoF#T95>Q3v$JLvsB#l}d?#XJFYK6o$L>!mMVOu6QgPtM(C>}XEwP*bE_sw5 z)7CC3{(d~osJO%U4+VE3Z?UuRG$QvGVM{M}y6xdDY{udg{HxXA1?R+aoHG^H}h420OgJ-49Rp+IR>pOcTQPQDZFclY9i zOsy}WJLU|4_O_y^poeHWY7(;M8<>14c7@6SWU5C^G`w;2*-6NWDLoi0iYT{env{L5 zV&s*ER9Y3iD8%~-;pBszqsDRbW1@39SH_Pt5?_RoRpbw}Rl^iJ&09|&6)++VF!Q-^ z|EMVCGa_ZW=ME?)lwI@cci&&HUTS?de8INLcKur4Fqfrh?Xu3ZpJ${T^APB879b&c zz9s?@lukrWG}d8yZJ&&CS!HGFK`^J+`|>L{Y^v+@5g*6P$K!vM-|{M`G+9IVx4SHO z+Q;9}tNhTi8`3a*Q!WteguL8Hc@}c#!fHD4RxKjU?ss-Tour>#`V{V%5VTqX9N$qUo9477Fr~qG#^^(4d)`Yrgv-^$`B_V5Z$U+5FeS$%D?YV0@3= z0pbThOXS(VN9J-R}JnpZsbP%b1sV2qLEz|!wp#N+;S+iioZ|_!Kpf@I? zYQ_?`;HK~uyqw|kKq z>2WJ^rN|)-(h^k_Dc}2)CFbo>ZSt9XJSrnC-r)Lh@M`4e+E3b8rOMZ;C0f^7z-7ok zDnimnM$8mw=fiy=Td zWj7{8V4p<}M+bd6d)FU!R?>L&*AL9ewE+b84*bxwknWQ7l@7(|U`LTBgAu(35kLD< yHM8uJB -
- -
- Cloudreve -
- - -

支持多家云存储驱动的公有云文件系统.

- -

- - GitHub Test Workflow - - - - - - - - - - - -

-

- 主页 • - 演示站 • - 讨论社区 • - 文档 • - 下载 • - Telegram 群组 • - 许可证 -

- - -![Screenshot](https://raw.githubusercontent.com/cloudreve/docs/master/images/homepage.png) - -## :sparkles: 特性 - -* :cloud: 支持本机、从机、七牛、阿里云 OSS、腾讯云 COS、又拍云、OneDrive (包括世纪互联版) 、S3兼容协议 作为存储端 -* :outbox_tray: 上传/下载 支持客户端直传,支持下载限速 -* 💾 可对接 Aria2 离线下载,可使用多个从机节点分担下载任务 -* 📚 在线 压缩/解压缩、多文件打包下载 -* 💻 覆盖全部存储策略的 WebDAV 协议支持 -* :zap: 拖拽上传、目录上传、流式上传处理 -* :card_file_box: 文件拖拽管理 -* :family_woman_girl_boy: 多用户、用户组、多存储策略 -* :link: 创建文件、目录的分享链接,可设定自动过期 -* :eye_speech_bubble: 视频、图像、音频、 ePub 在线预览,文本、Office 文档在线编辑 -* :art: 自定义配色、黑暗模式、PWA 应用、全站单页应用、国际化支持 -* :rocket: All-In-One 打包,开箱即用 -* 🌈 ... ... - -## :hammer_and_wrench: 部署 - -下载适用于您目标机器操作系统、CPU架构的主程序,直接运行即可。 - -```shell -# 解压程序包 -tar -zxvf cloudreve_VERSION_OS_ARCH.tar.gz - -# 赋予执行权限 -chmod +x ./cloudreve - -# 启动 Cloudreve -./cloudreve -``` - -以上为最简单的部署示例,您可以参考 [文档 - 起步](https://docs.cloudreve.org/) 进行更为完善的部署。 - -## :gear: 构建 - -自行构建前需要拥有 `Go >= 1.18`、`node.js`、`yarn`、`zip`, [goreleaser](https://goreleaser.com/intro/) 等必要依赖。 - -#### 安装 goreleaser - -```shell -go install github.com/goreleaser/goreleaser@latest -``` - -#### 克隆代码 - -```shell -git clone --recurse-submodules https://github.com/cloudreve/Cloudreve.git -``` - -#### 编译项目 - -```shell -goreleaser build --clean --single-target --snapshot -``` - -## :alembic: 技术栈 - -* [Go](https://golang.org/) + [Gin](https://github.com/gin-gonic/gin) -* [React](https://github.com/facebook/react) + [Redux](https://github.com/reduxjs/redux) + [Material-UI](https://github.com/mui-org/material-ui) - -## :scroll: 许可证 - -GPL V3 diff --git a/apps/cloudreve/data.yml b/apps/cloudreve/data.yml deleted file mode 100644 index 87d85d66..00000000 --- a/apps/cloudreve/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Cloudreve -tags: - - 工具 -title: 支持多家云存储的云盘系统 -description: 支持多家云存储的云盘系统 -additionalProperties: - key: cloudreve - name: Cloudreve - tags: - - Tool - shortDescZh: 支持多家云存储的云盘系统 - shortDescEn: A cloud disk system that supports multiple cloud storage - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://cloudreve.org/ - github: https://github.com/cloudreve/Cloudreve - document: https://docs.cloudreve.org/ diff --git a/apps/cloudreve/latest/.env.sample b/apps/cloudreve/latest/.env.sample deleted file mode 100644 index b3b1122f..00000000 --- a/apps/cloudreve/latest/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME="cloudreve" -PANEL_APP_PORT_HTTP="40033" -UPLOAD_PATH="./data/uploads" -TMP_PATH="./data/data" \ No newline at end of file diff --git a/apps/cloudreve/latest/data.yml b/apps/cloudreve/latest/data.yml deleted file mode 100644 index bf1b29f6..00000000 --- a/apps/cloudreve/latest/data.yml +++ /dev/null @@ -1,24 +0,0 @@ -additionalProperties: - formFields: - - default: 40033 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data/uploads - edit: true - envKey: UPLOAD_PATH - labelEn: The upload file save path - labelZh: 上传文件保存路径 - required: true - type: text - - default: ./data/data - edit: true - envKey: TMP_PATH - labelEn: Temp folder path - labelZh: 临时文件夹路径 - required: true - type: text diff --git a/apps/cloudreve/latest/data/cloudreve.db b/apps/cloudreve/latest/data/cloudreve.db deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/cloudreve/latest/data/conf.ini b/apps/cloudreve/latest/data/conf.ini deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/cloudreve/latest/docker-compose.yml b/apps/cloudreve/latest/docker-compose.yml deleted file mode 100644 index 87b488a7..00000000 --- a/apps/cloudreve/latest/docker-compose.yml +++ /dev/null @@ -1,21 +0,0 @@ -services: - cloudreve: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:5212" - volumes: - - "${UPLOAD_PATH}:/cloudreve/uploads" - - "${TMP_PATH}:/data" - - "./data/conf.ini:/cloudreve/conf.ini" - - "./data/cloudreve.db:/cloudreve/cloudreve.db" - - "./data/avatar:/cloudreve/avatar" - image: cloudreve/cloudreve:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/cloudreve/logo.png b/apps/cloudreve/logo.png deleted file mode 100644 index b841b2117c7776c012214fa46be842b45968480b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2747 zcmV;s3PkmZP)_*)%45h_si+`lE?DP>G#g-_~7&U1grPU>G#X& z_si+`3S8E9tLn??_si+`D|6aSjp9_#`OE3|1#j*F!21AE&Hw-Z0NwurWa$E-ZE;s5{u6m(KfQvl-klgauF=>7h3SF8T^Avg5z``5#0p8x;};Ymb6 zRCwCeoojd6Fbsy9s{^?LfrKQ$|NobB0;Q!$vU~%k)3bfpTAsaoEjx}aeSJBLG_9L_ z9YsYP3nAL&OT=*zMeDq&)AZ}ZBCYFO!nSybxLD_Poqh~(vo1u-3Q69)A3SaHhzWex zJj$E&oy6;+H3=aFe-C$)n-PC==k?2xwOs)iJZfI*i*?aDi6Va;a@;zLc%A-l$X9Id z%&w7NfSr3lUZzWb-fjxfdJ0k0p3LkGdBOJKktS|EN9;Onr&0TYaGU=8%j{h2bltux zge$RY%{e=3vxm_8?x=pTHLi?d7$(0W4E4}mSR@y0;C6 zJ=3h2#1dHI?uR8-DB#rzWPF$Zim3$>!X7ftD7*jm@xiLok=$%!H+J=;P6hS|}gDQq<5v z)!mtmlE+a&jSk1ycvcCj>4&+)rk4F+3{6n44b71~Fr)J!q4cPNK8_eQo%c|4{LvYo z4+jfqTvWa2heoKMq(+`)w-XGF=jq`zTKfYr$lqLzY$zo#GYx$>_>#KdEJ?*iAKKzE;9+89 zEK%XLf7Ka46OREpQfJDnR|_qnCG_CgAF$MMtr~_IDm3x9Mf*d8ddw7A4<3fN&@}X* zyD_G*+=~>8e^O{FQIng!mQw$E7+AwXpF1OH?Tu5NHEK?}gA|(1d0PAGDDw(TAoq6~ zpgV%ir89)4U%T+A=N}MK{>b5dJ3?qh`oLFuTep$rXwmG2C z5izrn!%*oD#S2gs_V>$OXei$1mqvRS($C|H_W?@k`*>LGdH}6K6JEBxbcz^kq{gv- z58)j;DS`=4C@ihY)QYiq#U5#7#2-d`rL15M&ta-KRjQV)Zr)(~_K?RYT9AMV8b9eN<07=M?~S%guPKx!f{gL(uV;u!80pWTsxZ%XttqKTWd@ zVm{BDd_c1eVuZaq?Ez>3*+UDuV@s{=5s5r-q4kv3Fo>So5_t|k&^iWT%Y7r3=@Nu) zt)X?PrQ9_4>W;kMZ#;Qg%ho@7ufFe;j6c6Ez^8}95>0rv~`!v=(o9Vq?F)&uz2ob?GD8qk-n)7N^q-YGg=B{XAy z`nPOD=*4XT9m3Ovo-UViyRGIcaq~b9=X+--C)`^BLEAk9EOEYcRnqo;ZnTwc0}H&Rs$wFW8lZNd|Ze zp=r%?-ZX97ULEbplp0LaZ4K_J2i%;el=&8w%j6+!HXx_6?YR+}i47)?I7PO486$Dp zWIaF3ECOe|6nweG8Hsw#GW{7*Bb(}muP@G;%tq955{F-3n7t^vl)B6&)Sx?-7e&ym zrz|NaIz6|&ezdN}A^P%@JUDR+H=8&Eq->QX*K46H0O#s z_a&t%b5T?+S^cvHUkXWiO}fGej}d6*^&qIkRxvJP@Kxp5%kk+ zGXrm&U93}0=_+b7D8t`x^Mu>-Q_X)4RA{hgJwEOQ9mx9w9h+%Be`V4)+% zQRH&l_AifC{(qjkN_hbTzA7%NHy~e=cnJ&raOfL3ULW-DiY#PYDnc$Yyp1|w-L-|U zjEHwZ3)W3a|26&GgBpCuu>U9 zyftwsitWU2rACT}WSsVQb&O-0<+zNjf?Zp}@?)^a!o?vaVli`nIpy@~_8?D*on0)mg>s7r6s2F-K%OW^S8+ zHlDcyrNm5P>qY_WUL9f)93~I0z}zM__AME5jea>|CYR`O@Dnn{%)B~3#X<86-Ci!C z_!Y4h?sYBdq|Jy~*BsM^MveYP5t#DF*kKz zN7UAUh@ **Note** -> To manage code-server for a team on your infrastructure, see: [coder/coder](https://cdr.co/coder-github) - -We also have an in-depth [setup and -configuration](https://coder.com/docs/code-server/latest/guide) guide. - -## Questions? - -See answers to [frequently asked -questions](https://coder.com/docs/code-server/latest/FAQ). - -## Want to help? - -See [Contributing](https://coder.com/docs/code-server/latest/CONTRIBUTING) for -details. - -## Hiring - -Interested in [working at Coder](https://coder.com/careers)? Check out [our open -positions](https://coder.com/careers#openings)! - -## For Organizations - -Want remote development for your organization or enterprise? Visit [our -website](https://coder.com) to learn more about Coder. diff --git a/apps/code-server/data.yml b/apps/code-server/data.yml deleted file mode 100644 index e299b9bf..00000000 --- a/apps/code-server/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: code-server -tags: - - 开发工具 -title: 在任何地方的任何计算机上运行 VS Code 并在浏览器中访问它 -description: 在任何地方的任何计算机上运行 VS Code 并在浏览器中访问它 -additionalProperties: - key: code-server - name: code-server - tags: - - DevTool - shortDescZh: 在任何地方的任何计算机上运行 VS Code 并在浏览器中访问它 - shortDescEn: Run VS Code on any machine anywhere and access it in the browser - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://coder.com/ - github: https://github.com/coder/code-server - document: https://coder.com/docs/code-server/latest diff --git a/apps/code-server/latest/.env.sample b/apps/code-server/latest/.env.sample deleted file mode 100644 index 53ac6d36..00000000 --- a/apps/code-server/latest/.env.sample +++ /dev/null @@ -1,5 +0,0 @@ -CONTAINER_NAME="code-server" -PANEL_APP_PORT_HTTP="40031" -DATA_PATH="./data" -WEB_PASSWORD="web_passowrd" -SUDO_PASSWORD="sudo_password" \ No newline at end of file diff --git a/apps/code-server/latest/data.yml b/apps/code-server/latest/data.yml deleted file mode 100644 index b280718f..00000000 --- a/apps/code-server/latest/data.yml +++ /dev/null @@ -1,33 +0,0 @@ -additionalProperties: - formFields: - - default: 40031 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: code - envKey: WEB_PASSWORD - labelEn: Web access password - labelZh: 网页访问密码 - random: true - required: true - rule: paramComplexity - type: password - - default: code - envKey: SUDO_PASSWORD - labelEn: sudo password - labelZh: sudo密码 - random: true - required: true - rule: paramComplexity - type: password diff --git a/apps/code-server/latest/docker-compose.yml b/apps/code-server/latest/docker-compose.yml deleted file mode 100644 index 6bc89b30..00000000 --- a/apps/code-server/latest/docker-compose.yml +++ /dev/null @@ -1,24 +0,0 @@ -services: - code: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8443" - volumes: - - "${DATA_PATH}:/config" - environment: - - PUID=1000 - - PGID=1000 - - TZ=Asia/Shanghai - - PASSWORD=${WEB_PASSWORD} - - SUDO_PASSWORD=${SUDO_PASSWORD} - - DEFAULT_WORKSPACE=/config/workspace - image: linuxserver/code-server:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/code-server/logo.png b/apps/code-server/logo.png deleted file mode 100644 index 16bb3b2e4424596547e3fb0f586f1e550fce6c54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4492 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 JUae*u{y!Qznd$%l diff --git a/apps/dashy/3.1.0/.env.sample b/apps/dashy/3.1.0/.env.sample deleted file mode 100644 index 90905990..00000000 --- a/apps/dashy/3.1.0/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="dashy" -PANEL_APP_PORT_HTTP="40219" diff --git a/apps/dashy/3.1.0/data.yml b/apps/dashy/3.1.0/data.yml deleted file mode 100644 index 2a716e45..00000000 --- a/apps/dashy/3.1.0/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40209 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/dashy/3.1.0/data/item-icons/.gitkeep b/apps/dashy/3.1.0/data/item-icons/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/dashy/3.1.0/data/user-data/conf.yml b/apps/dashy/3.1.0/data/user-data/conf.yml deleted file mode 100644 index 5f0b012a..00000000 --- a/apps/dashy/3.1.0/data/user-data/conf.yml +++ /dev/null @@ -1,47 +0,0 @@ ---- -# Page meta info, like heading, footer text and nav links -pageInfo: - title: Dashy - description: Welcome to your new dashboard! - navLinks: - - title: GitHub - path: https://github.com/Lissy93/dashy - - title: Documentation - path: https://dashy.to/docs - -# Optional app settings and configuration -appConfig: - theme: colorful - -# Main content - An array of sections, each containing an array of items -sections: -- name: Getting Started - icon: fas fa-rocket - items: - - title: Dashy Live - description: Development a project management links for Dashy - icon: https://i.ibb.co/qWWpD0v/astro-dab-128.png - url: https://live.dashy.to/ - target: newtab - - title: GitHub - description: Source Code, Issues and Pull Requests - url: https://github.com/lissy93/dashy - icon: favicon - - title: Docs - description: Configuring & Usage Documentation - provider: Dashy.to - icon: far fa-book - url: https://dashy.to/docs - - title: Showcase - description: See how others are using Dashy - url: https://github.com/Lissy93/dashy/blob/master/docs/showcase.md - icon: far fa-grin-hearts - - title: Config Guide - description: See full list of configuration options - url: https://github.com/Lissy93/dashy/blob/master/docs/configuring.md - icon: fas fa-wrench - - title: Support - description: Get help with Dashy, raise a bug, or get in contact - url: https://github.com/Lissy93/dashy/blob/master/.github/SUPPORT.md - icon: far fa-hands-helping - \ No newline at end of file diff --git a/apps/dashy/3.1.0/docker-compose.yml b/apps/dashy/3.1.0/docker-compose.yml deleted file mode 100644 index 1f4c524d..00000000 --- a/apps/dashy/3.1.0/docker-compose.yml +++ /dev/null @@ -1,28 +0,0 @@ -services: - dashy: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8080" - volumes: - - ./data/user-data/conf.yml:/app/user-data/conf.yml - - ./data/item-icons:/app/user-data/item-icons - environment: - - NODE_ENV=production - - UID=1000 - - GID=1000 - healthcheck: - test: ['CMD', 'node', '/app/services/healthcheck'] - interval: 1m30s - timeout: 10s - retries: 3 - start_period: 40s - image: lissy93/dashy:3.1.0 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/dashy/3.1.0/scripts/init.sh b/apps/dashy/3.1.0/scripts/init.sh deleted file mode 100644 index 4e811c86..00000000 --- a/apps/dashy/3.1.0/scripts/init.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -chown -R 1000:1000 data \ No newline at end of file diff --git a/apps/dashy/README.md b/apps/dashy/README.md deleted file mode 100644 index 805a4059..00000000 --- a/apps/dashy/README.md +++ /dev/null @@ -1,32 +0,0 @@ - -

Dashy

-

- Dashy helps you organize your self-hosted services by making them accessible from a single place -
- -
- User Showcase | Live Demo | Getting Started | Documentation | GitHub -

- -## Features 🌈 -- 📃 Support for multiple pages -- 🚦 Real-time status monitoring for each of your apps/links -- 📊 Use widgets to display info and dynamic content from self-hosted services -- 🔎 Instant search by name, domain, or tags + customizable hotkeys & keyboard shortcuts -- 🎨 Many built-in color themes, with UI color editor and support for custom CSS -- 🧸 Many icon options - Font-Awesome, homelab icons, auto-fetching Favicon, images, emojis, etc. -- 💂 Optional authentication with multi-user access, configurable privileges, and SSO support -- 🌎 Multi-language support, with 10+ human-translated languages, and more on the way -- ☁ Optional, encrypted, free off-site cloud backup and restore feature available -- 💼 A workspace view, for easily switching between multiple apps simultaneously -- 🛩️ A minimal view, for use as a fast-loading browser Startpage -- 🖱️ Choose app launch methods: new tab, same tab, clipboard, pop-up modal, or open in workspace view -- 📏 Customizable layout, sizes, text, component visibility, sort order, behavior, etc. -- 🖼️ Options for a full-screen background image, custom nav-bar links, HTML footer, title, etc. -- 🚀 Easy to setup with Docker, or on bare metal, or with 1-Click cloud deployment -- ⚙️ Easy single-file YAML-based configuration, and option to configure app through the UI -- ✨ Under active development with improvements and new features added regularly -- 🤏 Small bundle size, fully responsive UI, and PWA for basic offline access -- 🆓 100% free and open-source -- 🔐 Strong focus on privacy -- 🌈 And loads more... diff --git a/apps/dashy/data.yml b/apps/dashy/data.yml deleted file mode 100644 index 600fd5f7..00000000 --- a/apps/dashy/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Dashy -tags: - - 建站 -title: 专为您打造的可自行托管的个人仪表板 -description: 专为您打造的可自行托管的个人仪表板 -additionalProperties: - key: dashy - name: Dashy - tags: - - Website - shortDescZh: 专为您打造的可自行托管的个人仪表板 - shortDescEn: A self-hostable personal dashboard built for you - type: website - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://dashy.to - github: https://github.com/Lissy93/dashy - document: https://dashy.to/docs diff --git a/apps/dashy/latest/.env.sample b/apps/dashy/latest/.env.sample deleted file mode 100644 index 90905990..00000000 --- a/apps/dashy/latest/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="dashy" -PANEL_APP_PORT_HTTP="40219" diff --git a/apps/dashy/latest/data.yml b/apps/dashy/latest/data.yml deleted file mode 100644 index 2a716e45..00000000 --- a/apps/dashy/latest/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40209 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/dashy/latest/data/item-icons/.gitkeep b/apps/dashy/latest/data/item-icons/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/dashy/latest/data/user-data/conf.yml b/apps/dashy/latest/data/user-data/conf.yml deleted file mode 100644 index 5f0b012a..00000000 --- a/apps/dashy/latest/data/user-data/conf.yml +++ /dev/null @@ -1,47 +0,0 @@ ---- -# Page meta info, like heading, footer text and nav links -pageInfo: - title: Dashy - description: Welcome to your new dashboard! - navLinks: - - title: GitHub - path: https://github.com/Lissy93/dashy - - title: Documentation - path: https://dashy.to/docs - -# Optional app settings and configuration -appConfig: - theme: colorful - -# Main content - An array of sections, each containing an array of items -sections: -- name: Getting Started - icon: fas fa-rocket - items: - - title: Dashy Live - description: Development a project management links for Dashy - icon: https://i.ibb.co/qWWpD0v/astro-dab-128.png - url: https://live.dashy.to/ - target: newtab - - title: GitHub - description: Source Code, Issues and Pull Requests - url: https://github.com/lissy93/dashy - icon: favicon - - title: Docs - description: Configuring & Usage Documentation - provider: Dashy.to - icon: far fa-book - url: https://dashy.to/docs - - title: Showcase - description: See how others are using Dashy - url: https://github.com/Lissy93/dashy/blob/master/docs/showcase.md - icon: far fa-grin-hearts - - title: Config Guide - description: See full list of configuration options - url: https://github.com/Lissy93/dashy/blob/master/docs/configuring.md - icon: fas fa-wrench - - title: Support - description: Get help with Dashy, raise a bug, or get in contact - url: https://github.com/Lissy93/dashy/blob/master/.github/SUPPORT.md - icon: far fa-hands-helping - \ No newline at end of file diff --git a/apps/dashy/latest/docker-compose.yml b/apps/dashy/latest/docker-compose.yml deleted file mode 100644 index 6f1657c9..00000000 --- a/apps/dashy/latest/docker-compose.yml +++ /dev/null @@ -1,28 +0,0 @@ -services: - dashy: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8080" - volumes: - - ./data/user-data/conf.yml:/app/user-data/conf.yml - - ./data/item-icons:/app/user-data/item-icons - environment: - - NODE_ENV=production - - UID=1000 - - GID=1000 - healthcheck: - test: ['CMD', 'node', '/app/services/healthcheck'] - interval: 1m30s - timeout: 10s - retries: 3 - start_period: 40s - image: lissy93/dashy:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/dashy/latest/scripts/init.sh b/apps/dashy/latest/scripts/init.sh deleted file mode 100644 index 4e811c86..00000000 --- a/apps/dashy/latest/scripts/init.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -chown -R 1000:1000 data \ No newline at end of file diff --git a/apps/dashy/logo.png b/apps/dashy/logo.png deleted file mode 100644 index e1f6c93b10581c2720772a73385499112e7bff04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9409 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

!}0k@$uIak@e=yjlY=N3BnWaKW~gk*dW)%cD3KH zwneSf(5a7)G8=QG9&G%o^pIm^L|i@bbY{D?PdIy50b`l(y!p* u)zeQLhv-{v{-Yu3Xm({aFaH6 - - - -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 f5718103..00000000 --- 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/latest/.env.sample b/apps/discourse/latest/.env.sample deleted file mode 100644 index 5ac4ca7e..00000000 --- a/apps/discourse/latest/.env.sample +++ /dev/null @@ -1,40 +0,0 @@ -CONTAINER_NAME="discourse" -DISCOURSE_DATA_TO_PERSIST="plugins public/backups public/uploads" -DISCOURSE_EMAIL="admin@localhost.com" -DISCOURSE_ENABLE_CONF_PERSISTENCE="no" -DISCOURSE_ENABLE_HTTPS="no" -DISCOURSE_ENV="production" -DISCOURSE_EXTERNAL_HTTPS_PORT_NUMBER=443 -DISCOURSE_EXTERNAL_HTTP_PORT_NUMBER=80 -DISCOURSE_EXTRA_CONF_CONTENT="yes" -DISCOURSE_FIRST_NAME="Admin" -DISCOURSE_HOST="www.example.com" -DISCOURSE_LAST_NAME="User" -DISCOURSE_PASSENGER_EXTRA_FLAGS="" -DISCOURSE_PASSENGER_SPAWN_METHOD="direct" -DISCOURSE_PASSWORD="siteadmin12345" -DISCOURSE_PORT_NUMBER=3000 -DISCOURSE_PRECOMPILE_ASSETS="yes" -DISCOURSE_REDIS_USE_SSL="no" -DISCOURSE_SITE_NAME="My site!" -DISCOURSE_SKIP_BOOTSTRAP="" -DISCOURSE_SMTP_AUTH="login" -DISCOURSE_SMTP_HOST="" -DISCOURSE_SMTP_OPEN_TIMEOUT=0 -DISCOURSE_SMTP_PASSWORD="" -DISCOURSE_SMTP_PORT_NUMBER=0 -DISCOURSE_SMTP_PROTOCOL="" -DISCOURSE_SMTP_READ_TIMEOUT=0 -DISCOURSE_SMTP_USER="" -DISCOURSE_USERNAME="siteadmin" -PANEL_APP_PORT_HTTP=40268 -PANEL_DB_HOST="postgresql" -PANEL_DB_HOST_NAME="postgresql" -PANEL_DB_NAME="bitnami_discourse" -PANEL_DB_PORT=5432 -PANEL_DB_USER="bn_discourse" -PANEL_DB_USER_PASSWORD="pg_password" -PANEL_REDIS_ROOT_PASSWORD="redis_password" -POSTGRESQL_CLIENT_CREATE_DATABASE_EXTENSIONS="hstore,pg_trgm" -REDIS_HOST="redis" -REDIS_PORT=6379 diff --git a/apps/discourse/latest/data.yml b/apps/discourse/latest/data.yml deleted file mode 100644 index 3aae8654..00000000 --- a/apps/discourse/latest/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/latest/docker-compose.yml b/apps/discourse/latest/docker-compose.yml deleted file mode 100644 index 702968c9..00000000 --- a/apps/discourse/latest/docker-compose.yml +++ /dev/null @@ -1,111 +0,0 @@ -services: - discourse: - image: "bitnami/discourse:latest" - 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:latest" - 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/logo.png b/apps/discourse/logo.png deleted file mode 100644 index 0596417f45980cd45dcd46b8d66f0aec3dcd5bfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8538 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 - - - -# Dockge - -A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager. - -![GitHub Repo stars](https://img.shields.io/github/stars/louislam/dockge?logo=github) ![Docker Pulls](https://img.shields.io/docker/pulls/louislam/dockge?logo=docker) ![Docker Image Version (latest semver)](https://img.shields.io/docker/v/louislam/dockge/latest?label=docker%20image%20ver.) ![GitHub last commit (branch)](https://img.shields.io/github/last-commit/louislam/dockge/master?logo=github) - - - -View Video: https://youtu.be/AWAlOQeNpgU?t=48 - -## ⭐ Features - -- Manage `compose.yaml` - - Create/Edit/Start/Stop/Restart/Delete - - Update Docker Images -- Interactive Editor for `compose.yaml` -- Interactive Web Terminal -- Reactive - - Everything is just responsive. Progress (Pull/Up/Down) and terminal output are in real-time -- Easy-to-use & fancy UI - - If you love Uptime Kuma's UI/UX, you will love this one too -- Convert `docker run ...` commands into `compose.yaml` -- File based structure - - Dockge won't kidnap your compose files, they are stored on your drive as usual. You can interact with them using normal `docker compose` commands - - - -![](https://github.com/louislam/dockge/assets/1336778/89fc1023-b069-42c0-a01c-918c495f1a6a) - -## 🔧 How to Install - -Requirements: -- [Docker](https://docs.docker.com/engine/install/) 20+ / Podman -- (Podman only) podman-docker (Debian: `apt install podman-docker`) -- OS: - - Major Linux distros that can run Docker/Podman such as: - - ✅ Ubuntu - - ✅ Debian (Bullseye or newer) - - ✅ Raspbian (Bullseye or newer) - - ✅ CentOS - - ✅ Fedora - - ✅ ArchLinux - - ❌ Debian/Raspbian Buster or lower is not supported - - ❌ Windows (Will be supported later) -- Arch: armv7, arm64, amd64 (a.k.a x86_64) - -### Basic - -- Default Stacks Directory: `/opt/stacks` -- Default Port: 5001 - -``` -# Create directories that store your stacks and stores Dockge's stack -mkdir -p /opt/stacks /opt/dockge -cd /opt/dockge - -# Download the compose.yaml -curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml - -# Start the server -docker compose up -d - -# If you are using docker-compose V1 or Podman -# docker-compose up -d -``` - -Dockge is now running on http://localhost:5001 - -### Advanced - -If you want to store your stacks in another directory, you can generate your compose.yaml file by using the following URL with custom query strings. - -``` -# Download your compose.yaml -curl "https://dockge.kuma.pet/compose.yaml?port=5001&stacksPath=/opt/stacks" --output compose.yaml -``` - -- port=`5001` -- stacksPath=`/opt/stacks` - -Interactive compose.yaml generator is available on: -https://dockge.kuma.pet - -## How to Update - -```bash -cd /opt/dockge -docker compose pull && docker compose up -d -``` - -## Screenshots - -![](https://github.com/louislam/dockge/assets/1336778/e7ff0222-af2e-405c-b533-4eab04791b40) - - -![](https://github.com/louislam/dockge/assets/1336778/7139e88c-77ed-4d45-96e3-00b66d36d871) - -![](https://github.com/louislam/dockge/assets/1336778/f019944c-0e87-405b-a1b8-625b35de1eeb) - -![](https://github.com/louislam/dockge/assets/1336778/a4478d23-b1c4-4991-8768-1a7cad3472e3) - - -## Motivations - -- I have been using Portainer for some time, but for the stack management, I am sometimes not satisfied with it. For example, sometimes when I try to deploy a stack, the loading icon keeps spinning for a few minutes without progress. And sometimes error messages are not clear. -- Try to develop with ES Module + TypeScript (Originally, I planned to use Deno or Bun.js, but they don't have support for arm64, so I stepped back to Node.js) - -If you love this project, please consider giving it a ⭐. - - -## 🗣️ Community and Contribution - -### Bug Report -https://github.com/louislam/dockge/issues - -### Ask for Help / Discussions -https://github.com/louislam/dockge/discussions - -### Translation -If you want to translate Dockge into your language, please read [Translation Guide](https://github.com/louislam/dockge/blob/master/frontend/src/lang/README.md) - -### Create a Pull Request - -Be sure to read the [guide](https://github.com/louislam/dockge/blob/master/CONTRIBUTING.md), as we don't accept all types of pull requests and don't want to waste your time. - -## FAQ - -#### "Dockge"? - -"Dockge" is a coinage word which is created by myself. I originally hoped it sounds like `Dodge`, but apparently many people called it `Dockage`, it is also acceptable. - -The naming idea came from Twitch emotes like `sadge`, `bedge` or `wokege`. They all end in `-ge`. - -#### Can I manage a single container without `compose.yaml`? - -The main objective of Dockge is to try to use the docker `compose.yaml` for everything. If you want to manage a single container, you can just use Portainer or Docker CLI. - -#### Can I manage existing stacks? - -Yes, you can. However, you need to move your compose file into the stacks directory: - -1. Stop your stack -2. Move your compose file into `/opt/stacks//compose.yaml` -3. In Dockge, click the " Scan Stacks Folder" button in the top-right corner's dropdown menu -4. Now you should see your stack in the list - -#### Is Dockge a Portainer replacement? - -Yes or no. Portainer provides a lot of Docker features. While Dockge is currently only focusing on docker-compose with a better user interface and better user experience. - -If you want to manage your container with docker-compose only, the answer may be yes. - -If you still need to manage something like docker networks, single containers, the answer may be no. - -#### Can I install both Dockge and Portainer? - -Yes, you can. - -## Others - -Dockge is built on top of [Compose V2](https://docs.docker.com/compose/migrate/). `compose.yaml` also known as `docker-compose.yml`. \ No newline at end of file diff --git a/apps/dockge/data.yml b/apps/dockge/data.yml deleted file mode 100644 index 739d5f76..00000000 --- a/apps/dockge/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Dockge -tags: - - 工具 -title: 一个精美的、易于使用的、反应式的自托管 docker compose.yaml 面向堆栈的管理器 -description: 一个精美的、易于使用的、反应式的自托管 docker compose.yaml 面向堆栈的管理器 -additionalProperties: - key: dockge - name: Dockge - tags: - - Tool - shortDescZh: 一个精美的、易于使用的、反应式的自托管 docker compose.yaml 面向堆栈的管理器 - shortDescEn: A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://dockge.kuma.pet - github: https://github.com/louislam/dockge - document: https://github.com/louislam/dockge diff --git a/apps/dockge/latest/.env.sample b/apps/dockge/latest/.env.sample deleted file mode 100644 index 69ba934e..00000000 --- a/apps/dockge/latest/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME="dockge" -PANEL_APP_PORT_HTTP="40186" -DATA_PATH="./data" -STACKS_PATH="/opt/dockge/stacks" diff --git a/apps/dockge/latest/data.yml b/apps/dockge/latest/data.yml deleted file mode 100644 index 9af7eb40..00000000 --- a/apps/dockge/latest/data.yml +++ /dev/null @@ -1,24 +0,0 @@ -additionalProperties: - formFields: - - default: 40186 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: /opt/dockge/stacks - edit: true - envKey: STACKS_PATH - labelEn: compose yml folder path (Absolute Path) - labelZh: compose 编排文件路径 (绝对路径) - required: true - type: text diff --git a/apps/dockge/latest/docker-compose.yml b/apps/dockge/latest/docker-compose.yml deleted file mode 100644 index 6073606e..00000000 --- a/apps/dockge/latest/docker-compose.yml +++ /dev/null @@ -1,22 +0,0 @@ -services: - dockge: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:5001" - volumes: - - /var/run/docker.sock:/var/run/docker.sock - - ${DATA_PATH}:/app/data - - ${STACKS_PATH}:/opt/stacks - # - /root/.docker/:/root/.docker - environment: - - DOCKGE_STACKS_DIR=/opt/stacks - image: louislam/dockge:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/dockge/logo.png b/apps/dockge/logo.png deleted file mode 100644 index 9de2036219c93971c7813d8c1bfa8583064a1345..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3286 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 diff --git a/apps/domain-admin/1.6.69/.env.sample b/apps/domain-admin/1.6.69/.env.sample deleted file mode 100644 index 32dd5b37..00000000 --- a/apps/domain-admin/1.6.69/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="domain-admin" -PANEL_APP_PORT_HTTP="40076" -DATA_PATH="./data" diff --git a/apps/domain-admin/1.6.69/data.yml b/apps/domain-admin/1.6.69/data.yml deleted file mode 100644 index b614b76e..00000000 --- a/apps/domain-admin/1.6.69/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40076 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/domain-admin/1.6.69/docker-compose.yml b/apps/domain-admin/1.6.69/docker-compose.yml deleted file mode 100644 index b1615794..00000000 --- a/apps/domain-admin/1.6.69/docker-compose.yml +++ /dev/null @@ -1,18 +0,0 @@ -services: - domain-admin: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8000" - volumes: - - "${DATA_PATH}/database:/app/database" - - "${DATA_PATH}/logs:/app/logs" - image: mouday/domain-admin:v1.6.69 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/domain-admin/README.md b/apps/domain-admin/README.md deleted file mode 100644 index 8e75ca1c..00000000 --- a/apps/domain-admin/README.md +++ /dev/null @@ -1,89 +0,0 @@ -# 使用说明 - -- 默认账户密码 - -``` -username:admin -password:123456 -``` - -# 原始相关 - -# Domain Admin - -[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/domain-admin)](https://pypi.org/project/domain-admin) -[![PyPI](https://img.shields.io/pypi/v/domain-admin.svg)](https://pypi.org/project/domain-admin) -[![PyPI - Downloads](https://img.shields.io/pypi/dm/domain-admin?label=pypi%20downloads)](https://pypi.org/project/domain-admin) -[![Docker Image Version (latest semver)](https://img.shields.io/docker/v/mouday/domain-admin?label=docker%20version&sort=semver)](https://hub.docker.com/r/mouday/domain-admin) -[![Docker Pulls](https://img.shields.io/docker/pulls/mouday/domain-admin)](https://hub.docker.com/r/mouday/domain-admin) -[![Build Status](https://app.travis-ci.com/mouday/domain-admin.svg?branch=master)](https://app.travis-ci.com/mouday/domain-admin) -[![PyPI - License](https://img.shields.io/pypi/l/domain-admin)](https://github.com/mouday/domain-admin/blob/master/LICENSE) -[![Documentation Status](https://readthedocs.org/projects/domain-admin/badge/?version=latest)](https://domain-admin.readthedocs.io/zh_CN/latest/?badge=latest) - -![](https://raw.githubusercontent.com/mouday/domain-admin/master/image/domain.svg) - -基于Python + Vue3.js 技术栈实现的域名和SSL证书监测平台 - -用于解决,不同业务域名SSL证书,申请自不同的平台,到期后不能及时收到通知,导致线上访问异常,被老板责骂的问题 - -Domain Admin是一个轻量级监控方案,占用系统资源较少。同时,Domain Admin也可以作为一个Flask 和 Vue.js前后端分离的项目模板 - -- 功能描述 - - 核心功能:`域名` 和`SSL证书` 的过期监控,到期提醒 - - 支持证书:单域名证书、多域名证书、通配符证书、IP证书、自签名证书 - - 证书部署: 单一主机部署、多主机部署、动态主机部署 - - 通知渠道:支持邮件、Webhook、企业微信、钉钉、飞书等通知方式 - - 支持平台:macOS、Linux、Windows - - 辅助功能:Let’s Encrypt SSL证书申请 - -- 项目地址: - - github: [https://github.com/mouday/domain-admin](https://github.com/mouday/domain-admin) - - 国内镜像:[https://gitee.com/mouday/domain-admin](https://gitee.com/mouday/domain-admin) - -- 发布渠道: - - pypi:[https://pypi.org/project/domain-admin](https://pypi.org/project/domain-admin) - - docker:[https://hub.docker.com/r/mouday/domain-admin](https://hub.docker.com/r/mouday/domain-admin) - - releases:[https://github.com/mouday/domain-admin/releases](https://github.com/mouday/domain-admin/releases) - -- 使用文档: - - github: [https://mouday.github.io/domain-admin/](https://mouday.github.io/domain-admin/) - - gitee: [https://mouday.gitee.io/domain-admin/](https://mouday.gitee.io/domain-admin/) - - readthedocs: [https://domain-admin.readthedocs.io](https://domain-admin.readthedocs.io/zh_CN/latest/?badge=latest) - -## 安装 - -请参考安装文档:[https://domain-admin.readthedocs.io/zh_CN/latest/manual/install.html](https://domain-admin.readthedocs.io/zh_CN/latest/manual/install.html) - -## 项目截图 - -账号密码随意,预览模式仅提供模拟数据,无法操作修改 - -1、网页版: - -![](https://raw.githubusercontent.com/mouday/domain-admin/master/image/screencapture.png) - -- 预览地址:[https://mouday.github.io/domain-admin-web/](https://mouday.github.io/domain-admin-web/) - -为了更多地人参与到项目中来,现已开放前端代码 - -前端项目地址:[https://github.com/mouday/domain-admin-web](https://github.com/mouday/domain-admin-web) - -2、移动端版: - - - -- 移动端预览地址(请使用移动端窗口体验):[https://mouday.github.io/domain-admin-mini/](https://mouday.github.io/domain-admin-mini/) - -移动端项目地址:[https://github.com/mouday/domain-admin-mini](https://github.com/mouday/domain-admin-mini) - -## 问题反馈交流 - -QQ群号:731742868 - -邀请码:domain-admin - - - -## 更新日志 - -[CHANGELOG.md](https://domain-admin.readthedocs.io/zh_CN/latest/manual/changelog.html) diff --git a/apps/domain-admin/data.yml b/apps/domain-admin/data.yml deleted file mode 100644 index 9687b283..00000000 --- a/apps/domain-admin/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Domain Admin -tags: - - 工具 -title: 域名和SSL证书监测平台 -description: 域名和SSL证书监测平台 -additionalProperties: - key: domain-admin - name: Domain Admin - tags: - - Tool - shortDescZh: 域名和SSL证书监测平台 - shortDescEn: Domain name and SSL certificate monitoring platform - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://github.com/mouday/domain-admin - github: https://github.com/mouday/domain-admin - document: https://domain-admin.readthedocs.io/ diff --git a/apps/domain-admin/latest/.env.sample b/apps/domain-admin/latest/.env.sample deleted file mode 100644 index 32dd5b37..00000000 --- a/apps/domain-admin/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="domain-admin" -PANEL_APP_PORT_HTTP="40076" -DATA_PATH="./data" diff --git a/apps/domain-admin/latest/data.yml b/apps/domain-admin/latest/data.yml deleted file mode 100644 index b614b76e..00000000 --- a/apps/domain-admin/latest/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40076 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/domain-admin/latest/docker-compose.yml b/apps/domain-admin/latest/docker-compose.yml deleted file mode 100644 index 4e39418a..00000000 --- a/apps/domain-admin/latest/docker-compose.yml +++ /dev/null @@ -1,18 +0,0 @@ -services: - domain-admin: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8000" - volumes: - - "${DATA_PATH}/database:/app/database" - - "${DATA_PATH}/logs:/app/logs" - image: mouday/domain-admin:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/domain-admin/logo.png b/apps/domain-admin/logo.png deleted file mode 100644 index 9d16688a3a6c870be82c4e49bc578fa5dcfb71eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7876 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 diff --git a/apps/easyimage2/2.8.3-r1/.env.sample b/apps/easyimage2/2.8.3-r1/.env.sample deleted file mode 100644 index 93e438de..00000000 --- a/apps/easyimage2/2.8.3-r1/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="easyimage" -PANEL_APP_PORT_HTTP="40061" -DATA_PATH="./data" diff --git a/apps/easyimage2/2.8.3-r1/data.yml b/apps/easyimage2/2.8.3-r1/data.yml deleted file mode 100644 index 1fca287a..00000000 --- a/apps/easyimage2/2.8.3-r1/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40061 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/easyimage2/2.8.3-r1/docker-compose.yml b/apps/easyimage2/2.8.3-r1/docker-compose.yml deleted file mode 100644 index c6fbf0c5..00000000 --- a/apps/easyimage2/2.8.3-r1/docker-compose.yml +++ /dev/null @@ -1,23 +0,0 @@ -services: - easyimage: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - volumes: - - "${DATA_PATH}/config:/app/web/config" - - "${DATA_PATH}/i:/app/web/i" - environment: - - TZ=Asia/Shanghai - - PUID=1000 - - PGID=1000 - - DEBUG=false - image: ddsderek/easyimage:v2.8.3-r1 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/easyimage2/README.md b/apps/easyimage2/README.md deleted file mode 100644 index 35f63c0d..00000000 --- a/apps/easyimage2/README.md +++ /dev/null @@ -1,76 +0,0 @@ -## EasyImage2.0 简单图床 - -[![EasyImage2.0 GitHub's stars](https://img.shields.io/github/stars/icret/easyImage2.0?style=social)](https://github.com/icret/EasyImages2.0/stargazers) -[![EasyImage2.0 GitHub's forks](https://img.shields.io/github/forks/icret/easyimage2.0?style=social)](https://github.com/icret/EasyImages2.0/network/members) -[![PHP](https://img.shields.io/badge/php-5.6%20--%208.0-blue.svg)](http://php.net) -[![Release](https://img.shields.io/github/v/release/icret/EasyImages2.0)](https://github.com/icret/EasyImages2.0/releases) -[![jsdelivr](https://data.jsdelivr.com/v1/package/gh/icret/EasyImages2.0/badge)](https://cdn.jsdelivr.net/gh/icret/EasyImages2.0@EasyImage2.0/) -[![License](https://img.shields.io/badge/license-GPL_V2.0-yellowgreen.svg)](https://github.com/icret/EasyImages2.0/blob/master/LICENSE) -[![QQ group](https://pub.idqqimg.com/wpa/images/group.png)](https://jq.qq.com/?_wv=1027&k=jfXRHU8Y) - -[演示](https://png.cm/) · [手册](https://icret.github.io/EasyImages2.0/#/) · [社区](https://github.com/icret/EasyImages2.0/discussions) · [Telegram](https://t.me/Easy_Image) - 插件: [Chrome](https://github.com/icret/EasyImages2.0/blob/master/docs/Chrome插件.md) · [Edge](https://github.com/icret/EasyImages2.0/blob/master/docs/Edge插件.md) · [PicGo](https://github.com/icret/EasyImages2.0/blob/master/docs/使用PicGo上传.md) · [ShareX](https://github.com/icret/EasyImages2.0/blob/master/docs/使用ShareX上传.md) - -目录: [安装](https://github.com/icret/EasyImages2.0/blob/master/docs/安装图床.md) | [安全](https://github.com/icret/EasyImages2.0/blob/master/docs/安全配置.md) | [API](https://github.com/icret/EasyImages2.0/blob/master/docs/API.md) | [鉴黄](https://github.com/icret/EasyImages2.0/blob/master/docs/鉴黄.md) | [升级](https://github.com/icret/EasyImages2.0/blob/master/docs/图床更新升级.md) | [常见问题](https://github.com/icret/EasyImages2.0/blob/master/docs/常见问题.md) | [环境/兼容](#环境要求) | [更新日志](https://github.com/icret/EasyImages2.0/blob/master/docs/update.md) | [打赏开发者](https://github.com/icret/EasyImages2.0/blob/master/docs/打赏开发者.md) | [鸣谢](#鸣谢) | [许可证](#开源许可) - -> 始于2018年7月,支持多文件上传,简单无数据库,返回图片url,markdown,bbscode,html的一款图床程序 -演示地址:[https://png.cm/](https://png.cm/) -之前一直用的图床程序是:[PHP多图长传程序2.4.3](https://www.jb51.net/codes/40544.html) -由于版本过老并且使用falsh上传,在当前html5流行大势所趋下,遂利用基础知识新写了一个以html5为默认上传并且支持flash,向下兼容至IE9。 -***本程序环境要求极低,适用于单一场景(游客上传)和个人使用,不适于多用户复杂场景*** ->本人善写bug 发现bug可提交 [issues](https://github.com/icret/EasyImages2.0/issues) 追求稳定请下载 [稳定版](https://github.com/icret/EasyImages2.0/releases) - -## 特点 - -* [x] 支持API -* [x] 支持仅登录后上传 -* [x] 支持设置图片质量 -* [x] 支持压缩图片大小 -* [x] 支持文字/图片水印 -* [x] 支持设置图片指定宽/高 -* [x] 支持上传图片转换为指定格式 -* [x] 支持限制最低宽度/高度上传 -* [x] 支持上传其他文件格式 -* [x] 在线管理图片 -* [x] 支持网站统计 -* [x] 支持设置广告 -* [x] 支持图片鉴黄 -* [x] 支持自定义代码 -* [x] 支持上传IP黑白名单 -* [x] 支持上传日志IP定位 -* [x] 支持限制日上传次数 -* [x] 支持创建仅上传用户 -* [x] 对于安装环境要求极低 -* [x] 对于服务器性能要求极低 -* [x] 理论上[支持所有常见格式](https://github.com/icret/EasyImages2.0/blob/master/docs/其他格式.md) -* [x] 更多功能支持请安装尝试··· - - ## 界面演示 - - ![简单图床 - 上传界面](https://github.com/icret/EasyImages2.0/raw/master/docs/images/README/674074848.png) - ![简单图床 - 广场界面](https://github.com/icret/EasyImages2.0/raw/master/docs/images/README/3053540273.png) - ![简单图床 - 后台界面](https://github.com/icret/EasyImages2.0/raw/master/docs/images/README/2657944724.png) - ![简单图床 - 统计界面](https://github.com/icret/EasyImages2.0/raw/master/docs/images/README/1305032567.png) - ![简单图床 - 图片信息](https://github.com/icret/EasyImages2.0/raw/master/docs/images/README/info.png) - ![简单图床 - 上传日志](https://github.com/icret/EasyImages2.0/raw/master/docs/images/README/log.png) - -## 环境要求 -> 推荐环境:Nginx + PHP≥7.0 + linux - -- ##### 兼容 - - >最低`PHP 5.6`,推荐`PHP≥7.0`及以上版本,需要PHP支持`Fileinfo,iconv,zip,mbstring,openssl`扩展,如果缺失会导致无法上传/删除图片 - 文件上传视图提供文件列表管理和文件批量上传功能,允许拖拽(需要`HTML5`支持)来添加上传文件,支持上传大图片,优先使用`HTML5`旧得浏览器自动使用`Flash和Silverlight`的方式兼容 - -## 鸣谢 - -- [verot](https://github.com/verot/class.upload.php "verot" ) -- [ZUI](https://github.com/easysoft/zui "ZUI" ) - -## 开源许可 - - - [GPL-2.0](https://github.com/icret/EasyImages2.0/blob/master/LICENSE) - - Copyright © 2018 EasyImage Developer By [Icret](https://github.com/icret) - -* have fun! - -[![Stargazers over time](https://starchart.cc/icret/EasyImages2.0.svg)](https://github.com/icret/EasyImages2.0/stargazers) \ No newline at end of file diff --git a/apps/easyimage2/data.yml b/apps/easyimage2/data.yml deleted file mode 100644 index e0b0d279..00000000 --- a/apps/easyimage2/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: EasyImage2.0 -tags: - - 工具 -title: 简单图床 - 一款功能强大无数据库的图床 2.0版 -description: 简单图床 - 一款功能强大无数据库的图床 2.0版 -additionalProperties: - key: easyimage2 - name: EasyImage2.0 - tags: - - Tool - shortDescZh: 简单图床 - 一款功能强大无数据库的图床 2.0版 - shortDescEn: EasyImage - A powerful database-free graph bed version 2.0 - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://github.com/icret/EasyImages2.0 - github: https://github.com/icret/EasyImages2.0 - document: https://icret.github.io/EasyImages2.0/ diff --git a/apps/easyimage2/latest/.env.sample b/apps/easyimage2/latest/.env.sample deleted file mode 100644 index 93e438de..00000000 --- a/apps/easyimage2/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="easyimage" -PANEL_APP_PORT_HTTP="40061" -DATA_PATH="./data" diff --git a/apps/easyimage2/latest/data.yml b/apps/easyimage2/latest/data.yml deleted file mode 100644 index 1fca287a..00000000 --- a/apps/easyimage2/latest/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40061 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/easyimage2/latest/docker-compose.yml b/apps/easyimage2/latest/docker-compose.yml deleted file mode 100644 index 4568c433..00000000 --- a/apps/easyimage2/latest/docker-compose.yml +++ /dev/null @@ -1,23 +0,0 @@ -services: - easyimage: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - volumes: - - "${DATA_PATH}/config:/app/web/config" - - "${DATA_PATH}/i:/app/web/i" - environment: - - TZ=Asia/Shanghai - - PUID=1000 - - PGID=1000 - - DEBUG=false - image: ddsderek/easyimage:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/easyimage2/logo.png b/apps/easyimage2/logo.png deleted file mode 100644 index 9cec3e62d1817bf3fe702d0d21ccdd15beb049a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4768 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

!}0k@$uIak@e=yjlY=N3BnWaKW~gk*dW)%cD3KH zwneSf(5a7)G8=QG9&G%o^pIm^L|i@bbY{D?PdIy50b`l(y!p* u)zeQLhv-{v{-Yu3Xm({aFaH6 - -

- -![Preview](https://user-images.githubusercontent.com/5447088/50716739-ebd26700-107a-11e9-9817-14230c53efd2.gif) - -[![Build](https://github.com/filebrowser/filebrowser/actions/workflows/main.yaml/badge.svg)](https://github.com/filebrowser/filebrowser/actions/workflows/main.yaml) -[![Go Report Card](https://goreportcard.com/badge/github.com/filebrowser/filebrowser?style=flat-square)](https://goreportcard.com/report/github.com/filebrowser/filebrowser) -[![Documentation](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square)](http://godoc.org/github.com/filebrowser/filebrowser) -[![Version](https://img.shields.io/github/release/filebrowser/filebrowser.svg?style=flat-square)](https://github.com/filebrowser/filebrowser/releases/latest) -[![Chat IRC](https://img.shields.io/badge/freenode-%23filebrowser-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23filebrowser) - -filebrowser provides a file managing interface within a specified directory and it can be used to upload, delete, preview, rename and edit your files. It allows the creation of multiple users and each user can have its own directory. It can be used as a standalone app. - -## Features - -Please refer to our docs at [https://filebrowser.org/features](https://filebrowser.org/features) - -## Install - -For installation instructions please refer to our docs at [https://filebrowser.org/installation](https://filebrowser.org/installation). - -## Configuration - -[Authentication Method](https://filebrowser.org/configuration/authentication-method) - You can change the way the user authenticates with the filebrowser server - -[Command Runner](https://filebrowser.org/configuration/command-runner) - The command runner is a feature that enables you to execute any shell command you want before or after a certain event. - -[Custom Branding](https://filebrowser.org/configuration/custom-branding) - You can customize your File Browser installation by change its name to any other you want, by adding a global custom style sheet and by using your own logotype if you want. - -## Contributing - -If you're interested in contributing to this project, our docs are best places to start [https://filebrowser.org/contributing](https://filebrowser.org/contributing). diff --git a/apps/filebrowser/data.yml b/apps/filebrowser/data.yml deleted file mode 100644 index e88a5a72..00000000 --- a/apps/filebrowser/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: File Browser -tags: - - 工具 -title: 网页文件浏览器 -description: 网页文件浏览器 -additionalProperties: - key: filebrowser - name: File Browser - tags: - - Tool - shortDescZh: 网页文件浏览器 - shortDescEn: Web File Browser - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://filebrowser.org/ - github: https://github.com/filebrowser/filebrowser - document: https://filebrowser.org/ diff --git a/apps/filebrowser/latest/.env.sample b/apps/filebrowser/latest/.env.sample deleted file mode 100644 index f914cabf..00000000 --- a/apps/filebrowser/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="filebrowser" -PANEL_APP_PORT_HTTP="40071" -MOUNT_PATH="./data/mnt" diff --git a/apps/filebrowser/latest/data.yml b/apps/filebrowser/latest/data.yml deleted file mode 100644 index d62d4495..00000000 --- a/apps/filebrowser/latest/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40071 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: HTTP Port - labelZh: HTTP端口 - required: true - rule: paramPort - type: number - - default: ./data/mnt - edit: true - envKey: MOUNT_PATH - labelEn: Mount folder path - labelZh: 挂载文件夹路径 - required: true - type: text diff --git a/apps/filebrowser/latest/data/.filebrowser.json b/apps/filebrowser/latest/data/.filebrowser.json deleted file mode 100644 index fbcf6a1a..00000000 --- a/apps/filebrowser/latest/data/.filebrowser.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "port": 80, - "baseURL": "", - "address": "", - "log": "stdout", - "database": "/database/filebrowser.db", - "root": "/srv" - } \ No newline at end of file diff --git a/apps/filebrowser/latest/data/database.db b/apps/filebrowser/latest/data/database.db deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/filebrowser/latest/docker-compose.yml b/apps/filebrowser/latest/docker-compose.yml deleted file mode 100644 index 5880af14..00000000 --- a/apps/filebrowser/latest/docker-compose.yml +++ /dev/null @@ -1,20 +0,0 @@ -services: - filebrowser: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - volumes: - - "${MOUNT_PATH}:/srv" - - "./data/database.db:/database.db" - - "./data/.filebrowser.json:/.filebrowser.json" - user: "${UID}:${GID}" - image: filebrowser/filebrowser:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/filebrowser/logo.png b/apps/filebrowser/logo.png deleted file mode 100644 index 1d76ec2f8c0f0dc81a6cac0c210b4f732c947d50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7872 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 diff --git a/apps/filecodebox/README.md b/apps/filecodebox/README.md deleted file mode 100644 index 5d6918a4..00000000 --- a/apps/filecodebox/README.md +++ /dev/null @@ -1,37 +0,0 @@ -
-

文件快递柜-轻量

-

匿名口令分享文本,文件,像拿快递一样取文件

-
- - ---- - - - - -## 使用说明 - -- 后端地址:`/#/admin` - -- 后台密码:`FileCodeBox2023` - -## 主要特色 - -- [x] **轻量简洁:** 项目基于Fastapi + Sqlite3 + Vue3 + ElementUI -- [x] **轻松上传:** 支持复制粘贴和拖拽选择 -- [x] **多种类型:** 支持文本和文件 -- [x] **防止爆破:** 错误次数限制 -- [x] **防止滥用:** IP限制上传次数 -- [x] **口令分享:** 随机口令,存取文件,自定义次数及有效期 -- [x] **国际化:** 支持中文简体、繁体以及英文等 -- [x] **匿名分享:** 无需注册,无需登录 -- [x] **管理面板:** 查看和删除文件 -- [x] **一键部署:** 支持Docker一键部署 -- [x] **自由拓展:** 支持S3协议和本地文件流,可根据需求在storage文件中新增存储引擎 -- [x] **简单明了:** 适合新手练手项目 -- [x] **终端下载:** 终端命令`wget https://share.lanol.cn/share/select?code=83432` diff --git a/apps/filecodebox/beta/.env.sample b/apps/filecodebox/beta/.env.sample deleted file mode 100644 index be23ecc7..00000000 --- a/apps/filecodebox/beta/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="filecodebox" -PANEL_APP_PORT_HTTP="40157" -DATA_PATH="./data" diff --git a/apps/filecodebox/beta/data.yml b/apps/filecodebox/beta/data.yml deleted file mode 100644 index df7f823f..00000000 --- a/apps/filecodebox/beta/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40157 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/filecodebox/beta/docker-compose.yml b/apps/filecodebox/beta/docker-compose.yml deleted file mode 100644 index 3f667b47..00000000 --- a/apps/filecodebox/beta/docker-compose.yml +++ /dev/null @@ -1,17 +0,0 @@ -services: - filecodebox: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:12345" - volumes: - - "${DATA_PATH}:/app/data" - image: lanol/filecodebox:beta - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/filecodebox/data.yml b/apps/filecodebox/data.yml deleted file mode 100644 index 6d967d6f..00000000 --- a/apps/filecodebox/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: FileCodeBox -tags: - - 实用工具 -title: 文件快递柜-匿名口令分享文本,文件,像拿快递一样取文件 -description: 文件快递柜-匿名口令分享文本,文件,像拿快递一样取文件 -additionalProperties: - key: filecodebox - name: FileCodeBox - tags: - - Tool - shortDescZh: 文件快递柜-匿名口令分享文本,文件,像拿快递一样取文件 - shortDescEn: Anonymous Passcode Sharing Text, Files, Like Taking Express Delivery for Files - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://share.lanol.cn - github: https://github.com/vastsa/FileCodeBox - document: https://github.com/vastsa/FileCodeBox diff --git a/apps/filecodebox/logo.png b/apps/filecodebox/logo.png deleted file mode 100644 index 1b010a4f6ae543bad1c2f6c7bd58db731c5888cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6396 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 diff --git a/apps/flarum/1.8.10/.env.sample b/apps/flarum/1.8.10/.env.sample deleted file mode 100644 index 707fa709..00000000 --- a/apps/flarum/1.8.10/.env.sample +++ /dev/null @@ -1,10 +0,0 @@ -CONTAINER_NAME="flarum" -PANEL_APP_PORT_HTTP="40020" -DATA_PATH="./data" -PANEL_DB_HOST="127.0.0.1" -FLARUM_DB_PORT="3306" -PANEL_DB_NAME="flarum" -PANEL_DB_USER="flarum" -PANEL_DB_USER_PASSWORD="MyDBPWD_brls9UwcRasl" -PANEL_DB_PREFIX="flarum_" -FLARUM_EXTERNAL_URL="http://localhost:40020" \ No newline at end of file diff --git a/apps/flarum/1.8.10/data.yml b/apps/flarum/1.8.10/data.yml deleted file mode 100644 index dc65e000..00000000 --- a/apps/flarum/1.8.10/data.yml +++ /dev/null @@ -1,78 +0,0 @@ -additionalProperties: - formFields: - - child: - default: "" - envKey: PANEL_DB_HOST - labelEn: Database Service - labelZh: 数据库服务 - required: true - type: service - default: mysql - labelEn: Database Service - labelZh: 数据库服务 - params: - - envKey: FLARUM_DB_PORT - key: mysql - type: param - value: "3306" - - envKey: FLARUM_DB_PORT - key: postgresql - type: param - value: "5432" - required: true - type: apps - values: - - label: MySQL - value: mysql - - default: flarum - envKey: PANEL_DB_NAME - labelEn: Database - labelZh: 数据库名 - random: true - required: true - rule: paramCommon - type: text - - default: flarum - envKey: PANEL_DB_USER - labelEn: User - labelZh: 数据库用户 - random: true - required: true - rule: paramCommon - type: text - - default: flarum - envKey: PANEL_DB_USER_PASSWORD - labelEn: Password - labelZh: 数据库用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: flarum_ - envKey: PANEL_DB_PREFIX - labelEn: Database prefix - labelZh: 数据库前缀 - required: true - type: text - - default: 40020 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data storage folder - labelZh: 数据存放文件夹 - required: true - type: text - - default: http://localhost:40020 - edit: true - envKey: FLARUM_EXTERNAL_URL - labelEn: External URL - labelZh: 外部访问地址 - required: true - type: text diff --git a/apps/flarum/1.8.10/docker-compose.yml b/apps/flarum/1.8.10/docker-compose.yml deleted file mode 100644 index d9198edf..00000000 --- a/apps/flarum/1.8.10/docker-compose.yml +++ /dev/null @@ -1,35 +0,0 @@ -services: - flarum: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8000" - volumes: - - "${DATA_PATH}:/data" - environment: - - TZ=Asia/Shanghai - - PUID=1000 - - PGID=1000 - - MEMORY_LIMIT=256M - - UPLOAD_MAX_SIZE=256M - - CLEAR_ENV=yes - - OPCACHE_MEM_SIZE=128M - - LISTEN_IPV6=true - - REAL_IP_FROM=0.0.0.0/32 - - DB_HOST=${PANEL_DB_HOST} - - DB_PORT=${FLARUM_DB_PORT} - - DB_NAME=${PANEL_DB_NAME} - - DB_USER=${PANEL_DB_USER} - - DB_PASSWORD=${PANEL_DB_USER_PASSWORD} - - DB_PREFIX=${PANEL_DB_PREFIX} - - DB_NOPREFIX=false - - DB_TIMEOUT=60 - - FLARUM_BASE_URL=${FLARUM_EXTERNAL_URL} - image: crazymax/flarum:1.8.10 - labels: - createdBy: Apps -networks: - 1panel-network: - external: true diff --git a/apps/flarum/README.md b/apps/flarum/README.md deleted file mode 100644 index 5fad07f3..00000000 --- a/apps/flarum/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# 使用说明 -## 账户密码 -- 初始账户: flarum -- 初始密码: flarum - -## 中文语言包 - -> 中文语言包: ->> - https://github.com/flarum-lang/chinese-simplified - -使用说明: - -- Flarum v0.1.0-beta.8 及以上版本 - -进入容器终端运行以下安装中文语言包,详细可查看原项目文档。 -``` -composer require flarum-lang/chinese-simplified -php flarum cache:clear -``` - -## 所使用docker镜像相关: - -> 项目链接 ->> - https://hub.docker.com/r/crazymax/flarum ->> - https://github.com/crazy-max/docker-flarum - -# 原始相关 - -

- -

- -

-Total Downloads -Latest Stable Version -License -

- -## About Flarum - -**[Flarum](https://flarum.org/) is a delightfully simple discussion platform for your website.** It's fast and easy to use, with all the features you need to run a successful community. It is designed to be: - -* **Fast and simple.** No clutter, no bloat, no complex dependencies. Flarum is built with PHP so it’s quick and easy to deploy. The interface is powered by Mithril, a performant JavaScript framework with a tiny footprint. - -* **Beautiful and responsive.** This is forum software for humans. Flarum is carefully designed to be consistent and intuitive across platforms, out-of-the-box. - -* **Powerful and extensible.** Customize, extend, and integrate Flarum to suit your community. Flarum’s architecture is amazingly flexible, with a powerful Extension API. - -![screenshot](https://flarum.org/assets/img/home-screenshot.png) - -## Installation - -Read the **[Installation guide](https://docs.flarum.org/install)** to get started. For support, refer to the [documentation](https://docs.flarum.org/), and ask questions on the [community forum](https://discuss.flarum.org/) or [Discord chat](https://flarum.org/discord/). - -## Contributing - -Thank you for considering contributing to Flarum! Please read the **[Contributing guide](https://docs.flarum.org/contributing)** to learn how you can help. - -This repository only holds the Flarum skeleton application. Most development happens in [flarum/core](https://github.com/flarum/core). - -## Security Vulnerabilities - -If you discover a security vulnerability within Flarum, please follow our [security policy](https://github.com/flarum/core/security/policy) so we can address it promptly. - -## License - -Flarum is open-source software licensed under the [MIT License](https://github.com/flarum/flarum/blob/master/LICENSE). - - diff --git a/apps/flarum/data.yml b/apps/flarum/data.yml deleted file mode 100644 index 5539c748..00000000 --- a/apps/flarum/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: flarum -tags: - - 建站 -title: 新一代的论坛软件,使在线讨论变得有趣 -description: 新一代的论坛软件,使在线讨论变得有趣 -additionalProperties: - key: flarum - name: flarum - tags: - - Website - shortDescZh: 新一代的论坛软件,使在线讨论变得有趣 - shortDescEn: The next-generation forum software that makes online discussion fun - type: website - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://flarum.org/ - github: https://github.com/flarum/flarum - document: https://docs.flarum.org/ diff --git a/apps/flarum/latest/.env.sample b/apps/flarum/latest/.env.sample deleted file mode 100644 index 707fa709..00000000 --- a/apps/flarum/latest/.env.sample +++ /dev/null @@ -1,10 +0,0 @@ -CONTAINER_NAME="flarum" -PANEL_APP_PORT_HTTP="40020" -DATA_PATH="./data" -PANEL_DB_HOST="127.0.0.1" -FLARUM_DB_PORT="3306" -PANEL_DB_NAME="flarum" -PANEL_DB_USER="flarum" -PANEL_DB_USER_PASSWORD="MyDBPWD_brls9UwcRasl" -PANEL_DB_PREFIX="flarum_" -FLARUM_EXTERNAL_URL="http://localhost:40020" \ No newline at end of file diff --git a/apps/flarum/latest/data.yml b/apps/flarum/latest/data.yml deleted file mode 100644 index dc65e000..00000000 --- a/apps/flarum/latest/data.yml +++ /dev/null @@ -1,78 +0,0 @@ -additionalProperties: - formFields: - - child: - default: "" - envKey: PANEL_DB_HOST - labelEn: Database Service - labelZh: 数据库服务 - required: true - type: service - default: mysql - labelEn: Database Service - labelZh: 数据库服务 - params: - - envKey: FLARUM_DB_PORT - key: mysql - type: param - value: "3306" - - envKey: FLARUM_DB_PORT - key: postgresql - type: param - value: "5432" - required: true - type: apps - values: - - label: MySQL - value: mysql - - default: flarum - envKey: PANEL_DB_NAME - labelEn: Database - labelZh: 数据库名 - random: true - required: true - rule: paramCommon - type: text - - default: flarum - envKey: PANEL_DB_USER - labelEn: User - labelZh: 数据库用户 - random: true - required: true - rule: paramCommon - type: text - - default: flarum - envKey: PANEL_DB_USER_PASSWORD - labelEn: Password - labelZh: 数据库用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: flarum_ - envKey: PANEL_DB_PREFIX - labelEn: Database prefix - labelZh: 数据库前缀 - required: true - type: text - - default: 40020 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data storage folder - labelZh: 数据存放文件夹 - required: true - type: text - - default: http://localhost:40020 - edit: true - envKey: FLARUM_EXTERNAL_URL - labelEn: External URL - labelZh: 外部访问地址 - required: true - type: text diff --git a/apps/flarum/latest/docker-compose.yml b/apps/flarum/latest/docker-compose.yml deleted file mode 100644 index 5b4ab5d0..00000000 --- a/apps/flarum/latest/docker-compose.yml +++ /dev/null @@ -1,35 +0,0 @@ -services: - flarum: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8000" - volumes: - - "${DATA_PATH}:/data" - environment: - - TZ=Asia/Shanghai - - PUID=1000 - - PGID=1000 - - MEMORY_LIMIT=256M - - UPLOAD_MAX_SIZE=256M - - CLEAR_ENV=yes - - OPCACHE_MEM_SIZE=128M - - LISTEN_IPV6=true - - REAL_IP_FROM=0.0.0.0/32 - - DB_HOST=${PANEL_DB_HOST} - - DB_PORT=${FLARUM_DB_PORT} - - DB_NAME=${PANEL_DB_NAME} - - DB_USER=${PANEL_DB_USER} - - DB_PASSWORD=${PANEL_DB_USER_PASSWORD} - - DB_PREFIX=${PANEL_DB_PREFIX} - - DB_NOPREFIX=false - - DB_TIMEOUT=60 - - FLARUM_BASE_URL=${FLARUM_EXTERNAL_URL} - image: crazymax/flarum:latest - labels: - createdBy: Apps -networks: - 1panel-network: - external: true diff --git a/apps/flarum/logo.png b/apps/flarum/logo.png deleted file mode 100644 index 35f6c2779a85c190749596030c2e7d12a73286e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2192 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 R0t7z|aB*^XY_Jdh{lB7wvcv!Y diff --git a/apps/focalboard/7.11.4/.env.sample b/apps/focalboard/7.11.4/.env.sample deleted file mode 100644 index 19d9b8db..00000000 --- a/apps/focalboard/7.11.4/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="focalboard " -PANEL_APP_PORT_HTTP="40098" diff --git a/apps/focalboard/7.11.4/data.yml b/apps/focalboard/7.11.4/data.yml deleted file mode 100644 index 4367dc99..00000000 --- a/apps/focalboard/7.11.4/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40098 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/focalboard/7.11.4/data/config.json b/apps/focalboard/7.11.4/data/config.json deleted file mode 100644 index 185651fa..00000000 --- a/apps/focalboard/7.11.4/data/config.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "serverRoot": "http://localhost:8000", - "port": 8000, - "dbtype": "sqlite3", - "dbconfig": "./data/focalboard.db", - "postgres_dbconfig": "dbname=focalboard sslmode=disable", - "useSSL": false, - "webpath": "./pack", - "filespath": "./data/files", - "telemetry": true, - "session_expire_time": 2592000, - "session_refresh_time": 18000, - "localOnly": false, - "enableLocalMode": true, - "localModeSocketLocation": "/var/tmp/focalboard_local.socket" - } \ No newline at end of file diff --git a/apps/focalboard/7.11.4/data/postgres-config.json b/apps/focalboard/7.11.4/data/postgres-config.json deleted file mode 100644 index 7dc2dcfe..00000000 --- a/apps/focalboard/7.11.4/data/postgres-config.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "serverRoot": "http://localhost:8000", - "port": 8000, - "dbtype": "postgres", - "dbconfig": "postgres://boardsuser:boardsuser-password@focalboard-db/boards?sslmode=disable&connect_timeout=10", - "postgres_dbconfig": "dbname=boards sslmode=disable", - "useSSL": false, - "webpath": "./pack", - "filespath": "./data/files", - "telemetry": true, - "prometheusaddress": ":9092", - "session_expire_time": 2592000, - "session_refresh_time": 18000, - "localOnly": false, - "enableLocalMode": true, - "localModeSocketLocation": "/var/tmp/focalboard_local.socket" -} \ No newline at end of file diff --git a/apps/focalboard/7.11.4/docker-compose.yml b/apps/focalboard/7.11.4/docker-compose.yml deleted file mode 100644 index c15956df..00000000 --- a/apps/focalboard/7.11.4/docker-compose.yml +++ /dev/null @@ -1,22 +0,0 @@ -services: - focalboard: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8000" - volumes: - - "./data/config.json:/opt/focalboard/config.json" #sqlite - #- "./data/postgres-config.json:/opt/focalboard/config.json" #postgres,需要修改对应数据库信息 - - fbdata:/opt/focalboard/data - image: mattermost/focalboard:7.11.4 - labels: - createdBy: "Apps" - -volumes: - fbdata: - -networks: - 1panel-network: - external: true diff --git a/apps/focalboard/README.md b/apps/focalboard/README.md deleted file mode 100644 index 1cd5f187..00000000 --- a/apps/focalboard/README.md +++ /dev/null @@ -1,149 +0,0 @@ -# 使用说明 - -默认以`SQLite`数据库模式运行, - -需要以`postgres`数据库运行的,需要修改目录下的`postgres-config.json`里的数据库信息 - -且修改`docker-compose.yml`文件里的配置映射。 - -# 原始相关 - -# :warning: Announcement: PLEASE READ :warning: -Focalboard Personal Server and Personal Desktop editions will transition to being fully community supported as of **April 30th, 2023**. This Focalboard repository will become the Personal Edition repository, and will remain open indefinitely. However, we won’t be adding any new enhancements, and will only address Sev-1 level bugs until April 30th, 2023. - -# Focalboard - -![CI Status](https://github.com/mattermost/focalboard/actions/workflows/ci.yml/badge.svg) -![CodeQL](https://github.com/mattermost/focalboard/actions/workflows/codeql-analysis.yml/badge.svg) -![Dev Release](https://github.com/mattermost/focalboard/actions/workflows/dev-release.yml/badge.svg) -![Prod Release](https://github.com/mattermost/focalboard/actions/workflows/prod-release.yml/badge.svg) - -Translation status - - -Like what you see? :eyes: Give us a GitHub Star! :star: - -![Focalboard](https://github.com/mattermost/focalboard/raw/main/website/site/static/img/hero.jpg) - -Focalboard is an open source, multilingual, self-hosted project management tool that's an alternative to Trello, Notion, and Asana. - -It helps define, organize, track and manage work across individuals and teams. Focalboard comes in three editions: - -* **[Mattermost Boards](https://mattermost.com/boards/)**: Integrated with the Mattermost platform for your team to plan and collaborate. - -* **[Personal Desktop](https://www.focalboard.com/docs/personal-edition/desktop/)**: A standalone, single-user [macOS](https://apps.apple.com/app/apple-store/id1556908618?pt=2114704&ct=website&mt=8), [Windows](https://www.microsoft.com/store/apps/9NLN2T0SX9VF?cid=website), or [Linux](https://www.focalboard.com/download/personal-edition/desktop/#linux-desktop) desktop app for your own todos and personal projects. - -* **[Personal Server](https://www.focalboard.com/download/personal-edition/ubuntu/)**: A standalone, multi-user server for development and personal use. - -## Try Focalboard - -### Mattermost Boards - -**Mattermost Boards** combines project management tools with messaging and collaboration for teams of all sizes. To access and use **Mattermost Boards**, install or upgrade to Mattermost v6.0 or later as a [self-hosted server](https://docs.mattermost.com/guides/deployment.html?utm_source=github&utm_campaign=focalboard). After logging into Mattermost, select the menu in the top left corner and select **Boards**. - -### Personal Desktop (Windows, Mac or Linux Desktop) - -* **Windows**: Download from the [Windows App Store](https://www.microsoft.com/store/productId/9NLN2T0SX9VF) or download `focalboard-win.zip` from the [latest release](https://github.com/mattermost/focalboard/releases), unpack, and run `Focalboard.exe`. -* **Mac**: Download from the [Mac App Store](https://apps.apple.com/us/app/focalboard-insiders/id1556908618?mt=12). -* **Linux Desktop**: Download `focalboard-linux.tar.gz` from the [latest release](https://github.com/mattermost/focalboard/releases), unpack, and open `focalboard-app`. - -### Personal Server - -**Ubuntu**: You can download and run the compiled Focalboard **Personal Server** on Ubuntu by following [our latest install guide](https://www.focalboard.com/download/personal-edition/ubuntu/). - -### API Docs - -Boards API docs can be found over at https://htmlpreview.github.io/?https://github.com/mattermost/focalboard/blob/main/server/swagger/docs/html/index.html - -## Contribute to Focalboard - -For anyone interested in being an official maintainer of the Focalboard repository, please reach out to us on our [Focalboard Community Channel](https://community.mattermost.com/core/channels/focalboard). If there are no maintainers, and you’re still interested in adding your own improvements to the Focalboard Personal Editions, we encourage you to fork and maintain the repository. - -### Getting started - -Our [developer guide](https://developers.mattermost.com/contribute/focalboard/personal-server-setup-guide) has detailed instructions on how to set up your development environment for the **Personal Server**. It also provides more information about contributing to our open source community. - -Clone [mattermost-server](https://github.com/mattermost/mattermost-server) into sibling directory. - -Create an `.env` file in the focalboard directory that contains: - -``` -EXCLUDE_ENTERPRISE="1" -``` - -To build the server: - -``` -make prebuild -make -``` - -To run the server: - -``` - ./bin/focalboard-server -``` - -Then navigate your browser to [`http://localhost:8000`](http://localhost:8000) to access your Focalboard server. The port is configured in `config.json`. - -Once the server is running, you can rebuild just the web app via `make webapp` in a separate terminal window. Reload your browser to see the changes. - -### Building and running standalone desktop apps - -You can build standalone apps that package the server to run locally against SQLite: - -* **Windows**: - * *Requires Windows 10, [Windows 10 SDK](https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/) 10.0.19041.0, and .NET 4.8 developer pack* - * Open a `git-bash` prompt. - * Run `make prebuild` - * The above prebuild step needs to be run only when you make changes to or want to install your npm dependencies, etc. - * Once the prebuild is completed, you can keep repeating the below steps to build the app & see the changes. - * Run `make win-wpf-app` - * Run `cd win-wpf/msix && focalboard.exe` -* **Mac**: - * *Requires macOS 11.3+ and Xcode 13.2.1+* - * Run `make prebuild` - * The above prebuild step needs to be run only when you make changes to or want to install your npm dependencies, etc. - * Once the prebuild is completed, you can keep repeating the below steps to build the app & see the changes. - * Run `make mac-app` - * Run `open mac/dist/Focalboard.app` -* **Linux**: - * *Tested on Ubuntu 18.04* - * Install `webgtk` dependencies - * Run `sudo apt-get install libgtk-3-dev` - * Run `sudo apt-get install libwebkit2gtk-4.0-dev` - * Run `make prebuild` - * The above prebuild step needs to be run only when you make changes to or want to install your npm dependencies, etc. - * Once the prebuild is completed, you can keep repeating the below steps to build the app & see the changes. - * Run `make linux-app` - * Uncompress `linux/dist/focalboard-linux.tar.gz` to a directory of your choice - * Run `focalboard-app` from the directory you have chosen -* **Docker**: - * To run it locally from offical image: - * `docker run -it -p 80:8000 mattermost/focalboard` - * To build it for your current architecture: - * `docker build -f docker/Dockerfile .` - * To build it for a custom architecture (experimental): - * `docker build -f docker/Dockerfile --platform linux/arm64 .` - -Cross-compilation currently isn't fully supported, so please build on the appropriate platform. Refer to the GitHub Actions workflows (`build-mac.yml`, `build-win.yml`, `build-ubuntu.yml`) for the detailed list of steps on each platform. - -### Unit testing - -Before checking in commits, run `make ci`, which is similar to the `.gitlab-ci.yml` workflow and includes: - -* **Server unit tests**: `make server-test` -* **Web app ESLint**: `cd webapp; npm run check` -* **Web app unit tests**: `cd webapp; npm run test` -* **Web app UI tests**: `cd webapp; npm run cypress:ci` - -### Translating - -Help translate Focalboard! The app is already translated into several languages. We welcome corrections and new language translations! You can add new languages or improve existing translations at [Weblate](https://translate.mattermost.com/engage/focalboard/). - -### Staying informed - -* **Changes**: See the [CHANGELOG](CHANGELOG.md) for the latest updates -* **GitHub Discussions**: Join the [Developer Discussion](https://github.com/mattermost/focalboard/discussions) board -* **Bug Reports**: [File a bug report](https://github.com/mattermost/focalboard/issues/new?assignees=&labels=bug&template=bug_report.md&title=) -* **Chat**: Join the [Focalboard community channel](https://community.mattermost.com/core/channels/focalboard) \ No newline at end of file diff --git a/apps/focalboard/data.yml b/apps/focalboard/data.yml deleted file mode 100644 index abed0cd1..00000000 --- a/apps/focalboard/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Focalboard -tags: - - DevOps -title: Trello,Notion 和 Asana 的开源自托管替代方案 -description: Trello,Notion 和 Asana 的开源自托管替代方案 -additionalProperties: - key: focalboard - name: Focalboard - tags: - - DevOps - shortDescZh: Trello,Notion 和 Asana 的开源自托管替代方案 - shortDescEn: An open source, self-hosted alternative to Trello, Notion, and Asana - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://www.focalboard.com/ - github: https://github.com/mattermost/focalboard - document: https://docs.mattermost.com/guides/boards.html diff --git a/apps/focalboard/latest/.env.sample b/apps/focalboard/latest/.env.sample deleted file mode 100644 index 19d9b8db..00000000 --- a/apps/focalboard/latest/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="focalboard " -PANEL_APP_PORT_HTTP="40098" diff --git a/apps/focalboard/latest/data.yml b/apps/focalboard/latest/data.yml deleted file mode 100644 index 4367dc99..00000000 --- a/apps/focalboard/latest/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40098 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/focalboard/latest/data/config.json b/apps/focalboard/latest/data/config.json deleted file mode 100644 index 185651fa..00000000 --- a/apps/focalboard/latest/data/config.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "serverRoot": "http://localhost:8000", - "port": 8000, - "dbtype": "sqlite3", - "dbconfig": "./data/focalboard.db", - "postgres_dbconfig": "dbname=focalboard sslmode=disable", - "useSSL": false, - "webpath": "./pack", - "filespath": "./data/files", - "telemetry": true, - "session_expire_time": 2592000, - "session_refresh_time": 18000, - "localOnly": false, - "enableLocalMode": true, - "localModeSocketLocation": "/var/tmp/focalboard_local.socket" - } \ No newline at end of file diff --git a/apps/focalboard/latest/data/postgres-config.json b/apps/focalboard/latest/data/postgres-config.json deleted file mode 100644 index 7dc2dcfe..00000000 --- a/apps/focalboard/latest/data/postgres-config.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "serverRoot": "http://localhost:8000", - "port": 8000, - "dbtype": "postgres", - "dbconfig": "postgres://boardsuser:boardsuser-password@focalboard-db/boards?sslmode=disable&connect_timeout=10", - "postgres_dbconfig": "dbname=boards sslmode=disable", - "useSSL": false, - "webpath": "./pack", - "filespath": "./data/files", - "telemetry": true, - "prometheusaddress": ":9092", - "session_expire_time": 2592000, - "session_refresh_time": 18000, - "localOnly": false, - "enableLocalMode": true, - "localModeSocketLocation": "/var/tmp/focalboard_local.socket" -} \ No newline at end of file diff --git a/apps/focalboard/latest/docker-compose.yml b/apps/focalboard/latest/docker-compose.yml deleted file mode 100644 index 2a4547f0..00000000 --- a/apps/focalboard/latest/docker-compose.yml +++ /dev/null @@ -1,22 +0,0 @@ -services: - focalboard: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8000" - volumes: - - "./data/config.json:/opt/focalboard/config.json" #sqlite - #- "./data/postgres-config.json:/opt/focalboard/config.json" #postgres,需要修改对应数据库信息 - - fbdata:/opt/focalboard/data - image: mattermost/focalboard:latest - labels: - createdBy: "Apps" - -volumes: - fbdata: - -networks: - 1panel-network: - external: true diff --git a/apps/focalboard/logo.png b/apps/focalboard/logo.png deleted file mode 100644 index f8489e8f2f3c8b0d46874c3c9b299752dc4b433c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4069 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 -- 演示: \ No newline at end of file diff --git a/apps/freshrss/data.yml b/apps/freshrss/data.yml deleted file mode 100644 index 0d75bf21..00000000 --- a/apps/freshrss/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: FreshRSS -tags: - - 实用工具 -title: 自托管的 RSS 和 Atom 订阅源聚合器 -description: 自托管的 RSS 和 Atom 订阅源聚合器 -additionalProperties: - key: freshrss - name: FreshRSS - tags: - - Tool - shortDescZh: 自托管的 RSS 和 Atom 订阅源聚合器 - shortDescEn: A self-hosted RSS and Atom feed aggregator - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://freshrss.org - github: https://github.com/FreshRSS/FreshRSS - document: https://freshrss.github.io/FreshRSS diff --git a/apps/freshrss/latest/.env.sample b/apps/freshrss/latest/.env.sample deleted file mode 100644 index 7200b809..00000000 --- a/apps/freshrss/latest/.env.sample +++ /dev/null @@ -1,7 +0,0 @@ -CONTAINER_NAME="freshrss" -CRON_MIN="2,32" -DATA_PATH="./data/data" -EXTENSIONS_PATH="./data/extensions" -FRESHRSS_ENV="development" -PANEL_APP_PORT_HTTP=40293 -TIME_ZONE="Asia/Shanghai" diff --git a/apps/freshrss/latest/data.yml b/apps/freshrss/latest/data.yml deleted file mode 100644 index 6abbd970..00000000 --- a/apps/freshrss/latest/data.yml +++ /dev/null @@ -1,50 +0,0 @@ -additionalProperties: - formFields: - - default: "40293" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "./data/data" - edit: true - envKey: DATA_PATH - labelEn: Data Path - labelZh: 数据路径 - required: true - type: text - - default: "./data/extensions" - edit: true - envKey: EXTENSIONS_PATH - labelEn: Extensions Path - labelZh: 扩展路径 - required: true - type: text - - default: "Asia/Shanghai" - edit: true - envKey: TIME_ZONE - labelEn: Time Zone - labelZh: 时区 - required: true - type: text - - default: "2,32" - edit: true - envKey: CRON_MIN - labelEn: Cron Min - labelZh: 定时任务分钟 - required: true - type: text - - default: "development" - edit: true - envKey: FRESHRSS_ENV - labelEn: Environment - labelZh: 环境 - required: true - type: select - values: - - label: "Development" - value: "development" - - label: "Production" - value: "production" diff --git a/apps/freshrss/latest/docker-compose.yml b/apps/freshrss/latest/docker-compose.yml deleted file mode 100644 index b583b8bc..00000000 --- a/apps/freshrss/latest/docker-compose.yml +++ /dev/null @@ -1,23 +0,0 @@ -services: - freshrss: - image: "freshrss/freshrss:latest" - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP}" - volumes: - - ${DATA_PATH}/data:/var/www/FreshRSS/data - - ${EXTENSIONS_PATH}:/var/www/FreshRSS/extensions - environment: - - TZ=${TIME_ZONE} - - CRON_MIN=${CRON_MIN} - - FRESHRSS_ENV=${FRESHRSS_ENV} - - LISTEN=0.0.0.0:${PANEL_APP_PORT_HTTP} - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/freshrss/logo.png b/apps/freshrss/logo.png deleted file mode 100644 index 9d9b7c9a460548acff381ddfe2115fd6e4468ea9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5706 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 P90s6FElp~S++zO+!4tyg diff --git a/apps/frpc/0.63.0/.env.sample b/apps/frpc/0.63.0/.env.sample deleted file mode 100644 index 984ecd93..00000000 --- a/apps/frpc/0.63.0/.env.sample +++ /dev/null @@ -1 +0,0 @@ -CONTAINER_NAME="frpc" \ No newline at end of file diff --git a/apps/frpc/0.63.0/data.yml b/apps/frpc/0.63.0/data.yml deleted file mode 100644 index ade86cdd..00000000 --- a/apps/frpc/0.63.0/data.yml +++ /dev/null @@ -1,23 +0,0 @@ -additionalProperties: - formFields: - - default: ./data/frpc.toml - edit: true - envKey: CONFIG_FILE_PATH - labelEn: Configuration file path - labelZh: 配置文件路径 - required: true - type: text - - default: 6000 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port (determined by the configuration file) - labelZh: 端口 (由配置文件决定) - required: true - type: number - - default: ./data/ssl - edit: true - envKey: SSL_FOLDER_PATH - labelEn: Certificate folder path (corresponding to "/etc/frp/ssl" in container) - labelZh: 证书文件夹路径 (对应容器内 "/etc/frp/ssl") - required: true - type: text diff --git a/apps/frpc/0.63.0/data/frpc.ini b/apps/frpc/0.63.0/data/frpc.ini deleted file mode 100644 index 13a8e5f6..00000000 --- a/apps/frpc/0.63.0/data/frpc.ini +++ /dev/null @@ -1,9 +0,0 @@ -[common] -server_addr = 127.0.0.1 -server_port = 7000 - -[ssh] -type = tcp -local_ip = 127.0.0.1 -local_port = 22 -remote_port = 6000 diff --git a/apps/frpc/0.63.0/data/frpc.toml b/apps/frpc/0.63.0/data/frpc.toml deleted file mode 100644 index 9e64a124..00000000 --- a/apps/frpc/0.63.0/data/frpc.toml +++ /dev/null @@ -1,42 +0,0 @@ -# common -serverAddr = "1.2.3.4" -serverPort = 7000 -auth.method = "token" -auth.token = "token123456" -# supports tcp, kcp, quic, websocket and wss now, default is tcp -transport.protocol = "tcp" - -# dashboard -webServer.addr = "127.0.0.1" -webServer.port = 6000 -webServer.user = "admin" -webServer.password = "password123456" -webServer.pprofEnable = false - -# setting -loginFailExit = false -transport.tcpMux = false -transport.tls.enable = false -# transport.tls.certFile = "client.crt" -# transport.tls.keyFile = "client.key" -# transport.tls.trustedCaFile = "ca.crt" -# transport.tls.serverName = "example.com" - -# tls -#transport.tls.certFile = "/etc/frp/ssl/client.crt" -#transport.tls.keyFile = "/etc/frp/ssl/client.key" -#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt" - -[[proxies]] -name = "rdp_tcp" -type = "tcp" -localIP = "127.0.0.1" -localPort = 3389 -remotePort = 13389 - -[[proxies]] -name = "rdp_udp" -type = "udp" -localIP = "127.0.0.1" -localPort = 3389 -remotePort = 13389 \ No newline at end of file diff --git a/apps/frpc/0.63.0/data/frpc_full.ini b/apps/frpc/0.63.0/data/frpc_full.ini deleted file mode 100644 index 29f6bcab..00000000 --- a/apps/frpc/0.63.0/data/frpc_full.ini +++ /dev/null @@ -1,365 +0,0 @@ -# [common] is integral section -[common] -# A literal address or host name for IPv6 must be enclosed -# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80" -# For single "server_addr" field, no need square brackets, like "server_addr = ::". -server_addr = 0.0.0.0 -server_port = 7000 - -# The maximum amount of time a dial to server will wait for a connect to complete. Default value is 10 seconds. -# dial_server_timeout = 10 - -# dial_server_keepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps. -# If negative, keep-alive probes are disabled. -# dial_server_keepalive = 7200 - -# if you want to connect frps by http proxy or socks5 proxy or ntlm proxy, you can set http_proxy here or in global environment variables -# it only works when protocol is tcp -# http_proxy = http://user:passwd@192.168.1.128:8080 -# http_proxy = socks5://user:passwd@192.168.1.128:1080 -# http_proxy = ntlm://user:passwd@192.168.1.128:2080 - -# console or real logFile path like ./frpc.log -log_file = ./frpc.log - -# trace, debug, info, warn, error -log_level = info - -log_max_days = 3 - -# disable log colors when log_file is console, default is false -disable_log_color = false - -# for authentication, should be same as your frps.ini -# authenticate_heartbeats specifies whether to include authentication token in heartbeats sent to frps. By default, this value is false. -authenticate_heartbeats = false - -# authenticate_new_work_conns specifies whether to include authentication token in new work connections sent to frps. By default, this value is false. -authenticate_new_work_conns = false - -# auth token -token = 12345678 - -authentication_method = - -# oidc_client_id specifies the client ID to use to get a token in OIDC authentication if AuthenticationMethod == "oidc". -# By default, this value is "". -oidc_client_id = - -# oidc_client_secret specifies the client secret to use to get a token in OIDC authentication if AuthenticationMethod == "oidc". -# By default, this value is "". -oidc_client_secret = - -# oidc_audience specifies the audience of the token in OIDC authentication if AuthenticationMethod == "oidc". By default, this value is "". -oidc_audience = - -# oidc_scope specifies the permisssions of the token in OIDC authentication if AuthenticationMethod == "oidc". By default, this value is "". -oidc_scope = - -# oidc_token_endpoint_url specifies the URL which implements OIDC Token Endpoint. -# It will be used to get an OIDC token if AuthenticationMethod == "oidc". By default, this value is "". -oidc_token_endpoint_url = - -# oidc_additional_xxx specifies additional parameters to be sent to the OIDC Token Endpoint. -# For example, if you want to specify the "audience" parameter, you can set as follow. -# frp will add "audience=" "var1=" to the additional parameters. -# oidc_additional_audience = https://dev.auth.com/api/v2/ -# oidc_additional_var1 = foobar - -# set admin address for control frpc's action by http api such as reload -admin_addr = 127.0.0.1 -admin_port = 7400 -admin_user = admin -admin_pwd = admin -# Admin assets directory. By default, these assets are bundled with frpc. -# assets_dir = ./static - -# connections will be established in advance, default value is zero -pool_count = 5 - -# if tcp stream multiplexing is used, default is true, it must be same with frps -# tcp_mux = true - -# specify keep alive interval for tcp mux. -# only valid if tcp_mux is true. -# tcp_mux_keepalive_interval = 60 - -# your proxy name will be changed to {user}.{proxy} -user = your_name - -# decide if exit program when first login failed, otherwise continuous relogin to frps -# default is true -login_fail_exit = true - -# communication protocol used to connect to server -# supports tcp, kcp, quic and websocket now, default is tcp -protocol = tcp - -# set client binding ip when connect server, default is empty. -# only when protocol = tcp or websocket, the value will be used. -connect_server_local_ip = 0.0.0.0 - -# quic protocol options -# quic_keepalive_period = 10 -# quic_max_idle_timeout = 30 -# quic_max_incoming_streams = 100000 - -# if tls_enable is true, frpc will connect frps by tls -tls_enable = true - -# tls_cert_file = client.crt -# tls_key_file = client.key -# tls_trusted_ca_file = ca.crt -# tls_server_name = example.com - -# specify a dns server, so frpc will use this instead of default one -# dns_server = 8.8.8.8 - -# proxy names you want to start separated by ',' -# default is empty, means all proxies -# start = ssh,dns - -# heartbeat configure, it's not recommended to modify the default value -# The default value of heartbeat_interval is 10 and heartbeat_timeout is 90. Set negative value -# to disable it. -# heartbeat_interval = 30 -# heartbeat_timeout = 90 - -# additional meta info for client -meta_var1 = 123 -meta_var2 = 234 - -# specify udp packet size, unit is byte. If not set, the default value is 1500. -# This parameter should be same between client and server. -# It affects the udp and sudp proxy. -udp_packet_size = 1500 - -# include other config files for proxies. -# includes = ./confd/*.ini - -# By default, frpc will connect frps with first custom byte if tls is enabled. -# If DisableCustomTLSFirstByte is true, frpc will not send that custom byte. -disable_custom_tls_first_byte = false - -# Enable golang pprof handlers in admin listener. -# Admin port must be set first. -pprof_enable = false - -# 'ssh' is the unique proxy name -# if user in [common] section is not empty, it will be changed to {user}.{proxy} such as 'your_name.ssh' -[ssh] -# tcp | udp | http | https | stcp | xtcp, default is tcp -type = tcp -local_ip = 127.0.0.1 -local_port = 22 -# limit bandwidth for this proxy, unit is KB and MB -bandwidth_limit = 1MB -# where to limit bandwidth, can be 'client' or 'server', default is 'client' -bandwidth_limit_mode = client -# true or false, if true, messages between frps and frpc will be encrypted, default is false -use_encryption = false -# if true, message will be compressed -use_compression = false -# remote port listen by frps -remote_port = 6001 -# frps will load balancing connections for proxies in same group -group = test_group -# group should have same group key -group_key = 123456 -# enable health check for the backend service, it support 'tcp' and 'http' now -# frpc will connect local service's port to detect it's healthy status -health_check_type = tcp -# health check connection timeout -health_check_timeout_s = 3 -# if continuous failed in 3 times, the proxy will be removed from frps -health_check_max_failed = 3 -# every 10 seconds will do a health check -health_check_interval_s = 10 -# additional meta info for each proxy -meta_var1 = 123 -meta_var2 = 234 - -[ssh_random] -type = tcp -local_ip = 127.0.0.1 -local_port = 22 -# if remote_port is 0, frps will assign a random port for you -remote_port = 0 - -# if you want to expose multiple ports, add 'range:' prefix to the section name -# frpc will generate multiple proxies such as 'tcp_port_6010', 'tcp_port_6011' and so on. -[range:tcp_port] -type = tcp -local_ip = 127.0.0.1 -local_port = 6010-6020,6022,6024-6028 -remote_port = 6010-6020,6022,6024-6028 -use_encryption = false -use_compression = false - -[dns] -type = udp -local_ip = 114.114.114.114 -local_port = 53 -remote_port = 6002 -use_encryption = false -use_compression = false - -[range:udp_port] -type = udp -local_ip = 127.0.0.1 -local_port = 6010-6020 -remote_port = 6010-6020 -use_encryption = false -use_compression = false - -# Resolve your domain names to [server_addr] so you can use http://web01.yourdomain.com to browse web01 and http://web02.yourdomain.com to browse web02 -[web01] -type = http -local_ip = 127.0.0.1 -local_port = 80 -use_encryption = false -use_compression = true -# http username and password are safety certification for http protocol -# if not set, you can access this custom_domains without certification -http_user = admin -http_pwd = admin -# if domain for frps is frps.com, then you can access [web01] proxy by URL http://web01.frps.com -subdomain = web01 -custom_domains = web01.yourdomain.com -# locations is only available for http type -locations = /,/pic -# route requests to this service if http basic auto user is abc -# route_by_http_user = abc -host_header_rewrite = example.com -# params with prefix "header_" will be used to update http request headers -header_X-From-Where = frp -health_check_type = http -# frpc will send a GET http request '/status' to local http service -# http service is alive when it return 2xx http response code -health_check_url = /status -health_check_interval_s = 10 -health_check_max_failed = 3 -health_check_timeout_s = 3 - -[web02] -type = https -local_ip = 127.0.0.1 -local_port = 8000 -use_encryption = false -use_compression = false -subdomain = web01 -custom_domains = web02.yourdomain.com -# if not empty, frpc will use proxy protocol to transfer connection info to your local service -# v1 or v2 or empty -proxy_protocol_version = v2 - -[plugin_unix_domain_socket] -type = tcp -remote_port = 6003 -# if plugin is defined, local_ip and local_port is useless -# plugin will handle connections got from frps -plugin = unix_domain_socket -# params with prefix "plugin_" that plugin needed -plugin_unix_path = /var/run/docker.sock - -[plugin_http_proxy] -type = tcp -remote_port = 6004 -plugin = http_proxy -plugin_http_user = abc -plugin_http_passwd = abc - -[plugin_socks5] -type = tcp -remote_port = 6005 -plugin = socks5 -plugin_user = abc -plugin_passwd = abc - -[plugin_static_file] -type = tcp -remote_port = 6006 -plugin = static_file -plugin_local_path = /var/www/blog -plugin_strip_prefix = static -plugin_http_user = abc -plugin_http_passwd = abc - -[plugin_https2http] -type = https -custom_domains = test.yourdomain.com -plugin = https2http -plugin_local_addr = 127.0.0.1:80 -plugin_crt_path = ./server.crt -plugin_key_path = ./server.key -plugin_host_header_rewrite = 127.0.0.1 -plugin_header_X-From-Where = frp - -[plugin_https2https] -type = https -custom_domains = test.yourdomain.com -plugin = https2https -plugin_local_addr = 127.0.0.1:443 -plugin_crt_path = ./server.crt -plugin_key_path = ./server.key -plugin_host_header_rewrite = 127.0.0.1 -plugin_header_X-From-Where = frp - -[plugin_http2https] -type = http -custom_domains = test.yourdomain.com -plugin = http2https -plugin_local_addr = 127.0.0.1:443 -plugin_host_header_rewrite = 127.0.0.1 -plugin_header_X-From-Where = frp - -[secret_tcp] -# If the type is secret tcp, remote_port is useless -# Who want to connect local port should deploy another frpc with stcp proxy and role is visitor -type = stcp -# sk used for authentication for visitors -sk = abcdefg -local_ip = 127.0.0.1 -local_port = 22 -use_encryption = false -use_compression = false - -# user of frpc should be same in both stcp server and stcp visitor -[secret_tcp_visitor] -# frpc role visitor -> frps -> frpc role server -role = visitor -type = stcp -# the server name you want to visitor -server_name = secret_tcp -sk = abcdefg -# connect this address to visitor stcp server -bind_addr = 127.0.0.1 -bind_port = 9000 -use_encryption = false -use_compression = false - -[p2p_tcp] -type = xtcp -sk = abcdefg -local_ip = 127.0.0.1 -local_port = 22 -use_encryption = false -use_compression = false - -[p2p_tcp_visitor] -role = visitor -type = xtcp -server_name = p2p_tcp -sk = abcdefg -bind_addr = 127.0.0.1 -bind_port = 9001 -use_encryption = false -use_compression = false - -[tcpmuxhttpconnect] -type = tcpmux -multiplexer = httpconnect -local_ip = 127.0.0.1 -local_port = 10701 -custom_domains = tunnel1 -# route_by_http_user = user1 diff --git a/apps/frpc/0.63.0/data/frpc_full.toml b/apps/frpc/0.63.0/data/frpc_full.toml deleted file mode 100644 index 67fd84ec..00000000 --- a/apps/frpc/0.63.0/data/frpc_full.toml +++ /dev/null @@ -1,366 +0,0 @@ -# This configuration file is for reference only. Please do not use this configuration directly to run the program as it may have various issues. - -# your proxy name will be changed to {user}.{proxy} -user = "your_name" - -# A literal address or host name for IPv6 must be enclosed -# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80" -# For single serverAddr field, no need square brackets, like serverAddr = "::". -serverAddr = "0.0.0.0" -serverPort = 7000 - -# STUN server to help penetrate NAT hole. -# natHoleStunServer = "stun.easyvoip.com:3478" - -# Decide if exit program when first login failed, otherwise continuous relogin to frps -# default is true -loginFailExit = true - -# console or real logFile path like ./frpc.log -log.to = "./frpc.log" -# trace, debug, info, warn, error -log.level = "info" -log.maxDays = 3 -# disable log colors when log.to is console, default is false -log.disablePrintColor = false - -auth.method = "token" -# auth.additionalScopes specifies additional scopes to include authentication information. -# Optional values are HeartBeats, NewWorkConns. -# auth.additionalScopes = ["HeartBeats", "NewWorkConns"] - -# auth token -auth.token = "12345678" - -# oidc.clientID specifies the client ID to use to get a token in OIDC authentication. -# auth.oidc.clientID = "" -# oidc.clientSecret specifies the client secret to use to get a token in OIDC authentication. -# auth.oidc.clientSecret = "" -# oidc.audience specifies the audience of the token in OIDC authentication. -# auth.oidc.audience = "" -# oidc.scope specifies the permissions of the token in OIDC authentication if AuthenticationMethod == "oidc". By default, this value is "". -# auth.oidc.scope = "" -# oidc.tokenEndpointURL specifies the URL which implements OIDC Token Endpoint. -# It will be used to get an OIDC token. -# auth.oidc.tokenEndpointURL = "" - -# oidc.additionalEndpointParams specifies additional parameters to be sent to the OIDC Token Endpoint. -# For example, if you want to specify the "audience" parameter, you can set as follow. -# frp will add "audience=" "var1=" to the additional parameters. -# auth.oidc.additionalEndpointParams.audience = "https://dev.auth.com/api/v2/" -# auth.oidc.additionalEndpointParams.var1 = "foobar" - -# Set admin address for control frpc's action by http api such as reload -webServer.addr = "127.0.0.1" -webServer.port = 7400 -webServer.user = "admin" -webServer.password = "admin" -# Admin assets directory. By default, these assets are bundled with frpc. -# webServer.assetsDir = "./static" - -# Enable golang pprof handlers in admin listener. -webServer.pprofEnable = false - -# The maximum amount of time a dial to server will wait for a connect to complete. Default value is 10 seconds. -# transport.dialServerTimeout = 10 - -# dialServerKeepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps. -# If negative, keep-alive probes are disabled. -# transport.dialServerKeepalive = 7200 - -# connections will be established in advance, default value is zero -transport.poolCount = 5 - -# If tcp stream multiplexing is used, default is true, it must be same with frps -# transport.tcpMux = true - -# Specify keep alive interval for tcp mux. -# only valid if tcpMux is enabled. -# transport.tcpMuxKeepaliveInterval = 60 - -# Communication protocol used to connect to server -# supports tcp, kcp, quic, websocket and wss now, default is tcp -transport.protocol = "tcp" - -# set client binding ip when connect server, default is empty. -# only when protocol = tcp or websocket, the value will be used. -transport.connectServerLocalIP = "0.0.0.0" - -# if you want to connect frps by http proxy or socks5 proxy or ntlm proxy, you can set proxyURL here or in global environment variables -# it only works when protocol is tcp -# transport.proxyURL = "http://user:passwd@192.168.1.128:8080" -# transport.proxyURL = "socks5://user:passwd@192.168.1.128:1080" -# transport.proxyURL = "ntlm://user:passwd@192.168.1.128:2080" - -# quic protocol options -# transport.quic.keepalivePeriod = 10 -# transport.quic.maxIdleTimeout = 30 -# transport.quic.maxIncomingStreams = 100000 - -# If tls.enable is true, frpc will connect frps by tls. -# Since v0.50.0, the default value has been changed to true, and tls is enabled by default. -transport.tls.enable = true - -# transport.tls.certFile = "client.crt" -# transport.tls.keyFile = "client.key" -# transport.tls.trustedCaFile = "ca.crt" -# transport.tls.serverName = "example.com" - -# If the disableCustomTLSFirstByte is set to false, frpc will establish a connection with frps using the -# first custom byte when tls is enabled. -# Since v0.50.0, the default value has been changed to true, and the first custom byte is disabled by default. -# transport.tls.disableCustomTLSFirstByte = true - -# Heartbeat configure, it's not recommended to modify the default value. -# The default value of heartbeatInterval is 10 and heartbeatTimeout is 90. Set negative value -# to disable it. -# transport.heartbeatInterval = 30 -# transport.heartbeatTimeout = 90 - -# Specify a dns server, so frpc will use this instead of default one -# dnsServer = "8.8.8.8" - -# Proxy names you want to start. -# Default is empty, means all proxies. -# start = ["ssh", "dns"] - -# Specify udp packet size, unit is byte. If not set, the default value is 1500. -# This parameter should be same between client and server. -# It affects the udp and sudp proxy. -udpPacketSize = 1500 - -# Additional metadatas for client. -metadatas.var1 = "abc" -metadatas.var2 = "123" - -# Include other config files for proxies. -# includes = ["./confd/*.ini"] - -[[proxies]] -# 'ssh' is the unique proxy name -# If global user is not empty, it will be changed to {user}.{proxy} such as 'your_name.ssh' -name = "ssh" -type = "tcp" -localIP = "127.0.0.1" -localPort = 22 -# Limit bandwidth for this proxy, unit is KB and MB -transport.bandwidthLimit = "1MB" -# Where to limit bandwidth, can be 'client' or 'server', default is 'client' -transport.bandwidthLimitMode = "client" -# If true, traffic of this proxy will be encrypted, default is false -transport.useEncryption = false -# If true, traffic will be compressed -transport.useCompression = false -# Remote port listen by frps -remotePort = 6001 -# frps will load balancing connections for proxies in same group -loadBalancer.group = "test_group" -# group should have same group key -loadBalancer.groupKey = "123456" -# Enable health check for the backend service, it supports 'tcp' and 'http' now. -# frpc will connect local service's port to detect it's healthy status -healthCheck.type = "tcp" -# Health check connection timeout -healthCheck.timeoutSeconds = 3 -# If continuous failed in 3 times, the proxy will be removed from frps -healthCheck.maxFailed = 3 -# Every 10 seconds will do a health check -healthCheck.intervalSeconds = 10 -# Additional meta info for each proxy. It will be passed to the server-side plugin for use. -metadatas.var1 = "abc" -metadatas.var2 = "123" -# You can add some extra information to the proxy through annotations. -# These annotations will be displayed on the frps dashboard. -[proxies.annotations] -key1 = "value1" -"prefix/key2" = "value2" - -[[proxies]] -name = "ssh_random" -type = "tcp" -localIP = "192.168.31.100" -localPort = 22 -# If remotePort is 0, frps will assign a random port for you -remotePort = 0 - -[[proxies]] -name = "dns" -type = "udp" -localIP = "114.114.114.114" -localPort = 53 -remotePort = 6002 - -# Resolve your domain names to [serverAddr] so you can use http://web01.yourdomain.com to browse web01 and http://web02.yourdomain.com to browse web02 -[[proxies]] -name = "web01" -type = "http" -localIP = "127.0.0.1" -localPort = 80 -# http username and password are safety certification for http protocol -# if not set, you can access this customDomains without certification -httpUser = "admin" -httpPassword = "admin" -# if domain for frps is frps.com, then you can access [web01] proxy by URL http://web01.frps.com -subdomain = "web01" -customDomains = ["web01.yourdomain.com"] -# locations is only available for http type -locations = ["/", "/pic"] -# route requests to this service if http basic auto user is abc -# routeByHTTPUser = abc -hostHeaderRewrite = "example.com" -requestHeaders.set.x-from-where = "frp" -healthCheck.type = "http" -# frpc will send a GET http request '/status' to local http service -# http service is alive when it return 2xx http response code -healthCheck.path = "/status" -healthCheck.intervalSeconds = 10 -healthCheck.maxFailed = 3 -healthCheck.timeoutSeconds = 3 - -[[proxies]] -name = "web02" -type = "https" -localIP = "127.0.0.1" -localPort = 8000 -subdomain = "web02" -customDomains = ["web02.yourdomain.com"] -# if not empty, frpc will use proxy protocol to transfer connection info to your local service -# v1 or v2 or empty -transport.proxyProtocolVersion = "v2" - -[[proxies]] -name = "tcpmuxhttpconnect" -type = "tcpmux" -multiplexer = "httpconnect" -localIP = "127.0.0.1" -localPort = 10701 -customDomains = ["tunnel1"] -# routeByHTTPUser = "user1" - -[[proxies]] -name = "plugin_unix_domain_socket" -type = "tcp" -remotePort = 6003 -# if plugin is defined, localIP and localPort is useless -# plugin will handle connections got from frps -[proxies.plugin] -type = "unix_domain_socket" -unixPath = "/var/run/docker.sock" - -[[proxies]] -name = "plugin_http_proxy" -type = "tcp" -remotePort = 6004 -[proxies.plugin] -type = "http_proxy" -httpUser = "abc" -httpPassword = "abc" - -[[proxies]] -name = "plugin_socks5" -type = "tcp" -remotePort = 6005 -[proxies.plugin] -type = "socks5" -username = "abc" -password = "abc" - -[[proxies]] -name = "plugin_static_file" -type = "tcp" -remotePort = 6006 -[proxies.plugin] -type = "static_file" -localPath = "/var/www/blog" -stripPrefix = "static" -httpUser = "abc" -httpPassword = "abc" - -[[proxies]] -name = "plugin_https2http" -type = "https" -customDomains = ["test.yourdomain.com"] -[proxies.plugin] -type = "https2http" -localAddr = "127.0.0.1:80" -crtPath = "./server.crt" -keyPath = "./server.key" -hostHeaderRewrite = "127.0.0.1" -requestHeaders.set.x-from-where = "frp" - -[[proxies]] -name = "plugin_https2https" -type = "https" -customDomains = ["test.yourdomain.com"] -[proxies.plugin] -type = "https2https" -localAddr = "127.0.0.1:443" -crtPath = "./server.crt" -keyPath = "./server.key" -hostHeaderRewrite = "127.0.0.1" -requestHeaders.set.x-from-where = "frp" - -[[proxies]] -name = "plugin_http2https" -type = "http" -customDomains = ["test.yourdomain.com"] -[proxies.plugin] -type = "http2https" -localAddr = "127.0.0.1:443" -hostHeaderRewrite = "127.0.0.1" -requestHeaders.set.x-from-where = "frp" - -[[proxies]] -name = "secret_tcp" -# If the type is secret tcp, remotePort is useless -# Who want to connect local port should deploy another frpc with stcp proxy and role is visitor -type = "stcp" -# secretKey is used for authentication for visitors -secretKey = "abcdefg" -localIP = "127.0.0.1" -localPort = 22 -# If not empty, only visitors from specified users can connect. -# Otherwise, visitors from same user can connect. '*' means allow all users. -allowUsers = ["*"] - -[[proxies]] -name = "p2p_tcp" -type = "xtcp" -secretKey = "abcdefg" -localIP = "127.0.0.1" -localPort = 22 -# If not empty, only visitors from specified users can connect. -# Otherwise, visitors from same user can connect. '*' means allow all users. -allowUsers = ["user1", "user2"] - -# frpc role visitor -> frps -> frpc role server -[[visitors]] -name = "secret_tcp_visitor" -type = "stcp" -# the server name you want to visitor -serverName = "secret_tcp" -secretKey = "abcdefg" -# connect this address to visitor stcp server -bindAddr = "127.0.0.1" -# bindPort can be less than 0, it means don't bind to the port and only receive connections redirected from -# other visitors. (This is not supported for SUDP now) -bindPort = 9000 - -[[visitors]] -name = "p2p_tcp_visitor" -type = "xtcp" -# if the server user is not set, it defaults to the current user -serverUser = "user1" -serverName = "p2p_tcp" -secretKey = "abcdefg" -bindAddr = "127.0.0.1" -# bindPort can be less than 0, it means don't bind to the port and only receive connections redirected from -# other visitors. (This is not supported for SUDP now) -bindPort = 9001 -# when automatic tunnel persistence is required, set it to true -keepTunnelOpen = false -# effective when keepTunnelOpen is set to true, the number of attempts to punch through per hour -maxRetriesAnHour = 8 -minRetryInterval = 90 -# fallbackTo = "stcp_visitor" -# fallbackTimeoutMs = 500 \ No newline at end of file diff --git a/apps/frpc/0.63.0/data/frps.ini b/apps/frpc/0.63.0/data/frps.ini deleted file mode 100644 index 229567a9..00000000 --- a/apps/frpc/0.63.0/data/frps.ini +++ /dev/null @@ -1,2 +0,0 @@ -[common] -bind_port = 7000 diff --git a/apps/frpc/0.63.0/data/frps.toml b/apps/frpc/0.63.0/data/frps.toml deleted file mode 100644 index cc3f831d..00000000 --- a/apps/frpc/0.63.0/data/frps.toml +++ /dev/null @@ -1,42 +0,0 @@ -# common -bindAddr = "0.0.0.0" -bindPort = 7000 -auth.method = "token" -auth.token = "token123456" - -# udp by kcp -kcpBindPort = 7000 - -# udp by quic -#quicBindPort = 7002 -#transport.quic.keepalivePeriod = 10 -#transport.quic.maxIdleTimeout = 30 -#transport.quic.maxIncomingStreams = 100000 - -# web -#vhostHTTPPort = 40480 -#vhostHTTPSPort = 40443 -#subDomainHost = "example.com" - -# tls -transport.tls.force = true -#tls.force = false # 版本0.52.0到0.55.0用这个 -#transport.tls.certFile = "/etc/frp/ssl/server.crt" -#transport.tls.keyFile = "/etc/frp/ssl/server.key" -#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt" - -# dashboard -webServer.addr = "0.0.0.0" -webServer.port = 7001 -webServer.user = "admin" -webServer.password = "password123456" -webServer.pprofEnable = false -# webServer.tls.certFile = "server.crt" -# webServer.tls.keyFile = "server.key" - -# setting -transport.tcpMux = false -enablePrometheus = true -maxPortsPerClient = 0 -natholeAnalysisDataReserveHours = 168 -udpPacketSize = 1500 \ No newline at end of file diff --git a/apps/frpc/0.63.0/data/frps_full.ini b/apps/frpc/0.63.0/data/frps_full.ini deleted file mode 100644 index 2d5e08e1..00000000 --- a/apps/frpc/0.63.0/data/frps_full.ini +++ /dev/null @@ -1,168 +0,0 @@ -# [common] is integral section -[common] -# A literal address or host name for IPv6 must be enclosed -# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80" -# For single "bind_addr" field, no need square brackets, like "bind_addr = ::". -bind_addr = 0.0.0.0 -bind_port = 7000 - -# udp port to help make udp hole to penetrate nat -bind_udp_port = 7001 - -# udp port used for kcp protocol, it can be same with 'bind_port'. -# if not set, kcp is disabled in frps. -kcp_bind_port = 7000 - -# udp port used for quic protocol. -# if not set, quic is disabled in frps. -# quic_bind_port = 7002 -# quic protocol options -# quic_keepalive_period = 10 -# quic_max_idle_timeout = 30 -# quic_max_incoming_streams = 100000 - -# specify which address proxy will listen for, default value is same with bind_addr -# proxy_bind_addr = 127.0.0.1 - -# if you want to support virtual host, you must set the http port for listening (optional) -# Note: http port and https port can be same with bind_port -vhost_http_port = 80 -vhost_https_port = 443 - -# response header timeout(seconds) for vhost http server, default is 60s -# vhost_http_timeout = 60 - -# tcpmux_httpconnect_port specifies the port that the server listens for TCP -# HTTP CONNECT requests. If the value is 0, the server will not multiplex TCP -# requests on one single port. If it's not - it will listen on this value for -# HTTP CONNECT requests. By default, this value is 0. -# tcpmux_httpconnect_port = 1337 - -# If tcpmux_passthrough is true, frps won't do any update on traffic. -# tcpmux_passthrough = false - -# set dashboard_addr and dashboard_port to view dashboard of frps -# dashboard_addr's default value is same with bind_addr -# dashboard is available only if dashboard_port is set -dashboard_addr = 0.0.0.0 -dashboard_port = 7500 - -# dashboard user and passwd for basic auth protect -dashboard_user = admin -dashboard_pwd = admin - -# dashboard TLS mode -dashboard_tls_mode = false -# dashboard_tls_cert_file = server.crt -# dashboard_tls_key_file = server.key - -# enable_prometheus will export prometheus metrics on {dashboard_addr}:{dashboard_port} in /metrics api. -enable_prometheus = true - -# dashboard assets directory(only for debug mode) -# assets_dir = ./static - -# console or real logFile path like ./frps.log -log_file = ./frps.log - -# trace, debug, info, warn, error -log_level = info - -log_max_days = 3 - -# disable log colors when log_file is console, default is false -disable_log_color = false - -# DetailedErrorsToClient defines whether to send the specific error (with debug info) to frpc. By default, this value is true. -detailed_errors_to_client = true - -# authentication_method specifies what authentication method to use authenticate frpc with frps. -# If "token" is specified - token will be read into login message. -# If "oidc" is specified - OIDC (Open ID Connect) token will be issued using OIDC settings. By default, this value is "token". -authentication_method = token - -# authenticate_heartbeats specifies whether to include authentication token in heartbeats sent to frps. By default, this value is false. -authenticate_heartbeats = false - -# AuthenticateNewWorkConns specifies whether to include authentication token in new work connections sent to frps. By default, this value is false. -authenticate_new_work_conns = false - -# auth token -token = 12345678 - -# oidc_issuer specifies the issuer to verify OIDC tokens with. -# By default, this value is "". -oidc_issuer = - -# oidc_audience specifies the audience OIDC tokens should contain when validated. -# By default, this value is "". -oidc_audience = - -# oidc_skip_expiry_check specifies whether to skip checking if the OIDC token is expired. -# By default, this value is false. -oidc_skip_expiry_check = false - -# oidc_skip_issuer_check specifies whether to skip checking if the OIDC token's issuer claim matches the issuer specified in OidcIssuer. -# By default, this value is false. -oidc_skip_issuer_check = false - -# heartbeat configure, it's not recommended to modify the default value -# the default value of heartbeat_timeout is 90. Set negative value to disable it. -# heartbeat_timeout = 90 - -# user_conn_timeout configure, it's not recommended to modify the default value -# the default value of user_conn_timeout is 10 -# user_conn_timeout = 10 - -# only allow frpc to bind ports you list, if you set nothing, there won't be any limit -allow_ports = 2000-3000,3001,3003,4000-50000 - -# pool_count in each proxy will change to max_pool_count if they exceed the maximum value -max_pool_count = 5 - -# max ports can be used for each client, default value is 0 means no limit -max_ports_per_client = 0 - -# tls_only specifies whether to only accept TLS-encrypted connections. By default, the value is false. -tls_only = false - -# tls_cert_file = server.crt -# tls_key_file = server.key -# tls_trusted_ca_file = ca.crt - -# if subdomain_host is not empty, you can set subdomain when type is http or https in frpc's configure file -# when subdomain is test, the host used by routing is test.frps.com -subdomain_host = frps.com - -# if tcp stream multiplexing is used, default is true -# tcp_mux = true - -# specify keep alive interval for tcp mux. -# only valid if tcp_mux is true. -# tcp_mux_keepalive_interval = 60 - -# tcp_keepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps. -# If negative, keep-alive probes are disabled. -# tcp_keepalive = 7200 - -# custom 404 page for HTTP requests -# custom_404_page = /path/to/404.html - -# specify udp packet size, unit is byte. If not set, the default value is 1500. -# This parameter should be same between client and server. -# It affects the udp and sudp proxy. -udp_packet_size = 1500 - -# Enable golang pprof handlers in dashboard listener. -# Dashboard port must be set first -pprof_enable = false - -[plugin.user-manager] -addr = 127.0.0.1:9000 -path = /handler -ops = Login - -[plugin.port-manager] -addr = 127.0.0.1:9001 -path = /handler -ops = NewProxy diff --git a/apps/frpc/0.63.0/data/frps_full.toml b/apps/frpc/0.63.0/data/frps_full.toml deleted file mode 100644 index f739d4d4..00000000 --- a/apps/frpc/0.63.0/data/frps_full.toml +++ /dev/null @@ -1,164 +0,0 @@ -# This configuration file is for reference only. Please do not use this configuration directly to run the program as it may have various issues. - -# A literal address or host name for IPv6 must be enclosed -# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80" -# For single "bindAddr" field, no need square brackets, like `bindAddr = "::"`. -bindAddr = "0.0.0.0" -bindPort = 7000 - -# udp port used for kcp protocol, it can be same with 'bindPort'. -# if not set, kcp is disabled in frps. -kcpBindPort = 7000 - -# udp port used for quic protocol. -# if not set, quic is disabled in frps. -# quicBindPort = 7002 - -# Specify which address proxy will listen for, default value is same with bindAddr -# proxyBindAddr = "127.0.0.1" - -# quic protocol options -# transport.quic.keepalivePeriod = 10 -# transport.quic.maxIdleTimeout = 30 -# transport.quic.maxIncomingStreams = 100000 - -# Heartbeat configure, it's not recommended to modify the default value -# The default value of heartbeatTimeout is 90. Set negative value to disable it. -# transport.heartbeatTimeout = 90 - -# Pool count in each proxy will keep no more than maxPoolCount. -transport.maxPoolCount = 5 - -# If tcp stream multiplexing is used, default is true -# transport.tcpMux = true - -# Specify keep alive interval for tcp mux. -# only valid if tcpMux is true. -# transport.tcpMuxKeepaliveInterval = 60 - -# tcpKeepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps. -# If negative, keep-alive probes are disabled. -# transport.tcpKeepalive = 7200 - -# transport.tls.force specifies whether to only accept TLS-encrypted connections. By default, the value is false. -transport.tls.force = false - -# transport.tls.certFile = "server.crt" -# transport.tls.keyFile = "server.key" -# transport.tls.trustedCaFile = "ca.crt" - -# If you want to support virtual host, you must set the http port for listening (optional) -# Note: http port and https port can be same with bindPort -vhostHTTPPort = 80 -vhostHTTPSPort = 443 - -# Response header timeout(seconds) for vhost http server, default is 60s -# vhostHTTPTimeout = 60 - -# tcpmuxHTTPConnectPort specifies the port that the server listens for TCP -# HTTP CONNECT requests. If the value is 0, the server will not multiplex TCP -# requests on one single port. If it's not - it will listen on this value for -# HTTP CONNECT requests. By default, this value is 0. -# tcpmuxHTTPConnectPort = 1337 - -# If tcpmuxPassthrough is true, frps won't do any update on traffic. -# tcpmuxPassthrough = false - -# Configure the web server to enable the dashboard for frps. -# dashboard is available only if webServer.port is set. -webServer.addr = "127.0.0.1" -webServer.port = 7500 -webServer.user = "admin" -webServer.password = "admin" -# webServer.tls.certFile = "server.crt" -# webServer.tls.keyFile = "server.key" -# dashboard assets directory(only for debug mode) -# webServer.assetsDir = "./static" - -# Enable golang pprof handlers in dashboard listener. -# Dashboard port must be set first -webServer.pprofEnable = false - -# enablePrometheus will export prometheus metrics on webServer in /metrics api. -enablePrometheus = true - -# console or real logFile path like ./frps.log -log.to = "./frps.log" -# trace, debug, info, warn, error -log.level = "info" -log.maxDays = 3 -# disable log colors when log.to is console, default is false -log.disablePrintColor = false - -# DetailedErrorsToClient defines whether to send the specific error (with debug info) to frpc. By default, this value is true. -detailedErrorsToClient = true - -# auth.method specifies what authentication method to use authenticate frpc with frps. -# If "token" is specified - token will be read into login message. -# If "oidc" is specified - OIDC (Open ID Connect) token will be issued using OIDC settings. By default, this value is "token". -auth.method = "token" - -# auth.additionalScopes specifies additional scopes to include authentication information. -# Optional values are HeartBeats, NewWorkConns. -# auth.additionalScopes = ["HeartBeats", "NewWorkConns"] - -# auth token -auth.token = "12345678" - -# oidc issuer specifies the issuer to verify OIDC tokens with. -auth.oidc.issuer = "" -# oidc audience specifies the audience OIDC tokens should contain when validated. -auth.oidc.audience = "" -# oidc skipExpiryCheck specifies whether to skip checking if the OIDC token is expired. -auth.oidc.skipExpiryCheck = false -# oidc skipIssuerCheck specifies whether to skip checking if the OIDC token's issuer claim matches the issuer specified in OidcIssuer. -auth.oidc.skipIssuerCheck = false - -# userConnTimeout specifies the maximum time to wait for a work connection. -# userConnTimeout = 10 - -# Only allow frpc to bind ports you list. By default, there won't be any limit. -allowPorts = [ - { start = 2000, end = 3000 }, - { single = 3001 }, - { single = 3003 }, - { start = 4000, end = 50000 } -] - -# Max ports can be used for each client, default value is 0 means no limit -maxPortsPerClient = 0 - -# If subDomainHost is not empty, you can set subdomain when type is http or https in frpc's configure file -# When subdomain is test, the host used by routing is test.frps.com -subDomainHost = "frps.com" - -# custom 404 page for HTTP requests -# custom404Page = "/path/to/404.html" - -# specify udp packet size, unit is byte. If not set, the default value is 1500. -# This parameter should be same between client and server. -# It affects the udp and sudp proxy. -udpPacketSize = 1500 - -# Retention time for NAT hole punching strategy data. -natholeAnalysisDataReserveHours = 168 - -# ssh tunnel gateway -# If you want to enable this feature, the bindPort parameter is required, while others are optional. -# By default, this feature is disabled. It will be enabled if bindPort is greater than 0. -# sshTunnelGateway.bindPort = 2200 -# sshTunnelGateway.privateKeyFile = "/home/frp-user/.ssh/id_rsa" -# sshTunnelGateway.autoGenPrivateKeyPath = "" -# sshTunnelGateway.authorizedKeysFile = "/home/frp-user/.ssh/authorized_keys" - -[[httpPlugins]] -name = "user-manager" -addr = "127.0.0.1:9000" -path = "/handler" -ops = ["Login"] - -[[httpPlugins]] -name = "port-manager" -addr = "127.0.0.1:9001" -path = "/handler" -ops = ["NewProxy"] \ No newline at end of file diff --git a/apps/frpc/0.63.0/docker-compose.yml b/apps/frpc/0.63.0/docker-compose.yml deleted file mode 100644 index 009778d7..00000000 --- a/apps/frpc/0.63.0/docker-compose.yml +++ /dev/null @@ -1,12 +0,0 @@ -services: - frpc: - container_name: ${CONTAINER_NAME} - restart: always - network_mode: "host" - volumes: - #- "${CONFIG_FILE_PATH}:/etc/frp/frpc.ini" #截止5.1.3版本使用ini - - "${CONFIG_FILE_PATH}:/etc/frp/frpc.toml" - - "${SSL_FOLDER_PATH}:/etc/frp/ssl" - image: "snowdreamtech/frpc:0.63.0" - labels: - createdBy: "Apps" diff --git a/apps/frpc/README.md b/apps/frpc/README.md deleted file mode 100644 index 9e035d0e..00000000 --- a/apps/frpc/README.md +++ /dev/null @@ -1,1152 +0,0 @@ - -# frp - -[![Build Status](https://circleci.com/gh/fatedier/frp.svg?style=shield)](https://circleci.com/gh/fatedier/frp) -[![GitHub release](https://img.shields.io/github/tag/fatedier/frp.svg?label=release)](https://github.com/fatedier/frp/releases) - -[README](README.md) | [中文文档](README_zh.md) - -

Gold Sponsors

- -

- - - -   - - - -

- - - -## What is frp? - -frp is a fast reverse proxy that allows you to expose a local server located behind a NAT or firewall to the Internet. It currently supports **TCP** and **UDP**, as well as **HTTP** and **HTTPS** protocols, enabling requests to be forwarded to internal services via domain name. - -frp also offers a P2P connect mode. - -## Table of Contents - - - -- [frp](#frp) - - [What is frp?](#what-is-frp) - - [Table of Contents](#table-of-contents) - - [Development Status](#development-status) - - [Architecture](#architecture) - - [Example Usage](#example-usage) - - [Access your computer in a LAN network via SSH](#access-your-computer-in-a-lan-network-via-ssh) - - [Accessing Internal Web Services with Custom Domains in LAN](#accessing-internal-web-services-with-custom-domains-in-lan) - - [Forward DNS query requests](#forward-dns-query-requests) - - [Forward Unix Domain Socket](#forward-unix-domain-socket) - - [Expose a simple HTTP file server](#expose-a-simple-http-file-server) - - [Enable HTTPS for a local HTTP(S) service](#enable-https-for-a-local-https-service) - - [Expose your service privately](#expose-your-service-privately) - - [P2P Mode](#p2p-mode) - - [Features](#features) - - [Configuration Files](#configuration-files) - - [Using Environment Variables](#using-environment-variables) - - [Split Configures Into Different Files](#split-configures-into-different-files) - - [Dashboard](#dashboard) - - [Admin UI](#admin-ui) - - [Monitor](#monitor) - - [Prometheus](#prometheus) - - [Authenticating the Client](#authenticating-the-client) - - [Token Authentication](#token-authentication) - - [OIDC Authentication](#oidc-authentication) - - [Encryption and Compression](#encryption-and-compression) - - [TLS](#tls) - - [Hot-Reloading frpc configuration](#hot-reloading-frpc-configuration) - - [Get proxy status from client](#get-proxy-status-from-client) - - [Only allowing certain ports on the server](#only-allowing-certain-ports-on-the-server) - - [Port Reuse](#port-reuse) - - [Bandwidth Limit](#bandwidth-limit) - - [For Each Proxy](#for-each-proxy) - - [TCP Stream Multiplexing](#tcp-stream-multiplexing) - - [Support KCP Protocol](#support-kcp-protocol) - - [Support QUIC Protocol](#support-quic-protocol) - - [Connection Pooling](#connection-pooling) - - [Load balancing](#load-balancing) - - [Service Health Check](#service-health-check) - - [Rewriting the HTTP Host Header](#rewriting-the-http-host-header) - - [Setting other HTTP Headers](#setting-other-http-headers) - - [Get Real IP](#get-real-ip) - - [HTTP X-Forwarded-For](#http-x-forwarded-for) - - [Proxy Protocol](#proxy-protocol) - - [Require HTTP Basic Auth (Password) for Web Services](#require-http-basic-auth-password-for-web-services) - - [Custom Subdomain Names](#custom-subdomain-names) - - [URL Routing](#url-routing) - - [TCP Port Multiplexing](#tcp-port-multiplexing) - - [Connecting to frps via HTTP PROXY](#connecting-to-frps-via-http-proxy) - - [Range ports mapping](#range-ports-mapping) - - [Client Plugins](#client-plugins) - - [Server Manage Plugins](#server-manage-plugins) - - [Development Plan](#development-plan) - - [Contributing](#contributing) - - [Donation](#donation) - - [GitHub Sponsors](#github-sponsors) - - [PayPal](#paypal) - - - -## Development Status - -frp is currently under development. You can try the latest release version in the `master` branch, or use the `dev` branch to access the version currently in development. - -We are currently working on version 2 and attempting to perform some code refactoring and improvements. However, please note that it will not be compatible with version 1. - -We will transition from version 0 to version 1 at the appropriate time and will only accept bug fixes and improvements, rather than big feature requests. - -## Architecture - -![architecture](https://raw.githubusercontent.com/fatedier/frp/dev/doc/pic/architecture.png) - -## Example Usage - -To begin, download the latest program for your operating system and architecture from the [Release](https://github.com/fatedier/frp/releases) page. - -Next, place the `frps` binary and `frps.ini` configuration file on Server A, which has a public IP address. - -Finally, place the `frpc` binary and `frpc.ini` configuration file on Server B, which is located on a LAN that cannot be directly accessed from the public internet. - -### Access your computer in a LAN network via SSH - -1. Modify `frps.ini` on server A by setting the `bind_port` for frp clients to connect to: - - ```ini - # frps.ini - [common] - bind_port = 7000 - ``` - -2. Start `frps` on server A: - - `./frps -c ./frps.ini` - -3. Modify `frpc.ini` on server B and set the `server_addr` field to the public IP address of your frps server: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [ssh] - type = tcp - local_ip = 127.0.0.1 - local_port = 22 - remote_port = 6000 - ``` - -Note that the `local_port` (listened on the client) and `remote_port` (exposed on the server) are used for traffic going in and out of the frp system, while the `server_port` is used for communication between frps and frpc. - -4. Start `frpc` on server B: - - `./frpc -c ./frpc.ini` - -5. To access server B from another machine through server A via SSH (assuming the username is `test`), use the following command: - - `ssh -oPort=6000 test@x.x.x.x` - -### Accessing Internal Web Services with Custom Domains in LAN - -Sometimes we need to expose a local web service behind a NAT network to others for testing purposes with our own domain name. - -Unfortunately, we cannot resolve a domain name to a local IP. However, we can use frp to expose an HTTP(S) service. - -1. Modify `frps.ini` and set the HTTP port for vhost to 8080: - - ```ini - # frps.ini - [common] - bind_port = 7000 - vhost_http_port = 8080 - ``` - -2. Start `frps`: - - `./frps -c ./frps.ini` - -3. Modify `frpc.ini` and set `server_addr` to the IP address of the remote frps server. Specify the `local_port` of your web service: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [web] - type = http - local_port = 80 - custom_domains = www.example.com - ``` - -4. Start `frpc`: - - `./frpc -c ./frpc.ini` - -5. Map the A record of `www.example.com` to either the public IP of the remote frps server or a CNAME record pointing to your original domain. - -6. Visit your local web service using url `http://www.example.com:8080`. - -### Forward DNS query requests - -1. Modify `frps.ini`: - - ```ini - # frps.ini - [common] - bind_port = 7000 - ``` - -2. Start `frps`: - - `./frps -c ./frps.ini` - -3. Modify `frpc.ini` and set `server_addr` to the IP address of the remote frps server. Forward DNS query requests to the Google Public DNS server `8.8.8.8:53`: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [dns] - type = udp - local_ip = 8.8.8.8 - local_port = 53 - remote_port = 6000 - ``` - -4. Start frpc: - - `./frpc -c ./frpc.ini` - -5. Test DNS resolution using the `dig` command: - - `dig @x.x.x.x -p 6000 www.google.com` - -### Forward Unix Domain Socket - -Expose a Unix domain socket (e.g. the Docker daemon socket) as TCP. - -Configure `frps` as above. - -1. Start `frpc` with the following configuration: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [unix_domain_socket] - type = tcp - remote_port = 6000 - plugin = unix_domain_socket - plugin_unix_path = /var/run/docker.sock - ``` - -2. Test the configuration by getting the docker version using `curl`: - - `curl http://x.x.x.x:6000/version` - -### Expose a simple HTTP file server - -Expose a simple HTTP file server to access files stored in the LAN from the public Internet. - -Configure `frps` as described above, then: - -1. Start `frpc` with the following configuration: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [test_static_file] - type = tcp - remote_port = 6000 - plugin = static_file - plugin_local_path = /tmp/files - plugin_strip_prefix = static - plugin_http_user = abc - plugin_http_passwd = abc - ``` - -2. Visit `http://x.x.x.x:6000/static/` from your browser and specify correct username and password to view files in `/tmp/files` on the `frpc` machine. - -### Enable HTTPS for a local HTTP(S) service - -You may substitute `https2https` for the plugin, and point the `plugin_local_addr` to a HTTPS endpoint. - -1. Start `frpc` with the following configuration: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [test_https2http] - type = https - custom_domains = test.example.com - - plugin = https2http - plugin_local_addr = 127.0.0.1:80 - plugin_crt_path = ./server.crt - plugin_key_path = ./server.key - plugin_host_header_rewrite = 127.0.0.1 - plugin_header_X-From-Where = frp - ``` - -2. Visit `https://test.example.com`. - -### Expose your service privately - -To mitigate risks associated with exposing certain services directly to the public network, STCP (Secret TCP) mode requires a preshared key to be used for access to the service from other clients. - -Configure `frps` same as above. - -1. Start `frpc` on machine B with the following config. This example is for exposing the SSH service (port 22), and note the `sk` field for the preshared key, and that the `remote_port` field is removed here: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [secret_ssh] - type = stcp - sk = abcdefg - local_ip = 127.0.0.1 - local_port = 22 - ``` - -2. Start another `frpc` (typically on another machine C) with the following config to access the SSH service with a security key (`sk` field): - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [secret_ssh_visitor] - type = stcp - role = visitor - server_name = secret_ssh - sk = abcdefg - bind_addr = 127.0.0.1 - bind_port = 6000 - ``` - -3. On machine C, connect to SSH on machine B, using this command: - - `ssh -oPort=6000 127.0.0.1` - -### P2P Mode - -**xtcp** is designed to transmit large amounts of data directly between clients. A frps server is still needed, as P2P here only refers to the actual data transmission. - -Note that it may not work with all types of NAT devices. You might want to fallback to stcp if xtcp doesn't work. - -1. In `frps.ini` configure a UDP port for xtcp: - - ```ini - # frps.ini - bind_udp_port = 7001 - ``` - -2. Start `frpc` on machine B, and expose the SSH port. Note that the `remote_port` field is removed: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [p2p_ssh] - type = xtcp - sk = abcdefg - local_ip = 127.0.0.1 - local_port = 22 - ``` - -3. Start another `frpc` (typically on another machine C) with the configuration to connect to SSH using P2P mode: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [p2p_ssh_visitor] - type = xtcp - role = visitor - server_name = p2p_ssh - sk = abcdefg - bind_addr = 127.0.0.1 - bind_port = 6000 - ``` - -4. On machine C, connect to SSH on machine B, using this command: - - `ssh -oPort=6000 127.0.0.1` - -## Features - -### Configuration Files - -Read the full example configuration files to find out even more features not described here. - -[Full configuration file for frps (Server)](./conf/frps_full.ini) - -[Full configuration file for frpc (Client)](./conf/frpc_full.ini) - -### Using Environment Variables - -Environment variables can be referenced in the configuration file, using Go's standard format: - -```ini -# frpc.ini -[common] -server_addr = {{ .Envs.FRP_SERVER_ADDR }} -server_port = 7000 - -[ssh] -type = tcp -local_ip = 127.0.0.1 -local_port = 22 -remote_port = {{ .Envs.FRP_SSH_REMOTE_PORT }} -``` - -With the config above, variables can be passed into `frpc` program like this: - -``` -export FRP_SERVER_ADDR="x.x.x.x" -export FRP_SSH_REMOTE_PORT="6000" -./frpc -c ./frpc.ini -``` - -`frpc` will render configuration file template using OS environment variables. Remember to prefix your reference with `.Envs`. - -### Split Configures Into Different Files - -You can split multiple proxy configs into different files and include them in the main file. - -```ini -# frpc.ini -[common] -server_addr = x.x.x.x -server_port = 7000 -includes=./confd/*.ini -``` - -```ini -# ./confd/test.ini -[ssh] -type = tcp -local_ip = 127.0.0.1 -local_port = 22 -remote_port = 6000 -``` - -### Dashboard - -Check frp's status and proxies' statistics information by Dashboard. - -Configure a port for dashboard to enable this feature: - -```ini -[common] -dashboard_port = 7500 -# dashboard's username and password are both optional -dashboard_user = admin -dashboard_pwd = admin -``` - -Then visit `http://[server_addr]:7500` to see the dashboard, with username and password both being `admin`. - -Additionally, you can use HTTPS port by using your domains wildcard or normal SSL certificate: - -```ini -[common] -dashboard_port = 7500 -# dashboard's username and password are both optional -dashboard_user = admin -dashboard_pwd = admin -dashboard_tls_mode = true -dashboard_tls_cert_file = server.crt -dashboard_tls_key_file = server.key -``` - -Then visit `https://[server_addr]:7500` to see the dashboard in secure HTTPS connection, with username and password both being `admin`. - -![dashboard](https://raw.githubusercontent.com/fatedier/frp/dev/doc/pic/dashboard.png) - -### Admin UI - -The Admin UI helps you check and manage frpc's configuration. - -Configure an address for admin UI to enable this feature: - -```ini -[common] -admin_addr = 127.0.0.1 -admin_port = 7400 -admin_user = admin -admin_pwd = admin -``` - -Then visit `http://127.0.0.1:7400` to see admin UI, with username and password both being `admin`. - -### Monitor - -When dashboard is enabled, frps will save monitor data in cache. It will be cleared after process restart. - -Prometheus is also supported. - -#### Prometheus - -Enable dashboard first, then configure `enable_prometheus = true` in `frps.ini`. - -`http://{dashboard_addr}/metrics` will provide prometheus monitor data. - -### Authenticating the Client - -There are 2 authentication methods to authenticate frpc with frps. - -You can decide which one to use by configuring `authentication_method` under `[common]` in `frpc.ini` and `frps.ini`. - -Configuring `authenticate_heartbeats = true` under `[common]` will use the configured authentication method to add and validate authentication on every heartbeat between frpc and frps. - -Configuring `authenticate_new_work_conns = true` under `[common]` will do the same for every new work connection between frpc and frps. - -#### Token Authentication - -When specifying `authentication_method = token` under `[common]` in `frpc.ini` and `frps.ini` - token based authentication will be used. - -Make sure to specify the same `token` in the `[common]` section in `frps.ini` and `frpc.ini` for frpc to pass frps validation - -#### OIDC Authentication - -When specifying `authentication_method = oidc` under `[common]` in `frpc.ini` and `frps.ini` - OIDC based authentication will be used. - -OIDC stands for OpenID Connect, and the flow used is called [Client Credentials Grant](https://tools.ietf.org/html/rfc6749#section-4.4). - -To use this authentication type - configure `frpc.ini` and `frps.ini` as follows: - -```ini -# frps.ini -[common] -authentication_method = oidc -oidc_issuer = https://example-oidc-issuer.com/ -oidc_audience = https://oidc-audience.com/.default -``` - -```ini -# frpc.ini -[common] -authentication_method = oidc -oidc_client_id = 98692467-37de-409a-9fac-bb2585826f18 # Replace with OIDC client ID -oidc_client_secret = oidc_secret -oidc_audience = https://oidc-audience.com/.default -oidc_token_endpoint_url = https://example-oidc-endpoint.com/oauth2/v2.0/token -``` - -### Encryption and Compression - -The features are off by default. You can turn on encryption and/or compression: - -```ini -# frpc.ini -[ssh] -type = tcp -local_port = 22 -remote_port = 6000 -use_encryption = true -use_compression = true -``` - -#### TLS - -frp supports the TLS protocol between `frpc` and `frps` since v0.25.0. - -For port multiplexing, frp sends a first byte `0x17` to dial a TLS connection. - -Configure `tls_enable = true` in the `[common]` section to `frpc.ini` to enable this feature. - -To **enforce** `frps` to only accept TLS connections - configure `tls_only = true` in the `[common]` section in `frps.ini`. **This is optional.** - -**`frpc` TLS settings (under the `[common]` section):** -```ini -tls_enable = true -tls_cert_file = certificate.crt -tls_key_file = certificate.key -tls_trusted_ca_file = ca.crt -``` - -**`frps` TLS settings (under the `[common]` section):** -```ini -tls_only = true -tls_enable = true -tls_cert_file = certificate.crt -tls_key_file = certificate.key -tls_trusted_ca_file = ca.crt -``` - -You will need **a root CA cert** and **at least one SSL/TLS certificate**. It **can** be self-signed or regular (such as Let's Encrypt or another SSL/TLS certificate provider). - -If you using `frp` via IP address and not hostname, make sure to set the appropriate IP address in the Subject Alternative Name (SAN) area when generating SSL/TLS Certificates. - -Given an example: - -* Prepare openssl config file. It exists at `/etc/pki/tls/openssl.cnf` in Linux System and `/System/Library/OpenSSL/openssl.cnf` in MacOS, and you can copy it to current path, like `cp /etc/pki/tls/openssl.cnf ./my-openssl.cnf`. If not, you can build it by yourself, like: -``` -cat > my-openssl.cnf << EOF -[ ca ] -default_ca = CA_default -[ CA_default ] -x509_extensions = usr_cert -[ req ] -default_bits = 2048 -default_md = sha256 -default_keyfile = privkey.pem -distinguished_name = req_distinguished_name -attributes = req_attributes -x509_extensions = v3_ca -string_mask = utf8only -[ req_distinguished_name ] -[ req_attributes ] -[ usr_cert ] -basicConstraints = CA:FALSE -nsComment = "OpenSSL Generated Certificate" -subjectKeyIdentifier = hash -authorityKeyIdentifier = keyid,issuer -[ v3_ca ] -subjectKeyIdentifier = hash -authorityKeyIdentifier = keyid:always,issuer -basicConstraints = CA:true -EOF -``` - -* build ca certificates: -``` -openssl genrsa -out ca.key 2048 -openssl req -x509 -new -nodes -key ca.key -subj "/CN=example.ca.com" -days 5000 -out ca.crt -``` - -* build frps certificates: -``` -openssl genrsa -out server.key 2048 - -openssl req -new -sha256 -key server.key \ - -subj "/C=XX/ST=DEFAULT/L=DEFAULT/O=DEFAULT/CN=server.com" \ - -reqexts SAN \ - -config <(cat my-openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:localhost,IP:127.0.0.1,DNS:example.server.com")) \ - -out server.csr - -openssl x509 -req -days 365 -sha256 \ - -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial \ - -extfile <(printf "subjectAltName=DNS:localhost,IP:127.0.0.1,DNS:example.server.com") \ - -out server.crt -``` - -* build frpc certificates: -``` -openssl genrsa -out client.key 2048 -openssl req -new -sha256 -key client.key \ - -subj "/C=XX/ST=DEFAULT/L=DEFAULT/O=DEFAULT/CN=client.com" \ - -reqexts SAN \ - -config <(cat my-openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:client.com,DNS:example.client.com")) \ - -out client.csr - -openssl x509 -req -days 365 -sha256 \ - -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial \ - -extfile <(printf "subjectAltName=DNS:client.com,DNS:example.client.com") \ - -out client.crt -``` - -### Hot-Reloading frpc configuration - -The `admin_addr` and `admin_port` fields are required for enabling HTTP API: - -```ini -# frpc.ini -[common] -admin_addr = 127.0.0.1 -admin_port = 7400 -``` - -Then run command `frpc reload -c ./frpc.ini` and wait for about 10 seconds to let `frpc` create or update or remove proxies. - -**Note that parameters in [common] section won't be modified except 'start'.** - -You can run command `frpc verify -c ./frpc.ini` before reloading to check if there are config errors. - -### Get proxy status from client - -Use `frpc status -c ./frpc.ini` to get status of all proxies. The `admin_addr` and `admin_port` fields are required for enabling HTTP API. - -### Only allowing certain ports on the server - -`allow_ports` in `frps.ini` is used to avoid abuse of ports: - -```ini -# frps.ini -[common] -allow_ports = 2000-3000,3001,3003,4000-50000 -``` - -`allow_ports` consists of specific ports or port ranges (lowest port number, dash `-`, highest port number), separated by comma `,`. - -### Port Reuse - -`vhost_http_port` and `vhost_https_port` in frps can use same port with `bind_port`. frps will detect the connection's protocol and handle it correspondingly. - -We would like to try to allow multiple proxies bind a same remote port with different protocols in the future. - -### Bandwidth Limit - -#### For Each Proxy - -```ini -# frpc.ini -[ssh] -type = tcp -local_port = 22 -remote_port = 6000 -bandwidth_limit = 1MB -``` - -Set `bandwidth_limit` in each proxy's configure to enable this feature. Supported units are `MB` and `KB`. - -Set `bandwidth_limit_mode` to `client` or `server` to limit bandwidth on the client or server side. Default is `client`. - -### TCP Stream Multiplexing - -frp supports tcp stream multiplexing since v0.10.0 like HTTP2 Multiplexing, in which case all logic connections to the same frpc are multiplexed into the same TCP connection. - -You can disable this feature by modify `frps.ini` and `frpc.ini`: - -```ini -# frps.ini and frpc.ini, must be same -[common] -tcp_mux = false -``` - -### Support KCP Protocol - -KCP is a fast and reliable protocol that can achieve the transmission effect of a reduction of the average latency by 30% to 40% and reduction of the maximum delay by a factor of three, at the cost of 10% to 20% more bandwidth wasted than TCP. - -KCP mode uses UDP as the underlying transport. Using KCP in frp: - -1. Enable KCP in frps: - - ```ini - # frps.ini - [common] - bind_port = 7000 - # Specify a UDP port for KCP. - kcp_bind_port = 7000 - ``` - - The `kcp_bind_port` number can be the same number as `bind_port`, since `bind_port` field specifies a TCP port. - -2. Configure `frpc.ini` to use KCP to connect to frps: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - # Same as the 'kcp_bind_port' in frps.ini - server_port = 7000 - protocol = kcp - ``` - -### Support QUIC Protocol - -QUIC is a new multiplexed transport built on top of UDP. - -Using QUIC in frp: - -1. Enable QUIC in frps: - - ```ini - # frps.ini - [common] - bind_port = 7000 - # Specify a UDP port for QUIC. - quic_bind_port = 7000 - ``` - - The `quic_bind_port` number can be the same number as `bind_port`, since `bind_port` field specifies a TCP port. - -2. Configure `frpc.ini` to use QUIC to connect to frps: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - # Same as the 'quic_bind_port' in frps.ini - server_port = 7000 - protocol = quic - ``` - -### Connection Pooling - -By default, frps creates a new frpc connection to the backend service upon a user request. With connection pooling, frps keeps a certain number of pre-established connections, reducing the time needed to establish a connection. - -This feature is suitable for a large number of short connections. - -1. Configure the limit of pool count each proxy can use in `frps.ini`: - - ```ini - # frps.ini - [common] - max_pool_count = 5 - ``` - -2. Enable and specify the number of connection pool: - - ```ini - # frpc.ini - [common] - pool_count = 1 - ``` - -### Load balancing - -Load balancing is supported by `group`. - -This feature is only available for types `tcp`, `http`, `tcpmux` now. - -```ini -# frpc.ini -[test1] -type = tcp -local_port = 8080 -remote_port = 80 -group = web -group_key = 123 - -[test2] -type = tcp -local_port = 8081 -remote_port = 80 -group = web -group_key = 123 -``` - -`group_key` is used for authentication. - -Connections to port 80 will be dispatched to proxies in the same group randomly. - -For type `tcp`, `remote_port` in the same group should be the same. - -For type `http`, `custom_domains`, `subdomain`, `locations` should be the same. - -### Service Health Check - -Health check feature can help you achieve high availability with load balancing. - -Add `health_check_type = tcp` or `health_check_type = http` to enable health check. - -With health check type **tcp**, the service port will be pinged (TCPing): - -```ini -# frpc.ini -[test1] -type = tcp -local_port = 22 -remote_port = 6000 -# Enable TCP health check -health_check_type = tcp -# TCPing timeout seconds -health_check_timeout_s = 3 -# If health check failed 3 times in a row, the proxy will be removed from frps -health_check_max_failed = 3 -# A health check every 10 seconds -health_check_interval_s = 10 -``` - -With health check type **http**, an HTTP request will be sent to the service and an HTTP 2xx OK response is expected: - -```ini -# frpc.ini -[web] -type = http -local_ip = 127.0.0.1 -local_port = 80 -custom_domains = test.example.com -# Enable HTTP health check -health_check_type = http -# frpc will send a GET request to '/status' -# and expect an HTTP 2xx OK response -health_check_url = /status -health_check_timeout_s = 3 -health_check_max_failed = 3 -health_check_interval_s = 10 -``` - -### Rewriting the HTTP Host Header - -By default frp does not modify the tunneled HTTP requests at all as it's a byte-for-byte copy. - -However, speaking of web servers and HTTP requests, your web server might rely on the `Host` HTTP header to determine the website to be accessed. frp can rewrite the `Host` header when forwarding the HTTP requests, with the `host_header_rewrite` field: - -```ini -# frpc.ini -[web] -type = http -local_port = 80 -custom_domains = test.example.com -host_header_rewrite = dev.example.com -``` - -The HTTP request will have the `Host` header rewritten to `Host: dev.example.com` when it reaches the actual web server, although the request from the browser probably has `Host: test.example.com`. - -### Setting other HTTP Headers - -Similar to `Host`, You can override other HTTP request headers with proxy type `http`. - -```ini -# frpc.ini -[web] -type = http -local_port = 80 -custom_domains = test.example.com -host_header_rewrite = dev.example.com -header_X-From-Where = frp -``` - -Note that parameter(s) prefixed with `header_` will be added to HTTP request headers. - -In this example, it will set header `X-From-Where: frp` in the HTTP request. - -### Get Real IP - -#### HTTP X-Forwarded-For - -This feature is for http proxy only. - -You can get user's real IP from HTTP request headers `X-Forwarded-For`. - -#### Proxy Protocol - -frp supports Proxy Protocol to send user's real IP to local services. It support all types except UDP. - -Here is an example for https service: - -```ini -# frpc.ini -[web] -type = https -local_port = 443 -custom_domains = test.example.com - -# now v1 and v2 are supported -proxy_protocol_version = v2 -``` - -You can enable Proxy Protocol support in nginx to expose user's real IP in HTTP header `X-Real-IP`, and then read `X-Real-IP` header in your web service for the real IP. - -### Require HTTP Basic Auth (Password) for Web Services - -Anyone who can guess your tunnel URL can access your local web server unless you protect it with a password. - -This enforces HTTP Basic Auth on all requests with the username and password specified in frpc's configure file. - -It can only be enabled when proxy type is http. - -```ini -# frpc.ini -[web] -type = http -local_port = 80 -custom_domains = test.example.com -http_user = abc -http_pwd = abc -``` - -Visit `http://test.example.com` in the browser and now you are prompted to enter the username and password. - -### Custom Subdomain Names - -It is convenient to use `subdomain` configure for http and https types when many people share one frps server. - -```ini -# frps.ini -subdomain_host = frps.com -``` - -Resolve `*.frps.com` to the frps server's IP. This is usually called a Wildcard DNS record. - -```ini -# frpc.ini -[web] -type = http -local_port = 80 -subdomain = test -``` - -Now you can visit your web service on `test.frps.com`. - -Note that if `subdomain_host` is not empty, `custom_domains` should not be the subdomain of `subdomain_host`. - -### URL Routing - -frp supports forwarding HTTP requests to different backend web services by url routing. - -`locations` specifies the prefix of URL used for routing. frps first searches for the most specific prefix location given by literal strings regardless of the listed order. - -```ini -# frpc.ini -[web01] -type = http -local_port = 80 -custom_domains = web.example.com -locations = / - -[web02] -type = http -local_port = 81 -custom_domains = web.example.com -locations = /news,/about -``` - -HTTP requests with URL prefix `/news` or `/about` will be forwarded to **web02** and other requests to **web01**. - -### TCP Port Multiplexing - -frp supports receiving TCP sockets directed to different proxies on a single port on frps, similar to `vhost_http_port` and `vhost_https_port`. - -The only supported TCP port multiplexing method available at the moment is `httpconnect` - HTTP CONNECT tunnel. - -When setting `tcpmux_httpconnect_port` to anything other than 0 in frps under `[common]`, frps will listen on this port for HTTP CONNECT requests. - -The host of the HTTP CONNECT request will be used to match the proxy in frps. Proxy hosts can be configured in frpc by configuring `custom_domain` and / or `subdomain` under `type = tcpmux` proxies, when `multiplexer = httpconnect`. - -For example: - -```ini -# frps.ini -[common] -bind_port = 7000 -tcpmux_httpconnect_port = 1337 -``` - -```ini -# frpc.ini -[common] -server_addr = x.x.x.x -server_port = 7000 - -[proxy1] -type = tcpmux -multiplexer = httpconnect -custom_domains = test1 -local_port = 80 - -[proxy2] -type = tcpmux -multiplexer = httpconnect -custom_domains = test2 -local_port = 8080 -``` - -In the above configuration - frps can be contacted on port 1337 with a HTTP CONNECT header such as: - -``` -CONNECT test1 HTTP/1.1\r\n\r\n -``` -and the connection will be routed to `proxy1`. - -### Connecting to frps via HTTP PROXY - -frpc can connect to frps using HTTP proxy if you set OS environment variable `HTTP_PROXY`, or if `http_proxy` is set in frpc.ini file. - -It only works when protocol is tcp. - -```ini -# frpc.ini -[common] -server_addr = x.x.x.x -server_port = 7000 -http_proxy = http://user:pwd@192.168.1.128:8080 -``` - -### Range ports mapping - -Proxy with names that start with `range:` will support mapping range ports. - -```ini -# frpc.ini -[range:test_tcp] -type = tcp -local_ip = 127.0.0.1 -local_port = 6000-6006,6007 -remote_port = 6000-6006,6007 -``` - -frpc will generate 8 proxies like `test_tcp_0`, `test_tcp_1`, ..., `test_tcp_7`. - -### Client Plugins - -frpc only forwards requests to local TCP or UDP ports by default. - -Plugins are used for providing rich features. There are built-in plugins such as `unix_domain_socket`, `http_proxy`, `socks5`, `static_file`, `http2https`, `https2http`, `https2https` and you can see [example usage](#example-usage). - -Specify which plugin to use with the `plugin` parameter. Configuration parameters of plugin should be started with `plugin_`. `local_ip` and `local_port` are not used for plugin. - -Using plugin **http_proxy**: - -```ini -# frpc.ini -[http_proxy] -type = tcp -remote_port = 6000 -plugin = http_proxy -plugin_http_user = abc -plugin_http_passwd = abc -``` - -`plugin_http_user` and `plugin_http_passwd` are configuration parameters used in `http_proxy` plugin. - -### Server Manage Plugins - -Read the [document](/doc/server_plugin.md). - -Find more plugins in [gofrp/plugin](https://github.com/gofrp/plugin). - -## Development Plan - -* Log HTTP request information in frps. - -## Contributing - -Interested in getting involved? We would like to help you! - -* Take a look at our [issues list](https://github.com/fatedier/frp/issues) and consider sending a Pull Request to **dev branch**. -* If you want to add a new feature, please create an issue first to describe the new feature, as well as the implementation approach. Once a proposal is accepted, create an implementation of the new features and submit it as a pull request. -* Sorry for my poor English. Improvements for this document are welcome, even some typo fixes. -* If you have great ideas, send an email to fatedier@gmail.com. - -**Note: We prefer you to give your advise in [issues](https://github.com/fatedier/frp/issues), so others with a same question can search it quickly and we don't need to answer them repeatedly.** - -## Donation - -If frp helps you a lot, you can support us by: - -### GitHub Sponsors - -Support us by [Github Sponsors](https://github.com/sponsors/fatedier). - -You can have your company's logo placed on README file of this project. - -### PayPal - -Donate money by [PayPal](https://www.paypal.me/fatedier) to my account **fatedier@gmail.com**. - diff --git a/apps/frpc/data.yml b/apps/frpc/data.yml deleted file mode 100644 index a462f052..00000000 --- a/apps/frpc/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: frpc-frp 客户端 -tags: - - 工具 -title: frp 是一种反向代理工具,常用于内网穿透(客户端) -description: frp 是一种反向代理工具,常用于内网穿透(客户端) -additionalProperties: - key: frpc - name: frpc-frp 客户端 - tags: - - Tool - shortDescZh: frp 是一种反向代理工具,常用于内网穿透(客户端) - shortDescEn: frp is a reverse proxy tool that is commonly used for intranet penetration(Client) - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://github.com/fatedier/frp - github: https://github.com/fatedier/frp - document: https://github.com/fatedier/frp/blob/dev/README_zh.md diff --git a/apps/frpc/latest/.env.sample b/apps/frpc/latest/.env.sample deleted file mode 100644 index 984ecd93..00000000 --- a/apps/frpc/latest/.env.sample +++ /dev/null @@ -1 +0,0 @@ -CONTAINER_NAME="frpc" \ No newline at end of file diff --git a/apps/frpc/latest/data.yml b/apps/frpc/latest/data.yml deleted file mode 100644 index ade86cdd..00000000 --- a/apps/frpc/latest/data.yml +++ /dev/null @@ -1,23 +0,0 @@ -additionalProperties: - formFields: - - default: ./data/frpc.toml - edit: true - envKey: CONFIG_FILE_PATH - labelEn: Configuration file path - labelZh: 配置文件路径 - required: true - type: text - - default: 6000 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port (determined by the configuration file) - labelZh: 端口 (由配置文件决定) - required: true - type: number - - default: ./data/ssl - edit: true - envKey: SSL_FOLDER_PATH - labelEn: Certificate folder path (corresponding to "/etc/frp/ssl" in container) - labelZh: 证书文件夹路径 (对应容器内 "/etc/frp/ssl") - required: true - type: text diff --git a/apps/frpc/latest/data/frpc.ini b/apps/frpc/latest/data/frpc.ini deleted file mode 100644 index 13a8e5f6..00000000 --- a/apps/frpc/latest/data/frpc.ini +++ /dev/null @@ -1,9 +0,0 @@ -[common] -server_addr = 127.0.0.1 -server_port = 7000 - -[ssh] -type = tcp -local_ip = 127.0.0.1 -local_port = 22 -remote_port = 6000 diff --git a/apps/frpc/latest/data/frpc.toml b/apps/frpc/latest/data/frpc.toml deleted file mode 100644 index 9e64a124..00000000 --- a/apps/frpc/latest/data/frpc.toml +++ /dev/null @@ -1,42 +0,0 @@ -# common -serverAddr = "1.2.3.4" -serverPort = 7000 -auth.method = "token" -auth.token = "token123456" -# supports tcp, kcp, quic, websocket and wss now, default is tcp -transport.protocol = "tcp" - -# dashboard -webServer.addr = "127.0.0.1" -webServer.port = 6000 -webServer.user = "admin" -webServer.password = "password123456" -webServer.pprofEnable = false - -# setting -loginFailExit = false -transport.tcpMux = false -transport.tls.enable = false -# transport.tls.certFile = "client.crt" -# transport.tls.keyFile = "client.key" -# transport.tls.trustedCaFile = "ca.crt" -# transport.tls.serverName = "example.com" - -# tls -#transport.tls.certFile = "/etc/frp/ssl/client.crt" -#transport.tls.keyFile = "/etc/frp/ssl/client.key" -#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt" - -[[proxies]] -name = "rdp_tcp" -type = "tcp" -localIP = "127.0.0.1" -localPort = 3389 -remotePort = 13389 - -[[proxies]] -name = "rdp_udp" -type = "udp" -localIP = "127.0.0.1" -localPort = 3389 -remotePort = 13389 \ No newline at end of file diff --git a/apps/frpc/latest/data/frpc_full.ini b/apps/frpc/latest/data/frpc_full.ini deleted file mode 100644 index 29f6bcab..00000000 --- a/apps/frpc/latest/data/frpc_full.ini +++ /dev/null @@ -1,365 +0,0 @@ -# [common] is integral section -[common] -# A literal address or host name for IPv6 must be enclosed -# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80" -# For single "server_addr" field, no need square brackets, like "server_addr = ::". -server_addr = 0.0.0.0 -server_port = 7000 - -# The maximum amount of time a dial to server will wait for a connect to complete. Default value is 10 seconds. -# dial_server_timeout = 10 - -# dial_server_keepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps. -# If negative, keep-alive probes are disabled. -# dial_server_keepalive = 7200 - -# if you want to connect frps by http proxy or socks5 proxy or ntlm proxy, you can set http_proxy here or in global environment variables -# it only works when protocol is tcp -# http_proxy = http://user:passwd@192.168.1.128:8080 -# http_proxy = socks5://user:passwd@192.168.1.128:1080 -# http_proxy = ntlm://user:passwd@192.168.1.128:2080 - -# console or real logFile path like ./frpc.log -log_file = ./frpc.log - -# trace, debug, info, warn, error -log_level = info - -log_max_days = 3 - -# disable log colors when log_file is console, default is false -disable_log_color = false - -# for authentication, should be same as your frps.ini -# authenticate_heartbeats specifies whether to include authentication token in heartbeats sent to frps. By default, this value is false. -authenticate_heartbeats = false - -# authenticate_new_work_conns specifies whether to include authentication token in new work connections sent to frps. By default, this value is false. -authenticate_new_work_conns = false - -# auth token -token = 12345678 - -authentication_method = - -# oidc_client_id specifies the client ID to use to get a token in OIDC authentication if AuthenticationMethod == "oidc". -# By default, this value is "". -oidc_client_id = - -# oidc_client_secret specifies the client secret to use to get a token in OIDC authentication if AuthenticationMethod == "oidc". -# By default, this value is "". -oidc_client_secret = - -# oidc_audience specifies the audience of the token in OIDC authentication if AuthenticationMethod == "oidc". By default, this value is "". -oidc_audience = - -# oidc_scope specifies the permisssions of the token in OIDC authentication if AuthenticationMethod == "oidc". By default, this value is "". -oidc_scope = - -# oidc_token_endpoint_url specifies the URL which implements OIDC Token Endpoint. -# It will be used to get an OIDC token if AuthenticationMethod == "oidc". By default, this value is "". -oidc_token_endpoint_url = - -# oidc_additional_xxx specifies additional parameters to be sent to the OIDC Token Endpoint. -# For example, if you want to specify the "audience" parameter, you can set as follow. -# frp will add "audience=" "var1=" to the additional parameters. -# oidc_additional_audience = https://dev.auth.com/api/v2/ -# oidc_additional_var1 = foobar - -# set admin address for control frpc's action by http api such as reload -admin_addr = 127.0.0.1 -admin_port = 7400 -admin_user = admin -admin_pwd = admin -# Admin assets directory. By default, these assets are bundled with frpc. -# assets_dir = ./static - -# connections will be established in advance, default value is zero -pool_count = 5 - -# if tcp stream multiplexing is used, default is true, it must be same with frps -# tcp_mux = true - -# specify keep alive interval for tcp mux. -# only valid if tcp_mux is true. -# tcp_mux_keepalive_interval = 60 - -# your proxy name will be changed to {user}.{proxy} -user = your_name - -# decide if exit program when first login failed, otherwise continuous relogin to frps -# default is true -login_fail_exit = true - -# communication protocol used to connect to server -# supports tcp, kcp, quic and websocket now, default is tcp -protocol = tcp - -# set client binding ip when connect server, default is empty. -# only when protocol = tcp or websocket, the value will be used. -connect_server_local_ip = 0.0.0.0 - -# quic protocol options -# quic_keepalive_period = 10 -# quic_max_idle_timeout = 30 -# quic_max_incoming_streams = 100000 - -# if tls_enable is true, frpc will connect frps by tls -tls_enable = true - -# tls_cert_file = client.crt -# tls_key_file = client.key -# tls_trusted_ca_file = ca.crt -# tls_server_name = example.com - -# specify a dns server, so frpc will use this instead of default one -# dns_server = 8.8.8.8 - -# proxy names you want to start separated by ',' -# default is empty, means all proxies -# start = ssh,dns - -# heartbeat configure, it's not recommended to modify the default value -# The default value of heartbeat_interval is 10 and heartbeat_timeout is 90. Set negative value -# to disable it. -# heartbeat_interval = 30 -# heartbeat_timeout = 90 - -# additional meta info for client -meta_var1 = 123 -meta_var2 = 234 - -# specify udp packet size, unit is byte. If not set, the default value is 1500. -# This parameter should be same between client and server. -# It affects the udp and sudp proxy. -udp_packet_size = 1500 - -# include other config files for proxies. -# includes = ./confd/*.ini - -# By default, frpc will connect frps with first custom byte if tls is enabled. -# If DisableCustomTLSFirstByte is true, frpc will not send that custom byte. -disable_custom_tls_first_byte = false - -# Enable golang pprof handlers in admin listener. -# Admin port must be set first. -pprof_enable = false - -# 'ssh' is the unique proxy name -# if user in [common] section is not empty, it will be changed to {user}.{proxy} such as 'your_name.ssh' -[ssh] -# tcp | udp | http | https | stcp | xtcp, default is tcp -type = tcp -local_ip = 127.0.0.1 -local_port = 22 -# limit bandwidth for this proxy, unit is KB and MB -bandwidth_limit = 1MB -# where to limit bandwidth, can be 'client' or 'server', default is 'client' -bandwidth_limit_mode = client -# true or false, if true, messages between frps and frpc will be encrypted, default is false -use_encryption = false -# if true, message will be compressed -use_compression = false -# remote port listen by frps -remote_port = 6001 -# frps will load balancing connections for proxies in same group -group = test_group -# group should have same group key -group_key = 123456 -# enable health check for the backend service, it support 'tcp' and 'http' now -# frpc will connect local service's port to detect it's healthy status -health_check_type = tcp -# health check connection timeout -health_check_timeout_s = 3 -# if continuous failed in 3 times, the proxy will be removed from frps -health_check_max_failed = 3 -# every 10 seconds will do a health check -health_check_interval_s = 10 -# additional meta info for each proxy -meta_var1 = 123 -meta_var2 = 234 - -[ssh_random] -type = tcp -local_ip = 127.0.0.1 -local_port = 22 -# if remote_port is 0, frps will assign a random port for you -remote_port = 0 - -# if you want to expose multiple ports, add 'range:' prefix to the section name -# frpc will generate multiple proxies such as 'tcp_port_6010', 'tcp_port_6011' and so on. -[range:tcp_port] -type = tcp -local_ip = 127.0.0.1 -local_port = 6010-6020,6022,6024-6028 -remote_port = 6010-6020,6022,6024-6028 -use_encryption = false -use_compression = false - -[dns] -type = udp -local_ip = 114.114.114.114 -local_port = 53 -remote_port = 6002 -use_encryption = false -use_compression = false - -[range:udp_port] -type = udp -local_ip = 127.0.0.1 -local_port = 6010-6020 -remote_port = 6010-6020 -use_encryption = false -use_compression = false - -# Resolve your domain names to [server_addr] so you can use http://web01.yourdomain.com to browse web01 and http://web02.yourdomain.com to browse web02 -[web01] -type = http -local_ip = 127.0.0.1 -local_port = 80 -use_encryption = false -use_compression = true -# http username and password are safety certification for http protocol -# if not set, you can access this custom_domains without certification -http_user = admin -http_pwd = admin -# if domain for frps is frps.com, then you can access [web01] proxy by URL http://web01.frps.com -subdomain = web01 -custom_domains = web01.yourdomain.com -# locations is only available for http type -locations = /,/pic -# route requests to this service if http basic auto user is abc -# route_by_http_user = abc -host_header_rewrite = example.com -# params with prefix "header_" will be used to update http request headers -header_X-From-Where = frp -health_check_type = http -# frpc will send a GET http request '/status' to local http service -# http service is alive when it return 2xx http response code -health_check_url = /status -health_check_interval_s = 10 -health_check_max_failed = 3 -health_check_timeout_s = 3 - -[web02] -type = https -local_ip = 127.0.0.1 -local_port = 8000 -use_encryption = false -use_compression = false -subdomain = web01 -custom_domains = web02.yourdomain.com -# if not empty, frpc will use proxy protocol to transfer connection info to your local service -# v1 or v2 or empty -proxy_protocol_version = v2 - -[plugin_unix_domain_socket] -type = tcp -remote_port = 6003 -# if plugin is defined, local_ip and local_port is useless -# plugin will handle connections got from frps -plugin = unix_domain_socket -# params with prefix "plugin_" that plugin needed -plugin_unix_path = /var/run/docker.sock - -[plugin_http_proxy] -type = tcp -remote_port = 6004 -plugin = http_proxy -plugin_http_user = abc -plugin_http_passwd = abc - -[plugin_socks5] -type = tcp -remote_port = 6005 -plugin = socks5 -plugin_user = abc -plugin_passwd = abc - -[plugin_static_file] -type = tcp -remote_port = 6006 -plugin = static_file -plugin_local_path = /var/www/blog -plugin_strip_prefix = static -plugin_http_user = abc -plugin_http_passwd = abc - -[plugin_https2http] -type = https -custom_domains = test.yourdomain.com -plugin = https2http -plugin_local_addr = 127.0.0.1:80 -plugin_crt_path = ./server.crt -plugin_key_path = ./server.key -plugin_host_header_rewrite = 127.0.0.1 -plugin_header_X-From-Where = frp - -[plugin_https2https] -type = https -custom_domains = test.yourdomain.com -plugin = https2https -plugin_local_addr = 127.0.0.1:443 -plugin_crt_path = ./server.crt -plugin_key_path = ./server.key -plugin_host_header_rewrite = 127.0.0.1 -plugin_header_X-From-Where = frp - -[plugin_http2https] -type = http -custom_domains = test.yourdomain.com -plugin = http2https -plugin_local_addr = 127.0.0.1:443 -plugin_host_header_rewrite = 127.0.0.1 -plugin_header_X-From-Where = frp - -[secret_tcp] -# If the type is secret tcp, remote_port is useless -# Who want to connect local port should deploy another frpc with stcp proxy and role is visitor -type = stcp -# sk used for authentication for visitors -sk = abcdefg -local_ip = 127.0.0.1 -local_port = 22 -use_encryption = false -use_compression = false - -# user of frpc should be same in both stcp server and stcp visitor -[secret_tcp_visitor] -# frpc role visitor -> frps -> frpc role server -role = visitor -type = stcp -# the server name you want to visitor -server_name = secret_tcp -sk = abcdefg -# connect this address to visitor stcp server -bind_addr = 127.0.0.1 -bind_port = 9000 -use_encryption = false -use_compression = false - -[p2p_tcp] -type = xtcp -sk = abcdefg -local_ip = 127.0.0.1 -local_port = 22 -use_encryption = false -use_compression = false - -[p2p_tcp_visitor] -role = visitor -type = xtcp -server_name = p2p_tcp -sk = abcdefg -bind_addr = 127.0.0.1 -bind_port = 9001 -use_encryption = false -use_compression = false - -[tcpmuxhttpconnect] -type = tcpmux -multiplexer = httpconnect -local_ip = 127.0.0.1 -local_port = 10701 -custom_domains = tunnel1 -# route_by_http_user = user1 diff --git a/apps/frpc/latest/data/frpc_full.toml b/apps/frpc/latest/data/frpc_full.toml deleted file mode 100644 index 67fd84ec..00000000 --- a/apps/frpc/latest/data/frpc_full.toml +++ /dev/null @@ -1,366 +0,0 @@ -# This configuration file is for reference only. Please do not use this configuration directly to run the program as it may have various issues. - -# your proxy name will be changed to {user}.{proxy} -user = "your_name" - -# A literal address or host name for IPv6 must be enclosed -# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80" -# For single serverAddr field, no need square brackets, like serverAddr = "::". -serverAddr = "0.0.0.0" -serverPort = 7000 - -# STUN server to help penetrate NAT hole. -# natHoleStunServer = "stun.easyvoip.com:3478" - -# Decide if exit program when first login failed, otherwise continuous relogin to frps -# default is true -loginFailExit = true - -# console or real logFile path like ./frpc.log -log.to = "./frpc.log" -# trace, debug, info, warn, error -log.level = "info" -log.maxDays = 3 -# disable log colors when log.to is console, default is false -log.disablePrintColor = false - -auth.method = "token" -# auth.additionalScopes specifies additional scopes to include authentication information. -# Optional values are HeartBeats, NewWorkConns. -# auth.additionalScopes = ["HeartBeats", "NewWorkConns"] - -# auth token -auth.token = "12345678" - -# oidc.clientID specifies the client ID to use to get a token in OIDC authentication. -# auth.oidc.clientID = "" -# oidc.clientSecret specifies the client secret to use to get a token in OIDC authentication. -# auth.oidc.clientSecret = "" -# oidc.audience specifies the audience of the token in OIDC authentication. -# auth.oidc.audience = "" -# oidc.scope specifies the permissions of the token in OIDC authentication if AuthenticationMethod == "oidc". By default, this value is "". -# auth.oidc.scope = "" -# oidc.tokenEndpointURL specifies the URL which implements OIDC Token Endpoint. -# It will be used to get an OIDC token. -# auth.oidc.tokenEndpointURL = "" - -# oidc.additionalEndpointParams specifies additional parameters to be sent to the OIDC Token Endpoint. -# For example, if you want to specify the "audience" parameter, you can set as follow. -# frp will add "audience=" "var1=" to the additional parameters. -# auth.oidc.additionalEndpointParams.audience = "https://dev.auth.com/api/v2/" -# auth.oidc.additionalEndpointParams.var1 = "foobar" - -# Set admin address for control frpc's action by http api such as reload -webServer.addr = "127.0.0.1" -webServer.port = 7400 -webServer.user = "admin" -webServer.password = "admin" -# Admin assets directory. By default, these assets are bundled with frpc. -# webServer.assetsDir = "./static" - -# Enable golang pprof handlers in admin listener. -webServer.pprofEnable = false - -# The maximum amount of time a dial to server will wait for a connect to complete. Default value is 10 seconds. -# transport.dialServerTimeout = 10 - -# dialServerKeepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps. -# If negative, keep-alive probes are disabled. -# transport.dialServerKeepalive = 7200 - -# connections will be established in advance, default value is zero -transport.poolCount = 5 - -# If tcp stream multiplexing is used, default is true, it must be same with frps -# transport.tcpMux = true - -# Specify keep alive interval for tcp mux. -# only valid if tcpMux is enabled. -# transport.tcpMuxKeepaliveInterval = 60 - -# Communication protocol used to connect to server -# supports tcp, kcp, quic, websocket and wss now, default is tcp -transport.protocol = "tcp" - -# set client binding ip when connect server, default is empty. -# only when protocol = tcp or websocket, the value will be used. -transport.connectServerLocalIP = "0.0.0.0" - -# if you want to connect frps by http proxy or socks5 proxy or ntlm proxy, you can set proxyURL here or in global environment variables -# it only works when protocol is tcp -# transport.proxyURL = "http://user:passwd@192.168.1.128:8080" -# transport.proxyURL = "socks5://user:passwd@192.168.1.128:1080" -# transport.proxyURL = "ntlm://user:passwd@192.168.1.128:2080" - -# quic protocol options -# transport.quic.keepalivePeriod = 10 -# transport.quic.maxIdleTimeout = 30 -# transport.quic.maxIncomingStreams = 100000 - -# If tls.enable is true, frpc will connect frps by tls. -# Since v0.50.0, the default value has been changed to true, and tls is enabled by default. -transport.tls.enable = true - -# transport.tls.certFile = "client.crt" -# transport.tls.keyFile = "client.key" -# transport.tls.trustedCaFile = "ca.crt" -# transport.tls.serverName = "example.com" - -# If the disableCustomTLSFirstByte is set to false, frpc will establish a connection with frps using the -# first custom byte when tls is enabled. -# Since v0.50.0, the default value has been changed to true, and the first custom byte is disabled by default. -# transport.tls.disableCustomTLSFirstByte = true - -# Heartbeat configure, it's not recommended to modify the default value. -# The default value of heartbeatInterval is 10 and heartbeatTimeout is 90. Set negative value -# to disable it. -# transport.heartbeatInterval = 30 -# transport.heartbeatTimeout = 90 - -# Specify a dns server, so frpc will use this instead of default one -# dnsServer = "8.8.8.8" - -# Proxy names you want to start. -# Default is empty, means all proxies. -# start = ["ssh", "dns"] - -# Specify udp packet size, unit is byte. If not set, the default value is 1500. -# This parameter should be same between client and server. -# It affects the udp and sudp proxy. -udpPacketSize = 1500 - -# Additional metadatas for client. -metadatas.var1 = "abc" -metadatas.var2 = "123" - -# Include other config files for proxies. -# includes = ["./confd/*.ini"] - -[[proxies]] -# 'ssh' is the unique proxy name -# If global user is not empty, it will be changed to {user}.{proxy} such as 'your_name.ssh' -name = "ssh" -type = "tcp" -localIP = "127.0.0.1" -localPort = 22 -# Limit bandwidth for this proxy, unit is KB and MB -transport.bandwidthLimit = "1MB" -# Where to limit bandwidth, can be 'client' or 'server', default is 'client' -transport.bandwidthLimitMode = "client" -# If true, traffic of this proxy will be encrypted, default is false -transport.useEncryption = false -# If true, traffic will be compressed -transport.useCompression = false -# Remote port listen by frps -remotePort = 6001 -# frps will load balancing connections for proxies in same group -loadBalancer.group = "test_group" -# group should have same group key -loadBalancer.groupKey = "123456" -# Enable health check for the backend service, it supports 'tcp' and 'http' now. -# frpc will connect local service's port to detect it's healthy status -healthCheck.type = "tcp" -# Health check connection timeout -healthCheck.timeoutSeconds = 3 -# If continuous failed in 3 times, the proxy will be removed from frps -healthCheck.maxFailed = 3 -# Every 10 seconds will do a health check -healthCheck.intervalSeconds = 10 -# Additional meta info for each proxy. It will be passed to the server-side plugin for use. -metadatas.var1 = "abc" -metadatas.var2 = "123" -# You can add some extra information to the proxy through annotations. -# These annotations will be displayed on the frps dashboard. -[proxies.annotations] -key1 = "value1" -"prefix/key2" = "value2" - -[[proxies]] -name = "ssh_random" -type = "tcp" -localIP = "192.168.31.100" -localPort = 22 -# If remotePort is 0, frps will assign a random port for you -remotePort = 0 - -[[proxies]] -name = "dns" -type = "udp" -localIP = "114.114.114.114" -localPort = 53 -remotePort = 6002 - -# Resolve your domain names to [serverAddr] so you can use http://web01.yourdomain.com to browse web01 and http://web02.yourdomain.com to browse web02 -[[proxies]] -name = "web01" -type = "http" -localIP = "127.0.0.1" -localPort = 80 -# http username and password are safety certification for http protocol -# if not set, you can access this customDomains without certification -httpUser = "admin" -httpPassword = "admin" -# if domain for frps is frps.com, then you can access [web01] proxy by URL http://web01.frps.com -subdomain = "web01" -customDomains = ["web01.yourdomain.com"] -# locations is only available for http type -locations = ["/", "/pic"] -# route requests to this service if http basic auto user is abc -# routeByHTTPUser = abc -hostHeaderRewrite = "example.com" -requestHeaders.set.x-from-where = "frp" -healthCheck.type = "http" -# frpc will send a GET http request '/status' to local http service -# http service is alive when it return 2xx http response code -healthCheck.path = "/status" -healthCheck.intervalSeconds = 10 -healthCheck.maxFailed = 3 -healthCheck.timeoutSeconds = 3 - -[[proxies]] -name = "web02" -type = "https" -localIP = "127.0.0.1" -localPort = 8000 -subdomain = "web02" -customDomains = ["web02.yourdomain.com"] -# if not empty, frpc will use proxy protocol to transfer connection info to your local service -# v1 or v2 or empty -transport.proxyProtocolVersion = "v2" - -[[proxies]] -name = "tcpmuxhttpconnect" -type = "tcpmux" -multiplexer = "httpconnect" -localIP = "127.0.0.1" -localPort = 10701 -customDomains = ["tunnel1"] -# routeByHTTPUser = "user1" - -[[proxies]] -name = "plugin_unix_domain_socket" -type = "tcp" -remotePort = 6003 -# if plugin is defined, localIP and localPort is useless -# plugin will handle connections got from frps -[proxies.plugin] -type = "unix_domain_socket" -unixPath = "/var/run/docker.sock" - -[[proxies]] -name = "plugin_http_proxy" -type = "tcp" -remotePort = 6004 -[proxies.plugin] -type = "http_proxy" -httpUser = "abc" -httpPassword = "abc" - -[[proxies]] -name = "plugin_socks5" -type = "tcp" -remotePort = 6005 -[proxies.plugin] -type = "socks5" -username = "abc" -password = "abc" - -[[proxies]] -name = "plugin_static_file" -type = "tcp" -remotePort = 6006 -[proxies.plugin] -type = "static_file" -localPath = "/var/www/blog" -stripPrefix = "static" -httpUser = "abc" -httpPassword = "abc" - -[[proxies]] -name = "plugin_https2http" -type = "https" -customDomains = ["test.yourdomain.com"] -[proxies.plugin] -type = "https2http" -localAddr = "127.0.0.1:80" -crtPath = "./server.crt" -keyPath = "./server.key" -hostHeaderRewrite = "127.0.0.1" -requestHeaders.set.x-from-where = "frp" - -[[proxies]] -name = "plugin_https2https" -type = "https" -customDomains = ["test.yourdomain.com"] -[proxies.plugin] -type = "https2https" -localAddr = "127.0.0.1:443" -crtPath = "./server.crt" -keyPath = "./server.key" -hostHeaderRewrite = "127.0.0.1" -requestHeaders.set.x-from-where = "frp" - -[[proxies]] -name = "plugin_http2https" -type = "http" -customDomains = ["test.yourdomain.com"] -[proxies.plugin] -type = "http2https" -localAddr = "127.0.0.1:443" -hostHeaderRewrite = "127.0.0.1" -requestHeaders.set.x-from-where = "frp" - -[[proxies]] -name = "secret_tcp" -# If the type is secret tcp, remotePort is useless -# Who want to connect local port should deploy another frpc with stcp proxy and role is visitor -type = "stcp" -# secretKey is used for authentication for visitors -secretKey = "abcdefg" -localIP = "127.0.0.1" -localPort = 22 -# If not empty, only visitors from specified users can connect. -# Otherwise, visitors from same user can connect. '*' means allow all users. -allowUsers = ["*"] - -[[proxies]] -name = "p2p_tcp" -type = "xtcp" -secretKey = "abcdefg" -localIP = "127.0.0.1" -localPort = 22 -# If not empty, only visitors from specified users can connect. -# Otherwise, visitors from same user can connect. '*' means allow all users. -allowUsers = ["user1", "user2"] - -# frpc role visitor -> frps -> frpc role server -[[visitors]] -name = "secret_tcp_visitor" -type = "stcp" -# the server name you want to visitor -serverName = "secret_tcp" -secretKey = "abcdefg" -# connect this address to visitor stcp server -bindAddr = "127.0.0.1" -# bindPort can be less than 0, it means don't bind to the port and only receive connections redirected from -# other visitors. (This is not supported for SUDP now) -bindPort = 9000 - -[[visitors]] -name = "p2p_tcp_visitor" -type = "xtcp" -# if the server user is not set, it defaults to the current user -serverUser = "user1" -serverName = "p2p_tcp" -secretKey = "abcdefg" -bindAddr = "127.0.0.1" -# bindPort can be less than 0, it means don't bind to the port and only receive connections redirected from -# other visitors. (This is not supported for SUDP now) -bindPort = 9001 -# when automatic tunnel persistence is required, set it to true -keepTunnelOpen = false -# effective when keepTunnelOpen is set to true, the number of attempts to punch through per hour -maxRetriesAnHour = 8 -minRetryInterval = 90 -# fallbackTo = "stcp_visitor" -# fallbackTimeoutMs = 500 \ No newline at end of file diff --git a/apps/frpc/latest/data/frps.ini b/apps/frpc/latest/data/frps.ini deleted file mode 100644 index 229567a9..00000000 --- a/apps/frpc/latest/data/frps.ini +++ /dev/null @@ -1,2 +0,0 @@ -[common] -bind_port = 7000 diff --git a/apps/frpc/latest/data/frps.toml b/apps/frpc/latest/data/frps.toml deleted file mode 100644 index cc3f831d..00000000 --- a/apps/frpc/latest/data/frps.toml +++ /dev/null @@ -1,42 +0,0 @@ -# common -bindAddr = "0.0.0.0" -bindPort = 7000 -auth.method = "token" -auth.token = "token123456" - -# udp by kcp -kcpBindPort = 7000 - -# udp by quic -#quicBindPort = 7002 -#transport.quic.keepalivePeriod = 10 -#transport.quic.maxIdleTimeout = 30 -#transport.quic.maxIncomingStreams = 100000 - -# web -#vhostHTTPPort = 40480 -#vhostHTTPSPort = 40443 -#subDomainHost = "example.com" - -# tls -transport.tls.force = true -#tls.force = false # 版本0.52.0到0.55.0用这个 -#transport.tls.certFile = "/etc/frp/ssl/server.crt" -#transport.tls.keyFile = "/etc/frp/ssl/server.key" -#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt" - -# dashboard -webServer.addr = "0.0.0.0" -webServer.port = 7001 -webServer.user = "admin" -webServer.password = "password123456" -webServer.pprofEnable = false -# webServer.tls.certFile = "server.crt" -# webServer.tls.keyFile = "server.key" - -# setting -transport.tcpMux = false -enablePrometheus = true -maxPortsPerClient = 0 -natholeAnalysisDataReserveHours = 168 -udpPacketSize = 1500 \ No newline at end of file diff --git a/apps/frpc/latest/data/frps_full.ini b/apps/frpc/latest/data/frps_full.ini deleted file mode 100644 index 2d5e08e1..00000000 --- a/apps/frpc/latest/data/frps_full.ini +++ /dev/null @@ -1,168 +0,0 @@ -# [common] is integral section -[common] -# A literal address or host name for IPv6 must be enclosed -# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80" -# For single "bind_addr" field, no need square brackets, like "bind_addr = ::". -bind_addr = 0.0.0.0 -bind_port = 7000 - -# udp port to help make udp hole to penetrate nat -bind_udp_port = 7001 - -# udp port used for kcp protocol, it can be same with 'bind_port'. -# if not set, kcp is disabled in frps. -kcp_bind_port = 7000 - -# udp port used for quic protocol. -# if not set, quic is disabled in frps. -# quic_bind_port = 7002 -# quic protocol options -# quic_keepalive_period = 10 -# quic_max_idle_timeout = 30 -# quic_max_incoming_streams = 100000 - -# specify which address proxy will listen for, default value is same with bind_addr -# proxy_bind_addr = 127.0.0.1 - -# if you want to support virtual host, you must set the http port for listening (optional) -# Note: http port and https port can be same with bind_port -vhost_http_port = 80 -vhost_https_port = 443 - -# response header timeout(seconds) for vhost http server, default is 60s -# vhost_http_timeout = 60 - -# tcpmux_httpconnect_port specifies the port that the server listens for TCP -# HTTP CONNECT requests. If the value is 0, the server will not multiplex TCP -# requests on one single port. If it's not - it will listen on this value for -# HTTP CONNECT requests. By default, this value is 0. -# tcpmux_httpconnect_port = 1337 - -# If tcpmux_passthrough is true, frps won't do any update on traffic. -# tcpmux_passthrough = false - -# set dashboard_addr and dashboard_port to view dashboard of frps -# dashboard_addr's default value is same with bind_addr -# dashboard is available only if dashboard_port is set -dashboard_addr = 0.0.0.0 -dashboard_port = 7500 - -# dashboard user and passwd for basic auth protect -dashboard_user = admin -dashboard_pwd = admin - -# dashboard TLS mode -dashboard_tls_mode = false -# dashboard_tls_cert_file = server.crt -# dashboard_tls_key_file = server.key - -# enable_prometheus will export prometheus metrics on {dashboard_addr}:{dashboard_port} in /metrics api. -enable_prometheus = true - -# dashboard assets directory(only for debug mode) -# assets_dir = ./static - -# console or real logFile path like ./frps.log -log_file = ./frps.log - -# trace, debug, info, warn, error -log_level = info - -log_max_days = 3 - -# disable log colors when log_file is console, default is false -disable_log_color = false - -# DetailedErrorsToClient defines whether to send the specific error (with debug info) to frpc. By default, this value is true. -detailed_errors_to_client = true - -# authentication_method specifies what authentication method to use authenticate frpc with frps. -# If "token" is specified - token will be read into login message. -# If "oidc" is specified - OIDC (Open ID Connect) token will be issued using OIDC settings. By default, this value is "token". -authentication_method = token - -# authenticate_heartbeats specifies whether to include authentication token in heartbeats sent to frps. By default, this value is false. -authenticate_heartbeats = false - -# AuthenticateNewWorkConns specifies whether to include authentication token in new work connections sent to frps. By default, this value is false. -authenticate_new_work_conns = false - -# auth token -token = 12345678 - -# oidc_issuer specifies the issuer to verify OIDC tokens with. -# By default, this value is "". -oidc_issuer = - -# oidc_audience specifies the audience OIDC tokens should contain when validated. -# By default, this value is "". -oidc_audience = - -# oidc_skip_expiry_check specifies whether to skip checking if the OIDC token is expired. -# By default, this value is false. -oidc_skip_expiry_check = false - -# oidc_skip_issuer_check specifies whether to skip checking if the OIDC token's issuer claim matches the issuer specified in OidcIssuer. -# By default, this value is false. -oidc_skip_issuer_check = false - -# heartbeat configure, it's not recommended to modify the default value -# the default value of heartbeat_timeout is 90. Set negative value to disable it. -# heartbeat_timeout = 90 - -# user_conn_timeout configure, it's not recommended to modify the default value -# the default value of user_conn_timeout is 10 -# user_conn_timeout = 10 - -# only allow frpc to bind ports you list, if you set nothing, there won't be any limit -allow_ports = 2000-3000,3001,3003,4000-50000 - -# pool_count in each proxy will change to max_pool_count if they exceed the maximum value -max_pool_count = 5 - -# max ports can be used for each client, default value is 0 means no limit -max_ports_per_client = 0 - -# tls_only specifies whether to only accept TLS-encrypted connections. By default, the value is false. -tls_only = false - -# tls_cert_file = server.crt -# tls_key_file = server.key -# tls_trusted_ca_file = ca.crt - -# if subdomain_host is not empty, you can set subdomain when type is http or https in frpc's configure file -# when subdomain is test, the host used by routing is test.frps.com -subdomain_host = frps.com - -# if tcp stream multiplexing is used, default is true -# tcp_mux = true - -# specify keep alive interval for tcp mux. -# only valid if tcp_mux is true. -# tcp_mux_keepalive_interval = 60 - -# tcp_keepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps. -# If negative, keep-alive probes are disabled. -# tcp_keepalive = 7200 - -# custom 404 page for HTTP requests -# custom_404_page = /path/to/404.html - -# specify udp packet size, unit is byte. If not set, the default value is 1500. -# This parameter should be same between client and server. -# It affects the udp and sudp proxy. -udp_packet_size = 1500 - -# Enable golang pprof handlers in dashboard listener. -# Dashboard port must be set first -pprof_enable = false - -[plugin.user-manager] -addr = 127.0.0.1:9000 -path = /handler -ops = Login - -[plugin.port-manager] -addr = 127.0.0.1:9001 -path = /handler -ops = NewProxy diff --git a/apps/frpc/latest/data/frps_full.toml b/apps/frpc/latest/data/frps_full.toml deleted file mode 100644 index f739d4d4..00000000 --- a/apps/frpc/latest/data/frps_full.toml +++ /dev/null @@ -1,164 +0,0 @@ -# This configuration file is for reference only. Please do not use this configuration directly to run the program as it may have various issues. - -# A literal address or host name for IPv6 must be enclosed -# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80" -# For single "bindAddr" field, no need square brackets, like `bindAddr = "::"`. -bindAddr = "0.0.0.0" -bindPort = 7000 - -# udp port used for kcp protocol, it can be same with 'bindPort'. -# if not set, kcp is disabled in frps. -kcpBindPort = 7000 - -# udp port used for quic protocol. -# if not set, quic is disabled in frps. -# quicBindPort = 7002 - -# Specify which address proxy will listen for, default value is same with bindAddr -# proxyBindAddr = "127.0.0.1" - -# quic protocol options -# transport.quic.keepalivePeriod = 10 -# transport.quic.maxIdleTimeout = 30 -# transport.quic.maxIncomingStreams = 100000 - -# Heartbeat configure, it's not recommended to modify the default value -# The default value of heartbeatTimeout is 90. Set negative value to disable it. -# transport.heartbeatTimeout = 90 - -# Pool count in each proxy will keep no more than maxPoolCount. -transport.maxPoolCount = 5 - -# If tcp stream multiplexing is used, default is true -# transport.tcpMux = true - -# Specify keep alive interval for tcp mux. -# only valid if tcpMux is true. -# transport.tcpMuxKeepaliveInterval = 60 - -# tcpKeepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps. -# If negative, keep-alive probes are disabled. -# transport.tcpKeepalive = 7200 - -# transport.tls.force specifies whether to only accept TLS-encrypted connections. By default, the value is false. -transport.tls.force = false - -# transport.tls.certFile = "server.crt" -# transport.tls.keyFile = "server.key" -# transport.tls.trustedCaFile = "ca.crt" - -# If you want to support virtual host, you must set the http port for listening (optional) -# Note: http port and https port can be same with bindPort -vhostHTTPPort = 80 -vhostHTTPSPort = 443 - -# Response header timeout(seconds) for vhost http server, default is 60s -# vhostHTTPTimeout = 60 - -# tcpmuxHTTPConnectPort specifies the port that the server listens for TCP -# HTTP CONNECT requests. If the value is 0, the server will not multiplex TCP -# requests on one single port. If it's not - it will listen on this value for -# HTTP CONNECT requests. By default, this value is 0. -# tcpmuxHTTPConnectPort = 1337 - -# If tcpmuxPassthrough is true, frps won't do any update on traffic. -# tcpmuxPassthrough = false - -# Configure the web server to enable the dashboard for frps. -# dashboard is available only if webServer.port is set. -webServer.addr = "127.0.0.1" -webServer.port = 7500 -webServer.user = "admin" -webServer.password = "admin" -# webServer.tls.certFile = "server.crt" -# webServer.tls.keyFile = "server.key" -# dashboard assets directory(only for debug mode) -# webServer.assetsDir = "./static" - -# Enable golang pprof handlers in dashboard listener. -# Dashboard port must be set first -webServer.pprofEnable = false - -# enablePrometheus will export prometheus metrics on webServer in /metrics api. -enablePrometheus = true - -# console or real logFile path like ./frps.log -log.to = "./frps.log" -# trace, debug, info, warn, error -log.level = "info" -log.maxDays = 3 -# disable log colors when log.to is console, default is false -log.disablePrintColor = false - -# DetailedErrorsToClient defines whether to send the specific error (with debug info) to frpc. By default, this value is true. -detailedErrorsToClient = true - -# auth.method specifies what authentication method to use authenticate frpc with frps. -# If "token" is specified - token will be read into login message. -# If "oidc" is specified - OIDC (Open ID Connect) token will be issued using OIDC settings. By default, this value is "token". -auth.method = "token" - -# auth.additionalScopes specifies additional scopes to include authentication information. -# Optional values are HeartBeats, NewWorkConns. -# auth.additionalScopes = ["HeartBeats", "NewWorkConns"] - -# auth token -auth.token = "12345678" - -# oidc issuer specifies the issuer to verify OIDC tokens with. -auth.oidc.issuer = "" -# oidc audience specifies the audience OIDC tokens should contain when validated. -auth.oidc.audience = "" -# oidc skipExpiryCheck specifies whether to skip checking if the OIDC token is expired. -auth.oidc.skipExpiryCheck = false -# oidc skipIssuerCheck specifies whether to skip checking if the OIDC token's issuer claim matches the issuer specified in OidcIssuer. -auth.oidc.skipIssuerCheck = false - -# userConnTimeout specifies the maximum time to wait for a work connection. -# userConnTimeout = 10 - -# Only allow frpc to bind ports you list. By default, there won't be any limit. -allowPorts = [ - { start = 2000, end = 3000 }, - { single = 3001 }, - { single = 3003 }, - { start = 4000, end = 50000 } -] - -# Max ports can be used for each client, default value is 0 means no limit -maxPortsPerClient = 0 - -# If subDomainHost is not empty, you can set subdomain when type is http or https in frpc's configure file -# When subdomain is test, the host used by routing is test.frps.com -subDomainHost = "frps.com" - -# custom 404 page for HTTP requests -# custom404Page = "/path/to/404.html" - -# specify udp packet size, unit is byte. If not set, the default value is 1500. -# This parameter should be same between client and server. -# It affects the udp and sudp proxy. -udpPacketSize = 1500 - -# Retention time for NAT hole punching strategy data. -natholeAnalysisDataReserveHours = 168 - -# ssh tunnel gateway -# If you want to enable this feature, the bindPort parameter is required, while others are optional. -# By default, this feature is disabled. It will be enabled if bindPort is greater than 0. -# sshTunnelGateway.bindPort = 2200 -# sshTunnelGateway.privateKeyFile = "/home/frp-user/.ssh/id_rsa" -# sshTunnelGateway.autoGenPrivateKeyPath = "" -# sshTunnelGateway.authorizedKeysFile = "/home/frp-user/.ssh/authorized_keys" - -[[httpPlugins]] -name = "user-manager" -addr = "127.0.0.1:9000" -path = "/handler" -ops = ["Login"] - -[[httpPlugins]] -name = "port-manager" -addr = "127.0.0.1:9001" -path = "/handler" -ops = ["NewProxy"] \ No newline at end of file diff --git a/apps/frpc/latest/docker-compose.yml b/apps/frpc/latest/docker-compose.yml deleted file mode 100644 index 5ec43e7c..00000000 --- a/apps/frpc/latest/docker-compose.yml +++ /dev/null @@ -1,12 +0,0 @@ -services: - frpc: - container_name: ${CONTAINER_NAME} - restart: always - network_mode: "host" - volumes: - #- "${CONFIG_FILE_PATH}:/etc/frp/frpc.ini" #截止5.1.3版本使用ini - - "${CONFIG_FILE_PATH}:/etc/frp/frpc.toml" - - "${SSL_FOLDER_PATH}:/etc/frp/ssl" - image: "snowdreamtech/frpc:latest" - labels: - createdBy: "Apps" diff --git a/apps/frpc/logo.png b/apps/frpc/logo.png deleted file mode 100644 index 9cec3e62d1817bf3fe702d0d21ccdd15beb049a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4768 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

!}0k@$uIak@e=yjlY=N3BnWaKW~gk*dW)%cD3KH zwneSf(5a7)G8=QG9&G%o^pIm^L|i@bbY{D?PdIy50b`l(y!p* u)zeQLhv-{v{-Yu3Xm({aFaH6" "var1=" to the additional parameters. -# oidc_additional_audience = https://dev.auth.com/api/v2/ -# oidc_additional_var1 = foobar - -# set admin address for control frpc's action by http api such as reload -admin_addr = 127.0.0.1 -admin_port = 7400 -admin_user = admin -admin_pwd = admin -# Admin assets directory. By default, these assets are bundled with frpc. -# assets_dir = ./static - -# connections will be established in advance, default value is zero -pool_count = 5 - -# if tcp stream multiplexing is used, default is true, it must be same with frps -# tcp_mux = true - -# specify keep alive interval for tcp mux. -# only valid if tcp_mux is true. -# tcp_mux_keepalive_interval = 60 - -# your proxy name will be changed to {user}.{proxy} -user = your_name - -# decide if exit program when first login failed, otherwise continuous relogin to frps -# default is true -login_fail_exit = true - -# communication protocol used to connect to server -# supports tcp, kcp, quic and websocket now, default is tcp -protocol = tcp - -# set client binding ip when connect server, default is empty. -# only when protocol = tcp or websocket, the value will be used. -connect_server_local_ip = 0.0.0.0 - -# quic protocol options -# quic_keepalive_period = 10 -# quic_max_idle_timeout = 30 -# quic_max_incoming_streams = 100000 - -# if tls_enable is true, frpc will connect frps by tls -tls_enable = true - -# tls_cert_file = client.crt -# tls_key_file = client.key -# tls_trusted_ca_file = ca.crt -# tls_server_name = example.com - -# specify a dns server, so frpc will use this instead of default one -# dns_server = 8.8.8.8 - -# proxy names you want to start separated by ',' -# default is empty, means all proxies -# start = ssh,dns - -# heartbeat configure, it's not recommended to modify the default value -# The default value of heartbeat_interval is 10 and heartbeat_timeout is 90. Set negative value -# to disable it. -# heartbeat_interval = 30 -# heartbeat_timeout = 90 - -# additional meta info for client -meta_var1 = 123 -meta_var2 = 234 - -# specify udp packet size, unit is byte. If not set, the default value is 1500. -# This parameter should be same between client and server. -# It affects the udp and sudp proxy. -udp_packet_size = 1500 - -# include other config files for proxies. -# includes = ./confd/*.ini - -# By default, frpc will connect frps with first custom byte if tls is enabled. -# If DisableCustomTLSFirstByte is true, frpc will not send that custom byte. -disable_custom_tls_first_byte = false - -# Enable golang pprof handlers in admin listener. -# Admin port must be set first. -pprof_enable = false - -# 'ssh' is the unique proxy name -# if user in [common] section is not empty, it will be changed to {user}.{proxy} such as 'your_name.ssh' -[ssh] -# tcp | udp | http | https | stcp | xtcp, default is tcp -type = tcp -local_ip = 127.0.0.1 -local_port = 22 -# limit bandwidth for this proxy, unit is KB and MB -bandwidth_limit = 1MB -# where to limit bandwidth, can be 'client' or 'server', default is 'client' -bandwidth_limit_mode = client -# true or false, if true, messages between frps and frpc will be encrypted, default is false -use_encryption = false -# if true, message will be compressed -use_compression = false -# remote port listen by frps -remote_port = 6001 -# frps will load balancing connections for proxies in same group -group = test_group -# group should have same group key -group_key = 123456 -# enable health check for the backend service, it support 'tcp' and 'http' now -# frpc will connect local service's port to detect it's healthy status -health_check_type = tcp -# health check connection timeout -health_check_timeout_s = 3 -# if continuous failed in 3 times, the proxy will be removed from frps -health_check_max_failed = 3 -# every 10 seconds will do a health check -health_check_interval_s = 10 -# additional meta info for each proxy -meta_var1 = 123 -meta_var2 = 234 - -[ssh_random] -type = tcp -local_ip = 127.0.0.1 -local_port = 22 -# if remote_port is 0, frps will assign a random port for you -remote_port = 0 - -# if you want to expose multiple ports, add 'range:' prefix to the section name -# frpc will generate multiple proxies such as 'tcp_port_6010', 'tcp_port_6011' and so on. -[range:tcp_port] -type = tcp -local_ip = 127.0.0.1 -local_port = 6010-6020,6022,6024-6028 -remote_port = 6010-6020,6022,6024-6028 -use_encryption = false -use_compression = false - -[dns] -type = udp -local_ip = 114.114.114.114 -local_port = 53 -remote_port = 6002 -use_encryption = false -use_compression = false - -[range:udp_port] -type = udp -local_ip = 127.0.0.1 -local_port = 6010-6020 -remote_port = 6010-6020 -use_encryption = false -use_compression = false - -# Resolve your domain names to [server_addr] so you can use http://web01.yourdomain.com to browse web01 and http://web02.yourdomain.com to browse web02 -[web01] -type = http -local_ip = 127.0.0.1 -local_port = 80 -use_encryption = false -use_compression = true -# http username and password are safety certification for http protocol -# if not set, you can access this custom_domains without certification -http_user = admin -http_pwd = admin -# if domain for frps is frps.com, then you can access [web01] proxy by URL http://web01.frps.com -subdomain = web01 -custom_domains = web01.yourdomain.com -# locations is only available for http type -locations = /,/pic -# route requests to this service if http basic auto user is abc -# route_by_http_user = abc -host_header_rewrite = example.com -# params with prefix "header_" will be used to update http request headers -header_X-From-Where = frp -health_check_type = http -# frpc will send a GET http request '/status' to local http service -# http service is alive when it return 2xx http response code -health_check_url = /status -health_check_interval_s = 10 -health_check_max_failed = 3 -health_check_timeout_s = 3 - -[web02] -type = https -local_ip = 127.0.0.1 -local_port = 8000 -use_encryption = false -use_compression = false -subdomain = web01 -custom_domains = web02.yourdomain.com -# if not empty, frpc will use proxy protocol to transfer connection info to your local service -# v1 or v2 or empty -proxy_protocol_version = v2 - -[plugin_unix_domain_socket] -type = tcp -remote_port = 6003 -# if plugin is defined, local_ip and local_port is useless -# plugin will handle connections got from frps -plugin = unix_domain_socket -# params with prefix "plugin_" that plugin needed -plugin_unix_path = /var/run/docker.sock - -[plugin_http_proxy] -type = tcp -remote_port = 6004 -plugin = http_proxy -plugin_http_user = abc -plugin_http_passwd = abc - -[plugin_socks5] -type = tcp -remote_port = 6005 -plugin = socks5 -plugin_user = abc -plugin_passwd = abc - -[plugin_static_file] -type = tcp -remote_port = 6006 -plugin = static_file -plugin_local_path = /var/www/blog -plugin_strip_prefix = static -plugin_http_user = abc -plugin_http_passwd = abc - -[plugin_https2http] -type = https -custom_domains = test.yourdomain.com -plugin = https2http -plugin_local_addr = 127.0.0.1:80 -plugin_crt_path = ./server.crt -plugin_key_path = ./server.key -plugin_host_header_rewrite = 127.0.0.1 -plugin_header_X-From-Where = frp - -[plugin_https2https] -type = https -custom_domains = test.yourdomain.com -plugin = https2https -plugin_local_addr = 127.0.0.1:443 -plugin_crt_path = ./server.crt -plugin_key_path = ./server.key -plugin_host_header_rewrite = 127.0.0.1 -plugin_header_X-From-Where = frp - -[plugin_http2https] -type = http -custom_domains = test.yourdomain.com -plugin = http2https -plugin_local_addr = 127.0.0.1:443 -plugin_host_header_rewrite = 127.0.0.1 -plugin_header_X-From-Where = frp - -[secret_tcp] -# If the type is secret tcp, remote_port is useless -# Who want to connect local port should deploy another frpc with stcp proxy and role is visitor -type = stcp -# sk used for authentication for visitors -sk = abcdefg -local_ip = 127.0.0.1 -local_port = 22 -use_encryption = false -use_compression = false - -# user of frpc should be same in both stcp server and stcp visitor -[secret_tcp_visitor] -# frpc role visitor -> frps -> frpc role server -role = visitor -type = stcp -# the server name you want to visitor -server_name = secret_tcp -sk = abcdefg -# connect this address to visitor stcp server -bind_addr = 127.0.0.1 -bind_port = 9000 -use_encryption = false -use_compression = false - -[p2p_tcp] -type = xtcp -sk = abcdefg -local_ip = 127.0.0.1 -local_port = 22 -use_encryption = false -use_compression = false - -[p2p_tcp_visitor] -role = visitor -type = xtcp -server_name = p2p_tcp -sk = abcdefg -bind_addr = 127.0.0.1 -bind_port = 9001 -use_encryption = false -use_compression = false - -[tcpmuxhttpconnect] -type = tcpmux -multiplexer = httpconnect -local_ip = 127.0.0.1 -local_port = 10701 -custom_domains = tunnel1 -# route_by_http_user = user1 diff --git a/apps/frps/0.63.0/data/frpc_full.toml b/apps/frps/0.63.0/data/frpc_full.toml deleted file mode 100644 index 67fd84ec..00000000 --- a/apps/frps/0.63.0/data/frpc_full.toml +++ /dev/null @@ -1,366 +0,0 @@ -# This configuration file is for reference only. Please do not use this configuration directly to run the program as it may have various issues. - -# your proxy name will be changed to {user}.{proxy} -user = "your_name" - -# A literal address or host name for IPv6 must be enclosed -# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80" -# For single serverAddr field, no need square brackets, like serverAddr = "::". -serverAddr = "0.0.0.0" -serverPort = 7000 - -# STUN server to help penetrate NAT hole. -# natHoleStunServer = "stun.easyvoip.com:3478" - -# Decide if exit program when first login failed, otherwise continuous relogin to frps -# default is true -loginFailExit = true - -# console or real logFile path like ./frpc.log -log.to = "./frpc.log" -# trace, debug, info, warn, error -log.level = "info" -log.maxDays = 3 -# disable log colors when log.to is console, default is false -log.disablePrintColor = false - -auth.method = "token" -# auth.additionalScopes specifies additional scopes to include authentication information. -# Optional values are HeartBeats, NewWorkConns. -# auth.additionalScopes = ["HeartBeats", "NewWorkConns"] - -# auth token -auth.token = "12345678" - -# oidc.clientID specifies the client ID to use to get a token in OIDC authentication. -# auth.oidc.clientID = "" -# oidc.clientSecret specifies the client secret to use to get a token in OIDC authentication. -# auth.oidc.clientSecret = "" -# oidc.audience specifies the audience of the token in OIDC authentication. -# auth.oidc.audience = "" -# oidc.scope specifies the permissions of the token in OIDC authentication if AuthenticationMethod == "oidc". By default, this value is "". -# auth.oidc.scope = "" -# oidc.tokenEndpointURL specifies the URL which implements OIDC Token Endpoint. -# It will be used to get an OIDC token. -# auth.oidc.tokenEndpointURL = "" - -# oidc.additionalEndpointParams specifies additional parameters to be sent to the OIDC Token Endpoint. -# For example, if you want to specify the "audience" parameter, you can set as follow. -# frp will add "audience=" "var1=" to the additional parameters. -# auth.oidc.additionalEndpointParams.audience = "https://dev.auth.com/api/v2/" -# auth.oidc.additionalEndpointParams.var1 = "foobar" - -# Set admin address for control frpc's action by http api such as reload -webServer.addr = "127.0.0.1" -webServer.port = 7400 -webServer.user = "admin" -webServer.password = "admin" -# Admin assets directory. By default, these assets are bundled with frpc. -# webServer.assetsDir = "./static" - -# Enable golang pprof handlers in admin listener. -webServer.pprofEnable = false - -# The maximum amount of time a dial to server will wait for a connect to complete. Default value is 10 seconds. -# transport.dialServerTimeout = 10 - -# dialServerKeepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps. -# If negative, keep-alive probes are disabled. -# transport.dialServerKeepalive = 7200 - -# connections will be established in advance, default value is zero -transport.poolCount = 5 - -# If tcp stream multiplexing is used, default is true, it must be same with frps -# transport.tcpMux = true - -# Specify keep alive interval for tcp mux. -# only valid if tcpMux is enabled. -# transport.tcpMuxKeepaliveInterval = 60 - -# Communication protocol used to connect to server -# supports tcp, kcp, quic, websocket and wss now, default is tcp -transport.protocol = "tcp" - -# set client binding ip when connect server, default is empty. -# only when protocol = tcp or websocket, the value will be used. -transport.connectServerLocalIP = "0.0.0.0" - -# if you want to connect frps by http proxy or socks5 proxy or ntlm proxy, you can set proxyURL here or in global environment variables -# it only works when protocol is tcp -# transport.proxyURL = "http://user:passwd@192.168.1.128:8080" -# transport.proxyURL = "socks5://user:passwd@192.168.1.128:1080" -# transport.proxyURL = "ntlm://user:passwd@192.168.1.128:2080" - -# quic protocol options -# transport.quic.keepalivePeriod = 10 -# transport.quic.maxIdleTimeout = 30 -# transport.quic.maxIncomingStreams = 100000 - -# If tls.enable is true, frpc will connect frps by tls. -# Since v0.50.0, the default value has been changed to true, and tls is enabled by default. -transport.tls.enable = true - -# transport.tls.certFile = "client.crt" -# transport.tls.keyFile = "client.key" -# transport.tls.trustedCaFile = "ca.crt" -# transport.tls.serverName = "example.com" - -# If the disableCustomTLSFirstByte is set to false, frpc will establish a connection with frps using the -# first custom byte when tls is enabled. -# Since v0.50.0, the default value has been changed to true, and the first custom byte is disabled by default. -# transport.tls.disableCustomTLSFirstByte = true - -# Heartbeat configure, it's not recommended to modify the default value. -# The default value of heartbeatInterval is 10 and heartbeatTimeout is 90. Set negative value -# to disable it. -# transport.heartbeatInterval = 30 -# transport.heartbeatTimeout = 90 - -# Specify a dns server, so frpc will use this instead of default one -# dnsServer = "8.8.8.8" - -# Proxy names you want to start. -# Default is empty, means all proxies. -# start = ["ssh", "dns"] - -# Specify udp packet size, unit is byte. If not set, the default value is 1500. -# This parameter should be same between client and server. -# It affects the udp and sudp proxy. -udpPacketSize = 1500 - -# Additional metadatas for client. -metadatas.var1 = "abc" -metadatas.var2 = "123" - -# Include other config files for proxies. -# includes = ["./confd/*.ini"] - -[[proxies]] -# 'ssh' is the unique proxy name -# If global user is not empty, it will be changed to {user}.{proxy} such as 'your_name.ssh' -name = "ssh" -type = "tcp" -localIP = "127.0.0.1" -localPort = 22 -# Limit bandwidth for this proxy, unit is KB and MB -transport.bandwidthLimit = "1MB" -# Where to limit bandwidth, can be 'client' or 'server', default is 'client' -transport.bandwidthLimitMode = "client" -# If true, traffic of this proxy will be encrypted, default is false -transport.useEncryption = false -# If true, traffic will be compressed -transport.useCompression = false -# Remote port listen by frps -remotePort = 6001 -# frps will load balancing connections for proxies in same group -loadBalancer.group = "test_group" -# group should have same group key -loadBalancer.groupKey = "123456" -# Enable health check for the backend service, it supports 'tcp' and 'http' now. -# frpc will connect local service's port to detect it's healthy status -healthCheck.type = "tcp" -# Health check connection timeout -healthCheck.timeoutSeconds = 3 -# If continuous failed in 3 times, the proxy will be removed from frps -healthCheck.maxFailed = 3 -# Every 10 seconds will do a health check -healthCheck.intervalSeconds = 10 -# Additional meta info for each proxy. It will be passed to the server-side plugin for use. -metadatas.var1 = "abc" -metadatas.var2 = "123" -# You can add some extra information to the proxy through annotations. -# These annotations will be displayed on the frps dashboard. -[proxies.annotations] -key1 = "value1" -"prefix/key2" = "value2" - -[[proxies]] -name = "ssh_random" -type = "tcp" -localIP = "192.168.31.100" -localPort = 22 -# If remotePort is 0, frps will assign a random port for you -remotePort = 0 - -[[proxies]] -name = "dns" -type = "udp" -localIP = "114.114.114.114" -localPort = 53 -remotePort = 6002 - -# Resolve your domain names to [serverAddr] so you can use http://web01.yourdomain.com to browse web01 and http://web02.yourdomain.com to browse web02 -[[proxies]] -name = "web01" -type = "http" -localIP = "127.0.0.1" -localPort = 80 -# http username and password are safety certification for http protocol -# if not set, you can access this customDomains without certification -httpUser = "admin" -httpPassword = "admin" -# if domain for frps is frps.com, then you can access [web01] proxy by URL http://web01.frps.com -subdomain = "web01" -customDomains = ["web01.yourdomain.com"] -# locations is only available for http type -locations = ["/", "/pic"] -# route requests to this service if http basic auto user is abc -# routeByHTTPUser = abc -hostHeaderRewrite = "example.com" -requestHeaders.set.x-from-where = "frp" -healthCheck.type = "http" -# frpc will send a GET http request '/status' to local http service -# http service is alive when it return 2xx http response code -healthCheck.path = "/status" -healthCheck.intervalSeconds = 10 -healthCheck.maxFailed = 3 -healthCheck.timeoutSeconds = 3 - -[[proxies]] -name = "web02" -type = "https" -localIP = "127.0.0.1" -localPort = 8000 -subdomain = "web02" -customDomains = ["web02.yourdomain.com"] -# if not empty, frpc will use proxy protocol to transfer connection info to your local service -# v1 or v2 or empty -transport.proxyProtocolVersion = "v2" - -[[proxies]] -name = "tcpmuxhttpconnect" -type = "tcpmux" -multiplexer = "httpconnect" -localIP = "127.0.0.1" -localPort = 10701 -customDomains = ["tunnel1"] -# routeByHTTPUser = "user1" - -[[proxies]] -name = "plugin_unix_domain_socket" -type = "tcp" -remotePort = 6003 -# if plugin is defined, localIP and localPort is useless -# plugin will handle connections got from frps -[proxies.plugin] -type = "unix_domain_socket" -unixPath = "/var/run/docker.sock" - -[[proxies]] -name = "plugin_http_proxy" -type = "tcp" -remotePort = 6004 -[proxies.plugin] -type = "http_proxy" -httpUser = "abc" -httpPassword = "abc" - -[[proxies]] -name = "plugin_socks5" -type = "tcp" -remotePort = 6005 -[proxies.plugin] -type = "socks5" -username = "abc" -password = "abc" - -[[proxies]] -name = "plugin_static_file" -type = "tcp" -remotePort = 6006 -[proxies.plugin] -type = "static_file" -localPath = "/var/www/blog" -stripPrefix = "static" -httpUser = "abc" -httpPassword = "abc" - -[[proxies]] -name = "plugin_https2http" -type = "https" -customDomains = ["test.yourdomain.com"] -[proxies.plugin] -type = "https2http" -localAddr = "127.0.0.1:80" -crtPath = "./server.crt" -keyPath = "./server.key" -hostHeaderRewrite = "127.0.0.1" -requestHeaders.set.x-from-where = "frp" - -[[proxies]] -name = "plugin_https2https" -type = "https" -customDomains = ["test.yourdomain.com"] -[proxies.plugin] -type = "https2https" -localAddr = "127.0.0.1:443" -crtPath = "./server.crt" -keyPath = "./server.key" -hostHeaderRewrite = "127.0.0.1" -requestHeaders.set.x-from-where = "frp" - -[[proxies]] -name = "plugin_http2https" -type = "http" -customDomains = ["test.yourdomain.com"] -[proxies.plugin] -type = "http2https" -localAddr = "127.0.0.1:443" -hostHeaderRewrite = "127.0.0.1" -requestHeaders.set.x-from-where = "frp" - -[[proxies]] -name = "secret_tcp" -# If the type is secret tcp, remotePort is useless -# Who want to connect local port should deploy another frpc with stcp proxy and role is visitor -type = "stcp" -# secretKey is used for authentication for visitors -secretKey = "abcdefg" -localIP = "127.0.0.1" -localPort = 22 -# If not empty, only visitors from specified users can connect. -# Otherwise, visitors from same user can connect. '*' means allow all users. -allowUsers = ["*"] - -[[proxies]] -name = "p2p_tcp" -type = "xtcp" -secretKey = "abcdefg" -localIP = "127.0.0.1" -localPort = 22 -# If not empty, only visitors from specified users can connect. -# Otherwise, visitors from same user can connect. '*' means allow all users. -allowUsers = ["user1", "user2"] - -# frpc role visitor -> frps -> frpc role server -[[visitors]] -name = "secret_tcp_visitor" -type = "stcp" -# the server name you want to visitor -serverName = "secret_tcp" -secretKey = "abcdefg" -# connect this address to visitor stcp server -bindAddr = "127.0.0.1" -# bindPort can be less than 0, it means don't bind to the port and only receive connections redirected from -# other visitors. (This is not supported for SUDP now) -bindPort = 9000 - -[[visitors]] -name = "p2p_tcp_visitor" -type = "xtcp" -# if the server user is not set, it defaults to the current user -serverUser = "user1" -serverName = "p2p_tcp" -secretKey = "abcdefg" -bindAddr = "127.0.0.1" -# bindPort can be less than 0, it means don't bind to the port and only receive connections redirected from -# other visitors. (This is not supported for SUDP now) -bindPort = 9001 -# when automatic tunnel persistence is required, set it to true -keepTunnelOpen = false -# effective when keepTunnelOpen is set to true, the number of attempts to punch through per hour -maxRetriesAnHour = 8 -minRetryInterval = 90 -# fallbackTo = "stcp_visitor" -# fallbackTimeoutMs = 500 \ No newline at end of file diff --git a/apps/frps/0.63.0/data/frps.ini b/apps/frps/0.63.0/data/frps.ini deleted file mode 100644 index 229567a9..00000000 --- a/apps/frps/0.63.0/data/frps.ini +++ /dev/null @@ -1,2 +0,0 @@ -[common] -bind_port = 7000 diff --git a/apps/frps/0.63.0/data/frps.toml b/apps/frps/0.63.0/data/frps.toml deleted file mode 100644 index cc3f831d..00000000 --- a/apps/frps/0.63.0/data/frps.toml +++ /dev/null @@ -1,42 +0,0 @@ -# common -bindAddr = "0.0.0.0" -bindPort = 7000 -auth.method = "token" -auth.token = "token123456" - -# udp by kcp -kcpBindPort = 7000 - -# udp by quic -#quicBindPort = 7002 -#transport.quic.keepalivePeriod = 10 -#transport.quic.maxIdleTimeout = 30 -#transport.quic.maxIncomingStreams = 100000 - -# web -#vhostHTTPPort = 40480 -#vhostHTTPSPort = 40443 -#subDomainHost = "example.com" - -# tls -transport.tls.force = true -#tls.force = false # 版本0.52.0到0.55.0用这个 -#transport.tls.certFile = "/etc/frp/ssl/server.crt" -#transport.tls.keyFile = "/etc/frp/ssl/server.key" -#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt" - -# dashboard -webServer.addr = "0.0.0.0" -webServer.port = 7001 -webServer.user = "admin" -webServer.password = "password123456" -webServer.pprofEnable = false -# webServer.tls.certFile = "server.crt" -# webServer.tls.keyFile = "server.key" - -# setting -transport.tcpMux = false -enablePrometheus = true -maxPortsPerClient = 0 -natholeAnalysisDataReserveHours = 168 -udpPacketSize = 1500 \ No newline at end of file diff --git a/apps/frps/0.63.0/data/frps_full.ini b/apps/frps/0.63.0/data/frps_full.ini deleted file mode 100644 index 2d5e08e1..00000000 --- a/apps/frps/0.63.0/data/frps_full.ini +++ /dev/null @@ -1,168 +0,0 @@ -# [common] is integral section -[common] -# A literal address or host name for IPv6 must be enclosed -# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80" -# For single "bind_addr" field, no need square brackets, like "bind_addr = ::". -bind_addr = 0.0.0.0 -bind_port = 7000 - -# udp port to help make udp hole to penetrate nat -bind_udp_port = 7001 - -# udp port used for kcp protocol, it can be same with 'bind_port'. -# if not set, kcp is disabled in frps. -kcp_bind_port = 7000 - -# udp port used for quic protocol. -# if not set, quic is disabled in frps. -# quic_bind_port = 7002 -# quic protocol options -# quic_keepalive_period = 10 -# quic_max_idle_timeout = 30 -# quic_max_incoming_streams = 100000 - -# specify which address proxy will listen for, default value is same with bind_addr -# proxy_bind_addr = 127.0.0.1 - -# if you want to support virtual host, you must set the http port for listening (optional) -# Note: http port and https port can be same with bind_port -vhost_http_port = 80 -vhost_https_port = 443 - -# response header timeout(seconds) for vhost http server, default is 60s -# vhost_http_timeout = 60 - -# tcpmux_httpconnect_port specifies the port that the server listens for TCP -# HTTP CONNECT requests. If the value is 0, the server will not multiplex TCP -# requests on one single port. If it's not - it will listen on this value for -# HTTP CONNECT requests. By default, this value is 0. -# tcpmux_httpconnect_port = 1337 - -# If tcpmux_passthrough is true, frps won't do any update on traffic. -# tcpmux_passthrough = false - -# set dashboard_addr and dashboard_port to view dashboard of frps -# dashboard_addr's default value is same with bind_addr -# dashboard is available only if dashboard_port is set -dashboard_addr = 0.0.0.0 -dashboard_port = 7500 - -# dashboard user and passwd for basic auth protect -dashboard_user = admin -dashboard_pwd = admin - -# dashboard TLS mode -dashboard_tls_mode = false -# dashboard_tls_cert_file = server.crt -# dashboard_tls_key_file = server.key - -# enable_prometheus will export prometheus metrics on {dashboard_addr}:{dashboard_port} in /metrics api. -enable_prometheus = true - -# dashboard assets directory(only for debug mode) -# assets_dir = ./static - -# console or real logFile path like ./frps.log -log_file = ./frps.log - -# trace, debug, info, warn, error -log_level = info - -log_max_days = 3 - -# disable log colors when log_file is console, default is false -disable_log_color = false - -# DetailedErrorsToClient defines whether to send the specific error (with debug info) to frpc. By default, this value is true. -detailed_errors_to_client = true - -# authentication_method specifies what authentication method to use authenticate frpc with frps. -# If "token" is specified - token will be read into login message. -# If "oidc" is specified - OIDC (Open ID Connect) token will be issued using OIDC settings. By default, this value is "token". -authentication_method = token - -# authenticate_heartbeats specifies whether to include authentication token in heartbeats sent to frps. By default, this value is false. -authenticate_heartbeats = false - -# AuthenticateNewWorkConns specifies whether to include authentication token in new work connections sent to frps. By default, this value is false. -authenticate_new_work_conns = false - -# auth token -token = 12345678 - -# oidc_issuer specifies the issuer to verify OIDC tokens with. -# By default, this value is "". -oidc_issuer = - -# oidc_audience specifies the audience OIDC tokens should contain when validated. -# By default, this value is "". -oidc_audience = - -# oidc_skip_expiry_check specifies whether to skip checking if the OIDC token is expired. -# By default, this value is false. -oidc_skip_expiry_check = false - -# oidc_skip_issuer_check specifies whether to skip checking if the OIDC token's issuer claim matches the issuer specified in OidcIssuer. -# By default, this value is false. -oidc_skip_issuer_check = false - -# heartbeat configure, it's not recommended to modify the default value -# the default value of heartbeat_timeout is 90. Set negative value to disable it. -# heartbeat_timeout = 90 - -# user_conn_timeout configure, it's not recommended to modify the default value -# the default value of user_conn_timeout is 10 -# user_conn_timeout = 10 - -# only allow frpc to bind ports you list, if you set nothing, there won't be any limit -allow_ports = 2000-3000,3001,3003,4000-50000 - -# pool_count in each proxy will change to max_pool_count if they exceed the maximum value -max_pool_count = 5 - -# max ports can be used for each client, default value is 0 means no limit -max_ports_per_client = 0 - -# tls_only specifies whether to only accept TLS-encrypted connections. By default, the value is false. -tls_only = false - -# tls_cert_file = server.crt -# tls_key_file = server.key -# tls_trusted_ca_file = ca.crt - -# if subdomain_host is not empty, you can set subdomain when type is http or https in frpc's configure file -# when subdomain is test, the host used by routing is test.frps.com -subdomain_host = frps.com - -# if tcp stream multiplexing is used, default is true -# tcp_mux = true - -# specify keep alive interval for tcp mux. -# only valid if tcp_mux is true. -# tcp_mux_keepalive_interval = 60 - -# tcp_keepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps. -# If negative, keep-alive probes are disabled. -# tcp_keepalive = 7200 - -# custom 404 page for HTTP requests -# custom_404_page = /path/to/404.html - -# specify udp packet size, unit is byte. If not set, the default value is 1500. -# This parameter should be same between client and server. -# It affects the udp and sudp proxy. -udp_packet_size = 1500 - -# Enable golang pprof handlers in dashboard listener. -# Dashboard port must be set first -pprof_enable = false - -[plugin.user-manager] -addr = 127.0.0.1:9000 -path = /handler -ops = Login - -[plugin.port-manager] -addr = 127.0.0.1:9001 -path = /handler -ops = NewProxy diff --git a/apps/frps/0.63.0/data/frps_full.toml b/apps/frps/0.63.0/data/frps_full.toml deleted file mode 100644 index f739d4d4..00000000 --- a/apps/frps/0.63.0/data/frps_full.toml +++ /dev/null @@ -1,164 +0,0 @@ -# This configuration file is for reference only. Please do not use this configuration directly to run the program as it may have various issues. - -# A literal address or host name for IPv6 must be enclosed -# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80" -# For single "bindAddr" field, no need square brackets, like `bindAddr = "::"`. -bindAddr = "0.0.0.0" -bindPort = 7000 - -# udp port used for kcp protocol, it can be same with 'bindPort'. -# if not set, kcp is disabled in frps. -kcpBindPort = 7000 - -# udp port used for quic protocol. -# if not set, quic is disabled in frps. -# quicBindPort = 7002 - -# Specify which address proxy will listen for, default value is same with bindAddr -# proxyBindAddr = "127.0.0.1" - -# quic protocol options -# transport.quic.keepalivePeriod = 10 -# transport.quic.maxIdleTimeout = 30 -# transport.quic.maxIncomingStreams = 100000 - -# Heartbeat configure, it's not recommended to modify the default value -# The default value of heartbeatTimeout is 90. Set negative value to disable it. -# transport.heartbeatTimeout = 90 - -# Pool count in each proxy will keep no more than maxPoolCount. -transport.maxPoolCount = 5 - -# If tcp stream multiplexing is used, default is true -# transport.tcpMux = true - -# Specify keep alive interval for tcp mux. -# only valid if tcpMux is true. -# transport.tcpMuxKeepaliveInterval = 60 - -# tcpKeepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps. -# If negative, keep-alive probes are disabled. -# transport.tcpKeepalive = 7200 - -# transport.tls.force specifies whether to only accept TLS-encrypted connections. By default, the value is false. -transport.tls.force = false - -# transport.tls.certFile = "server.crt" -# transport.tls.keyFile = "server.key" -# transport.tls.trustedCaFile = "ca.crt" - -# If you want to support virtual host, you must set the http port for listening (optional) -# Note: http port and https port can be same with bindPort -vhostHTTPPort = 80 -vhostHTTPSPort = 443 - -# Response header timeout(seconds) for vhost http server, default is 60s -# vhostHTTPTimeout = 60 - -# tcpmuxHTTPConnectPort specifies the port that the server listens for TCP -# HTTP CONNECT requests. If the value is 0, the server will not multiplex TCP -# requests on one single port. If it's not - it will listen on this value for -# HTTP CONNECT requests. By default, this value is 0. -# tcpmuxHTTPConnectPort = 1337 - -# If tcpmuxPassthrough is true, frps won't do any update on traffic. -# tcpmuxPassthrough = false - -# Configure the web server to enable the dashboard for frps. -# dashboard is available only if webServer.port is set. -webServer.addr = "127.0.0.1" -webServer.port = 7500 -webServer.user = "admin" -webServer.password = "admin" -# webServer.tls.certFile = "server.crt" -# webServer.tls.keyFile = "server.key" -# dashboard assets directory(only for debug mode) -# webServer.assetsDir = "./static" - -# Enable golang pprof handlers in dashboard listener. -# Dashboard port must be set first -webServer.pprofEnable = false - -# enablePrometheus will export prometheus metrics on webServer in /metrics api. -enablePrometheus = true - -# console or real logFile path like ./frps.log -log.to = "./frps.log" -# trace, debug, info, warn, error -log.level = "info" -log.maxDays = 3 -# disable log colors when log.to is console, default is false -log.disablePrintColor = false - -# DetailedErrorsToClient defines whether to send the specific error (with debug info) to frpc. By default, this value is true. -detailedErrorsToClient = true - -# auth.method specifies what authentication method to use authenticate frpc with frps. -# If "token" is specified - token will be read into login message. -# If "oidc" is specified - OIDC (Open ID Connect) token will be issued using OIDC settings. By default, this value is "token". -auth.method = "token" - -# auth.additionalScopes specifies additional scopes to include authentication information. -# Optional values are HeartBeats, NewWorkConns. -# auth.additionalScopes = ["HeartBeats", "NewWorkConns"] - -# auth token -auth.token = "12345678" - -# oidc issuer specifies the issuer to verify OIDC tokens with. -auth.oidc.issuer = "" -# oidc audience specifies the audience OIDC tokens should contain when validated. -auth.oidc.audience = "" -# oidc skipExpiryCheck specifies whether to skip checking if the OIDC token is expired. -auth.oidc.skipExpiryCheck = false -# oidc skipIssuerCheck specifies whether to skip checking if the OIDC token's issuer claim matches the issuer specified in OidcIssuer. -auth.oidc.skipIssuerCheck = false - -# userConnTimeout specifies the maximum time to wait for a work connection. -# userConnTimeout = 10 - -# Only allow frpc to bind ports you list. By default, there won't be any limit. -allowPorts = [ - { start = 2000, end = 3000 }, - { single = 3001 }, - { single = 3003 }, - { start = 4000, end = 50000 } -] - -# Max ports can be used for each client, default value is 0 means no limit -maxPortsPerClient = 0 - -# If subDomainHost is not empty, you can set subdomain when type is http or https in frpc's configure file -# When subdomain is test, the host used by routing is test.frps.com -subDomainHost = "frps.com" - -# custom 404 page for HTTP requests -# custom404Page = "/path/to/404.html" - -# specify udp packet size, unit is byte. If not set, the default value is 1500. -# This parameter should be same between client and server. -# It affects the udp and sudp proxy. -udpPacketSize = 1500 - -# Retention time for NAT hole punching strategy data. -natholeAnalysisDataReserveHours = 168 - -# ssh tunnel gateway -# If you want to enable this feature, the bindPort parameter is required, while others are optional. -# By default, this feature is disabled. It will be enabled if bindPort is greater than 0. -# sshTunnelGateway.bindPort = 2200 -# sshTunnelGateway.privateKeyFile = "/home/frp-user/.ssh/id_rsa" -# sshTunnelGateway.autoGenPrivateKeyPath = "" -# sshTunnelGateway.authorizedKeysFile = "/home/frp-user/.ssh/authorized_keys" - -[[httpPlugins]] -name = "user-manager" -addr = "127.0.0.1:9000" -path = "/handler" -ops = ["Login"] - -[[httpPlugins]] -name = "port-manager" -addr = "127.0.0.1:9001" -path = "/handler" -ops = ["NewProxy"] \ No newline at end of file diff --git a/apps/frps/0.63.0/docker-compose.yml b/apps/frps/0.63.0/docker-compose.yml deleted file mode 100644 index 3385cb6f..00000000 --- a/apps/frps/0.63.0/docker-compose.yml +++ /dev/null @@ -1,12 +0,0 @@ -services: - frps: - container_name: ${CONTAINER_NAME} - restart: always - network_mode: "host" - volumes: - #- "${CONFIG_FILE_PATH}:/etc/frp/frps.ini" #截止5.1.3版本使用ini - - "${CONFIG_FILE_PATH}:/etc/frp/frps.toml" - - "${SSL_FOLDER_PATH}:/etc/frp/ssl" - image: "snowdreamtech/frps:0.63.0" - labels: - createdBy: "Apps" diff --git a/apps/frps/README.md b/apps/frps/README.md deleted file mode 100644 index 9e035d0e..00000000 --- a/apps/frps/README.md +++ /dev/null @@ -1,1152 +0,0 @@ - -# frp - -[![Build Status](https://circleci.com/gh/fatedier/frp.svg?style=shield)](https://circleci.com/gh/fatedier/frp) -[![GitHub release](https://img.shields.io/github/tag/fatedier/frp.svg?label=release)](https://github.com/fatedier/frp/releases) - -[README](README.md) | [中文文档](README_zh.md) - -

Gold Sponsors

- -

- - - -   - - - -

- - - -## What is frp? - -frp is a fast reverse proxy that allows you to expose a local server located behind a NAT or firewall to the Internet. It currently supports **TCP** and **UDP**, as well as **HTTP** and **HTTPS** protocols, enabling requests to be forwarded to internal services via domain name. - -frp also offers a P2P connect mode. - -## Table of Contents - - - -- [frp](#frp) - - [What is frp?](#what-is-frp) - - [Table of Contents](#table-of-contents) - - [Development Status](#development-status) - - [Architecture](#architecture) - - [Example Usage](#example-usage) - - [Access your computer in a LAN network via SSH](#access-your-computer-in-a-lan-network-via-ssh) - - [Accessing Internal Web Services with Custom Domains in LAN](#accessing-internal-web-services-with-custom-domains-in-lan) - - [Forward DNS query requests](#forward-dns-query-requests) - - [Forward Unix Domain Socket](#forward-unix-domain-socket) - - [Expose a simple HTTP file server](#expose-a-simple-http-file-server) - - [Enable HTTPS for a local HTTP(S) service](#enable-https-for-a-local-https-service) - - [Expose your service privately](#expose-your-service-privately) - - [P2P Mode](#p2p-mode) - - [Features](#features) - - [Configuration Files](#configuration-files) - - [Using Environment Variables](#using-environment-variables) - - [Split Configures Into Different Files](#split-configures-into-different-files) - - [Dashboard](#dashboard) - - [Admin UI](#admin-ui) - - [Monitor](#monitor) - - [Prometheus](#prometheus) - - [Authenticating the Client](#authenticating-the-client) - - [Token Authentication](#token-authentication) - - [OIDC Authentication](#oidc-authentication) - - [Encryption and Compression](#encryption-and-compression) - - [TLS](#tls) - - [Hot-Reloading frpc configuration](#hot-reloading-frpc-configuration) - - [Get proxy status from client](#get-proxy-status-from-client) - - [Only allowing certain ports on the server](#only-allowing-certain-ports-on-the-server) - - [Port Reuse](#port-reuse) - - [Bandwidth Limit](#bandwidth-limit) - - [For Each Proxy](#for-each-proxy) - - [TCP Stream Multiplexing](#tcp-stream-multiplexing) - - [Support KCP Protocol](#support-kcp-protocol) - - [Support QUIC Protocol](#support-quic-protocol) - - [Connection Pooling](#connection-pooling) - - [Load balancing](#load-balancing) - - [Service Health Check](#service-health-check) - - [Rewriting the HTTP Host Header](#rewriting-the-http-host-header) - - [Setting other HTTP Headers](#setting-other-http-headers) - - [Get Real IP](#get-real-ip) - - [HTTP X-Forwarded-For](#http-x-forwarded-for) - - [Proxy Protocol](#proxy-protocol) - - [Require HTTP Basic Auth (Password) for Web Services](#require-http-basic-auth-password-for-web-services) - - [Custom Subdomain Names](#custom-subdomain-names) - - [URL Routing](#url-routing) - - [TCP Port Multiplexing](#tcp-port-multiplexing) - - [Connecting to frps via HTTP PROXY](#connecting-to-frps-via-http-proxy) - - [Range ports mapping](#range-ports-mapping) - - [Client Plugins](#client-plugins) - - [Server Manage Plugins](#server-manage-plugins) - - [Development Plan](#development-plan) - - [Contributing](#contributing) - - [Donation](#donation) - - [GitHub Sponsors](#github-sponsors) - - [PayPal](#paypal) - - - -## Development Status - -frp is currently under development. You can try the latest release version in the `master` branch, or use the `dev` branch to access the version currently in development. - -We are currently working on version 2 and attempting to perform some code refactoring and improvements. However, please note that it will not be compatible with version 1. - -We will transition from version 0 to version 1 at the appropriate time and will only accept bug fixes and improvements, rather than big feature requests. - -## Architecture - -![architecture](https://raw.githubusercontent.com/fatedier/frp/dev/doc/pic/architecture.png) - -## Example Usage - -To begin, download the latest program for your operating system and architecture from the [Release](https://github.com/fatedier/frp/releases) page. - -Next, place the `frps` binary and `frps.ini` configuration file on Server A, which has a public IP address. - -Finally, place the `frpc` binary and `frpc.ini` configuration file on Server B, which is located on a LAN that cannot be directly accessed from the public internet. - -### Access your computer in a LAN network via SSH - -1. Modify `frps.ini` on server A by setting the `bind_port` for frp clients to connect to: - - ```ini - # frps.ini - [common] - bind_port = 7000 - ``` - -2. Start `frps` on server A: - - `./frps -c ./frps.ini` - -3. Modify `frpc.ini` on server B and set the `server_addr` field to the public IP address of your frps server: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [ssh] - type = tcp - local_ip = 127.0.0.1 - local_port = 22 - remote_port = 6000 - ``` - -Note that the `local_port` (listened on the client) and `remote_port` (exposed on the server) are used for traffic going in and out of the frp system, while the `server_port` is used for communication between frps and frpc. - -4. Start `frpc` on server B: - - `./frpc -c ./frpc.ini` - -5. To access server B from another machine through server A via SSH (assuming the username is `test`), use the following command: - - `ssh -oPort=6000 test@x.x.x.x` - -### Accessing Internal Web Services with Custom Domains in LAN - -Sometimes we need to expose a local web service behind a NAT network to others for testing purposes with our own domain name. - -Unfortunately, we cannot resolve a domain name to a local IP. However, we can use frp to expose an HTTP(S) service. - -1. Modify `frps.ini` and set the HTTP port for vhost to 8080: - - ```ini - # frps.ini - [common] - bind_port = 7000 - vhost_http_port = 8080 - ``` - -2. Start `frps`: - - `./frps -c ./frps.ini` - -3. Modify `frpc.ini` and set `server_addr` to the IP address of the remote frps server. Specify the `local_port` of your web service: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [web] - type = http - local_port = 80 - custom_domains = www.example.com - ``` - -4. Start `frpc`: - - `./frpc -c ./frpc.ini` - -5. Map the A record of `www.example.com` to either the public IP of the remote frps server or a CNAME record pointing to your original domain. - -6. Visit your local web service using url `http://www.example.com:8080`. - -### Forward DNS query requests - -1. Modify `frps.ini`: - - ```ini - # frps.ini - [common] - bind_port = 7000 - ``` - -2. Start `frps`: - - `./frps -c ./frps.ini` - -3. Modify `frpc.ini` and set `server_addr` to the IP address of the remote frps server. Forward DNS query requests to the Google Public DNS server `8.8.8.8:53`: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [dns] - type = udp - local_ip = 8.8.8.8 - local_port = 53 - remote_port = 6000 - ``` - -4. Start frpc: - - `./frpc -c ./frpc.ini` - -5. Test DNS resolution using the `dig` command: - - `dig @x.x.x.x -p 6000 www.google.com` - -### Forward Unix Domain Socket - -Expose a Unix domain socket (e.g. the Docker daemon socket) as TCP. - -Configure `frps` as above. - -1. Start `frpc` with the following configuration: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [unix_domain_socket] - type = tcp - remote_port = 6000 - plugin = unix_domain_socket - plugin_unix_path = /var/run/docker.sock - ``` - -2. Test the configuration by getting the docker version using `curl`: - - `curl http://x.x.x.x:6000/version` - -### Expose a simple HTTP file server - -Expose a simple HTTP file server to access files stored in the LAN from the public Internet. - -Configure `frps` as described above, then: - -1. Start `frpc` with the following configuration: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [test_static_file] - type = tcp - remote_port = 6000 - plugin = static_file - plugin_local_path = /tmp/files - plugin_strip_prefix = static - plugin_http_user = abc - plugin_http_passwd = abc - ``` - -2. Visit `http://x.x.x.x:6000/static/` from your browser and specify correct username and password to view files in `/tmp/files` on the `frpc` machine. - -### Enable HTTPS for a local HTTP(S) service - -You may substitute `https2https` for the plugin, and point the `plugin_local_addr` to a HTTPS endpoint. - -1. Start `frpc` with the following configuration: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [test_https2http] - type = https - custom_domains = test.example.com - - plugin = https2http - plugin_local_addr = 127.0.0.1:80 - plugin_crt_path = ./server.crt - plugin_key_path = ./server.key - plugin_host_header_rewrite = 127.0.0.1 - plugin_header_X-From-Where = frp - ``` - -2. Visit `https://test.example.com`. - -### Expose your service privately - -To mitigate risks associated with exposing certain services directly to the public network, STCP (Secret TCP) mode requires a preshared key to be used for access to the service from other clients. - -Configure `frps` same as above. - -1. Start `frpc` on machine B with the following config. This example is for exposing the SSH service (port 22), and note the `sk` field for the preshared key, and that the `remote_port` field is removed here: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [secret_ssh] - type = stcp - sk = abcdefg - local_ip = 127.0.0.1 - local_port = 22 - ``` - -2. Start another `frpc` (typically on another machine C) with the following config to access the SSH service with a security key (`sk` field): - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [secret_ssh_visitor] - type = stcp - role = visitor - server_name = secret_ssh - sk = abcdefg - bind_addr = 127.0.0.1 - bind_port = 6000 - ``` - -3. On machine C, connect to SSH on machine B, using this command: - - `ssh -oPort=6000 127.0.0.1` - -### P2P Mode - -**xtcp** is designed to transmit large amounts of data directly between clients. A frps server is still needed, as P2P here only refers to the actual data transmission. - -Note that it may not work with all types of NAT devices. You might want to fallback to stcp if xtcp doesn't work. - -1. In `frps.ini` configure a UDP port for xtcp: - - ```ini - # frps.ini - bind_udp_port = 7001 - ``` - -2. Start `frpc` on machine B, and expose the SSH port. Note that the `remote_port` field is removed: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [p2p_ssh] - type = xtcp - sk = abcdefg - local_ip = 127.0.0.1 - local_port = 22 - ``` - -3. Start another `frpc` (typically on another machine C) with the configuration to connect to SSH using P2P mode: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - server_port = 7000 - - [p2p_ssh_visitor] - type = xtcp - role = visitor - server_name = p2p_ssh - sk = abcdefg - bind_addr = 127.0.0.1 - bind_port = 6000 - ``` - -4. On machine C, connect to SSH on machine B, using this command: - - `ssh -oPort=6000 127.0.0.1` - -## Features - -### Configuration Files - -Read the full example configuration files to find out even more features not described here. - -[Full configuration file for frps (Server)](./conf/frps_full.ini) - -[Full configuration file for frpc (Client)](./conf/frpc_full.ini) - -### Using Environment Variables - -Environment variables can be referenced in the configuration file, using Go's standard format: - -```ini -# frpc.ini -[common] -server_addr = {{ .Envs.FRP_SERVER_ADDR }} -server_port = 7000 - -[ssh] -type = tcp -local_ip = 127.0.0.1 -local_port = 22 -remote_port = {{ .Envs.FRP_SSH_REMOTE_PORT }} -``` - -With the config above, variables can be passed into `frpc` program like this: - -``` -export FRP_SERVER_ADDR="x.x.x.x" -export FRP_SSH_REMOTE_PORT="6000" -./frpc -c ./frpc.ini -``` - -`frpc` will render configuration file template using OS environment variables. Remember to prefix your reference with `.Envs`. - -### Split Configures Into Different Files - -You can split multiple proxy configs into different files and include them in the main file. - -```ini -# frpc.ini -[common] -server_addr = x.x.x.x -server_port = 7000 -includes=./confd/*.ini -``` - -```ini -# ./confd/test.ini -[ssh] -type = tcp -local_ip = 127.0.0.1 -local_port = 22 -remote_port = 6000 -``` - -### Dashboard - -Check frp's status and proxies' statistics information by Dashboard. - -Configure a port for dashboard to enable this feature: - -```ini -[common] -dashboard_port = 7500 -# dashboard's username and password are both optional -dashboard_user = admin -dashboard_pwd = admin -``` - -Then visit `http://[server_addr]:7500` to see the dashboard, with username and password both being `admin`. - -Additionally, you can use HTTPS port by using your domains wildcard or normal SSL certificate: - -```ini -[common] -dashboard_port = 7500 -# dashboard's username and password are both optional -dashboard_user = admin -dashboard_pwd = admin -dashboard_tls_mode = true -dashboard_tls_cert_file = server.crt -dashboard_tls_key_file = server.key -``` - -Then visit `https://[server_addr]:7500` to see the dashboard in secure HTTPS connection, with username and password both being `admin`. - -![dashboard](https://raw.githubusercontent.com/fatedier/frp/dev/doc/pic/dashboard.png) - -### Admin UI - -The Admin UI helps you check and manage frpc's configuration. - -Configure an address for admin UI to enable this feature: - -```ini -[common] -admin_addr = 127.0.0.1 -admin_port = 7400 -admin_user = admin -admin_pwd = admin -``` - -Then visit `http://127.0.0.1:7400` to see admin UI, with username and password both being `admin`. - -### Monitor - -When dashboard is enabled, frps will save monitor data in cache. It will be cleared after process restart. - -Prometheus is also supported. - -#### Prometheus - -Enable dashboard first, then configure `enable_prometheus = true` in `frps.ini`. - -`http://{dashboard_addr}/metrics` will provide prometheus monitor data. - -### Authenticating the Client - -There are 2 authentication methods to authenticate frpc with frps. - -You can decide which one to use by configuring `authentication_method` under `[common]` in `frpc.ini` and `frps.ini`. - -Configuring `authenticate_heartbeats = true` under `[common]` will use the configured authentication method to add and validate authentication on every heartbeat between frpc and frps. - -Configuring `authenticate_new_work_conns = true` under `[common]` will do the same for every new work connection between frpc and frps. - -#### Token Authentication - -When specifying `authentication_method = token` under `[common]` in `frpc.ini` and `frps.ini` - token based authentication will be used. - -Make sure to specify the same `token` in the `[common]` section in `frps.ini` and `frpc.ini` for frpc to pass frps validation - -#### OIDC Authentication - -When specifying `authentication_method = oidc` under `[common]` in `frpc.ini` and `frps.ini` - OIDC based authentication will be used. - -OIDC stands for OpenID Connect, and the flow used is called [Client Credentials Grant](https://tools.ietf.org/html/rfc6749#section-4.4). - -To use this authentication type - configure `frpc.ini` and `frps.ini` as follows: - -```ini -# frps.ini -[common] -authentication_method = oidc -oidc_issuer = https://example-oidc-issuer.com/ -oidc_audience = https://oidc-audience.com/.default -``` - -```ini -# frpc.ini -[common] -authentication_method = oidc -oidc_client_id = 98692467-37de-409a-9fac-bb2585826f18 # Replace with OIDC client ID -oidc_client_secret = oidc_secret -oidc_audience = https://oidc-audience.com/.default -oidc_token_endpoint_url = https://example-oidc-endpoint.com/oauth2/v2.0/token -``` - -### Encryption and Compression - -The features are off by default. You can turn on encryption and/or compression: - -```ini -# frpc.ini -[ssh] -type = tcp -local_port = 22 -remote_port = 6000 -use_encryption = true -use_compression = true -``` - -#### TLS - -frp supports the TLS protocol between `frpc` and `frps` since v0.25.0. - -For port multiplexing, frp sends a first byte `0x17` to dial a TLS connection. - -Configure `tls_enable = true` in the `[common]` section to `frpc.ini` to enable this feature. - -To **enforce** `frps` to only accept TLS connections - configure `tls_only = true` in the `[common]` section in `frps.ini`. **This is optional.** - -**`frpc` TLS settings (under the `[common]` section):** -```ini -tls_enable = true -tls_cert_file = certificate.crt -tls_key_file = certificate.key -tls_trusted_ca_file = ca.crt -``` - -**`frps` TLS settings (under the `[common]` section):** -```ini -tls_only = true -tls_enable = true -tls_cert_file = certificate.crt -tls_key_file = certificate.key -tls_trusted_ca_file = ca.crt -``` - -You will need **a root CA cert** and **at least one SSL/TLS certificate**. It **can** be self-signed or regular (such as Let's Encrypt or another SSL/TLS certificate provider). - -If you using `frp` via IP address and not hostname, make sure to set the appropriate IP address in the Subject Alternative Name (SAN) area when generating SSL/TLS Certificates. - -Given an example: - -* Prepare openssl config file. It exists at `/etc/pki/tls/openssl.cnf` in Linux System and `/System/Library/OpenSSL/openssl.cnf` in MacOS, and you can copy it to current path, like `cp /etc/pki/tls/openssl.cnf ./my-openssl.cnf`. If not, you can build it by yourself, like: -``` -cat > my-openssl.cnf << EOF -[ ca ] -default_ca = CA_default -[ CA_default ] -x509_extensions = usr_cert -[ req ] -default_bits = 2048 -default_md = sha256 -default_keyfile = privkey.pem -distinguished_name = req_distinguished_name -attributes = req_attributes -x509_extensions = v3_ca -string_mask = utf8only -[ req_distinguished_name ] -[ req_attributes ] -[ usr_cert ] -basicConstraints = CA:FALSE -nsComment = "OpenSSL Generated Certificate" -subjectKeyIdentifier = hash -authorityKeyIdentifier = keyid,issuer -[ v3_ca ] -subjectKeyIdentifier = hash -authorityKeyIdentifier = keyid:always,issuer -basicConstraints = CA:true -EOF -``` - -* build ca certificates: -``` -openssl genrsa -out ca.key 2048 -openssl req -x509 -new -nodes -key ca.key -subj "/CN=example.ca.com" -days 5000 -out ca.crt -``` - -* build frps certificates: -``` -openssl genrsa -out server.key 2048 - -openssl req -new -sha256 -key server.key \ - -subj "/C=XX/ST=DEFAULT/L=DEFAULT/O=DEFAULT/CN=server.com" \ - -reqexts SAN \ - -config <(cat my-openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:localhost,IP:127.0.0.1,DNS:example.server.com")) \ - -out server.csr - -openssl x509 -req -days 365 -sha256 \ - -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial \ - -extfile <(printf "subjectAltName=DNS:localhost,IP:127.0.0.1,DNS:example.server.com") \ - -out server.crt -``` - -* build frpc certificates: -``` -openssl genrsa -out client.key 2048 -openssl req -new -sha256 -key client.key \ - -subj "/C=XX/ST=DEFAULT/L=DEFAULT/O=DEFAULT/CN=client.com" \ - -reqexts SAN \ - -config <(cat my-openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:client.com,DNS:example.client.com")) \ - -out client.csr - -openssl x509 -req -days 365 -sha256 \ - -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial \ - -extfile <(printf "subjectAltName=DNS:client.com,DNS:example.client.com") \ - -out client.crt -``` - -### Hot-Reloading frpc configuration - -The `admin_addr` and `admin_port` fields are required for enabling HTTP API: - -```ini -# frpc.ini -[common] -admin_addr = 127.0.0.1 -admin_port = 7400 -``` - -Then run command `frpc reload -c ./frpc.ini` and wait for about 10 seconds to let `frpc` create or update or remove proxies. - -**Note that parameters in [common] section won't be modified except 'start'.** - -You can run command `frpc verify -c ./frpc.ini` before reloading to check if there are config errors. - -### Get proxy status from client - -Use `frpc status -c ./frpc.ini` to get status of all proxies. The `admin_addr` and `admin_port` fields are required for enabling HTTP API. - -### Only allowing certain ports on the server - -`allow_ports` in `frps.ini` is used to avoid abuse of ports: - -```ini -# frps.ini -[common] -allow_ports = 2000-3000,3001,3003,4000-50000 -``` - -`allow_ports` consists of specific ports or port ranges (lowest port number, dash `-`, highest port number), separated by comma `,`. - -### Port Reuse - -`vhost_http_port` and `vhost_https_port` in frps can use same port with `bind_port`. frps will detect the connection's protocol and handle it correspondingly. - -We would like to try to allow multiple proxies bind a same remote port with different protocols in the future. - -### Bandwidth Limit - -#### For Each Proxy - -```ini -# frpc.ini -[ssh] -type = tcp -local_port = 22 -remote_port = 6000 -bandwidth_limit = 1MB -``` - -Set `bandwidth_limit` in each proxy's configure to enable this feature. Supported units are `MB` and `KB`. - -Set `bandwidth_limit_mode` to `client` or `server` to limit bandwidth on the client or server side. Default is `client`. - -### TCP Stream Multiplexing - -frp supports tcp stream multiplexing since v0.10.0 like HTTP2 Multiplexing, in which case all logic connections to the same frpc are multiplexed into the same TCP connection. - -You can disable this feature by modify `frps.ini` and `frpc.ini`: - -```ini -# frps.ini and frpc.ini, must be same -[common] -tcp_mux = false -``` - -### Support KCP Protocol - -KCP is a fast and reliable protocol that can achieve the transmission effect of a reduction of the average latency by 30% to 40% and reduction of the maximum delay by a factor of three, at the cost of 10% to 20% more bandwidth wasted than TCP. - -KCP mode uses UDP as the underlying transport. Using KCP in frp: - -1. Enable KCP in frps: - - ```ini - # frps.ini - [common] - bind_port = 7000 - # Specify a UDP port for KCP. - kcp_bind_port = 7000 - ``` - - The `kcp_bind_port` number can be the same number as `bind_port`, since `bind_port` field specifies a TCP port. - -2. Configure `frpc.ini` to use KCP to connect to frps: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - # Same as the 'kcp_bind_port' in frps.ini - server_port = 7000 - protocol = kcp - ``` - -### Support QUIC Protocol - -QUIC is a new multiplexed transport built on top of UDP. - -Using QUIC in frp: - -1. Enable QUIC in frps: - - ```ini - # frps.ini - [common] - bind_port = 7000 - # Specify a UDP port for QUIC. - quic_bind_port = 7000 - ``` - - The `quic_bind_port` number can be the same number as `bind_port`, since `bind_port` field specifies a TCP port. - -2. Configure `frpc.ini` to use QUIC to connect to frps: - - ```ini - # frpc.ini - [common] - server_addr = x.x.x.x - # Same as the 'quic_bind_port' in frps.ini - server_port = 7000 - protocol = quic - ``` - -### Connection Pooling - -By default, frps creates a new frpc connection to the backend service upon a user request. With connection pooling, frps keeps a certain number of pre-established connections, reducing the time needed to establish a connection. - -This feature is suitable for a large number of short connections. - -1. Configure the limit of pool count each proxy can use in `frps.ini`: - - ```ini - # frps.ini - [common] - max_pool_count = 5 - ``` - -2. Enable and specify the number of connection pool: - - ```ini - # frpc.ini - [common] - pool_count = 1 - ``` - -### Load balancing - -Load balancing is supported by `group`. - -This feature is only available for types `tcp`, `http`, `tcpmux` now. - -```ini -# frpc.ini -[test1] -type = tcp -local_port = 8080 -remote_port = 80 -group = web -group_key = 123 - -[test2] -type = tcp -local_port = 8081 -remote_port = 80 -group = web -group_key = 123 -``` - -`group_key` is used for authentication. - -Connections to port 80 will be dispatched to proxies in the same group randomly. - -For type `tcp`, `remote_port` in the same group should be the same. - -For type `http`, `custom_domains`, `subdomain`, `locations` should be the same. - -### Service Health Check - -Health check feature can help you achieve high availability with load balancing. - -Add `health_check_type = tcp` or `health_check_type = http` to enable health check. - -With health check type **tcp**, the service port will be pinged (TCPing): - -```ini -# frpc.ini -[test1] -type = tcp -local_port = 22 -remote_port = 6000 -# Enable TCP health check -health_check_type = tcp -# TCPing timeout seconds -health_check_timeout_s = 3 -# If health check failed 3 times in a row, the proxy will be removed from frps -health_check_max_failed = 3 -# A health check every 10 seconds -health_check_interval_s = 10 -``` - -With health check type **http**, an HTTP request will be sent to the service and an HTTP 2xx OK response is expected: - -```ini -# frpc.ini -[web] -type = http -local_ip = 127.0.0.1 -local_port = 80 -custom_domains = test.example.com -# Enable HTTP health check -health_check_type = http -# frpc will send a GET request to '/status' -# and expect an HTTP 2xx OK response -health_check_url = /status -health_check_timeout_s = 3 -health_check_max_failed = 3 -health_check_interval_s = 10 -``` - -### Rewriting the HTTP Host Header - -By default frp does not modify the tunneled HTTP requests at all as it's a byte-for-byte copy. - -However, speaking of web servers and HTTP requests, your web server might rely on the `Host` HTTP header to determine the website to be accessed. frp can rewrite the `Host` header when forwarding the HTTP requests, with the `host_header_rewrite` field: - -```ini -# frpc.ini -[web] -type = http -local_port = 80 -custom_domains = test.example.com -host_header_rewrite = dev.example.com -``` - -The HTTP request will have the `Host` header rewritten to `Host: dev.example.com` when it reaches the actual web server, although the request from the browser probably has `Host: test.example.com`. - -### Setting other HTTP Headers - -Similar to `Host`, You can override other HTTP request headers with proxy type `http`. - -```ini -# frpc.ini -[web] -type = http -local_port = 80 -custom_domains = test.example.com -host_header_rewrite = dev.example.com -header_X-From-Where = frp -``` - -Note that parameter(s) prefixed with `header_` will be added to HTTP request headers. - -In this example, it will set header `X-From-Where: frp` in the HTTP request. - -### Get Real IP - -#### HTTP X-Forwarded-For - -This feature is for http proxy only. - -You can get user's real IP from HTTP request headers `X-Forwarded-For`. - -#### Proxy Protocol - -frp supports Proxy Protocol to send user's real IP to local services. It support all types except UDP. - -Here is an example for https service: - -```ini -# frpc.ini -[web] -type = https -local_port = 443 -custom_domains = test.example.com - -# now v1 and v2 are supported -proxy_protocol_version = v2 -``` - -You can enable Proxy Protocol support in nginx to expose user's real IP in HTTP header `X-Real-IP`, and then read `X-Real-IP` header in your web service for the real IP. - -### Require HTTP Basic Auth (Password) for Web Services - -Anyone who can guess your tunnel URL can access your local web server unless you protect it with a password. - -This enforces HTTP Basic Auth on all requests with the username and password specified in frpc's configure file. - -It can only be enabled when proxy type is http. - -```ini -# frpc.ini -[web] -type = http -local_port = 80 -custom_domains = test.example.com -http_user = abc -http_pwd = abc -``` - -Visit `http://test.example.com` in the browser and now you are prompted to enter the username and password. - -### Custom Subdomain Names - -It is convenient to use `subdomain` configure for http and https types when many people share one frps server. - -```ini -# frps.ini -subdomain_host = frps.com -``` - -Resolve `*.frps.com` to the frps server's IP. This is usually called a Wildcard DNS record. - -```ini -# frpc.ini -[web] -type = http -local_port = 80 -subdomain = test -``` - -Now you can visit your web service on `test.frps.com`. - -Note that if `subdomain_host` is not empty, `custom_domains` should not be the subdomain of `subdomain_host`. - -### URL Routing - -frp supports forwarding HTTP requests to different backend web services by url routing. - -`locations` specifies the prefix of URL used for routing. frps first searches for the most specific prefix location given by literal strings regardless of the listed order. - -```ini -# frpc.ini -[web01] -type = http -local_port = 80 -custom_domains = web.example.com -locations = / - -[web02] -type = http -local_port = 81 -custom_domains = web.example.com -locations = /news,/about -``` - -HTTP requests with URL prefix `/news` or `/about` will be forwarded to **web02** and other requests to **web01**. - -### TCP Port Multiplexing - -frp supports receiving TCP sockets directed to different proxies on a single port on frps, similar to `vhost_http_port` and `vhost_https_port`. - -The only supported TCP port multiplexing method available at the moment is `httpconnect` - HTTP CONNECT tunnel. - -When setting `tcpmux_httpconnect_port` to anything other than 0 in frps under `[common]`, frps will listen on this port for HTTP CONNECT requests. - -The host of the HTTP CONNECT request will be used to match the proxy in frps. Proxy hosts can be configured in frpc by configuring `custom_domain` and / or `subdomain` under `type = tcpmux` proxies, when `multiplexer = httpconnect`. - -For example: - -```ini -# frps.ini -[common] -bind_port = 7000 -tcpmux_httpconnect_port = 1337 -``` - -```ini -# frpc.ini -[common] -server_addr = x.x.x.x -server_port = 7000 - -[proxy1] -type = tcpmux -multiplexer = httpconnect -custom_domains = test1 -local_port = 80 - -[proxy2] -type = tcpmux -multiplexer = httpconnect -custom_domains = test2 -local_port = 8080 -``` - -In the above configuration - frps can be contacted on port 1337 with a HTTP CONNECT header such as: - -``` -CONNECT test1 HTTP/1.1\r\n\r\n -``` -and the connection will be routed to `proxy1`. - -### Connecting to frps via HTTP PROXY - -frpc can connect to frps using HTTP proxy if you set OS environment variable `HTTP_PROXY`, or if `http_proxy` is set in frpc.ini file. - -It only works when protocol is tcp. - -```ini -# frpc.ini -[common] -server_addr = x.x.x.x -server_port = 7000 -http_proxy = http://user:pwd@192.168.1.128:8080 -``` - -### Range ports mapping - -Proxy with names that start with `range:` will support mapping range ports. - -```ini -# frpc.ini -[range:test_tcp] -type = tcp -local_ip = 127.0.0.1 -local_port = 6000-6006,6007 -remote_port = 6000-6006,6007 -``` - -frpc will generate 8 proxies like `test_tcp_0`, `test_tcp_1`, ..., `test_tcp_7`. - -### Client Plugins - -frpc only forwards requests to local TCP or UDP ports by default. - -Plugins are used for providing rich features. There are built-in plugins such as `unix_domain_socket`, `http_proxy`, `socks5`, `static_file`, `http2https`, `https2http`, `https2https` and you can see [example usage](#example-usage). - -Specify which plugin to use with the `plugin` parameter. Configuration parameters of plugin should be started with `plugin_`. `local_ip` and `local_port` are not used for plugin. - -Using plugin **http_proxy**: - -```ini -# frpc.ini -[http_proxy] -type = tcp -remote_port = 6000 -plugin = http_proxy -plugin_http_user = abc -plugin_http_passwd = abc -``` - -`plugin_http_user` and `plugin_http_passwd` are configuration parameters used in `http_proxy` plugin. - -### Server Manage Plugins - -Read the [document](/doc/server_plugin.md). - -Find more plugins in [gofrp/plugin](https://github.com/gofrp/plugin). - -## Development Plan - -* Log HTTP request information in frps. - -## Contributing - -Interested in getting involved? We would like to help you! - -* Take a look at our [issues list](https://github.com/fatedier/frp/issues) and consider sending a Pull Request to **dev branch**. -* If you want to add a new feature, please create an issue first to describe the new feature, as well as the implementation approach. Once a proposal is accepted, create an implementation of the new features and submit it as a pull request. -* Sorry for my poor English. Improvements for this document are welcome, even some typo fixes. -* If you have great ideas, send an email to fatedier@gmail.com. - -**Note: We prefer you to give your advise in [issues](https://github.com/fatedier/frp/issues), so others with a same question can search it quickly and we don't need to answer them repeatedly.** - -## Donation - -If frp helps you a lot, you can support us by: - -### GitHub Sponsors - -Support us by [Github Sponsors](https://github.com/sponsors/fatedier). - -You can have your company's logo placed on README file of this project. - -### PayPal - -Donate money by [PayPal](https://www.paypal.me/fatedier) to my account **fatedier@gmail.com**. - diff --git a/apps/frps/data.yml b/apps/frps/data.yml deleted file mode 100644 index b5a64ece..00000000 --- a/apps/frps/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: frps-frp 服务端 -tags: - - 工具 -title: frp 是一种反向代理工具,常用于内网穿透(服务端) -description: frp 是一种反向代理工具,常用于内网穿透(服务端) -additionalProperties: - key: frps - name: frps-frp 服务端 - tags: - - Tool - shortDescZh: frp 是一种反向代理工具,常用于内网穿透(服务端) - shortDescEn: frp is a reverse proxy tool that is commonly used for intranet penetration(Server) - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://github.com/fatedier/frp - github: https://github.com/fatedier/frp - document: https://github.com/fatedier/frp/blob/dev/README_zh.md diff --git a/apps/frps/latest/.env.sample b/apps/frps/latest/.env.sample deleted file mode 100644 index fa2ac786..00000000 --- a/apps/frps/latest/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="frps" -SSL_FOLDER_PATH="./data/ssl" \ No newline at end of file diff --git a/apps/frps/latest/data.yml b/apps/frps/latest/data.yml deleted file mode 100644 index a04a9f47..00000000 --- a/apps/frps/latest/data.yml +++ /dev/null @@ -1,23 +0,0 @@ -additionalProperties: - formFields: - - default: ./data/frps.toml - edit: true - envKey: CONFIG_FILE_PATH - labelEn: Configuration file path - labelZh: 配置文件路径 - required: true - type: text - - default: 7000 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port (determined by the configuration file) - labelZh: 端口 (由配置文件决定) - required: true - type: number - - default: ./data/ssl - edit: true - envKey: SSL_FOLDER_PATH - labelEn: Certificate folder path (corresponding to "/etc/frp/ssl" in container) - labelZh: 证书文件夹路径 (对应容器内 "/etc/frp/ssl") - required: true - type: text diff --git a/apps/frps/latest/data/frpc.ini b/apps/frps/latest/data/frpc.ini deleted file mode 100644 index 13a8e5f6..00000000 --- a/apps/frps/latest/data/frpc.ini +++ /dev/null @@ -1,9 +0,0 @@ -[common] -server_addr = 127.0.0.1 -server_port = 7000 - -[ssh] -type = tcp -local_ip = 127.0.0.1 -local_port = 22 -remote_port = 6000 diff --git a/apps/frps/latest/data/frpc.toml b/apps/frps/latest/data/frpc.toml deleted file mode 100644 index 9e64a124..00000000 --- a/apps/frps/latest/data/frpc.toml +++ /dev/null @@ -1,42 +0,0 @@ -# common -serverAddr = "1.2.3.4" -serverPort = 7000 -auth.method = "token" -auth.token = "token123456" -# supports tcp, kcp, quic, websocket and wss now, default is tcp -transport.protocol = "tcp" - -# dashboard -webServer.addr = "127.0.0.1" -webServer.port = 6000 -webServer.user = "admin" -webServer.password = "password123456" -webServer.pprofEnable = false - -# setting -loginFailExit = false -transport.tcpMux = false -transport.tls.enable = false -# transport.tls.certFile = "client.crt" -# transport.tls.keyFile = "client.key" -# transport.tls.trustedCaFile = "ca.crt" -# transport.tls.serverName = "example.com" - -# tls -#transport.tls.certFile = "/etc/frp/ssl/client.crt" -#transport.tls.keyFile = "/etc/frp/ssl/client.key" -#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt" - -[[proxies]] -name = "rdp_tcp" -type = "tcp" -localIP = "127.0.0.1" -localPort = 3389 -remotePort = 13389 - -[[proxies]] -name = "rdp_udp" -type = "udp" -localIP = "127.0.0.1" -localPort = 3389 -remotePort = 13389 \ No newline at end of file diff --git a/apps/frps/latest/data/frpc_full.ini b/apps/frps/latest/data/frpc_full.ini deleted file mode 100644 index 29f6bcab..00000000 --- a/apps/frps/latest/data/frpc_full.ini +++ /dev/null @@ -1,365 +0,0 @@ -# [common] is integral section -[common] -# A literal address or host name for IPv6 must be enclosed -# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80" -# For single "server_addr" field, no need square brackets, like "server_addr = ::". -server_addr = 0.0.0.0 -server_port = 7000 - -# The maximum amount of time a dial to server will wait for a connect to complete. Default value is 10 seconds. -# dial_server_timeout = 10 - -# dial_server_keepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps. -# If negative, keep-alive probes are disabled. -# dial_server_keepalive = 7200 - -# if you want to connect frps by http proxy or socks5 proxy or ntlm proxy, you can set http_proxy here or in global environment variables -# it only works when protocol is tcp -# http_proxy = http://user:passwd@192.168.1.128:8080 -# http_proxy = socks5://user:passwd@192.168.1.128:1080 -# http_proxy = ntlm://user:passwd@192.168.1.128:2080 - -# console or real logFile path like ./frpc.log -log_file = ./frpc.log - -# trace, debug, info, warn, error -log_level = info - -log_max_days = 3 - -# disable log colors when log_file is console, default is false -disable_log_color = false - -# for authentication, should be same as your frps.ini -# authenticate_heartbeats specifies whether to include authentication token in heartbeats sent to frps. By default, this value is false. -authenticate_heartbeats = false - -# authenticate_new_work_conns specifies whether to include authentication token in new work connections sent to frps. By default, this value is false. -authenticate_new_work_conns = false - -# auth token -token = 12345678 - -authentication_method = - -# oidc_client_id specifies the client ID to use to get a token in OIDC authentication if AuthenticationMethod == "oidc". -# By default, this value is "". -oidc_client_id = - -# oidc_client_secret specifies the client secret to use to get a token in OIDC authentication if AuthenticationMethod == "oidc". -# By default, this value is "". -oidc_client_secret = - -# oidc_audience specifies the audience of the token in OIDC authentication if AuthenticationMethod == "oidc". By default, this value is "". -oidc_audience = - -# oidc_scope specifies the permisssions of the token in OIDC authentication if AuthenticationMethod == "oidc". By default, this value is "". -oidc_scope = - -# oidc_token_endpoint_url specifies the URL which implements OIDC Token Endpoint. -# It will be used to get an OIDC token if AuthenticationMethod == "oidc". By default, this value is "". -oidc_token_endpoint_url = - -# oidc_additional_xxx specifies additional parameters to be sent to the OIDC Token Endpoint. -# For example, if you want to specify the "audience" parameter, you can set as follow. -# frp will add "audience=" "var1=" to the additional parameters. -# oidc_additional_audience = https://dev.auth.com/api/v2/ -# oidc_additional_var1 = foobar - -# set admin address for control frpc's action by http api such as reload -admin_addr = 127.0.0.1 -admin_port = 7400 -admin_user = admin -admin_pwd = admin -# Admin assets directory. By default, these assets are bundled with frpc. -# assets_dir = ./static - -# connections will be established in advance, default value is zero -pool_count = 5 - -# if tcp stream multiplexing is used, default is true, it must be same with frps -# tcp_mux = true - -# specify keep alive interval for tcp mux. -# only valid if tcp_mux is true. -# tcp_mux_keepalive_interval = 60 - -# your proxy name will be changed to {user}.{proxy} -user = your_name - -# decide if exit program when first login failed, otherwise continuous relogin to frps -# default is true -login_fail_exit = true - -# communication protocol used to connect to server -# supports tcp, kcp, quic and websocket now, default is tcp -protocol = tcp - -# set client binding ip when connect server, default is empty. -# only when protocol = tcp or websocket, the value will be used. -connect_server_local_ip = 0.0.0.0 - -# quic protocol options -# quic_keepalive_period = 10 -# quic_max_idle_timeout = 30 -# quic_max_incoming_streams = 100000 - -# if tls_enable is true, frpc will connect frps by tls -tls_enable = true - -# tls_cert_file = client.crt -# tls_key_file = client.key -# tls_trusted_ca_file = ca.crt -# tls_server_name = example.com - -# specify a dns server, so frpc will use this instead of default one -# dns_server = 8.8.8.8 - -# proxy names you want to start separated by ',' -# default is empty, means all proxies -# start = ssh,dns - -# heartbeat configure, it's not recommended to modify the default value -# The default value of heartbeat_interval is 10 and heartbeat_timeout is 90. Set negative value -# to disable it. -# heartbeat_interval = 30 -# heartbeat_timeout = 90 - -# additional meta info for client -meta_var1 = 123 -meta_var2 = 234 - -# specify udp packet size, unit is byte. If not set, the default value is 1500. -# This parameter should be same between client and server. -# It affects the udp and sudp proxy. -udp_packet_size = 1500 - -# include other config files for proxies. -# includes = ./confd/*.ini - -# By default, frpc will connect frps with first custom byte if tls is enabled. -# If DisableCustomTLSFirstByte is true, frpc will not send that custom byte. -disable_custom_tls_first_byte = false - -# Enable golang pprof handlers in admin listener. -# Admin port must be set first. -pprof_enable = false - -# 'ssh' is the unique proxy name -# if user in [common] section is not empty, it will be changed to {user}.{proxy} such as 'your_name.ssh' -[ssh] -# tcp | udp | http | https | stcp | xtcp, default is tcp -type = tcp -local_ip = 127.0.0.1 -local_port = 22 -# limit bandwidth for this proxy, unit is KB and MB -bandwidth_limit = 1MB -# where to limit bandwidth, can be 'client' or 'server', default is 'client' -bandwidth_limit_mode = client -# true or false, if true, messages between frps and frpc will be encrypted, default is false -use_encryption = false -# if true, message will be compressed -use_compression = false -# remote port listen by frps -remote_port = 6001 -# frps will load balancing connections for proxies in same group -group = test_group -# group should have same group key -group_key = 123456 -# enable health check for the backend service, it support 'tcp' and 'http' now -# frpc will connect local service's port to detect it's healthy status -health_check_type = tcp -# health check connection timeout -health_check_timeout_s = 3 -# if continuous failed in 3 times, the proxy will be removed from frps -health_check_max_failed = 3 -# every 10 seconds will do a health check -health_check_interval_s = 10 -# additional meta info for each proxy -meta_var1 = 123 -meta_var2 = 234 - -[ssh_random] -type = tcp -local_ip = 127.0.0.1 -local_port = 22 -# if remote_port is 0, frps will assign a random port for you -remote_port = 0 - -# if you want to expose multiple ports, add 'range:' prefix to the section name -# frpc will generate multiple proxies such as 'tcp_port_6010', 'tcp_port_6011' and so on. -[range:tcp_port] -type = tcp -local_ip = 127.0.0.1 -local_port = 6010-6020,6022,6024-6028 -remote_port = 6010-6020,6022,6024-6028 -use_encryption = false -use_compression = false - -[dns] -type = udp -local_ip = 114.114.114.114 -local_port = 53 -remote_port = 6002 -use_encryption = false -use_compression = false - -[range:udp_port] -type = udp -local_ip = 127.0.0.1 -local_port = 6010-6020 -remote_port = 6010-6020 -use_encryption = false -use_compression = false - -# Resolve your domain names to [server_addr] so you can use http://web01.yourdomain.com to browse web01 and http://web02.yourdomain.com to browse web02 -[web01] -type = http -local_ip = 127.0.0.1 -local_port = 80 -use_encryption = false -use_compression = true -# http username and password are safety certification for http protocol -# if not set, you can access this custom_domains without certification -http_user = admin -http_pwd = admin -# if domain for frps is frps.com, then you can access [web01] proxy by URL http://web01.frps.com -subdomain = web01 -custom_domains = web01.yourdomain.com -# locations is only available for http type -locations = /,/pic -# route requests to this service if http basic auto user is abc -# route_by_http_user = abc -host_header_rewrite = example.com -# params with prefix "header_" will be used to update http request headers -header_X-From-Where = frp -health_check_type = http -# frpc will send a GET http request '/status' to local http service -# http service is alive when it return 2xx http response code -health_check_url = /status -health_check_interval_s = 10 -health_check_max_failed = 3 -health_check_timeout_s = 3 - -[web02] -type = https -local_ip = 127.0.0.1 -local_port = 8000 -use_encryption = false -use_compression = false -subdomain = web01 -custom_domains = web02.yourdomain.com -# if not empty, frpc will use proxy protocol to transfer connection info to your local service -# v1 or v2 or empty -proxy_protocol_version = v2 - -[plugin_unix_domain_socket] -type = tcp -remote_port = 6003 -# if plugin is defined, local_ip and local_port is useless -# plugin will handle connections got from frps -plugin = unix_domain_socket -# params with prefix "plugin_" that plugin needed -plugin_unix_path = /var/run/docker.sock - -[plugin_http_proxy] -type = tcp -remote_port = 6004 -plugin = http_proxy -plugin_http_user = abc -plugin_http_passwd = abc - -[plugin_socks5] -type = tcp -remote_port = 6005 -plugin = socks5 -plugin_user = abc -plugin_passwd = abc - -[plugin_static_file] -type = tcp -remote_port = 6006 -plugin = static_file -plugin_local_path = /var/www/blog -plugin_strip_prefix = static -plugin_http_user = abc -plugin_http_passwd = abc - -[plugin_https2http] -type = https -custom_domains = test.yourdomain.com -plugin = https2http -plugin_local_addr = 127.0.0.1:80 -plugin_crt_path = ./server.crt -plugin_key_path = ./server.key -plugin_host_header_rewrite = 127.0.0.1 -plugin_header_X-From-Where = frp - -[plugin_https2https] -type = https -custom_domains = test.yourdomain.com -plugin = https2https -plugin_local_addr = 127.0.0.1:443 -plugin_crt_path = ./server.crt -plugin_key_path = ./server.key -plugin_host_header_rewrite = 127.0.0.1 -plugin_header_X-From-Where = frp - -[plugin_http2https] -type = http -custom_domains = test.yourdomain.com -plugin = http2https -plugin_local_addr = 127.0.0.1:443 -plugin_host_header_rewrite = 127.0.0.1 -plugin_header_X-From-Where = frp - -[secret_tcp] -# If the type is secret tcp, remote_port is useless -# Who want to connect local port should deploy another frpc with stcp proxy and role is visitor -type = stcp -# sk used for authentication for visitors -sk = abcdefg -local_ip = 127.0.0.1 -local_port = 22 -use_encryption = false -use_compression = false - -# user of frpc should be same in both stcp server and stcp visitor -[secret_tcp_visitor] -# frpc role visitor -> frps -> frpc role server -role = visitor -type = stcp -# the server name you want to visitor -server_name = secret_tcp -sk = abcdefg -# connect this address to visitor stcp server -bind_addr = 127.0.0.1 -bind_port = 9000 -use_encryption = false -use_compression = false - -[p2p_tcp] -type = xtcp -sk = abcdefg -local_ip = 127.0.0.1 -local_port = 22 -use_encryption = false -use_compression = false - -[p2p_tcp_visitor] -role = visitor -type = xtcp -server_name = p2p_tcp -sk = abcdefg -bind_addr = 127.0.0.1 -bind_port = 9001 -use_encryption = false -use_compression = false - -[tcpmuxhttpconnect] -type = tcpmux -multiplexer = httpconnect -local_ip = 127.0.0.1 -local_port = 10701 -custom_domains = tunnel1 -# route_by_http_user = user1 diff --git a/apps/frps/latest/data/frpc_full.toml b/apps/frps/latest/data/frpc_full.toml deleted file mode 100644 index 67fd84ec..00000000 --- a/apps/frps/latest/data/frpc_full.toml +++ /dev/null @@ -1,366 +0,0 @@ -# This configuration file is for reference only. Please do not use this configuration directly to run the program as it may have various issues. - -# your proxy name will be changed to {user}.{proxy} -user = "your_name" - -# A literal address or host name for IPv6 must be enclosed -# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80" -# For single serverAddr field, no need square brackets, like serverAddr = "::". -serverAddr = "0.0.0.0" -serverPort = 7000 - -# STUN server to help penetrate NAT hole. -# natHoleStunServer = "stun.easyvoip.com:3478" - -# Decide if exit program when first login failed, otherwise continuous relogin to frps -# default is true -loginFailExit = true - -# console or real logFile path like ./frpc.log -log.to = "./frpc.log" -# trace, debug, info, warn, error -log.level = "info" -log.maxDays = 3 -# disable log colors when log.to is console, default is false -log.disablePrintColor = false - -auth.method = "token" -# auth.additionalScopes specifies additional scopes to include authentication information. -# Optional values are HeartBeats, NewWorkConns. -# auth.additionalScopes = ["HeartBeats", "NewWorkConns"] - -# auth token -auth.token = "12345678" - -# oidc.clientID specifies the client ID to use to get a token in OIDC authentication. -# auth.oidc.clientID = "" -# oidc.clientSecret specifies the client secret to use to get a token in OIDC authentication. -# auth.oidc.clientSecret = "" -# oidc.audience specifies the audience of the token in OIDC authentication. -# auth.oidc.audience = "" -# oidc.scope specifies the permissions of the token in OIDC authentication if AuthenticationMethod == "oidc". By default, this value is "". -# auth.oidc.scope = "" -# oidc.tokenEndpointURL specifies the URL which implements OIDC Token Endpoint. -# It will be used to get an OIDC token. -# auth.oidc.tokenEndpointURL = "" - -# oidc.additionalEndpointParams specifies additional parameters to be sent to the OIDC Token Endpoint. -# For example, if you want to specify the "audience" parameter, you can set as follow. -# frp will add "audience=" "var1=" to the additional parameters. -# auth.oidc.additionalEndpointParams.audience = "https://dev.auth.com/api/v2/" -# auth.oidc.additionalEndpointParams.var1 = "foobar" - -# Set admin address for control frpc's action by http api such as reload -webServer.addr = "127.0.0.1" -webServer.port = 7400 -webServer.user = "admin" -webServer.password = "admin" -# Admin assets directory. By default, these assets are bundled with frpc. -# webServer.assetsDir = "./static" - -# Enable golang pprof handlers in admin listener. -webServer.pprofEnable = false - -# The maximum amount of time a dial to server will wait for a connect to complete. Default value is 10 seconds. -# transport.dialServerTimeout = 10 - -# dialServerKeepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps. -# If negative, keep-alive probes are disabled. -# transport.dialServerKeepalive = 7200 - -# connections will be established in advance, default value is zero -transport.poolCount = 5 - -# If tcp stream multiplexing is used, default is true, it must be same with frps -# transport.tcpMux = true - -# Specify keep alive interval for tcp mux. -# only valid if tcpMux is enabled. -# transport.tcpMuxKeepaliveInterval = 60 - -# Communication protocol used to connect to server -# supports tcp, kcp, quic, websocket and wss now, default is tcp -transport.protocol = "tcp" - -# set client binding ip when connect server, default is empty. -# only when protocol = tcp or websocket, the value will be used. -transport.connectServerLocalIP = "0.0.0.0" - -# if you want to connect frps by http proxy or socks5 proxy or ntlm proxy, you can set proxyURL here or in global environment variables -# it only works when protocol is tcp -# transport.proxyURL = "http://user:passwd@192.168.1.128:8080" -# transport.proxyURL = "socks5://user:passwd@192.168.1.128:1080" -# transport.proxyURL = "ntlm://user:passwd@192.168.1.128:2080" - -# quic protocol options -# transport.quic.keepalivePeriod = 10 -# transport.quic.maxIdleTimeout = 30 -# transport.quic.maxIncomingStreams = 100000 - -# If tls.enable is true, frpc will connect frps by tls. -# Since v0.50.0, the default value has been changed to true, and tls is enabled by default. -transport.tls.enable = true - -# transport.tls.certFile = "client.crt" -# transport.tls.keyFile = "client.key" -# transport.tls.trustedCaFile = "ca.crt" -# transport.tls.serverName = "example.com" - -# If the disableCustomTLSFirstByte is set to false, frpc will establish a connection with frps using the -# first custom byte when tls is enabled. -# Since v0.50.0, the default value has been changed to true, and the first custom byte is disabled by default. -# transport.tls.disableCustomTLSFirstByte = true - -# Heartbeat configure, it's not recommended to modify the default value. -# The default value of heartbeatInterval is 10 and heartbeatTimeout is 90. Set negative value -# to disable it. -# transport.heartbeatInterval = 30 -# transport.heartbeatTimeout = 90 - -# Specify a dns server, so frpc will use this instead of default one -# dnsServer = "8.8.8.8" - -# Proxy names you want to start. -# Default is empty, means all proxies. -# start = ["ssh", "dns"] - -# Specify udp packet size, unit is byte. If not set, the default value is 1500. -# This parameter should be same between client and server. -# It affects the udp and sudp proxy. -udpPacketSize = 1500 - -# Additional metadatas for client. -metadatas.var1 = "abc" -metadatas.var2 = "123" - -# Include other config files for proxies. -# includes = ["./confd/*.ini"] - -[[proxies]] -# 'ssh' is the unique proxy name -# If global user is not empty, it will be changed to {user}.{proxy} such as 'your_name.ssh' -name = "ssh" -type = "tcp" -localIP = "127.0.0.1" -localPort = 22 -# Limit bandwidth for this proxy, unit is KB and MB -transport.bandwidthLimit = "1MB" -# Where to limit bandwidth, can be 'client' or 'server', default is 'client' -transport.bandwidthLimitMode = "client" -# If true, traffic of this proxy will be encrypted, default is false -transport.useEncryption = false -# If true, traffic will be compressed -transport.useCompression = false -# Remote port listen by frps -remotePort = 6001 -# frps will load balancing connections for proxies in same group -loadBalancer.group = "test_group" -# group should have same group key -loadBalancer.groupKey = "123456" -# Enable health check for the backend service, it supports 'tcp' and 'http' now. -# frpc will connect local service's port to detect it's healthy status -healthCheck.type = "tcp" -# Health check connection timeout -healthCheck.timeoutSeconds = 3 -# If continuous failed in 3 times, the proxy will be removed from frps -healthCheck.maxFailed = 3 -# Every 10 seconds will do a health check -healthCheck.intervalSeconds = 10 -# Additional meta info for each proxy. It will be passed to the server-side plugin for use. -metadatas.var1 = "abc" -metadatas.var2 = "123" -# You can add some extra information to the proxy through annotations. -# These annotations will be displayed on the frps dashboard. -[proxies.annotations] -key1 = "value1" -"prefix/key2" = "value2" - -[[proxies]] -name = "ssh_random" -type = "tcp" -localIP = "192.168.31.100" -localPort = 22 -# If remotePort is 0, frps will assign a random port for you -remotePort = 0 - -[[proxies]] -name = "dns" -type = "udp" -localIP = "114.114.114.114" -localPort = 53 -remotePort = 6002 - -# Resolve your domain names to [serverAddr] so you can use http://web01.yourdomain.com to browse web01 and http://web02.yourdomain.com to browse web02 -[[proxies]] -name = "web01" -type = "http" -localIP = "127.0.0.1" -localPort = 80 -# http username and password are safety certification for http protocol -# if not set, you can access this customDomains without certification -httpUser = "admin" -httpPassword = "admin" -# if domain for frps is frps.com, then you can access [web01] proxy by URL http://web01.frps.com -subdomain = "web01" -customDomains = ["web01.yourdomain.com"] -# locations is only available for http type -locations = ["/", "/pic"] -# route requests to this service if http basic auto user is abc -# routeByHTTPUser = abc -hostHeaderRewrite = "example.com" -requestHeaders.set.x-from-where = "frp" -healthCheck.type = "http" -# frpc will send a GET http request '/status' to local http service -# http service is alive when it return 2xx http response code -healthCheck.path = "/status" -healthCheck.intervalSeconds = 10 -healthCheck.maxFailed = 3 -healthCheck.timeoutSeconds = 3 - -[[proxies]] -name = "web02" -type = "https" -localIP = "127.0.0.1" -localPort = 8000 -subdomain = "web02" -customDomains = ["web02.yourdomain.com"] -# if not empty, frpc will use proxy protocol to transfer connection info to your local service -# v1 or v2 or empty -transport.proxyProtocolVersion = "v2" - -[[proxies]] -name = "tcpmuxhttpconnect" -type = "tcpmux" -multiplexer = "httpconnect" -localIP = "127.0.0.1" -localPort = 10701 -customDomains = ["tunnel1"] -# routeByHTTPUser = "user1" - -[[proxies]] -name = "plugin_unix_domain_socket" -type = "tcp" -remotePort = 6003 -# if plugin is defined, localIP and localPort is useless -# plugin will handle connections got from frps -[proxies.plugin] -type = "unix_domain_socket" -unixPath = "/var/run/docker.sock" - -[[proxies]] -name = "plugin_http_proxy" -type = "tcp" -remotePort = 6004 -[proxies.plugin] -type = "http_proxy" -httpUser = "abc" -httpPassword = "abc" - -[[proxies]] -name = "plugin_socks5" -type = "tcp" -remotePort = 6005 -[proxies.plugin] -type = "socks5" -username = "abc" -password = "abc" - -[[proxies]] -name = "plugin_static_file" -type = "tcp" -remotePort = 6006 -[proxies.plugin] -type = "static_file" -localPath = "/var/www/blog" -stripPrefix = "static" -httpUser = "abc" -httpPassword = "abc" - -[[proxies]] -name = "plugin_https2http" -type = "https" -customDomains = ["test.yourdomain.com"] -[proxies.plugin] -type = "https2http" -localAddr = "127.0.0.1:80" -crtPath = "./server.crt" -keyPath = "./server.key" -hostHeaderRewrite = "127.0.0.1" -requestHeaders.set.x-from-where = "frp" - -[[proxies]] -name = "plugin_https2https" -type = "https" -customDomains = ["test.yourdomain.com"] -[proxies.plugin] -type = "https2https" -localAddr = "127.0.0.1:443" -crtPath = "./server.crt" -keyPath = "./server.key" -hostHeaderRewrite = "127.0.0.1" -requestHeaders.set.x-from-where = "frp" - -[[proxies]] -name = "plugin_http2https" -type = "http" -customDomains = ["test.yourdomain.com"] -[proxies.plugin] -type = "http2https" -localAddr = "127.0.0.1:443" -hostHeaderRewrite = "127.0.0.1" -requestHeaders.set.x-from-where = "frp" - -[[proxies]] -name = "secret_tcp" -# If the type is secret tcp, remotePort is useless -# Who want to connect local port should deploy another frpc with stcp proxy and role is visitor -type = "stcp" -# secretKey is used for authentication for visitors -secretKey = "abcdefg" -localIP = "127.0.0.1" -localPort = 22 -# If not empty, only visitors from specified users can connect. -# Otherwise, visitors from same user can connect. '*' means allow all users. -allowUsers = ["*"] - -[[proxies]] -name = "p2p_tcp" -type = "xtcp" -secretKey = "abcdefg" -localIP = "127.0.0.1" -localPort = 22 -# If not empty, only visitors from specified users can connect. -# Otherwise, visitors from same user can connect. '*' means allow all users. -allowUsers = ["user1", "user2"] - -# frpc role visitor -> frps -> frpc role server -[[visitors]] -name = "secret_tcp_visitor" -type = "stcp" -# the server name you want to visitor -serverName = "secret_tcp" -secretKey = "abcdefg" -# connect this address to visitor stcp server -bindAddr = "127.0.0.1" -# bindPort can be less than 0, it means don't bind to the port and only receive connections redirected from -# other visitors. (This is not supported for SUDP now) -bindPort = 9000 - -[[visitors]] -name = "p2p_tcp_visitor" -type = "xtcp" -# if the server user is not set, it defaults to the current user -serverUser = "user1" -serverName = "p2p_tcp" -secretKey = "abcdefg" -bindAddr = "127.0.0.1" -# bindPort can be less than 0, it means don't bind to the port and only receive connections redirected from -# other visitors. (This is not supported for SUDP now) -bindPort = 9001 -# when automatic tunnel persistence is required, set it to true -keepTunnelOpen = false -# effective when keepTunnelOpen is set to true, the number of attempts to punch through per hour -maxRetriesAnHour = 8 -minRetryInterval = 90 -# fallbackTo = "stcp_visitor" -# fallbackTimeoutMs = 500 \ No newline at end of file diff --git a/apps/frps/latest/data/frps.ini b/apps/frps/latest/data/frps.ini deleted file mode 100644 index 229567a9..00000000 --- a/apps/frps/latest/data/frps.ini +++ /dev/null @@ -1,2 +0,0 @@ -[common] -bind_port = 7000 diff --git a/apps/frps/latest/data/frps.toml b/apps/frps/latest/data/frps.toml deleted file mode 100644 index cc3f831d..00000000 --- a/apps/frps/latest/data/frps.toml +++ /dev/null @@ -1,42 +0,0 @@ -# common -bindAddr = "0.0.0.0" -bindPort = 7000 -auth.method = "token" -auth.token = "token123456" - -# udp by kcp -kcpBindPort = 7000 - -# udp by quic -#quicBindPort = 7002 -#transport.quic.keepalivePeriod = 10 -#transport.quic.maxIdleTimeout = 30 -#transport.quic.maxIncomingStreams = 100000 - -# web -#vhostHTTPPort = 40480 -#vhostHTTPSPort = 40443 -#subDomainHost = "example.com" - -# tls -transport.tls.force = true -#tls.force = false # 版本0.52.0到0.55.0用这个 -#transport.tls.certFile = "/etc/frp/ssl/server.crt" -#transport.tls.keyFile = "/etc/frp/ssl/server.key" -#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt" - -# dashboard -webServer.addr = "0.0.0.0" -webServer.port = 7001 -webServer.user = "admin" -webServer.password = "password123456" -webServer.pprofEnable = false -# webServer.tls.certFile = "server.crt" -# webServer.tls.keyFile = "server.key" - -# setting -transport.tcpMux = false -enablePrometheus = true -maxPortsPerClient = 0 -natholeAnalysisDataReserveHours = 168 -udpPacketSize = 1500 \ No newline at end of file diff --git a/apps/frps/latest/data/frps_full.ini b/apps/frps/latest/data/frps_full.ini deleted file mode 100644 index 2d5e08e1..00000000 --- a/apps/frps/latest/data/frps_full.ini +++ /dev/null @@ -1,168 +0,0 @@ -# [common] is integral section -[common] -# A literal address or host name for IPv6 must be enclosed -# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80" -# For single "bind_addr" field, no need square brackets, like "bind_addr = ::". -bind_addr = 0.0.0.0 -bind_port = 7000 - -# udp port to help make udp hole to penetrate nat -bind_udp_port = 7001 - -# udp port used for kcp protocol, it can be same with 'bind_port'. -# if not set, kcp is disabled in frps. -kcp_bind_port = 7000 - -# udp port used for quic protocol. -# if not set, quic is disabled in frps. -# quic_bind_port = 7002 -# quic protocol options -# quic_keepalive_period = 10 -# quic_max_idle_timeout = 30 -# quic_max_incoming_streams = 100000 - -# specify which address proxy will listen for, default value is same with bind_addr -# proxy_bind_addr = 127.0.0.1 - -# if you want to support virtual host, you must set the http port for listening (optional) -# Note: http port and https port can be same with bind_port -vhost_http_port = 80 -vhost_https_port = 443 - -# response header timeout(seconds) for vhost http server, default is 60s -# vhost_http_timeout = 60 - -# tcpmux_httpconnect_port specifies the port that the server listens for TCP -# HTTP CONNECT requests. If the value is 0, the server will not multiplex TCP -# requests on one single port. If it's not - it will listen on this value for -# HTTP CONNECT requests. By default, this value is 0. -# tcpmux_httpconnect_port = 1337 - -# If tcpmux_passthrough is true, frps won't do any update on traffic. -# tcpmux_passthrough = false - -# set dashboard_addr and dashboard_port to view dashboard of frps -# dashboard_addr's default value is same with bind_addr -# dashboard is available only if dashboard_port is set -dashboard_addr = 0.0.0.0 -dashboard_port = 7500 - -# dashboard user and passwd for basic auth protect -dashboard_user = admin -dashboard_pwd = admin - -# dashboard TLS mode -dashboard_tls_mode = false -# dashboard_tls_cert_file = server.crt -# dashboard_tls_key_file = server.key - -# enable_prometheus will export prometheus metrics on {dashboard_addr}:{dashboard_port} in /metrics api. -enable_prometheus = true - -# dashboard assets directory(only for debug mode) -# assets_dir = ./static - -# console or real logFile path like ./frps.log -log_file = ./frps.log - -# trace, debug, info, warn, error -log_level = info - -log_max_days = 3 - -# disable log colors when log_file is console, default is false -disable_log_color = false - -# DetailedErrorsToClient defines whether to send the specific error (with debug info) to frpc. By default, this value is true. -detailed_errors_to_client = true - -# authentication_method specifies what authentication method to use authenticate frpc with frps. -# If "token" is specified - token will be read into login message. -# If "oidc" is specified - OIDC (Open ID Connect) token will be issued using OIDC settings. By default, this value is "token". -authentication_method = token - -# authenticate_heartbeats specifies whether to include authentication token in heartbeats sent to frps. By default, this value is false. -authenticate_heartbeats = false - -# AuthenticateNewWorkConns specifies whether to include authentication token in new work connections sent to frps. By default, this value is false. -authenticate_new_work_conns = false - -# auth token -token = 12345678 - -# oidc_issuer specifies the issuer to verify OIDC tokens with. -# By default, this value is "". -oidc_issuer = - -# oidc_audience specifies the audience OIDC tokens should contain when validated. -# By default, this value is "". -oidc_audience = - -# oidc_skip_expiry_check specifies whether to skip checking if the OIDC token is expired. -# By default, this value is false. -oidc_skip_expiry_check = false - -# oidc_skip_issuer_check specifies whether to skip checking if the OIDC token's issuer claim matches the issuer specified in OidcIssuer. -# By default, this value is false. -oidc_skip_issuer_check = false - -# heartbeat configure, it's not recommended to modify the default value -# the default value of heartbeat_timeout is 90. Set negative value to disable it. -# heartbeat_timeout = 90 - -# user_conn_timeout configure, it's not recommended to modify the default value -# the default value of user_conn_timeout is 10 -# user_conn_timeout = 10 - -# only allow frpc to bind ports you list, if you set nothing, there won't be any limit -allow_ports = 2000-3000,3001,3003,4000-50000 - -# pool_count in each proxy will change to max_pool_count if they exceed the maximum value -max_pool_count = 5 - -# max ports can be used for each client, default value is 0 means no limit -max_ports_per_client = 0 - -# tls_only specifies whether to only accept TLS-encrypted connections. By default, the value is false. -tls_only = false - -# tls_cert_file = server.crt -# tls_key_file = server.key -# tls_trusted_ca_file = ca.crt - -# if subdomain_host is not empty, you can set subdomain when type is http or https in frpc's configure file -# when subdomain is test, the host used by routing is test.frps.com -subdomain_host = frps.com - -# if tcp stream multiplexing is used, default is true -# tcp_mux = true - -# specify keep alive interval for tcp mux. -# only valid if tcp_mux is true. -# tcp_mux_keepalive_interval = 60 - -# tcp_keepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps. -# If negative, keep-alive probes are disabled. -# tcp_keepalive = 7200 - -# custom 404 page for HTTP requests -# custom_404_page = /path/to/404.html - -# specify udp packet size, unit is byte. If not set, the default value is 1500. -# This parameter should be same between client and server. -# It affects the udp and sudp proxy. -udp_packet_size = 1500 - -# Enable golang pprof handlers in dashboard listener. -# Dashboard port must be set first -pprof_enable = false - -[plugin.user-manager] -addr = 127.0.0.1:9000 -path = /handler -ops = Login - -[plugin.port-manager] -addr = 127.0.0.1:9001 -path = /handler -ops = NewProxy diff --git a/apps/frps/latest/data/frps_full.toml b/apps/frps/latest/data/frps_full.toml deleted file mode 100644 index f739d4d4..00000000 --- a/apps/frps/latest/data/frps_full.toml +++ /dev/null @@ -1,164 +0,0 @@ -# This configuration file is for reference only. Please do not use this configuration directly to run the program as it may have various issues. - -# A literal address or host name for IPv6 must be enclosed -# in square brackets, as in "[::1]:80", "[ipv6-host]:http" or "[ipv6-host%zone]:80" -# For single "bindAddr" field, no need square brackets, like `bindAddr = "::"`. -bindAddr = "0.0.0.0" -bindPort = 7000 - -# udp port used for kcp protocol, it can be same with 'bindPort'. -# if not set, kcp is disabled in frps. -kcpBindPort = 7000 - -# udp port used for quic protocol. -# if not set, quic is disabled in frps. -# quicBindPort = 7002 - -# Specify which address proxy will listen for, default value is same with bindAddr -# proxyBindAddr = "127.0.0.1" - -# quic protocol options -# transport.quic.keepalivePeriod = 10 -# transport.quic.maxIdleTimeout = 30 -# transport.quic.maxIncomingStreams = 100000 - -# Heartbeat configure, it's not recommended to modify the default value -# The default value of heartbeatTimeout is 90. Set negative value to disable it. -# transport.heartbeatTimeout = 90 - -# Pool count in each proxy will keep no more than maxPoolCount. -transport.maxPoolCount = 5 - -# If tcp stream multiplexing is used, default is true -# transport.tcpMux = true - -# Specify keep alive interval for tcp mux. -# only valid if tcpMux is true. -# transport.tcpMuxKeepaliveInterval = 60 - -# tcpKeepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps. -# If negative, keep-alive probes are disabled. -# transport.tcpKeepalive = 7200 - -# transport.tls.force specifies whether to only accept TLS-encrypted connections. By default, the value is false. -transport.tls.force = false - -# transport.tls.certFile = "server.crt" -# transport.tls.keyFile = "server.key" -# transport.tls.trustedCaFile = "ca.crt" - -# If you want to support virtual host, you must set the http port for listening (optional) -# Note: http port and https port can be same with bindPort -vhostHTTPPort = 80 -vhostHTTPSPort = 443 - -# Response header timeout(seconds) for vhost http server, default is 60s -# vhostHTTPTimeout = 60 - -# tcpmuxHTTPConnectPort specifies the port that the server listens for TCP -# HTTP CONNECT requests. If the value is 0, the server will not multiplex TCP -# requests on one single port. If it's not - it will listen on this value for -# HTTP CONNECT requests. By default, this value is 0. -# tcpmuxHTTPConnectPort = 1337 - -# If tcpmuxPassthrough is true, frps won't do any update on traffic. -# tcpmuxPassthrough = false - -# Configure the web server to enable the dashboard for frps. -# dashboard is available only if webServer.port is set. -webServer.addr = "127.0.0.1" -webServer.port = 7500 -webServer.user = "admin" -webServer.password = "admin" -# webServer.tls.certFile = "server.crt" -# webServer.tls.keyFile = "server.key" -# dashboard assets directory(only for debug mode) -# webServer.assetsDir = "./static" - -# Enable golang pprof handlers in dashboard listener. -# Dashboard port must be set first -webServer.pprofEnable = false - -# enablePrometheus will export prometheus metrics on webServer in /metrics api. -enablePrometheus = true - -# console or real logFile path like ./frps.log -log.to = "./frps.log" -# trace, debug, info, warn, error -log.level = "info" -log.maxDays = 3 -# disable log colors when log.to is console, default is false -log.disablePrintColor = false - -# DetailedErrorsToClient defines whether to send the specific error (with debug info) to frpc. By default, this value is true. -detailedErrorsToClient = true - -# auth.method specifies what authentication method to use authenticate frpc with frps. -# If "token" is specified - token will be read into login message. -# If "oidc" is specified - OIDC (Open ID Connect) token will be issued using OIDC settings. By default, this value is "token". -auth.method = "token" - -# auth.additionalScopes specifies additional scopes to include authentication information. -# Optional values are HeartBeats, NewWorkConns. -# auth.additionalScopes = ["HeartBeats", "NewWorkConns"] - -# auth token -auth.token = "12345678" - -# oidc issuer specifies the issuer to verify OIDC tokens with. -auth.oidc.issuer = "" -# oidc audience specifies the audience OIDC tokens should contain when validated. -auth.oidc.audience = "" -# oidc skipExpiryCheck specifies whether to skip checking if the OIDC token is expired. -auth.oidc.skipExpiryCheck = false -# oidc skipIssuerCheck specifies whether to skip checking if the OIDC token's issuer claim matches the issuer specified in OidcIssuer. -auth.oidc.skipIssuerCheck = false - -# userConnTimeout specifies the maximum time to wait for a work connection. -# userConnTimeout = 10 - -# Only allow frpc to bind ports you list. By default, there won't be any limit. -allowPorts = [ - { start = 2000, end = 3000 }, - { single = 3001 }, - { single = 3003 }, - { start = 4000, end = 50000 } -] - -# Max ports can be used for each client, default value is 0 means no limit -maxPortsPerClient = 0 - -# If subDomainHost is not empty, you can set subdomain when type is http or https in frpc's configure file -# When subdomain is test, the host used by routing is test.frps.com -subDomainHost = "frps.com" - -# custom 404 page for HTTP requests -# custom404Page = "/path/to/404.html" - -# specify udp packet size, unit is byte. If not set, the default value is 1500. -# This parameter should be same between client and server. -# It affects the udp and sudp proxy. -udpPacketSize = 1500 - -# Retention time for NAT hole punching strategy data. -natholeAnalysisDataReserveHours = 168 - -# ssh tunnel gateway -# If you want to enable this feature, the bindPort parameter is required, while others are optional. -# By default, this feature is disabled. It will be enabled if bindPort is greater than 0. -# sshTunnelGateway.bindPort = 2200 -# sshTunnelGateway.privateKeyFile = "/home/frp-user/.ssh/id_rsa" -# sshTunnelGateway.autoGenPrivateKeyPath = "" -# sshTunnelGateway.authorizedKeysFile = "/home/frp-user/.ssh/authorized_keys" - -[[httpPlugins]] -name = "user-manager" -addr = "127.0.0.1:9000" -path = "/handler" -ops = ["Login"] - -[[httpPlugins]] -name = "port-manager" -addr = "127.0.0.1:9001" -path = "/handler" -ops = ["NewProxy"] \ No newline at end of file diff --git a/apps/frps/latest/docker-compose.yml b/apps/frps/latest/docker-compose.yml deleted file mode 100644 index 2fff05ba..00000000 --- a/apps/frps/latest/docker-compose.yml +++ /dev/null @@ -1,12 +0,0 @@ -services: - frps: - container_name: ${CONTAINER_NAME} - restart: always - network_mode: "host" - volumes: - #- "${CONFIG_FILE_PATH}:/etc/frp/frps.ini" #截止5.1.3版本使用ini - - "${CONFIG_FILE_PATH}:/etc/frp/frps.toml" - - "${SSL_FOLDER_PATH}:/etc/frp/ssl" - image: "snowdreamtech/frps:latest" - labels: - createdBy: "Apps" diff --git a/apps/frps/logo.png b/apps/frps/logo.png deleted file mode 100644 index 9cec3e62d1817bf3fe702d0d21ccdd15beb049a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4768 zcmV;R5?}3!P)jbaz0;>2SrtTwn z)H1E<6|nIfMA{#)@DVcPBd_i=ZPq7b*aVQ=DY5Pzci0(h))HveB68OhgW4TK;2AyS zBR=37iQ5q&-xx{y0kHG{i`f8%*aIc!0CLy^Eam`g*8zFh0f5*89p?dM*a14?0yE?Q zUfBUw+5te|0Z!ZiklO)A-Ud4LYx6xd0000XbW%=J06iXX(G4#H{Qi$>R_ar^=A=Y? z`hl*|>X+iP&Xvja=Uoc^!vFvgdPzhopiyCwmZ88QH4lWH^WzlzO}Do-^o zG86ad{=WP0SY^N~LR^j|cbF5!i)YpDKR~n|<@)eG9$JHHC+u z!M(djZt_vB>;D~WjK3;H*7n7F0(&%S-TxJ9>-Z}UIQp6XNJQ%RJ1-r7g6vVfkXn=--}4@RcYp{Upn^i)nATC8hV}rzHarg_a`X!ksrx_IxPlM+F#3gvG&5M>cwqMA;7NGo$09Nxf1&#u zU__37Dk4K8{z@KE^^rdlk@(%p!Q2=I?ERTIBJDYEaNFMRU@fW&ahekhyO0>SIkHl}1BiAzV2ZyQH9xeZ5_zYc% zeandC@mDK~KRA5!n!dKJu;H`6yl0*)dRHEkw~9y{3XAb)Haj83CQZ}n%k_>C-e~v% z&3tkwBJy^9BzIlyT>SaN4K~I-yetyDE`I;`m?HKtXR+J$ku?5ltsHU~cQ&%6>HF}4 zNbK?UD?^?FHDiB|3nTId^GF?kF#gPm(`LwPXcD{AICC_#5#z-s#O~y*eTzPl51B=K zsASC?y{^~$^_oy`rqjZRL>n>IbSfL?evJwv@(cYfpNh(q5oD1oFARCV-V1JNl4+WY zNHlY2I%Ux+vAIj$vk|H1k>&bGI%VZwRwn)!EpL)~t-L*~!QFC)khZIJnTG_ElBxJ~3%Z4!gZFpeF?0S;e`<&XK9Bt7n zVyFC)rW@4yBPC*=k4TF|VszR0lo7@UY$rucxJ4%EFpttN6l35&z((Ya^fgV{@41Nd zL`06R4z@3*49Eh5gKivqZ^+HC3p#VmHbQKG-b}gHDgp9#E+R)FkrZ27r;J)r%82^A z!*0i}5?P6@vCj;fLc`iRiI~nVib!+%dwG>BGiJeq3S>cjAP$k_nRv>)yRx?6)>2O| zL}Ykrfrb70a6V;JlHGPEo2E9beRklX?FH6GJC+{g~0N zwp#<7aI@=S&~Te(sLm!OLy>7-?QBF!H#Fs=@T;jjhD~Fzg0@|)B(pF#;f~$sp`x?N zV}H=3UC>7&X3N(?k7_}NStGBA+NMjAax;FML@;bUVpU>O>~~{C!0z2aFm}ZenWIM! zUTDVOYBgW21UK~vQp1nkOYoIdQ|N5cG&QkJXY+_8FM0w;@D;59(qM%q6F-@+=InBg z8^8zcFU^@nXG2Ufofbsoi@|jVyGZWXozQF6YokZ{w_q@z8_ap^K^%T@;SDwc#Q)`} z4O@dpjDaqAqKnYoI=?5Gqq%H~d&`ZD*l?5FV);sRHp(T1S%d{7^@q?m^d9OYlK}H< zPO(>1Zn)X@f*UOqiq0k#*g6(7)H*ja)GFSi&@8bGW~@nMCH7WYWYv#uwoN1W~qG&9FcG~y7#oZS920}lU`vlTWC z$yZM+U02X`1>Ku1xYRQ<91*>tytW9k#q-K|n zFQMxNN&~c@p7RT~Qf3ZIbvAS|BdmQDdcmQ!*sKkrpW7=Cb*7XWJpK7$1HF*ZIOpV1 zxzqMRDeN}w&v_(TDZL=RW^ECaT9l7gl`@uU(_rM}pSDVC>_sVP&+D&}ve2g1AJ^@% zTo8xwo1oOeS!Yx!5sYnP5P~{?+CodM7iE?1L#JO3IS=c%~v+H0rg(mP^X+2d=_OlUQvO-ewM(~iLXX#>5? za4!Sb1IJ_-?j|)?nre+J@0Rvp%mRDqth6uIO>i8ZxIz=H}r#0^?d zlYDKVv|*5?8?+D_TH^I)&Qf!w*905EuPZ$TKM>5%p%=)>eBuU8x9M!`>@gwO z3rA=obmaM7BB<@9=FoyV-NMIdIyc2JrL%}3!qJc}k5GJB5DN^9W|3#ARQ*-rN>AME;Sc!Ca?wzyN&0d%&;i=qRk_)GT0#@Ct)Yd`jQd%iDr?Kt zSGzZ1FHn0bHTN~>$(S;O-1bU?(AXj+bm+aIJ!Y0tbLhQkkj=&tT4PTpwjwoV0=iF{ zI$37*E(pEX`&ZYt&|{O@-W~%zt(?&YN?S@zl-6p0UWZmvyD5!AFZ1h{l6z()wNQG$ zHdBa&J;sC@nx#GZdSaf@zmS#*^NUflaXk6PsBl6e< z+VlE+mLnE0-3@QG>|_tGuU1QzNgz)m;z_Znr?LB1(43k|Z3Rua$Je1zXx^UVY#AJzcJ-7=u1O8h zC#Ce>4ch2qER^mG}@z};5-Wx;i1?SI)V@x(7Ci@mjpNu*K_~)SX*iPxtYv!z6 ze0u+`N9G5Ypiic+EtEc*=CDvYiG7RBAegz6o|V$Hgl2zL>9L{o*a{lIe5)}PnA^hB zT4|y7Rp_Gz78je&#bI}Z6|~fv*W%ejb5DtMB`6G>vFc!IeUaT=wl{(G=J>B#9@aSp0E_f;68Q2t4aej1^?Il zp^aCt6Y`K_J{3Vf(S3Pn4^wM)x!LC9E7`C?%J4MysSuhdeMF^?V-tHkNq%56Vf1=X zC00hohwZVP@&zp)Dot8qm6s zAvnrr_?kO}S$lcY^oRA1W>FX^z&r6DiGtJB7Ze)40`2OfnXTor!p+hjmW=3Xwp>N5 zD0kFPf1rg7by}SBAgFV;R@}Eqe=s9RRGm_`+>y5(GAluKaSphfmO+IN$0FjuM zJ^hJFSY2L43u5^dosy6Pg|aj*^zImR&DgYaf6OPo%(~OE_vQblE9lF*!Btjk(aW$) z!y_Jmf-_M^6t)<(S=tx89gC9)T?THHPk-o)e7U1pTFQ|7fr0g?swhPfWyLH=Z2Z&M zMM?wpb4ibcyhd|NYuRLFDWx7X%yPsg6kK;@-wl=fRr3j+&zvo>Gjkce;9j=C0ctdh zs|I&E`MffJ^nwOuXT zH%s`s5IC!s)k8}OC?#$@LwAdk>T|y zT%l*ANc0R-u=f@AIg(!QPXTf;&F=4{MIZkT;7u^I7mZkLG`l^Ua;I}UFh#;MUo@HZ z@S4@e1!oOc7NLp`O(SL>FQ6tEp*@+q%tyUH|^d<9*r?r2wNffYi&}1&)zq<}R-se=Kr>in zr06QWT$p6cJoPosQgPlcAv={967SdKRu?ZXlCBNMsb62LIny}z1@+H1JQA|G<49>9 za0*)E7+H)>5(NY`zmA)n#0@^>He^B&T)C<|QS= zfuj2m;&w&%3AC3Jl9P07>(^&gZQ>cE$MK6Vwl3?Gl2M1$*Fj87r;HpVWQ7Fd(XDk$ zKiakbiTQz7QQ%_3KdibDy9_27!|9_A5iOaZAS5!QV{+8VrupDThih$&wQJrb8F?^B zDTBSHB4B6883c7qr;u%L%; zN#vWF(Ln7Psl9v~`l}#qmEvUd9#6kxJot93d70XWJE6prr{2V|p30`EomF1v9}Aay z!qE(&kkn(u%M|gKm)fsO0mfuC>9~>52XC4XM^4$B<@EQeY=eI7TjsXRFZY-;lEcwW z21gM;(oJgi(x2MPD~8axE%Uy*+w2@R*s01L_cKBM%NCN1gWO%?FP_>RM|W5-U3p|3 zJt7?3Re#KVV$%?OaT^U2ly@?TbJuRF=sw+!lfSVR(Men9;7r1scDERsx~X3VM_ zS`i-qNHSSG(PUVY+RgEIX{

!}0k@$uIak@e=yjlY=N3BnWaKW~gk*dW)%cD3KH zwneSf(5a7)G8=QG9&G%o^pIm^L|i@bbY{D?PdIy50b`l(y!p* u)zeQLhv-{v{-Yu3Xm({aFaH6What if you could see everything at a...

-

Glance

-

InstallConfigurationThemes

diff --git a/apps/glance/data.yml b/apps/glance/data.yml deleted file mode 100644 index 2478e57a..00000000 --- a/apps/glance/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Glance -tags: - - 建站 -title: 一个自托管仪表板 -description: 一个自托管仪表板 -additionalProperties: - key: glance - name: Glance - tags: - - Website - shortDescZh: 一个自托管仪表板 - shortDescEn: A self-hosted dashboard - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://github.com/glanceapp/glance - github: https://github.com/glanceapp/glance - document: https://github.com/glanceapp/glance diff --git a/apps/glance/latest/.env.sample b/apps/glance/latest/.env.sample deleted file mode 100644 index e8331432..00000000 --- a/apps/glance/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="glance" -GLANCE_CONFIG_PATH="./data/glance.yml" -PANEL_APP_PORT_HTTP=40281 diff --git a/apps/glance/latest/data.yml b/apps/glance/latest/data.yml deleted file mode 100644 index 43a79fa4..00000000 --- a/apps/glance/latest/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: "40281" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "./data/glance.yml" - disabled: true - envKey: GLANCE_CONFIG_PATH - labelEn: Glance Configuration Path - labelZh: Glance 配置文件路径 - required: true - type: text diff --git a/apps/glance/latest/data/glance.yml b/apps/glance/latest/data/glance.yml deleted file mode 100644 index 7cde96e9..00000000 --- a/apps/glance/latest/data/glance.yml +++ /dev/null @@ -1,106 +0,0 @@ -theme: - background-color: 225 14 15 - primary-color: 157 47 65 - contrast-multiplier: 1.1 - -pages: - - name: Home - columns: - - size: small - widgets: - - type: clock - hour-format: 24h - timezones: - - timezone: Etc/UTC - label: MapleStory Game Time - - timezone: Asia/Shanghai - label: Shanghai - - timezone: America/New_York - label: New York - - - type: calendar - - - type: twitch-channels - channels: - - theprimeagen - - cohhcarnage - - christitustech - - blurbs - - asmongold - - jembawls - - - size: full - widgets: - - type: hacker-news - - - type: rss - limit: 10 - collapse-after: 3 - cache: 3h - style: detailed-list - feeds: - - url: https://supertechfans.com/cn/index.xml - title: HackerNews - - - type: videos - channels: - - UCR-DXc1voovS8nhAvccRZhg # Jeff Geerling - - UCv6J_jJa8GJqFwQNgNrMuww # ServeTheHome - - UCOk-gHyjcWZNj3Br4oxwh0A # Techno Tim - limit: 25 - collapse-after-rows: 2 - style: grid-cards - - - type: reddit - subreddit: selfhosted - - - size: small - widgets: - - type: weather - location: Beijing, China - - - type: bookmarks - groups: - - links: - - title: Google - url: https://google.com/ - - title: Github - url: https://github.com/ - - title: Hostloc - url: https://hostloc.com/ - - title: Nodeseek - url: https://www.nodeseek.com/ - - title: Linuxdo - url: https://linux.do/ - - title: V2ex - url: https://www.v2ex.com/ - - title: Entertainment - color: 10 70 50 - links: - - title: Bilibli - url: https://www.bilibili.com/ - - title: YouTube - url: https://www.youtube.com/ - - title: Netflix - url: https://www.netflix.com/ - - title: Disney+ - url: https://www.disneyplus.com/ - - - type: markets - markets: - - symbol: SPY - name: S&P 500 - - symbol: BTC-USD - name: Bitcoin - - symbol: NVDA - name: NVIDIA - - symbol: AAPL - name: Apple - - symbol: MSFT - name: Microsoft - - symbol: GOOGL - name: Google - - symbol: AMD - name: AMD - - symbol: RDDT - name: Reddit \ No newline at end of file diff --git a/apps/glance/latest/docker-compose.yml b/apps/glance/latest/docker-compose.yml deleted file mode 100644 index 1dceda5b..00000000 --- a/apps/glance/latest/docker-compose.yml +++ /dev/null @@ -1,19 +0,0 @@ -services: - glance: - image: "glanceapp/glance:latest" - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8080" - volumes: - - ${GLANCE_CONFIG_PATH}:/app/glance.yml - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/glance/logo.png b/apps/glance/logo.png deleted file mode 100644 index a7a77370791af0a624ab8ff80e0aee4ec32a89b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4504 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 - - - -

- -

gotify/server

- -

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

- -## 介绍 -Gotify 是一个用于通过 Web 套接字实时发送和接收消息的服务器。 diff --git a/apps/gotify/data.yml b/apps/gotify/data.yml deleted file mode 100644 index e5dcdc96..00000000 --- a/apps/gotify/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Gotify -tags: - - 开发工具 -title: 自托管通知服务器 -description: 自托管通知服务器 -additionalProperties: - key: gotify - name: Gotify - tags: - - DevTool - shortDescZh: 自托管通知服务器 - shortDescEn: Self-hosted notification server - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://gotify.net - github: https://github.com/gotify/server - document: https://gotify.net/docs/ diff --git a/apps/gotify/latest/.env.sample b/apps/gotify/latest/.env.sample deleted file mode 100644 index 4efde397..00000000 --- a/apps/gotify/latest/.env.sample +++ /dev/null @@ -1,30 +0,0 @@ -CONTAINER_NAME='gotify' -GOTIFY_DATABASE_CONNECTION='data/gotify.db' -GOTIFY_DATABASE_DIALECT='sqlite3' -GOTIFY_DEFAULTUSER_NAME='admin' -GOTIFY_DEFAULTUSER_PASS='password_123456' -GOTIFY_PASSSTRENGTH=10 -GOTIFY_PLUGINSDIR='data/plugins' -GOTIFY_REGISTRATION='false' -GOTIFY_SERVER_CORS_ALLOWHEADERS='' -GOTIFY_SERVER_CORS_ALLOWMETHODS='' -GOTIFY_SERVER_CORS_ALLOWORIGINS='' -GOTIFY_SERVER_KEEPALIVEPERIODSECONDS=0 -GOTIFY_SERVER_LISTENADDR='' -GOTIFY_SERVER_PORT=80 -GOTIFY_SERVER_RESPONSEHEADERS='' -GOTIFY_SERVER_SSL_CERTFILE='' -GOTIFY_SERVER_SSL_CERTKEY='' -GOTIFY_SERVER_SSL_ENABLED='false' -GOTIFY_SERVER_SSL_LETSENCRYPT_ACCEPTTOS='false' -GOTIFY_SERVER_SSL_LETSENCRYPT_CACHE='certs' -GOTIFY_SERVER_SSL_LETSENCRYPT_ENABLED='false' -GOTIFY_SERVER_SSL_LETSENCRYPT_HOSTS='' -GOTIFY_SERVER_SSL_LISTENADDR='' -GOTIFY_SERVER_SSL_PORT=443 -GOTIFY_SERVER_SSL_REDIRECTTOHTTPS='true' -GOTIFY_SERVER_STREAM_ALLOWEDORIGINS='' -GOTIFY_SERVER_STREAM_PINGPERIODSECONDS=45 -GOTIFY_UPLOADEDIMAGESDIR='data/images' -PANEL_APP_PORT_HTTP=40266 -TIME_ZONE='Asia/Shanghai' diff --git a/apps/gotify/latest/data.yml b/apps/gotify/latest/data.yml deleted file mode 100644 index 36a2dbea..00000000 --- a/apps/gotify/latest/data.yml +++ /dev/null @@ -1,235 +0,0 @@ -additionalProperties: - formFields: - - default: "40266" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "Asia/Shanghai" - edit: true - envKey: TIME_ZONE - labelEn: Time Zone - labelZh: 时区 - required: true - type: text - - default: admin - edit: true - envKey: GOTIFY_DEFAULTUSER_NAME - labelEn: Default User Name - labelZh: 默认用户名 - required: true - type: text - - default: "password" - edit: true - envKey: GOTIFY_DEFAULTUSER_PASS - labelEn: Default User Password - labelZh: 默认用户密码 - required: false - random: true - rule: paramComplexity - type: password - - default: "false" - edit: true - envKey: GOTIFY_REGISTRATION - labelEn: Enable Registration - labelZh: 允许注册 - required: true - type: select - values: - - label: "true" - value: "true" - - label: "false" - value: "false" - - default: 10 - edit: true - envKey: GOTIFY_PASSSTRENGTH - labelEn: Minimum Password Strength - labelZh: 最低密码强度 - required: true - type: number - - default: "80" - edit: true - envKey: GOTIFY_SERVER_PORT - labelEn: Internal Container Ports - labelZh: 容器内部端口 - required: true - rule: paramPort - type: number - - default: 0 - edit: true - envKey: GOTIFY_SERVER_KEEPALIVEPERIODSECONDS - labelEn: Keepalive Period (seconds) - labelZh: 保持活跃时间(秒) - required: true - type: number - - default: "" - edit: true - envKey: GOTIFY_SERVER_LISTENADDR - labelEn: Listen Address - labelZh: 监听地址 - required: false - type: text - - default: "false" - edit: true - envKey: GOTIFY_SERVER_SSL_ENABLED - labelEn: Enable SSL - labelZh: 启用 SSL - required: true - type: select - values: - - label: "true" - value: "true" - - label: "false" - value: "false" - - default: "true" - edit: true - envKey: GOTIFY_SERVER_SSL_REDIRECTTOHTTPS - labelEn: Redirect to HTTPS - labelZh: 重定向到 HTTPS - required: true - type: select - values: - - label: "true" - value: "true" - - label: "false" - value: "false" - - default: "" - edit: true - envKey: GOTIFY_SERVER_SSL_LISTENADDR - labelEn: SSL Listen Address - labelZh: SSL 监听地址 - required: false - type: text - - default: 443 - edit: true - envKey: GOTIFY_SERVER_SSL_PORT - labelEn: SSL Port - labelZh: SSL 端口 - required: true - rule: paramPort - type: number - - default: "" - edit: true - envKey: GOTIFY_SERVER_SSL_CERTFILE - labelEn: SSL Certificate File (inside container) - labelZh: SSL 证书文件 (容器内部) - required: false - type: text - - default: "" - edit: true - envKey: GOTIFY_SERVER_SSL_CERTKEY - labelEn: SSL Certificate Key (inside container) - labelZh: SSL 证书密钥 (容器内部) - required: false - type: text - - default: "false" - edit: true - envKey: GOTIFY_SERVER_SSL_LETSENCRYPT_ENABLED - labelEn: Enable Let's Encrypt - labelZh: 启用 Let's Encrypt - required: true - type: select - values: - - label: "true" - value: "true" - - label: "false" - value: "false" - - default: "false" - edit: true - envKey: GOTIFY_SERVER_SSL_LETSENCRYPT_ACCEPTTOS - labelEn: Accept Let's Encrypt TOS - labelZh: 接受 Let's Encrypt 条款 - required: true - type: select - values: - - label: "true" - value: "true" - - label: "false" - value: "false" - - default: "certs" - disabled: true - envKey: GOTIFY_SERVER_SSL_LETSENCRYPT_CACHE - labelEn: Let's Encrypt Cache Directory - labelZh: Let's Encrypt 缓存目录 - required: true - type: text - - default: "" - edit: true - envKey: GOTIFY_SERVER_SSL_LETSENCRYPT_HOSTS - labelEn: Let's Encrypt Hosts - labelZh: Let's Encrypt 域名 - required: false - type: text - - default: "" - edit: true - envKey: GOTIFY_SERVER_RESPONSEHEADERS - labelEn: Response Headers - labelZh: 响应头 - required: false - type: text - - default: "" - edit: true - envKey: GOTIFY_SERVER_CORS_ALLOWORIGINS - labelEn: CORS Allow Origins - labelZh: 允许跨域来源 - required: false - type: text - - default: "" - edit: true - envKey: GOTIFY_SERVER_CORS_ALLOWMETHODS - labelEn: CORS Allow Methods - labelZh: 允许跨域方法 - required: false - type: text - - default: "" - edit: true - envKey: GOTIFY_SERVER_CORS_ALLOWHEADERS - labelEn: CORS Allow Headers - labelZh: 允许跨域头 - required: false - type: text - - default: "" - edit: true - envKey: GOTIFY_SERVER_STREAM_ALLOWEDORIGINS - labelEn: Allowed origins for websocket connections - labelZh: Websocket 连接的允许来源 - required: false - type: text - - default: 45 - edit: true - envKey: GOTIFY_SERVER_STREAM_PINGPERIODSECONDS - labelEn: The interval in which websocket pings will be sent (seconds) - labelZh: 发送 websocket ping 的时间间隔(秒) - required: true - type: number - - default: sqlite3 - disabled: true - envKey: GOTIFY_DATABASE_DIALECT - labelEn: Database Dialect - labelZh: 数据库方式 - required: true - type: text - - default: "data/gotify.db" - disabled: true - envKey: GOTIFY_DATABASE_CONNECTION - labelEn: Database Connection - labelZh: 数据库连接 - required: true - type: text - - default: "data/images" - disabled: true - envKey: GOTIFY_UPLOADEDIMAGESDIR - labelEn: Uploaded Images Directory - labelZh: 上传的图片目录 - required: true - type: text - - default: "data/plugins" - disabled: true - envKey: GOTIFY_PLUGINSDIR - labelEn: Plugins Directory - labelZh: 插件目录 - required: true - type: text diff --git a/apps/gotify/latest/docker-compose.yml b/apps/gotify/latest/docker-compose.yml deleted file mode 100644 index 1d294027..00000000 --- a/apps/gotify/latest/docker-compose.yml +++ /dev/null @@ -1,46 +0,0 @@ -services: - gotify: - image: "gotify/server:latest" - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:${GOTIFY_SERVER_PORT}" - environment: - - 'TZ=${TIME_ZONE}' - - 'GOTIFY_SERVER_PORT=${GOTIFY_SERVER_PORT}' - - 'GOTIFY_SERVER_KEEPALIVEPERIODSECONDS=${GOTIFY_SERVER_KEEPALIVEPERIODSECONDS}' - - 'GOTIFY_SERVER_LISTENADDR=${GOTIFY_SERVER_LISTENADDR}' - - 'GOTIFY_SERVER_SSL_ENABLED=${GOTIFY_SERVER_SSL_ENABLED}' - - 'GOTIFY_SERVER_SSL_REDIRECTTOHTTPS=${GOTIFY_SERVER_SSL_REDIRECTTOHTTPS}' - - 'GOTIFY_SERVER_SSL_LISTENADDR=${GOTIFY_SERVER_SSL_LISTENADDR}' - - 'GOTIFY_SERVER_SSL_PORT=${GOTIFY_SERVER_SSL_PORT}' - - 'GOTIFY_SERVER_SSL_CERTFILE=${GOTIFY_SERVER_SSL_CERTFILE}' - - 'GOTIFY_SERVER_SSL_CERTKEY=${GOTIFY_SERVER_SSL_CERTKEY}' - - 'GOTIFY_SERVER_SSL_LETSENCRYPT_ENABLED=${GOTIFY_SERVER_SSL_LETSENCRYPT_ENABLED}' - - 'GOTIFY_SERVER_SSL_LETSENCRYPT_ACCEPTTOS=${GOTIFY_SERVER_SSL_LETSENCRYPT_ACCEPTTOS}' - - 'GOTIFY_SERVER_SSL_LETSENCRYPT_CACHE=${GOTIFY_SERVER_SSL_LETSENCRYPT_CACHE}' - - 'GOTIFY_SERVER_SSL_LETSENCRYPT_HOSTS=${GOTIFY_SERVER_SSL_LETSENCRYPT_HOSTS}' - - 'GOTIFY_SERVER_RESPONSEHEADERS=${GOTIFY_SERVER_RESPONSEHEADERS}' - - 'GOTIFY_SERVER_CORS_ALLOWORIGINS=${GOTIFY_SERVER_CORS_ALLOWORIGINS}' - - 'GOTIFY_SERVER_CORS_ALLOWMETHODS=${GOTIFY_SERVER_CORS_ALLOWMETHODS}' - - 'GOTIFY_SERVER_CORS_ALLOWHEADERS=${GOTIFY_SERVER_CORS_ALLOWHEADERS}' - - 'GOTIFY_SERVER_STREAM_ALLOWEDORIGINS=${GOTIFY_SERVER_STREAM_ALLOWEDORIGINS}' - - 'GOTIFY_SERVER_STREAM_PINGPERIODSECONDS=${GOTIFY_SERVER_STREAM_PINGPERIODSECONDS}' - - 'GOTIFY_DATABASE_DIALECT=${GOTIFY_DATABASE_DIALECT}' - - 'GOTIFY_DATABASE_CONNECTION=${GOTIFY_DATABASE_CONNECTION}' - - 'GOTIFY_DEFAULTUSER_NAME=${GOTIFY_DEFAULTUSER_NAME}' - - 'GOTIFY_DEFAULTUSER_PASS=${GOTIFY_DEFAULTUSER_PASS}' - - 'GOTIFY_PASSSTRENGTH=${GOTIFY_PASSSTRENGTH}' - - 'GOTIFY_UPLOADEDIMAGESDIR=${GOTIFY_UPLOADEDIMAGESDIR}' - - 'GOTIFY_PLUGINSDIR=${GOTIFY_PLUGINSDIR}' - - 'GOTIFY_REGISTRATION=${GOTIFY_REGISTRATION}' - volumes: - - ./data:/app/data - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/gotify/logo.png b/apps/gotify/logo.png deleted file mode 100644 index 3876434c4e37680b9ee35911939242631c09d461..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7232 zcmV-G9KYj<@om4~Zo}p$9T;xH2S#F0001S$?X6C z|995=LpnEYzu$4n?*IS)@bK^e007;~qVDeQaLMg)%kOW->2S#FZ^h_t!{%Hq!x{e9s7^Yioc^z?)3|MvFwfaL#j%<%*P0d>*#gzf)# z)%y7O_CT&quk1&>+9uAqQ@cXhYRyritM!?cf&kB*UqXlY(ZSWrH4%IU1j#>33Dx~z$qifuAm zY=wAUp32YfF*Z1_#+}XITsEtu;Zze`l z!RhAF?cuTB;s5{N)9KiSg>oA7qo@D?02XvoPE+#o^78Wj^8Wt*{{H^{^78WX=JN99 zo7Pd~000>4NklzsWiR47eK}SS1AvxQ+L*HTIXo&_*$f+sBypJc+!rVN2%pv zMNnzg#Y}oKL1!|VY!>4mzpLx6WCF!eQSYB@azcvcrik~W_GIt4k3ff1Ith7y&@|21 zI6-Zzb-AyU!$W1{#F4y_wzlD+^r_OzrL`Z{wWJTZM%pix_eNGiM0>L0>rDh>i9~u2 z>Npd}tIaL$zj7dwQa;+2ewsGf6Ir8L#K74tR*S`MKgt=@>O>=}wwoSG9~qtKf=JWB zJxPy+DMK!O5Zt7tu4e)wk(b(9E+?pY)?n4!Od5t!1i&zi#$-z{usq9|>qf>R0XPpj zc7-EDE*&xcV9zvwiJsQWR@TT_O$@CF3A2q$G+G{LarXj3S!Clq)S7gVA6$ zDZ+&@C2%bFaQ|2iaI*0!DggPV<96Q(OpLZ9u$H3vg zWcHL=cuuDvh0$@Wwe<+l^zB;8i_Frh#y;S@OUEBID`Y~a79Kp559hnF)RIW64tFEJ z{j`y{(X>J~XvR`vA07ufmO%RP-A(9nS$VsdCuBycW9>to=-VW>^!{#i4cmF0RFKJ` zbu2eriT7&cls*=Le3zZod5z_dHgC%V&d4U6RsoENQC2FJ5~Y>@uoJ~KvPeJn1~6(a zu_+Zx46QJ#-M|wvNWajH^QD4CNh_9~7+c9yJ`NB|7a?=lXb_{YEYOTmcM0p`h@@+Z zQO*b^rDEAoT1pP#;sz4wyWlo*VT}xOYt!T~oG%bak55gCIb(UDHNsRS8Wt~oo0_H- z%MD#1+#iYki_+t*TZ!u{_4Et~nUbw}i zMeBz$wQ;wYw1O7ukgU4Jq!mm_8#dl*(zHpqg024pX@=2=Fd-&Bz0iqVQAG7$No!12 zgV@t!jjU1ps^;|Oe^-w&{D_MO?$Dy@j*OzDWtP_1INqSY+}h?IJyL$Y{K%-=)uK4c z8g&0w@)ig#Ami<9tlBUfTquSh>cRmLmoXuKz7{AhL6TRt$|5!K&Pl#2y zjoX37<&dVC1ePm3bRIzSohutR<)-d>+|S zJzjZgsikR#W9gAzz*%uPEwCT`YU2f9+?Bv;7SN{obUf#6WB|vORGMZCLg^Twjj9hi z7B>`W(bX?3w9haL6Yy?il2Wj438j@5;lp!4^x=h%SysQ~#JLA}h7MlvoyG-fp0&wv zES0p0|JvGl`>+!_WNXJ+bhcmG;l?sVt-Ei~OF~Npe zwLbG1%FE;1v1u{3t;VHZ=t2C`)U3g|OeXR<(go0otNFM6_?@Owj(gh{`h**p>rRu|JLrjna!r+46 z%*9n1rDGCH(f0_oC^lf)pr@sCHGc%V{6ifpn>4NG^0DaCV+Tej8R_d9TKo@^QjvV7 zMkeVmCNIH3Et(6cRZC|OTSCr7%9mmwey1$bN@EKusKpbDNVQISs_=R6b8G-`$D?vc z>$qtx(PJnb7-nh7@xj$1it-_@3czj|q-nkldnh8D(+25Ko4IMHUrBxyK!yy`HhWGy zMaCZVv&vuvh~L)sECB5;V(9|j4F{pLs%n~(4mCH0cl}C3h-4E>+o~)3C{h|RY?K_; zCQGH?QocF`fP++;P8`B+V(G`w%QMnd(>ebYAOk=HskDZj(5|J3sX$D%LJIW|9RAfT zaGX@yav29HaXc$qX)y|iLw9a~hiA3}fyc6|wMWz%$-AlX zy_+g*B$ZaXur6fhM^hkD<#<%(sKWYymzyUzDQUCSkRR>y+3+l>bmAf09)yedqD)s0Q=1vN zlV*f5Y#?^d#aKzf-1UrO`091h*~^wKTjsv;MEW=EB$lTCZtl#ZqN?IJ-oBV^r}ECX zH;(~{~vb!N5i4t348K#z&sn`Mt?vhKX9ZzX$rKy>o%FJ`r7Eg85 zY_)ygm;d^`JHVT9=FNMTjBA3HdOQvfd82!Ca5O%t9;t*pa&rxW-uK|WzAZQqB=qvTXU^1jXQO9u zvgKw)=#5{(89X#eZTS?=pqO`JbWa;Vv>e6>C1^_1hj5Vf2ef|Xut_#+5X^bF%aYIo zZJdaYrzpsLXLZdUycs++r?xCaXWyA;VZzK5L+`wx1Yi30^qn;uPwYV|Q-juPdlxG9 zj){GL$t`&~rdcB0<^>bxQ&RSp`SwNCr-3}?7h0q zYkm9X>Xwhsfa~H%X+uazsAgzBX^;67GtvTP&IT3`v*&DP4(5;CxcTOhoR{i&^`b+k zpMc-<$OL^&L_|bL2#3~uiYbFm(Tz$CaN@rclcsr{k`*maW7H=#)z#w`jjNv0GV-0H zN19Q%6I+>I=*tF2gldMCeO)pEGXklN&OP`w&ZyV>IF>j84<0#t`jfNopLrY_Sb;zS`T0q@5Y$X#~_Q46V`F z#@WvUJGEeET?M>0$dYLA{n#>w4&SnH^yoPyygO2ruN|6{4)~OM%)-Y=ob~<-q_FC0 z;KeN#e=keZt0plqU%$*ZunMSjuRxntr2~IeHZy9@8er5_Q*)G(+(R<}JTuJ_rGC9a z$}2AD0(vx>zPI3$I??4k|& zAVIG~o+@-iU!nOe7?zkVPrtYf6t?-t5A5%_YRQb_m(I6=V%cjYqR}Xy)6}YTw)-l} zoYORU{eW5L*n>+QIJBI#h8c}1p$k_&v*v{{;4x;|Qo8?Wj+kPMv2$Mp0NqH?T{b=% zic`0CU+v%r$lZP8V^9?)SteHg?+ z|3SpY4T~{Gi3?Uf>#B;m^{Xbk)HOxxTp>iWN=&8ij{gC)m@quX7;m4w`0!FtEI+W% zSthvDHS64i&67r9EvCCon7RkzpnnlsOdPQ`X6UfJn^wOxLE@d!n%88N<@E@G<)DC> z*mykT1Nz?yy%?7gpP3RnXXSIt0F2tb&)H<=okuROH?x(MlE#8bu;sofLvwqC{wvUl z_IOLCecDqK9~;A~=)9~n&P)0#273tGnOSFLoj~O*H)zuOd|O&f7#2hC_mwde%0LR+z^~s zg*l1kqlgKT;;V4z1PUE4=!g)*An|54u5&m#HAqM1N5gYQL^yz z{SRabTwt?iSh*B-ksW%SvH{g6alZ`Rzrgm{PrEGKv8v1=myCdeIZ4=Pq337YaOV-^ z^fNTo<;S61?*cKnL$GLz&8U0*|B$w+sYdi})K<8ka@{Rge5K}U6Y%i`w<*tUCL z9$%z8bU}pRU=6sJ39{~GKt1a(Xnm|b-njPVO^25OxO(5zWUVBUJ>9}D z*{&SfOy?2oQ51PYixjj6V~7lipdBYA=tz5%Xwb*59U8Z34S?hOrl$2Hu$=8Gm{sun zwNyBJpgF6Hmp0c!BlwarQW-j7_QJ$BGGb;Q9s}F{Y`$G@7Wx-iV1g~(;b{(no{ric zXo4j^TG~d0g$*7|8^56;J=cUKp~F3( zLtXapxBUA7LVoX~kG}h<10Yts{<>5LkDjcleh071g)m5S<#VC%ny`&@fRV#_10TIeg1RD6E=W4Jf}~zjBBZ>*?0^&T%F*V(@^N}{nS`7wy8iH zyx)+{&5@Abe*5kFKL7l_kKcLcP|cJ@Ew@Xp?2Si}6+ASb+jU~Hg45VNSmFyh!cFOO z*VLBh@b`}#S&EvLDN{D{vpdARdC}uYHtB*7Gpof8rDA1@ZZ1`Z4hbP>9~a9^!p}e6 z$C*8P*(0ZHd>`5UQ5OYrKrYXAzQW4#(|tfwC_qz04xJ5rzwvXdniNGp@G?xaOT9gahq#y@9w_Ww2Yf_;waEo0n}6G zHVHyd<-3BfWR-$#$31?b^}eo9H5#4+j(l>04$w)lXi?3{?~ehc)YlnM2{h!95JAjE z*gUlRdt6lB2e?&48Jd_mw8G^}mN|C;n1Ag3qi4?^J#*!Q04k`+n5i}vwE^jMvs7H7 zR=!Ps{xVySRG-ih1WjR3?9&bne|pX3cZ0{>`8!f`7%v5anX$B01wdDps!Np1cah(^ z$|mD}MQHk_7ZsPW!>I!o`@w3|HO(SW*$;wFI%Ql504wDs~E@*j@Co8SKT|FXh%x)j6 zSnd+tyego+ShGvytr?X`mz51{^n#X^)~i8_nJ>}apwBO_BiePHQZ7l->=H6`E{au{ zDN*OzJfY=`r>U7?d_;M+ArNhGJ&?X_EOUF}D)Z57rf#812(qVTXs!LZs0FBH{wP@T zse{0VdzluwSt_bDi~_a;MT*dRb?A)Sa6n$i`F05#Uja1E6I5_`XC>WMxL$S9#!ewi z0a{b5D>43sQPDK9^Iw+PJ+?|r8WOz2LPD>k5N zfZ~8O=}_s~7K;^Cag{Dxn9MX+JS)LED}nsEg4EOydYRcltYB`_7bmdYq2PaqsVYCX zPC!%%>SX_EklV!4Y=wKM<_IorH^9j}K3q;03a9!OJDTNI1qYoWVs{{$9RhRY zlc?)90O_sMrLLEmM(GZ0^^jE{?em&ZuJa|fneA#04w_7D)0wn0JJ>GdF$a~(x%oiV z_VJR_TT#y(!nsZ|SD;xcHNIAf*5DdNmesgdyQ$5r4s9eKAC+abr2tBolwyf@J>g=f zqdd)9Y*vrt;Gp9d1Yl}`twSdV`0NhGeFVIf*r3024gZ ziIowP@;p&jj)79n_FRv1Xwg^DCI_{+C=C8y%iwp_3fdNct=OhqKb6FG0&Pj|AB<%q zi=eM1A$y*`oFmEjChib{(H*dqIbLL#w!hVt6<@ z)Q1<#M!CGc?St4kohV&FLxS65vJCCs3<%QXH4a^ykn%WGy>Kj>`7vYCKm^;%m4_p12i7y9zUg8fm$~8+ zS6sv6+H0@9{`w33#|@WUcjE;YDaHjA*QN5`4nE8S+Hwb8S1d}; zC$1#hoOXgCJJVCuB26xkpPyw}mfiXI_>mv^kstYyANf0keJ~beNfZa{uYw)Kk>{m< z4{FJC7>3s*bJ$;k`GY$tVZMe*>T>$%+oNV~dPT?pI`pEy05$O(c~>QfntgZFV9-wL zg(K)NB(A@;Wq{vEuQQQce{1ox3C|LB`kj3U8g!g2FryF2{O@blU>t4~u0UU}$#-@k z42@$AIt)|in}PghlOZ0w7SnS2h(AHvMtB-DaNs{O$$E}Y~a zwvHe(5KV6HI}R)CgX>)ffxZIOoK3Huu*^93{Xb;%JWEWVL82^nonQ%$`+?)SF^KE4 z-%K)z1HqjU^VRc`BuW8!z{fiSH%p@g#Pg!~_l-ajF%R50O|H*`D&zrhV4PU>ofr^% zLtyoLtsdIg&7$X!6*LepNn^+NaYjb(Ra3mxm$RiT`jd}{y(i{8M~%J&4JAdACwB>7 z{=UZ7#zr5?E;0!E!%dhc&^>Qa&G!Y~Y)$s;J7788Nb(x^IvC_{W0^7ZOW>G590$DC zs2U9e#*@5LM*o+~gOQx_X>g^OO~y&3Xh(0HSRT@0Wa zV$JLOMNAcrfM#y;zaaa+LBA8vHT(_c!H$C-fQFME@f3Y@C_nNJrfH-G|CmHdgzJ3b z*pK%U;6W|Gh{fvT91Mp*h`XFdeMEi~$IoX(E5aVlV2nvto&xFg{ z$MQ9SiIwAX&Q~EKb`_Wp@&KcMot=1Dzz$8&_ke~W2N4JUi@+Eer-{xIH=zDFVj)3v z4Xqt*l#TP#c__=~9{}SH4Y^CMkIfW=)DAQ*RiIgHE|TH=Az6}rEP>{yR>3_$29_7| z^H&pi9-xtg@0-8)nawyJda28qO`c0!NDGePyz+Zph)j=f2Mw0N7qiEWb2;Cc$GD+z zA^WCUPm)|3(;&;Rc2>ene99%v^TKTB=;EZ|)*hHTho+?5nVaH)krDB5Jy0`tM?C?(|63F>s8fv_iw5ewTm zp3f()N7S6C#&Mn}J%2>K&smd}moXEqO1x#=MC`a2P(uu|GaKn=FYLoR zo?g+T#?gEi=-1;*7{%{hi5=}4?2hlNx>~M!X#XDD40;_snHCMHHzG}-{}JwPM4EFw z2;ur!EVI3Nm4wFwq77xSZ&(W@yqtLb%S`9e_Yrd}suSHqt;qoH+H`0kB3v+dgnE9I!QN zFc7TPBMo+rFTQB2Wsy%W8 z_p4I--W-A9*1W!-BJ5GrjeXzi>d^|+Y*Mn5_E-+v;XC{+Sr>!EXiZvdo}S!5AiX4y zQj{pl6Hkv@s+={Lw-+>+7M0P%p-yOPfhpX9Ay{5S*Y`b)dl^P{AhdEput!zHV@U+N zK<)R%OvoD*(5f@OFzI5_6lDbwax_MCOfI>kdEfUl)O5_UrHZdTpqV2I=Pr80P2PP=9IFYhx?S1_T**aI;vnty_?OtQ@ztVeY z;L%AtL0R8P%+FIC{am_gvNaEPy(eAiThdH{PX~Bs2jDRcEzou7a>ATG%S$qux)VCZ zgIhkXOb`x5Dk2+aP^#py9P5q3Wn+9*1cU3o0s19sHgMY+I(xt_QL<{zFH?Ky# z-9R-{24b6+FN>-YkXNGHmLZ&UC9lXgPC5LnsOGw>ec4hb98zbL$^beT5p45RG?|-& zu7GMj*(_=S+mG|AGNVod0{{WKs`72?JYrYL7VR4(c#63)f-Wlwy4>2t7_2M|q{?^A zW+l%R9o<4DKr(@Lql!>h)z+yU1`6kqAaQek+A*6Y%o49WCJ*?l44^Nvu3cfV3J6q> z>Zz>CHpMI5kObE)j!JxJ>WFkBidBvl;+0uZK(%YX%u-g0(*?IgSIY}iMkHO zU^lkpnFXa_s~evt`h@64L;?CHzqd+ZmBno=3B`8x$v+jD)G`RQMT>r@~ zMZ*TWd?GiUQxcTX*Os86sxn|Pvb$5Znr`+b75p!qTGDD_rPv+QGG!YO)a@ygM*mqA-TO( z>x0@)$23w#_uBYr7!;jc7DSKgR_8YN6IGgHj-IH{F->)*N}a4WUtaQQ0jS;rG%+FWo#yv7Ub;$&kVmwX_F zo~%H-i04*-x09d&uxI(hLI zEnGKPv9e0CiK(>WV>#%^PiOr9c9g(5mwCC~g&veT?fK@lS|(B+E7UrzP4js%Io^vx z-84m!m#5SD9G}X(Xzu@<{ngU!=eoECP;dTCAx2&ci9*%wQ7~E-kQiB z+P9wZFxCSPQ-mS^t>SztKhZ8gzVfn+SEfNudRc}#-HVgmc6G-5%dam%kWOmxbT>{> zs0BFp9rt`fIUDx0fxo+t`X;&o^xa~rDSo!Lct1yjbfP!_mSO^mqQZbSL-&s7(&%JQ?A!=`um>i#dqpf7%` zh-sHV+2vET;&_ZFEaU66_dn+FzaF7m7WYB*q=W(Wo=rPJdB4vTE;K_k?pPEUfp8?{ z{$G1%x*RD81YkFXTJtLshO3|o-~TDMn;WBMCQ)m%H7#+}h{&suz zy#U<%kN9wNAkD`s@O~@*-bhBevNx*S;^=wNy}$KO+cQ?pTy^@5#MO`c58iI}X^44C z-26U0^&V7UmTuk?=jI2SY@6!t#y381rQ(bdtnVIpc`|2lCU%(}OnhQLbF6~*R4@>? ztrbp(C;GD3T{^d?Whw9U0Jkb&AR!^w1UJV`N`zE){jtUO4=L9!M@+%P8sm(cH5_a> z#_0~bJLhWJX6CQwurt=0HuY>$ba|M*QM-)2>b+AXLtMdvhNZ#?T? zO4-4y*_Egv;6XvbSh-@u?LdcgJq^_PZ(hzM7nJqeH4dor-s734SmmS*m^JIy6(QUGSYlqnv(4L#agA3SxI*{z6{isLn| zxjpeDl+>n)S`J{06hn8s_$I56W=Ywi8~i_T3jvLAN*M_JOq1YB`%AGd#)Mk#Se}DB zhwbOAJp-|a(#anSQz{PkcSc>i~K zwl>wk6?YTCq(k@>IrZIXGH_2|s&rSTvJi>Gw$G8$j~2s8-aR?U@ctxd~#R&#pH8~$HFR{*A6-ossh z+r-Sqb3G&b?v)IUznP>CUrl8JY=fTdRyb&y*hp;Bf^C@N>SC!`D;pF$+XHoiuGvcZ z8Q&B<(_mNohDBmI>#oxDnnW6HpAe!sJKGU5-lsRA6UTGVVmKdq?5AyLqO~UE32H** zbOAIL<77R3uup8ANbOfpQ0re@7DaCtK#vJJ0+ASqmQYIIkO#D?r1UC>tq2~b62gi2 z1;W`CUrm9kDOpk=pANlZeu#wuc|_OoGT1gkoPkOA-4!x$o6MFZL$H#I(%Io(;ERn} zFc<;4x7k=4#S=-daiQJ|O|s2m0K-rd3*G^`u^F?79zCF08S-agjxhxrFE9?@uqCzl zE~Toka9kNm$Z>2l5lyf7^oW1LKm-7-C3bGauEN@7%ICg|NNw9oM9wb`D*)fKiM-g0 zbQ^aEYsNSNuF8EdU8L`iU45e+@D{p_kT@Ih#=d!uJ<`Rd0=KyM>u0q$`0=5=q1Gas z%s>?V1s~%Y8f6nXUHRFfIE?kwXJf|rJO= 7.4.32, BCMath PHP Extension, INTL PHP Extension, Ctype PHP Extension, Fileinfo PHP extension, JSON PHP Extension, Mbstring PHP Extension, OpenSSL PHP Extension, PDO PHP Extension, Tokenizer PHP Extension, XML PHP Extension, the only other thing Heimdall needs is sqlite support and zip support (php-zip). - -If you find you can't change the background make sure `php_fileinfo` is enabled in your php.ini. I believe it should be by default, but one user came across the issue on a windows system. - -Installation is as simple as cloning the repository somewhere, or downloading and extracting the zip/tar and pointing your httpd document root to the `/public` folder then creating the .env file and generating an encryption key (this is all taken care of for you with the docker). - -``` -cd /path/to/heimdall -cp .env.example .env -php artisan key:generate -``` - -For simple testing you could just go to the folder and type `php artisan serve` - -There is also a multi-arch Docker which supports x86-64, armhf and arm64, instructions on how to use them at - -- https://hub.docker.com/r/linuxserver/heimdall/ - -## Updating -To update your instance, simply clone this repository or download the zip/tar file with the new version and copy it over the old installation. - -## Search Providers -v2.3.0 added the ability for users to customise the search options. - -Options are stored in `/storage/app/searchproviders.yaml` (`/config/www/searchproviders.yaml` on docker installs), feel free to rearrange the options, add new ones, delete ones you don't use, etc. - -Consider contributing to https://github.com/linuxserver/Heimdall/discussions/categories/search-providers to help others add new ones. - -The item at the top of the list `Tiles` allows you to search for apps on your dashboard by name, helpful when you have lots of icons. - -## New background image not being set -If you are using the docker image or a default php install you may find images over 2MB wont get set as the background image, you just need to change the `upload_max_filesize` in the php.ini. - -If you are using the linuxserver.io docker image simply edit `/path/to/config/php/php-local.ini` and add `upload_max_filesize = 30M` to the end. - -## Docker and enhanced apps -If you are running the docker and the EnhancedApps you are using are also in dockers, you may need to use the docker networking addresses to communicate with them. - -You can do this by using `http(s)://docker_name:port` in the config section. Instead of the name you can use the internal docker ip, this usually starts with `172.` - -## Languages -The app has been translated into several languages; however, the quality of the translations could do with work. If you would like to improve them, or help with other translations, they are stored in `/resources/lang/`. - -To create a new language translation, make a new folder with the ISO 3166-1 alpha-2 code as the name, copy `app.php` from `/resources/lang/en/app.php` into your new folder and replace the English strings. - -When you are finished, create a pull request. - -Currently added languages are - -- Breton -- Chinese -- Danish -- Dutch -- English -- Finnish -- French -- German -- Greek -- Hungarian -- Italian -- Japanese -- Korean -- Lombard -- Norwegian -- Polish -- Portuguese -- Russian -- Slovenian -- Spanish -- Swedish -- Turkish - -## Web Server Configuration - -### Apache -A `.htaccess` file ships with the app, however, a lot of apache installations disallow `.htaccess` files by default. -You will notice this due to some links not working like `/settings`. -In addition mod-rewrite needs to be enabled if it isn't already. - -#### Fixes & work around options -##### - Apache global allow .htaccess -Find the `AllowOverride None` line in your apache configuration and change this to `AllowOverride All` - -##### - Apache vhost configuration allow .htaccess -In the apache vhost configuration in the `` block add `AllowOverride All` - -##### - Add .htaccess content in apache configuration -You can add the full `.htaccess` into your apache configuration, this way you do not need to allow `.htaccess` files. -You can even shorten the content of the `.htaccess` when inserting it into the apache configuration to: -``` -Options +FollowSymLinks -RewriteEngine On - -RewriteCond %{REQUEST_FILENAME} !-d -RewriteCond %{REQUEST_FILENAME} !-f -RewriteRule ^ index.php [L] -``` -#### More info -More info about `AllowOverride` can be found here: -https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride - - - -### Nginx -If you are using Nginx, the following directive in your site configuration will direct all requests to the `index.php` front controller: - -``` -location / { - try_files $uri $uri/ /index.php?$query_string; -} -``` -Someone was using the same nginx setup to both run this and reverse proxy Plex, Plex is served from `/web` so their location was interfering with the `/webfonts`. - -Therefore, if your fonts aren't showing because you have a location for `/web`, add the following -``` -location /webfonts { - try_files $uri $uri/; -} -``` -If there are any other locations which might interfere with any of the folders in the `/public` folder, you might have to do the same for those as well, but it's a super fringe case. - -### Reverse proxy -If you'd like to reverse proxy this app, we recommend using our letsencrypt/nginx docker image: [SWAG - Secure Web Application Gateway](https://hub.docker.com/r/linuxserver/swag) -You can either reverse proxy from the root location, or from a subdomain (subfolder method is currently not supported). For HTTPS proxy, make sure you use the HTTPS port of Heimdall webserver, otherwise some links may break. You can add security through `.htpasswd` - -``` -location / { - auth_basic "Restricted"; - auth_basic_user_file /config/nginx/.htpasswd; - include /config/nginx/proxy.conf; - proxy_set_header X-Forwarded-Proto https; - proxy_pass http://heimdall; -} -``` - -### Self-signed certificates and local CAs -Per default Heimdall uses the standard certificate bundle file (`ca-certificates.crt`) to verify HTTPS sites and will ignore additional certificates placed in `/etc/ssl/certs`. If you wish to use enhanced apps with HTTPS sites that use a self-signed certificate or certs signed with your own local CA, you can override the default bundle: - -- Create a unified certificate `.pem` file that contains all CAs and certificates that Heimdall has to verify. For example, if you use both LetsEncrypt and a local CA for your internal apps, concatenate the LetsEncrypt intermediate CA (export via browser) and your local CA `cert.pem` (or any number of self-signed certs) into one `heimdall.pem` file. -- Place the `heimdall.pem` into the container (if you use Docker), for example by placing it in the path that you mapped to `/config`. Make sure that the Heimdall user has read access (`chmod a+r`). -- Set the `openssl.cafile` setting in `/config/php/php-local.ini` to your cert bundle: - -``` -# /config/php/php-local.ini -openssl.cafile = /config/heimdall.pem -``` - -Restart the container and the enhanced apps should now be able to access your local HTTP websites. This configuration will survive updating or recreating the Heimdall container. - -## Running offline -The apps list is hosted on github, you have a couple of options if you want to run without a connection to the outside world: -1) Clone the repository and host it yourself, look at the .github actions file to see how to generate the apps list. -2) Download the apps list and store it as a json accessible to heimdall named `list.json` - -With both options all you need to do is add the following to your `.env` -`APP_SOURCE=http://localhost/` Where `http://localhost/` is the path to the apps list without the name of the file, so if your file is stored at `https://heimdall.local/list.json` you would put `APP_SOURCE=https://heimdall.local/` - -## Support -https://discord.gg/CCjHKn4 or through GitHub issues - -## Donate -If you would like to show your appreciation, feel free to use the link below. - -[![PayPal](https://heimdall.site/img/paypaldonate.svg)](https://www.paypal.me/heimdall) - -## Credits -- PHP Framework - [Laravel](https://laravel.com/) -- Icons - [FontAwesome 5](https://fontawesome.com/) -- JavaScript - [jQuery](https://jquery.com/) -- Colour picker - [Huebee](http://huebee.buzz/) -- Background image - [pexels](https://www.pexels.com) -- Trianglify library - [Trianglify](https://github.com/qrohlf/trianglify) -- Everyone at Linuxserver.io that has helped with the app and let's not forget IronicBadger for the following question that started it all: -``` -you know, i would love something like this landing page for all my servers apps -that gives me the ability to pin favourites -and / or search -@Stark @Kode do either of you think you'd be able to rustle something like this up ? -``` - -## License - -This app is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/apps/heimdall/data.yml b/apps/heimdall/data.yml deleted file mode 100644 index 25e75100..00000000 --- a/apps/heimdall/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Heimdall -tags: - - 工具 -title: 应用程序仪表板和启动器 -description: 应用程序仪表板和启动器 -additionalProperties: - key: heimdall - name: Heimdall - tags: - - Tool - shortDescZh: 应用程序仪表板和启动器 - shortDescEn: An Application dashboard and launcher - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://heimdall.site/ - github: https://github.com/linuxserver/Heimdall - document: https://github.com/linuxserver/Heimdall diff --git a/apps/heimdall/latest/.env.sample b/apps/heimdall/latest/.env.sample deleted file mode 100644 index b3db0e1c..00000000 --- a/apps/heimdall/latest/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME="heimdall" -PANEL_APP_PORT_HTTP="40049" -PANEL_APP_PORT_HTTPS="40050" -DATA_PATH="./data" diff --git a/apps/heimdall/latest/data.yml b/apps/heimdall/latest/data.yml deleted file mode 100644 index a4890cc8..00000000 --- a/apps/heimdall/latest/data.yml +++ /dev/null @@ -1,25 +0,0 @@ -additionalProperties: - formFields: - - default: 40049 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: HTTP Port - labelZh: HTTP端口 - required: true - rule: paramPort - type: number - - default: 40050 - edit: true - envKey: PANEL_APP_PORT_HTTPS - labelEn: HTTPS Port - labelZh: HTTPS端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/heimdall/latest/docker-compose.yml b/apps/heimdall/latest/docker-compose.yml deleted file mode 100644 index ba8edcb3..00000000 --- a/apps/heimdall/latest/docker-compose.yml +++ /dev/null @@ -1,22 +0,0 @@ -services: - heimdall: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - - "${PANEL_APP_PORT_HTTPS}:443" - volumes: - - "${DATA_PATH}:/config" - environment: - - PUID=1000 - - PGID=1000 - - TZ=Asia/Shanghai - image: linuxserver/heimdall:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/heimdall/logo.png b/apps/heimdall/logo.png deleted file mode 100644 index a2004654dcc1733fe723ce4dad6292b12e145f10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2680 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 D%XwU6 diff --git a/apps/homepage/1.3.2/.env.sample b/apps/homepage/1.3.2/.env.sample deleted file mode 100644 index e9c6d957..00000000 --- a/apps/homepage/1.3.2/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="homepage" -PANEL_APP_PORT_HTTP="40207" diff --git a/apps/homepage/1.3.2/data.yml b/apps/homepage/1.3.2/data.yml deleted file mode 100644 index 2117bc24..00000000 --- a/apps/homepage/1.3.2/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40207 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/homepage/1.3.2/docker-compose.yml b/apps/homepage/1.3.2/docker-compose.yml deleted file mode 100644 index ff3ea203..00000000 --- a/apps/homepage/1.3.2/docker-compose.yml +++ /dev/null @@ -1,21 +0,0 @@ -services: - homepage: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:3000" - volumes: - - ./data/config:/app/config - - /var/run/docker.sock:/var/run/docker.sock:ro - environment: - - PUID=1000 - - PGID=1000 - image: ghcr.io/gethomepage/homepage:v1.3.2 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/homepage/1.3.2/scripts/init.sh b/apps/homepage/1.3.2/scripts/init.sh deleted file mode 100644 index 4e811c86..00000000 --- a/apps/homepage/1.3.2/scripts/init.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -chown -R 1000:1000 data \ No newline at end of file diff --git a/apps/homepage/README.md b/apps/homepage/README.md deleted file mode 100644 index 895a17fe..00000000 --- a/apps/homepage/README.md +++ /dev/null @@ -1,40 +0,0 @@ -

- - - - -

- -

- A modern, fully static, fast, secure fully proxied, highly customizable application dashboard with integrations for over 100 services and translations into multiple languages. Easily configured via YAML files or through docker label discovery. -

- -

- -

- -

- GitHub Workflow Status (with event) -   - -   - Discord -   - -   - GitHub Sponsors -

- -# Features - -With features like quick search, bookmarks, weather support, a wide range of integrations and widgets, an elegant and modern design, and a focus on performance, Homepage is your ideal start to the day and a handy companion throughout it. - -- **Fast** - The site is statically generated at build time for instant load times. -- **Secure** - All API requests to backend services are proxied, keeping your API keys hidden. Constantly reviewed for security by the community. -- **For Everyone** - Images built for AMD64, ARM64, ARMv7, and ARMv6. -- **Full i18n** - Support for over 40 languages. -- **Service & Web Bookmarks** - Add custom links to the homepage. -- **Docker Integration** - Container status and stats. Automatic service discovery via labels. -- **Service Integration** - Over 100 service integrations, including popular starr and self-hosted apps. -- **Information & Utility Widgets** - Weather, time, date, search, and more. -- **And much more...** diff --git a/apps/homepage/data.yml b/apps/homepage/data.yml deleted file mode 100644 index 3c167664..00000000 --- a/apps/homepage/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Homepage -tags: - - 工具 -title: 一个现代的、完全静态的、快速的、安全的、完全代理的、高度可定制的应用程序仪表板 -description: 一个现代的、完全静态的、快速的、安全的、完全代理的、高度可定制的应用程序仪表板 -additionalProperties: - key: homepage - name: Homepage - tags: - - Tool - shortDescZh: 一个现代的、完全静态的、快速的、安全的、完全代理的、高度可定制的应用程序仪表板 - shortDescEn: A modern, fully static, fast, secure fully proxied, highly customizable application dashboard - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://gethomepage.dev - github: https://github.com/gethomepage/homepage - document: https://gethomepage.dev diff --git a/apps/homepage/latest/.env.sample b/apps/homepage/latest/.env.sample deleted file mode 100644 index e9c6d957..00000000 --- a/apps/homepage/latest/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="homepage" -PANEL_APP_PORT_HTTP="40207" diff --git a/apps/homepage/latest/data.yml b/apps/homepage/latest/data.yml deleted file mode 100644 index 2117bc24..00000000 --- a/apps/homepage/latest/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40207 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/homepage/latest/docker-compose.yml b/apps/homepage/latest/docker-compose.yml deleted file mode 100644 index fd38b093..00000000 --- a/apps/homepage/latest/docker-compose.yml +++ /dev/null @@ -1,21 +0,0 @@ -services: - homepage: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:3000" - volumes: - - ./data/config:/app/config - - /var/run/docker.sock:/var/run/docker.sock:ro - environment: - - PUID=1000 - - PGID=1000 - image: ghcr.io/gethomepage/homepage:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/homepage/latest/scripts/init.sh b/apps/homepage/latest/scripts/init.sh deleted file mode 100644 index 4e811c86..00000000 --- a/apps/homepage/latest/scripts/init.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -chown -R 1000:1000 data \ No newline at end of file diff --git a/apps/homepage/logo.png b/apps/homepage/logo.png deleted file mode 100644 index f891fcd88fff4ef2e2442bac11a65c67e897673f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3353 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 Dd_@Y# diff --git a/apps/it-tools/2024.10.22-7ca5933/.env.sample b/apps/it-tools/2024.10.22-7ca5933/.env.sample deleted file mode 100644 index 42ad887c..00000000 --- a/apps/it-tools/2024.10.22-7ca5933/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="it-tools" -PANEL_APP_PORT_HTTP="40116" diff --git a/apps/it-tools/2024.10.22-7ca5933/data.yml b/apps/it-tools/2024.10.22-7ca5933/data.yml deleted file mode 100644 index b1ac61dd..00000000 --- a/apps/it-tools/2024.10.22-7ca5933/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40116 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/it-tools/2024.10.22-7ca5933/docker-compose.yml b/apps/it-tools/2024.10.22-7ca5933/docker-compose.yml deleted file mode 100644 index c996c7b8..00000000 --- a/apps/it-tools/2024.10.22-7ca5933/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -services: - it-tools: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - image: corentinth/it-tools:2024.10.22-7ca5933 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/it-tools/README.md b/apps/it-tools/README.md deleted file mode 100644 index 828f8309..00000000 --- a/apps/it-tools/README.md +++ /dev/null @@ -1,120 +0,0 @@ -![logo](https://github.com/CorentinTh/it-tools/raw/main/.github/logo.png) - -Useful tools for developer and people working in IT. [Have a look !](https://it-tools.tech). - -## Functionalities and roadmap - -Please check the [issues](https://github.com/CorentinTh/it-tools/issues) to see if some feature listed to be implemented. - -You have an idea of a tool? Submit a [feature request](https://github.com/CorentinTh/it-tools/issues/new/choose)! - -## Self host - -Self host solutions for your homelab - -**From docker hub:** - -```sh -docker run -d --name it-tools --restart unless-stopped -p 8080:80 corentinth/it-tools:latest -``` - -**From github packages:** - -```sh -docker run -d --name it-tools --restart unless-stopped -p 8080:80 ghcr.io/corentinth/it-tools:latest -``` - -**Other solutions:** - -- [Tipi](https://www.runtipi.io/docs/apps-available) -- [Unraid](https://unraid.net/community/apps?q=it-tools) - -## Contribute - -### Recommended IDE Setup - -[VSCode](https://code.visualstudio.com/) with the following extensions: -- [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) -- [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin). -- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) -- [i18n Ally](https://marketplace.visualstudio.com/items?itemName=lokalise.i18n-ally) - -with the following settings: - -```json5 -{ - "editor.formatOnSave": false, - "editor.codeActionsOnSave": { - "source.fixAll.eslint": true - }, - "i18n-ally.localesPaths": [ - "locales", - "src/tools/*/locales" - ], - "i18n-ally.keystyle": "nested" -} -``` - -### Type Support for `.vue` Imports in TS - -TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types. - -If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps: - -1. Disable the built-in TypeScript Extension - 1. Run `Extensions: Show Built-in Extensions` from VSCode's command palette - 2. Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)` -2. Reload the VSCode window by running `Developer: Reload Window` from the command palette. - -### Project Setup - -```sh -pnpm install -``` - -### Compile and Hot-Reload for Development - -```sh -pnpm dev -``` - -### Type-Check, Compile and Minify for Production - -```sh -pnpm build -``` - -### Run Unit Tests with [Vitest](https://vitest.dev/) - -```sh -pnpm test -``` - -### Lint with [ESLint](https://eslint.org/) - -```sh -pnpm lint -``` - -### Create a new tool - -To create a new tool, there is a script that generate the boilerplate of the new tool, simply run: - -```sh -pnpm run script:create-new-tool my-tool-name -``` - -It will create a directory in `src/tools` with the correct files, and a the import in `src/tools/index.ts`. You will just need to add the imported tool in the proper category and develop the tool. - -## Credits - -Coded with ❤️ by [Corentin Thomasset](https://corentin-thomasset.fr/). - -This project is continuously deployed using [vercel.com](https://vercel.com). - -IT Tools - Collection of handy online tools for devs, with great UX | Product Hunt -IT Tools - Collection of handy online tools for devs, with great UX | Product Hunt - -## License - -This project is under the [GNU GPLv3](https://github.com/CorentinTh/it-tools/blob/main/LICENSE). diff --git a/apps/it-tools/data.yml b/apps/it-tools/data.yml deleted file mode 100644 index 14426b60..00000000 --- a/apps/it-tools/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: IT-Tools -tags: - - 开发工具 -title: 为开发人员提供方便的在线工具集合,具有出色的用户体验 -description: 为开发人员提供方便的在线工具集合,具有出色的用户体验 -additionalProperties: - key: it-tools - name: IT-Tools - tags: - - DevTool - shortDescZh: 为开发人员提供方便的在线工具集合,具有出色的用户体验 - shortDescEn: Collection of handy online tools for developers, with great UX - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://it-tools.tech - github: https://github.com/CorentinTh/it-tools - document: https://github.com/CorentinTh/it-tools diff --git a/apps/it-tools/latest/.env.sample b/apps/it-tools/latest/.env.sample deleted file mode 100644 index 42ad887c..00000000 --- a/apps/it-tools/latest/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="it-tools" -PANEL_APP_PORT_HTTP="40116" diff --git a/apps/it-tools/latest/data.yml b/apps/it-tools/latest/data.yml deleted file mode 100644 index b1ac61dd..00000000 --- a/apps/it-tools/latest/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40116 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/it-tools/latest/docker-compose.yml b/apps/it-tools/latest/docker-compose.yml deleted file mode 100644 index 3d64426a..00000000 --- a/apps/it-tools/latest/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -services: - it-tools: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - image: corentinth/it-tools:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/it-tools/logo.png b/apps/it-tools/logo.png deleted file mode 100644 index 7ac104d0e418364bda188d3a2fe13d4dea3e279e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5551 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 diff --git a/apps/jellyfin/10.10.7/.env.sample b/apps/jellyfin/10.10.7/.env.sample deleted file mode 100644 index 7bc696a4..00000000 --- a/apps/jellyfin/10.10.7/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME=jellyfin -PANEL_APP_PORT_HTTP=8096 -CACHE_FOLDER_PATH="./data/media" -MEDIA_FOLDER_PATH="./data/cache" \ No newline at end of file diff --git a/apps/jellyfin/10.10.7/data.yml b/apps/jellyfin/10.10.7/data.yml deleted file mode 100644 index dfe440e3..00000000 --- a/apps/jellyfin/10.10.7/data.yml +++ /dev/null @@ -1,24 +0,0 @@ -additionalProperties: - formFields: - - default: 8096 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: WebUI Port - labelZh: 网页端口 - required: true - rule: paramPort - type: number - - default: ./data/media - edit: true - envKey: MEDIA_FOLDER_PATH - labelEn: Media folder path - labelZh: 媒体文件夹路径 - required: true - type: text - - default: ./data/cache - edit: true - envKey: CACHE_FOLDER_PATH - labelEn: Cache folder path - labelZh: 缓存文件夹路径 - required: true - type: text diff --git a/apps/jellyfin/10.10.7/docker-compose.yml b/apps/jellyfin/10.10.7/docker-compose.yml deleted file mode 100644 index 09b6b15b..00000000 --- a/apps/jellyfin/10.10.7/docker-compose.yml +++ /dev/null @@ -1,22 +0,0 @@ -services: - jellyfin: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8096" - volumes: - - "./data/config:/config" - - "${CACHE_FOLDER_PATH}:/cache" - - "${MEDIA_FOLDER_PATH}:/media/media" - devices: - - /dev/dri:/dev/dri # VAAPI/NVDEC/NVENC render nodes - #- /dev/vchiq:/dev/vchiq # MMAL/OMX on Raspberry Pi - image: "jellyfin/jellyfin:10.10.7" - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true \ No newline at end of file diff --git a/apps/jellyfin/README.md b/apps/jellyfin/README.md deleted file mode 100644 index 2362741b..00000000 --- a/apps/jellyfin/README.md +++ /dev/null @@ -1,176 +0,0 @@ -

Jellyfin

-

The Free Software Media System

- ---- - -

-Logo Banner -
-
- -GPL 2.0 License - - -Current Release - - -Translation Status - - -Azure Builds - - -Docker Pull Count - -
- -Donate - - -Submit Feature Requests - - -Chat on Matrix - - -Join our Subreddit - - -Release RSS Feed - - -Master Commits RSS Feed - -

- ---- - -Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it. We welcome anyone who is interested in joining us in our quest! - -For further details, please see [our documentation page](https://jellyfin.org/docs/). To receive the latest updates, get help with Jellyfin, and join the community, please visit [one of our communication channels](https://jellyfin.org/docs/general/getting-help). For more information about the project, please see our [about page](https://jellyfin.org/docs/general/about). - -Want to get started?
-Check out our downloads page or our installation guide, then see our quick start guide. You can also build from source.
- -Something not working right?
-Open an Issue on GitHub.
- -Want to contribute?
-Check out our contributing choose-your-own-adventure to see where you can help, then see our contributing guide and our community standards.
- -New idea or improvement?
-Check out our feature request hub.
- -Don't see Jellyfin in your language?
-Check out our Weblate instance to help translate Jellyfin and its subprojects.
- - -Detailed Translation Status - - ---- - -## Jellyfin Server - -This repository contains the code for Jellyfin's backend server. Note that this is only one of many projects under the Jellyfin GitHub [organization](https://github.com/jellyfin/) on GitHub. If you want to contribute, you can start by checking out our [documentation](https://jellyfin.org/docs/general/contributing/index.html) to see what to work on. - -## Server Development - -These instructions will help you get set up with a local development environment in order to contribute to this repository. Before you start, please be sure to completely read our [guidelines on development contributions](https://jellyfin.org/docs/general/contributing/development.html). Note that this project is supported on all major operating systems except FreeBSD, which is still incompatible. - -### Prerequisites - -Before the project can be built, you must first install the [.NET 7.0 SDK](https://dotnet.microsoft.com/download/dotnet) on your system. - -Instructions to run this project from the command line are included here, but you will also need to install an IDE if you want to debug the server while it is running. Any IDE that supports .NET 6 development will work, but two options are recent versions of [Visual Studio](https://visualstudio.microsoft.com/downloads/) (at least 2022) and [Visual Studio Code](https://code.visualstudio.com/Download). - -[ffmpeg](https://github.com/jellyfin/jellyfin-ffmpeg) will also need to be installed. - -### Cloning the Repository - -After dependencies are installed you will need to clone a local copy of this repository. If you just want to run the server from source you can clone this repository directly, but if you are intending to contribute code changes to the project, you should [set up your own fork](https://jellyfin.org/docs/general/contributing/development.html#set-up-your-copy-of-the-repo) of the repository. The following example shows how you can clone the repository directly over HTTPS. - -```bash -git clone https://github.com/jellyfin/jellyfin.git -``` - -### Installing the Web Client - -The server is configured to host the static files required for the [web client](https://github.com/jellyfin/jellyfin-web) in addition to serving the backend by default. Before you can run the server, you will need to get a copy of the web client since they are not included in this repository directly. - -Note that it is also possible to [host the web client separately](#hosting-the-web-client-separately) from the web server with some additional configuration, in which case you can skip this step. - -There are three options to get the files for the web client. - -1. Download one of the finished builds from the [Azure DevOps pipeline](https://dev.azure.com/jellyfin-project/jellyfin/_build?definitionId=27). You can download the build for a specific release by looking at the [branches tab](https://dev.azure.com/jellyfin-project/jellyfin/_build?definitionId=27&_a=summary&repositoryFilter=6&view=branches) of the pipelines page. -2. Build them from source following the instructions on the [jellyfin-web repository](https://github.com/jellyfin/jellyfin-web) -3. Get the pre-built files from an existing installation of the server. For example, with a Windows server installation the client files are located at `C:\Program Files\Jellyfin\Server\jellyfin-web` - -### Running The Server - -The following instructions will help you get the project up and running via the command line, or your preferred IDE. - -#### Running With Visual Studio - -To run the project with Visual Studio you can open the Solution (`.sln`) file and then press `F5` to run the server. - -#### Running With Visual Studio Code - -To run the project with Visual Studio Code you will first need to open the repository directory with Visual Studio Code using the `Open Folder...` option. - -Second, you need to [install the recommended extensions for the workspace](https://code.visualstudio.com/docs/editor/extension-gallery#_recommended-extensions). Note that extension recommendations are classified as either "Workspace Recommendations" or "Other Recommendations", but only the "Workspace Recommendations" are required. - -After the required extensions are installed, you can run the server by pressing `F5`. - -#### Running From The Command Line - -To run the server from the command line you can use the `dotnet run` command. The example below shows how to do this if you have cloned the repository into a directory named `jellyfin` (the default directory name) and should work on all operating systems. - -```bash -cd jellyfin # Move into the repository directory -dotnet run --project Jellyfin.Server --webdir /absolute/path/to/jellyfin-web/dist # Run the server startup project -``` - -A second option is to build the project and then run the resulting executable file directly. When running the executable directly you can easily add command line options. Add the `--help` flag to list details on all the supported command line options. - -1. Build the project - -```bash -dotnet build # Build the project -cd Jellyfin.Server/bin/Debug/net7.0 # Change into the build output directory -``` - -2. Execute the build output. On Linux, Mac, etc. use `./jellyfin` and on Windows use `jellyfin.exe`. - -### Running The Tests - -This repository also includes unit tests that are used to validate functionality as part of a CI pipeline on Azure. There are several ways to run these tests. - -1. Run tests from the command line using `dotnet test` -2. Run tests in Visual Studio using the [Test Explorer](https://docs.microsoft.com/en-us/visualstudio/test/run-unit-tests-with-test-explorer) -3. Run individual tests in Visual Studio Code using the associated [CodeLens annotation](https://github.com/OmniSharp/omnisharp-vscode/wiki/How-to-run-and-debug-unit-tests) - -### Advanced Configuration - -The following sections describe some more advanced scenarios for running the server from source that build upon the standard instructions above. - -#### Hosting The Web Client Separately - -It is not necessary to host the frontend web client as part of the backend server. Hosting these two components separately may be useful for frontend developers who would prefer to host the client in a separate webpack development server for a tighter development loop. See the [jellyfin-web](https://github.com/jellyfin/jellyfin-web#getting-started) repo for instructions on how to do this. - -To instruct the server not to host the web content, there is a `nowebclient` configuration flag that must be set. This can specified using the command line -switch `--nowebclient` or the environment variable `JELLYFIN_NOWEBCONTENT=true`. - -Since this is a common scenario, there is also a separate launch profile defined for Visual Studio called `Jellyfin.Server (nowebcontent)` that can be selected from the 'Start Debugging' dropdown in the main toolbar. - -**NOTE:** The setup wizard can not be run if the web client is hosted separately. - ---- -

-This project is supported by: -
-
-DigitalOcean -   -JetBrains logo -

diff --git a/apps/jellyfin/data.yml b/apps/jellyfin/data.yml deleted file mode 100644 index 97ea99df..00000000 --- a/apps/jellyfin/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Jellyfin -tags: - - 多媒体 -title: 多媒体应用程序软件套装 -description: 多媒体应用程序软件套装 -additionalProperties: - key: jellyfin - name: Jellyfin - tags: - - Media - shortDescZh: 多媒体应用程序软件套装 - shortDescEn: Multimedia application software suite - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://jellyfin.org/ - github: https://github.com/jellyfin/jellyfin - document: https://jellyfin.org/docs/ diff --git a/apps/jellyfin/latest/.env.sample b/apps/jellyfin/latest/.env.sample deleted file mode 100644 index 7bc696a4..00000000 --- a/apps/jellyfin/latest/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME=jellyfin -PANEL_APP_PORT_HTTP=8096 -CACHE_FOLDER_PATH="./data/media" -MEDIA_FOLDER_PATH="./data/cache" \ No newline at end of file diff --git a/apps/jellyfin/latest/data.yml b/apps/jellyfin/latest/data.yml deleted file mode 100644 index dfe440e3..00000000 --- a/apps/jellyfin/latest/data.yml +++ /dev/null @@ -1,24 +0,0 @@ -additionalProperties: - formFields: - - default: 8096 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: WebUI Port - labelZh: 网页端口 - required: true - rule: paramPort - type: number - - default: ./data/media - edit: true - envKey: MEDIA_FOLDER_PATH - labelEn: Media folder path - labelZh: 媒体文件夹路径 - required: true - type: text - - default: ./data/cache - edit: true - envKey: CACHE_FOLDER_PATH - labelEn: Cache folder path - labelZh: 缓存文件夹路径 - required: true - type: text diff --git a/apps/jellyfin/latest/docker-compose.yml b/apps/jellyfin/latest/docker-compose.yml deleted file mode 100644 index 54a8fdeb..00000000 --- a/apps/jellyfin/latest/docker-compose.yml +++ /dev/null @@ -1,22 +0,0 @@ -services: - jellyfin: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8096" - volumes: - - "./data/config:/config" - - "${CACHE_FOLDER_PATH}:/cache" - - "${MEDIA_FOLDER_PATH}:/media/media" - devices: - - /dev/dri:/dev/dri # VAAPI/NVDEC/NVENC render nodes - #- /dev/vchiq:/dev/vchiq # MMAL/OMX on Raspberry Pi - image: "jellyfin/jellyfin:latest" - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true \ No newline at end of file diff --git a/apps/jellyfin/logo.png b/apps/jellyfin/logo.png deleted file mode 100644 index 1cbd0c3e5dd769852f99d16e8bc331beced8b610..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3440 zcmV-$4Uh7PP)Px#R8UM*MMrQankJV0s&=H*3K#0L_t(|+U;Cvv*W4` zyj}r2c2;Ne|Noy4Z-9j4C5z*!cSt_Wt*Lver%$U9lHkAp{?_06TYu|s{XZ_1=%xNC z$Z@!DR~Y{@kY%_(HjqobLivx-+(F)#9qfOC?4*ONF_+y+HV;{Z8uQWeT$ax=65Gc- zFkKqdq1bi^9*;)RJ!1WNZaEx%%pL44qi!%CdvWZoI9k+Cu~|KPJP(kc&uvDdaCz=v zKRa=h+eO`A-XD9rD?O$)>Miam9??S-_N(69E)ySpqMr`Yb@Pe0iJ5ke0d~EqTvZ+& zaahO}b4#@T%FP)EHazPb1L}H177|iKyW*%jbu_5AWgIqB+8cGaME9uE4Fw^FjI=Qj zU2h~9`yljCm)JUnCASiUUKS0AZXtKD4~IjvH9?#6N+)S(9S!E@n{GqUPDbh)M`;ib z>Nqr1AJj$!J?!6v-#r1(E$rXAbqIrywCLJKVMp|jWt|*>I!ZTY6HALkK$7{t+h(%-rrv4N9u*m{RW{S)64FbMJX z9VJQh^ewu_tk+Kjk{n5GS#mal~RhcT5Ot&#t;Ip+6cQ-VhE)rE_X}|xK^DzsoH2^Q25(38N&=By5DrX_WXY-F*~DSht#y*r5JjO;^k^wJ z0+=fcI$L%Bw&Lhek2l`Lj+VzNu}F!dBYNWZtUwUO)wHfYt-p_ z7LC&A8NG?f7xYDcFBiFzMVo5$0D8vnSe$)9Ys^|8YegYS?q)@kA{5;)eF@fyLR2=G zS;t5X&u4)8tFf4Psei|FIQIwa0Mi}K%}UpZLS!AYBT3>o9B_ZntV6~*78JQsLeZDY z?UJn#h3>`@F8LulBae$CkFUidE_4{87ul?WlCC&EPNvE;JPlcYKexk#*g5v279BZ-UA8%!A;cZ($H#2XIm{ks?1hOfM~}2t zB=qQ>=+99d(%BtDw6ZLBH3P-PB0==WsE!fQgLMcd2yugjX(i1Z_bkz>ro*sBtr)7!X6WJ$K14LI z4#DP0-l)M)1*0=3>4)LlRL3;tWGo6j>(G$TZ0{}Y1Pw4>-=bPD-DEKpg=f&2?JG+3 zuct-aLcUqd*Egt+p`wSGj(94$bJS4{M2}Dn;_&(=)q*}3(&rUL2cdzi&))8h*$g9hV{tHheJq;l!WT!gmLFk4 zdZuH{Iu3ZYszN=Z?sou?rwNBOTI=l9zmBAM3YGe z=m?QiD-?zODqgJK%}MVPdMcAZeH*8GP)3jXw2Av9=ND$nrNU6)0t&@6oFydMSWVZ z!3g?-VYpxirzQ>h5;_S)IJuH#`jo%2v4C0sm@VGb#-hEX1N5;*nw-Tz^TR^Ep5{}H zZtI!RXvv?laCS${beQ%E{c{k{E#?IqjG~F=jEiZjbI` zl}|bhW3Pk`#=(r+0jgYpJ3Xg;l;Nnd(J|FluE^Ennk-^KjYXe z{U2GDrh!s&P7;xOQP{%HC)D8){T!7vg&wa3|8L<%VMn!`2t$1FtwFuoT{eYw!+ZA` z)klcO!TLa4?GXS8yyI?g=c7j!bQ7e1qi?kfnj!~w*Ym8G9PtkN;h7a51HeZsrz-(P{Rjt;n(+F9^}X1@V_cbR7O5mL|Hm1~1W zdB+fnj6UR^A^JB=JJM(tlYhjNMX$|tLHXT?J`y6kE7yL#F&mh^W2))=G~826w`;u} z(KS0jG%adL5N#gHTxm-bInsuUo5B$L*`385t-`g;k#)FClcG+>9<5sArA!fAz3k3~ zU2u|icm}VqJ?lD(#djg+DDywvA=5ckJ3!T$r+t!ic`% z7oeh4eH^z8irmz~Y$A=-L8YgPdkWEgw5ojoN(28C=RI*+A56udKAWgF@%l+|)p&ES}w>us*{kW%9 z2Qf&BYIk1wydM;F=SaOKr&k7J%!347x{8K=2gPxQMN&J%b{WC#07jz*UcHe-Od55# zC!Xi7pUw-8)ca4)fFr2g(R1@)ssj;yMd!k~nue!Y>P1p!%-Fx^d%-sp@PH%ga$ZlT zNumj+6XMlq^spc~9zj(7VKJJVx_gW$`aa)1V&cKtn)GO@>hI|p5d8p>hBF<&qQ@Xp zpyd#S^t-^+@C?>Qj8SEJ>ohNBSt|s95JfVTd4~eCP0T|Iwq1 z^4~!x9&ofX9k5k_rEzf;eM3`s*GWZFi#*vT{>%QZI%?v*yNZrO?{X8~RvskL7V>G9 zqI=YE1FuK40Y{_3C2-cGub!ai+a2F5irr_>N#~#k9I;0unr}D^v7}Ga8_P&lT_#iz zq8ao98k@h6x9$7er#F8F{c)u?@H@|RK7OuNk-x9duTIhfj@}mj@P=QxC}e{$pYEP$ zwx>Os>)Hct;0p?vXqVG}aQJ5DmANyqkoP8Z6s0hJ=!HYZ|GHDsb2}%U~j-XZ}e64m=dQCXdD`Aq0!0}O39+HU!>ViFLF!? z^K234&B`>?KuYnW=ir-vfE;QY?aJUPG{Ce-_1`x|k>3IRTYu|s{jI;X+WH@M(U{x{ SGb^M30000 - -

- -

- Open Bounties - Rewarded Bounties -

- -# Brought to you by Trigger.dev - -JSON Hero was created and is maintained by the team behind [Trigger.dev](https://trigger.dev). With Trigger.dev you can trigger workflows from APIs, on a schedule, or on demand. We make API calls easy with authentication handled for you, and you can add durable delays that survive server restarts. - -# JSON Hero - -JSON Hero makes reading and understand JSON files easy by giving you a clean and beautiful UI packed with extra features. - -- View JSON any way you'd like: Column View, Tree View, Editor View, and more. -- Automatically infers the contents of strings and provides useful previews -- Creates an inferred JSON Schema that could be used to validate your JSON -- Quickly scan related values to check for edge cases -- Search your JSON files (both keys and values) -- Keyboard accessible -- Easily sharable URLs with path support - -![JSON Hero Screenshot](https://imagedelivery.net/3TbraffuDZ4aEf8KWOmI_w/0f5735b3-2421-470b-244c-7047fd77f700/public) - -## Features - -### Send to JSON Hero - -Send your JSON to JSON Hero in a variety of ways - -- Head to [jsonhero.io](https://jsonhero.io) and Drag and Drop a JSON file, or paste JSON or a JSON url in the provided form -- Include a Base64 encoded string of a JSON payload: [jsonhero.io/new?j=eyAiZm9vIjogImJhciIgfQ==](https://jsonhero.io/new?j=eyAiZm9vIjogImJhciIgfQ==) -- Include a JSON URL to the `new` endpoint: [jsonhero.io/new?url=https://jsonplaceholder.typicode.com/todos/1](https://jsonhero.io/new?url=https://jsonplaceholder.typicode.com/todos/1) -- Install the [VS Code extension](https://marketplace.visualstudio.com/items?itemName=JSONHero.jsonhero-vscode) and open JSON from VS Code -- Raycast user? Check out our extension [here](https://www.raycast.com/maverickdotdev/open-in-json-hero) -- Use the unofficial API: - - - Make a `POST` request to `jsonhero.io/api/create.json` with the following JSON body: - - ```json - { - "title": "test 123", - "content": { "foo": "bar" }, - "readOnly": false, // this is optional, will make it so the document title cannot be edited or document cannot be deleted - "ttl": 3600 // this will expire the document after 3600 seconds, also optional - } - ``` - - The JSON response will be the following: - - ```json - { - "id": "YKKduNySH7Ub", - "title": "test 123", - "location": "https://jsonhero.io/j/YKKduNySH7Ub" - } - ``` - -### Column view - -Inspired by macOS Finder, Column View is a new way to browse a JSON document. - -![JSON Hero Column View](https://raw.githubusercontent.com/triggerdotdev/documentation-hosting/main/images/features-columnview.gif) - -It has all the features you'd expect: Keyboard navigation, Path bar, history. - -It also has a nifty feature that allows you to "hold" a descendent selected and travel up through the hierarchy, and then move between siblings and view the different values found at that path. It's hard to describe, but here is an animation to help demonstrate: - -![Column View - Traverse with Context](https://raw.githubusercontent.com/triggerdotdev/documentation-hosting/main/images/features-traversewithcontext.gif) - -As you can see, holding the `Option` (or `Alt` key on Windows) while moving to a parent keeps the part of the document selected and shows it in context of it's surrounding JSON. Then you can traverse between items in an array and compare the values of the selection across deep hierarchy cahnges. - -### Editor view - -View your entire JSON document in an editor, but keep the nice previews and related values you get from the sidebar as you move around the document: - -![Editor view](https://raw.githubusercontent.com/triggerdotdev/documentation-hosting/main/images/features-editorview.gif) - -### Tree view - -Use a traditional tree view to traverse your JSON document, with collapsible sections and keyboard shortcuts. All while keeping the nice previews: - -![Tree view](https://raw.githubusercontent.com/triggerdotdev/documentation-hosting/main/images/features-treeview.gif) - -### Search - -Quickly open a search panel and fuzzy search your entire JSON file in milliseconds. Searches through key names, key paths, values, and even pretty formatted values (e.g. Searching for `"Dec"` will find datetime strings in the month of December.) - -![Search](https://raw.githubusercontent.com/triggerdotdev/documentation-hosting/main/images/features-search.gif) - -### Content Previews - -JSON Hero automatically infers the content of strings and provides useful previews and properties of the value you've selected. It's "Show Don't Tell" for JSON: - -#### Dates and Times - -![Preview colors](https://imagedelivery.net/3TbraffuDZ4aEf8KWOmI_w/43f2c081-c09b-47db-cb10-8f15ee6a1a00/public) - -#### Image URLs - -![Preview colors](https://imagedelivery.net/3TbraffuDZ4aEf8KWOmI_w/8a743bd5-a065-4f7f-1262-585c39c10100/public) - -#### Website URLs - -![Preview websites](https://imagedelivery.net/3TbraffuDZ4aEf8KWOmI_w/cd7f2d28-2c8d-4b37-696d-e898937c3d00/public) - -#### Tweet URLS - -![Preview tweets](https://imagedelivery.net/3TbraffuDZ4aEf8KWOmI_w/8455e9d6-1d3e-451e-a032-f3259204ef00/public) - -#### JSON URLs - -![Preview JSON](https://imagedelivery.net/3TbraffuDZ4aEf8KWOmI_w/13743860-3d9c-4cac-dde9-881fba7eba00/public) - -#### Colors - -![Preview colors](https://imagedelivery.net/3TbraffuDZ4aEf8KWOmI_w/22e37599-c2bd-4abd-79f2-466241d17b00/public) - -### Related Values - -Easily see all the related values across your entire JSON document for a specific field, including any `undefined` or `null` values. - -![Editor view](https://raw.githubusercontent.com/triggerdotdev/documentation-hosting/main/images/features-relatedvalues.gif) - - - -## Bugs and Feature Requests - -Have a bug or a feature request? Feel free to [open a new issue](https://github.com/triggerdotdev/jsonhero-web/issues). - -You can also join our [Discord channel](https://discord.gg/JtBAxBr2m3) to hang out and discuss anything you'd like. - -## Developing - -To run locally, first clone the repo and install the dependencies: - -```bash -git clone https://github.com/triggerdotdev/jsonhero-web.git -cd jsonhero-web -npm install -``` - -Then, create a file at the root of the repo called `.env` and set the `SESSION_SECRET` value: - -``` -SESSION_SECRET=abc123 -``` - -Then, run `npm run build` or `npm run dev` to build. - -Now, run `npm start` and open your browser to `http://localhost:8787` \ No newline at end of file diff --git a/apps/jsonhero/data.yml b/apps/jsonhero/data.yml deleted file mode 100644 index 5a0044f4..00000000 --- a/apps/jsonhero/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: JSON Hero -tags: - - 使阅读和理解 JSON 文件变得简单 -title: 使阅读和理解 JSON 文件变得简单 -description: 使阅读和理解 JSON 文件变得简单 -additionalProperties: - key: jsonhero - name: JSON Hero - tags: - - Tool - shortDescZh: 使阅读和理解 JSON 文件变得简单 - shortDescEn: Makes reading and understand JSON files easy - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://jsonhero.io - github: https://github.com/triggerdotdev/jsonhero-web - document: https://github.com/triggerdotdev/jsonhero-web diff --git a/apps/jsonhero/latest/.env.sample b/apps/jsonhero/latest/.env.sample deleted file mode 100644 index 1831c608..00000000 --- a/apps/jsonhero/latest/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="jsonhero" -PANEL_APP_PORT_HTTP="40178" diff --git a/apps/jsonhero/latest/data.yml b/apps/jsonhero/latest/data.yml deleted file mode 100644 index 83117241..00000000 --- a/apps/jsonhero/latest/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40178 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/jsonhero/latest/docker-compose.yml b/apps/jsonhero/latest/docker-compose.yml deleted file mode 100644 index 1fecd077..00000000 --- a/apps/jsonhero/latest/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -services: - jsonhero: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8787" - image: henryclw/jsonhero-web:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/jsonhero/logo.png b/apps/jsonhero/logo.png deleted file mode 100644 index 52b8c6336c0ebd7b9397de01d99d26a009f42bcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4097 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 基于当前良好的架构模式,支持的文件类型在进一步丰富中 -### 项目特性 - -- 使用 spring-boot 开发,预览服务搭建部署非常简便 -- rest 接口提供服务,跨语言、跨平台特性(java,php,python,go,php,....)都支持,应用接入简单方便 -- 抽象预览服务接口,方便二次开发,非常方便添加其他类型文件预览支持 -- 最最重要 Apache 协议开源,代码 pull 下来想干嘛就干嘛 - -### 官网及文档 - -地址:[https://kkview.cn](https://kkview.cn/) - -### 在线体验 -> 请善待公共服务,会不定时停用 - -地址:[https://file.kkview.cn](https://file.kkview.cn) - -### 项目文档(Project documentation) -1. 详细使用文档:https://kkview.cn/zh-cn/docs/home.html - -### 联系我们,加入组织 -> 我们会用心回答解决大家在项目使用中的问题,也请大家在提问前至少 Google 或 baidu 过,珍爱生命远离无效的交流沟通 - - - -### 文档预览效果 -#### 1. 文本预览 -支持所有类型的文本文档预览, 由于文本文档类型过多,无法全部枚举,默认开启的类型如下 txt,html,htm,asp,jsp,xml,xbrl,json,properties,md,gitignore,log,java,py,c,cpp,sql,sh,bat,m,bas,prg,cmd -文本预览效果如下 -![文本预览效果如下](https://kkview.cn/img/preview/preview-text.png) - -#### 2. 图片预览 -支持jpg,jpeg,png,gif等图片预览(翻转,缩放,镜像),预览效果如下 -![图片预览](https://kkview.cn/img/preview/preview-image.png) - -#### 3. word文档预览 -支持doc,docx文档预览,word预览有两种模式:一种是每页word转为图片预览,另一种是整个word文档转成pdf,再预览pdf。两种模式的适用场景如下 -* 图片预览:word文件大,前台加载整个pdf过慢 -* pdf预览:内网访问,加载pdf快 -图片预览模式预览效果如下 -![word文档预览1](https://kkview.cn/img/preview/preview-doc-image.png) -pdf预览模式预览效果如下 -![word文档预览2](https://kkview.cn/img/preview/preview-doc-pdf.png) - -#### 4. ppt文档预览 -支持ppt,pptx文档预览,和word文档一样,有两种预览模式 -图片预览模式预览效果如下 -![ppt文档预览1](https://kkview.cn/img/preview/preview-ppt-image.png) -pdf预览模式预览效果如下 -![ppt文档预览2](https://kkview.cn/img/preview/preview-ppt-pdf.png) - -#### 5. pdf文档预览 -支持pdf文档预览,和word文档一样,有两种预览模式 -图片预览模式预览效果如下 -![pdf文档预览1](https://kkview.cn/img/preview/preview-pdf-image.png) -pdf预览模式预览效果如下 -![pdf文档预览2](https://kkview.cn/img/preview/preview-pdf-pdf.png) - -#### 6. excel文档预览 -支持xls,xlsx文档预览,预览效果如下 -![excel文档预览](https://kkview.cn/img/preview/preview-xls.png) - -#### 7. 压缩文件预览 -支持zip,rar,jar,tar,gzip等压缩包,预览效果如下 -![压缩文件预览1](https://kkview.cn/img/preview/preview-zip.png) -可点击压缩包中的文件名,直接预览文件,预览效果如下 -![压缩文件预览2](https://kkview.cn/img/preview/preview-zip-inner.png) - -#### 8. 多媒体文件预览 -理论上支持所有的视频、音频文件,由于无法枚举所有文件格式,默认开启的类型如下 -mp3,wav,mp4,flv -视频预览效果如下 -![多媒体文件预览1](https://kkview.cn/img/preview/preview-video.png) -音频预览效果如下 -![多媒体文件预览2](https://kkview.cn/img/preview/preview-audio.png) - -#### 9. CAD文档预览 -支持CAD dwg文档预览,和word文档一样,有两种预览模式 -图片预览模式预览效果如下 -![cad文档预览1](https://kkview.cn/img/preview/preview-cad-image.png) -pdf预览模式预览效果如下 -![cad文档预览2](https://kkview.cn/img/preview/preview-cad-pdf.png) -考虑说明篇幅原因,就不贴其他格式文件的预览效果了,感兴趣的可以参考下面的实例搭建下 - -#### 10. Excel文件纯前端渲染效果 - -![Excel文件纯前端渲染效果](https://kkview.cn/img/preview/preview-xlsx-web.png) - -#### 11. 流程图bpmn文件预览效果 - -![流程图bpmn文件预览效果](https://kkview.cn/img/preview/preview-bpmn.png) - -#### 12. 3D模型文件预览效果: - -![3D模型文件预览效果](https://kkview.cn/img/preview/preview-3ds.png) - -#### 13. dcm医疗数位影像文件预览效果: - -![dcm医疗数位影像文件预览效果](https://kkview.cn/img/preview/preview-dcm.png) - -#### 14. drawio流程图预览效果: - -![dcdrawio流程图预览效果](https://kkview.cn/img/preview/preview-drawio.png) - -### 快速开始 -> 项目使用技术 -- spring boot: [spring boot开发参考指南](http://www.kailing.pub/PdfReader/web/viewer.html?file=springboot) -- freemarker -- redisson -- jodconverter - -> 依赖外部环境 -- redis (可选,默认不用) -- OpenOffice 或者 LibreOffice( Windows 下已内置,Linux 脚本启动模式会自动安装,Mac OS 下需要手动安装) - -1. 第一步:pull 项目 https://github.com/kekingcn/file-online-preview.git - -3. 第二步:运行 ServerMain 的 main 方法,服务启动后,访问 http://localhost:8012/ -会看到如下界面,代表服务启动成功 - -![输入图片说明](https://gitee.com/uploads/images/2017/1213/100221_ea15202e_492218.png "屏幕截图.png") - -### 关于引用 -ofd 引用于 [ofdview ](https://gitee.com/cnofd/ofdview ) 开源协议 Apache-2.0 -CAD 引用于 aspose-cad 测试版本 商用请自行购买 -xmind 引用于 [ xmind-embed-viewer](https://github.com/xmindltd/xmind-embed-viewer) 开源协议 MIT -epub 引用于 [ epub.js](https://github.com/futurepress/epub.js) 开源协议 BSD许可证 -压缩包 引用于 [sevenzipjbinding](https://github.com/borisbrodski/sevenzipjbinding )开源协议LGPL -3D 引用于 [Online3DViewer](https://github.com/kovacsv/Online3DViewer )开源协议MIT -drawio 引用于 [drawio](https://github.com/jgraph/drawio )开源协议 Apache-2.0 -bpmn流程图 引用于 [bpmn-js](https://github.com/bpmn-io/bpmn-js ) 自定义协议 保留水印 具体自行查看 -dcm医疗数位影像 引用于 [dcmjs](https://github.com/dcmjs-org/dcmjs )开源协议MIT - -### 使用登记 -如果这个项目解决了你的实际问题,可在 https://gitee.com/kekingcn/file-online-preview/issues/IGSBV -登记下,如果节省了你的三方预览服务费用,也愿意支持下的话,可点击下方【捐助】请作者喝杯咖啡,也是非常感谢 - -### Stars - -#### GitHub - -[![Stargazers over time](https://starchart.cc/kekingcn/kkFileView.svg)](https://starchart.cc/kekingcn/kkFileView) - -### 鸣谢 -- 本项目诞生于[凯京集团],在取得公司高层同意后以 Apache 协议开源出来反哺社区,在此特别感谢凯京集团,以及集团领导[@唐老大](https://github.com/tangshd)的支持、@端木详笑的贡献。 -- 本项目已脱离公司由[KK开源社区]维护发展壮大,感谢所有给 kkFileView 提 Issue 、Pr 开发者 -- 本项目引入的第三方组件已在 '关于引用' 列表列出,感谢这些项目,让 kkFileView 更出色 diff --git a/apps/kkfileview/data.yml b/apps/kkfileview/data.yml deleted file mode 100644 index 31f21459..00000000 --- a/apps/kkfileview/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: kkFileView -tags: - - 工具 -title: 一款文件文档在线预览解决方案 -description: 一款文件文档在线预览解决方案 -additionalProperties: - key: kkfileview - name: kkFileView - tags: - - Tool - shortDescZh: 一款文件文档在线预览解决方案 - shortDescEn: A online preview solution for documents - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://kkview.cn/zh-cn/index.html - github: https://github.com/kekingcn/kkFileView - document: https://kkfileview.keking.cn/zh-cn/docs/home.html diff --git a/apps/kkfileview/latest/.env.sample b/apps/kkfileview/latest/.env.sample deleted file mode 100644 index b5493d0d..00000000 --- a/apps/kkfileview/latest/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="kkfileview" -PANEL_APP_PORT_HTTP="40145" diff --git a/apps/kkfileview/latest/data.yml b/apps/kkfileview/latest/data.yml deleted file mode 100644 index f3a812d6..00000000 --- a/apps/kkfileview/latest/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40145 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/kkfileview/latest/docker-compose.yml b/apps/kkfileview/latest/docker-compose.yml deleted file mode 100644 index d9553f30..00000000 --- a/apps/kkfileview/latest/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -services: - kkfileview: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8012" - image: keking/kkfileview:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/kkfileview/logo.png b/apps/kkfileview/logo.png deleted file mode 100644 index e12e7f78f43e120315d2021bd06a2bb5d8e1e624..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5959 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 JtK_Z2{~z^!Vg&#I diff --git a/apps/koodo-reader/README.md b/apps/koodo-reader/README.md deleted file mode 100644 index 4842fe5a..00000000 --- a/apps/koodo-reader/README.md +++ /dev/null @@ -1,136 +0,0 @@ -
- -简体中文 | [Português](https://github.com/troyeguo/koodo-reader/blob/master/README_pt.md) | [English](https://github.com/troyeguo/koodo-reader/blob/master/README.md) - -
- -
- -
- -

- Koodo Reader -

- -

- 一个跨平台的电子书阅读器 -

- -
- -[下载客户端](https://koodo.960960.xyz/zh) | [在线预览](https://reader.960960.xyz) | [开发计划](https://troyeguo.notion.site/215baeda57804fd29dbb0e91d1e6a021?v=360c00183d944b598668f34c255edfd7) | [帮助文档](https://troyeguo.notion.site/Koodo-Reader-0c9c7ccdc5104a54825dfc72f1c84bea) - -
- - -## 特色 - -- 支持阅读格式: - - EPUB (**.epub**) - - 扫描文档 (**.pdf**) - - Kindle (**.azw3**, **.mobi**, **.azw**) - - 纯文本 (**.txt**) - - 漫画 (**.cbr**, **.cbz**, **.cbt**, **.cb7**) - - 富文本 (**.md**, **.docx**) - - FB2 (**.fb2**) - - 超文本 (**.html**, **.xml**, **.xhtml**, **.mhtml**, **.htm**, **.htm**) -- 支持 **Windows**,**macOS**,**Linux** 和 **网页版** -- 备份数据到 **Dropbox** 和 **Webdav** -- 自定义源文件夹,利用 OneDrive、百度网盘、iCloud、Dropbox 等进行多设备同步 -- 双页模式,单页模式,滚动模式 -- 听书功能,翻译功能,触控屏支持,批量导入图书 -- 支持目录,书签,笔记,高亮,书架,标签 -- 自定义字体,字体大小,行间距,段落间距,阅读背景色,文字颜色,屏幕亮度,文字下划线、斜体、文字阴影、字体粗细 -- 黑夜模式和主题色设置 - -## 使用方法 - -- 桌面端: - - 稳定版 (推荐下载):[官网](https://koodo.960960.xyz/zh)(感谢 [@Stille](https://www.ioiox.com/donate.html) 提供下载加速服务) - - 开发版:[Github Release](https://github.com/troyeguo/koodo-reader/releases/latest) (包含新功能和 bug 修复,但也可能引入更多未知 bug) -- 网页版:[前往](https://reader.960960.xyz) -- 使用 Scoop 安装: - -```shell -scoop bucket add extras -scoop install dorado/koodo-reader -``` - -- 使用 Winget 安装: - -```shell -winget install -e AppbyTroye.KoodoReader -``` - -- 使用 Homebrew 安装: - -```shell -brew install --cask koodo-reader -``` - -- 使用 Docker 安装: - -```bash -docker-compose up -d -``` - -- 使用 Flathub 安装: - -```shell -flatpak install flathub io.github.troyeguo.koodo-reader -flatpak run io.github.troyeguo.koodo-reader -``` - -Download on Flathub - -## 预览 - -
- - -
- -## 截图 - -
- 列表模式 - - 封面模式 - - 阅读菜单 - - 备份和恢复 - - 黑夜模式和主题色 - - 笔记管理 - -
- -## 运行源码 - -请确保您电脑已配置好 yarn,git 的运行环境。 - -1. 将项目源码下载到本地 - - ``` - git clone https://github.com/troyeguo/koodo-reader.git - ``` - -2. cd 到项目文件夹,运行以下代码进入客户端模式 - - ``` - yarn - yarn dev - ``` - -3. 运行以下代码进入网页模式 - - ``` - yarn - yarn start - ``` - -## 贡献翻译 - -您可以通过 Koodo Reader 的[在线翻译工具](https://poeditor.com/join/project?hash=fk4qbQTlsk),完善现有翻译,也可以添加新的语言。 \ No newline at end of file diff --git a/apps/koodo-reader/data.yml b/apps/koodo-reader/data.yml deleted file mode 100644 index 6fb07e61..00000000 --- a/apps/koodo-reader/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Koodo Reader -tags: - - 多媒体 -title: 一个跨平台的电子书阅读器 -description: 一个跨平台的电子书阅读器 -additionalProperties: - key: koodo-reader - name: Koodo Reader - tags: - - Media - shortDescZh: 一个跨平台的电子书阅读器 - shortDescEn: A cross-platform ebook reader - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://koodo.960960.xyz - github: https://github.com/troyeguo/koodo-reader - document: https://troyeguo.notion.site/Koodo-Reader-0c9c7ccdc5104a54825dfc72f1c84bea diff --git a/apps/koodo-reader/latest/.env.sample b/apps/koodo-reader/latest/.env.sample deleted file mode 100644 index 6f23c245..00000000 --- a/apps/koodo-reader/latest/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="koodo-reader" -PANEL_APP_PORT_HTTP="40146" diff --git a/apps/koodo-reader/latest/data.yml b/apps/koodo-reader/latest/data.yml deleted file mode 100644 index f399b274..00000000 --- a/apps/koodo-reader/latest/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40146 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/koodo-reader/latest/docker-compose.yml b/apps/koodo-reader/latest/docker-compose.yml deleted file mode 100644 index edf35f2a..00000000 --- a/apps/koodo-reader/latest/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -services: - koodo-reader: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - image: liwangsheng/koodo-reader:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/koodo-reader/logo.png b/apps/koodo-reader/logo.png deleted file mode 100644 index ae34559cae985cdfb4609c20258a097ef060717f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8819 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 diff --git a/apps/linux-command/1.21.0/.env.sample b/apps/linux-command/1.21.0/.env.sample deleted file mode 100644 index 6a614e6f..00000000 --- a/apps/linux-command/1.21.0/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="linux-command" -PANEL_APP_PORT_HTTP="40255" diff --git a/apps/linux-command/1.21.0/data.yml b/apps/linux-command/1.21.0/data.yml deleted file mode 100644 index 2d666043..00000000 --- a/apps/linux-command/1.21.0/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40255 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/linux-command/1.21.0/docker-compose.yml b/apps/linux-command/1.21.0/docker-compose.yml deleted file mode 100644 index 4f999c87..00000000 --- a/apps/linux-command/1.21.0/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -services: - linux-command: - image: "wcjiang/linux-command:1.21.0" - container_name: ${CONTAINER_NAME} - restart: always - ports: - - "${PANEL_APP_PORT_HTTP}:3000" - networks: - - 1panel-network - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/linux-command/README.md b/apps/linux-command/README.md deleted file mode 100644 index a5e4ac68..00000000 --- a/apps/linux-command/README.md +++ /dev/null @@ -1,16 +0,0 @@ -

- - - -

Linux Command

-

- -[![Buy me a coffee](https://img.shields.io/badge/Buy%20me%20a%20coffee-048754?logo=buymeacoffee)](https://jaywcjlove.github.io/#/sponsor) -[![CI](https://github.com/jaywcjlove/linux-command/actions/workflows/ci.yml/badge.svg)](https://github.com/jaywcjlove/linux-command/actions/workflows/ci.yml) -[![Web](https://jaywcjlove.github.io/sb/ico/linux.svg)](https://jaywcjlove.github.io/linux-command/) -[![weibo](https://jaywcjlove.github.io/sb/ico/weibo.svg)](http://weibo.com/pc175) -[![NPM Download](https://img.shields.io/npm/dm/linux-command.svg?style=flat)](https://www.npmjs.com/package/linux-command) -[![jsdelivr cdn](https://data.jsdelivr.com/v1/package/npm/linux-command/badge)](https://www.jsdelivr.com/package/npm/linux-command) -[![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/wcjiang/linux-command?logo=docker)](https://hub.docker.com/r/wcjiang/linux-command) - -当前仓库搜集了 580 多个 Linux 命令,是一个非盈利性的仓库,生成了一个 web 网站方便使用,目前网站没有任何广告,内容包含 Linux 命令手册、详解、学习,内容来自网络和网友的补充,非常值得收藏的 Linux 命令速查手册。版权归属原作者,对任何法律问题及风险不承担任何责任,没有任何商业目的,如果认为侵犯了您的版权,请来信告知。我不能完全保证内容的正确性。通过使用本站内容带来的风险与我无关。当使用本站时,代表您已接受了本站的使用条款和隐私条款。 diff --git a/apps/linux-command/data.yml b/apps/linux-command/data.yml deleted file mode 100644 index bd1c3603..00000000 --- a/apps/linux-command/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Linux Command -tags: - - 开发工具 -title: Linux 命令大全搜索工具 -description: Linux 命令大全搜索工具 -additionalProperties: - key: linux-command - name: Linux Command - tags: - - DevTool - shortDescZh: Linux 命令大全搜索工具 - shortDescEn: Comprehensive Linux command search tool - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://git.io/linux - github: https://github.com/jaywcjlove/linux-command - document: https://github.com/jaywcjlove/linux-command diff --git a/apps/linux-command/latest/.env.sample b/apps/linux-command/latest/.env.sample deleted file mode 100644 index 6a614e6f..00000000 --- a/apps/linux-command/latest/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="linux-command" -PANEL_APP_PORT_HTTP="40255" diff --git a/apps/linux-command/latest/data.yml b/apps/linux-command/latest/data.yml deleted file mode 100644 index 2d666043..00000000 --- a/apps/linux-command/latest/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40255 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/linux-command/latest/docker-compose.yml b/apps/linux-command/latest/docker-compose.yml deleted file mode 100644 index fdaf7d4d..00000000 --- a/apps/linux-command/latest/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -services: - linux-command: - image: "wcjiang/linux-command:latest" - container_name: ${CONTAINER_NAME} - restart: always - ports: - - "${PANEL_APP_PORT_HTTP}:3000" - networks: - - 1panel-network - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/linux-command/logo.png b/apps/linux-command/logo.png deleted file mode 100644 index d1492dc2de6f64cbf44400cfcc7723d8d6d1a136..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6575 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 - -

Lobe Chat

- -现代化设计的开源 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 diff --git a/apps/lobe-chat/data.yml b/apps/lobe-chat/data.yml deleted file mode 100644 index 7089c526..00000000 --- a/apps/lobe-chat/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: LobeChat -tags: - - AI / 大模型 -title: 现代化设计的开源 ChatGPT/LLMs 聊天应用与开发框架 -description: 现代化设计的开源 ChatGPT/LLMs 聊天应用与开发框架 -additionalProperties: - key: lobe-chat - name: LobeChat - tags: - - AI - shortDescZh: 现代化设计的开源 ChatGPT/LLMs 聊天应用与开发框架 - shortDescEn: An open-source, modern-design ChatGPT/LLMs UI/Framework - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://lobehub.com - github: https://github.com/lobehub/lobe-chat - document: https://lobehub.com/docs diff --git a/apps/lobe-chat/latest/.env.sample b/apps/lobe-chat/latest/.env.sample deleted file mode 100644 index 03cf13c0..00000000 --- a/apps/lobe-chat/latest/.env.sample +++ /dev/null @@ -1,6 +0,0 @@ -ACCESS_CODE="access_password" -CONTAINER_NAME="lobe-chat" -OPENAI_API_KEY="sk-xxx" -OPENAI_MODEL_LIST="" -OPENAI_PROXY_URL="https://api.openai.com/v1" -PANEL_APP_PORT_HTTP="40247" diff --git a/apps/lobe-chat/latest/data.yml b/apps/lobe-chat/latest/data.yml deleted file mode 100644 index 697fc82b..00000000 --- a/apps/lobe-chat/latest/data.yml +++ /dev/null @@ -1,40 +0,0 @@ -additionalProperties: - formFields: - - default: 40247 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "password" - edit: true - envKey: OPENAI_API_KEY - labelEn: OpenAI API Key - labelZh: OpenAI API 密钥 - required: false - type: password - - default: "https://api.openai.com/v1" - edit: true - envKey: OPENAI_PROXY_URL - labelEn: OpenAI Proxy URL - labelZh: OpenAI 代理 URL - required: false - type: text - - default: "" - edit: true - envKey: ACCESS_CODE - labelEn: Access Code - labelZh: 访问密码 - random: true - required: false - rule: paramComplexity - type: password - - default: "" - edit: true - envKey: OPENAI_MODEL_LIST - labelEn: OpenAI Model List - labelZh: OpenAI 模型列表 - required: false - type: text diff --git a/apps/lobe-chat/latest/docker-compose.yml b/apps/lobe-chat/latest/docker-compose.yml deleted file mode 100644 index 853b5699..00000000 --- a/apps/lobe-chat/latest/docker-compose.yml +++ /dev/null @@ -1,20 +0,0 @@ -services: - lobe-chat: - image: lobehub/lobe-chat:latest - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:3210" - environment: - - OPENAI_API_KEY=${OPENAI_API_KEY} - - OPENAI_PROXY_URL=${OPENAI_PROXY_URL} - - ACCESS_CODE=${ACCESS_CODE} - - OPENAI_MODEL_LIST=${OPENAI_MODEL_LIST} - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/lobe-chat/logo.png b/apps/lobe-chat/logo.png deleted file mode 100644 index 531bae6aa3d59c2db8e2884c19f7982ebb3e57ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9050 zcmV-gBcr5qc0#jn*4=74l1S<9h)vyVKYj3T!jr|ITIAklIHO(au4~=m zfMwccGKuYb{O#iX@#X!#bSVoq{ltC$^yvJ%eDjNM`mbd?6%a@@0QOwC8g@=8vBAkY@Y2p!lR*_nTJ!zNh!8ocz3L zLm&$BhHdzvPB9G`?}0S*gdLR`8}p!=^_E2Kn4Cs4TkUu@<7YejwzI@viSmp(EDb3~ zDg$wFs@`EO`{mVBN~ZRnY5&$%+k>O}xsv#BWbtaYm-GaabQND;DeRQFh%X1!QXs{1{Ljs=S_t#Mht5?0s7Cps#d(!Q7Iun{~u#QKf-vy!4fEtcS`> zMwr%)z44cj=tC-PXoJ=PyO3nG!ECLGU8e5a&&gnIQ#W2; z>qUx=$g6y&jES-Rn~lM%pj;%X`Bza`+(46BqVBGskxPekt>NX+#8geKV@|eIvp}LI zBd(N<)4j8kcC$@ElW!@~SH?nAH796IG<;x9KOjRrDgd5!th6T;zglsQbZV?bNXIY~ zUr~2iKyX`EgN1{voPUC4NnX;PlAW=leRGH40000ubW%=J02BWH{{A;3{`-e#>vU2? z{nxXjnc!gdf5O8#_Eh7}>CWxm{hjHqq_=Kn+t`ZAwwQubv4DVlu*14|001A|Nkll*v=0KX!P~EQxJfTU&T>Z0z>_oa%N4e2(#P&7uv*@|&Waem6j$waBR<_k@b#Oict<)5pnYp!KFjx-;9|u9j zF{s$jQ1*o7xPyzJUTD_x>8uI9KS+z=^$Mv?HvY1Knq4zqg|Qp@DxKvRC8wtsuuI5A<@ei7N{WOBu{!xB4wA zn4?%k7SyaV`;fd;;^od4U(akwP4$7@{E|1on!J^P>9V)Hdmdt`7DD> zySHDxf4{rC`yOof^iK^2T>!J$4jQc2D==@yKo(*&&0Qnxwr=r|^!pVW?ZJtt#7a$Q zh|A z-y^s(?^AQpKx13`hl++-s*hZ?BanfZ$mOyymtI$|Mo_a3a13e0Vho47*hJ&RW;L=T z;EyT-ihsOHk!pnwXriDqT(m-;89!3ZPAij*a=Co7jwxMTy|q$}fef)sDwb+UcDPwA z6sYZ5t=sKxA_QLo94V1m#zZ5ut6gF`rnqQ{-hH(_3pp3H{z zBCuDH*i~jn1UekXyy&{A#)4t@ax$6RKnShWYak

nSwnXlRFrYL;Y}LolQ0tKo18 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 M07*qoM6N<$g5xbKN&o-= diff --git a/apps/lsky-pro/README.md b/apps/lsky-pro/README.md deleted file mode 100644 index 601ccabb..00000000 --- a/apps/lsky-pro/README.md +++ /dev/null @@ -1,98 +0,0 @@ -Lsky Pro Logo - -

Lsky Pro

- -☁ Your photo album on the cloud. - -[![PHP](https://img.shields.io/badge/PHP->=8.0-orange.svg)](http://php.net) -[![Release](https://img.shields.io/github/v/release/lsky-org/lsky-pro)](https://github.com/lsky-org/lsky-pro/releases) -[![Issues](https://img.shields.io/github/issues/lsky-org/lsky-pro)](https://github.com/lsky-org/lsky-pro/issues) -[![Code size](https://img.shields.io/github/languages/code-size/lsky-org/lsky-pro?color=blueviolet)](https://github.com/lsky-org/lsky-pro) -[![Repo size](https://img.shields.io/github/repo-size/lsky-org/lsky-pro?color=eb56fd)](https://github.com/lsky-org/lsky-pro) -[![Last commit](https://img.shields.io/github/last-commit/lsky-org/lsky-pro/dev)](https://github.com/lsky-org/lsky-pro/commits/dev) -[![License](https://img.shields.io/badge/license-GPL_V3.0-yellowgreen.svg)](https://github.com/lsky-org/lsky-pro/blob/master/LICENSE) - -[官网](https://www.lsky.pro) · -[文档](https://docs.lsky.pro) · -[社区](https://github.com/lsky-org/lsky-pro/discussions) · -[演示](https://pic.vv1234.cn) · -[Telegram 群组](https://t.me/lsky_pro) - -> master 分支为未安装三方拓展的版本,通常包含了最新未发布版本的一些实验性新特性和修复补丁,正式版本请点击 [这里](https://github.com/lsky-org/lsky-pro/releases) 下载。 -> 发现 bug 请提交 [issues](https://github.com/lsky-org/lsky-pro/issues) (提问前建议阅读[提问的智慧](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md)) -> 有任何想法、建议、或分享,请移步 [社区](https://github.com/lsky-org/lsky-pro/discussions) - -![看不见图片请使用科学上网](https://user-images.githubusercontent.com/22728201/157242302-bfbd04a0-fb30-4241-800e-cc2b1dad9b19.png) -![看不见图片请使用科学上网](https://user-images.githubusercontent.com/22728201/157242314-5716d578-fee5-4083-8d91-0d98cb2545d9.png) - -### 📌 TODO -* [x] 支持`本地`等多种第三方云储存 `AWS S3`、`阿里云 OSS`、`腾讯云 COS`、`七牛云`、`又拍云`、`SFTP`、`FTP`、`WebDav`、`Minio` -* [x] 多种数据库驱动支持,`MySQL 5.7+`、`PostgreSQL 9.6+`、`SQLite 3.8.8+`、`SQL Server 2017+` -* [x] 支持配置使用多种缓存驱动,`Memcached`、`Redis`、`DynamoDB`、等其他关系型数据库,默认以文件的方式缓存 -* [x] 多图上传、拖拽上传、粘贴上传、动态设置策略上传、复制、一键复制链接 -* [x] 强大的图片管理功能,瀑布流展示,支持鼠标右键、单选多选、重命名等操作 -* [x] 自由度极高的角色组配置,可以为每个组配置多个储存策略,同时储存策略可以配置多个角色组 -* [x] 可针对角色组设置上传文件、文件夹路径命名规则、上传频率限制、图片审核等功能 -* [x] 支持图片水印、文字水印、水印平铺、设置水印位置、X/y 轴偏移量设置、旋转角度等 -* [x] 支持通过接口上传、管理图片、管理相册 -* [x] 支持在线增量更新、跨版本更新 -* [x] 图片广场 - -### 🛠 安装要求 -- PHP >= 8.0.2 -- BCMath PHP 扩展 -- Ctype PHP 扩展 -- DOM PHP 拓展 -- Fileinfo PHP 扩展 -- JSON PHP 扩展 -- Mbstring PHP 扩展 -- OpenSSL PHP 扩展 -- PDO PHP 扩展 -- Tokenizer PHP 扩展 -- XML PHP 扩展 -- Imagick 拓展 -- exec、shell_exec 函数 -- readlink、symlink 函数 -- putenv、getenv 函数 -- chmod、chown、fileperms 函数 - -### 😋 鸣谢 -- [Laravel](https://laravel.com) -- [Tailwindcss](https://tailwindcss.com) -- [Fontawesome](https://fontawesome.com) -- [Echarts](https://echarts.apache.org) -- [Intervention/image](https://github.com/Intervention/image) -- [league/flysystem](https://flysystem.thephpleague.com) -- [overtrue](https://github.com/overtrue) -- [Jquery](https://jquery.com) -- [jQuery-File-Upload](https://github.com/blueimp/jQuery-File-Upload) -- [Alpinejs](https://alpinejs.dev/) -- [Viewer.js](https://github.com/fengyuanchen/viewerjs) -- [DragSelect](https://github.com/ThibaultJanBeyer/DragSelect) -- [Justified-Gallery](https://github.com/miromannino/Justified-Gallery) -- [Clipboard.js](https://github.com/zenorocha/clipboard.js) - -### 💰 捐赠 -Lsky Pro 的开发和更新等,都是作者在业余时间独立开发,并免费开源使用,如果您认可我的作品,并且觉得对你有所帮助我愿意接受来自各方面的捐赠😃。 - - - - - - - - - -
支付宝微信
看不见图片请使用科学上网看不见图片请使用科学上网
- -### 🤩 Stargazers over time -[![Stargazers over time](https://starchart.cc/lsky-org/lsky-pro.svg)](https://starchart.cc/lsky-org/lsky-pro) - -### 📧 联系我 -- Email: i@wispx.cn - -### 📃 开源许可 -[GPL 3.0](https://opensource.org/licenses/GPL-3.0) - -Copyright (c) 2018-present Lsky Pro. - diff --git a/apps/lsky-pro/data.yml b/apps/lsky-pro/data.yml deleted file mode 100644 index b4ab85cf..00000000 --- a/apps/lsky-pro/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: 兰空图床 Lsky-pro -tags: - - 工具 -title: Lsky Pro 是一个用于在线上传、管理图片的图床程序 -description: Lsky Pro 是一个用于在线上传、管理图片的图床程序 -additionalProperties: - key: lsky-pro - name: 兰空图床 Lsky-pro - tags: - - Tool - shortDescZh: Lsky Pro 是一个用于在线上传、管理图片的图床程序 - shortDescEn: Lsky Pro is an image bed program for uploading and managing images online - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://hub.docker.com/r/halcyonazure/lsky-pro-docker - github: https://github.com/lsky-org/lsky-pro - document: https://docs.lsky.pro/ diff --git a/apps/lsky-pro/latest/.env.sample b/apps/lsky-pro/latest/.env.sample deleted file mode 100644 index f49247e4..00000000 --- a/apps/lsky-pro/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="lskypro" -PANEL_APP_PORT_HTTP="40027" -DATA_PATH="./data" \ No newline at end of file diff --git a/apps/lsky-pro/latest/data.yml b/apps/lsky-pro/latest/data.yml deleted file mode 100644 index 8ab76730..00000000 --- a/apps/lsky-pro/latest/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40027 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/lsky-pro/latest/docker-compose.yml b/apps/lsky-pro/latest/docker-compose.yml deleted file mode 100644 index 84a0813d..00000000 --- a/apps/lsky-pro/latest/docker-compose.yml +++ /dev/null @@ -1,19 +0,0 @@ -services: - lskypro: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - volumes: - - "${DATA_PATH}:/var/www/html/" - ports: - - "${PANEL_APP_PORT_HTTP}:8089" - environment: - - "WEB_PORT=8089" - image: halcyonazure/lsky-pro-docker:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/lsky-pro/logo.png b/apps/lsky-pro/logo.png deleted file mode 100644 index 6c4c87ef92291738027b68af134f313425281f9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4317 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 Composable all-in-one mail server. - -Maddy Mail Server implements all functionality required to run a e-mail -server. It can send messages via SMTP (works as MTA), accept messages via SMTP -(works as MX) and store messages while providing access to them via IMAP. -In addition to that it implements auxiliary protocols that are mandatory -to keep email reasonably secure (DKIM, SPF, DMARC, DANE, MTA-STS). - -It replaces Postfix, Dovecot, OpenDKIM, OpenSPF, OpenDMARC and more with one -daemon with uniform configuration and minimal maintenance cost. - -**Note:** IMAP storage is "beta". If you are looking for stable and -feature-packed implementation you may want to use Dovecot instead. maddy still -can handle message delivery business. - -[![CI status](https://img.shields.io/github/workflow/status/foxcpp/maddy/Testing%20and%20release%20preparation?style=flat-square)](https://github.com/foxcpp/maddy/actions/workflows/cicd.yml) -[![Issues tracker](https://img.shields.io/github/issues/foxcpp/maddy)](https://github.com/foxcpp/maddy) - -* [Setup tutorial](https://maddy.email/tutorials/setting-up/) -* [Documentation](https://maddy.email/) - -* [IRC channel](https://webchat.oftc.net/?channels=maddy&uio=MT11bmRlZmluZWQb1) -* [Mailing list](https://lists.sr.ht/~foxcpp/maddy) diff --git a/apps/maddy-mail/data.yml b/apps/maddy-mail/data.yml deleted file mode 100644 index c91835d0..00000000 --- a/apps/maddy-mail/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Maddy Mail Server -tags: - - 邮件服务 -title: 可组合的多合一邮件服务器 -description: 可组合的多合一邮件服务器 -additionalProperties: - key: maddy-mail - name: Maddy Mail Server - tags: - - Email - shortDescZh: 可组合的多合一邮件服务器 - shortDescEn: Composable all-in-one mail server - type: tool - crossVersionUpdate: true - limit: 1 - recommend: 0 - website: https://maddy.email - github: https://github.com/foxcpp/maddy - document: https://maddy.email diff --git a/apps/maddy-mail/latest/.env.sample b/apps/maddy-mail/latest/.env.sample deleted file mode 100644 index 80eea5a2..00000000 --- a/apps/maddy-mail/latest/.env.sample +++ /dev/null @@ -1,8 +0,0 @@ -CONTAINER_NAME="maddy-mail" -MAIL_DOMAIN="example.com" -MAIL_HOSTNAME="mail.example.com" -SMTP_IN_PORT="25" -IMAP4_PORT="143" -IMAP4_PORT2="993" -SMTP_S_PORT="465" -SMTP_S_PORT2="587" diff --git a/apps/maddy-mail/latest/data.yml b/apps/maddy-mail/latest/data.yml deleted file mode 100644 index 7778fa0f..00000000 --- a/apps/maddy-mail/latest/data.yml +++ /dev/null @@ -1,56 +0,0 @@ -additionalProperties: - formFields: - - default: 25 - disabled: true - envKey: SMTP_IN_PORT - labelEn: SMTP inbound port - labelZh: SMTP 入站端口 - required: true - rule: paramPort - type: number - - default: 143 - disabled: true - envKey: IMAP4_PORT - labelEn: IMAP4 port - labelZh: IMAP4 端口 - required: true - rule: paramPort - type: number - - default: 993 - disabled: true - envKey: IMAP4_PORT2 - labelEn: IMAP4 port - labelZh: IMAP4 端口 - required: true - rule: paramPort - type: number - - default: 465 - disabled: true - envKey: SMTP_S_PORT - labelEn: SMTP Submission ports - labelZh: SMTP 提交端口 - required: true - rule: paramPort - type: number - - default: 587 - disabled: true - envKey: SMTP_S_PORT2 - labelEn: SMTP Submission ports - labelZh: SMTP 提交端口 - required: true - rule: paramPort - type: number - - default: mail.example.com - edit: true - envKey: MAIL_HOSTNAME - labelEn: Mail MX hostname - labelZh: 邮箱 MX 主机名 - required: true - type: text - - default: example.com - edit: true - envKey: MAIL_DOMAIN - labelEn: Mail domain - labelZh: 邮箱域名 - required: true - type: text diff --git a/apps/maddy-mail/latest/docker-compose.yml b/apps/maddy-mail/latest/docker-compose.yml deleted file mode 100644 index b629ee99..00000000 --- a/apps/maddy-mail/latest/docker-compose.yml +++ /dev/null @@ -1,28 +0,0 @@ -services: - maddymail: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${SMTP_IN_PORT}:25" - - "${IMAP4_PORT}:143" - - "${SMTP_S_PORT}:465" - - "${SMTP_S_PORT2}:587" - - "${IMAP4_PORT2}:993" - volumes: - - maddydata:/data - environment: - - MADDY_HOSTNAME=${MAIL_HOSTNAME} - - MADDY_DOMAIN=${MAIL_DOMAIN} - image: foxcpp/maddy:latest - labels: - createdBy: "Apps" - -volumes: - maddydata: - external: true - -networks: - 1panel-network: - external: true diff --git a/apps/maddy-mail/logo.png b/apps/maddy-mail/logo.png deleted file mode 100644 index 1e1313c0a1730bc3a3a60879da88ea085ea9d65d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7045 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 diff --git a/apps/mcsmanager-daemon/3.4.0/.env.sample b/apps/mcsmanager-daemon/3.4.0/.env.sample deleted file mode 100644 index 775c2932..00000000 --- a/apps/mcsmanager-daemon/3.4.0/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="mcsmanager-daemon" -PANEL_APP_PORT_HTTP="40057" -DATA_PATH="./data" diff --git a/apps/mcsmanager-daemon/3.4.0/data.yml b/apps/mcsmanager-daemon/3.4.0/data.yml deleted file mode 100644 index 6112918d..00000000 --- a/apps/mcsmanager-daemon/3.4.0/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40057 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/mcsmanager-daemon/3.4.0/docker-compose.yml b/apps/mcsmanager-daemon/3.4.0/docker-compose.yml deleted file mode 100644 index e772124b..00000000 --- a/apps/mcsmanager-daemon/3.4.0/docker-compose.yml +++ /dev/null @@ -1,18 +0,0 @@ -services: - mcsm-daemon: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:24444" - volumes: - - "${DATA_PATH}:/opt/mcsmanager/daemon/data" - - /var/run/docker.sock:/var/run/docker.sock - image: alisaqaq/mcsmanager-daemon:3.4.0 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/mcsmanager-daemon/README.md b/apps/mcsmanager-daemon/README.md deleted file mode 100644 index 6e39d997..00000000 --- a/apps/mcsmanager-daemon/README.md +++ /dev/null @@ -1,244 +0,0 @@ -MCSManagerLogo.png - -
- -[![Status](https://img.shields.io/badge/npm-v6.14.15-blue.svg)](https://www.npmjs.com/) -[![Status](https://img.shields.io/badge/node-v14.17.6-blue.svg)](https://nodejs.org/en/download/) -[![Status](https://img.shields.io/badge/License-Apache%202.0-red.svg)](https://github.com/MCSManager) - -[官方网站](http://mcsmanager.com/) | [使用文档](https://docs.mcsmanager.com/) | [团队主页](https://github.com/MCSManager) | [面板端项目](https://github.com/MCSManager/MCSManager) | [网页前端项目](https://github.com/MCSManager/UI) | [守护进程项目](https://github.com/MCSManager/Daemon) - - -中文 QQ 群:https://jq.qq.com/?_wv=1027&k=Pgl9ScGw - -中文 TG 群:https://t.me/MCSManager_dev - -爱发电赞助:https://afdian.net/a/mcsmanager - -
- -## 这是什么? - - -MCSManager 面板(简称:MCSM 面板)是一款开源,分布式,轻量级,快速部署,支持大部分游戏服务端和控制台程序的管理面板 - -
- -## 软件特性 - -软件在 Minecraft 和其他游戏社区内中已有一定的流行程度,它可以帮助你集中管理多个物理服务器,动态在任何主机上创建游戏服务端,并且提供安全可靠的多用户权限系统,可以很轻松的帮助你管理多个服务器,一直在为 Minecraft,Terraria,Steam 游戏服务器管理员,运维人员和个人开发者提供健康的软件支持。 - - -![截图.png](https://public-link.oss-cn-shenzhen.aliyuncs.com/mcsm_picture/MCSM9.png) - -![Screenshot.png](https://mcsmanager.com/main2.png) - -QQ20221207-174328@2x - - -
- -## 运行环境 - -控制面板可运行在 Windows 与 Linux 平台,无需数据库与任何系统配置,只需安装 node 环境即可快速运行,属于轻量级的 Minecraft 服务端控制面板。 - -必须 `Node 14.17.0` 以上,无需数据库和更改任何系统配置,开箱即可运行。 - -
- -## 配置/数据文件 - -配置文件: `data/SystemConfig/config.json` - -用户数据文件:`data/User/*.json` - -远程守护进程配置:`data/RemoteServiceConfig/*.json` - -
- -## 软件文档 - -地址:[https://docs.mcsmanager.com/](https://docs.mcsmanager.com/) - -
- -## 安装 - -### Windows - -对于 Windows 系统,**已整合成直接运行版本,下载即可运行**(使用管理员权限运行): - -前往:[https://mcsmanager.com/](https://mcsmanager.com/) - -
- - -### Linux - -**一行命令快速安装** - -```bash -// 国内用户专用 gitee 加速源 -wget -qO- https://gitee.com/mcsmanager/script/raw/master/setup_cn.sh | bash - -// 或原始源(科学上网) -wget -qO- https://raw.githubusercontent.com/mcsmanager/Script/master/setup.sh | bash -``` - -- 脚本仅适用于 AMD64 架构 Ubuntu/Centos/Debian/Archlinux。 -- 执行完成后,使用 `systemctl start mcsm-{web,daemon}` 即可启动面板服务。 -- 面板代码与运行环境自动安装在 `/opt/mcsmanager/` 目录下。 - -
- -**Linux 手动安装** - -- 若一键安装不起作用,则可以尝试此步骤手动安装。 - -```bash -# 切换到安装目录。如果不存在,请提前用'mkdir /opt/'创建它。 -cd /opt/ -# 下载运行时环境(Node.js)。如果你已经安装了Node.js 14+,请忽略此步骤。 -wget https://nodejs.org/dist/v14.17.6/node-v14.17.6-linux-x64.tar.gz -# 解压档案 -tar -zxvf node-v14.17.6-linux-x64.tar.gz -# 添加程序到系统环境变量 -ln -s /opt/node-v14.17.6-linux-x64/bin/node /usr/bin/node -ln -s /opt/node-v14.17.6-linux-x64/bin/npm /usr/bin/npm - -# 准备好安装目录 -mkdir /opt/mcsmanager/ -cd /opt/mcsmanager/ - -# 下载MCSManager -wget https://github.com/MCSManager/MCSManager/releases/latest/download/mcsmanager_linux_release.tar.gz -tar -zxf mcsmanager_linux_release.tar.gz - -# 安装依赖库 -./install-dependency.sh - -# 请打开两个终端或屏幕 - -# 先启动守护程序 -./start-daemon.sh - -# 启动网络服务(在第二个终端) -./start-web.sh - -# 为网络界面访问http://localhost:23333/ -# 一般来说,网络应用会自动扫描并连接到本地守护进程。 -``` - -- 注意,这种安装方式不会自动注册面板到系统服务(Service),所以必须使用 `screen` 软件来管理。 - -
- -## 更新版本 - -参考: https://github.com/MCSManager/MCSManager/wiki/Update-MCSManager - -> 如果你不是特别需要新版本的功能,或者不是为了修复安全隐患,那就不建议更新。 - -
- -## 项目体系 - -整个软件运行需要三个项目的互相配合才可运行,您普通安装的代码是编译再整合后的产物。 - -[**控制面板端**](https://github.com/MCSManager/MCSManager) - -- 角色:控制中心 -- 责任:负责提供网页前端的后端接口,提供 API 接口,用户数据管理和对守护进程进行通信和授权。 - -[**网页前端**](https://github.com/MCSManager/UI) - -- 角色:控制中心的用户交互界面 -- 责任:以网页形式展示数据,发送请求,并且拥有与守护进程通信的能力,此项目最终产物是纯静态文件。 - -[**守护进程**](https://github.com/MCSManager/Daemon) - -- 角色:被控端 -- 责任:控制本地主机的所有实例,真实进程的实际管理者,拥有与任何对象的通信能力。 - -
- -## 搭建开发环境 - -此段落面向开发人员,普通用户无需关注也无需执行。 - -所有项目全部以开发环境运行后,便可以进行开发与预览,请务必遵循开源协议。 - -**控制面板端(MCSManager)** - -```bash -git clone https://github.com/MCSManager/MCSManager.git -cd MCSManager -npm install -npm run start -# 默认将采用 ts-node 直接执行 Typescript 代码 -# 默认运行在 23333 端口 -``` - -**网页前端(UI)** - -```bash -git clone https://github.com/MCSManager/UI.git -cd UI -npm install -npm run serve -# 访问 http://localhost:8080/ 即可预览界面 -# 所有 API 请求将自动转发到 23333 端口 -``` - -**守护进程(Daemon)** - -```bash -git clone https://github.com/MCSManager/Daemon.git -cd Daemon -npm install -npm run start -# 运行后请在控制面板端连接本守护进程 -# 默认运行在 24444 端口 -``` - -
- -## 浏览器兼容性 - -- 支持 `Chrome` `Firefox` `Safari` `Opera` 等现代主流浏览器。 -- 已放弃支持 `IE` 浏览器。 - -
- -## 国际化 - -MCSManager 已支持中文,英文两种语言,已经实现国际化全面覆盖。 - -软件国际化由 [Lazy](https://github.com/LazyCreeper),[KevinLu2000](https://github.com/KevinLu2000),[zijiren233](https://github.com/zijiren233) 和 [Unitwk](https://github.com/unitwk) 共同完成 - -
- -## 贡献 - -如果你在使用过程中发现任何问题,可以 [提交 Issue](https://github.com/MCSManager/MCSManager/issues/new/choose) 或自行 Fork 修改后提交 Pull Request。 - -代码需要保持现有格式,不得格式化多余代码,具体可[参考这里](https://github.com/MCSManager/MCSManager/issues/544)。 - -
- -## 问题报告 - -欢迎发现的任何问题进行反馈,必当及时修复。 - -若发现严重安全漏洞又不便公开发布,请发送邮件至: mcsmanager-dev@outlook.com。 - -安全问题修复后将在代码中附加漏洞发现者姓名。 - -
- - -## 源代码协议 - -源代码遵循 Apache-2.0 协议。 - -版权所有 2022 MCSManager 开发团队。 diff --git a/apps/mcsmanager-daemon/data.yml b/apps/mcsmanager-daemon/data.yml deleted file mode 100644 index 2379495f..00000000 --- a/apps/mcsmanager-daemon/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: MCSManager Daemon -tags: - - 休闲游戏 -title: 支持大部分游戏服务端和控制台程序的管理面板(后端) -description: 支持大部分游戏服务端和控制台程序的管理面板(后端) -additionalProperties: - key: mcsmanager-daemon - name: MCSManager Daemon - tags: - - Game - shortDescZh: 支持大部分游戏服务端和控制台程序的管理面板(后端) - shortDescEn: Distributed, Docker-supported, Multilingual, and Lightweight control panel for Minecraft server and more (daemon) - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://hub.docker.com/r/alisaqaq/mcsmanager-web - github: https://github.com/MCSManager/MCSManager - document: https://docs.mcsmanager.com/ diff --git a/apps/mcsmanager-daemon/latest/.env.sample b/apps/mcsmanager-daemon/latest/.env.sample deleted file mode 100644 index 775c2932..00000000 --- a/apps/mcsmanager-daemon/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="mcsmanager-daemon" -PANEL_APP_PORT_HTTP="40057" -DATA_PATH="./data" diff --git a/apps/mcsmanager-daemon/latest/data.yml b/apps/mcsmanager-daemon/latest/data.yml deleted file mode 100644 index 6112918d..00000000 --- a/apps/mcsmanager-daemon/latest/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40057 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/mcsmanager-daemon/latest/docker-compose.yml b/apps/mcsmanager-daemon/latest/docker-compose.yml deleted file mode 100644 index 1c39f1ae..00000000 --- a/apps/mcsmanager-daemon/latest/docker-compose.yml +++ /dev/null @@ -1,18 +0,0 @@ -services: - mcsm-daemon: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:24444" - volumes: - - "${DATA_PATH}:/opt/mcsmanager/daemon/data" - - /var/run/docker.sock:/var/run/docker.sock - image: alisaqaq/mcsmanager-daemon:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/mcsmanager-daemon/logo.png b/apps/mcsmanager-daemon/logo.png deleted file mode 100644 index 948029be6c1366cf3c997ceda7cfa6e1f1d274b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2198 zcma)-`#%#77snUVW@c&DEVoEW?t9!fLs%$xr9#L;vlQQrJZ41hge7u|WTd_>p(MA+ zY@}Rs$z_DFrx2T5DgLQRvDvD|ooC#NFx2mctlCS>)cL8`n=p6oh zc4l@-@w1UeV9Wk|6vffj2_SE|l)me|_G0&cYyQt&g|gqX004+-Wq#&D$mrtbvEUgc zvApZ$O4BI-dFI~Uyt8~~0xj5m{W;0j>#fiP-lKD8Q$Y+26o@pD`=>Uw*Up}yPVt6$ z!^7(;vddA__8Gx3qh);R8~mI4cNH69IgO&UT|B!7w))CO6p{6=Al0nND_nvf9$pLR z9ww`gb>-B$P0oi_E{x^oR4)IjXKPeWrf&L!u0(v=uKm`y_%@uTftBUe`ZYPmvsXx@ zP!D#lYw2)Cl-ly|6`j+#{IwVCSd!DwHfO_>`8qIZAvQ*ALZBU-4N!&hge72#9|0|!ys6(6G?(7k#s0Y zGETW~tapk9DMa^$E+-q9V5USaNlMvtfM4^5SY=|s*FdSqAZ}a8cLit9Vj-?SM5qEj@(^8$?F@n^dlab+v*(_t*cBjU@DODR|80W><}Dj!!;D9d)C zRzGw9Pqpd`K>_Jr3|P?0^<@h+uX>#EXb|KYCft=@rOdivf*~A=mK&u)L2gIFezd<= zOQZ8+i}?;iO-M{h%fR98RSS1Ww%!IBakF46rH(l=d=R3^;aTS%WJugD1)nSA7zo+5 z6;0eVV89sXF$oWEncC|S=cj0JO{9EFRkm#B^j%G=KvZCGI|N8^ju+CsCNho0MR}Xl z182J%|C}u&pAgjo-NaLH_!Y z=;Sz=+ZJWsKe!bz?swQBWHgemb`+D{0GXqO%u&vL{M=D3^7D02k(gjUWp4+yaZA*K z*Q#j^@`G|CwT`C~psfK|5r+)GyH8XznI|qfT`=?-%$i;}x9W-sP)*7p;59dzgJ*#$ z!ALJk%H|)GEg)Gd|rj>giIugqg{y*L3yx2%*PlpL4&^fRhoP@i4x&ujeX z`bvM@YP7DJl_>lIJ}ptX6d7$Y+LG=MmH26AeVoCTyC01XGxkAP)le6LILJC=Oi7kW z#Z9e`pF}<+U7Xs|ZDVTmm$sn(aLqia*B0g#`b4s^&yRC(t9BBgaiVu&U_n;&gG5Gp zLaY0P!WP7iYOLsmZ`>L>Y63OZ2aWoVj1YdYzThl}N6IG=*puPhi{FO+718k_8J*IH8XVERr%iT|dHEgoS{}4* za5&J^t!=9D@)A0Q6gdi6^-HU$ZGbiXG}ULQS5!gCZsnt`rr@Gj8ueeM+I6O!*~d#@(UY z(0`{1`tXUAt8QM(V>@7@rChltUw(X`4nC7Qj@Q=`RQfu-r0J{w16JTaRXW zZlm3%%DrRC12+vDECNB|V3jdU - -
- -[![Status](https://img.shields.io/badge/npm-v6.14.15-blue.svg)](https://www.npmjs.com/) -[![Status](https://img.shields.io/badge/node-v14.17.6-blue.svg)](https://nodejs.org/en/download/) -[![Status](https://img.shields.io/badge/License-Apache%202.0-red.svg)](https://github.com/MCSManager) - -[官方网站](http://mcsmanager.com/) | [使用文档](https://docs.mcsmanager.com/) | [团队主页](https://github.com/MCSManager) | [面板端项目](https://github.com/MCSManager/MCSManager) | [网页前端项目](https://github.com/MCSManager/UI) | [守护进程项目](https://github.com/MCSManager/Daemon) - - -中文 QQ 群:https://jq.qq.com/?_wv=1027&k=Pgl9ScGw - -中文 TG 群:https://t.me/MCSManager_dev - -爱发电赞助:https://afdian.net/a/mcsmanager - -
- -## 这是什么? - - -MCSManager 面板(简称:MCSM 面板)是一款开源,分布式,轻量级,快速部署,支持大部分游戏服务端和控制台程序的管理面板 - -
- -## 软件特性 - -软件在 Minecraft 和其他游戏社区内中已有一定的流行程度,它可以帮助你集中管理多个物理服务器,动态在任何主机上创建游戏服务端,并且提供安全可靠的多用户权限系统,可以很轻松的帮助你管理多个服务器,一直在为 Minecraft,Terraria,Steam 游戏服务器管理员,运维人员和个人开发者提供健康的软件支持。 - - -![截图.png](https://public-link.oss-cn-shenzhen.aliyuncs.com/mcsm_picture/MCSM9.png) - -![Screenshot.png](https://mcsmanager.com/main2.png) - -QQ20221207-174328@2x - - -
- -## 运行环境 - -控制面板可运行在 Windows 与 Linux 平台,无需数据库与任何系统配置,只需安装 node 环境即可快速运行,属于轻量级的 Minecraft 服务端控制面板。 - -必须 `Node 14.17.0` 以上,无需数据库和更改任何系统配置,开箱即可运行。 - -
- -## 配置/数据文件 - -配置文件: `data/SystemConfig/config.json` - -用户数据文件:`data/User/*.json` - -远程守护进程配置:`data/RemoteServiceConfig/*.json` - -
- -## 软件文档 - -地址:[https://docs.mcsmanager.com/](https://docs.mcsmanager.com/) - -
- -## 安装 - -### Windows - -对于 Windows 系统,**已整合成直接运行版本,下载即可运行**(使用管理员权限运行): - -前往:[https://mcsmanager.com/](https://mcsmanager.com/) - -
- - -### Linux - -**一行命令快速安装** - -```bash -// 国内用户专用 gitee 加速源 -wget -qO- https://gitee.com/mcsmanager/script/raw/master/setup_cn.sh | bash - -// 或原始源(科学上网) -wget -qO- https://raw.githubusercontent.com/mcsmanager/Script/master/setup.sh | bash -``` - -- 脚本仅适用于 AMD64 架构 Ubuntu/Centos/Debian/Archlinux。 -- 执行完成后,使用 `systemctl start mcsm-{web,daemon}` 即可启动面板服务。 -- 面板代码与运行环境自动安装在 `/opt/mcsmanager/` 目录下。 - -
- -**Linux 手动安装** - -- 若一键安装不起作用,则可以尝试此步骤手动安装。 - -```bash -# 切换到安装目录。如果不存在,请提前用'mkdir /opt/'创建它。 -cd /opt/ -# 下载运行时环境(Node.js)。如果你已经安装了Node.js 14+,请忽略此步骤。 -wget https://nodejs.org/dist/v14.17.6/node-v14.17.6-linux-x64.tar.gz -# 解压档案 -tar -zxvf node-v14.17.6-linux-x64.tar.gz -# 添加程序到系统环境变量 -ln -s /opt/node-v14.17.6-linux-x64/bin/node /usr/bin/node -ln -s /opt/node-v14.17.6-linux-x64/bin/npm /usr/bin/npm - -# 准备好安装目录 -mkdir /opt/mcsmanager/ -cd /opt/mcsmanager/ - -# 下载MCSManager -wget https://github.com/MCSManager/MCSManager/releases/latest/download/mcsmanager_linux_release.tar.gz -tar -zxf mcsmanager_linux_release.tar.gz - -# 安装依赖库 -./install-dependency.sh - -# 请打开两个终端或屏幕 - -# 先启动守护程序 -./start-daemon.sh - -# 启动网络服务(在第二个终端) -./start-web.sh - -# 为网络界面访问http://localhost:23333/ -# 一般来说,网络应用会自动扫描并连接到本地守护进程。 -``` - -- 注意,这种安装方式不会自动注册面板到系统服务(Service),所以必须使用 `screen` 软件来管理。 - -
- -## 更新版本 - -参考: https://github.com/MCSManager/MCSManager/wiki/Update-MCSManager - -> 如果你不是特别需要新版本的功能,或者不是为了修复安全隐患,那就不建议更新。 - -
- -## 项目体系 - -整个软件运行需要三个项目的互相配合才可运行,您普通安装的代码是编译再整合后的产物。 - -[**控制面板端**](https://github.com/MCSManager/MCSManager) - -- 角色:控制中心 -- 责任:负责提供网页前端的后端接口,提供 API 接口,用户数据管理和对守护进程进行通信和授权。 - -[**网页前端**](https://github.com/MCSManager/UI) - -- 角色:控制中心的用户交互界面 -- 责任:以网页形式展示数据,发送请求,并且拥有与守护进程通信的能力,此项目最终产物是纯静态文件。 - -[**守护进程**](https://github.com/MCSManager/Daemon) - -- 角色:被控端 -- 责任:控制本地主机的所有实例,真实进程的实际管理者,拥有与任何对象的通信能力。 - -
- -## 搭建开发环境 - -此段落面向开发人员,普通用户无需关注也无需执行。 - -所有项目全部以开发环境运行后,便可以进行开发与预览,请务必遵循开源协议。 - -**控制面板端(MCSManager)** - -```bash -git clone https://github.com/MCSManager/MCSManager.git -cd MCSManager -npm install -npm run start -# 默认将采用 ts-node 直接执行 Typescript 代码 -# 默认运行在 23333 端口 -``` - -**网页前端(UI)** - -```bash -git clone https://github.com/MCSManager/UI.git -cd UI -npm install -npm run serve -# 访问 http://localhost:8080/ 即可预览界面 -# 所有 API 请求将自动转发到 23333 端口 -``` - -**守护进程(Daemon)** - -```bash -git clone https://github.com/MCSManager/Daemon.git -cd Daemon -npm install -npm run start -# 运行后请在控制面板端连接本守护进程 -# 默认运行在 24444 端口 -``` - -
- -## 浏览器兼容性 - -- 支持 `Chrome` `Firefox` `Safari` `Opera` 等现代主流浏览器。 -- 已放弃支持 `IE` 浏览器。 - -
- -## 国际化 - -MCSManager 已支持中文,英文两种语言,已经实现国际化全面覆盖。 - -软件国际化由 [Lazy](https://github.com/LazyCreeper),[KevinLu2000](https://github.com/KevinLu2000),[zijiren233](https://github.com/zijiren233) 和 [Unitwk](https://github.com/unitwk) 共同完成 - -
- -## 贡献 - -如果你在使用过程中发现任何问题,可以 [提交 Issue](https://github.com/MCSManager/MCSManager/issues/new/choose) 或自行 Fork 修改后提交 Pull Request。 - -代码需要保持现有格式,不得格式化多余代码,具体可[参考这里](https://github.com/MCSManager/MCSManager/issues/544)。 - -
- -## 问题报告 - -欢迎发现的任何问题进行反馈,必当及时修复。 - -若发现严重安全漏洞又不便公开发布,请发送邮件至: mcsmanager-dev@outlook.com。 - -安全问题修复后将在代码中附加漏洞发现者姓名。 - -
- - -## 源代码协议 - -源代码遵循 Apache-2.0 协议。 - -版权所有 2022 MCSManager 开发团队。 diff --git a/apps/mcsmanager-web/data.yml b/apps/mcsmanager-web/data.yml deleted file mode 100644 index ceb605b9..00000000 --- a/apps/mcsmanager-web/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: MCSManager Web -tags: - - 休闲游戏 -title: 支持大部分游戏服务端和控制台程序的管理面板(前端) -description: 支持大部分游戏服务端和控制台程序的管理面板(前端) -additionalProperties: - key: mcsmanager-web - name: MCSManager Web - tags: - - Game - shortDescZh: 支持大部分游戏服务端和控制台程序的管理面板(前端) - shortDescEn: Distributed, Docker-supported, Multilingual, and Lightweight control panel for Minecraft server and more (webui) - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://hub.docker.com/r/alisaqaq/mcsmanager-web - github: https://github.com/MCSManager/MCSManager - document: https://docs.mcsmanager.com/ diff --git a/apps/mcsmanager-web/latest/.env.sample b/apps/mcsmanager-web/latest/.env.sample deleted file mode 100644 index 0c21b86f..00000000 --- a/apps/mcsmanager-web/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="mcsmanager-web" -PANEL_APP_PORT_HTTP="40056" -DATA_PATH="./data" diff --git a/apps/mcsmanager-web/latest/data.yml b/apps/mcsmanager-web/latest/data.yml deleted file mode 100644 index 74fb4cfa..00000000 --- a/apps/mcsmanager-web/latest/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40056 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/mcsmanager-web/latest/docker-compose.yml b/apps/mcsmanager-web/latest/docker-compose.yml deleted file mode 100644 index 79e049fb..00000000 --- a/apps/mcsmanager-web/latest/docker-compose.yml +++ /dev/null @@ -1,17 +0,0 @@ -services: - mcsm-web: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:23333" - volumes: - - "${DATA_PATH}:/opt/mcsmanager/web/data" - image: alisaqaq/mcsmanager-web:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/mcsmanager-web/logo.png b/apps/mcsmanager-web/logo.png deleted file mode 100644 index 948029be6c1366cf3c997ceda7cfa6e1f1d274b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2198 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 Hu0mjf2YSUQ diff --git a/apps/mysql/5.5.62/conf/my.cnf b/apps/mysql/5.5.62/conf/my.cnf deleted file mode 100644 index f7105107..00000000 --- a/apps/mysql/5.5.62/conf/my.cnf +++ /dev/null @@ -1,5 +0,0 @@ -[mysqld] -skip-host-cache -skip-name-resolve -datadir = /var/lib/mysql -!includedir /etc/mysql/conf.d/ diff --git a/apps/mysql/5.5.62/data.yml b/apps/mysql/5.5.62/data.yml deleted file mode 100644 index 221fa8bd..00000000 --- a/apps/mysql/5.5.62/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: mysql - envKey: PANEL_DB_ROOT_PASSWORD - labelEn: Root Password - labelZh: root用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: 3306 - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/mysql/5.5.62/docker-compose.yml b/apps/mysql/5.5.62/docker-compose.yml deleted file mode 100644 index 104652d2..00000000 --- a/apps/mysql/5.5.62/docker-compose.yml +++ /dev/null @@ -1,27 +0,0 @@ - -services: - mysql: - image: mysql:5.5.62 - container_name: ${CONTAINER_NAME} - restart: always - environment: - MYSQL_ROOT_PASSWORD: ${PANEL_DB_ROOT_PASSWORD} - networks: - - 1panel-network - ports: - - ${PANEL_APP_PORT_HTTP}:3306 - volumes: - - ./data/:/var/lib/mysql - - ./conf/my.cnf:/etc/mysql/my.cnf - - ./log:/var/log/mysql - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro - command: - --lower-case-table-names=1 - --character-set-server=utf8mb4 - --collation-server=utf8mb4_general_ci - labels: - createdBy: "Apps" -networks: - 1panel-network: - external: true diff --git a/apps/mysql/5.6.51/conf/my.cnf b/apps/mysql/5.6.51/conf/my.cnf deleted file mode 100644 index 94804f84..00000000 --- a/apps/mysql/5.6.51/conf/my.cnf +++ /dev/null @@ -1,71 +0,0 @@ -# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License, version 2.0, -# as published by the Free Software Foundation. -# -# This program is also distributed with certain software (including -# but not limited to OpenSSL) that is licensed under separate terms, -# as designated in a particular file or component or in included license -# documentation. The authors of MySQL hereby grant you an additional -# permission to link the program and your derivative works with the -# separately licensed software that they have included with MySQL. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License, version 2.0, for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -# -# The MySQL Server configuration file. -# -# For explanations see -# http://dev.mysql.com/doc/mysql/en/server-system-variables.html - -# * IMPORTANT: Additional settings that can override those from this file! -# The files must end with '.cnf', otherwise they'll be ignored. -# - -[mysqld] -# -# Remove leading # and set to the amount of RAM for the most important data -# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. -# innodb_buffer_pool_size = 128M -# -# Remove leading # to turn on a very important data integrity option: logging -# changes to the binary log between backups. -# log_bin -# -# Remove leading # to set options mainly useful for reporting servers. -# The server defaults are faster for transactions and fast SELECTs. -# Adjust sizes as needed, experiment to find the optimal values. -# join_buffer_size = 128M -# sort_buffer_size = 2M -# read_rnd_buffer_size = 2M -skip-host-cache -skip-name-resolve -datadir=/var/lib/mysql -socket=/var/run/mysqld/mysqld.sock -secure-file-priv=/var/lib/mysql-files -user=mysql - -# Disabling symbolic-links is recommended to prevent assorted security risks -symbolic-links=0 - -#log-error=/var/log/mysqld.log -pid-file=/var/run/mysqld/mysqld.pid - -max_allowed_packet=64M -character_set_server=utf8 -lower_case_table_names=1 -group_concat_max_len=1024000 - -[client] -socket=/var/run/mysqld/mysqld.sock - -!includedir /etc/mysql/conf.d/ -!includedir /etc/mysql/mysql.conf.d/ \ No newline at end of file diff --git a/apps/mysql/5.6.51/data.yml b/apps/mysql/5.6.51/data.yml deleted file mode 100644 index 221fa8bd..00000000 --- a/apps/mysql/5.6.51/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: mysql - envKey: PANEL_DB_ROOT_PASSWORD - labelEn: Root Password - labelZh: root用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: 3306 - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/mysql/5.6.51/docker-compose.yml b/apps/mysql/5.6.51/docker-compose.yml deleted file mode 100644 index 5ffde898..00000000 --- a/apps/mysql/5.6.51/docker-compose.yml +++ /dev/null @@ -1,26 +0,0 @@ - -services: - mysql: - image: mysql:5.6.51 - container_name: ${CONTAINER_NAME} - restart: always - environment: - MYSQL_ROOT_PASSWORD: ${PANEL_DB_ROOT_PASSWORD} - networks: - - 1panel-network - ports: - - ${PANEL_APP_PORT_HTTP}:3306 - volumes: - - ./data/:/var/lib/mysql - - ./conf/my.cnf:/etc/mysql/my.cnf - - ./log:/var/log/mysql - command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_general_ci - --explicit_defaults_for_timestamp=true - --lower_case_table_names=1 - labels: - createdBy: "Apps" -networks: - 1panel-network: - external: true \ No newline at end of file diff --git a/apps/mysql/5.7.44/conf/my.cnf b/apps/mysql/5.7.44/conf/my.cnf deleted file mode 100644 index 9a6aa6f9..00000000 --- a/apps/mysql/5.7.44/conf/my.cnf +++ /dev/null @@ -1,42 +0,0 @@ -# For advice on how to change settings please see -# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html - -[mysqld] -# -# Remove leading # and set to the amount of RAM for the most important data -# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. -# innodb_buffer_pool_size = 128M -# -# Remove leading # to turn on a very important data integrity option: logging -# changes to the binary log between backups. -# log_bin -# -# Remove leading # to set options mainly useful for reporting servers. -# The server defaults are faster for transactions and fast SELECTs. -# Adjust sizes as needed, experiment to find the optimal values. -# join_buffer_size = 128M -# sort_buffer_size = 2M -# read_rnd_buffer_size = 2M -skip-host-cache -skip-name-resolve -datadir=/var/lib/mysql -socket=/var/run/mysqld/mysqld.sock -secure-file-priv=/var/lib/mysql-files -user=mysql - -# Disabling symbolic-links is recommended to prevent assorted security risks -symbolic-links=0 - -#log-error=/var/log/mysqld.log -pid-file=/var/run/mysqld/mysqld.pid - -max_allowed_packet=64M -character_set_server=utf8 -lower_case_table_names=1 -group_concat_max_len=1024000 - -[client] -socket=/var/run/mysqld/mysqld.sock - -!includedir /etc/mysql/conf.d/ -!includedir /etc/mysql/mysql.conf.d/ \ No newline at end of file diff --git a/apps/mysql/5.7.44/data.yml b/apps/mysql/5.7.44/data.yml deleted file mode 100644 index 221fa8bd..00000000 --- a/apps/mysql/5.7.44/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: mysql - envKey: PANEL_DB_ROOT_PASSWORD - labelEn: Root Password - labelZh: root用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: 3306 - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/mysql/5.7.44/docker-compose.yml b/apps/mysql/5.7.44/docker-compose.yml deleted file mode 100644 index 068a579a..00000000 --- a/apps/mysql/5.7.44/docker-compose.yml +++ /dev/null @@ -1,28 +0,0 @@ - -services: - mysql: - image: mysql:5.7.44 - container_name: ${CONTAINER_NAME} - restart: always - environment: - MYSQL_ROOT_PASSWORD: ${PANEL_DB_ROOT_PASSWORD} - networks: - - 1panel-network - ports: - - ${PANEL_APP_PORT_HTTP}:3306 - volumes: - - ./data/:/var/lib/mysql - - ./conf/my.cnf:/etc/mysql/my.cnf - - ./log:/var/log/mysql - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro - command: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_general_ci - --explicit_defaults_for_timestamp=true - --lower_case_table_names=1 - labels: - createdBy: "Apps" -networks: - 1panel-network: - external: true \ No newline at end of file diff --git a/apps/mysql/8.0.40/conf/my.cnf b/apps/mysql/8.0.40/conf/my.cnf deleted file mode 100644 index 6877bbfc..00000000 --- a/apps/mysql/8.0.40/conf/my.cnf +++ /dev/null @@ -1,19 +0,0 @@ -[mysqld] -skip-host-cache -skip-name-resolve -datadir=/var/lib/mysql -socket=/var/run/mysqld/mysqld.sock -secure-file-priv=/var/lib/mysql-files -user=mysql -log_error_suppression_list='MY-013360' - -character_set_server=utf8 -lower_case_table_names=1 -group_concat_max_len=1024000 -log_bin_trust_function_creators=1 - -pid-file=/var/run/mysqld/mysqld.pid -[client] -socket=/var/run/mysqld/mysqld.sock - -!includedir /etc/mysql/conf.d/ \ No newline at end of file diff --git a/apps/mysql/8.0.40/data.yml b/apps/mysql/8.0.40/data.yml deleted file mode 100644 index e71c6a38..00000000 --- a/apps/mysql/8.0.40/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: mysql - envKey: PANEL_DB_ROOT_PASSWORD - labelEn: Root Password - labelZh: root用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: 3306 - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/mysql/8.0.40/docker-compose.yml b/apps/mysql/8.0.40/docker-compose.yml deleted file mode 100644 index 33626b30..00000000 --- a/apps/mysql/8.0.40/docker-compose.yml +++ /dev/null @@ -1,24 +0,0 @@ -services: - mysql: - image: mysql:8.0.40 - container_name: ${CONTAINER_NAME} - restart: always - environment: - MYSQL_ROOT_PASSWORD: ${PANEL_DB_ROOT_PASSWORD} - networks: - - 1panel-network - ports: - - ${PANEL_APP_PORT_HTTP}:3306 - volumes: - - ./data/:/var/lib/mysql - - ./conf/my.cnf:/etc/my.cnf - - ./log:/var/log/mysql - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro - labels: - createdBy: "Apps" - command: - - --default-authentication-plugin=mysql_native_password -networks: - 1panel-network: - external: true diff --git a/apps/mysql/8.4.3/conf/my.cnf b/apps/mysql/8.4.3/conf/my.cnf deleted file mode 100644 index 13e999b0..00000000 --- a/apps/mysql/8.4.3/conf/my.cnf +++ /dev/null @@ -1,13 +0,0 @@ -[mysqld] -host-cache-size=0 -skip-name-resolve -datadir=/var/lib/mysql -socket=/var/run/mysqld/mysqld.sock -secure-file-priv=/var/lib/mysql-files -user=mysql - -pid-file=/var/run/mysqld/mysqld.pid -[client] -socket=/var/run/mysqld/mysqld.sock - -!includedir /etc/mysql/conf.d/ \ No newline at end of file diff --git a/apps/mysql/8.4.3/data.yml b/apps/mysql/8.4.3/data.yml deleted file mode 100644 index 221fa8bd..00000000 --- a/apps/mysql/8.4.3/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: mysql - envKey: PANEL_DB_ROOT_PASSWORD - labelEn: Root Password - labelZh: root用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: 3306 - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/mysql/8.4.3/docker-compose.yml b/apps/mysql/8.4.3/docker-compose.yml deleted file mode 100644 index e0d227dd..00000000 --- a/apps/mysql/8.4.3/docker-compose.yml +++ /dev/null @@ -1,24 +0,0 @@ -services: - mysql: - image: mysql:8.4.3 - container_name: ${CONTAINER_NAME} - restart: always - environment: - MYSQL_ROOT_PASSWORD: ${PANEL_DB_ROOT_PASSWORD} - networks: - - 1panel-network - ports: - - ${PANEL_APP_PORT_HTTP}:3306 - volumes: - - ./data/:/var/lib/mysql - - ./conf/my.cnf:/etc/my.cnf - - ./log:/var/log/mysql - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro - labels: - createdBy: "Apps" - command: - - --mysql-native-password=on -networks: - 1panel-network: - external: true diff --git a/apps/mysql/8.4.3/scripts/upgrade.sh b/apps/mysql/8.4.3/scripts/upgrade.sh deleted file mode 100644 index 029df7a7..00000000 --- a/apps/mysql/8.4.3/scripts/upgrade.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -CONFIG_FILE="./conf/my.cnf" - -if grep -q "skip-host-cache" "$CONFIG_FILE"; then - sed -i '/skip-host-cache/d' "$CONFIG_FILE" -else - echo "'skip-host-cache' does not exist in the configuration file." -fi \ No newline at end of file diff --git a/apps/mysql/README.md b/apps/mysql/README.md deleted file mode 100644 index a9088d51..00000000 --- a/apps/mysql/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# MySQL - -MySQL是一个流行的开源关系型数据库管理系统(RDBMS),它提供了丰富的功能,适用于各种应用场景。 - -## 主要功能: - -### 数据存储和管理 - -MySQL允许用户创建、存储和管理大量的数据。它支持多种数据类型,包括整数、浮点数、字符串、日期等,以满足不同类型的数据需求。 - -### 数据检索和查询 - -MySQL提供强大的查询功能,允许用户使用SQL(Structured Query Language)语言来检索和过滤数据。用户可以执行各种复杂的查询操作,包括筛选、排序、分组和连接多个表格中的数据。 - -### 数据完整性和约束 - -MySQL支持数据完整性和约束,包括主键、外键、唯一性约束和检查约束,以确保数据的一致性和有效性。 - -### 多用户支持和权限管理 - -MySQL允许多个用户同时访问数据库,并提供了灵活的权限管理功能。管理员可以控制每个用户对数据库和表的访问权限,以保护数据的安全性。 - -### 数据备份和恢复 - -MySQL支持数据备份和恢复操作,用户可以定期备份数据库,以防止数据丢失或损坏,并在需要时进行恢复。 - -### 多平台支持 - -MySQL可以在多种操作系统上运行,包括Windows、Linux、macOS等,使其适用于各种不同的开发和部署环境。 - -### 扩展性 - -MySQL具有良好的扩展性,支持分布式数据库架构,可以处理高负载的应用程序。 - -### 开源和社区支持 - -MySQL是开源软件,拥有强大的社区支持。用户可以从社区获取帮助、文档和各种插件来扩展MySQL的功能。 \ No newline at end of file diff --git a/apps/mysql/README_en.md b/apps/mysql/README_en.md deleted file mode 100644 index 19b4a8f2..00000000 --- a/apps/mysql/README_en.md +++ /dev/null @@ -1,37 +0,0 @@ -# MySQL - -MySQL is a popular open-source RDBMS (Relational Database Management System) that offers a rich set of features suitable for various application scenarios. - -## Main Features - -### Data Storage and Management - -MySQL allows users to create, store, and manage large amounts of data. It supports various data types, including integers, floating-point numbers, strings, dates, etc., to meet different data requirements. - -### Data Retrieval and Querying - -MySQL provides powerful query capabilities, allowing users to use SQL (Structured Query Language) to retrieve and filter data. Users can perform various complex query operations, including filtering, sorting, grouping, and joining data from multiple tables. - -### Data Integrity and Constraints - -MySQL supports data integrity and constraints, including primary keys, foreign keys, unique constraints, and check constraints, to ensure data consistency and validity. - -### Multi-User Support and Permission Management - -MySQL allows multiple users to access the database simultaneously and provides flexible permission management features. Administrators can control each user's access to databases and tables to protect data security. - -### Data Backup and Recovery - -MySQL supports data backup and recovery operations. Users can regularly back up the database to prevent data loss or corruption and restore it when needed. - -### Multi-Platform Support - -MySQL can run on various operating systems, including Windows, Linux, macOS, etc., making it suitable for different development and deployment environments. - -### Scalability - -MySQL has good scalability, supporting distributed database architectures and handling high-load applications. - -### Open Source and Community Support - -MySQL is open-source software with strong community support. Users can get help, documentation, and various plugins from the community to extend MySQL's functionality. diff --git a/apps/mysql/data.yml b/apps/mysql/data.yml deleted file mode 100644 index e5174c5a..00000000 --- a/apps/mysql/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: MySQL -tags: - - 数据库 -title: MySQL 开源关系型数据库 -description: MySQL 开源关系型数据库 -additionalProperties: - key: mysql - name: MySQL - tags: - - Database - shortDescZh: MySQL 开源关系型数据库 - shortDescEn: Open source relational database management system - type: runtime - crossVersionUpdate: false - limit: 0 - recommend: 0 - website: https://www.mysql.com - github: https://github.com/mysql/mysql-server - document: https://dev.mysql.com/doc/ diff --git a/apps/mysql/logo.png b/apps/mysql/logo.png deleted file mode 100644 index d501f14bdec423b90b6989f0e5e9cdfe8c912e2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3617 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 diff --git a/apps/navidrome/README.md b/apps/navidrome/README.md deleted file mode 100644 index 43b2ff0d..00000000 --- a/apps/navidrome/README.md +++ /dev/null @@ -1,93 +0,0 @@ -# 使用说明 - -容器以普通用户身份运行的, - -但是默认面板创建应用时,可能会将所需的数据文件夹设定身份为`root`,导致首次运行异常。 - -不用在意,执行以下命令,将文件夹改成普通用户身份,再重建应用即可。 - -- 路径注意按需修改 -``` -chown -R 1000:1000 /opt/1panel/apps/local/navidrome/navidrome/data -``` - -# 原始相关 - -Navidrome logo - -# Navidrome Music Server  [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Tired%20of%20paying%20for%20music%20subscriptions%2C%20and%20not%20finding%20what%20you%20really%20like%3F%20Roll%20your%20own%20streaming%20service%21&url=https://navidrome.org&via=navidrome) - -[![Last Release](https://img.shields.io/github/v/release/navidrome/navidrome?logo=github&label=latest&style=flat-square)](https://github.com/navidrome/navidrome/releases) -[![Build](https://img.shields.io/github/actions/workflow/status/navidrome/navidrome/pipeline.yml?branch=master&logo=github&style=flat-square)](https://nightly.link/navidrome/navidrome/workflows/pipeline/master) -[![Downloads](https://img.shields.io/github/downloads/navidrome/navidrome/total?logo=github&style=flat-square)](https://github.com/navidrome/navidrome/releases/latest) -[![Docker Pulls](https://img.shields.io/docker/pulls/deluan/navidrome?logo=docker&label=pulls&style=flat-square)](https://hub.docker.com/r/deluan/navidrome) -[![Dev Chat](https://img.shields.io/discord/671335427726114836?logo=discord&label=discord&style=flat-square)](https://discord.gg/xh7j7yF) -[![Subreddit](https://img.shields.io/reddit/subreddit-subscribers/navidrome?logo=reddit&label=/r/navidrome&style=flat-square)](https://www.reddit.com/r/navidrome/) -[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v2.0-ff69b4.svg?style=flat-square)](CODE_OF_CONDUCT.md) - -Navidrome is an open source web-based music collection server and streamer. It gives you freedom to listen to your -music collection from any browser or mobile device. It's like your personal Spotify! - - -**Note**: The `master` branch may be in an unstable or even broken state during development. -Please use [releases](https://github.com/navidrome/navidrome/releases) instead of -the `master` branch in order to get a stable set of binaries. - -## [Check out our Live Demo!](https://www.navidrome.org/demo/) - -__Any feedback is welcome!__ If you need/want a new feature, find a bug or think of any way to improve Navidrome, -please file a [GitHub issue](https://github.com/navidrome/navidrome/issues) or join the discussion in our -[Subreddit](https://www.reddit.com/r/navidrome/). If you want to contribute to the project in any other way -([ui/backend dev](https://www.navidrome.org/docs/developers/), -[translations](https://www.navidrome.org/docs/developers/translations/), -[themes](https://www.navidrome.org/docs/developers/creating-themes)), please join the chat in our -[Discord server](https://discord.gg/xh7j7yF). - -## Installation - -See instructions on the [project's website](https://www.navidrome.org/docs/installation/) - -## Cloud Hosting - -[PikaPods](https://www.pikapods.com) has partnered with us to offer you an -[officially supported, cloud-hosted solution](https://www.navidrome.org/docs/installation/managed/#pikapods). -A share of the revenue helps fund the development of Navidrome at no additional cost for you. - -[![PikaPods](https://www.pikapods.com/static/run-button.svg)](https://www.pikapods.com/pods?run=navidrome) - -## Features - - - Handles very **large music collections** - - Streams virtually **any audio format** available - - Reads and uses all your beautifully curated **metadata** - - Great support for **compilations** (Various Artists albums) and **box sets** (multi-disc albums) - - **Multi-user**, each user has their own play counts, playlists, favourites, etc... - - Very **low resource usage** - - **Multi-platform**, runs on macOS, Linux and Windows. **Docker** images are also provided - - Ready to use binaries for all major platforms, including **Raspberry Pi** - - Automatically **monitors your library** for changes, importing new files and reloading new metadata - - **Themeable**, modern and responsive **Web interface** based on [Material UI](https://material-ui.com) - - **Compatible** with all Subsonic/Madsonic/Airsonic [clients](https://www.navidrome.org/docs/overview/#apps) - - **Transcoding** on the fly. Can be set per user/player. **Opus encoding is supported** - - Translated to **various languages** - -## Documentation -All documentation can be found in the project's website: https://www.navidrome.org/docs. -Here are some useful direct links: - -- [Overview](https://www.navidrome.org/docs/overview/) -- [Installation](https://www.navidrome.org/docs/installation/) - - [Docker](https://www.navidrome.org/docs/installation/docker/) - - [Binaries](https://www.navidrome.org/docs/installation/pre-built-binaries/) - - [Build from source](https://www.navidrome.org/docs/installation/build-from-source/) -- [Development](https://www.navidrome.org/docs/developers/) -- [Subsonic API Compatibility](https://www.navidrome.org/docs/developers/subsonic-api/) - -## Screenshots - -

- - - - -

diff --git a/apps/navidrome/data.yml b/apps/navidrome/data.yml deleted file mode 100644 index 1dc3d573..00000000 --- a/apps/navidrome/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Navidrome Music Server -tags: - - 多媒体 -title: 基于 Web 的开源音乐收藏服务器和流媒体 -description: 基于 Web 的开源音乐收藏服务器和流媒体 -additionalProperties: - key: navidrome - name: Navidrome Music Server - tags: - - Media - shortDescZh: 基于 Web 的开源音乐收藏服务器和流媒体 - shortDescEn: An open source web-based music collection server and streamer - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://www.navidrome.org - github: https://github.com/navidrome/navidrome - document: https://www.navidrome.org/docs diff --git a/apps/navidrome/latest/.env.sample b/apps/navidrome/latest/.env.sample deleted file mode 100644 index 8363430b..00000000 --- a/apps/navidrome/latest/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME="navidrome" -PANEL_APP_PORT_HTTP="40108" -DATA_PATH="./data/data" -MUSIC_PATH="./data/music" diff --git a/apps/navidrome/latest/data.yml b/apps/navidrome/latest/data.yml deleted file mode 100644 index 93941877..00000000 --- a/apps/navidrome/latest/data.yml +++ /dev/null @@ -1,24 +0,0 @@ -additionalProperties: - formFields: - - default: 40108 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: HTTP Port - labelZh: HTTP端口 - required: true - rule: paramPort - type: number - - default: ./data/data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: ./data/music - edit: true - envKey: MUSIC_PATH - labelEn: Music folder path - labelZh: 音乐文件夹路径 - required: true - type: text diff --git a/apps/navidrome/latest/docker-compose.yml b/apps/navidrome/latest/docker-compose.yml deleted file mode 100644 index 36c70e7f..00000000 --- a/apps/navidrome/latest/docker-compose.yml +++ /dev/null @@ -1,24 +0,0 @@ -services: - navidrome: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:4533" - volumes: - - "${DATA_PATH}:/data" - - "${MUSIC_PATH}:/music:ro" - environment: - ND_SCANSCHEDULE: 1h - ND_LOGLEVEL: info - ND_SESSIONTIMEOUT: 24h - ND_BASEURL: "" - user: 1000:1000 - image: deluan/navidrome:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/navidrome/logo.png b/apps/navidrome/logo.png deleted file mode 100644 index 9860417c7bf7231eb2c9e532e221b48725ff9785..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3944 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 - - - -

- - release - - - license - - - pulls - - - issues - - - issues - - - Chat on discord - - - build - -

- - - -# n.eko - -欢迎使用 Neko,这是一个在 Docker 中运行并使用 WebRTC 技术的自托管虚拟浏览器。 \ No newline at end of file diff --git a/apps/neko/data.yml b/apps/neko/data.yml deleted file mode 100644 index bf9ada38..00000000 --- a/apps/neko/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Neko -tags: - - 实用工具 -title: 自托管虚拟浏览器 -description: 自托管虚拟浏览器 -additionalProperties: - key: neko - name: Neko - tags: - - Tool - shortDescZh: 自托管虚拟浏览器 - shortDescEn: A self-hosted virtual browser - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://neko.m1k1o.net - github: https://github.com/m1k1o/neko - document: https://neko.m1k1o.net diff --git a/apps/neko/latest/.env.sample b/apps/neko/latest/.env.sample deleted file mode 100644 index 6b88310b..00000000 --- a/apps/neko/latest/.env.sample +++ /dev/null @@ -1,37 +0,0 @@ -CONTAINER_NAME="neko" -DOWNLOAD_PATH="./data/Downloads" -IMAGE_NAME="m1k1o/neko:firefox" -MEM_USE="2048m" -NEKO_AUDIO_BITRATE=196 -NEKO_AUDIO_CODEC="opus" -NEKO_BIND=8080 -NEKO_BROADCAST_AUTOSTART="false" -NEKO_BROADCAST_PIPELINE="" -NEKO_BROADCAST_URL="" -NEKO_CERT="" -NEKO_CONTROL_PROTECTION="false" -NEKO_CORS="" -NEKO_DEVICE="" -NEKO_DISPLAY="" -NEKO_EPR="52000-52100" -NEKO_FILE_TRANSFER_ENABLED="true" -NEKO_FILE_TRANSFER_PATH="/home/neko/Downloads" -NEKO_HWENC="none" -NEKO_ICELITE=1 -NEKO_ICESERVER="" -NEKO_ICESERVERS="" -NEKO_IMPLICIT_CONTROL="false" -NEKO_IPFETCH="" -NEKO_KEY="" -NEKO_LOCKS="" -NEKO_MAX_FPS=0 -NEKO_NAT1TO1="" -NEKO_PASSWORD="neko" -NEKO_PASSWORD_ADMIN="admin" -NEKO_PATH_PREFIX="" -NEKO_PROXY="false" -NEKO_SCREEN="1920x1080@30" -NEKO_STATIC="" -NEKO_VIDEO_BITRATE=3500 -NEKO_VIDEO_CODEC="vp8" -PANEL_APP_PORT_HTTP=40277 diff --git a/apps/neko/latest/data.yml b/apps/neko/latest/data.yml deleted file mode 100644 index 4937414e..00000000 --- a/apps/neko/latest/data.yml +++ /dev/null @@ -1,316 +0,0 @@ -additionalProperties: - formFields: - - default: "m1k1o/neko:firefox" - edit: true - envKey: IMAGE_NAME - labelEn: Image Name - labelZh: 镜像名称 - required: true - type: select - values: - - label: "m1k1o/neko:kde" - value: "m1k1o/neko:kde" - - label: "m1k1o/neko:chromium" - value: "m1k1o/neko:chromium" - - label: "m1k1o/neko:vivaldi" - value: "m1k1o/neko:vivaldi" - - label: "m1k1o/neko:microsoft-edge" - value: "m1k1o/neko:microsoft-edge" - - label: "m1k1o/neko:brave" - value: "m1k1o/neko:brave" - - label: "m1k1o/neko:tor-browser" - value: "m1k1o/neko:tor-browser" - - label: "m1k1o/neko:ungoogled-chromium" - value: "m1k1o/neko:ungoogled-chromium" - - label: "m1k1o/neko:google-chrome" - value: "m1k1o/neko:google-chrome" - - label: "m1k1o/neko:firefox" - value: "m1k1o/neko:firefox" - - label: "m1k1o/neko:vlc" - value: "m1k1o/neko:vlc" - - label: "m1k1o/neko:xfce" - value: "m1k1o/neko:xfce" - - label: "m1k1o/neko:base" - value: "m1k1o/neko:base" - - label: "m1k1o/neko:opera" - value: "m1k1o/neko:opera" - - label: "m1k1o/neko:vncviewer" - value: "m1k1o/neko:vncviewer" - - label: "m1k1o/neko:arm-firefox" - value: "m1k1o/neko:arm-firefox" - - label: "m1k1o/neko:arm-chromium" - value: "m1k1o/neko:arm-chromium" - - label: "m1k1o/neko:arm-base" - value: "m1k1o/neko:arm-base" - - default: "40277" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "1920x1080@30" - edit: true - envKey: NEKO_SCREEN - labelEn: Screen Resolution - labelZh: 屏幕分辨率 - required: true - type: text - - default: "neko" - edit: true - envKey: NEKO_PASSWORD - labelEn: User Password - labelZh: 用户密码 - required: true - type: password - - default: "admin" - edit: true - envKey: NEKO_PASSWORD_ADMIN - labelEn: Admin Password - labelZh: 管理员密码 - required: true - type: password - - default: "52000-52100" - edit: true - envKey: NEKO_EPR - labelEn: WebRTC UDP Port Range - labelZh: WebRTC UDP 端口范围 - required: true - type: text - - default: "1" - edit: true - envKey: NEKO_ICELITE - labelEn: ICELite Mode - labelZh: ICELite 模式 - required: true - type: number - - default: "2048m" - edit: true - envKey: MEM_USE - labelEn: Shared memory footprint (1gb) - labelZh: 共享内存占用 (1gb) - required: true - type: text - - default: "./data/Downloads" - edit: true - envKey: DOWNLOAD_PATH - labelEn: Download Path (Pay attention to folder permissions) - labelZh: 下载文件路径 (注意文件夹权限) - required: true - type: text - - default: "false" - edit: true - envKey: NEKO_CONTROL_PROTECTION - labelEn: Control Protection - labelZh: 控制保护 - required: true - type: select - values: - - label: "False" - value: "false" - - label: "True" - value: "true" - - default: "false" - edit: true - envKey: NEKO_IMPLICIT_CONTROL - labelEn: Implicit Control - labelZh: 隐式控制 - required: true - type: select - values: - - label: "False" - value: "false" - - label: "True" - value: "true" - - default: "" - edit: true - envKey: NEKO_LOCKS - labelEn: Locks - labelZh: 锁定 - required: false - type: text - - default: "" - edit: true - envKey: NEKO_NAT1TO1 - labelEn: NAT1to1 IP - labelZh: NAT1to1 IP - required: false - type: text - - default: "" - edit: true - envKey: NEKO_IPFETCH - labelEn: IP Fetch URL - labelZh: IP 获取URL - required: false - type: text - - default: "" - edit: true - envKey: NEKO_ICESERVER - labelEn: ICE Server - labelZh: ICE 服务器 - required: false - type: text - - default: "" - edit: true - envKey: NEKO_ICESERVERS - labelEn: ICE Servers - labelZh: ICE 服务器组 - required: false - type: text - - default: "vp8" - edit: true - envKey: NEKO_VIDEO_CODEC - labelEn: Video Codec - labelZh: 视频编解码器 - required: false - type: text - - default: "3500" - edit: true - envKey: NEKO_VIDEO_BITRATE - labelEn: Video Bitrate - labelZh: 视频比特率 - required: false - type: number - - default: "0" - edit: true - envKey: NEKO_MAX_FPS - labelEn: Max FPS - labelZh: 最大FPS - required: false - type: number - - default: "none" - edit: true - envKey: NEKO_HWENC - labelEn: Hardware Encoder - labelZh: 硬件编码器 - required: false - type: text - - default: "opus" - edit: true - envKey: NEKO_AUDIO_CODEC - labelEn: Audio Codec - labelZh: 音频编解码器 - required: false - type: text - - default: 196 - edit: true - envKey: NEKO_AUDIO_BITRATE - labelEn: Audio Bitrate - labelZh: 音频比特率 - required: false - type: number - - default: "" - edit: true - envKey: NEKO_BROADCAST_PIPELINE - labelEn: Broadcast Pipeline - labelZh: 广播管道 - required: false - type: text - - default: "" - edit: true - envKey: NEKO_BROADCAST_URL - labelEn: Broadcast URL - labelZh: 广播URL - required: false - type: text - - default: "false" - edit: true - envKey: NEKO_BROADCAST_AUTOSTART - labelEn: Broadcast Autostart - labelZh: 广播自动启动 - required: true - type: select - values: - - label: "False" - value: "false" - - label: "True" - value: "true" - - default: "8080" - edit: true - envKey: NEKO_BIND - labelEn: Bind Address - labelZh: 绑定地址 - required: true - rule: paramPort - type: number - - default: "" - edit: true - envKey: NEKO_CERT - labelEn: SSL Certificate Path - labelZh: SSL证书路径 - required: false - type: text - - default: "" - edit: true - envKey: NEKO_KEY - labelEn: SSL Key Path - labelZh: SSL 密钥路径 - required: false - type: text - - default: "false" - edit: true - envKey: NEKO_PROXY - labelEn: Proxy Mode - labelZh: 代理模式 - required: true - type: select - values: - - label: "False" - value: "false" - - label: "True" - value: "true" - - default: "" - edit: true - envKey: NEKO_PATH_PREFIX - labelEn: Path Prefix - labelZh: 路径前缀 - required: false - type: text - - default: "" - edit: true - envKey: NEKO_CORS - labelEn: CORS - labelZh: 跨域资源共享 - required: false - type: text - - default: "true" - edit: true - envKey: NEKO_FILE_TRANSFER_ENABLED - labelEn: File Transfer Enabled - labelZh: 文件传输已启用 - required: true - type: select - values: - - label: "True" - value: "true" - - label: "False" - value: "false" - - default: "/home/neko/Downloads" - disabled: true - envKey: NEKO_FILE_TRANSFER_PATH - labelEn: File Transfer Path - labelZh: 文件传输路径 - required: false - type: text - - default: "" - edit: true - envKey: NEKO_DISPLAY - labelEn: Display - labelZh: 显示 - required: false - type: text - - default: "" - edit: true - envKey: NEKO_DEVICE - labelEn: Device - labelZh: 设备 - required: false - type: text - - default: "" - edit: true - envKey: NEKO_STATIC - labelEn: Static Files Path - labelZh: 静态文件路径 - required: false - type: text diff --git a/apps/neko/latest/data/Downloads/.gitkeep b/apps/neko/latest/data/Downloads/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/neko/latest/docker-compose.yml b/apps/neko/latest/docker-compose.yml deleted file mode 100644 index b8877fed..00000000 --- a/apps/neko/latest/docker-compose.yml +++ /dev/null @@ -1,52 +0,0 @@ -services: - neko: - image: ${IMAGE_NAME} - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - shm_size: "${MEM_USE}" - ports: - - "${PANEL_APP_PORT_HTTP}:${NEKO_BIND}" - - "${NEKO_EPR}:${NEKO_EPR}/udp" - volumes: - - "${DOWNLOAD_PATH}:${NEKO_FILE_TRANSFER_PATH}" - environment: - - NEKO_SCREEN=${NEKO_SCREEN} - - NEKO_PASSWORD=${NEKO_PASSWORD} - - NEKO_PASSWORD_ADMIN=${NEKO_PASSWORD_ADMIN} - - NEKO_EPR=${NEKO_EPR} - - NEKO_ICELITE=${NEKO_ICELITE} - - NEKO_CONTROL_PROTECTION=${NEKO_CONTROL_PROTECTION} - - NEKO_IMPLICIT_CONTROL=${NEKO_IMPLICIT_CONTROL} - - NEKO_LOCKS=${NEKO_LOCKS} - - NEKO_NAT1TO1=${NEKO_NAT1TO1} - - NEKO_IPFETCH=${NEKO_IPFETCH} - - NEKO_ICESERVER=${NEKO_ICESERVER} - - NEKO_ICESERVERS=${NEKO_ICESERVERS} - - NEKO_VIDEO_CODEC=${NEKO_VIDEO_CODEC} - - NEKO_VIDEO_BITRATE=${NEKO_VIDEO_BITRATE} - - NEKO_MAX_FPS=${NEKO_MAX_FPS} - - NEKO_HWENC=${NEKO_HWENC} - - NEKO_AUDIO_CODEC=${NEKO_AUDIO_CODEC} - - NEKO_AUDIO_BITRATE=${NEKO_AUDIO_BITRATE} - - NEKO_BROADCAST_PIPELINE=${NEKO_BROADCAST_PIPELINE} - - NEKO_BROADCAST_URL=${NEKO_BROADCAST_URL} - - NEKO_BROADCAST_AUTOSTART=${NEKO_BROADCAST_AUTOSTART} - - NEKO_BIND=:${NEKO_BIND} - - NEKO_CERT=${NEKO_CERT} - - NEKO_KEY=${NEKO_KEY} - - NEKO_PROXY=${NEKO_PROXY} - - NEKO_PATH_PREFIX=${NEKO_PATH_PREFIX} - - NEKO_CORS=${NEKO_CORS} - - NEKO_FILE_TRANSFER_ENABLED=${NEKO_FILE_TRANSFER_ENABLED} - - NEKO_FILE_TRANSFER_PATH=${NEKO_FILE_TRANSFER_PATH} - - NEKO_DISPLAY=${NEKO_DISPLAY} - - NEKO_DEVICE=${NEKO_DEVICE} - - NEKO_STATIC=${NEKO_STATIC} - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/neko/latest/scripts/init.sh b/apps/neko/latest/scripts/init.sh deleted file mode 100644 index 4e811c86..00000000 --- a/apps/neko/latest/scripts/init.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -chown -R 1000:1000 data \ No newline at end of file diff --git a/apps/neko/logo.png b/apps/neko/logo.png deleted file mode 100644 index e03ffda3af84bf6b2096f0d5f333b3a6340bf2f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2796 zcmVW@cva@bF4XN;o(;jg5^xJv~H3M9t03M@L8c`ugT$BzOb;cot>RJ zIy$JRsDy-sadB~AU|{3p<8yO!V`F3M>+5!Qc3oXv=;-M7_V)7f^1HjcTV>MM000Tw zNkl`!nbeVz6mCqYC*>TL+#cqg>R(dBzcDaK<{KsC#h3M%q1ogzewF8#_m(xuiQsW zndfvhs3Mjg6?%|P5I=H_K30gELWjOC5HE!`1Gqt)XcmLW$7-WFXD}(m#}5Ye198!R z;b)h_X)-yTH~C3piI~Xpqlf8k?)Ih%KPVv{^j~z!mozx&D>@A{#6p)&%~O0*&Cnqx z+j)l$EdyWNW@5L)Ec3KI8`xtlapwwgP^V40$6goQX(JA%w3V@+{$Sq=#K9|fq#j(1 z?Bs$t7<0#h8{J-uI%2?)r58b}lQHT-+`_8AKZlBn-+ zM0!s@Y#;Ap z&($+`o*>+h%)z6ZqjIO#4}6rohG5#9wgkjki5}NxSUl3;7256!5U6)Yr#i$j=`fKY zOm4srenOxY9pWGc7&UltvUlb zNX4tgqX|E1gML99v*Be^MMyJ#RLs`Zf@+7m$KCv=4iAM(e(?wg`DaIpmQt=5LVi+N z!iARNS6%Gr$wuTnXfznguUgLSWZ@Nb!SQgs7ip!3WUXcI`DROE%gAQ9BgqIa*I-ze z6@2oP<~}EQqfaw*7$XYfilMdYaOxMiR~9Ig6n;=cG?gMldsSh3<$h&6y$FA+rX>}I z_3Os}J)ni&fS;&{Osmd|{G{DtAXg@~423Q-2DFhvrzXTW`*D#fO5Dh|$}<&cGmwV_ zHimR1O>SWfg-mJNGI=XwOD?EARmWDp!C<5rfGRzm8_u%~D~L+(kjikBlbzpH%NYii zl~J(hX|Tp=lYg1Qx-8P;>ujmpy-8+=Er|y?Ut-y&x0Sr>L1_wzSpchG*Gg_IQ=W6H z7K@lkYl)shZ;c$XBBu1xq979)b;&QQuQ9c&rO>V^Ocpqy52=dzSEG+`>hw@l7*58-X_~&u2t{jhuSt{S<+^H0rJxic&zGd|m>OFTJkqP#wBD!OlbIaxcXTY%J)ii326*rZF|K zrJH9r5<|(GNO0j>MJ5D2;+@oGY-qy)BUk~cj_VJF?C8mHzl;o+NxK_0th9<-J_2~8 z2SpZ>I=YErdXC;j)TnDfN_w5XN~Eay(a+OE1tn&ITZQ4JO*{r#u)&S!#XxF1p8CM> z7Lbc{^L*YuyfwE)4^7BkH^0z0FZbal;*yEdb^fgy1(N!|T% zxkx8)@!GEGu4y+~Rie!f@p_oi_WZlOJ6lQ|h{6E;|DCWC1lg2Lb}}Fg;wXaKEbsqL z!zd+$(9)#3fvNJl^1`CJQm6NmlUBV|hpLyGeNJ8_eyc%)w_PmY`TC*CSoBKTCAX57oh|LC?x zchYE)AscTj>|oOj3m39R7rE)8383y!v@FP(Z}cm!l^Z>>-kZ`P6Yen^-ID$C_s#IA zJYgxBAf4V38$G}|x2k&^9g0Tq!OCTrJz}G?vbnZ^20v7yF?f8td^uvHd54;0M(puj zYFM-o$c%=BCD~9eu1SUxKS~yYa%o5!dC3ud*iOe0g!yUQ#x1wVK!XSku`%Knedv&( z8Bg28V*(wXX@-m8_6sAq<6i@War0S0t&>U9^oVSK94>Si(TL7Q;EBdmkSs%sD2=G$ zZnHXER$mp4M;b9in(K0i2gs8)v31F$D3e2BhuRN*|*vn0=Hhr%9{RG%q zs+dZ1=lknB#84CMpQ`sj0WT6o6u27+?pBm0%Z%2Be^CM^+N;XEaKj)BxD%nUqq>(a zrd#Xlx}5&{#Yt{TMI*pthdaa}>9fxkYHOFU1rvqV`t+IGfMt(rf^rUUA&ZWr;2Y5c zO3w1{7&Q7JPsq5lqxq_{=Xnfgi1Lk707@AnCCgsvH^7P&E=|vdH`TJkrBLPSviB-m zx6HAOj?NSC;Be_0T9uXaf+OecX8U}{p-FCeRDTf$dcssinM?Y$17A@)@wb2zEz6Uc zo{2!K68#)FN%{4STqfbBRQv3#Z2yf{t zHZ=Q2zc6-bbDP=r2|&c4TY^5lU@2Rdl3yJ|yBGQ-0%bpS&apD^YzuVTmXR%z_*~4P z-&EF7ThK4Me|!|^H@0N`y8-=Tp}pf{LcbSj#hOPLklQyt+75lH@UZR89jg;zLBD2(UfI2NJGby_NbeBM%`ovjZaq@*T~qx8MqDYswl-IMu{XK;$J93% z5r3vfLH$a-Dhb%+M=hN+44Gxrrk5T!I4)$0-K^*g>Jb?8B9z9wE_q6yu4xFa%v1-w z3687atcE;GF%6({^e<05m3P+)p+`B4qif$gT, () -``` - -Please read the [Code of Conduct](https://nextcloud.com/community/code-of-conduct/). This document offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other. - -Please review the [guidelines for contributing](.github/CONTRIBUTING.md) to this repository. - -More information how to contribute: [https://nextcloud.com/contribute/](https://nextcloud.com/contribute/) diff --git a/apps/nextcloud/data.yml b/apps/nextcloud/data.yml deleted file mode 100644 index 75eb98c5..00000000 --- a/apps/nextcloud/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Nextcloud -tags: - - 建站 -title: Nextcloud 服务器,所有数据的安全家园 -description: Nextcloud 服务器,所有数据的安全家园 -additionalProperties: - key: nextcloud - name: Nextcloud - tags: - - Website - shortDescZh: Nextcloud 服务器,所有数据的安全家园 - shortDescEn: Nextcloud server, a safe home for all your data - type: website - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://nextcloud.com/ - github: https://github.com/nextcloud/server - document: https://docs.nextcloud.com/ diff --git a/apps/nextcloud/latest/.env.sample b/apps/nextcloud/latest/.env.sample deleted file mode 100644 index 1f542770..00000000 --- a/apps/nextcloud/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="nextcloud" -PANEL_APP_PORT_HTTPS="40069" -DATA_PATH="./data" diff --git a/apps/nextcloud/latest/data.yml b/apps/nextcloud/latest/data.yml deleted file mode 100644 index bc8ed487..00000000 --- a/apps/nextcloud/latest/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40069 - edit: true - envKey: PANEL_APP_PORT_HTTPS - labelEn: HTTPS Port - labelZh: HTTPS端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/nextcloud/latest/docker-compose.yml b/apps/nextcloud/latest/docker-compose.yml deleted file mode 100644 index e05fe98c..00000000 --- a/apps/nextcloud/latest/docker-compose.yml +++ /dev/null @@ -1,22 +0,0 @@ -services: - nextcloud: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTPS}:443" - volumes: - - "${DATA_PATH}/config:/config" - - "${DATA_PATH}/data:/data" - environment: - - PUID=1000 - - PGID=1000 - - TZ=Asia/Shanghai - image: linuxserver/nextcloud:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/nextcloud/logo.png b/apps/nextcloud/logo.png deleted file mode 100644 index 8d8168842f4b502026b7039058688079358c0fb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8999 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 - -

- - - - - - - -

- -This project comes as a pre-built docker image that enables you to easily forward to your websites -running at home or otherwise, including free SSL, without having to know too much about Nginx or Letsencrypt. - -- [Quick Setup](#quick-setup) -- [Full Setup](https://nginxproxymanager.com/setup/) -- [Screenshots](https://nginxproxymanager.com/screenshots/) - -## Project Goal - -I created this project to fill a personal need to provide users with a easy way to accomplish reverse -proxying hosts with SSL termination and it had to be so easy that a monkey could do it. This goal hasn't changed. -While there might be advanced options they are optional and the project should be as simple as possible -so that the barrier for entry here is low. - -Buy Me A Coffee - - -## Features - -- Beautiful and Secure Admin Interface based on [Tabler](https://tabler.github.io/) -- Easily create forwarding domains, redirections, streams and 404 hosts without knowing anything about Nginx -- Free SSL using Let's Encrypt or provide your own custom SSL certificates -- Access Lists and basic HTTP Authentication for your hosts -- Advanced Nginx configuration available for super users -- User management, permissions and audit log - - -## Hosting your home network - -I won't go in to too much detail here but here are the basics for someone new to this self-hosted world. - -1. Your home router will have a Port Forwarding section somewhere. Log in and find it -2. Add port forwarding for port 80 and 443 to the server hosting this project -3. Configure your domain name details to point to your home, either with a static ip or a service like DuckDNS or [Amazon Route53](https://github.com/jc21/route53-ddns) -4. Use the Nginx Proxy Manager as your gateway to forward to your other web based services - -## Quick Setup - -1. Install Docker and Docker-Compose - -- [Docker Install documentation](https://docs.docker.com/install/) -- [Docker-Compose Install documentation](https://docs.docker.com/compose/install/) - -2. Create a docker-compose.yml file similar to this: - -```yml -version: '3.8' -services: - app: - image: 'jc21/nginx-proxy-manager:latest' - restart: unless-stopped - ports: - - '80:80' - - '81:81' - - '443:443' - volumes: - - ./data:/data - - ./letsencrypt:/etc/letsencrypt -``` - -This is the bare minimum configuration required. See the [documentation](https://nginxproxymanager.com/setup/) for more. - -3. Bring up your stack by running - -```bash -docker-compose up -d - -# If using docker-compose-plugin -docker compose up -d - -``` - -4. Log in to the Admin UI - -When your docker container is running, connect to it on port `81` for the admin interface. -Sometimes this can take a little bit because of the entropy of keys. - -[http://127.0.0.1:81](http://127.0.0.1:81) - -Default Admin User: -``` -Email: admin@example.com -Password: changeme -``` - -Immediately after logging in with this default user you will be asked to modify your details and change your password. - - -## Contributors - -Special thanks to [all of our contributors](https://github.com/NginxProxyManager/nginx-proxy-manager/graphs/contributors). - - -## Getting Support - -1. [Found a bug?](https://github.com/NginxProxyManager/nginx-proxy-manager/issues) -2. [Discussions](https://github.com/NginxProxyManager/nginx-proxy-manager/discussions) -3. [Development Gitter](https://gitter.im/nginx-proxy-manager/community) -4. [Reddit](https://reddit.com/r/nginxproxymanager) diff --git a/apps/nginx-proxy-manager/data.yml b/apps/nginx-proxy-manager/data.yml deleted file mode 100644 index 91ada694..00000000 --- a/apps/nginx-proxy-manager/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: NginxProxyManager -tags: - - 工具 -title: 使用简单、强大的界面管理 Nginx 代理主机 -description: 使用简单、强大的界面管理 Nginx 代理主机 -additionalProperties: - key: nginx-proxy-manager - name: NginxProxyManager - tags: - - Tool - shortDescZh: 使用简单、强大的界面管理 Nginx 代理主机 - shortDescEn: managing Nginx proxy hosts with a simple, powerful interface - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://nginxproxymanager.com/ - github: https://github.com/NginxProxyManager/nginx-proxy-manager - document: https://nginxproxymanager.com/guide/ diff --git a/apps/nginx-proxy-manager/github-pr-3281/.env.sample b/apps/nginx-proxy-manager/github-pr-3281/.env.sample deleted file mode 100644 index d861c039..00000000 --- a/apps/nginx-proxy-manager/github-pr-3281/.env.sample +++ /dev/null @@ -1,6 +0,0 @@ -CONTAINER_NAME="nginx-proxy-manager" -PANEL_APP_PORT_HTTP1="30081" -PANEL_APP_PORT_HTTP2="30443" -PANEL_APP_PORT_HTTP="30080" -SSL_PATH="./data/ssl" -DATA_PATH="./data/data" diff --git a/apps/nginx-proxy-manager/github-pr-3281/data.yml b/apps/nginx-proxy-manager/github-pr-3281/data.yml deleted file mode 100644 index b4e038e9..00000000 --- a/apps/nginx-proxy-manager/github-pr-3281/data.yml +++ /dev/null @@ -1,40 +0,0 @@ -additionalProperties: - formFields: - - default: 30080 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: HTTP Port - labelZh: HTTP端口 - required: true - rule: paramPort - type: number - - default: 30081 - edit: true - envKey: PANEL_APP_PORT_HTTP1 - labelEn: Console Port - labelZh: 控制台端口 - required: true - rule: paramPort - type: number - - default: 30443 - edit: true - envKey: PANEL_APP_PORT_HTTP2 - labelEn: HTTPS Port - labelZh: HTTPS端口 - required: true - rule: paramPort - type: number - - default: ./data/data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: ./data/ssl - edit: true - envKey: SSL_PATH - labelEn: SSL folder path - labelZh: 证书文件夹路径 - required: true - type: text diff --git a/apps/nginx-proxy-manager/github-pr-3281/docker-compose.yml b/apps/nginx-proxy-manager/github-pr-3281/docker-compose.yml deleted file mode 100644 index c988cac9..00000000 --- a/apps/nginx-proxy-manager/github-pr-3281/docker-compose.yml +++ /dev/null @@ -1,20 +0,0 @@ -services: - nginxpm: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - - "${PANEL_APP_PORT_HTTP1}:81" - - "${PANEL_APP_PORT_HTTP2}:443" - volumes: - - "${DATA_PATH}:/data" - - "${SSL_PATH}:/etc/letsencrypt" - image: jc21/nginx-proxy-manager:github-pr-3281 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/nginx-proxy-manager/latest/.env.sample b/apps/nginx-proxy-manager/latest/.env.sample deleted file mode 100644 index d861c039..00000000 --- a/apps/nginx-proxy-manager/latest/.env.sample +++ /dev/null @@ -1,6 +0,0 @@ -CONTAINER_NAME="nginx-proxy-manager" -PANEL_APP_PORT_HTTP1="30081" -PANEL_APP_PORT_HTTP2="30443" -PANEL_APP_PORT_HTTP="30080" -SSL_PATH="./data/ssl" -DATA_PATH="./data/data" diff --git a/apps/nginx-proxy-manager/latest/data.yml b/apps/nginx-proxy-manager/latest/data.yml deleted file mode 100644 index b4e038e9..00000000 --- a/apps/nginx-proxy-manager/latest/data.yml +++ /dev/null @@ -1,40 +0,0 @@ -additionalProperties: - formFields: - - default: 30080 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: HTTP Port - labelZh: HTTP端口 - required: true - rule: paramPort - type: number - - default: 30081 - edit: true - envKey: PANEL_APP_PORT_HTTP1 - labelEn: Console Port - labelZh: 控制台端口 - required: true - rule: paramPort - type: number - - default: 30443 - edit: true - envKey: PANEL_APP_PORT_HTTP2 - labelEn: HTTPS Port - labelZh: HTTPS端口 - required: true - rule: paramPort - type: number - - default: ./data/data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: ./data/ssl - edit: true - envKey: SSL_PATH - labelEn: SSL folder path - labelZh: 证书文件夹路径 - required: true - type: text diff --git a/apps/nginx-proxy-manager/latest/docker-compose.yml b/apps/nginx-proxy-manager/latest/docker-compose.yml deleted file mode 100644 index 39981bd8..00000000 --- a/apps/nginx-proxy-manager/latest/docker-compose.yml +++ /dev/null @@ -1,20 +0,0 @@ -services: - nginxpm: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - - "${PANEL_APP_PORT_HTTP1}:81" - - "${PANEL_APP_PORT_HTTP2}:443" - volumes: - - "${DATA_PATH}:/data" - - "${SSL_PATH}:/etc/letsencrypt" - image: jc21/nginx-proxy-manager:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/nginx-proxy-manager/logo.png b/apps/nginx-proxy-manager/logo.png deleted file mode 100644 index 3a472c93993fff5a8ab14e4ee91b5fe61efcfb7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5905 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 diff --git a/apps/nginx-proxy-manager/zh-latest/.env.sample b/apps/nginx-proxy-manager/zh-latest/.env.sample deleted file mode 100644 index d861c039..00000000 --- a/apps/nginx-proxy-manager/zh-latest/.env.sample +++ /dev/null @@ -1,6 +0,0 @@ -CONTAINER_NAME="nginx-proxy-manager" -PANEL_APP_PORT_HTTP1="30081" -PANEL_APP_PORT_HTTP2="30443" -PANEL_APP_PORT_HTTP="30080" -SSL_PATH="./data/ssl" -DATA_PATH="./data/data" diff --git a/apps/nginx-proxy-manager/zh-latest/data.yml b/apps/nginx-proxy-manager/zh-latest/data.yml deleted file mode 100644 index b4e038e9..00000000 --- a/apps/nginx-proxy-manager/zh-latest/data.yml +++ /dev/null @@ -1,40 +0,0 @@ -additionalProperties: - formFields: - - default: 30080 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: HTTP Port - labelZh: HTTP端口 - required: true - rule: paramPort - type: number - - default: 30081 - edit: true - envKey: PANEL_APP_PORT_HTTP1 - labelEn: Console Port - labelZh: 控制台端口 - required: true - rule: paramPort - type: number - - default: 30443 - edit: true - envKey: PANEL_APP_PORT_HTTP2 - labelEn: HTTPS Port - labelZh: HTTPS端口 - required: true - rule: paramPort - type: number - - default: ./data/data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: ./data/ssl - edit: true - envKey: SSL_PATH - labelEn: SSL folder path - labelZh: 证书文件夹路径 - required: true - type: text diff --git a/apps/nginx-proxy-manager/zh-latest/docker-compose.yml b/apps/nginx-proxy-manager/zh-latest/docker-compose.yml deleted file mode 100644 index 8a90aaa3..00000000 --- a/apps/nginx-proxy-manager/zh-latest/docker-compose.yml +++ /dev/null @@ -1,20 +0,0 @@ -services: - nginxpm: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - - "${PANEL_APP_PORT_HTTP1}:81" - - "${PANEL_APP_PORT_HTTP2}:443" - volumes: - - "${DATA_PATH}:/data" - - "${SSL_PATH}:/etc/letsencrypt" - image: chishin/nginx-proxy-manager-zh:release - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/nodebb/2.8/.env.sample b/apps/nodebb/2.8/.env.sample deleted file mode 100644 index d2482cea..00000000 --- a/apps/nodebb/2.8/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="nodebb" -PANEL_APP_PORT_HTTP="40202" diff --git a/apps/nodebb/2.8/data.yml b/apps/nodebb/2.8/data.yml deleted file mode 100644 index 230402f9..00000000 --- a/apps/nodebb/2.8/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40202 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/nodebb/2.8/data/.gitkeep b/apps/nodebb/2.8/data/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/nodebb/2.8/docker-compose.yml b/apps/nodebb/2.8/docker-compose.yml deleted file mode 100644 index bbf32878..00000000 --- a/apps/nodebb/2.8/docker-compose.yml +++ /dev/null @@ -1,17 +0,0 @@ -services: - nodebb: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:4567" - volumes: - - ./data:/usr/src/app/public/uploads - image: nodebb/docker:2.8 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/nodebb/2.8/scripts/init.sh b/apps/nodebb/2.8/scripts/init.sh deleted file mode 100644 index 2ffd123d..00000000 --- a/apps/nodebb/2.8/scripts/init.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -chmod 777 data \ No newline at end of file diff --git a/apps/nodebb/README.md b/apps/nodebb/README.md deleted file mode 100644 index d873723b..00000000 --- a/apps/nodebb/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# 介绍 - -NodeBB 是一款由 Node.js 开发的、开源的、现代化的论坛程序 - - -## 数据库连接问题 - -需要新建数据库再进行安装 - -本机`PostgreSQL`数据库连接信息,具体查看面板数据库页面来获取,例如 -``` -PostgreSQL:5432 -``` diff --git a/apps/nodebb/data.yml b/apps/nodebb/data.yml deleted file mode 100644 index cda40d10..00000000 --- a/apps/nodebb/data.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: NodeBB -tags: - - 建站 -title: 基于 Node.js 的现代化论坛程序 -description: 基于 Node.js 的现代化论坛程序 -additionalProperties: - key: nodebb - name: NodeBB - tags: - - Website - shortDescZh: 基于 Node.js 的现代化论坛程序 - shortDescEn: Open source Forum Powered by Node.js - type: website - crossVersionUpdate: true - limit: 0 - website: https://nodebb.org/ - github: https://github.com/NodeBB/NodeBB - document: https://docs.nodebb.org/ diff --git a/apps/nodebb/latest/.env.sample b/apps/nodebb/latest/.env.sample deleted file mode 100644 index d2482cea..00000000 --- a/apps/nodebb/latest/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="nodebb" -PANEL_APP_PORT_HTTP="40202" diff --git a/apps/nodebb/latest/data.yml b/apps/nodebb/latest/data.yml deleted file mode 100644 index 230402f9..00000000 --- a/apps/nodebb/latest/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40202 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/nodebb/latest/data/.gitkeep b/apps/nodebb/latest/data/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/nodebb/latest/docker-compose.yml b/apps/nodebb/latest/docker-compose.yml deleted file mode 100644 index 22fc1ec4..00000000 --- a/apps/nodebb/latest/docker-compose.yml +++ /dev/null @@ -1,17 +0,0 @@ -services: - nodebb: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:4567" - volumes: - - ./data:/usr/src/app/public/uploads - image: nodebb/docker:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/nodebb/latest/scripts/init.sh b/apps/nodebb/latest/scripts/init.sh deleted file mode 100644 index 2ffd123d..00000000 --- a/apps/nodebb/latest/scripts/init.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -chmod 777 data \ No newline at end of file diff --git a/apps/nodebb/logo.png b/apps/nodebb/logo.png deleted file mode 100644 index 25bee1b0b0381e26cc1c0e1aada79661d29b1e48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3102 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 Y_NrpL$Ha@^Q-{UD#>M)LCG5t30HG0*N&o-= diff --git a/apps/ntfy/2.12.0/.env.sample b/apps/ntfy/2.12.0/.env.sample deleted file mode 100644 index a36385e5..00000000 --- a/apps/ntfy/2.12.0/.env.sample +++ /dev/null @@ -1,6 +0,0 @@ -CONTAINER_NAME="ntfy" -PANEL_APP_PORT_HTTP=40265 -APP_PORT_INTERNAL=80 -PGID=1000 -PUID=1000 -TIME_ZONE="Asia/Shanghai" diff --git a/apps/ntfy/2.12.0/data.yml b/apps/ntfy/2.12.0/data.yml deleted file mode 100644 index 5332a75f..00000000 --- a/apps/ntfy/2.12.0/data.yml +++ /dev/null @@ -1,39 +0,0 @@ -additionalProperties: - formFields: - - default: "40265" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "80" - edit: true - envKey: APP_PORT_INTERNAL - labelEn: Internal Container Ports - labelZh: 容器内部端口 - required: true - rule: paramPort - type: number - - default: "Asia/Shanghai" - edit: true - envKey: TIME_ZONE - labelEn: Time Zone - labelZh: 时区 - required: true - type: text - - default: "1000" - edit: true - envKey: PUID - labelEn: User ID - labelZh: 用户 ID - required: true - type: number - - default: "1000" - edit: true - envKey: PGID - labelEn: Group ID - labelZh: 组 ID - required: true - type: number diff --git a/apps/ntfy/2.12.0/data/ntfy/server.yml.sample b/apps/ntfy/2.12.0/data/ntfy/server.yml.sample deleted file mode 100644 index 4b48828c..00000000 --- a/apps/ntfy/2.12.0/data/ntfy/server.yml.sample +++ /dev/null @@ -1,372 +0,0 @@ -# ntfy server config file -# -# Please refer to the documentation at https://ntfy.sh/docs/config/ for details. -# All options also support underscores (_) instead of dashes (-) to comply with the YAML spec. - -# Public facing base URL of the service (e.g. https://ntfy.sh or https://ntfy.example.com) -# -# This setting is required for any of the following features: -# - attachments (to return a download URL) -# - e-mail sending (for the topic URL in the email footer) -# - iOS push notifications for self-hosted servers (to calculate the Firebase poll_request topic) -# - Matrix Push Gateway (to validate that the pushkey is correct) -# -# base-url: - -# Listen address for the HTTP & HTTPS web server. If "listen-https" is set, you must also -# set "key-file" and "cert-file". Format: []:, e.g. "1.2.3.4:8080". -# -# To listen on all interfaces, you may omit the IP address, e.g. ":443". -# To disable HTTP, set "listen-http" to "-". -# -# listen-http: ":80" -# listen-https: - -# Listen on a Unix socket, e.g. /var/lib/ntfy/ntfy.sock -# This can be useful to avoid port issues on local systems, and to simplify permissions. -# -# listen-unix: -# listen-unix-mode: - -# Path to the private key & cert file for the HTTPS web server. Not used if "listen-https" is not set. -# -# key-file: -# cert-file: - -# If set, also publish messages to a Firebase Cloud Messaging (FCM) topic for your app. -# This is optional and only required to save battery when using the Android app. -# -# firebase-key-file: - -# If "cache-file" is set, messages are cached in a local SQLite database instead of only in-memory. -# This allows for service restarts without losing messages in support of the since= parameter. -# -# The "cache-duration" parameter defines the duration for which messages will be buffered -# before they are deleted. This is required to support the "since=..." and "poll=1" parameter. -# To disable the cache entirely (on-disk/in-memory), set "cache-duration" to 0. -# The cache file is created automatically, provided that the correct permissions are set. -# -# The "cache-startup-queries" parameter allows you to run commands when the database is initialized, -# e.g. to enable WAL mode (see https://phiresky.github.io/blog/2020/sqlite-performance-tuning/)). -# Example: -# cache-startup-queries: | -# pragma journal_mode = WAL; -# pragma synchronous = normal; -# pragma temp_store = memory; -# pragma busy_timeout = 15000; -# vacuum; -# -# The "cache-batch-size" and "cache-batch-timeout" parameter allow enabling async batch writing -# of messages. If set, messages will be queued and written to the database in batches of the given -# size, or after the given timeout. This is only required for high volume servers. -# -# Debian/RPM package users: -# Use /var/cache/ntfy/cache.db as cache file to avoid permission issues. The package -# creates this folder for you. -# -# Check your permissions: -# If you are running ntfy with systemd, make sure this cache file is owned by the -# ntfy user and group by running: chown ntfy.ntfy . -# -# cache-file: -# cache-duration: "12h" -# cache-startup-queries: -# cache-batch-size: 0 -# cache-batch-timeout: "0ms" - -# If set, access to the ntfy server and API can be controlled on a granular level using -# the 'ntfy user' and 'ntfy access' commands. See the --help pages for details, or check the docs. -# -# - auth-file is the SQLite user/access database; it is created automatically if it doesn't already exist -# - auth-default-access defines the default/fallback access if no access control entry is found; it can be -# set to "read-write" (default), "read-only", "write-only" or "deny-all". -# - auth-startup-queries allows you to run commands when the database is initialized, e.g. to enable -# WAL mode. This is similar to cache-startup-queries. See above for details. -# -# Debian/RPM package users: -# Use /var/lib/ntfy/user.db as user database to avoid permission issues. The package -# creates this folder for you. -# -# Check your permissions: -# If you are running ntfy with systemd, make sure this user database file is owned by the -# ntfy user and group by running: chown ntfy.ntfy . -# -# auth-file: -# auth-default-access: "read-write" -# auth-startup-queries: - -# If set, the X-Forwarded-For header is used to determine the visitor IP address -# instead of the remote address of the connection. -# -# WARNING: If you are behind a proxy, you must set this, otherwise all visitors are rate limited -# as if they are one. -# -# behind-proxy: false - -# If enabled, clients can attach files to notifications as attachments. Minimum settings to enable attachments -# are "attachment-cache-dir" and "base-url". -# -# - attachment-cache-dir is the cache directory for attached files -# - attachment-total-size-limit is the limit of the on-disk attachment cache directory (total size) -# - attachment-file-size-limit is the per-file attachment size limit (e.g. 300k, 2M, 100M) -# - attachment-expiry-duration is the duration after which uploaded attachments will be deleted (e.g. 3h, 20h) -# -# attachment-cache-dir: -# attachment-total-size-limit: "5G" -# attachment-file-size-limit: "15M" -# attachment-expiry-duration: "3h" - -# If enabled, allow outgoing e-mail notifications via the 'X-Email' header. If this header is set, -# messages will additionally be sent out as e-mail using an external SMTP server. -# -# As of today, only SMTP servers with plain text auth (or no auth at all), and STARTLS are supported. -# Please also refer to the rate limiting settings below (visitor-email-limit-burst & visitor-email-limit-burst). -# -# - smtp-sender-addr is the hostname:port of the SMTP server -# - smtp-sender-from is the e-mail address of the sender -# - smtp-sender-user/smtp-sender-pass are the username and password of the SMTP user (leave blank for no auth) -# -# smtp-sender-addr: -# smtp-sender-from: -# smtp-sender-user: -# smtp-sender-pass: - -# If enabled, ntfy will launch a lightweight SMTP server for incoming messages. Once configured, users can send -# emails to a topic e-mail address to publish messages to a topic. -# -# - smtp-server-listen defines the IP address and port the SMTP server will listen on, e.g. :25 or 1.2.3.4:25 -# - smtp-server-domain is the e-mail domain, e.g. ntfy.sh -# - smtp-server-addr-prefix is an optional prefix for the e-mail addresses to prevent spam. If set to "ntfy-", -# for instance, only e-mails to ntfy-$topic@ntfy.sh will be accepted. If this is not set, all emails to -# $topic@ntfy.sh will be accepted (which may obviously be a spam problem). -# -# smtp-server-listen: -# smtp-server-domain: -# smtp-server-addr-prefix: - -# Web Push support (background notifications for browsers) -# -# If enabled, allows ntfy to receive push notifications, even when the ntfy web app is closed. When enabled, users -# can enable background notifications in the web app. Once enabled, ntfy will forward published messages to the push -# endpoint, which will then forward it to the browser. -# -# You must configure web-push-public/private key, web-push-file, and web-push-email-address below to enable Web Push. -# Run "ntfy webpush keys" to generate the keys. -# -# - web-push-public-key is the generated VAPID public key, e.g. AA1234BBCCddvveekaabcdfqwertyuiopasdfghjklzxcvbnm1234567890 -# - web-push-private-key is the generated VAPID private key, e.g. AA2BB1234567890abcdefzxcvbnm1234567890 -# - web-push-file is a database file to keep track of browser subscription endpoints, e.g. `/var/cache/ntfy/webpush.db` -# - web-push-email-address is the admin email address send to the push provider, e.g. `sysadmin@example.com` -# - web-push-startup-queries is an optional list of queries to run on startup` -# -# web-push-public-key: -# web-push-private-key: -# web-push-file: -# web-push-email-address: -# web-push-startup-queries: - -# If enabled, ntfy can perform voice calls via Twilio via the "X-Call" header. -# -# - twilio-account is the Twilio account SID -# - twilio-auth-token is the Twilio auth token, e.g. affebeef258625862586258625862586 -# - twilio-phone-number is the outgoing phone number you purchased, e.g. +18775132586 -# - twilio-verify-service is the Twilio Verify service SID, e.g. VA12345beefbeef67890beefbeef122586 -# -# twilio-account: -# twilio-auth-token: -# twilio-phone-number: -# twilio-verify-service: - -# Interval in which keepalive messages are sent to the client. This is to prevent -# intermediaries closing the connection for inactivity. -# -# Note that the Android app has a hardcoded timeout at 77s, so it should be less than that. -# -# keepalive-interval: "45s" - -# Interval in which the manager prunes old messages, deletes topics -# and prints the stats. -# -# manager-interval: "1m" - -# Defines topic names that are not allowed, because they are otherwise used. There are a few default topics -# that cannot be used (e.g. app, account, settings, ...). To extend the default list, define them here. -# -# Example: -# disallowed-topics: -# - about -# - pricing -# - contact -# -# disallowed-topics: - -# Defines the root path of the web app, or disables the web app entirely. -# -# Can be any simple path, e.g. "/", "/app", or "/ntfy". For backwards-compatibility reasons, -# the values "app" (maps to "/"), "home" (maps to "/app"), or "disable" (maps to "") to disable -# the web app entirely. -# -# web-root: / - -# Various feature flags used to control the web app, and API access, mainly around user and -# account management. -# -# - enable-signup allows users to sign up via the web app, or API -# - enable-login allows users to log in via the web app, or API -# - enable-reservations allows users to reserve topics (if their tier allows it) -# -# enable-signup: false -# enable-login: false -# enable-reservations: false - -# Server URL of a Firebase/APNS-connected ntfy server (likely "https://ntfy.sh"). -# -# iOS users: -# If you use the iOS ntfy app, you MUST configure this to receive timely notifications. You'll like want this: -# upstream-base-url: "https://ntfy.sh" -# -# If set, all incoming messages will publish a "poll_request" message to the configured upstream server, containing -# the message ID of the original message, instructing the iOS app to poll this server for the actual message contents. -# This is to prevent the upstream server and Firebase/APNS from being able to read the message. -# -# - upstream-base-url is the base URL of the upstream server. Should be "https://ntfy.sh". -# - upstream-access-token is the token used to authenticate with the upstream server. This is only required -# if you exceed the upstream rate limits, or the uptream server requires authentication. -# -# upstream-base-url: -# upstream-access-token: - -# Configures message-specific limits -# -# - message-size-limit defines the max size of a message body. Please note message sizes >4K are NOT RECOMMENDED, -# and largely untested. If FCM and/or APNS is used, the limit should stay 4K, because their limits are around that size. -# If you increase this size limit regardless, FCM and APNS will NOT work for large messages. -# - message-delay-limit defines the max delay of a message when using the "Delay" header. -# -# message-size-limit: "4k" -# message-delay-limit: "3d" - -# Rate limiting: Total number of topics before the server rejects new topics. -# -# global-topic-limit: 15000 - -# Rate limiting: Number of subscriptions per visitor (IP address) -# -# visitor-subscription-limit: 30 - -# Rate limiting: Allowed GET/PUT/POST requests per second, per visitor: -# - visitor-request-limit-burst is the initial bucket of requests each visitor has -# - visitor-request-limit-replenish is the rate at which the bucket is refilled -# - visitor-request-limit-exempt-hosts is a comma-separated list of hostnames, IPs or CIDRs to be -# exempt from request rate limiting. Hostnames are resolved at the time the server is started. -# Example: "1.2.3.4,ntfy.example.com,8.7.6.0/24" -# -# visitor-request-limit-burst: 60 -# visitor-request-limit-replenish: "5s" -# visitor-request-limit-exempt-hosts: "" - -# Rate limiting: Hard daily limit of messages per visitor and day. The limit is reset -# every day at midnight UTC. If the limit is not set (or set to zero), the request -# limit (see above) governs the upper limit. -# -# visitor-message-daily-limit: 0 - -# Rate limiting: Allowed emails per visitor: -# - visitor-email-limit-burst is the initial bucket of emails each visitor has -# - visitor-email-limit-replenish is the rate at which the bucket is refilled -# -# visitor-email-limit-burst: 16 -# visitor-email-limit-replenish: "1h" - -# Rate limiting: Attachment size and bandwidth limits per visitor: -# - visitor-attachment-total-size-limit is the total storage limit used for attachments per visitor -# - visitor-attachment-daily-bandwidth-limit is the total daily attachment download/upload traffic limit per visitor -# -# visitor-attachment-total-size-limit: "100M" -# visitor-attachment-daily-bandwidth-limit: "500M" - -# Rate limiting: Enable subscriber-based rate limiting (mostly used for UnifiedPush) -# -# If subscriber-based rate limiting is enabled, messages published on UnifiedPush topics** (topics starting with "up") -# will be counted towards the "rate visitor" of the topic. A "rate visitor" is the first subscriber to the topic. -# -# Once enabled, a client subscribing to UnifiedPush topics via HTTP stream, or websockets, will be automatically registered as -# a "rate visitor", i.e. the visitor whose rate limits will be used when publishing on this topic. Note that setting the rate visitor -# requires **read-write permission** on the topic. -# -# If this setting is enabled, publishing to UnifiedPush topics will lead to a HTTP 507 response if -# no "rate visitor" has been previously registered. This is to avoid burning the publisher's "visitor-message-daily-limit". -# -# visitor-subscriber-rate-limiting: false - -# Payments integration via Stripe -# -# - stripe-secret-key is the key used for the Stripe API communication. Setting this values -# enables payments in the ntfy web app (e.g. Upgrade dialog). See https://dashboard.stripe.com/apikeys. -# - stripe-webhook-key is the key required to validate the authenticity of incoming webhooks from Stripe. -# Webhooks are essential up keep the local database in sync with the payment provider. See https://dashboard.stripe.com/webhooks. -# - billing-contact is an email address or website displayed in the "Upgrade tier" dialog to let people reach -# out with billing questions. If unset, nothing will be displayed. -# -# stripe-secret-key: -# stripe-webhook-key: -# billing-contact: - -# Metrics -# -# ntfy can expose Prometheus-style metrics via a /metrics endpoint, or on a dedicated listen IP/port. -# Metrics may be considered sensitive information, so before you enable them, be sure you know what you are -# doing, and/or secure access to the endpoint in your reverse proxy. -# -# - enable-metrics enables the /metrics endpoint for the default ntfy server (i.e. HTTP, HTTPS and/or Unix socket) -# - metrics-listen-http exposes the metrics endpoint via a dedicated [IP]:port. If set, this option implicitly -# enables metrics as well, e.g. "10.0.1.1:9090" or ":9090" -# -# enable-metrics: false -# metrics-listen-http: - -# Profiling -# -# ntfy can expose Go's net/http/pprof endpoints to support profiling of the ntfy server. If enabled, ntfy will listen -# on a dedicated listen IP/port, which can be accessed via the web browser on http://:/debug/pprof/. -# This can be helpful to expose bottlenecks, and visualize call flows. See https://pkg.go.dev/net/http/pprof for details. -# -# profile-listen-http: - -# Logging options -# -# By default, ntfy logs to the console (stderr), with an "info" log level, and in a human-readable text format. -# ntfy supports five different log levels, can also write to a file, log as JSON, and even supports granular -# log level overrides for easier debugging. Some options (log-level and log-level-overrides) can be hot reloaded -# by calling "kill -HUP $pid" or "systemctl reload ntfy". -# -# - log-format defines the output format, can be "text" (default) or "json" -# - log-file is a filename to write logs to. If this is not set, ntfy logs to stderr. -# - log-level defines the default log level, can be one of "trace", "debug", "info" (default), "warn" or "error". -# Be aware that "debug" (and particularly "trace") can be VERY CHATTY. Only turn them on briefly for debugging purposes. -# - log-level-overrides lets you override the log level if certain fields match. This is incredibly powerful -# for debugging certain parts of the system (e.g. only the account management, or only a certain visitor). -# This is an array of strings in the format: -# - "field=value -> level" to match a value exactly, e.g. "tag=manager -> trace" -# - "field -> level" to match any value, e.g. "time_taken_ms -> debug" -# Warning: Using log-level-overrides has a performance penalty. Only use it for temporary debugging. -# -# Check your permissions: -# If you are running ntfy with systemd, make sure this log file is owned by the -# ntfy user and group by running: chown ntfy.ntfy . -# -# Example (good for production): -# log-level: info -# log-format: json -# log-file: /var/log/ntfy.log -# -# Example level overrides (for debugging, only use temporarily): -# log-level-overrides: -# - "tag=manager -> trace" -# - "visitor_ip=1.2.3.4 -> debug" -# - "time_taken_ms -> debug" -# -# log-level: info -# log-level-overrides: -# log-format: text -# log-file: diff --git a/apps/ntfy/2.12.0/docker-compose.yml b/apps/ntfy/2.12.0/docker-compose.yml deleted file mode 100644 index bf20cb54..00000000 --- a/apps/ntfy/2.12.0/docker-compose.yml +++ /dev/null @@ -1,29 +0,0 @@ -services: - ntfy: - image: "binwiederhier/ntfy:v2.12.0" - container_name: ${CONTAINER_NAME} - command: - - serve - environment: - - TZ=${TIME_ZONE} - user: ${PUID}:${PGID} - volumes: - - ./data/cache/ntfy:/var/cache/ntfy - - ./data/ntfy:/etc/ntfy - ports: - - "${PANEL_APP_PORT_HTTP}:${APP_PORT_INTERNAL}" - restart: always - networks: - - 1panel-network - healthcheck: - test: ["CMD-SHELL", "wget -q --tries=1 http://localhost:${APP_PORT_INTERNAL}/v1/health -O - | grep -Eo '\"healthy\"\\s*:\\s*true' || exit 1"] - interval: 60s - timeout: 10s - retries: 3 - start_period: 40s - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/ntfy/README.md b/apps/ntfy/README.md deleted file mode 100644 index 5061e182..00000000 --- a/apps/ntfy/README.md +++ /dev/null @@ -1,28 +0,0 @@ -![ntfy](https://github.com/binwiederhier/ntfy/raw/main/web/public/static/images/ntfy.png) - -# 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**(发音为 "*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 diff --git a/apps/ntfy/data.yml b/apps/ntfy/data.yml deleted file mode 100644 index 8e92b7d1..00000000 --- a/apps/ntfy/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: ntfy -tags: - - 开发工具 -title: 基于 HTTP 的简单 pub-sub 通知服务 -description: 基于 HTTP 的简单 pub-sub 通知服务 -additionalProperties: - key: ntfy - name: ntfy - tags: - - DevTool - shortDescZh: 基于 HTTP 的简单 pub-sub 通知服务 - shortDescEn: A simple HTTP-based pub-sub notification service - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://ntfy.sh/ - github: https://github.com/binwiederhier/ntfy - document: https://ntfy.sh/docs diff --git a/apps/ntfy/latest/.env.sample b/apps/ntfy/latest/.env.sample deleted file mode 100644 index a36385e5..00000000 --- a/apps/ntfy/latest/.env.sample +++ /dev/null @@ -1,6 +0,0 @@ -CONTAINER_NAME="ntfy" -PANEL_APP_PORT_HTTP=40265 -APP_PORT_INTERNAL=80 -PGID=1000 -PUID=1000 -TIME_ZONE="Asia/Shanghai" diff --git a/apps/ntfy/latest/data.yml b/apps/ntfy/latest/data.yml deleted file mode 100644 index 5332a75f..00000000 --- a/apps/ntfy/latest/data.yml +++ /dev/null @@ -1,39 +0,0 @@ -additionalProperties: - formFields: - - default: "40265" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "80" - edit: true - envKey: APP_PORT_INTERNAL - labelEn: Internal Container Ports - labelZh: 容器内部端口 - required: true - rule: paramPort - type: number - - default: "Asia/Shanghai" - edit: true - envKey: TIME_ZONE - labelEn: Time Zone - labelZh: 时区 - required: true - type: text - - default: "1000" - edit: true - envKey: PUID - labelEn: User ID - labelZh: 用户 ID - required: true - type: number - - default: "1000" - edit: true - envKey: PGID - labelEn: Group ID - labelZh: 组 ID - required: true - type: number diff --git a/apps/ntfy/latest/data/ntfy/server.yml.sample b/apps/ntfy/latest/data/ntfy/server.yml.sample deleted file mode 100644 index 4b48828c..00000000 --- a/apps/ntfy/latest/data/ntfy/server.yml.sample +++ /dev/null @@ -1,372 +0,0 @@ -# ntfy server config file -# -# Please refer to the documentation at https://ntfy.sh/docs/config/ for details. -# All options also support underscores (_) instead of dashes (-) to comply with the YAML spec. - -# Public facing base URL of the service (e.g. https://ntfy.sh or https://ntfy.example.com) -# -# This setting is required for any of the following features: -# - attachments (to return a download URL) -# - e-mail sending (for the topic URL in the email footer) -# - iOS push notifications for self-hosted servers (to calculate the Firebase poll_request topic) -# - Matrix Push Gateway (to validate that the pushkey is correct) -# -# base-url: - -# Listen address for the HTTP & HTTPS web server. If "listen-https" is set, you must also -# set "key-file" and "cert-file". Format: []:, e.g. "1.2.3.4:8080". -# -# To listen on all interfaces, you may omit the IP address, e.g. ":443". -# To disable HTTP, set "listen-http" to "-". -# -# listen-http: ":80" -# listen-https: - -# Listen on a Unix socket, e.g. /var/lib/ntfy/ntfy.sock -# This can be useful to avoid port issues on local systems, and to simplify permissions. -# -# listen-unix: -# listen-unix-mode: - -# Path to the private key & cert file for the HTTPS web server. Not used if "listen-https" is not set. -# -# key-file: -# cert-file: - -# If set, also publish messages to a Firebase Cloud Messaging (FCM) topic for your app. -# This is optional and only required to save battery when using the Android app. -# -# firebase-key-file: - -# If "cache-file" is set, messages are cached in a local SQLite database instead of only in-memory. -# This allows for service restarts without losing messages in support of the since= parameter. -# -# The "cache-duration" parameter defines the duration for which messages will be buffered -# before they are deleted. This is required to support the "since=..." and "poll=1" parameter. -# To disable the cache entirely (on-disk/in-memory), set "cache-duration" to 0. -# The cache file is created automatically, provided that the correct permissions are set. -# -# The "cache-startup-queries" parameter allows you to run commands when the database is initialized, -# e.g. to enable WAL mode (see https://phiresky.github.io/blog/2020/sqlite-performance-tuning/)). -# Example: -# cache-startup-queries: | -# pragma journal_mode = WAL; -# pragma synchronous = normal; -# pragma temp_store = memory; -# pragma busy_timeout = 15000; -# vacuum; -# -# The "cache-batch-size" and "cache-batch-timeout" parameter allow enabling async batch writing -# of messages. If set, messages will be queued and written to the database in batches of the given -# size, or after the given timeout. This is only required for high volume servers. -# -# Debian/RPM package users: -# Use /var/cache/ntfy/cache.db as cache file to avoid permission issues. The package -# creates this folder for you. -# -# Check your permissions: -# If you are running ntfy with systemd, make sure this cache file is owned by the -# ntfy user and group by running: chown ntfy.ntfy . -# -# cache-file: -# cache-duration: "12h" -# cache-startup-queries: -# cache-batch-size: 0 -# cache-batch-timeout: "0ms" - -# If set, access to the ntfy server and API can be controlled on a granular level using -# the 'ntfy user' and 'ntfy access' commands. See the --help pages for details, or check the docs. -# -# - auth-file is the SQLite user/access database; it is created automatically if it doesn't already exist -# - auth-default-access defines the default/fallback access if no access control entry is found; it can be -# set to "read-write" (default), "read-only", "write-only" or "deny-all". -# - auth-startup-queries allows you to run commands when the database is initialized, e.g. to enable -# WAL mode. This is similar to cache-startup-queries. See above for details. -# -# Debian/RPM package users: -# Use /var/lib/ntfy/user.db as user database to avoid permission issues. The package -# creates this folder for you. -# -# Check your permissions: -# If you are running ntfy with systemd, make sure this user database file is owned by the -# ntfy user and group by running: chown ntfy.ntfy . -# -# auth-file: -# auth-default-access: "read-write" -# auth-startup-queries: - -# If set, the X-Forwarded-For header is used to determine the visitor IP address -# instead of the remote address of the connection. -# -# WARNING: If you are behind a proxy, you must set this, otherwise all visitors are rate limited -# as if they are one. -# -# behind-proxy: false - -# If enabled, clients can attach files to notifications as attachments. Minimum settings to enable attachments -# are "attachment-cache-dir" and "base-url". -# -# - attachment-cache-dir is the cache directory for attached files -# - attachment-total-size-limit is the limit of the on-disk attachment cache directory (total size) -# - attachment-file-size-limit is the per-file attachment size limit (e.g. 300k, 2M, 100M) -# - attachment-expiry-duration is the duration after which uploaded attachments will be deleted (e.g. 3h, 20h) -# -# attachment-cache-dir: -# attachment-total-size-limit: "5G" -# attachment-file-size-limit: "15M" -# attachment-expiry-duration: "3h" - -# If enabled, allow outgoing e-mail notifications via the 'X-Email' header. If this header is set, -# messages will additionally be sent out as e-mail using an external SMTP server. -# -# As of today, only SMTP servers with plain text auth (or no auth at all), and STARTLS are supported. -# Please also refer to the rate limiting settings below (visitor-email-limit-burst & visitor-email-limit-burst). -# -# - smtp-sender-addr is the hostname:port of the SMTP server -# - smtp-sender-from is the e-mail address of the sender -# - smtp-sender-user/smtp-sender-pass are the username and password of the SMTP user (leave blank for no auth) -# -# smtp-sender-addr: -# smtp-sender-from: -# smtp-sender-user: -# smtp-sender-pass: - -# If enabled, ntfy will launch a lightweight SMTP server for incoming messages. Once configured, users can send -# emails to a topic e-mail address to publish messages to a topic. -# -# - smtp-server-listen defines the IP address and port the SMTP server will listen on, e.g. :25 or 1.2.3.4:25 -# - smtp-server-domain is the e-mail domain, e.g. ntfy.sh -# - smtp-server-addr-prefix is an optional prefix for the e-mail addresses to prevent spam. If set to "ntfy-", -# for instance, only e-mails to ntfy-$topic@ntfy.sh will be accepted. If this is not set, all emails to -# $topic@ntfy.sh will be accepted (which may obviously be a spam problem). -# -# smtp-server-listen: -# smtp-server-domain: -# smtp-server-addr-prefix: - -# Web Push support (background notifications for browsers) -# -# If enabled, allows ntfy to receive push notifications, even when the ntfy web app is closed. When enabled, users -# can enable background notifications in the web app. Once enabled, ntfy will forward published messages to the push -# endpoint, which will then forward it to the browser. -# -# You must configure web-push-public/private key, web-push-file, and web-push-email-address below to enable Web Push. -# Run "ntfy webpush keys" to generate the keys. -# -# - web-push-public-key is the generated VAPID public key, e.g. AA1234BBCCddvveekaabcdfqwertyuiopasdfghjklzxcvbnm1234567890 -# - web-push-private-key is the generated VAPID private key, e.g. AA2BB1234567890abcdefzxcvbnm1234567890 -# - web-push-file is a database file to keep track of browser subscription endpoints, e.g. `/var/cache/ntfy/webpush.db` -# - web-push-email-address is the admin email address send to the push provider, e.g. `sysadmin@example.com` -# - web-push-startup-queries is an optional list of queries to run on startup` -# -# web-push-public-key: -# web-push-private-key: -# web-push-file: -# web-push-email-address: -# web-push-startup-queries: - -# If enabled, ntfy can perform voice calls via Twilio via the "X-Call" header. -# -# - twilio-account is the Twilio account SID -# - twilio-auth-token is the Twilio auth token, e.g. affebeef258625862586258625862586 -# - twilio-phone-number is the outgoing phone number you purchased, e.g. +18775132586 -# - twilio-verify-service is the Twilio Verify service SID, e.g. VA12345beefbeef67890beefbeef122586 -# -# twilio-account: -# twilio-auth-token: -# twilio-phone-number: -# twilio-verify-service: - -# Interval in which keepalive messages are sent to the client. This is to prevent -# intermediaries closing the connection for inactivity. -# -# Note that the Android app has a hardcoded timeout at 77s, so it should be less than that. -# -# keepalive-interval: "45s" - -# Interval in which the manager prunes old messages, deletes topics -# and prints the stats. -# -# manager-interval: "1m" - -# Defines topic names that are not allowed, because they are otherwise used. There are a few default topics -# that cannot be used (e.g. app, account, settings, ...). To extend the default list, define them here. -# -# Example: -# disallowed-topics: -# - about -# - pricing -# - contact -# -# disallowed-topics: - -# Defines the root path of the web app, or disables the web app entirely. -# -# Can be any simple path, e.g. "/", "/app", or "/ntfy". For backwards-compatibility reasons, -# the values "app" (maps to "/"), "home" (maps to "/app"), or "disable" (maps to "") to disable -# the web app entirely. -# -# web-root: / - -# Various feature flags used to control the web app, and API access, mainly around user and -# account management. -# -# - enable-signup allows users to sign up via the web app, or API -# - enable-login allows users to log in via the web app, or API -# - enable-reservations allows users to reserve topics (if their tier allows it) -# -# enable-signup: false -# enable-login: false -# enable-reservations: false - -# Server URL of a Firebase/APNS-connected ntfy server (likely "https://ntfy.sh"). -# -# iOS users: -# If you use the iOS ntfy app, you MUST configure this to receive timely notifications. You'll like want this: -# upstream-base-url: "https://ntfy.sh" -# -# If set, all incoming messages will publish a "poll_request" message to the configured upstream server, containing -# the message ID of the original message, instructing the iOS app to poll this server for the actual message contents. -# This is to prevent the upstream server and Firebase/APNS from being able to read the message. -# -# - upstream-base-url is the base URL of the upstream server. Should be "https://ntfy.sh". -# - upstream-access-token is the token used to authenticate with the upstream server. This is only required -# if you exceed the upstream rate limits, or the uptream server requires authentication. -# -# upstream-base-url: -# upstream-access-token: - -# Configures message-specific limits -# -# - message-size-limit defines the max size of a message body. Please note message sizes >4K are NOT RECOMMENDED, -# and largely untested. If FCM and/or APNS is used, the limit should stay 4K, because their limits are around that size. -# If you increase this size limit regardless, FCM and APNS will NOT work for large messages. -# - message-delay-limit defines the max delay of a message when using the "Delay" header. -# -# message-size-limit: "4k" -# message-delay-limit: "3d" - -# Rate limiting: Total number of topics before the server rejects new topics. -# -# global-topic-limit: 15000 - -# Rate limiting: Number of subscriptions per visitor (IP address) -# -# visitor-subscription-limit: 30 - -# Rate limiting: Allowed GET/PUT/POST requests per second, per visitor: -# - visitor-request-limit-burst is the initial bucket of requests each visitor has -# - visitor-request-limit-replenish is the rate at which the bucket is refilled -# - visitor-request-limit-exempt-hosts is a comma-separated list of hostnames, IPs or CIDRs to be -# exempt from request rate limiting. Hostnames are resolved at the time the server is started. -# Example: "1.2.3.4,ntfy.example.com,8.7.6.0/24" -# -# visitor-request-limit-burst: 60 -# visitor-request-limit-replenish: "5s" -# visitor-request-limit-exempt-hosts: "" - -# Rate limiting: Hard daily limit of messages per visitor and day. The limit is reset -# every day at midnight UTC. If the limit is not set (or set to zero), the request -# limit (see above) governs the upper limit. -# -# visitor-message-daily-limit: 0 - -# Rate limiting: Allowed emails per visitor: -# - visitor-email-limit-burst is the initial bucket of emails each visitor has -# - visitor-email-limit-replenish is the rate at which the bucket is refilled -# -# visitor-email-limit-burst: 16 -# visitor-email-limit-replenish: "1h" - -# Rate limiting: Attachment size and bandwidth limits per visitor: -# - visitor-attachment-total-size-limit is the total storage limit used for attachments per visitor -# - visitor-attachment-daily-bandwidth-limit is the total daily attachment download/upload traffic limit per visitor -# -# visitor-attachment-total-size-limit: "100M" -# visitor-attachment-daily-bandwidth-limit: "500M" - -# Rate limiting: Enable subscriber-based rate limiting (mostly used for UnifiedPush) -# -# If subscriber-based rate limiting is enabled, messages published on UnifiedPush topics** (topics starting with "up") -# will be counted towards the "rate visitor" of the topic. A "rate visitor" is the first subscriber to the topic. -# -# Once enabled, a client subscribing to UnifiedPush topics via HTTP stream, or websockets, will be automatically registered as -# a "rate visitor", i.e. the visitor whose rate limits will be used when publishing on this topic. Note that setting the rate visitor -# requires **read-write permission** on the topic. -# -# If this setting is enabled, publishing to UnifiedPush topics will lead to a HTTP 507 response if -# no "rate visitor" has been previously registered. This is to avoid burning the publisher's "visitor-message-daily-limit". -# -# visitor-subscriber-rate-limiting: false - -# Payments integration via Stripe -# -# - stripe-secret-key is the key used for the Stripe API communication. Setting this values -# enables payments in the ntfy web app (e.g. Upgrade dialog). See https://dashboard.stripe.com/apikeys. -# - stripe-webhook-key is the key required to validate the authenticity of incoming webhooks from Stripe. -# Webhooks are essential up keep the local database in sync with the payment provider. See https://dashboard.stripe.com/webhooks. -# - billing-contact is an email address or website displayed in the "Upgrade tier" dialog to let people reach -# out with billing questions. If unset, nothing will be displayed. -# -# stripe-secret-key: -# stripe-webhook-key: -# billing-contact: - -# Metrics -# -# ntfy can expose Prometheus-style metrics via a /metrics endpoint, or on a dedicated listen IP/port. -# Metrics may be considered sensitive information, so before you enable them, be sure you know what you are -# doing, and/or secure access to the endpoint in your reverse proxy. -# -# - enable-metrics enables the /metrics endpoint for the default ntfy server (i.e. HTTP, HTTPS and/or Unix socket) -# - metrics-listen-http exposes the metrics endpoint via a dedicated [IP]:port. If set, this option implicitly -# enables metrics as well, e.g. "10.0.1.1:9090" or ":9090" -# -# enable-metrics: false -# metrics-listen-http: - -# Profiling -# -# ntfy can expose Go's net/http/pprof endpoints to support profiling of the ntfy server. If enabled, ntfy will listen -# on a dedicated listen IP/port, which can be accessed via the web browser on http://:/debug/pprof/. -# This can be helpful to expose bottlenecks, and visualize call flows. See https://pkg.go.dev/net/http/pprof for details. -# -# profile-listen-http: - -# Logging options -# -# By default, ntfy logs to the console (stderr), with an "info" log level, and in a human-readable text format. -# ntfy supports five different log levels, can also write to a file, log as JSON, and even supports granular -# log level overrides for easier debugging. Some options (log-level and log-level-overrides) can be hot reloaded -# by calling "kill -HUP $pid" or "systemctl reload ntfy". -# -# - log-format defines the output format, can be "text" (default) or "json" -# - log-file is a filename to write logs to. If this is not set, ntfy logs to stderr. -# - log-level defines the default log level, can be one of "trace", "debug", "info" (default), "warn" or "error". -# Be aware that "debug" (and particularly "trace") can be VERY CHATTY. Only turn them on briefly for debugging purposes. -# - log-level-overrides lets you override the log level if certain fields match. This is incredibly powerful -# for debugging certain parts of the system (e.g. only the account management, or only a certain visitor). -# This is an array of strings in the format: -# - "field=value -> level" to match a value exactly, e.g. "tag=manager -> trace" -# - "field -> level" to match any value, e.g. "time_taken_ms -> debug" -# Warning: Using log-level-overrides has a performance penalty. Only use it for temporary debugging. -# -# Check your permissions: -# If you are running ntfy with systemd, make sure this log file is owned by the -# ntfy user and group by running: chown ntfy.ntfy . -# -# Example (good for production): -# log-level: info -# log-format: json -# log-file: /var/log/ntfy.log -# -# Example level overrides (for debugging, only use temporarily): -# log-level-overrides: -# - "tag=manager -> trace" -# - "visitor_ip=1.2.3.4 -> debug" -# - "time_taken_ms -> debug" -# -# log-level: info -# log-level-overrides: -# log-format: text -# log-file: diff --git a/apps/ntfy/latest/docker-compose.yml b/apps/ntfy/latest/docker-compose.yml deleted file mode 100644 index 1106017d..00000000 --- a/apps/ntfy/latest/docker-compose.yml +++ /dev/null @@ -1,29 +0,0 @@ -services: - ntfy: - image: "binwiederhier/ntfy:latest" - container_name: ${CONTAINER_NAME} - command: - - serve - environment: - - TZ=${TIME_ZONE} - user: ${PUID}:${PGID} - volumes: - - ./data/cache/ntfy:/var/cache/ntfy - - ./data/ntfy:/etc/ntfy - ports: - - "${PANEL_APP_PORT_HTTP}:${APP_PORT_INTERNAL}" - restart: always - networks: - - 1panel-network - healthcheck: - test: ["CMD-SHELL", "wget -q --tries=1 http://localhost:${APP_PORT_INTERNAL}/v1/health -O - | grep -Eo '\"healthy\"\\s*:\\s*true' || exit 1"] - interval: 60s - timeout: 10s - retries: 3 - start_period: 40s - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/ntfy/logo.png b/apps/ntfy/logo.png deleted file mode 100644 index cf4c9c3b26335a21d537fa240387d0a5f3dad981..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5552 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%0ACacOfR@NlqU+0~UJKW_066Q;tL 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 lRWhdpp0x`lc$Cb01 - -> **Note** -> 1. Do not worry about security advisories above. They are fixed as soon as discovered and published to notify users -> 2. We develop OneDev at code.onedev.io for sake of dogfooding. All issues and pull requests should be submitted there - - - -
-

Self-hosted Git Server with Kanban and CI/CD

- -

-Quickstart -| Installation Guide -| All Documentation -

- -

-

- -## Out-of-box Symbol Search and Navigation - -Of course IDE is good at doing this, but often we need to search in old commits (investigate issues in release versions etc), and switching commits in IDE can be troublesome and slow.  - -It works by analyzing source code with ANTLR, extracting symbols for storage incrementally, fast and space efficient. Now supports Java, JavaScript, C, C++, CSharp, Go, PHP, Python, CSS, SCSS, LESS and R. GitHub adds this feature several years ago, but seems that it only works for main branch, and GitLab has to configure CI job to generate and upload LSIF which is troublesome and can occupy considerable space if you do it for each commit. - -You can also jump to symbol definition in diff while reviewing commits or pull requests. - -![searchsymbol](https://github.com/theonedev/onedev/raw/main/doc/images/search-symbol.gif) - -![jumpsymbol](https://github.com/theonedev/onedev/raw/main/doc/images/symbol.gif) - -## Code Search with Regular Expression - -You may switch to any commit, and search code with regular expression. OneDev under the hood indexes the code with Lucene incrementally. At search time, literal tri-grams in the regular expression are extracted for a coarse search, followed by exact match in the result. This makes the regex search blazing fast, even for large repositories like Linux. - -![regex](https://github.com/theonedev/onedev/raw/main/doc/images/regex-search.gif) - -## Annotate Source/Diff with Static Analysis Result to Facilitate Code Review - -Of course this can be done by many third party applications at GitHub, however they display the result on their own applications, and this makes review activities such as adding comment over analysis result difficult. Not to mention that you need to pay for these services. - -![annotation](https://github.com/theonedev/onedev/raw/main/doc/images/annotation.png) - -## Customizable Issue State and Field, with Deep CI/CD Integration - -The simple open/close state of GitHub/GitLab issues does not work well for many workflows. Considering issues submitted by customers: - -1. If developer closes issue upon committing the code, customer will be notified and may ask for the release fixing the issue. -2. If developer closes the issue at release time, QA might be confused at what issues to test as they all remain open at test time.  - -With customizable issue states, we may address the issue with four states: open, committed, test ready and released: - -1. When code is committed, issue transits to committed state automatically -2. When a test build is created and deployed, the issue transits to test ready state automatically. QA will be notified and can check issue detail to know which environment the test build is deployed into. -3. When test passes, and a release build is created, customers submitting the issue will be notified and they can check issue detail to see which release contains the fix. - -![boards](https://github.com/theonedev/onedev/raw/main/doc/images/boards.png) - -![fixing-build](https://github.com/theonedev/onedev/raw/main/doc/images/fixing-build.png) - -## Service Desk to Create/Discuss Issues via Email - -Service desk allows your users to submit tickets via email without the need to have a OneDev account. These tickets can then be created in desired projects, and assigned to appropriate members in your team. All further discussions over the tickets can take place completely in email, with discussion contents posted to ticket as comments. User will also get notifications when there are any ticket activities, for instance, when a relevant release is created or deployed - -![service-desk.png](https://github.com/theonedev/onedev/raw/main/doc/images/service-desk.png) - -## A powerful and Intuitive Query Language - -Thanks to ANTLR again, OneDev ships sophisticated query languages for projects, commits, issues, builds, and pull requests, with intuitive auto-completions and hints. For instance, it enables our customers finding fixed issues between their running release and latest release, and enables us to find all commits submitted by someone touching specified modules, etc.  - -Queries can be saved and subscribed, so that you won't miss anything interested. - -![query](https://github.com/theonedev/onedev/raw/main/doc/images/query.gif) - -## A Full-fledge CI/CD Engine without Writing Yaml - -OneDev ships with GUI to generate CI/CD Yaml. No need to google around for Yaml grammars. A one-liner docker command to start OneDev server and you have a local CI/CD runner automatically. Concerns about server capability to run massive jobs? Another one-liner to connect self-updating agent from any machine. Want auto-scale CI/CD farm? A helm one-liner to deploy OneDev into k8s cluster.  - -Build pipeline, matrix jobs, typed parameters, parameter chaining, step templates, build promotions… too many neat features to elaborate… - -![job-def](https://github.com/theonedev/onedev/raw/main/doc/images/job-command.gif) - -![run-job](https://github.com/theonedev/onedev/raw/main/doc/images/build-option.gif) - -![pipeline.gif](https://github.com/theonedev/onedev/raw/main/doc/images/pipeline.gif) - -## Flexible Pull Request Review Policy and Reviewer Suggestion - -Specify pull request review policy based on author, branch, and changed files. OneDev can leverage git change history to suggest most appropriate reviewers for pull requests touching certain files. - -![review-policy](https://github.com/theonedev/onedev/raw/main/doc/images/review-policy.gif) - -## Lightweight Review without Pull Request - -Comment on any part of code or diff to start a lightweight review without opening pull request. Review comments live through code modification and even file rename to serve as documentation.  - -Each discussion is threaded so that you can easily know discussions with new comments/updates. - -![file-comment](https://github.com/theonedev/onedev/raw/main/doc/images/file-comment.gif) - -![thread-comments](https://github.com/theonedev/onedev/raw/main/doc/images/threaded-comments.png) - -## Command Palette to Access Features Quickly - -Press cmd/ctrl-k to bring up command palette from anywhere. Search projects, files, issues, pull requests, builds, and various settings and jump to them without leaving your keyboard - -![command-palette.gif](https://github.com/theonedev/onedev/raw/main/doc/images/command-palette.gif) - -## Write Markdown Pleasantly With a Smart Editor - -When embedding an image in a markdown file in GitHub/GitLab, you need to upload the image in a separate page, and then figure out the relative path to reference that image. With OneDev, you simply upload the image to desired folder in same editor, and the link will be generated automatically.  - -OneDev tracks your cursor in edit window and scrolls the preview window as necessary so that you can always preview what you are typing. - -![markdown](https://github.com/theonedev/onedev/raw/main/doc/images/markdown.gif) - -## SLOC Trend By Language - -OneDev inspects git history of main branch to calculate trend of source lines of code by language efficiently. - -![stats](https://github.com/theonedev/onedev/raw/main/doc/images/stats.png) - -## Project Hierarchy to Facilitate Setting Inheritance - -Organization is ideal for public service. However for self-hosted internal use, we feel that a hierarchical structure is more practical to organize projects. Child projects can inherit settings from parent project and can selectively override some of them if necessary. This reduces a lot of overhead to manage a lot of projects in the company. - -## Fast and Reliable with Moderate Resource Usage - -OneDev is carefully designed with performance in mind. With a 2 core 2GB box, you will get all features above for medium sized projects. -It has been intensively used for more than 5 years, with battle-proven reliability. Fixing bugs is our highest priority, and there is -normally few to no known bugs in the wild. - ----- - -# Special Thanks - -![yourkit](https://www.yourkit.com/images/yklogo.png) - -[YourKit](https://yourkit.com) supports this project by providing a free open source license of their excellent Java profiler \ No newline at end of file diff --git a/apps/onedev/data.yml b/apps/onedev/data.yml deleted file mode 100644 index f200c5d9..00000000 --- a/apps/onedev/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: OneDev -tags: - - DevOps -title: 具有 CI/CD 和 Kanban 的自托管 Git 服务器 -description: 具有 CI/CD 和 Kanban 的自托管 Git 服务器 -additionalProperties: - key: onedev - name: OneDev - tags: - - DevOps - shortDescZh: 具有 CI/CD 和 Kanban 的自托管 Git 服务器 - shortDescEn: Self-hosted Git Server with CI/CD and Kanban - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://onedev.io - github: https://github.com/theonedev/onedev - document: https://docs.onedev.io diff --git a/apps/onedev/latest/.env.sample b/apps/onedev/latest/.env.sample deleted file mode 100644 index 4c476a86..00000000 --- a/apps/onedev/latest/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME="onedev" -DATA_PATH="./data" -SSH_PORT="40086" -PANEL_APP_PORT_HTTP="40085" diff --git a/apps/onedev/latest/data.yml b/apps/onedev/latest/data.yml deleted file mode 100644 index 0d8b03b1..00000000 --- a/apps/onedev/latest/data.yml +++ /dev/null @@ -1,25 +0,0 @@ -additionalProperties: - formFields: - - default: 40085 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: 40086 - edit: true - envKey: SSH_PORT - labelEn: SSH Port - labelZh: SSH端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/onedev/latest/docker-compose.yml b/apps/onedev/latest/docker-compose.yml deleted file mode 100644 index 2a90ecfd..00000000 --- a/apps/onedev/latest/docker-compose.yml +++ /dev/null @@ -1,19 +0,0 @@ -services: - onedev: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:6610" - - "${SSH_PORT}:6611" - volumes: - - /var/run/docker.sock:/var/run/docker.sock - - "${DATA_PATH}:/opt/onedev" - image: 1dev/server:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/onedev/logo.png b/apps/onedev/logo.png deleted file mode 100644 index e63903103a16e022ef1c8f2b7f4d4f589fffd0f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5285 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 TTK%8xh=-@AZKzeJ;Q;v`;hi%E diff --git a/apps/onlyoffice/9.2.1.1/.env.sample b/apps/onlyoffice/9.2.1.1/.env.sample deleted file mode 100644 index 24511f2e..00000000 --- a/apps/onlyoffice/9.2.1.1/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME="onlyoffice" -PANEL_APP_PORT_HTTP="40156" -DATA_PATH="./data" -JWT_SECRET="secret" diff --git a/apps/onlyoffice/9.2.1.1/data.yml b/apps/onlyoffice/9.2.1.1/data.yml deleted file mode 100644 index 468b5616..00000000 --- a/apps/onlyoffice/9.2.1.1/data.yml +++ /dev/null @@ -1,26 +0,0 @@ -additionalProperties: - formFields: - - default: 40156 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: HTTP Port - labelZh: HTTP 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: secret - edit: true - envKey: JWT_SECRET - labelEn: JWT Secret - labelZh: JWT密码 - random: true - required: true - rule: paramComplexity - type: password diff --git a/apps/onlyoffice/9.2.1.1/docker-compose.yml b/apps/onlyoffice/9.2.1.1/docker-compose.yml deleted file mode 100644 index d60b070a..00000000 --- a/apps/onlyoffice/9.2.1.1/docker-compose.yml +++ /dev/null @@ -1,22 +0,0 @@ -services: - onlyoffice: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - volumes: - - ${DATA_PATH}/logs:/var/log/onlyoffice - - ${DATA_PATH}/data:/var/www/onlyoffice/Data - - ${DATA_PATH}/lib:/var/lib/onlyoffice - - ${DATA_PATH}/db:/var/lib/postgresql - environment: - - JWT_SECRET=${JWT_SECRET} - image: onlyoffice/documentserver:9.2.1.1 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/onlyoffice/README.md b/apps/onlyoffice/README.md deleted file mode 100644 index 666ff1e2..00000000 --- a/apps/onlyoffice/README.md +++ /dev/null @@ -1,149 +0,0 @@ -# 使用说明 - -部署完成后按照页面提示,在终端执行命令,开启服务。 - -# 原始相关 -*** -[![License](https://img.shields.io/badge/License-GNU%20AGPL%20V3-green.svg?style=flat)](https://www.gnu.org/licenses/agpl-3.0.en.html) ![Release](https://img.shields.io/badge/Release-v7.4.0-blue.svg?style=flat) - -## Overview - -[ONLYOFFICE Docs](https://www.onlyoffice.com/office-suite.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubDS)* is a free collaborative online office suite comprising viewers and editors for texts, spreadsheets and presentations, forms and PDF, fully compatible with Office Open XML formats: .docx, .xlsx, .pptx and enabling collaborative editing in real time. - -ONLYOFFICE Docs can be used as a part of [ONLYOFFICE Workspace](https://www.onlyoffice.com/workspace.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubCS) or with [third-party sync&share solutions](https://www.onlyoffice.com/all-connectors.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubDS) (e.g. Nextcloud, ownCloud, Seafile) to enable collaborative editing within their interface. - -It has three editions - [Community, Enterprise, and Developer](#onlyoffice-docs-editions). - -\* Starting from version 6.0, Document Server is distributed under a new name - ONLYOFFICE Docs. - -## Components - -ONLYOFFICE Docs contains the following components: - -* [server](https://github.com/ONLYOFFICE/server) - the backend server software layer which is the base for all other components of ONLYOFFICE Docs. -* [core](https://github.com/ONLYOFFICE/core) - server core components of ONLYOFFICE Docs which enable the conversion between the most popular office document formats (DOC, DOCX, ODT, RTF, TXT, PDF, HTML, EPUB, XPS, DjVu, XLS, XLSX, ODS, CSV, PPT, PPTX, ODP). -* [sdkjs](https://github.com/ONLYOFFICE/sdkjs) - JavaScript SDK for the ONLYOFFICE Docs which contains API for all the included components client-side interaction. -* [web-apps](https://github.com/ONLYOFFICE/web-apps) - the frontend for ONLYOFFICE Docs which builds the program interface and allows the user create, edit, save and export text, spreadsheet and presentation documents using the common interface of a document editor. -* [dictionaries](https://github.com/ONLYOFFICE/dictionaries) - the dictionaries of various languages used for spellchecking in ONLYOFFICE Docs. - -## Plugins - -ONLYOFFICE Docs offer support for plugins allowing developers to add specific features to the editors that are not directly related to the OOXML format. For more information see [our API](https://api.onlyoffice.com/plugin/basic) or visit github [plugins repo](https://github.com/ONLYOFFICE/onlyoffice.github.io). - -## Functionality - -ONLYOFFICE Docs includes the following editors: - -* [ONLYOFFICE Document Editor](https://www.onlyoffice.com/document-editor.aspx?utm_source=GitHub&utm_medium=social&utm_campaign=GitHubDesktop) -* [ONLYOFFICE Spreadsheet Editor](https://www.onlyoffice.com/spreadsheet-editor.aspx?utm_source=GitHub&utm_medium=social&utm_campaign=GitHubDesktop) -* [ONLYOFFICE Presentation Editor](https://www.onlyoffice.com/presentation-editor.aspx?utm_source=GitHub&utm_medium=social&utm_campaign=GitHubDesktop) -* [ONLYOFFICE Form Creator](https://www.onlyoffice.com/form-creator.aspx?utm_source=GitHub&utm_medium=social&utm_campaign=GitHubDesktop) -* [ONLYOFFICE PDF reader and converter](https://www.onlyoffice.com/pdf-reader.aspx?utm_source=GitHub&utm_medium=social&utm_campaign=GitHubDesktop) - -The editors allow you to create, edit, save and export text, spreadsheet and presentation documents and additionally have the features: - -* Collaborative editing -* Hieroglyph support -* Reviewing -* Spell-checking - -## ONLYOFFICE Docs editions - -ONLYOFFICE offers different versions of its online document editors that can be deployed on your own servers. - -ONLYOFFICE Docs (packaged as Document Server): - -* Community Edition (`onlyoffice-documentserver` package) -* Enterprise Edition (`onlyoffice-documentserver-ee` package) -* Developer Edition (`onlyoffice-documentserver-de` package) - -The table below will help you to make the right choice. - -| Pricing and licensing | Community Edition | Enterprise Edition | Developer Edition | -| ------------- | ------------- | ------------- | ------------- | -| | [Get it now](https://www.onlyoffice.com/download-docs.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubDS#docs-community) | [Start Free Trial](https://www.onlyoffice.com/download-docs.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubDS#docs-enterprise) | [Start Free Trial](https://www.onlyoffice.com/download-docs.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubDS#docs-developer) | -| Cost | FREE | [Go to the pricing page](https://www.onlyoffice.com/docs-enterprise-prices.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubDS) | [Go to the pricing page](https://www.onlyoffice.com/developer-edition-prices.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubDS) | -| Simultaneous connections | up to 20 maximum | As in chosen pricing plan | As in chosen pricing plan | -| Number of users | up to 20 recommended | As in chosen pricing plan | As in chosen pricing plan | -| Clusterization | - | + | + | -| License | GNU AGPL v.3 | Proprietary | Proprietary | -| **Support** | **Community Edition** | **Enterprise Edition** | **Developer Edition** | -| Documentation | [Help Center](https://helpcenter.onlyoffice.com/installation/docs-community-index.aspx) | [Help Center](https://helpcenter.onlyoffice.com/installation/docs-enterprise-index.aspx) | [Help Center](https://helpcenter.onlyoffice.com/installation/docs-developer-index.aspx) | -| Standard support | [GitHub](https://github.com/ONLYOFFICE/DocumentServer/issues) or paid | One year support included | One year support included | -| Premium support | [Contact Us](mailto:sales@onlyoffice.com) | [Contact Us](mailto:sales@onlyoffice.com) | [Contact Us](mailto:sales@onlyoffice.com) | -| **Services** | **Community Edition** | **Enterprise Edition** | **Developer Edition** | -| Conversion Service | + | + | + | -| Document Builder Service | + | + | + | -| **Interface** | **Community Edition** | **Enterprise Edition** | **Developer Edition** | -| Tabbed interface | + | + | + | -| Dark theme | + | + | + | -| 125%, 150%, 175%, 200% scaling | + | + | + | -| White label | - | - | + | -| Integrated test example (node.js) | + | + | + | -| Mobile web editors | - | +** | +** | -| **Plugins & Macros** | **Community Edition** | **Enterprise Edition** | **Developer Edition** | -| Plugins | + | + | + | -| Macros | + | + | + | -| **Collaborative capabilities** | **Community Edition** | **Enterprise Edition** | **Developer Edition** | -| Two co-editing modes | + | + | + | -| Comments | + | + | + | -| Built-in chat | + | + | + | -| Review and tracking changes | + | + | + | -| Display modes of tracking changes | + | + | + | -| Version history | + | + | + | -| **Document Editor features** | **Community Edition** | **Enterprise Edition** | **Developer Edition** | -| Font and paragraph formatting | + | + | + | -| Object insertion | + | + | + | -| Adding Content control | + | + | + | -| Editing Content control | + | + | + | -| Layout tools | + | + | + | -| Table of contents | + | + | + | -| Navigation panel | + | + | + | -| Mail Merge | + | + | + | -| Comparing Documents | + | + | + | -| **Spreadsheet Editor features** | **Community Edition** | **Enterprise Edition** | **Developer Edition** | -| Font and paragraph formatting | + | + | + | -| Object insertion | + | + | + | -| Functions, formulas, equations | + | + | + | -| Table templates | + | + | + | -| Pivot tables | + | + | + | -| Data validation | + | + | + | -| Conditional formatting | + | + | + | -| Sparklines | + | + | + | -| Sheet Views | + | + | + | -| **Presentation Editor features** | **Community Edition** | **Enterprise Edition** | **Developer Edition** | -| Font and paragraph formatting | + | + | + | -| Object insertion | + | + | + | -| Transitions | + | + | + | -| Presenter mode | + | + | + | -| Notes | + | + | + | -| **Form creator features** | **Community Edition** | **Enterprise Edition** | **Developer Edition** | -| Adding form fields | + | + | + | -| Form preview | + | + | + | -| Saving as PDF | + | + | + | -| **Security features** | **Community Edition** | **Enterprise Edition** | **Developer Edition** | -| End-to-end encryption via Private Rooms*** | + | + | - | -| | [Get it now](https://www.onlyoffice.com/download-docs.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubDS#docs-community) | [Start Free Trial](https://www.onlyoffice.com/download-docs.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubDS#docs-enterprise) | [Start Free Trial](https://www.onlyoffice.com/download-docs.aspx?utm_source=github&utm_medium=cpc&utm_campaign=GitHubDS#docs-developer) | - -\** If supported by DMS -\*** End-to-end encryption via Private Rooms requires ONLYOFFICE Workspace - -## How to Install on a local server - -The easiest way to install ONLYOFFICE Docs is to use **the Docker image** ([the official source code](https://github.com/ONLYOFFICE/Docker-DocumentServer)) - -* [Installing ONLYOFFICE Docs Docker](https://helpcenter.onlyoffice.com/installation/docs-community-install-docker.aspx) -* [Installing ONLYOFFICE Docs for Linux](https://helpcenter.onlyoffice.com/installation/docs-community-install-ubuntu.aspx) -* [Installing ONLYOFFICE Docs for Windows](https://helpcenter.onlyoffice.com/installation/docs-community-install-windows.aspx) - -## How to Build - -Instructions for building ONLYOFFICE Docs for a local server from source code are in [our helpcenter](https://helpcenter.onlyoffice.com/installation/docs-community-compile.aspx). - -## License - -ONLYOFFICE Docs is licensed under the GNU Affero Public License, version 3.0. See [LICENSE](https://onlyo.co/38YZGJh) for more information. - -## User Feedback and Support - -If you have any problems with or questions about ONLYOFFICE Docs, please visit our official forum to find answers to your questions: [forum.onlyoffice.com](https://forum.onlyoffice.com) or you can ask and answer ONLYOFFICE development questions on [Stack Overflow](https://stackoverflow.com/questions/tagged/onlyoffice). diff --git a/apps/onlyoffice/data.yml b/apps/onlyoffice/data.yml deleted file mode 100644 index c528ac05..00000000 --- a/apps/onlyoffice/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: ONLYOFFICE Docs -tags: - - 工具 -title: 一个免费的在线办公套件 -description: 一个免费的在线办公套件 -additionalProperties: - key: onlyoffice - name: ONLYOFFICE Docs - tags: - - Tool - shortDescZh: 一个免费的在线办公套件 - shortDescEn: A free collaborative online office suite - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://www.onlyoffice.com - github: https://github.com/ONLYOFFICE - document: https://helpcenter.onlyoffice.com diff --git a/apps/onlyoffice/latest/.env.sample b/apps/onlyoffice/latest/.env.sample deleted file mode 100644 index 24511f2e..00000000 --- a/apps/onlyoffice/latest/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME="onlyoffice" -PANEL_APP_PORT_HTTP="40156" -DATA_PATH="./data" -JWT_SECRET="secret" diff --git a/apps/onlyoffice/latest/data.yml b/apps/onlyoffice/latest/data.yml deleted file mode 100644 index 468b5616..00000000 --- a/apps/onlyoffice/latest/data.yml +++ /dev/null @@ -1,26 +0,0 @@ -additionalProperties: - formFields: - - default: 40156 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: HTTP Port - labelZh: HTTP 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: secret - edit: true - envKey: JWT_SECRET - labelEn: JWT Secret - labelZh: JWT密码 - random: true - required: true - rule: paramComplexity - type: password diff --git a/apps/onlyoffice/latest/docker-compose.yml b/apps/onlyoffice/latest/docker-compose.yml deleted file mode 100644 index c6d30fe1..00000000 --- a/apps/onlyoffice/latest/docker-compose.yml +++ /dev/null @@ -1,22 +0,0 @@ -services: - onlyoffice: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - volumes: - - ${DATA_PATH}/logs:/var/log/onlyoffice - - ${DATA_PATH}/data:/var/www/onlyoffice/Data - - ${DATA_PATH}/lib:/var/lib/onlyoffice - - ${DATA_PATH}/db:/var/lib/postgresql - environment: - - JWT_SECRET=${JWT_SECRET} - image: onlyoffice/documentserver:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/onlyoffice/logo.png b/apps/onlyoffice/logo.png deleted file mode 100644 index ab9a64e155c6d372c2afa729905cd8881b2e05c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3476 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 CBM^ZA diff --git a/apps/openlitespeed/1.8.1-lsphp74/.env.sample b/apps/openlitespeed/1.8.1-lsphp74/.env.sample deleted file mode 100644 index 0902e645..00000000 --- a/apps/openlitespeed/1.8.1-lsphp74/.env.sample +++ /dev/null @@ -1,6 +0,0 @@ -CONTAINER_NAME="openlitespeed" -DATA_PATH="./data" -PANEL_APP_PORT_CONSOLE="40113" -PANEL_APP_PORT_HTTP="80" -PANEL_APP_PORT_HTTPS="443" -TIME_ZONE="Asia/Shanghai" diff --git a/apps/openlitespeed/1.8.1-lsphp74/data.yml b/apps/openlitespeed/1.8.1-lsphp74/data.yml deleted file mode 100644 index 96591f6f..00000000 --- a/apps/openlitespeed/1.8.1-lsphp74/data.yml +++ /dev/null @@ -1,40 +0,0 @@ -additionalProperties: - formFields: - - default: 80 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: HTTP Port - labelZh: HTTP端口 - required: true - rule: paramPort - type: number - - default: 443 - edit: true - envKey: PANEL_APP_PORT_HTTPS - labelEn: HTTPS Port - labelZh: HTTPS端口 - required: true - rule: paramPort - type: number - - default: 40113 - edit: true - envKey: PANEL_APP_PORT_CONSOLE - labelEn: Console Port - labelZh: 控制台端口 - required: true - rule: paramPort - type: number - - default: ./data - disabled: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: Asia/Shanghai - edit: true - envKey: TIME_ZONE - labelEn: Time zone - labelZh: 时区 - required: true - type: text diff --git a/apps/openlitespeed/1.8.1-lsphp74/data/bin/container/appinstallctl.sh b/apps/openlitespeed/1.8.1-lsphp74/data/bin/container/appinstallctl.sh deleted file mode 100644 index d79c63f1..00000000 --- a/apps/openlitespeed/1.8.1-lsphp74/data/bin/container/appinstallctl.sh +++ /dev/null @@ -1,660 +0,0 @@ -#!/bin/bash -DEFAULT_VH_ROOT='/var/www/vhosts' -VH_DOC_ROOT='' -VHNAME='' -APP_NAME='' -DOMAIN='' -WWW_UID='' -WWW_GID='' -WP_CONST_CONF='' -PUB_IP=$(curl -s http://checkip.amazonaws.com) -DB_HOST='mysql' -PLUGINLIST="litespeed-cache.zip" -THEME='twentytwenty' -EPACE=' ' - -echow(){ - FLAG=${1} - shift - echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}" -} - -help_message(){ - echo -e "\033[1mOPTIONS\033[0m" - echow '-A, -app [wordpress] -D, --domain [DOMAIN_NAME]' - echo "${EPACE}${EPACE}Example: appinstallctl.sh --app wordpress --domain example.com" - echow '-H, --help' - echo "${EPACE}${EPACE}Display help and exit." - exit 0 -} - -check_input(){ - if [ -z "${1}" ]; then - help_message - exit 1 - fi -} - -linechange(){ - LINENUM=$(grep -n "${1}" ${2} | cut -d: -f 1) - if [ -n "${LINENUM}" ] && [ "${LINENUM}" -eq "${LINENUM}" ] 2>/dev/null; then - sed -i "${LINENUM}d" ${2} - sed -i "${LINENUM}i${3}" ${2} - fi -} - -ck_ed(){ - if [ ! -f /bin/ed ]; then - echo "Install ed package.." - apt-get install ed -y > /dev/null 2>&1 - fi -} - -ck_unzip(){ - if [ ! -f /usr/bin/unzip ]; then - echo "Install unzip package.." - apt-get install unzip -y > /dev/null 2>&1 - fi -} - -get_owner(){ - WWW_UID=$(stat -c "%u" ${DEFAULT_VH_ROOT}) - WWW_GID=$(stat -c "%g" ${DEFAULT_VH_ROOT}) - if [ ${WWW_UID} -eq 0 ] || [ ${WWW_GID} -eq 0 ]; then - WWW_UID=1000 - WWW_GID=1000 - echo "Set owner to ${WWW_UID}" - fi -} - -get_db_pass(){ - if [ -f ${DEFAULT_VH_ROOT}/${1}/.db_pass ]; then - SQL_DB=$(grep -i Database ${VH_ROOT}/.db_pass | awk -F ':' '{print $2}' | tr -d '"') - SQL_USER=$(grep -i Username ${VH_ROOT}/.db_pass | awk -F ':' '{print $2}' | tr -d '"') - SQL_PASS=$(grep -i Password ${VH_ROOT}/.db_pass | awk -F ':' '{print $2}' | tr -d '"') - else - echo 'db pass file can not locate, skip wp-config pre-config.' - fi -} - -set_vh_docroot(){ - if [ "${VHNAME}" != '' ]; then - VH_ROOT="${DEFAULT_VH_ROOT}/${VHNAME}" - VH_DOC_ROOT="${DEFAULT_VH_ROOT}/${VHNAME}/html" - WP_CONST_CONF="${VH_DOC_ROOT}/wp-content/plugins/litespeed-cache/data/const.default.ini" - elif [ -d ${DEFAULT_VH_ROOT}/${1}/html ]; then - VH_ROOT="${DEFAULT_VH_ROOT}/${1}" - VH_DOC_ROOT="${DEFAULT_VH_ROOT}/${1}/html" - WP_CONST_CONF="${VH_DOC_ROOT}/wp-content/plugins/litespeed-cache/data/const.default.ini" - else - echo "${DEFAULT_VH_ROOT}/${1}/html does not exist, please add domain first! Abort!" - exit 1 - fi -} - -check_sql_native(){ - local COUNTER=0 - local LIMIT_NUM=100 - until [ "$(curl -v mysql:3306 2>&1 | grep -i 'native\|Connected')" ]; do - echo "Counter: ${COUNTER}/${LIMIT_NUM}" - COUNTER=$((COUNTER+1)) - if [ ${COUNTER} = 10 ]; then - echo '--- MySQL is starting, please wait... ---' - elif [ ${COUNTER} = ${LIMIT_NUM} ]; then - echo '--- MySQL is timeout, exit! ---' - exit 1 - fi - sleep 1 - done -} - -install_wp_plugin(){ - for PLUGIN in ${PLUGINLIST}; do - wget -q -P ${VH_DOC_ROOT}/wp-content/plugins/ https://downloads.wordpress.org/plugin/${PLUGIN} - if [ ${?} = 0 ]; then - ck_unzip - unzip -qq -o ${VH_DOC_ROOT}/wp-content/plugins/${PLUGIN} -d ${VH_DOC_ROOT}/wp-content/plugins/ - else - echo "${PLUGINLIST} FAILED to download" - fi - done - rm -f ${VH_DOC_ROOT}/wp-content/plugins/*.zip -} - -set_htaccess(){ - if [ ! -f ${VH_DOC_ROOT}/.htaccess ]; then - touch ${VH_DOC_ROOT}/.htaccess - fi - cat << EOM > ${VH_DOC_ROOT}/.htaccess -# BEGIN WordPress - -RewriteEngine On -RewriteBase / -RewriteRule ^index\.php$ - [L] -RewriteCond %{REQUEST_FILENAME} !-f -RewriteCond %{REQUEST_FILENAME} !-d -RewriteRule . /index.php [L] - -# END WordPress -EOM -} - -get_theme_name(){ - THEME_NAME=$(grep WP_DEFAULT_THEME ${VH_DOC_ROOT}/wp-includes/default-constants.php | grep -v '!' | awk -F "'" '{print $4}') - echo "${THEME_NAME}" | grep 'twenty' >/dev/null 2>&1 - if [ ${?} = 0 ]; then - THEME="${THEME_NAME}" - fi -} - -set_lscache(){ - cat << EOM > "${WP_CONST_CONF}" -; -; This is the predefined default LSCWP configuration file -; -; All the keys and values please refer \`src/const.cls.php\` -; -; Comments start with \`;\` -; -;; -------------------------------------------------- ;; -;; -------------- General ----------------- ;; -;; -------------------------------------------------- ;; -; O_AUTO_UPGRADE -auto_upgrade = false -; O_API_KEY -api_key = '' -; O_SERVER_IP -server_ip = '' -; O_NEWS -news = false -;; -------------------------------------------------- ;; -;; -------------- Cache ----------------- ;; -;; -------------------------------------------------- ;; -cache-priv = true -cache-commenter = true -cache-rest = true -cache-page_login = true -cache-favicon = true -cache-resources = true -cache-browser = false -cache-mobile = false -cache-mobile_rules = 'Mobile -Android -Silk/ -Kindle -BlackBerry -Opera Mini -Opera Mobi' -cache-exc_useragents = '' -cache-exc_cookies = '' -cache-exc_qs = '' -cache-exc_cat = '' -cache-exc_tag = '' -cache-force_uri = '' -cache-force_pub_uri = '' -cache-priv_uri = '' -cache-exc = '' -cache-exc_roles = '' -cache-drop_qs = 'fbclid -gclid -utm* -_ga' -cache-ttl_pub = 604800 -cache-ttl_priv = 1800 -cache-ttl_frontpage = 604800 -cache-ttl_feed = 604800 -; O_CACHE_TTL_REST -cache-ttl_rest = 604800 -cache-ttl_browser = 31557600 -cache-login_cookie = '' -cache-vary_group = '' -cache-ttl_status = '403 3600 -404 3600 -500 3600' -;; -------------------------------------------------- ;; -;; -------------- Purge ----------------- ;; -;; -------------------------------------------------- ;; -; O_PURGE_ON_UPGRADE -purge-upgrade = true -; O_PURGE_STALE -purge-stale = true -purge-post_all = false -purge-post_f = true -purge-post_h = true -purge-post_p = true -purge-post_pwrp = true -purge-post_a = true -purge-post_y = false -purge-post_m = true -purge-post_d = false -purge-post_t = true -purge-post_pt = true -purge-timed_urls = '' -purge-timed_urls_time = '' -purge-hook_all = 'switch_theme -wp_create_nav_menu -wp_update_nav_menu -wp_delete_nav_menu -create_term -edit_terms -delete_term -add_link -edit_link -delete_link' -;; -------------------------------------------------- ;; -;; -------------- ESI ----------------- ;; -;; -------------------------------------------------- ;; -; O_ESI -esi = false -; O_ESI_CACHE_ADMBAR -esi-cache_admbar = true -; O_ESI_CACHE_COMMFORM -esi-cache_commform = true -; O_ESI_NONCE -esi-nonce = 'stats_nonce -subscribe_nonce' -;; -------------------------------------------------- ;; -;; -------------- Utilities ----------------- ;; -;; -------------------------------------------------- ;; -util-heartbeat = true -util-instant_click = false -util-check_advcache = true -util-no_https_vary = false -;; -------------------------------------------------- ;; -;; -------------- Debug ----------------- ;; -;; -------------------------------------------------- ;; -; O_DEBUG_DISABLE_ALL -debug-disable_all = false -; O_DEBUG -debug = false -; O_DEBUG_IPS -debug-ips = '127.0.0.1' -; O_DEBUG_LEVEL -debug-level = false -; O_DEBUG_FILESIZE -debug-filesize = 3 -; O_DEBUG_COOKIE -debug-cookie = false -; O_DEBUG_COLLAPS_QS -debug-collaps_qs = false -; O_DEBUG_INC -debug-inc = '' -; O_DEBUG_EXC -debug-exc = '' -;; -------------------------------------------------- ;; -;; -------------- DB Optm ----------------- ;; -;; -------------------------------------------------- ;; -; O_DB_OPTM_REVISIONS_MAX -db_optm-revisions_max = 0 -; O_DB_OPTM_REVISIONS_AGE -db_optm-revisions_age = 0 -;; -------------------------------------------------- ;; -;; -------------- HTML Optm ----------------- ;; -;; -------------------------------------------------- ;; -; O_OPTM_CSS_MIN -optm-css_min = false -optm-css_inline_min = false -; O_OPTM_CSS_COMB -optm-css_comb = false -optm-css_comb_priority = false -; O_OPTM_CSS_HTTP2 -optm-css_http2 = false -optm-css_exc = '' -; O_OPTM_JS_MIN -optm-js_min = false -optm-js_inline_min = false -; O_OPTM_JS_COMB -optm-js_comb = false -optm-js_comb_priority = false -; O_OPTM_JS_HTTP2 -optm-js_http2 = false -; O_OPTM_EXC_JQ -optm-js_exc = '' -optm-ttl = 604800 -optm-html_min = false -optm-qs_rm = false -optm-ggfonts_rm = false -; O_OPTM_CSS_ASYNC -optm-css_async = false -; O_OPTM_CCSS_GEN -optm-ccss_gen = true -; O_OPTM_CCSS_ASYNC -optm-ccss_async = true -; O_OPTM_CSS_ASYNC_INLINE -optm-css_async_inline = true -; O_OPTM_CSS_FONT_DISPLAY -optm-css_font_display = false -; O_OPTM_JS_DEFER -optm-js_defer = false -; O_OPTM_JS_INLINE_DEFER -optm-js_inline_defer = false -optm-emoji_rm = false -optm-exc_jq = true -optm-ggfonts_async = false -optm-max_size = 2 -optm-rm_comment = false -optm-exc_roles = '' -optm-ccss_con = '' -optm-js_defer_exc = '' -; O_OPTM_DNS_PREFETCH -optm-dns_prefetch = '' -; O_OPTM_DNS_PREFETCH_CTRL -optm-dns_prefetch_ctrl = false -optm-exc = '' -; O_OPTM_CCSS_SEP_POSTTYPE -optm-ccss_sep_posttype = '' -; O_OPTM_CCSS_SEP_URI -optm-ccss_sep_uri = '' -;; -------------------------------------------------- ;; -;; -------------- Object Cache ----------------- ;; -;; -------------------------------------------------- ;; -object = true -object-kind = false -;object-host = 'localhost' -object-host = '/var/www/memcached.sock' -;object-port = 11211 -cache_object_port = '' -object-life = 360 -object-persistent = true -object-admin = true -object-transients = true -object-db_id = 0 -object-user = '' -object-pswd = '' -object-global_groups = 'users -userlogins -usermeta -user_meta -site-transient -site-options -site-lookup -blog-lookup -blog-details -rss -global-posts -blog-id-cache' -object-non_persistent_groups = 'comment -counts -plugins -wc_session_id' -;; -------------------------------------------------- ;; -;; -------------- Discussion ----------------- ;; -;; -------------------------------------------------- ;; -; O_DISCUSS_AVATAR_CACHE -discuss-avatar_cache = false -; O_DISCUSS_AVATAR_CRON -discuss-avatar_cron = false -; O_DISCUSS_AVATAR_CACHE_TTL -discuss-avatar_cache_ttl = 604800 -;; -------------------------------------------------- ;; -;; -------------- Media ----------------- ;; -;; -------------------------------------------------- ;; -; O_MEDIA_LAZY -media-lazy = false -; O_MEDIA_LAZY_PLACEHOLDER -media-lazy_placeholder = '' -; O_MEDIA_PLACEHOLDER_RESP -media-placeholder_resp = false -; O_MEDIA_PLACEHOLDER_RESP_COLOR -media-placeholder_resp_color = '#cfd4db' -; O_MEDIA_PLACEHOLDER_RESP_GENERATOR -media-placeholder_resp_generator = false -; O_MEDIA_PLACEHOLDER_RESP_SVG -media-placeholder_resp_svg = '' -; O_MEDIA_PLACEHOLDER_LQIP -media-placeholder_lqip = false -; O_MEDIA_PLACEHOLDER_LQIP_QUAL -media-placeholder_lqip_qual = 4 -; O_MEDIA_PLACEHOLDER_RESP_ASYNC -media-placeholder_resp_async = true -; O_MEDIA_IFRAME_LAZY -media-iframe_lazy = false -; O_MEDIA_LAZYJS_INLINE -media-lazyjs_inline = false -; O_MEDIA_LAZY_EXC -media-lazy_exc = '' -; O_MEDIA_LAZY_CLS_EXC -media-lazy_cls_exc = '' -; O_MEDIA_LAZY_PARENT_CLS_EXC -media-lazy_parent_cls_exc = '' -; O_MEDIA_IFRAME_LAZY_CLS_EXC -media-iframe_lazy_cls_exc = '' -; O_MEDIA_IFRAME_LAZY_PARENT_CLS_EXC -media-iframe_lazy_parent_cls_exc = '' -; O_MEDIA_LAZY_URI_EXC -media-lazy_uri_exc = '' -;; -------------------------------------------------- ;; -;; -------------- Image Optm ----------------- ;; -;; -------------------------------------------------- ;; -img_optm-auto = false -img_optm-cron = true -img_optm-ori = true -img_optm-rm_bkup = false -img_optm-webp = false -img_optm-lossless = false -img_optm-exif = false -img_optm-webp_replace = false -img_optm-webp_attr = 'img.src -div.data-thumb -img.data-src -div.data-large_image -img.retina_logo_url -div.data-parallax-image -video.poster' -img_optm-webp_replace_srcset = false -img_optm-jpg_quality = 82 -;; -------------------------------------------------- ;; -;; -------------- Crawler ----------------- ;; -;; -------------------------------------------------- ;; -crawler = false -crawler-inc_posts = true -crawler-inc_pages = true -crawler-inc_cats = true -crawler-inc_tags = true -crawler-exc_cpt = '' -crawler-order_links = 'date_desc' -crawler-usleep = 500 -crawler-run_duration = 400 -crawler-run_interval = 600 -crawler-crawl_interval = 302400 -crawler-threads = 3 -crawler-timeout = 30 -crawler-load_limit = 1 -; O_CRAWLER_SITEMAP -crawler-sitemap = '' -; O_CRAWLER_DROP_DOMAIN -crawler-drop_domain = true -crawler-roles = '' -crawler-cookies = '' -;; -------------------------------------------------- ;; -;; -------------- Misc ----------------- ;; -;; -------------------------------------------------- ;; -; O_MISC_HTACCESS_FRONT -misc-htaccess_front = '' -; O_MISC_HTACCESS_BACK -misc-htaccess_back = '' -; O_MISC_HEARTBEAT_FRONT -misc-heartbeat_front = false -; O_MISC_HEARTBEAT_FRONT_TTL -misc-heartbeat_front_ttl = 60 -; O_MISC_HEARTBEAT_BACK -misc-heartbeat_back = false -; O_MISC_HEARTBEAT_BACK_TTL -misc-heartbeat_back_ttl = 60 -; O_MISC_HEARTBEAT_EDITOR -misc-heartbeat_editor = false -; O_MISC_HEARTBEAT_EDITOR_TTL -misc-heartbeat_editor_ttl = 15 -;; -------------------------------------------------- ;; -;; -------------- CDN ----------------- ;; -;; -------------------------------------------------- ;; -cdn = false -cdn-ori = '' -cdn-ori_dir = '' -cdn-exc = '' -cdn-remote_jq = false -cdn-quic = false -cdn-quic_email = '' -cdn-quic_key = '' -cdn-cloudflare = false -cdn-cloudflare_email = '' -cdn-cloudflare_key = '' -cdn-cloudflare_name = '' -cdn-cloudflare_zone = '' -; \`cdn-mapping\` needs to be put in the end with a section tag -;; -------------------------------------------------- ;; -;; -------------- CDN 2 ----------------- ;; -;; -------------------------------------------------- ;; -; <------------ CDN Mapping Example BEGIN --------------------> -; Need to keep the section tag \`[cdn-mapping]\` before list. -; -; NOTE 1) Need to set all child options to make all resources to be replaced without missing. -; NOTE 2) \`url[n]\` option must have to enable the row setting of \`n\`. -; NOTE 3) This section needs to be put in the end of this .ini file -; -; To enable the 2nd mapping record by default, please remove the \`;;\` in the related lines. -[cdn-mapping] -url[0] = '' -inc_js[0] = true -inc_css[0] = true -inc_img[0] = true -filetype[0] = '.aac -.css -.eot -.gif -.jpeg -.js -.jpg -.less -.mp3 -.mp4 -.ogg -.otf -.pdf -.png -.svg -.ttf -.woff' -;;url[1] = 'https://2nd_CDN_url.com/' -;;filetype[1] = '.webm' -; <------------ CDN Mapping Example END ------------------> -EOM - - THEME_PATH="${VH_DOC_ROOT}/wp-content/themes/${THEME}" - if [ ! -f ${THEME_PATH}/functions.php ]; then - cat >> "${THEME_PATH}/functions.php" <>/dev/null 2>&1 -2i -require_once( WP_CONTENT_DIR.'/../wp-admin/includes/plugin.php' ); -\$path = 'litespeed-cache/litespeed-cache.php' ; -if (!is_plugin_active( \$path )) { - activate_plugin( \$path ) ; - rename( __FILE__ . '.bk', __FILE__ ); -} -. -w -q -END - fi -} - -preinstall_wordpress(){ - if [ "${VHNAME}" != '' ]; then - get_db_pass ${VHNAME} - else - get_db_pass ${DOMAIN} - fi - if [ ! -f ${VH_DOC_ROOT}/wp-config.php ] && [ -f ${VH_DOC_ROOT}/wp-config-sample.php ]; then - cp ${VH_DOC_ROOT}/wp-config-sample.php ${VH_DOC_ROOT}/wp-config.php - NEWDBPWD="define('DB_PASSWORD', '${SQL_PASS}');" - linechange 'DB_PASSWORD' ${VH_DOC_ROOT}/wp-config.php "${NEWDBPWD}" - NEWDBPWD="define('DB_USER', '${SQL_USER}');" - linechange 'DB_USER' ${VH_DOC_ROOT}/wp-config.php "${NEWDBPWD}" - NEWDBPWD="define('DB_NAME', '${SQL_DB}');" - linechange 'DB_NAME' ${VH_DOC_ROOT}/wp-config.php "${NEWDBPWD}" - #NEWDBPWD="define('DB_HOST', '${PUB_IP}');" - NEWDBPWD="define('DB_HOST', '${DB_HOST}');" - linechange 'DB_HOST' ${VH_DOC_ROOT}/wp-config.php "${NEWDBPWD}" - elif [ -f ${VH_DOC_ROOT}/wp-config.php ]; then - echo "${VH_DOC_ROOT}/wp-config.php already exist, exit !" - exit 1 - else - echo 'Skip!' - exit 2 - fi -} - -app_wordpress_dl(){ - if [ ! -f "${VH_DOC_ROOT}/wp-config.php" ] && [ ! -f "${VH_DOC_ROOT}/wp-config-sample.php" ]; then - wp core download \ - --allow-root \ - --quiet - else - echo 'wordpress already exist, abort!' - exit 1 - fi -} - -change_owner(){ - if [ "${VHNAME}" != '' ]; then - chown -R ${WWW_UID}:${WWW_GID} ${DEFAULT_VH_ROOT}/${VHNAME} - else - chown -R ${WWW_UID}:${WWW_GID} ${DEFAULT_VH_ROOT}/${DOMAIN} - fi -} - -main(){ - set_vh_docroot ${DOMAIN} - get_owner - cd ${VH_DOC_ROOT} - if [ "${APP_NAME}" = 'wordpress' ] || [ "${APP_NAME}" = 'wp' ]; then - check_sql_native - app_wordpress_dl - preinstall_wordpress - install_wp_plugin - set_htaccess - get_theme_name - set_lscache - change_owner - exit 0 - else - echo "APP: ${APP_NAME} not support, exit!" - exit 1 - fi -} - -check_input ${1} -while [ ! -z "${1}" ]; do - case ${1} in - -[hH] | -help | --help) - help_message - ;; - -[aA] | -app | --app) shift - check_input "${1}" - APP_NAME="${1}" - ;; - -[dD] | -domain | --domain) shift - check_input "${1}" - DOMAIN="${1}" - ;; - -vhname | --vhname) shift - VHNAME="${1}" - ;; - *) - help_message - ;; - esac - shift -done -main diff --git a/apps/openlitespeed/1.8.1-lsphp74/data/bin/container/certhookctl.sh b/apps/openlitespeed/1.8.1-lsphp74/data/bin/container/certhookctl.sh deleted file mode 100644 index 18be0965..00000000 --- a/apps/openlitespeed/1.8.1-lsphp74/data/bin/container/certhookctl.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -BOTCRON='/var/spool/cron/crontabs/root' - -cert_hook(){ - grep 'acme' ${BOTCRON} >/dev/null - if [ ${?} = 0 ]; then - grep 'lswsctrl' ${BOTCRON} >/dev/null - if [ ${?} = 0 ]; then - echo 'Hook already exist, skip!' - else - sed -i 's/--cron/--cron --renew-hook "\/usr\/local\/lsws\/bin\/lswsctrl restart"/g' ${BOTCRON} - fi - else - echo "[X] ${BOTCRON} does not exist, please check it later!" - fi -} - -cert_hook \ No newline at end of file diff --git a/apps/openlitespeed/1.8.1-lsphp74/data/bin/container/domainctl.sh b/apps/openlitespeed/1.8.1-lsphp74/data/bin/container/domainctl.sh deleted file mode 100644 index 75539ef0..00000000 --- a/apps/openlitespeed/1.8.1-lsphp74/data/bin/container/domainctl.sh +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/bin/env bash -CK_RESULT='' -LSDIR='/usr/local/lsws' -LS_HTTPD_CONF="${LSDIR}/conf/httpd_config.xml" -OLS_HTTPD_CONF="${LSDIR}/conf/httpd_config.conf" -EPACE=' ' - -echow(){ - FLAG=${1} - shift - echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}" -} - -help_message(){ - echo -e "\033[1mOPTIONS\033[0m" - echow '-A, --add [DOMAIN_NAME]' - echo "${EPACE}${EPACE}Will add domain to listener and creat a virtual host from template" - echow '-D, --del [DOMAIN_NAME]' - echo "${EPACE}${EPACE}Will delete domain from listener" - echow '-H, --help' - echo "${EPACE}${EPACE}Display help." -} - -check_lsv(){ - if [ -f ${LSDIR}/bin/openlitespeed ]; then - LSV='openlitespeed' - elif [ -f ${LSDIR}/bin/litespeed ]; then - LSV='lsws' - else - echo 'Version not exist, abort!' - exit 1 - fi -} - -dot_escape(){ - ESCAPE=$(echo ${1} | sed 's/\./\\./g') -} - -check_duplicate(){ - CK_RESULT=$(grep -E "${1}" ${2}) -} - -fst_match_line(){ - FIRST_LINE_NUM=$(grep -n -m 1 ${1} ${2} | awk -F ':' '{print $1}') -} -fst_match_after(){ - FIRST_NUM_AFTER=$(tail -n +${1} ${2} | grep -n -m 1 ${3} | awk -F ':' '{print $1}') -} -lst_match_line(){ - fst_match_after ${1} ${2} ${3} - LAST_LINE_NUM=$((${FIRST_LINE_NUM}+${FIRST_NUM_AFTER}-1)) -} - -check_input(){ - if [ -z "${1}" ]; then - help_message - exit 1 - fi -} - -check_www(){ - CHECK_WWW=$(echo ${1} | cut -c1-4) - if [[ ${CHECK_WWW} == www. ]] ; then - echo 'www domain shoudnt be passed!' - exit 1 - fi -} - -www_domain(){ - check_www ${1} - WWW_DOMAIN=$(echo www.${1}) -} - -add_ls_domain(){ - fst_match_line 'docker.xml' ${LS_HTTPD_CONF} - NEWNUM=$((FIRST_LINE_NUM+2)) - sed -i "${NEWNUM}i \ \ \ \ \ \ \n \ \ \ \ \ \ \ ${DOMAIN}\n \ \ \ \ \ \ \ ${DOMAIN},${WWW_DOMAIN}\n \ \ \ \ \ \ " ${LS_HTTPD_CONF} -} - -add_ols_domain(){ - perl -0777 -p -i -e 's/(vhTemplate docker \{[^}]+)\}*(^.*listeners.*$)/\1$2 - member '${DOMAIN}' { - vhDomain '${DOMAIN},${WWW_DOMAIN}' - }/gmi' ${OLS_HTTPD_CONF} -} - -add_domain(){ - check_lsv - dot_escape ${1} - DOMAIN=${ESCAPE} - www_domain ${1} - if [ "${LSV}" = 'lsws' ]; then - check_duplicate "vhDomain.*${DOMAIN}" ${LS_HTTPD_CONF} - if [ "${CK_RESULT}" != '' ]; then - echo "# It appears the domain already exist! Check the ${LS_HTTPD_CONF} if you believe this is a mistake!" - exit 1 - fi - elif [ "${LSV}" = 'openlitespeed' ]; then - check_duplicate "member.*${DOMAIN}" ${OLS_HTTPD_CONF} - if [ "${CK_RESULT}" != '' ]; then - echo "# It appears the domain already exist! Check the ${OLS_HTTPD_CONF} if you believe this is a mistake!" - exit 1 - fi - fi - add_ls_domain - add_ols_domain -} - -del_ls_domain(){ - fst_match_line "*${1}" ${LS_HTTPD_CONF} - FIRST_LINE_NUM=$((FIRST_LINE_NUM-1)) - lst_match_line ${FIRST_LINE_NUM} ${LS_HTTPD_CONF} '' - sed -i "${FIRST_LINE_NUM},${LAST_LINE_NUM}d" ${LS_HTTPD_CONF} -} - -del_ols_domain(){ - fst_match_line ${1} ${OLS_HTTPD_CONF} - lst_match_line ${FIRST_LINE_NUM} ${OLS_HTTPD_CONF} '}' - sed -i "${FIRST_LINE_NUM},${LAST_LINE_NUM}d" ${OLS_HTTPD_CONF} -} - -del_domain(){ - check_lsv - dot_escape ${1} - DOMAIN=${ESCAPE} - if [ "${LSV}" = 'lsws' ]; then - check_duplicate "vhDomain.*${DOMAIN}" ${LS_HTTPD_CONF} - if [ "${CK_RESULT}" = '' ]; then - echo "# Domain non-exist! Check the ${LS_HTTPD_CONF} if you believe this is a mistake!" - exit 1 - fi - elif [ "${LSV}" = 'openlitespeed' ]; then - check_duplicate "member.*${DOMAIN}" ${OLS_HTTPD_CONF} - if [ "${CK_RESULT}" = '' ]; then - echo "# Domain non-exist! Check the ${OLS_HTTPD_CONF} if you believe this is a mistake!" - exit 1 - fi - fi - del_ls_domain ${1} - del_ols_domain ${1} -} - -check_input ${1} -while [ ! -z "${1}" ]; do - case ${1} in - -[hH] | -help | --help) - help_message - ;; - -[aA] | -add | --add) shift - add_domain ${1} - ;; - -[dD] | -del | --del | --delete) shift - del_domain ${1} - ;; - *) - help_message - ;; - esac - shift -done \ No newline at end of file diff --git a/apps/openlitespeed/1.8.1-lsphp74/data/bin/container/owaspctl.sh b/apps/openlitespeed/1.8.1-lsphp74/data/bin/container/owaspctl.sh deleted file mode 100644 index 72fd8e59..00000000 --- a/apps/openlitespeed/1.8.1-lsphp74/data/bin/container/owaspctl.sh +++ /dev/null @@ -1,236 +0,0 @@ -#!/bin/bash -LSDIR='/usr/local/lsws' -OWASP_DIR="${LSDIR}/conf/owasp" -RULE_FILE='modsec_includes.conf' -LS_HTTPD_CONF="${LSDIR}/conf/httpd_config.xml" -OLS_HTTPD_CONF="${LSDIR}/conf/httpd_config.conf" -EPACE=' ' -OWASP_V='3.3.4' - -echow(){ - FLAG=${1} - shift - echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}" -} - -help_message(){ - echo -e "\033[1mOPTIONS\033[0m" - echow '-E, --enable' - echo "${EPACE}${EPACE}Will Enable mod_secure module with latest OWASP version of rules" - echow '-D, --disable' - echo "${EPACE}${EPACE}Will Disable mod_secure module with latest OWASP version of rules" - echow '-H, --help' - echo "${EPACE}${EPACE}Display help and exit." - exit 0 -} - -check_lsv(){ - if [ -f ${LSDIR}/bin/openlitespeed ]; then - LSV='openlitespeed' - elif [ -f ${LSDIR}/bin/litespeed ]; then - LSV='lsws' - else - echo 'Version not exist, abort!' - exit 1 - fi -} - -check_input(){ - if [ -z "${1}" ]; then - help_message - exit 1 - fi -} - -mk_owasp_dir(){ - if [ -d ${OWASP_DIR} ] ; then - rm -rf ${OWASP_DIR} - fi - mkdir -p ${OWASP_DIR} - if [ ${?} -ne 0 ] ; then - echo "Unable to create directory: ${OWASP_DIR}, exit!" - exit 1 - fi -} - -fst_match_line(){ - FIRST_LINE_NUM=$(grep -n -m 1 "${1}" ${2} | awk -F ':' '{print $1}') -} -fst_match_after(){ - FIRST_NUM_AFTER=$(tail -n +${1} ${2} | grep -n -m 1 ${3} | awk -F ':' '{print $1}') -} -lst_match_line(){ - fst_match_after ${1} ${2} ${3} - LAST_LINE_NUM=$((${FIRST_LINE_NUM}+${FIRST_NUM_AFTER}-1)) -} - -enable_ols_modsec(){ - grep 'module mod_security {' ${OLS_HTTPD_CONF} >/dev/null 2>&1 - if [ ${?} -eq 0 ] ; then - echo "Already configured for modsecurity." - else - echo 'Enable modsecurity' - sed -i "s=module cache=module mod_security {\nmodsecurity on\ - \nmodsecurity_rules \`\nSecRuleEngine On\n\`\nmodsecurity_rules_file \ - ${OWASP_DIR}/${RULE_FILE}\n ls_enabled 1\n}\ - \n\nmodule cache=" ${OLS_HTTPD_CONF} - fi -} - -enable_ls_modsec(){ - grep '1' ${LS_HTTPD_CONF} >/dev/null 2>&1 - if [ ${?} -eq 0 ] ; then - echo "LSWS already configured for modsecurity" - else - echo 'Enable modsecurity' - sed -i \ - "s=0=1=" ${LS_HTTPD_CONF} - sed -i \ - "s==\n\ - \n\ - ModSec\n\ - 1\n\ - include ${OWASP_DIR}/modsec_includes.conf\n\ - =" ${LS_HTTPD_CONF} - fi -} - -enable_modsec(){ - if [ "${LSV}" = 'lsws' ]; then - enable_ls_modsec - elif [ "${LSV}" = 'openlitespeed' ]; then - enable_ols_modsec - fi -} - -disable_ols_modesec(){ - grep 'module mod_security {' ${OLS_HTTPD_CONF} >/dev/null 2>&1 - if [ ${?} -eq 0 ] ; then - echo 'Disable modsecurity' - fst_match_line 'module mod_security' ${OLS_HTTPD_CONF} - lst_match_line ${FIRST_LINE_NUM} ${OLS_HTTPD_CONF} '}' - sed -i "${FIRST_LINE_NUM},${LAST_LINE_NUM}d" ${OLS_HTTPD_CONF} - else - echo 'Already disabled for modsecurity' - fi -} - -disable_ls_modesec(){ - grep '0' ${LS_HTTPD_CONF} - if [ ${?} -eq 0 ] ; then - echo 'Already disabled for modsecurity' - else - echo 'Disable modsecurity' - sed -i \ - "s=1=0=" ${LS_HTTPD_CONF} - fst_match_line 'censorshipRuleSet' ${LS_HTTPD_CONF} - lst_match_line ${FIRST_LINE_NUM} ${LS_HTTPD_CONF} '/censorshipRuleSet' - sed -i "${FIRST_LINE_NUM},${LAST_LINE_NUM}d" ${LS_HTTPD_CONF} - fi -} - -disable_modsec(){ - check_lsv - if [ "${LSV}" = 'lsws' ]; then - disable_ls_modesec - elif [ "${LSV}" = 'openlitespeed' ]; then - disable_ols_modesec - fi -} - -install_unzip(){ - if [ ! -f /usr/bin/unzip ]; then - echo 'Install Unzip' - apt update >/dev/null 2>&1 - apt-get install unzip -y >/dev/null 2>&1 - fi -} - -install_owasp(){ - cd ${OWASP_DIR} - echo 'Download OWASP rules' - wget -q https://github.com/coreruleset/coreruleset/archive/refs/tags/v${OWASP_V}.zip - unzip -qq v${OWASP_V}.zip - rm -f v${OWASP_V}.zip - mv coreruleset-* owasp-modsecurity-crs -} - -configure_owasp(){ - echo 'Config OWASP rules.' - cd ${OWASP_DIR} - echo "include modsecurity.conf -include owasp-modsecurity-crs/crs-setup.conf -include owasp-modsecurity-crs/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf -include owasp-modsecurity-crs/rules/REQUEST-901-INITIALIZATION.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9001-DRUPAL-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9002-WORDPRESS-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9003-NEXTCLOUD-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9004-DOKUWIKI-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9005-CPANEL-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9006-XENFORO-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-905-COMMON-EXCEPTIONS.conf -include owasp-modsecurity-crs/rules/REQUEST-910-IP-REPUTATION.conf -include owasp-modsecurity-crs/rules/REQUEST-911-METHOD-ENFORCEMENT.conf -include owasp-modsecurity-crs/rules/REQUEST-912-DOS-PROTECTION.conf -include owasp-modsecurity-crs/rules/REQUEST-913-SCANNER-DETECTION.conf -include owasp-modsecurity-crs/rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf -include owasp-modsecurity-crs/rules/REQUEST-921-PROTOCOL-ATTACK.conf -include owasp-modsecurity-crs/rules/REQUEST-930-APPLICATION-ATTACK-LFI.conf -include owasp-modsecurity-crs/rules/REQUEST-931-APPLICATION-ATTACK-RFI.conf -include owasp-modsecurity-crs/rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf -include owasp-modsecurity-crs/rules/REQUEST-933-APPLICATION-ATTACK-PHP.conf -include owasp-modsecurity-crs/rules/REQUEST-934-APPLICATION-ATTACK-NODEJS.conf -include owasp-modsecurity-crs/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf -include owasp-modsecurity-crs/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf -include owasp-modsecurity-crs/rules/REQUEST-943-APPLICATION-ATTACK-SESSION-FIXATION.conf -include owasp-modsecurity-crs/rules/REQUEST-944-APPLICATION-ATTACK-JAVA.conf -include owasp-modsecurity-crs/rules/REQUEST-949-BLOCKING-EVALUATION.conf -include owasp-modsecurity-crs/rules/RESPONSE-950-DATA-LEAKAGES.conf -include owasp-modsecurity-crs/rules/RESPONSE-951-DATA-LEAKAGES-SQL.conf -include owasp-modsecurity-crs/rules/RESPONSE-952-DATA-LEAKAGES-JAVA.conf -include owasp-modsecurity-crs/rules/RESPONSE-953-DATA-LEAKAGES-PHP.conf -include owasp-modsecurity-crs/rules/RESPONSE-954-DATA-LEAKAGES-IIS.conf -include owasp-modsecurity-crs/rules/RESPONSE-959-BLOCKING-EVALUATION.conf -include owasp-modsecurity-crs/rules/RESPONSE-980-CORRELATION.conf -include owasp-modsecurity-crs/rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf">modsec_includes.conf - echo "SecRuleEngine On">modsecurity.conf - cd ${OWASP_DIR}/owasp-modsecurity-crs - if [ -f crs-setup.conf.example ]; then - mv crs-setup.conf.example crs-setup.conf - fi - cd ${OWASP_DIR}/owasp-modsecurity-crs/rules - if [ -f REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example ]; then - mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf - fi - if [ -f RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example ]; then - mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf - fi -} - -main_owasp(){ - mk_owasp_dir - install_unzip - install_owasp - configure_owasp - check_lsv - enable_modsec -} - -check_input ${1} -while [ ! -z "${1}" ]; do - case ${1} in - -[hH] | -help | --help) - help_message - ;; - -[eE] | -enable | --enable) - main_owasp - ;; - -[dD] | -disable | --disable) - disable_modsec - ;; - *) - help_message - ;; - esac - shift -done \ No newline at end of file diff --git a/apps/openlitespeed/1.8.1-lsphp74/data/bin/container/serialctl.sh b/apps/openlitespeed/1.8.1-lsphp74/data/bin/container/serialctl.sh deleted file mode 100644 index 42e312dc..00000000 --- a/apps/openlitespeed/1.8.1-lsphp74/data/bin/container/serialctl.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/bash -LSDIR='/usr/local/lsws' -EPACE=' ' - -echow(){ - FLAG=${1} - shift - echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}" -} - -help_message(){ - echo -e "\033[1mOPTIONS\033[0m" - echow '-S, --serial [YOUR_SERIAL|TRIAL]' - echo "${EPACE}${EPACE}Will apply and register the serial to LSWS." - echow '-H, --help' - echo "${EPACE}${EPACE}Display help and exit." - exit 0 -} - -check_input(){ - if [ -z "${1}" ]; then - help_message - exit 1 - fi -} - -backup_old(){ - if [ -f ${1} ] && [ ! -f ${1}_old ]; then - mv ${1} ${1}_old - fi -} - -detect_ols(){ - if [ -e ${LSDIR}/bin/openlitespeed ]; then - echo '[X] Detect OpenLiteSpeed, abort!' - exit 1 - fi -} - -apply_serial(){ - detect_ols - check_input ${1} - echo ${1} | grep -i 'trial' >/dev/null - if [ ${?} = 0 ]; then - echo 'Apply Trial License' - if [ ! -e ${LSDIR}/conf/serial.no ] && [ ! -e ${LSDIR}/conf/license.key ]; then - rm -f ${LSDIR}/conf/trial.key* - wget -P ${LSDIR}/conf -q http://license.litespeedtech.com/reseller/trial.key - echo 'Apply trial finished' - else - echo "Please backup and remove your existing license, apply abort!" - exit 1 - fi - else - echo "Apply Serial number: ${1}" - backup_old ${LSDIR}/conf/serial.no - backup_old ${LSDIR}/conf/license.key - backup_old ${LSDIR}/conf/trial.key - echo "${1}" > ${LSDIR}/conf/serial.no - ${LSDIR}/bin/lshttpd -r - if [ -f ${LSDIR}/conf/license.key ]; then - echo '[O] Apply success' - else - echo '[X] Apply failed, please check!' - exit 1 - fi - fi -} - -check_input ${1} -while [ ! -z "${1}" ]; do - case ${1} in - -[hH] | -help | --help) - help_message - ;; - -[sS] | -serial | --serial) shift - apply_serial "${1}" - ;; - *) - help_message - ;; - esac - shift -done \ No newline at end of file diff --git a/apps/openlitespeed/1.8.1-lsphp74/data/sites/.gitignore b/apps/openlitespeed/1.8.1-lsphp74/data/sites/.gitignore deleted file mode 100644 index d6b7ef32..00000000 --- a/apps/openlitespeed/1.8.1-lsphp74/data/sites/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/apps/openlitespeed/1.8.1-lsphp74/docker-compose.yml b/apps/openlitespeed/1.8.1-lsphp74/docker-compose.yml deleted file mode 100644 index 6fe70e46..00000000 --- a/apps/openlitespeed/1.8.1-lsphp74/docker-compose.yml +++ /dev/null @@ -1,29 +0,0 @@ -services: - litespeed: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - logging: - driver: none - volumes: - - ${DATA_PATH}/lsws/conf:/usr/local/lsws/conf - - ${DATA_PATH}/lsws/admin-conf:/usr/local/lsws/admin/conf - - ${DATA_PATH}/bin/container:/usr/local/bin - - ${DATA_PATH}/sites:/var/www/vhosts/ - - ${DATA_PATH}/acme:/root/.acme.sh/ - - ${DATA_PATH}/logs:/usr/local/lsws/logs/ - ports: - - "${PANEL_APP_PORT_HTTP}:80" - - "${PANEL_APP_PORT_HTTPS}:443" - - "${PANEL_APP_PORT_HTTPS}:443/udp" - - "${PANEL_APP_PORT_CONSOLE}:7080" - environment: - - TZ=${TIME_ZONE} - image: litespeedtech/openlitespeed:1.8.1-lsphp74 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/openlitespeed/1.8.3-lsphp81/.env.sample b/apps/openlitespeed/1.8.3-lsphp81/.env.sample deleted file mode 100644 index 0902e645..00000000 --- a/apps/openlitespeed/1.8.3-lsphp81/.env.sample +++ /dev/null @@ -1,6 +0,0 @@ -CONTAINER_NAME="openlitespeed" -DATA_PATH="./data" -PANEL_APP_PORT_CONSOLE="40113" -PANEL_APP_PORT_HTTP="80" -PANEL_APP_PORT_HTTPS="443" -TIME_ZONE="Asia/Shanghai" diff --git a/apps/openlitespeed/1.8.3-lsphp81/data.yml b/apps/openlitespeed/1.8.3-lsphp81/data.yml deleted file mode 100644 index 96591f6f..00000000 --- a/apps/openlitespeed/1.8.3-lsphp81/data.yml +++ /dev/null @@ -1,40 +0,0 @@ -additionalProperties: - formFields: - - default: 80 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: HTTP Port - labelZh: HTTP端口 - required: true - rule: paramPort - type: number - - default: 443 - edit: true - envKey: PANEL_APP_PORT_HTTPS - labelEn: HTTPS Port - labelZh: HTTPS端口 - required: true - rule: paramPort - type: number - - default: 40113 - edit: true - envKey: PANEL_APP_PORT_CONSOLE - labelEn: Console Port - labelZh: 控制台端口 - required: true - rule: paramPort - type: number - - default: ./data - disabled: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: Asia/Shanghai - edit: true - envKey: TIME_ZONE - labelEn: Time zone - labelZh: 时区 - required: true - type: text diff --git a/apps/openlitespeed/1.8.3-lsphp81/data/bin/container/appinstallctl.sh b/apps/openlitespeed/1.8.3-lsphp81/data/bin/container/appinstallctl.sh deleted file mode 100644 index d79c63f1..00000000 --- a/apps/openlitespeed/1.8.3-lsphp81/data/bin/container/appinstallctl.sh +++ /dev/null @@ -1,660 +0,0 @@ -#!/bin/bash -DEFAULT_VH_ROOT='/var/www/vhosts' -VH_DOC_ROOT='' -VHNAME='' -APP_NAME='' -DOMAIN='' -WWW_UID='' -WWW_GID='' -WP_CONST_CONF='' -PUB_IP=$(curl -s http://checkip.amazonaws.com) -DB_HOST='mysql' -PLUGINLIST="litespeed-cache.zip" -THEME='twentytwenty' -EPACE=' ' - -echow(){ - FLAG=${1} - shift - echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}" -} - -help_message(){ - echo -e "\033[1mOPTIONS\033[0m" - echow '-A, -app [wordpress] -D, --domain [DOMAIN_NAME]' - echo "${EPACE}${EPACE}Example: appinstallctl.sh --app wordpress --domain example.com" - echow '-H, --help' - echo "${EPACE}${EPACE}Display help and exit." - exit 0 -} - -check_input(){ - if [ -z "${1}" ]; then - help_message - exit 1 - fi -} - -linechange(){ - LINENUM=$(grep -n "${1}" ${2} | cut -d: -f 1) - if [ -n "${LINENUM}" ] && [ "${LINENUM}" -eq "${LINENUM}" ] 2>/dev/null; then - sed -i "${LINENUM}d" ${2} - sed -i "${LINENUM}i${3}" ${2} - fi -} - -ck_ed(){ - if [ ! -f /bin/ed ]; then - echo "Install ed package.." - apt-get install ed -y > /dev/null 2>&1 - fi -} - -ck_unzip(){ - if [ ! -f /usr/bin/unzip ]; then - echo "Install unzip package.." - apt-get install unzip -y > /dev/null 2>&1 - fi -} - -get_owner(){ - WWW_UID=$(stat -c "%u" ${DEFAULT_VH_ROOT}) - WWW_GID=$(stat -c "%g" ${DEFAULT_VH_ROOT}) - if [ ${WWW_UID} -eq 0 ] || [ ${WWW_GID} -eq 0 ]; then - WWW_UID=1000 - WWW_GID=1000 - echo "Set owner to ${WWW_UID}" - fi -} - -get_db_pass(){ - if [ -f ${DEFAULT_VH_ROOT}/${1}/.db_pass ]; then - SQL_DB=$(grep -i Database ${VH_ROOT}/.db_pass | awk -F ':' '{print $2}' | tr -d '"') - SQL_USER=$(grep -i Username ${VH_ROOT}/.db_pass | awk -F ':' '{print $2}' | tr -d '"') - SQL_PASS=$(grep -i Password ${VH_ROOT}/.db_pass | awk -F ':' '{print $2}' | tr -d '"') - else - echo 'db pass file can not locate, skip wp-config pre-config.' - fi -} - -set_vh_docroot(){ - if [ "${VHNAME}" != '' ]; then - VH_ROOT="${DEFAULT_VH_ROOT}/${VHNAME}" - VH_DOC_ROOT="${DEFAULT_VH_ROOT}/${VHNAME}/html" - WP_CONST_CONF="${VH_DOC_ROOT}/wp-content/plugins/litespeed-cache/data/const.default.ini" - elif [ -d ${DEFAULT_VH_ROOT}/${1}/html ]; then - VH_ROOT="${DEFAULT_VH_ROOT}/${1}" - VH_DOC_ROOT="${DEFAULT_VH_ROOT}/${1}/html" - WP_CONST_CONF="${VH_DOC_ROOT}/wp-content/plugins/litespeed-cache/data/const.default.ini" - else - echo "${DEFAULT_VH_ROOT}/${1}/html does not exist, please add domain first! Abort!" - exit 1 - fi -} - -check_sql_native(){ - local COUNTER=0 - local LIMIT_NUM=100 - until [ "$(curl -v mysql:3306 2>&1 | grep -i 'native\|Connected')" ]; do - echo "Counter: ${COUNTER}/${LIMIT_NUM}" - COUNTER=$((COUNTER+1)) - if [ ${COUNTER} = 10 ]; then - echo '--- MySQL is starting, please wait... ---' - elif [ ${COUNTER} = ${LIMIT_NUM} ]; then - echo '--- MySQL is timeout, exit! ---' - exit 1 - fi - sleep 1 - done -} - -install_wp_plugin(){ - for PLUGIN in ${PLUGINLIST}; do - wget -q -P ${VH_DOC_ROOT}/wp-content/plugins/ https://downloads.wordpress.org/plugin/${PLUGIN} - if [ ${?} = 0 ]; then - ck_unzip - unzip -qq -o ${VH_DOC_ROOT}/wp-content/plugins/${PLUGIN} -d ${VH_DOC_ROOT}/wp-content/plugins/ - else - echo "${PLUGINLIST} FAILED to download" - fi - done - rm -f ${VH_DOC_ROOT}/wp-content/plugins/*.zip -} - -set_htaccess(){ - if [ ! -f ${VH_DOC_ROOT}/.htaccess ]; then - touch ${VH_DOC_ROOT}/.htaccess - fi - cat << EOM > ${VH_DOC_ROOT}/.htaccess -# BEGIN WordPress - -RewriteEngine On -RewriteBase / -RewriteRule ^index\.php$ - [L] -RewriteCond %{REQUEST_FILENAME} !-f -RewriteCond %{REQUEST_FILENAME} !-d -RewriteRule . /index.php [L] - -# END WordPress -EOM -} - -get_theme_name(){ - THEME_NAME=$(grep WP_DEFAULT_THEME ${VH_DOC_ROOT}/wp-includes/default-constants.php | grep -v '!' | awk -F "'" '{print $4}') - echo "${THEME_NAME}" | grep 'twenty' >/dev/null 2>&1 - if [ ${?} = 0 ]; then - THEME="${THEME_NAME}" - fi -} - -set_lscache(){ - cat << EOM > "${WP_CONST_CONF}" -; -; This is the predefined default LSCWP configuration file -; -; All the keys and values please refer \`src/const.cls.php\` -; -; Comments start with \`;\` -; -;; -------------------------------------------------- ;; -;; -------------- General ----------------- ;; -;; -------------------------------------------------- ;; -; O_AUTO_UPGRADE -auto_upgrade = false -; O_API_KEY -api_key = '' -; O_SERVER_IP -server_ip = '' -; O_NEWS -news = false -;; -------------------------------------------------- ;; -;; -------------- Cache ----------------- ;; -;; -------------------------------------------------- ;; -cache-priv = true -cache-commenter = true -cache-rest = true -cache-page_login = true -cache-favicon = true -cache-resources = true -cache-browser = false -cache-mobile = false -cache-mobile_rules = 'Mobile -Android -Silk/ -Kindle -BlackBerry -Opera Mini -Opera Mobi' -cache-exc_useragents = '' -cache-exc_cookies = '' -cache-exc_qs = '' -cache-exc_cat = '' -cache-exc_tag = '' -cache-force_uri = '' -cache-force_pub_uri = '' -cache-priv_uri = '' -cache-exc = '' -cache-exc_roles = '' -cache-drop_qs = 'fbclid -gclid -utm* -_ga' -cache-ttl_pub = 604800 -cache-ttl_priv = 1800 -cache-ttl_frontpage = 604800 -cache-ttl_feed = 604800 -; O_CACHE_TTL_REST -cache-ttl_rest = 604800 -cache-ttl_browser = 31557600 -cache-login_cookie = '' -cache-vary_group = '' -cache-ttl_status = '403 3600 -404 3600 -500 3600' -;; -------------------------------------------------- ;; -;; -------------- Purge ----------------- ;; -;; -------------------------------------------------- ;; -; O_PURGE_ON_UPGRADE -purge-upgrade = true -; O_PURGE_STALE -purge-stale = true -purge-post_all = false -purge-post_f = true -purge-post_h = true -purge-post_p = true -purge-post_pwrp = true -purge-post_a = true -purge-post_y = false -purge-post_m = true -purge-post_d = false -purge-post_t = true -purge-post_pt = true -purge-timed_urls = '' -purge-timed_urls_time = '' -purge-hook_all = 'switch_theme -wp_create_nav_menu -wp_update_nav_menu -wp_delete_nav_menu -create_term -edit_terms -delete_term -add_link -edit_link -delete_link' -;; -------------------------------------------------- ;; -;; -------------- ESI ----------------- ;; -;; -------------------------------------------------- ;; -; O_ESI -esi = false -; O_ESI_CACHE_ADMBAR -esi-cache_admbar = true -; O_ESI_CACHE_COMMFORM -esi-cache_commform = true -; O_ESI_NONCE -esi-nonce = 'stats_nonce -subscribe_nonce' -;; -------------------------------------------------- ;; -;; -------------- Utilities ----------------- ;; -;; -------------------------------------------------- ;; -util-heartbeat = true -util-instant_click = false -util-check_advcache = true -util-no_https_vary = false -;; -------------------------------------------------- ;; -;; -------------- Debug ----------------- ;; -;; -------------------------------------------------- ;; -; O_DEBUG_DISABLE_ALL -debug-disable_all = false -; O_DEBUG -debug = false -; O_DEBUG_IPS -debug-ips = '127.0.0.1' -; O_DEBUG_LEVEL -debug-level = false -; O_DEBUG_FILESIZE -debug-filesize = 3 -; O_DEBUG_COOKIE -debug-cookie = false -; O_DEBUG_COLLAPS_QS -debug-collaps_qs = false -; O_DEBUG_INC -debug-inc = '' -; O_DEBUG_EXC -debug-exc = '' -;; -------------------------------------------------- ;; -;; -------------- DB Optm ----------------- ;; -;; -------------------------------------------------- ;; -; O_DB_OPTM_REVISIONS_MAX -db_optm-revisions_max = 0 -; O_DB_OPTM_REVISIONS_AGE -db_optm-revisions_age = 0 -;; -------------------------------------------------- ;; -;; -------------- HTML Optm ----------------- ;; -;; -------------------------------------------------- ;; -; O_OPTM_CSS_MIN -optm-css_min = false -optm-css_inline_min = false -; O_OPTM_CSS_COMB -optm-css_comb = false -optm-css_comb_priority = false -; O_OPTM_CSS_HTTP2 -optm-css_http2 = false -optm-css_exc = '' -; O_OPTM_JS_MIN -optm-js_min = false -optm-js_inline_min = false -; O_OPTM_JS_COMB -optm-js_comb = false -optm-js_comb_priority = false -; O_OPTM_JS_HTTP2 -optm-js_http2 = false -; O_OPTM_EXC_JQ -optm-js_exc = '' -optm-ttl = 604800 -optm-html_min = false -optm-qs_rm = false -optm-ggfonts_rm = false -; O_OPTM_CSS_ASYNC -optm-css_async = false -; O_OPTM_CCSS_GEN -optm-ccss_gen = true -; O_OPTM_CCSS_ASYNC -optm-ccss_async = true -; O_OPTM_CSS_ASYNC_INLINE -optm-css_async_inline = true -; O_OPTM_CSS_FONT_DISPLAY -optm-css_font_display = false -; O_OPTM_JS_DEFER -optm-js_defer = false -; O_OPTM_JS_INLINE_DEFER -optm-js_inline_defer = false -optm-emoji_rm = false -optm-exc_jq = true -optm-ggfonts_async = false -optm-max_size = 2 -optm-rm_comment = false -optm-exc_roles = '' -optm-ccss_con = '' -optm-js_defer_exc = '' -; O_OPTM_DNS_PREFETCH -optm-dns_prefetch = '' -; O_OPTM_DNS_PREFETCH_CTRL -optm-dns_prefetch_ctrl = false -optm-exc = '' -; O_OPTM_CCSS_SEP_POSTTYPE -optm-ccss_sep_posttype = '' -; O_OPTM_CCSS_SEP_URI -optm-ccss_sep_uri = '' -;; -------------------------------------------------- ;; -;; -------------- Object Cache ----------------- ;; -;; -------------------------------------------------- ;; -object = true -object-kind = false -;object-host = 'localhost' -object-host = '/var/www/memcached.sock' -;object-port = 11211 -cache_object_port = '' -object-life = 360 -object-persistent = true -object-admin = true -object-transients = true -object-db_id = 0 -object-user = '' -object-pswd = '' -object-global_groups = 'users -userlogins -usermeta -user_meta -site-transient -site-options -site-lookup -blog-lookup -blog-details -rss -global-posts -blog-id-cache' -object-non_persistent_groups = 'comment -counts -plugins -wc_session_id' -;; -------------------------------------------------- ;; -;; -------------- Discussion ----------------- ;; -;; -------------------------------------------------- ;; -; O_DISCUSS_AVATAR_CACHE -discuss-avatar_cache = false -; O_DISCUSS_AVATAR_CRON -discuss-avatar_cron = false -; O_DISCUSS_AVATAR_CACHE_TTL -discuss-avatar_cache_ttl = 604800 -;; -------------------------------------------------- ;; -;; -------------- Media ----------------- ;; -;; -------------------------------------------------- ;; -; O_MEDIA_LAZY -media-lazy = false -; O_MEDIA_LAZY_PLACEHOLDER -media-lazy_placeholder = '' -; O_MEDIA_PLACEHOLDER_RESP -media-placeholder_resp = false -; O_MEDIA_PLACEHOLDER_RESP_COLOR -media-placeholder_resp_color = '#cfd4db' -; O_MEDIA_PLACEHOLDER_RESP_GENERATOR -media-placeholder_resp_generator = false -; O_MEDIA_PLACEHOLDER_RESP_SVG -media-placeholder_resp_svg = '' -; O_MEDIA_PLACEHOLDER_LQIP -media-placeholder_lqip = false -; O_MEDIA_PLACEHOLDER_LQIP_QUAL -media-placeholder_lqip_qual = 4 -; O_MEDIA_PLACEHOLDER_RESP_ASYNC -media-placeholder_resp_async = true -; O_MEDIA_IFRAME_LAZY -media-iframe_lazy = false -; O_MEDIA_LAZYJS_INLINE -media-lazyjs_inline = false -; O_MEDIA_LAZY_EXC -media-lazy_exc = '' -; O_MEDIA_LAZY_CLS_EXC -media-lazy_cls_exc = '' -; O_MEDIA_LAZY_PARENT_CLS_EXC -media-lazy_parent_cls_exc = '' -; O_MEDIA_IFRAME_LAZY_CLS_EXC -media-iframe_lazy_cls_exc = '' -; O_MEDIA_IFRAME_LAZY_PARENT_CLS_EXC -media-iframe_lazy_parent_cls_exc = '' -; O_MEDIA_LAZY_URI_EXC -media-lazy_uri_exc = '' -;; -------------------------------------------------- ;; -;; -------------- Image Optm ----------------- ;; -;; -------------------------------------------------- ;; -img_optm-auto = false -img_optm-cron = true -img_optm-ori = true -img_optm-rm_bkup = false -img_optm-webp = false -img_optm-lossless = false -img_optm-exif = false -img_optm-webp_replace = false -img_optm-webp_attr = 'img.src -div.data-thumb -img.data-src -div.data-large_image -img.retina_logo_url -div.data-parallax-image -video.poster' -img_optm-webp_replace_srcset = false -img_optm-jpg_quality = 82 -;; -------------------------------------------------- ;; -;; -------------- Crawler ----------------- ;; -;; -------------------------------------------------- ;; -crawler = false -crawler-inc_posts = true -crawler-inc_pages = true -crawler-inc_cats = true -crawler-inc_tags = true -crawler-exc_cpt = '' -crawler-order_links = 'date_desc' -crawler-usleep = 500 -crawler-run_duration = 400 -crawler-run_interval = 600 -crawler-crawl_interval = 302400 -crawler-threads = 3 -crawler-timeout = 30 -crawler-load_limit = 1 -; O_CRAWLER_SITEMAP -crawler-sitemap = '' -; O_CRAWLER_DROP_DOMAIN -crawler-drop_domain = true -crawler-roles = '' -crawler-cookies = '' -;; -------------------------------------------------- ;; -;; -------------- Misc ----------------- ;; -;; -------------------------------------------------- ;; -; O_MISC_HTACCESS_FRONT -misc-htaccess_front = '' -; O_MISC_HTACCESS_BACK -misc-htaccess_back = '' -; O_MISC_HEARTBEAT_FRONT -misc-heartbeat_front = false -; O_MISC_HEARTBEAT_FRONT_TTL -misc-heartbeat_front_ttl = 60 -; O_MISC_HEARTBEAT_BACK -misc-heartbeat_back = false -; O_MISC_HEARTBEAT_BACK_TTL -misc-heartbeat_back_ttl = 60 -; O_MISC_HEARTBEAT_EDITOR -misc-heartbeat_editor = false -; O_MISC_HEARTBEAT_EDITOR_TTL -misc-heartbeat_editor_ttl = 15 -;; -------------------------------------------------- ;; -;; -------------- CDN ----------------- ;; -;; -------------------------------------------------- ;; -cdn = false -cdn-ori = '' -cdn-ori_dir = '' -cdn-exc = '' -cdn-remote_jq = false -cdn-quic = false -cdn-quic_email = '' -cdn-quic_key = '' -cdn-cloudflare = false -cdn-cloudflare_email = '' -cdn-cloudflare_key = '' -cdn-cloudflare_name = '' -cdn-cloudflare_zone = '' -; \`cdn-mapping\` needs to be put in the end with a section tag -;; -------------------------------------------------- ;; -;; -------------- CDN 2 ----------------- ;; -;; -------------------------------------------------- ;; -; <------------ CDN Mapping Example BEGIN --------------------> -; Need to keep the section tag \`[cdn-mapping]\` before list. -; -; NOTE 1) Need to set all child options to make all resources to be replaced without missing. -; NOTE 2) \`url[n]\` option must have to enable the row setting of \`n\`. -; NOTE 3) This section needs to be put in the end of this .ini file -; -; To enable the 2nd mapping record by default, please remove the \`;;\` in the related lines. -[cdn-mapping] -url[0] = '' -inc_js[0] = true -inc_css[0] = true -inc_img[0] = true -filetype[0] = '.aac -.css -.eot -.gif -.jpeg -.js -.jpg -.less -.mp3 -.mp4 -.ogg -.otf -.pdf -.png -.svg -.ttf -.woff' -;;url[1] = 'https://2nd_CDN_url.com/' -;;filetype[1] = '.webm' -; <------------ CDN Mapping Example END ------------------> -EOM - - THEME_PATH="${VH_DOC_ROOT}/wp-content/themes/${THEME}" - if [ ! -f ${THEME_PATH}/functions.php ]; then - cat >> "${THEME_PATH}/functions.php" <>/dev/null 2>&1 -2i -require_once( WP_CONTENT_DIR.'/../wp-admin/includes/plugin.php' ); -\$path = 'litespeed-cache/litespeed-cache.php' ; -if (!is_plugin_active( \$path )) { - activate_plugin( \$path ) ; - rename( __FILE__ . '.bk', __FILE__ ); -} -. -w -q -END - fi -} - -preinstall_wordpress(){ - if [ "${VHNAME}" != '' ]; then - get_db_pass ${VHNAME} - else - get_db_pass ${DOMAIN} - fi - if [ ! -f ${VH_DOC_ROOT}/wp-config.php ] && [ -f ${VH_DOC_ROOT}/wp-config-sample.php ]; then - cp ${VH_DOC_ROOT}/wp-config-sample.php ${VH_DOC_ROOT}/wp-config.php - NEWDBPWD="define('DB_PASSWORD', '${SQL_PASS}');" - linechange 'DB_PASSWORD' ${VH_DOC_ROOT}/wp-config.php "${NEWDBPWD}" - NEWDBPWD="define('DB_USER', '${SQL_USER}');" - linechange 'DB_USER' ${VH_DOC_ROOT}/wp-config.php "${NEWDBPWD}" - NEWDBPWD="define('DB_NAME', '${SQL_DB}');" - linechange 'DB_NAME' ${VH_DOC_ROOT}/wp-config.php "${NEWDBPWD}" - #NEWDBPWD="define('DB_HOST', '${PUB_IP}');" - NEWDBPWD="define('DB_HOST', '${DB_HOST}');" - linechange 'DB_HOST' ${VH_DOC_ROOT}/wp-config.php "${NEWDBPWD}" - elif [ -f ${VH_DOC_ROOT}/wp-config.php ]; then - echo "${VH_DOC_ROOT}/wp-config.php already exist, exit !" - exit 1 - else - echo 'Skip!' - exit 2 - fi -} - -app_wordpress_dl(){ - if [ ! -f "${VH_DOC_ROOT}/wp-config.php" ] && [ ! -f "${VH_DOC_ROOT}/wp-config-sample.php" ]; then - wp core download \ - --allow-root \ - --quiet - else - echo 'wordpress already exist, abort!' - exit 1 - fi -} - -change_owner(){ - if [ "${VHNAME}" != '' ]; then - chown -R ${WWW_UID}:${WWW_GID} ${DEFAULT_VH_ROOT}/${VHNAME} - else - chown -R ${WWW_UID}:${WWW_GID} ${DEFAULT_VH_ROOT}/${DOMAIN} - fi -} - -main(){ - set_vh_docroot ${DOMAIN} - get_owner - cd ${VH_DOC_ROOT} - if [ "${APP_NAME}" = 'wordpress' ] || [ "${APP_NAME}" = 'wp' ]; then - check_sql_native - app_wordpress_dl - preinstall_wordpress - install_wp_plugin - set_htaccess - get_theme_name - set_lscache - change_owner - exit 0 - else - echo "APP: ${APP_NAME} not support, exit!" - exit 1 - fi -} - -check_input ${1} -while [ ! -z "${1}" ]; do - case ${1} in - -[hH] | -help | --help) - help_message - ;; - -[aA] | -app | --app) shift - check_input "${1}" - APP_NAME="${1}" - ;; - -[dD] | -domain | --domain) shift - check_input "${1}" - DOMAIN="${1}" - ;; - -vhname | --vhname) shift - VHNAME="${1}" - ;; - *) - help_message - ;; - esac - shift -done -main diff --git a/apps/openlitespeed/1.8.3-lsphp81/data/bin/container/certhookctl.sh b/apps/openlitespeed/1.8.3-lsphp81/data/bin/container/certhookctl.sh deleted file mode 100644 index 18be0965..00000000 --- a/apps/openlitespeed/1.8.3-lsphp81/data/bin/container/certhookctl.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -BOTCRON='/var/spool/cron/crontabs/root' - -cert_hook(){ - grep 'acme' ${BOTCRON} >/dev/null - if [ ${?} = 0 ]; then - grep 'lswsctrl' ${BOTCRON} >/dev/null - if [ ${?} = 0 ]; then - echo 'Hook already exist, skip!' - else - sed -i 's/--cron/--cron --renew-hook "\/usr\/local\/lsws\/bin\/lswsctrl restart"/g' ${BOTCRON} - fi - else - echo "[X] ${BOTCRON} does not exist, please check it later!" - fi -} - -cert_hook \ No newline at end of file diff --git a/apps/openlitespeed/1.8.3-lsphp81/data/bin/container/domainctl.sh b/apps/openlitespeed/1.8.3-lsphp81/data/bin/container/domainctl.sh deleted file mode 100644 index 75539ef0..00000000 --- a/apps/openlitespeed/1.8.3-lsphp81/data/bin/container/domainctl.sh +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/bin/env bash -CK_RESULT='' -LSDIR='/usr/local/lsws' -LS_HTTPD_CONF="${LSDIR}/conf/httpd_config.xml" -OLS_HTTPD_CONF="${LSDIR}/conf/httpd_config.conf" -EPACE=' ' - -echow(){ - FLAG=${1} - shift - echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}" -} - -help_message(){ - echo -e "\033[1mOPTIONS\033[0m" - echow '-A, --add [DOMAIN_NAME]' - echo "${EPACE}${EPACE}Will add domain to listener and creat a virtual host from template" - echow '-D, --del [DOMAIN_NAME]' - echo "${EPACE}${EPACE}Will delete domain from listener" - echow '-H, --help' - echo "${EPACE}${EPACE}Display help." -} - -check_lsv(){ - if [ -f ${LSDIR}/bin/openlitespeed ]; then - LSV='openlitespeed' - elif [ -f ${LSDIR}/bin/litespeed ]; then - LSV='lsws' - else - echo 'Version not exist, abort!' - exit 1 - fi -} - -dot_escape(){ - ESCAPE=$(echo ${1} | sed 's/\./\\./g') -} - -check_duplicate(){ - CK_RESULT=$(grep -E "${1}" ${2}) -} - -fst_match_line(){ - FIRST_LINE_NUM=$(grep -n -m 1 ${1} ${2} | awk -F ':' '{print $1}') -} -fst_match_after(){ - FIRST_NUM_AFTER=$(tail -n +${1} ${2} | grep -n -m 1 ${3} | awk -F ':' '{print $1}') -} -lst_match_line(){ - fst_match_after ${1} ${2} ${3} - LAST_LINE_NUM=$((${FIRST_LINE_NUM}+${FIRST_NUM_AFTER}-1)) -} - -check_input(){ - if [ -z "${1}" ]; then - help_message - exit 1 - fi -} - -check_www(){ - CHECK_WWW=$(echo ${1} | cut -c1-4) - if [[ ${CHECK_WWW} == www. ]] ; then - echo 'www domain shoudnt be passed!' - exit 1 - fi -} - -www_domain(){ - check_www ${1} - WWW_DOMAIN=$(echo www.${1}) -} - -add_ls_domain(){ - fst_match_line 'docker.xml' ${LS_HTTPD_CONF} - NEWNUM=$((FIRST_LINE_NUM+2)) - sed -i "${NEWNUM}i \ \ \ \ \ \ \n \ \ \ \ \ \ \ ${DOMAIN}\n \ \ \ \ \ \ \ ${DOMAIN},${WWW_DOMAIN}\n \ \ \ \ \ \ " ${LS_HTTPD_CONF} -} - -add_ols_domain(){ - perl -0777 -p -i -e 's/(vhTemplate docker \{[^}]+)\}*(^.*listeners.*$)/\1$2 - member '${DOMAIN}' { - vhDomain '${DOMAIN},${WWW_DOMAIN}' - }/gmi' ${OLS_HTTPD_CONF} -} - -add_domain(){ - check_lsv - dot_escape ${1} - DOMAIN=${ESCAPE} - www_domain ${1} - if [ "${LSV}" = 'lsws' ]; then - check_duplicate "vhDomain.*${DOMAIN}" ${LS_HTTPD_CONF} - if [ "${CK_RESULT}" != '' ]; then - echo "# It appears the domain already exist! Check the ${LS_HTTPD_CONF} if you believe this is a mistake!" - exit 1 - fi - elif [ "${LSV}" = 'openlitespeed' ]; then - check_duplicate "member.*${DOMAIN}" ${OLS_HTTPD_CONF} - if [ "${CK_RESULT}" != '' ]; then - echo "# It appears the domain already exist! Check the ${OLS_HTTPD_CONF} if you believe this is a mistake!" - exit 1 - fi - fi - add_ls_domain - add_ols_domain -} - -del_ls_domain(){ - fst_match_line "*${1}" ${LS_HTTPD_CONF} - FIRST_LINE_NUM=$((FIRST_LINE_NUM-1)) - lst_match_line ${FIRST_LINE_NUM} ${LS_HTTPD_CONF} '' - sed -i "${FIRST_LINE_NUM},${LAST_LINE_NUM}d" ${LS_HTTPD_CONF} -} - -del_ols_domain(){ - fst_match_line ${1} ${OLS_HTTPD_CONF} - lst_match_line ${FIRST_LINE_NUM} ${OLS_HTTPD_CONF} '}' - sed -i "${FIRST_LINE_NUM},${LAST_LINE_NUM}d" ${OLS_HTTPD_CONF} -} - -del_domain(){ - check_lsv - dot_escape ${1} - DOMAIN=${ESCAPE} - if [ "${LSV}" = 'lsws' ]; then - check_duplicate "vhDomain.*${DOMAIN}" ${LS_HTTPD_CONF} - if [ "${CK_RESULT}" = '' ]; then - echo "# Domain non-exist! Check the ${LS_HTTPD_CONF} if you believe this is a mistake!" - exit 1 - fi - elif [ "${LSV}" = 'openlitespeed' ]; then - check_duplicate "member.*${DOMAIN}" ${OLS_HTTPD_CONF} - if [ "${CK_RESULT}" = '' ]; then - echo "# Domain non-exist! Check the ${OLS_HTTPD_CONF} if you believe this is a mistake!" - exit 1 - fi - fi - del_ls_domain ${1} - del_ols_domain ${1} -} - -check_input ${1} -while [ ! -z "${1}" ]; do - case ${1} in - -[hH] | -help | --help) - help_message - ;; - -[aA] | -add | --add) shift - add_domain ${1} - ;; - -[dD] | -del | --del | --delete) shift - del_domain ${1} - ;; - *) - help_message - ;; - esac - shift -done \ No newline at end of file diff --git a/apps/openlitespeed/1.8.3-lsphp81/data/bin/container/owaspctl.sh b/apps/openlitespeed/1.8.3-lsphp81/data/bin/container/owaspctl.sh deleted file mode 100644 index 72fd8e59..00000000 --- a/apps/openlitespeed/1.8.3-lsphp81/data/bin/container/owaspctl.sh +++ /dev/null @@ -1,236 +0,0 @@ -#!/bin/bash -LSDIR='/usr/local/lsws' -OWASP_DIR="${LSDIR}/conf/owasp" -RULE_FILE='modsec_includes.conf' -LS_HTTPD_CONF="${LSDIR}/conf/httpd_config.xml" -OLS_HTTPD_CONF="${LSDIR}/conf/httpd_config.conf" -EPACE=' ' -OWASP_V='3.3.4' - -echow(){ - FLAG=${1} - shift - echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}" -} - -help_message(){ - echo -e "\033[1mOPTIONS\033[0m" - echow '-E, --enable' - echo "${EPACE}${EPACE}Will Enable mod_secure module with latest OWASP version of rules" - echow '-D, --disable' - echo "${EPACE}${EPACE}Will Disable mod_secure module with latest OWASP version of rules" - echow '-H, --help' - echo "${EPACE}${EPACE}Display help and exit." - exit 0 -} - -check_lsv(){ - if [ -f ${LSDIR}/bin/openlitespeed ]; then - LSV='openlitespeed' - elif [ -f ${LSDIR}/bin/litespeed ]; then - LSV='lsws' - else - echo 'Version not exist, abort!' - exit 1 - fi -} - -check_input(){ - if [ -z "${1}" ]; then - help_message - exit 1 - fi -} - -mk_owasp_dir(){ - if [ -d ${OWASP_DIR} ] ; then - rm -rf ${OWASP_DIR} - fi - mkdir -p ${OWASP_DIR} - if [ ${?} -ne 0 ] ; then - echo "Unable to create directory: ${OWASP_DIR}, exit!" - exit 1 - fi -} - -fst_match_line(){ - FIRST_LINE_NUM=$(grep -n -m 1 "${1}" ${2} | awk -F ':' '{print $1}') -} -fst_match_after(){ - FIRST_NUM_AFTER=$(tail -n +${1} ${2} | grep -n -m 1 ${3} | awk -F ':' '{print $1}') -} -lst_match_line(){ - fst_match_after ${1} ${2} ${3} - LAST_LINE_NUM=$((${FIRST_LINE_NUM}+${FIRST_NUM_AFTER}-1)) -} - -enable_ols_modsec(){ - grep 'module mod_security {' ${OLS_HTTPD_CONF} >/dev/null 2>&1 - if [ ${?} -eq 0 ] ; then - echo "Already configured for modsecurity." - else - echo 'Enable modsecurity' - sed -i "s=module cache=module mod_security {\nmodsecurity on\ - \nmodsecurity_rules \`\nSecRuleEngine On\n\`\nmodsecurity_rules_file \ - ${OWASP_DIR}/${RULE_FILE}\n ls_enabled 1\n}\ - \n\nmodule cache=" ${OLS_HTTPD_CONF} - fi -} - -enable_ls_modsec(){ - grep '1' ${LS_HTTPD_CONF} >/dev/null 2>&1 - if [ ${?} -eq 0 ] ; then - echo "LSWS already configured for modsecurity" - else - echo 'Enable modsecurity' - sed -i \ - "s=0=1=" ${LS_HTTPD_CONF} - sed -i \ - "s==\n\ - \n\ - ModSec\n\ - 1\n\ - include ${OWASP_DIR}/modsec_includes.conf\n\ - =" ${LS_HTTPD_CONF} - fi -} - -enable_modsec(){ - if [ "${LSV}" = 'lsws' ]; then - enable_ls_modsec - elif [ "${LSV}" = 'openlitespeed' ]; then - enable_ols_modsec - fi -} - -disable_ols_modesec(){ - grep 'module mod_security {' ${OLS_HTTPD_CONF} >/dev/null 2>&1 - if [ ${?} -eq 0 ] ; then - echo 'Disable modsecurity' - fst_match_line 'module mod_security' ${OLS_HTTPD_CONF} - lst_match_line ${FIRST_LINE_NUM} ${OLS_HTTPD_CONF} '}' - sed -i "${FIRST_LINE_NUM},${LAST_LINE_NUM}d" ${OLS_HTTPD_CONF} - else - echo 'Already disabled for modsecurity' - fi -} - -disable_ls_modesec(){ - grep '0' ${LS_HTTPD_CONF} - if [ ${?} -eq 0 ] ; then - echo 'Already disabled for modsecurity' - else - echo 'Disable modsecurity' - sed -i \ - "s=1=0=" ${LS_HTTPD_CONF} - fst_match_line 'censorshipRuleSet' ${LS_HTTPD_CONF} - lst_match_line ${FIRST_LINE_NUM} ${LS_HTTPD_CONF} '/censorshipRuleSet' - sed -i "${FIRST_LINE_NUM},${LAST_LINE_NUM}d" ${LS_HTTPD_CONF} - fi -} - -disable_modsec(){ - check_lsv - if [ "${LSV}" = 'lsws' ]; then - disable_ls_modesec - elif [ "${LSV}" = 'openlitespeed' ]; then - disable_ols_modesec - fi -} - -install_unzip(){ - if [ ! -f /usr/bin/unzip ]; then - echo 'Install Unzip' - apt update >/dev/null 2>&1 - apt-get install unzip -y >/dev/null 2>&1 - fi -} - -install_owasp(){ - cd ${OWASP_DIR} - echo 'Download OWASP rules' - wget -q https://github.com/coreruleset/coreruleset/archive/refs/tags/v${OWASP_V}.zip - unzip -qq v${OWASP_V}.zip - rm -f v${OWASP_V}.zip - mv coreruleset-* owasp-modsecurity-crs -} - -configure_owasp(){ - echo 'Config OWASP rules.' - cd ${OWASP_DIR} - echo "include modsecurity.conf -include owasp-modsecurity-crs/crs-setup.conf -include owasp-modsecurity-crs/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf -include owasp-modsecurity-crs/rules/REQUEST-901-INITIALIZATION.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9001-DRUPAL-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9002-WORDPRESS-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9003-NEXTCLOUD-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9004-DOKUWIKI-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9005-CPANEL-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9006-XENFORO-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-905-COMMON-EXCEPTIONS.conf -include owasp-modsecurity-crs/rules/REQUEST-910-IP-REPUTATION.conf -include owasp-modsecurity-crs/rules/REQUEST-911-METHOD-ENFORCEMENT.conf -include owasp-modsecurity-crs/rules/REQUEST-912-DOS-PROTECTION.conf -include owasp-modsecurity-crs/rules/REQUEST-913-SCANNER-DETECTION.conf -include owasp-modsecurity-crs/rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf -include owasp-modsecurity-crs/rules/REQUEST-921-PROTOCOL-ATTACK.conf -include owasp-modsecurity-crs/rules/REQUEST-930-APPLICATION-ATTACK-LFI.conf -include owasp-modsecurity-crs/rules/REQUEST-931-APPLICATION-ATTACK-RFI.conf -include owasp-modsecurity-crs/rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf -include owasp-modsecurity-crs/rules/REQUEST-933-APPLICATION-ATTACK-PHP.conf -include owasp-modsecurity-crs/rules/REQUEST-934-APPLICATION-ATTACK-NODEJS.conf -include owasp-modsecurity-crs/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf -include owasp-modsecurity-crs/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf -include owasp-modsecurity-crs/rules/REQUEST-943-APPLICATION-ATTACK-SESSION-FIXATION.conf -include owasp-modsecurity-crs/rules/REQUEST-944-APPLICATION-ATTACK-JAVA.conf -include owasp-modsecurity-crs/rules/REQUEST-949-BLOCKING-EVALUATION.conf -include owasp-modsecurity-crs/rules/RESPONSE-950-DATA-LEAKAGES.conf -include owasp-modsecurity-crs/rules/RESPONSE-951-DATA-LEAKAGES-SQL.conf -include owasp-modsecurity-crs/rules/RESPONSE-952-DATA-LEAKAGES-JAVA.conf -include owasp-modsecurity-crs/rules/RESPONSE-953-DATA-LEAKAGES-PHP.conf -include owasp-modsecurity-crs/rules/RESPONSE-954-DATA-LEAKAGES-IIS.conf -include owasp-modsecurity-crs/rules/RESPONSE-959-BLOCKING-EVALUATION.conf -include owasp-modsecurity-crs/rules/RESPONSE-980-CORRELATION.conf -include owasp-modsecurity-crs/rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf">modsec_includes.conf - echo "SecRuleEngine On">modsecurity.conf - cd ${OWASP_DIR}/owasp-modsecurity-crs - if [ -f crs-setup.conf.example ]; then - mv crs-setup.conf.example crs-setup.conf - fi - cd ${OWASP_DIR}/owasp-modsecurity-crs/rules - if [ -f REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example ]; then - mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf - fi - if [ -f RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example ]; then - mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf - fi -} - -main_owasp(){ - mk_owasp_dir - install_unzip - install_owasp - configure_owasp - check_lsv - enable_modsec -} - -check_input ${1} -while [ ! -z "${1}" ]; do - case ${1} in - -[hH] | -help | --help) - help_message - ;; - -[eE] | -enable | --enable) - main_owasp - ;; - -[dD] | -disable | --disable) - disable_modsec - ;; - *) - help_message - ;; - esac - shift -done \ No newline at end of file diff --git a/apps/openlitespeed/1.8.3-lsphp81/data/bin/container/serialctl.sh b/apps/openlitespeed/1.8.3-lsphp81/data/bin/container/serialctl.sh deleted file mode 100644 index 42e312dc..00000000 --- a/apps/openlitespeed/1.8.3-lsphp81/data/bin/container/serialctl.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/bash -LSDIR='/usr/local/lsws' -EPACE=' ' - -echow(){ - FLAG=${1} - shift - echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}" -} - -help_message(){ - echo -e "\033[1mOPTIONS\033[0m" - echow '-S, --serial [YOUR_SERIAL|TRIAL]' - echo "${EPACE}${EPACE}Will apply and register the serial to LSWS." - echow '-H, --help' - echo "${EPACE}${EPACE}Display help and exit." - exit 0 -} - -check_input(){ - if [ -z "${1}" ]; then - help_message - exit 1 - fi -} - -backup_old(){ - if [ -f ${1} ] && [ ! -f ${1}_old ]; then - mv ${1} ${1}_old - fi -} - -detect_ols(){ - if [ -e ${LSDIR}/bin/openlitespeed ]; then - echo '[X] Detect OpenLiteSpeed, abort!' - exit 1 - fi -} - -apply_serial(){ - detect_ols - check_input ${1} - echo ${1} | grep -i 'trial' >/dev/null - if [ ${?} = 0 ]; then - echo 'Apply Trial License' - if [ ! -e ${LSDIR}/conf/serial.no ] && [ ! -e ${LSDIR}/conf/license.key ]; then - rm -f ${LSDIR}/conf/trial.key* - wget -P ${LSDIR}/conf -q http://license.litespeedtech.com/reseller/trial.key - echo 'Apply trial finished' - else - echo "Please backup and remove your existing license, apply abort!" - exit 1 - fi - else - echo "Apply Serial number: ${1}" - backup_old ${LSDIR}/conf/serial.no - backup_old ${LSDIR}/conf/license.key - backup_old ${LSDIR}/conf/trial.key - echo "${1}" > ${LSDIR}/conf/serial.no - ${LSDIR}/bin/lshttpd -r - if [ -f ${LSDIR}/conf/license.key ]; then - echo '[O] Apply success' - else - echo '[X] Apply failed, please check!' - exit 1 - fi - fi -} - -check_input ${1} -while [ ! -z "${1}" ]; do - case ${1} in - -[hH] | -help | --help) - help_message - ;; - -[sS] | -serial | --serial) shift - apply_serial "${1}" - ;; - *) - help_message - ;; - esac - shift -done \ No newline at end of file diff --git a/apps/openlitespeed/1.8.3-lsphp81/data/sites/.gitignore b/apps/openlitespeed/1.8.3-lsphp81/data/sites/.gitignore deleted file mode 100644 index d6b7ef32..00000000 --- a/apps/openlitespeed/1.8.3-lsphp81/data/sites/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/apps/openlitespeed/1.8.3-lsphp81/docker-compose.yml b/apps/openlitespeed/1.8.3-lsphp81/docker-compose.yml deleted file mode 100644 index 5549c9d3..00000000 --- a/apps/openlitespeed/1.8.3-lsphp81/docker-compose.yml +++ /dev/null @@ -1,29 +0,0 @@ -services: - litespeed: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - logging: - driver: none - volumes: - - ${DATA_PATH}/lsws/conf:/usr/local/lsws/conf - - ${DATA_PATH}/lsws/admin-conf:/usr/local/lsws/admin/conf - - ${DATA_PATH}/bin/container:/usr/local/bin - - ${DATA_PATH}/sites:/var/www/vhosts/ - - ${DATA_PATH}/acme:/root/.acme.sh/ - - ${DATA_PATH}/logs:/usr/local/lsws/logs/ - ports: - - "${PANEL_APP_PORT_HTTP}:80" - - "${PANEL_APP_PORT_HTTPS}:443" - - "${PANEL_APP_PORT_HTTPS}:443/udp" - - "${PANEL_APP_PORT_CONSOLE}:7080" - environment: - - TZ=${TIME_ZONE} - image: litespeedtech/openlitespeed:1.8.3-lsphp81 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/openlitespeed/README.md b/apps/openlitespeed/README.md deleted file mode 100644 index 53c7ffab..00000000 --- a/apps/openlitespeed/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# 使用说明 - -安装完成后,在容器功能界面,连接容器终端,执行以下命令创建管理员账户密码 - -``` -/usr/local/lsws/admin/misc/admpass.sh -``` - -# 原始相关 - -OpenLiteSpeed Web Server -======== - -Description --------- - -OpenLiteSpeed is a high-performance, lightweight, open source HTTP server developed and copyrighted by -LiteSpeed Technologies. Users are free to download, use, distribute, and modify OpenLiteSpeed and its -source code in accordance with the precepts of the GPLv3 license. - -This is the official repository for OpenLiteSpeed's source code. It is maintained by LiteSpeed -Technologies. - -Documentation --------- - -Users can find all OpenLiteSpeed documentation on the [OpenLiteSpeed site](https://openlitespeed.org), -but here are some quick links to important parts of the site: - -[Installation](https://openlitespeed.org/kb/category/installation/) - -[Configuration](https://openlitespeed.org/kb/category/configuration/) - -[Road map](https://openlitespeed.org/mediawiki/index.php/Road_Map) - -[Release log](https://openlitespeed.org/release-log/) - -Get in Touch --------- - -OpenLiteSpeed has a [Google Group](https://groups.google.com/forum/#!forum/openlitespeed-development). If -you find a bug, want to request new features, or just want to talk about OpenLiteSpeed, this is the place -to do it. diff --git a/apps/openlitespeed/data.yml b/apps/openlitespeed/data.yml deleted file mode 100644 index da7a8ae4..00000000 --- a/apps/openlitespeed/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: OpenLiteSpeed -tags: - - Web 服务器 -title: 一个高性能、轻量级、开源 的 HTTP 服务器 -description: 一个高性能、轻量级、开源 的 HTTP 服务器 -additionalProperties: - key: openlitespeed - name: OpenLiteSpeed - tags: - - Server - shortDescZh: 一个高性能、轻量级、开源 的 HTTP 服务器 - shortDescEn: A high-performance, lightweight, open source HTTP server - type: runtime - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://openlitespeed.org - github: https://github.com/litespeedtech/openlitespeed - document: https://openlitespeed.org/#install diff --git a/apps/openlitespeed/latest/.env.sample b/apps/openlitespeed/latest/.env.sample deleted file mode 100644 index 0902e645..00000000 --- a/apps/openlitespeed/latest/.env.sample +++ /dev/null @@ -1,6 +0,0 @@ -CONTAINER_NAME="openlitespeed" -DATA_PATH="./data" -PANEL_APP_PORT_CONSOLE="40113" -PANEL_APP_PORT_HTTP="80" -PANEL_APP_PORT_HTTPS="443" -TIME_ZONE="Asia/Shanghai" diff --git a/apps/openlitespeed/latest/data.yml b/apps/openlitespeed/latest/data.yml deleted file mode 100644 index 96591f6f..00000000 --- a/apps/openlitespeed/latest/data.yml +++ /dev/null @@ -1,40 +0,0 @@ -additionalProperties: - formFields: - - default: 80 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: HTTP Port - labelZh: HTTP端口 - required: true - rule: paramPort - type: number - - default: 443 - edit: true - envKey: PANEL_APP_PORT_HTTPS - labelEn: HTTPS Port - labelZh: HTTPS端口 - required: true - rule: paramPort - type: number - - default: 40113 - edit: true - envKey: PANEL_APP_PORT_CONSOLE - labelEn: Console Port - labelZh: 控制台端口 - required: true - rule: paramPort - type: number - - default: ./data - disabled: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: Asia/Shanghai - edit: true - envKey: TIME_ZONE - labelEn: Time zone - labelZh: 时区 - required: true - type: text diff --git a/apps/openlitespeed/latest/data/bin/container/appinstallctl.sh b/apps/openlitespeed/latest/data/bin/container/appinstallctl.sh deleted file mode 100644 index d79c63f1..00000000 --- a/apps/openlitespeed/latest/data/bin/container/appinstallctl.sh +++ /dev/null @@ -1,660 +0,0 @@ -#!/bin/bash -DEFAULT_VH_ROOT='/var/www/vhosts' -VH_DOC_ROOT='' -VHNAME='' -APP_NAME='' -DOMAIN='' -WWW_UID='' -WWW_GID='' -WP_CONST_CONF='' -PUB_IP=$(curl -s http://checkip.amazonaws.com) -DB_HOST='mysql' -PLUGINLIST="litespeed-cache.zip" -THEME='twentytwenty' -EPACE=' ' - -echow(){ - FLAG=${1} - shift - echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}" -} - -help_message(){ - echo -e "\033[1mOPTIONS\033[0m" - echow '-A, -app [wordpress] -D, --domain [DOMAIN_NAME]' - echo "${EPACE}${EPACE}Example: appinstallctl.sh --app wordpress --domain example.com" - echow '-H, --help' - echo "${EPACE}${EPACE}Display help and exit." - exit 0 -} - -check_input(){ - if [ -z "${1}" ]; then - help_message - exit 1 - fi -} - -linechange(){ - LINENUM=$(grep -n "${1}" ${2} | cut -d: -f 1) - if [ -n "${LINENUM}" ] && [ "${LINENUM}" -eq "${LINENUM}" ] 2>/dev/null; then - sed -i "${LINENUM}d" ${2} - sed -i "${LINENUM}i${3}" ${2} - fi -} - -ck_ed(){ - if [ ! -f /bin/ed ]; then - echo "Install ed package.." - apt-get install ed -y > /dev/null 2>&1 - fi -} - -ck_unzip(){ - if [ ! -f /usr/bin/unzip ]; then - echo "Install unzip package.." - apt-get install unzip -y > /dev/null 2>&1 - fi -} - -get_owner(){ - WWW_UID=$(stat -c "%u" ${DEFAULT_VH_ROOT}) - WWW_GID=$(stat -c "%g" ${DEFAULT_VH_ROOT}) - if [ ${WWW_UID} -eq 0 ] || [ ${WWW_GID} -eq 0 ]; then - WWW_UID=1000 - WWW_GID=1000 - echo "Set owner to ${WWW_UID}" - fi -} - -get_db_pass(){ - if [ -f ${DEFAULT_VH_ROOT}/${1}/.db_pass ]; then - SQL_DB=$(grep -i Database ${VH_ROOT}/.db_pass | awk -F ':' '{print $2}' | tr -d '"') - SQL_USER=$(grep -i Username ${VH_ROOT}/.db_pass | awk -F ':' '{print $2}' | tr -d '"') - SQL_PASS=$(grep -i Password ${VH_ROOT}/.db_pass | awk -F ':' '{print $2}' | tr -d '"') - else - echo 'db pass file can not locate, skip wp-config pre-config.' - fi -} - -set_vh_docroot(){ - if [ "${VHNAME}" != '' ]; then - VH_ROOT="${DEFAULT_VH_ROOT}/${VHNAME}" - VH_DOC_ROOT="${DEFAULT_VH_ROOT}/${VHNAME}/html" - WP_CONST_CONF="${VH_DOC_ROOT}/wp-content/plugins/litespeed-cache/data/const.default.ini" - elif [ -d ${DEFAULT_VH_ROOT}/${1}/html ]; then - VH_ROOT="${DEFAULT_VH_ROOT}/${1}" - VH_DOC_ROOT="${DEFAULT_VH_ROOT}/${1}/html" - WP_CONST_CONF="${VH_DOC_ROOT}/wp-content/plugins/litespeed-cache/data/const.default.ini" - else - echo "${DEFAULT_VH_ROOT}/${1}/html does not exist, please add domain first! Abort!" - exit 1 - fi -} - -check_sql_native(){ - local COUNTER=0 - local LIMIT_NUM=100 - until [ "$(curl -v mysql:3306 2>&1 | grep -i 'native\|Connected')" ]; do - echo "Counter: ${COUNTER}/${LIMIT_NUM}" - COUNTER=$((COUNTER+1)) - if [ ${COUNTER} = 10 ]; then - echo '--- MySQL is starting, please wait... ---' - elif [ ${COUNTER} = ${LIMIT_NUM} ]; then - echo '--- MySQL is timeout, exit! ---' - exit 1 - fi - sleep 1 - done -} - -install_wp_plugin(){ - for PLUGIN in ${PLUGINLIST}; do - wget -q -P ${VH_DOC_ROOT}/wp-content/plugins/ https://downloads.wordpress.org/plugin/${PLUGIN} - if [ ${?} = 0 ]; then - ck_unzip - unzip -qq -o ${VH_DOC_ROOT}/wp-content/plugins/${PLUGIN} -d ${VH_DOC_ROOT}/wp-content/plugins/ - else - echo "${PLUGINLIST} FAILED to download" - fi - done - rm -f ${VH_DOC_ROOT}/wp-content/plugins/*.zip -} - -set_htaccess(){ - if [ ! -f ${VH_DOC_ROOT}/.htaccess ]; then - touch ${VH_DOC_ROOT}/.htaccess - fi - cat << EOM > ${VH_DOC_ROOT}/.htaccess -# BEGIN WordPress - -RewriteEngine On -RewriteBase / -RewriteRule ^index\.php$ - [L] -RewriteCond %{REQUEST_FILENAME} !-f -RewriteCond %{REQUEST_FILENAME} !-d -RewriteRule . /index.php [L] - -# END WordPress -EOM -} - -get_theme_name(){ - THEME_NAME=$(grep WP_DEFAULT_THEME ${VH_DOC_ROOT}/wp-includes/default-constants.php | grep -v '!' | awk -F "'" '{print $4}') - echo "${THEME_NAME}" | grep 'twenty' >/dev/null 2>&1 - if [ ${?} = 0 ]; then - THEME="${THEME_NAME}" - fi -} - -set_lscache(){ - cat << EOM > "${WP_CONST_CONF}" -; -; This is the predefined default LSCWP configuration file -; -; All the keys and values please refer \`src/const.cls.php\` -; -; Comments start with \`;\` -; -;; -------------------------------------------------- ;; -;; -------------- General ----------------- ;; -;; -------------------------------------------------- ;; -; O_AUTO_UPGRADE -auto_upgrade = false -; O_API_KEY -api_key = '' -; O_SERVER_IP -server_ip = '' -; O_NEWS -news = false -;; -------------------------------------------------- ;; -;; -------------- Cache ----------------- ;; -;; -------------------------------------------------- ;; -cache-priv = true -cache-commenter = true -cache-rest = true -cache-page_login = true -cache-favicon = true -cache-resources = true -cache-browser = false -cache-mobile = false -cache-mobile_rules = 'Mobile -Android -Silk/ -Kindle -BlackBerry -Opera Mini -Opera Mobi' -cache-exc_useragents = '' -cache-exc_cookies = '' -cache-exc_qs = '' -cache-exc_cat = '' -cache-exc_tag = '' -cache-force_uri = '' -cache-force_pub_uri = '' -cache-priv_uri = '' -cache-exc = '' -cache-exc_roles = '' -cache-drop_qs = 'fbclid -gclid -utm* -_ga' -cache-ttl_pub = 604800 -cache-ttl_priv = 1800 -cache-ttl_frontpage = 604800 -cache-ttl_feed = 604800 -; O_CACHE_TTL_REST -cache-ttl_rest = 604800 -cache-ttl_browser = 31557600 -cache-login_cookie = '' -cache-vary_group = '' -cache-ttl_status = '403 3600 -404 3600 -500 3600' -;; -------------------------------------------------- ;; -;; -------------- Purge ----------------- ;; -;; -------------------------------------------------- ;; -; O_PURGE_ON_UPGRADE -purge-upgrade = true -; O_PURGE_STALE -purge-stale = true -purge-post_all = false -purge-post_f = true -purge-post_h = true -purge-post_p = true -purge-post_pwrp = true -purge-post_a = true -purge-post_y = false -purge-post_m = true -purge-post_d = false -purge-post_t = true -purge-post_pt = true -purge-timed_urls = '' -purge-timed_urls_time = '' -purge-hook_all = 'switch_theme -wp_create_nav_menu -wp_update_nav_menu -wp_delete_nav_menu -create_term -edit_terms -delete_term -add_link -edit_link -delete_link' -;; -------------------------------------------------- ;; -;; -------------- ESI ----------------- ;; -;; -------------------------------------------------- ;; -; O_ESI -esi = false -; O_ESI_CACHE_ADMBAR -esi-cache_admbar = true -; O_ESI_CACHE_COMMFORM -esi-cache_commform = true -; O_ESI_NONCE -esi-nonce = 'stats_nonce -subscribe_nonce' -;; -------------------------------------------------- ;; -;; -------------- Utilities ----------------- ;; -;; -------------------------------------------------- ;; -util-heartbeat = true -util-instant_click = false -util-check_advcache = true -util-no_https_vary = false -;; -------------------------------------------------- ;; -;; -------------- Debug ----------------- ;; -;; -------------------------------------------------- ;; -; O_DEBUG_DISABLE_ALL -debug-disable_all = false -; O_DEBUG -debug = false -; O_DEBUG_IPS -debug-ips = '127.0.0.1' -; O_DEBUG_LEVEL -debug-level = false -; O_DEBUG_FILESIZE -debug-filesize = 3 -; O_DEBUG_COOKIE -debug-cookie = false -; O_DEBUG_COLLAPS_QS -debug-collaps_qs = false -; O_DEBUG_INC -debug-inc = '' -; O_DEBUG_EXC -debug-exc = '' -;; -------------------------------------------------- ;; -;; -------------- DB Optm ----------------- ;; -;; -------------------------------------------------- ;; -; O_DB_OPTM_REVISIONS_MAX -db_optm-revisions_max = 0 -; O_DB_OPTM_REVISIONS_AGE -db_optm-revisions_age = 0 -;; -------------------------------------------------- ;; -;; -------------- HTML Optm ----------------- ;; -;; -------------------------------------------------- ;; -; O_OPTM_CSS_MIN -optm-css_min = false -optm-css_inline_min = false -; O_OPTM_CSS_COMB -optm-css_comb = false -optm-css_comb_priority = false -; O_OPTM_CSS_HTTP2 -optm-css_http2 = false -optm-css_exc = '' -; O_OPTM_JS_MIN -optm-js_min = false -optm-js_inline_min = false -; O_OPTM_JS_COMB -optm-js_comb = false -optm-js_comb_priority = false -; O_OPTM_JS_HTTP2 -optm-js_http2 = false -; O_OPTM_EXC_JQ -optm-js_exc = '' -optm-ttl = 604800 -optm-html_min = false -optm-qs_rm = false -optm-ggfonts_rm = false -; O_OPTM_CSS_ASYNC -optm-css_async = false -; O_OPTM_CCSS_GEN -optm-ccss_gen = true -; O_OPTM_CCSS_ASYNC -optm-ccss_async = true -; O_OPTM_CSS_ASYNC_INLINE -optm-css_async_inline = true -; O_OPTM_CSS_FONT_DISPLAY -optm-css_font_display = false -; O_OPTM_JS_DEFER -optm-js_defer = false -; O_OPTM_JS_INLINE_DEFER -optm-js_inline_defer = false -optm-emoji_rm = false -optm-exc_jq = true -optm-ggfonts_async = false -optm-max_size = 2 -optm-rm_comment = false -optm-exc_roles = '' -optm-ccss_con = '' -optm-js_defer_exc = '' -; O_OPTM_DNS_PREFETCH -optm-dns_prefetch = '' -; O_OPTM_DNS_PREFETCH_CTRL -optm-dns_prefetch_ctrl = false -optm-exc = '' -; O_OPTM_CCSS_SEP_POSTTYPE -optm-ccss_sep_posttype = '' -; O_OPTM_CCSS_SEP_URI -optm-ccss_sep_uri = '' -;; -------------------------------------------------- ;; -;; -------------- Object Cache ----------------- ;; -;; -------------------------------------------------- ;; -object = true -object-kind = false -;object-host = 'localhost' -object-host = '/var/www/memcached.sock' -;object-port = 11211 -cache_object_port = '' -object-life = 360 -object-persistent = true -object-admin = true -object-transients = true -object-db_id = 0 -object-user = '' -object-pswd = '' -object-global_groups = 'users -userlogins -usermeta -user_meta -site-transient -site-options -site-lookup -blog-lookup -blog-details -rss -global-posts -blog-id-cache' -object-non_persistent_groups = 'comment -counts -plugins -wc_session_id' -;; -------------------------------------------------- ;; -;; -------------- Discussion ----------------- ;; -;; -------------------------------------------------- ;; -; O_DISCUSS_AVATAR_CACHE -discuss-avatar_cache = false -; O_DISCUSS_AVATAR_CRON -discuss-avatar_cron = false -; O_DISCUSS_AVATAR_CACHE_TTL -discuss-avatar_cache_ttl = 604800 -;; -------------------------------------------------- ;; -;; -------------- Media ----------------- ;; -;; -------------------------------------------------- ;; -; O_MEDIA_LAZY -media-lazy = false -; O_MEDIA_LAZY_PLACEHOLDER -media-lazy_placeholder = '' -; O_MEDIA_PLACEHOLDER_RESP -media-placeholder_resp = false -; O_MEDIA_PLACEHOLDER_RESP_COLOR -media-placeholder_resp_color = '#cfd4db' -; O_MEDIA_PLACEHOLDER_RESP_GENERATOR -media-placeholder_resp_generator = false -; O_MEDIA_PLACEHOLDER_RESP_SVG -media-placeholder_resp_svg = '' -; O_MEDIA_PLACEHOLDER_LQIP -media-placeholder_lqip = false -; O_MEDIA_PLACEHOLDER_LQIP_QUAL -media-placeholder_lqip_qual = 4 -; O_MEDIA_PLACEHOLDER_RESP_ASYNC -media-placeholder_resp_async = true -; O_MEDIA_IFRAME_LAZY -media-iframe_lazy = false -; O_MEDIA_LAZYJS_INLINE -media-lazyjs_inline = false -; O_MEDIA_LAZY_EXC -media-lazy_exc = '' -; O_MEDIA_LAZY_CLS_EXC -media-lazy_cls_exc = '' -; O_MEDIA_LAZY_PARENT_CLS_EXC -media-lazy_parent_cls_exc = '' -; O_MEDIA_IFRAME_LAZY_CLS_EXC -media-iframe_lazy_cls_exc = '' -; O_MEDIA_IFRAME_LAZY_PARENT_CLS_EXC -media-iframe_lazy_parent_cls_exc = '' -; O_MEDIA_LAZY_URI_EXC -media-lazy_uri_exc = '' -;; -------------------------------------------------- ;; -;; -------------- Image Optm ----------------- ;; -;; -------------------------------------------------- ;; -img_optm-auto = false -img_optm-cron = true -img_optm-ori = true -img_optm-rm_bkup = false -img_optm-webp = false -img_optm-lossless = false -img_optm-exif = false -img_optm-webp_replace = false -img_optm-webp_attr = 'img.src -div.data-thumb -img.data-src -div.data-large_image -img.retina_logo_url -div.data-parallax-image -video.poster' -img_optm-webp_replace_srcset = false -img_optm-jpg_quality = 82 -;; -------------------------------------------------- ;; -;; -------------- Crawler ----------------- ;; -;; -------------------------------------------------- ;; -crawler = false -crawler-inc_posts = true -crawler-inc_pages = true -crawler-inc_cats = true -crawler-inc_tags = true -crawler-exc_cpt = '' -crawler-order_links = 'date_desc' -crawler-usleep = 500 -crawler-run_duration = 400 -crawler-run_interval = 600 -crawler-crawl_interval = 302400 -crawler-threads = 3 -crawler-timeout = 30 -crawler-load_limit = 1 -; O_CRAWLER_SITEMAP -crawler-sitemap = '' -; O_CRAWLER_DROP_DOMAIN -crawler-drop_domain = true -crawler-roles = '' -crawler-cookies = '' -;; -------------------------------------------------- ;; -;; -------------- Misc ----------------- ;; -;; -------------------------------------------------- ;; -; O_MISC_HTACCESS_FRONT -misc-htaccess_front = '' -; O_MISC_HTACCESS_BACK -misc-htaccess_back = '' -; O_MISC_HEARTBEAT_FRONT -misc-heartbeat_front = false -; O_MISC_HEARTBEAT_FRONT_TTL -misc-heartbeat_front_ttl = 60 -; O_MISC_HEARTBEAT_BACK -misc-heartbeat_back = false -; O_MISC_HEARTBEAT_BACK_TTL -misc-heartbeat_back_ttl = 60 -; O_MISC_HEARTBEAT_EDITOR -misc-heartbeat_editor = false -; O_MISC_HEARTBEAT_EDITOR_TTL -misc-heartbeat_editor_ttl = 15 -;; -------------------------------------------------- ;; -;; -------------- CDN ----------------- ;; -;; -------------------------------------------------- ;; -cdn = false -cdn-ori = '' -cdn-ori_dir = '' -cdn-exc = '' -cdn-remote_jq = false -cdn-quic = false -cdn-quic_email = '' -cdn-quic_key = '' -cdn-cloudflare = false -cdn-cloudflare_email = '' -cdn-cloudflare_key = '' -cdn-cloudflare_name = '' -cdn-cloudflare_zone = '' -; \`cdn-mapping\` needs to be put in the end with a section tag -;; -------------------------------------------------- ;; -;; -------------- CDN 2 ----------------- ;; -;; -------------------------------------------------- ;; -; <------------ CDN Mapping Example BEGIN --------------------> -; Need to keep the section tag \`[cdn-mapping]\` before list. -; -; NOTE 1) Need to set all child options to make all resources to be replaced without missing. -; NOTE 2) \`url[n]\` option must have to enable the row setting of \`n\`. -; NOTE 3) This section needs to be put in the end of this .ini file -; -; To enable the 2nd mapping record by default, please remove the \`;;\` in the related lines. -[cdn-mapping] -url[0] = '' -inc_js[0] = true -inc_css[0] = true -inc_img[0] = true -filetype[0] = '.aac -.css -.eot -.gif -.jpeg -.js -.jpg -.less -.mp3 -.mp4 -.ogg -.otf -.pdf -.png -.svg -.ttf -.woff' -;;url[1] = 'https://2nd_CDN_url.com/' -;;filetype[1] = '.webm' -; <------------ CDN Mapping Example END ------------------> -EOM - - THEME_PATH="${VH_DOC_ROOT}/wp-content/themes/${THEME}" - if [ ! -f ${THEME_PATH}/functions.php ]; then - cat >> "${THEME_PATH}/functions.php" <>/dev/null 2>&1 -2i -require_once( WP_CONTENT_DIR.'/../wp-admin/includes/plugin.php' ); -\$path = 'litespeed-cache/litespeed-cache.php' ; -if (!is_plugin_active( \$path )) { - activate_plugin( \$path ) ; - rename( __FILE__ . '.bk', __FILE__ ); -} -. -w -q -END - fi -} - -preinstall_wordpress(){ - if [ "${VHNAME}" != '' ]; then - get_db_pass ${VHNAME} - else - get_db_pass ${DOMAIN} - fi - if [ ! -f ${VH_DOC_ROOT}/wp-config.php ] && [ -f ${VH_DOC_ROOT}/wp-config-sample.php ]; then - cp ${VH_DOC_ROOT}/wp-config-sample.php ${VH_DOC_ROOT}/wp-config.php - NEWDBPWD="define('DB_PASSWORD', '${SQL_PASS}');" - linechange 'DB_PASSWORD' ${VH_DOC_ROOT}/wp-config.php "${NEWDBPWD}" - NEWDBPWD="define('DB_USER', '${SQL_USER}');" - linechange 'DB_USER' ${VH_DOC_ROOT}/wp-config.php "${NEWDBPWD}" - NEWDBPWD="define('DB_NAME', '${SQL_DB}');" - linechange 'DB_NAME' ${VH_DOC_ROOT}/wp-config.php "${NEWDBPWD}" - #NEWDBPWD="define('DB_HOST', '${PUB_IP}');" - NEWDBPWD="define('DB_HOST', '${DB_HOST}');" - linechange 'DB_HOST' ${VH_DOC_ROOT}/wp-config.php "${NEWDBPWD}" - elif [ -f ${VH_DOC_ROOT}/wp-config.php ]; then - echo "${VH_DOC_ROOT}/wp-config.php already exist, exit !" - exit 1 - else - echo 'Skip!' - exit 2 - fi -} - -app_wordpress_dl(){ - if [ ! -f "${VH_DOC_ROOT}/wp-config.php" ] && [ ! -f "${VH_DOC_ROOT}/wp-config-sample.php" ]; then - wp core download \ - --allow-root \ - --quiet - else - echo 'wordpress already exist, abort!' - exit 1 - fi -} - -change_owner(){ - if [ "${VHNAME}" != '' ]; then - chown -R ${WWW_UID}:${WWW_GID} ${DEFAULT_VH_ROOT}/${VHNAME} - else - chown -R ${WWW_UID}:${WWW_GID} ${DEFAULT_VH_ROOT}/${DOMAIN} - fi -} - -main(){ - set_vh_docroot ${DOMAIN} - get_owner - cd ${VH_DOC_ROOT} - if [ "${APP_NAME}" = 'wordpress' ] || [ "${APP_NAME}" = 'wp' ]; then - check_sql_native - app_wordpress_dl - preinstall_wordpress - install_wp_plugin - set_htaccess - get_theme_name - set_lscache - change_owner - exit 0 - else - echo "APP: ${APP_NAME} not support, exit!" - exit 1 - fi -} - -check_input ${1} -while [ ! -z "${1}" ]; do - case ${1} in - -[hH] | -help | --help) - help_message - ;; - -[aA] | -app | --app) shift - check_input "${1}" - APP_NAME="${1}" - ;; - -[dD] | -domain | --domain) shift - check_input "${1}" - DOMAIN="${1}" - ;; - -vhname | --vhname) shift - VHNAME="${1}" - ;; - *) - help_message - ;; - esac - shift -done -main diff --git a/apps/openlitespeed/latest/data/bin/container/certhookctl.sh b/apps/openlitespeed/latest/data/bin/container/certhookctl.sh deleted file mode 100644 index 18be0965..00000000 --- a/apps/openlitespeed/latest/data/bin/container/certhookctl.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -BOTCRON='/var/spool/cron/crontabs/root' - -cert_hook(){ - grep 'acme' ${BOTCRON} >/dev/null - if [ ${?} = 0 ]; then - grep 'lswsctrl' ${BOTCRON} >/dev/null - if [ ${?} = 0 ]; then - echo 'Hook already exist, skip!' - else - sed -i 's/--cron/--cron --renew-hook "\/usr\/local\/lsws\/bin\/lswsctrl restart"/g' ${BOTCRON} - fi - else - echo "[X] ${BOTCRON} does not exist, please check it later!" - fi -} - -cert_hook \ No newline at end of file diff --git a/apps/openlitespeed/latest/data/bin/container/domainctl.sh b/apps/openlitespeed/latest/data/bin/container/domainctl.sh deleted file mode 100644 index 75539ef0..00000000 --- a/apps/openlitespeed/latest/data/bin/container/domainctl.sh +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/bin/env bash -CK_RESULT='' -LSDIR='/usr/local/lsws' -LS_HTTPD_CONF="${LSDIR}/conf/httpd_config.xml" -OLS_HTTPD_CONF="${LSDIR}/conf/httpd_config.conf" -EPACE=' ' - -echow(){ - FLAG=${1} - shift - echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}" -} - -help_message(){ - echo -e "\033[1mOPTIONS\033[0m" - echow '-A, --add [DOMAIN_NAME]' - echo "${EPACE}${EPACE}Will add domain to listener and creat a virtual host from template" - echow '-D, --del [DOMAIN_NAME]' - echo "${EPACE}${EPACE}Will delete domain from listener" - echow '-H, --help' - echo "${EPACE}${EPACE}Display help." -} - -check_lsv(){ - if [ -f ${LSDIR}/bin/openlitespeed ]; then - LSV='openlitespeed' - elif [ -f ${LSDIR}/bin/litespeed ]; then - LSV='lsws' - else - echo 'Version not exist, abort!' - exit 1 - fi -} - -dot_escape(){ - ESCAPE=$(echo ${1} | sed 's/\./\\./g') -} - -check_duplicate(){ - CK_RESULT=$(grep -E "${1}" ${2}) -} - -fst_match_line(){ - FIRST_LINE_NUM=$(grep -n -m 1 ${1} ${2} | awk -F ':' '{print $1}') -} -fst_match_after(){ - FIRST_NUM_AFTER=$(tail -n +${1} ${2} | grep -n -m 1 ${3} | awk -F ':' '{print $1}') -} -lst_match_line(){ - fst_match_after ${1} ${2} ${3} - LAST_LINE_NUM=$((${FIRST_LINE_NUM}+${FIRST_NUM_AFTER}-1)) -} - -check_input(){ - if [ -z "${1}" ]; then - help_message - exit 1 - fi -} - -check_www(){ - CHECK_WWW=$(echo ${1} | cut -c1-4) - if [[ ${CHECK_WWW} == www. ]] ; then - echo 'www domain shoudnt be passed!' - exit 1 - fi -} - -www_domain(){ - check_www ${1} - WWW_DOMAIN=$(echo www.${1}) -} - -add_ls_domain(){ - fst_match_line 'docker.xml' ${LS_HTTPD_CONF} - NEWNUM=$((FIRST_LINE_NUM+2)) - sed -i "${NEWNUM}i \ \ \ \ \ \ \n \ \ \ \ \ \ \ ${DOMAIN}\n \ \ \ \ \ \ \ ${DOMAIN},${WWW_DOMAIN}\n \ \ \ \ \ \ " ${LS_HTTPD_CONF} -} - -add_ols_domain(){ - perl -0777 -p -i -e 's/(vhTemplate docker \{[^}]+)\}*(^.*listeners.*$)/\1$2 - member '${DOMAIN}' { - vhDomain '${DOMAIN},${WWW_DOMAIN}' - }/gmi' ${OLS_HTTPD_CONF} -} - -add_domain(){ - check_lsv - dot_escape ${1} - DOMAIN=${ESCAPE} - www_domain ${1} - if [ "${LSV}" = 'lsws' ]; then - check_duplicate "vhDomain.*${DOMAIN}" ${LS_HTTPD_CONF} - if [ "${CK_RESULT}" != '' ]; then - echo "# It appears the domain already exist! Check the ${LS_HTTPD_CONF} if you believe this is a mistake!" - exit 1 - fi - elif [ "${LSV}" = 'openlitespeed' ]; then - check_duplicate "member.*${DOMAIN}" ${OLS_HTTPD_CONF} - if [ "${CK_RESULT}" != '' ]; then - echo "# It appears the domain already exist! Check the ${OLS_HTTPD_CONF} if you believe this is a mistake!" - exit 1 - fi - fi - add_ls_domain - add_ols_domain -} - -del_ls_domain(){ - fst_match_line "*${1}" ${LS_HTTPD_CONF} - FIRST_LINE_NUM=$((FIRST_LINE_NUM-1)) - lst_match_line ${FIRST_LINE_NUM} ${LS_HTTPD_CONF} '' - sed -i "${FIRST_LINE_NUM},${LAST_LINE_NUM}d" ${LS_HTTPD_CONF} -} - -del_ols_domain(){ - fst_match_line ${1} ${OLS_HTTPD_CONF} - lst_match_line ${FIRST_LINE_NUM} ${OLS_HTTPD_CONF} '}' - sed -i "${FIRST_LINE_NUM},${LAST_LINE_NUM}d" ${OLS_HTTPD_CONF} -} - -del_domain(){ - check_lsv - dot_escape ${1} - DOMAIN=${ESCAPE} - if [ "${LSV}" = 'lsws' ]; then - check_duplicate "vhDomain.*${DOMAIN}" ${LS_HTTPD_CONF} - if [ "${CK_RESULT}" = '' ]; then - echo "# Domain non-exist! Check the ${LS_HTTPD_CONF} if you believe this is a mistake!" - exit 1 - fi - elif [ "${LSV}" = 'openlitespeed' ]; then - check_duplicate "member.*${DOMAIN}" ${OLS_HTTPD_CONF} - if [ "${CK_RESULT}" = '' ]; then - echo "# Domain non-exist! Check the ${OLS_HTTPD_CONF} if you believe this is a mistake!" - exit 1 - fi - fi - del_ls_domain ${1} - del_ols_domain ${1} -} - -check_input ${1} -while [ ! -z "${1}" ]; do - case ${1} in - -[hH] | -help | --help) - help_message - ;; - -[aA] | -add | --add) shift - add_domain ${1} - ;; - -[dD] | -del | --del | --delete) shift - del_domain ${1} - ;; - *) - help_message - ;; - esac - shift -done \ No newline at end of file diff --git a/apps/openlitespeed/latest/data/bin/container/owaspctl.sh b/apps/openlitespeed/latest/data/bin/container/owaspctl.sh deleted file mode 100644 index 72fd8e59..00000000 --- a/apps/openlitespeed/latest/data/bin/container/owaspctl.sh +++ /dev/null @@ -1,236 +0,0 @@ -#!/bin/bash -LSDIR='/usr/local/lsws' -OWASP_DIR="${LSDIR}/conf/owasp" -RULE_FILE='modsec_includes.conf' -LS_HTTPD_CONF="${LSDIR}/conf/httpd_config.xml" -OLS_HTTPD_CONF="${LSDIR}/conf/httpd_config.conf" -EPACE=' ' -OWASP_V='3.3.4' - -echow(){ - FLAG=${1} - shift - echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}" -} - -help_message(){ - echo -e "\033[1mOPTIONS\033[0m" - echow '-E, --enable' - echo "${EPACE}${EPACE}Will Enable mod_secure module with latest OWASP version of rules" - echow '-D, --disable' - echo "${EPACE}${EPACE}Will Disable mod_secure module with latest OWASP version of rules" - echow '-H, --help' - echo "${EPACE}${EPACE}Display help and exit." - exit 0 -} - -check_lsv(){ - if [ -f ${LSDIR}/bin/openlitespeed ]; then - LSV='openlitespeed' - elif [ -f ${LSDIR}/bin/litespeed ]; then - LSV='lsws' - else - echo 'Version not exist, abort!' - exit 1 - fi -} - -check_input(){ - if [ -z "${1}" ]; then - help_message - exit 1 - fi -} - -mk_owasp_dir(){ - if [ -d ${OWASP_DIR} ] ; then - rm -rf ${OWASP_DIR} - fi - mkdir -p ${OWASP_DIR} - if [ ${?} -ne 0 ] ; then - echo "Unable to create directory: ${OWASP_DIR}, exit!" - exit 1 - fi -} - -fst_match_line(){ - FIRST_LINE_NUM=$(grep -n -m 1 "${1}" ${2} | awk -F ':' '{print $1}') -} -fst_match_after(){ - FIRST_NUM_AFTER=$(tail -n +${1} ${2} | grep -n -m 1 ${3} | awk -F ':' '{print $1}') -} -lst_match_line(){ - fst_match_after ${1} ${2} ${3} - LAST_LINE_NUM=$((${FIRST_LINE_NUM}+${FIRST_NUM_AFTER}-1)) -} - -enable_ols_modsec(){ - grep 'module mod_security {' ${OLS_HTTPD_CONF} >/dev/null 2>&1 - if [ ${?} -eq 0 ] ; then - echo "Already configured for modsecurity." - else - echo 'Enable modsecurity' - sed -i "s=module cache=module mod_security {\nmodsecurity on\ - \nmodsecurity_rules \`\nSecRuleEngine On\n\`\nmodsecurity_rules_file \ - ${OWASP_DIR}/${RULE_FILE}\n ls_enabled 1\n}\ - \n\nmodule cache=" ${OLS_HTTPD_CONF} - fi -} - -enable_ls_modsec(){ - grep '1' ${LS_HTTPD_CONF} >/dev/null 2>&1 - if [ ${?} -eq 0 ] ; then - echo "LSWS already configured for modsecurity" - else - echo 'Enable modsecurity' - sed -i \ - "s=0=1=" ${LS_HTTPD_CONF} - sed -i \ - "s==\n\ - \n\ - ModSec\n\ - 1\n\ - include ${OWASP_DIR}/modsec_includes.conf\n\ - =" ${LS_HTTPD_CONF} - fi -} - -enable_modsec(){ - if [ "${LSV}" = 'lsws' ]; then - enable_ls_modsec - elif [ "${LSV}" = 'openlitespeed' ]; then - enable_ols_modsec - fi -} - -disable_ols_modesec(){ - grep 'module mod_security {' ${OLS_HTTPD_CONF} >/dev/null 2>&1 - if [ ${?} -eq 0 ] ; then - echo 'Disable modsecurity' - fst_match_line 'module mod_security' ${OLS_HTTPD_CONF} - lst_match_line ${FIRST_LINE_NUM} ${OLS_HTTPD_CONF} '}' - sed -i "${FIRST_LINE_NUM},${LAST_LINE_NUM}d" ${OLS_HTTPD_CONF} - else - echo 'Already disabled for modsecurity' - fi -} - -disable_ls_modesec(){ - grep '0' ${LS_HTTPD_CONF} - if [ ${?} -eq 0 ] ; then - echo 'Already disabled for modsecurity' - else - echo 'Disable modsecurity' - sed -i \ - "s=1=0=" ${LS_HTTPD_CONF} - fst_match_line 'censorshipRuleSet' ${LS_HTTPD_CONF} - lst_match_line ${FIRST_LINE_NUM} ${LS_HTTPD_CONF} '/censorshipRuleSet' - sed -i "${FIRST_LINE_NUM},${LAST_LINE_NUM}d" ${LS_HTTPD_CONF} - fi -} - -disable_modsec(){ - check_lsv - if [ "${LSV}" = 'lsws' ]; then - disable_ls_modesec - elif [ "${LSV}" = 'openlitespeed' ]; then - disable_ols_modesec - fi -} - -install_unzip(){ - if [ ! -f /usr/bin/unzip ]; then - echo 'Install Unzip' - apt update >/dev/null 2>&1 - apt-get install unzip -y >/dev/null 2>&1 - fi -} - -install_owasp(){ - cd ${OWASP_DIR} - echo 'Download OWASP rules' - wget -q https://github.com/coreruleset/coreruleset/archive/refs/tags/v${OWASP_V}.zip - unzip -qq v${OWASP_V}.zip - rm -f v${OWASP_V}.zip - mv coreruleset-* owasp-modsecurity-crs -} - -configure_owasp(){ - echo 'Config OWASP rules.' - cd ${OWASP_DIR} - echo "include modsecurity.conf -include owasp-modsecurity-crs/crs-setup.conf -include owasp-modsecurity-crs/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf -include owasp-modsecurity-crs/rules/REQUEST-901-INITIALIZATION.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9001-DRUPAL-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9002-WORDPRESS-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9003-NEXTCLOUD-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9004-DOKUWIKI-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9005-CPANEL-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-903.9006-XENFORO-EXCLUSION-RULES.conf -include owasp-modsecurity-crs/rules/REQUEST-905-COMMON-EXCEPTIONS.conf -include owasp-modsecurity-crs/rules/REQUEST-910-IP-REPUTATION.conf -include owasp-modsecurity-crs/rules/REQUEST-911-METHOD-ENFORCEMENT.conf -include owasp-modsecurity-crs/rules/REQUEST-912-DOS-PROTECTION.conf -include owasp-modsecurity-crs/rules/REQUEST-913-SCANNER-DETECTION.conf -include owasp-modsecurity-crs/rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf -include owasp-modsecurity-crs/rules/REQUEST-921-PROTOCOL-ATTACK.conf -include owasp-modsecurity-crs/rules/REQUEST-930-APPLICATION-ATTACK-LFI.conf -include owasp-modsecurity-crs/rules/REQUEST-931-APPLICATION-ATTACK-RFI.conf -include owasp-modsecurity-crs/rules/REQUEST-932-APPLICATION-ATTACK-RCE.conf -include owasp-modsecurity-crs/rules/REQUEST-933-APPLICATION-ATTACK-PHP.conf -include owasp-modsecurity-crs/rules/REQUEST-934-APPLICATION-ATTACK-NODEJS.conf -include owasp-modsecurity-crs/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf -include owasp-modsecurity-crs/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf -include owasp-modsecurity-crs/rules/REQUEST-943-APPLICATION-ATTACK-SESSION-FIXATION.conf -include owasp-modsecurity-crs/rules/REQUEST-944-APPLICATION-ATTACK-JAVA.conf -include owasp-modsecurity-crs/rules/REQUEST-949-BLOCKING-EVALUATION.conf -include owasp-modsecurity-crs/rules/RESPONSE-950-DATA-LEAKAGES.conf -include owasp-modsecurity-crs/rules/RESPONSE-951-DATA-LEAKAGES-SQL.conf -include owasp-modsecurity-crs/rules/RESPONSE-952-DATA-LEAKAGES-JAVA.conf -include owasp-modsecurity-crs/rules/RESPONSE-953-DATA-LEAKAGES-PHP.conf -include owasp-modsecurity-crs/rules/RESPONSE-954-DATA-LEAKAGES-IIS.conf -include owasp-modsecurity-crs/rules/RESPONSE-959-BLOCKING-EVALUATION.conf -include owasp-modsecurity-crs/rules/RESPONSE-980-CORRELATION.conf -include owasp-modsecurity-crs/rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf">modsec_includes.conf - echo "SecRuleEngine On">modsecurity.conf - cd ${OWASP_DIR}/owasp-modsecurity-crs - if [ -f crs-setup.conf.example ]; then - mv crs-setup.conf.example crs-setup.conf - fi - cd ${OWASP_DIR}/owasp-modsecurity-crs/rules - if [ -f REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example ]; then - mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf - fi - if [ -f RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example ]; then - mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf - fi -} - -main_owasp(){ - mk_owasp_dir - install_unzip - install_owasp - configure_owasp - check_lsv - enable_modsec -} - -check_input ${1} -while [ ! -z "${1}" ]; do - case ${1} in - -[hH] | -help | --help) - help_message - ;; - -[eE] | -enable | --enable) - main_owasp - ;; - -[dD] | -disable | --disable) - disable_modsec - ;; - *) - help_message - ;; - esac - shift -done \ No newline at end of file diff --git a/apps/openlitespeed/latest/data/bin/container/serialctl.sh b/apps/openlitespeed/latest/data/bin/container/serialctl.sh deleted file mode 100644 index 42e312dc..00000000 --- a/apps/openlitespeed/latest/data/bin/container/serialctl.sh +++ /dev/null @@ -1,84 +0,0 @@ -#!/bin/bash -LSDIR='/usr/local/lsws' -EPACE=' ' - -echow(){ - FLAG=${1} - shift - echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}" -} - -help_message(){ - echo -e "\033[1mOPTIONS\033[0m" - echow '-S, --serial [YOUR_SERIAL|TRIAL]' - echo "${EPACE}${EPACE}Will apply and register the serial to LSWS." - echow '-H, --help' - echo "${EPACE}${EPACE}Display help and exit." - exit 0 -} - -check_input(){ - if [ -z "${1}" ]; then - help_message - exit 1 - fi -} - -backup_old(){ - if [ -f ${1} ] && [ ! -f ${1}_old ]; then - mv ${1} ${1}_old - fi -} - -detect_ols(){ - if [ -e ${LSDIR}/bin/openlitespeed ]; then - echo '[X] Detect OpenLiteSpeed, abort!' - exit 1 - fi -} - -apply_serial(){ - detect_ols - check_input ${1} - echo ${1} | grep -i 'trial' >/dev/null - if [ ${?} = 0 ]; then - echo 'Apply Trial License' - if [ ! -e ${LSDIR}/conf/serial.no ] && [ ! -e ${LSDIR}/conf/license.key ]; then - rm -f ${LSDIR}/conf/trial.key* - wget -P ${LSDIR}/conf -q http://license.litespeedtech.com/reseller/trial.key - echo 'Apply trial finished' - else - echo "Please backup and remove your existing license, apply abort!" - exit 1 - fi - else - echo "Apply Serial number: ${1}" - backup_old ${LSDIR}/conf/serial.no - backup_old ${LSDIR}/conf/license.key - backup_old ${LSDIR}/conf/trial.key - echo "${1}" > ${LSDIR}/conf/serial.no - ${LSDIR}/bin/lshttpd -r - if [ -f ${LSDIR}/conf/license.key ]; then - echo '[O] Apply success' - else - echo '[X] Apply failed, please check!' - exit 1 - fi - fi -} - -check_input ${1} -while [ ! -z "${1}" ]; do - case ${1} in - -[hH] | -help | --help) - help_message - ;; - -[sS] | -serial | --serial) shift - apply_serial "${1}" - ;; - *) - help_message - ;; - esac - shift -done \ No newline at end of file diff --git a/apps/openlitespeed/latest/data/sites/.gitignore b/apps/openlitespeed/latest/data/sites/.gitignore deleted file mode 100644 index d6b7ef32..00000000 --- a/apps/openlitespeed/latest/data/sites/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/apps/openlitespeed/latest/docker-compose.yml b/apps/openlitespeed/latest/docker-compose.yml deleted file mode 100644 index af30889a..00000000 --- a/apps/openlitespeed/latest/docker-compose.yml +++ /dev/null @@ -1,29 +0,0 @@ -services: - litespeed: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - logging: - driver: none - volumes: - - ${DATA_PATH}/lsws/conf:/usr/local/lsws/conf - - ${DATA_PATH}/lsws/admin-conf:/usr/local/lsws/admin/conf - - ${DATA_PATH}/bin/container:/usr/local/bin - - ${DATA_PATH}/sites:/var/www/vhosts/ - - ${DATA_PATH}/acme:/root/.acme.sh/ - - ${DATA_PATH}/logs:/usr/local/lsws/logs/ - ports: - - "${PANEL_APP_PORT_HTTP}:80" - - "${PANEL_APP_PORT_HTTPS}:443" - - "${PANEL_APP_PORT_HTTPS}:443/udp" - - "${PANEL_APP_PORT_CONSOLE}:7080" - environment: - - TZ=${TIME_ZONE} - image: litespeedtech/openlitespeed:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/openlitespeed/logo.png b/apps/openlitespeed/logo.png deleted file mode 100644 index dba1cecc087b4415379343dc4f3abf3d62c1da78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7056 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 Z7b!Q{{eD-1`zNshwAJ;VRjArV{|6H2wqXDO diff --git a/apps/pgadmin4/9.5/.env.sample b/apps/pgadmin4/9.5/.env.sample deleted file mode 100644 index c073bbff..00000000 --- a/apps/pgadmin4/9.5/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME="pgadmin4" -PANEL_APP_PORT_HTTP="40084" -PGADMIN_EMAIL="admin@example.com" -PGADMIN_PASSWORD="pgadmin4_pwd" diff --git a/apps/pgadmin4/9.5/data.yml b/apps/pgadmin4/9.5/data.yml deleted file mode 100644 index 400b032d..00000000 --- a/apps/pgadmin4/9.5/data.yml +++ /dev/null @@ -1,26 +0,0 @@ -additionalProperties: - formFields: - - default: 40084 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: admin@example.com - edit: true - envKey: PGADMIN_EMAIL - labelEn: Admin Email - labelZh: 管理员邮箱 - required: true - type: text - - default: pgadmin4 - edit: true - envKey: PGADMIN_PASSWORD - labelEn: Admin Password - labelZh: 管理员密码 - random: false - required: true - rule: paramComplexity - type: password diff --git a/apps/pgadmin4/9.5/docker-compose.yml b/apps/pgadmin4/9.5/docker-compose.yml deleted file mode 100644 index 45e9cc1d..00000000 --- a/apps/pgadmin4/9.5/docker-compose.yml +++ /dev/null @@ -1,25 +0,0 @@ -services: - pgadmin4: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - volumes: - - pgadmin4-data:/var/lib/pgadmin - ports: - - "${PANEL_APP_PORT_HTTP}:80" - environment: - - PGADMIN_DEFAULT_EMAIL=${PGADMIN_EMAIL} - - PGADMIN_DEFAULT_PASSWORD=${PGADMIN_PASSWORD} - - PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION=True - - PGADMIN_CONFIG_CONSOLE_LOG_LEVEL=10 - image: dpage/pgadmin4:9.5 - labels: - createdBy: "Apps" - -volumes: - pgadmin4-data: - -networks: - 1panel-network: - external: true diff --git a/apps/pgadmin4/README.md b/apps/pgadmin4/README.md deleted file mode 100644 index d2c50388..00000000 --- a/apps/pgadmin4/README.md +++ /dev/null @@ -1,286 +0,0 @@ -# pgAdmin 4 - -pgAdmin 4 is a rewrite of the popular pgAdmin3 management tool for the -PostgreSQL (http://www.postgresql.org) database. - -In the following documentation and examples, *$PGADMIN4_SRC/* is used to denote -the top-level directory of a copy of the pgAdmin source tree, either from a -tarball or a git checkout. - -## Architecture - -pgAdmin 4 is written as a web application in Python, using jQuery and Bootstrap -for the client side processing and UI. On the server side, Flask is being -utilised. - -Although developed using web technologies, pgAdmin 4 can be deployed either on -a web server using a browser, or standalone on a workstation. The runtime/ -subdirectory contains an NWjs based runtime application intended to allow this, -which will execute the Python server and display the UI. - -## Building the Runtime - -To build the runtime, the following packages must be installed: - -* NodeJS 12+ -* Yarn - -Change into the runtime directory, and run *yarn install*. This will install the -dependencies required. - -In order to use the runtime in a development environment, you'll need to copy -*dev_config.json.in* file to *dev_config.json*, and edit the paths to the Python -executable and *pgAdmin.py* file, otherwise the runtime will use the default -paths it would expect to find in the standard package for your platform. - -You can then execute the runtime by running something like: - -```bash -node_modules/nw/nwjs/nw . -``` - -or on macOS: - -```bash -node_modules/nw/nwjs/nwjs.app/Contents/MacOS/nwjs . -``` - -# Configuring the Python Environment - -In order to run the Python code, a suitable runtime environment is required. -Python version 3.7 and later are currently supported. It is recommended that a -Python Virtual Environment is setup for this purpose, rather than using the -system Python environment. On Linux and Mac systems, the process is fairly -simple - adapt as required for your distribution: - -1. Create a virtual environment in an appropriate directory. The last argument is - the name of the environment; that can be changed as desired: - - ```bash - $ python3 -m venv venv - ``` - -2. Now activate the virtual environment: - - ```bash - $ source venv/bin/activate - ``` - -3. Some of the components used by pgAdmin require a very recent version of *pip*, - so update that to the latest: - - ```bash - $ pip install --upgrade pip - ``` - -4. Ensure that a PostgreSQL installation's bin/ directory is in the path (so - pg_config can be found for building psycopg3), and install the required - packages: - - ```bash - (venv) $ PATH=$PATH:/usr/local/pgsql/bin pip install -r $PGADMIN4_SRC/requirements.txt - ``` - - If you are planning to run the regression tests, you also need to install - additional requirements from web/regression/requirements.txt: - - ```bash - (venv) $ pip install -r $PGADMIN4_SRC/web/regression/requirements.txt - ``` - -5. Create a local configuration file for pgAdmin. Edit - $PGADMIN4_SRC/web/config_local.py and add any desired configuration options - (use the config.py file as a reference - any settings duplicated in - config_local.py will override those in config.py). A typical development - configuration may look like: - - ```python - from config import * - - # Debug mode - DEBUG = True - - # App mode - SERVER_MODE = True - - # Enable the test module - MODULE_BLACKLIST.remove('test') - - # Log - CONSOLE_LOG_LEVEL = DEBUG - FILE_LOG_LEVEL = DEBUG - - DEFAULT_SERVER = '127.0.0.1' - - UPGRADE_CHECK_ENABLED = True - - # Use a different config DB for each server mode. - if SERVER_MODE == False: - SQLITE_PATH = os.path.join( - DATA_DIR, - 'pgadmin4-desktop.db' - ) - else: - SQLITE_PATH = os.path.join( - DATA_DIR, - 'pgadmin4-server.db' - ) - ``` - - This configuration allows easy switching between server and desktop modes - for testing. - -6. The initial setup of the configuration database is interactive in server - mode, and non-interactive in desktop mode. You can run it either by - running: - - ```bash - (venv) $ python3 $PGADMIN4_SRC/web/setup.py - ``` - - or by starting pgAdmin 4: - - ```bash - (venv) $ python3 $PGADMIN4_SRC/web/pgAdmin4.py - ``` - - Whilst it is possible to automatically run setup in desktop mode by running - the runtime, that will not work in server mode as the runtime doesn't allow - command line interaction with the setup program. - -At this point you will be able to run pgAdmin 4 from the command line in either -server or desktop mode, and access it from a web browser using the URL shown in -the terminal once pgAdmin has started up. - -Setup of an environment on Windows is somewhat more complicated unfortunately, -please see *pkg/win32/README.txt* for complete details. - -# Building the Web Assets - -pgAdmin is dependent on a number of third party Javascript libraries. These, -along with it's own Javascript code, SCSS/CSS code and images must be -compiled into a "bundle" which is transferred to the browser for execution -and rendering. This is far more efficient than simply requesting each -asset as it's needed by the client. - -To create the bundle, you will need the 'yarn' package management tool to be -installed. Then, you can run the following commands on a *nix system to -download the required packages and build the bundle: - -```bash -(venv) $ cd $PGADMIN4_SRC -(venv) $ make install-node -(venv) $ make bundle -``` - -On Windows systems (where "make" is not available), the following commands -can be used: - -``` -C:\> cd $PGADMIN4_SRC\web -C:\$PGADMIN4_SRC\web> yarn install -C:\$PGADMIN4_SRC\web> yarn run bundle -``` - -# Creating pgAdmin themes - -To create a pgAdmin theme, you need to create a directory under -*web/pgadmin/static/scss/resources*. -Copy the sample file *_theme.variables.scss.sample* to the new directory and -rename it to *_theme.variables.scss*. Change the desired hexadecimal values of -the colors and bundle pgAdmin. You can also add a preview image in the theme -directory with the name as *\_preview.png*. It is recommended that the -preview image should not be larger in size as it may take time to load on slow -networks. Run the *yarn run bundle* and you're good to go. No other changes are -required, pgAdmin bundle will read the directory and create other required -entries to make them available in preferences. - -The name of the theme is derived from the directory name. Underscores (_) and -hyphens (-) will be replaced with spaces and the result will be camel cased. - -# Building the documentation - -In order to build the docs, an additional Python package is required in the -virtual environment. This can be installed with the pip package manager: - -```bash -$ source venv/bin/activate -(venv) $ pip install Sphinx -(venv) $ pip install sphinxcontrib-youtube -``` - -The docs can then be built using the Makefile in *$PGADMIN4_SRC*, e.g. - -```bash -(venv) $ make docs -``` - -The output can be found in *$PGADMIN4_SRC/docs/en_US/_build/html/index.html* - -# Building packages - -Most packages can be built using the Makefile in $PGADMIN4_SRC, provided all -the setup and configuration above has been completed. - -To build a source tarball: - -```bash -(venv) $ make src -``` - -To build a PIP Wheel, activate either a Python 3 virtual environment, configured -with all the required packages, and then run: - -```bash -(venv) $ make pip -``` - -To build the macOS AppBundle, please see *pkg/mac/README*. - -To build the Windows installer, please see *pkg/win32/README.txt*. -# Create Database Migrations - -In order to make changes to the SQLite DB, navigate to the 'web' directory: - -```bash -(venv) $ cd $PGADMIN4_SRC/web -``` - -Create a migration file with the following command: - -```bash -(venv) $ FLASK_APP=pgAdmin4.py flask db revision -``` - -This will create a file in: $PGADMIN4_SRC/web/migrations/versions/ . -Add any changes to the 'upgrade' function. -Increment the SCHEMA_VERSION in $PGADMIN4_SRC/web/pgadmin/model/__init__.py file. - -There is no need to increment the SETTINGS_SCHEMA_VERSION. - -# Support - -See https://www.pgadmin.org/support/ for support options. - -# Security Issues - -If you would like to report a security issue with pgAdmin, please email -**security (at) pgadmin (dot) org**. - -Note that this address should only be used for reporting security issues -that you believe you've found in the design or code of pgAdmin, pgAgent, -and the pgAdmin website. It should not be used to ask security questions. - -# Project info - -A GitHub project for pgAdmin 4 can be found at the address below: - -https://github.com/pgadmin-org/pgadmin4 - -Please submit any changes as Pull Requests against the *master* branch of the -*pgadmin-org/pgadmin4* repository. - -If you wish to discuss pgAdmin 4, or contribute to the project, please use the -pgAdmin Hackers mailing list: - -pgadmin-hackers@postgresql.org diff --git a/apps/pgadmin4/data.yml b/apps/pgadmin4/data.yml deleted file mode 100644 index 48902b04..00000000 --- a/apps/pgadmin4/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: PGAdmin4 -tags: - - 工具 -title: PostgreSQL 的开源管理和开发平台 -description: PostgreSQL 的开源管理和开发平台 -additionalProperties: - key: pgadmin4 - name: PGAdmin4 - tags: - - Tool - shortDescZh: PostgreSQL 的开源管理和开发平台 - shortDescEn: Open Source administration and development platform for PostgreSQL - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://www.pgadmin.org - github: https://github.com/pgadmin-org/pgadmin4 - document: https://www.pgadmin.org/docs diff --git a/apps/pgadmin4/latest/.env.sample b/apps/pgadmin4/latest/.env.sample deleted file mode 100644 index c073bbff..00000000 --- a/apps/pgadmin4/latest/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME="pgadmin4" -PANEL_APP_PORT_HTTP="40084" -PGADMIN_EMAIL="admin@example.com" -PGADMIN_PASSWORD="pgadmin4_pwd" diff --git a/apps/pgadmin4/latest/data.yml b/apps/pgadmin4/latest/data.yml deleted file mode 100644 index 400b032d..00000000 --- a/apps/pgadmin4/latest/data.yml +++ /dev/null @@ -1,26 +0,0 @@ -additionalProperties: - formFields: - - default: 40084 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: admin@example.com - edit: true - envKey: PGADMIN_EMAIL - labelEn: Admin Email - labelZh: 管理员邮箱 - required: true - type: text - - default: pgadmin4 - edit: true - envKey: PGADMIN_PASSWORD - labelEn: Admin Password - labelZh: 管理员密码 - random: false - required: true - rule: paramComplexity - type: password diff --git a/apps/pgadmin4/latest/docker-compose.yml b/apps/pgadmin4/latest/docker-compose.yml deleted file mode 100644 index 0069bfcc..00000000 --- a/apps/pgadmin4/latest/docker-compose.yml +++ /dev/null @@ -1,25 +0,0 @@ -services: - pgadmin4: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - volumes: - - pgadmin4-data:/var/lib/pgadmin - ports: - - "${PANEL_APP_PORT_HTTP}:80" - environment: - - PGADMIN_DEFAULT_EMAIL=${PGADMIN_EMAIL} - - PGADMIN_DEFAULT_PASSWORD=${PGADMIN_PASSWORD} - - PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION=True - - PGADMIN_CONFIG_CONSOLE_LOG_LEVEL=10 - image: dpage/pgadmin4:latest - labels: - createdBy: "Apps" - -volumes: - pgadmin4-data: - -networks: - 1panel-network: - external: true diff --git a/apps/pgadmin4/logo.png b/apps/pgadmin4/logo.png deleted file mode 100644 index 0be48b7586523978383f3230fd5a681cf69752e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2178 zcmV-|2z~d7P)y})uFM>WiHo&qhf6`)>OgADTb31#TLRMFujN8Sai&+~81sw!9is#Y$)ljpVA?Q;XC8rz1cR{9PetsK*Aba+NL@-d&pG^1T% z0HmpcqtOOWa73pt&4jXfjx7>R)b-`Cy>eJz*EF|a+N8{QNHHY7WXsNoB z>xf$+OH0!8m}c5r|1IE68M}=6AgMLiTB=w&mBlm@P#rZXg00yTh^BpW$CKvw-1lus9OCC%$;DUUZH$LbzriBiG7Auv8yHTT0gbm|FrUg#`J*YJJ zv|(!ogHaaKAZRp#79(iU?6qdl42m(W)}SF@ui!U<98O`Thqp%{Xc{mK$PNnY^yH=? z(4jYh>YN;==^m!x00pCltyiJh1ZfJOyCgG{qPMCA0QOg91qJ-FBerbDY6 z1(=4Fdh*J@GQ>bWt)Rd#G!9wRPg5Ckd8|O?Lj7sOEc}VlPm2S=r9ec4sGc(v591Wa ztoiI}+?Sm$R56|~F=*{8@F$slkFBp>I;w=!6won3a#GW9hlws1uF$H_pHKvN`w-T% zi*mg@D*0?JnD8Z|Y2_A2n-#lIukwtpsgQPU7~2(NzNw-`N?|KFp2K!SB%*MCn%S8Y zyS(jbP$#tztdb35QtstA*!VbWC4ezX8T0!W64Q^d$KADExsLRh%CEW1+F~r_ae1HD z)oU(P4_(u9mH{qddW=7pwt90{x5hjUVNnayGpf&7+qz~QalTN*Dq(txiWe@)<*(S% zY4MZON|?4;Q>=oz9n)+!D20fmKV_QHB(qx1FP(uptHY!cKA&x82~!7a%-^10jT;K1 z-oRzs+tMcS5lNcx>~=COO?eT@A>A~iXLU3>-!?#l`W`ZeX*UxHBxQC0llvQWC_WBs z)rvqVcplSz{_C5erhR@4cKO4w-EafsA9E%kyQE@B+lM({o65a-tB@A)Jiw7>vlkp zNG-fwTROn>xY?zHyazRLL+a)+b>eo(kXZhm02(ENJ|^S9d^dzX8?T4+lx@%QFw@6z z6R&C+qFHLA^^~>o1a{+JMW?UvUct1}Ton0YV2a>bJSeZzHi$;I?F33Qm9UZFWTyN6 zSO*)yz7WLBWWtt_vzZ>2&6$|SmNsE0Fjzx1x|-?bI)NKfU2Pj8cJhjb`fNE&AMzf{ zh{0?JPcL`dnBX2NiKc?{GNwHd!$fbp@v`eaN+lxwNAG+{S)GPkW5ZUc)F#T6I;}H% zO#VTfqD*JEdx6P^qD-UQZZEK~UC?_VlH2Ts#^DMwojs~fHSo?Qbvl!1csFJ_rgOWG zfgPm2edA*PP|W$Dsl+H9wC%o8&#qBPu5@^zox1)596Z}|efx9cREvX_$ik1+e}IE$ zBlNMnR30MR?gb8g9B@=d(w_4avbo&NHd7jhKd$icFa6Hz9k^|c6Jx0SnKicis1k8A zcXmbepn`VKz)XUz#nNo&vLlV0F=N+lRcdiki>+dM zz=_s=$}u(aTR4P5vHy1($DSns_)8puHo`s|CPZvzvlQ0 z+|GPsvfu5is;j$6`0DPCZFfofeJI{@x%*9SqxU2J2P8*ntB9Apwg3PC07*qoM6N<$ Eg4O&eYXATM diff --git a/apps/photoprism/231128/.env.sample b/apps/photoprism/231128/.env.sample deleted file mode 100644 index 9b603989..00000000 --- a/apps/photoprism/231128/.env.sample +++ /dev/null @@ -1,16 +0,0 @@ -CONTAINER_NAME="photoprism" -PHOTOPRISM_EXTERNAL_URL="http://localhost:40101/" -ADMIN_PASSWORD="password" -ADMIN_USER="admin" -DATA_PATH="./data" -GID="1000" -UID="1000" -PANEL_APP_PORT_HTTP="40101" -PANEL_DB_HOST="mariadb" -PANEL_DB_NAME="photoprism" -PANEL_DB_USER="photoprism" -PANEL_DB_USER_PASSWORD="photoprism_rCMTjY" -PHOTOPRISM_DB_PORT="3306" -SITE_AUTHOR="" -SITE_DESCRIPTION="" -SITE_CAPTION="AI-Powered Photos App" diff --git a/apps/photoprism/231128/data.yml b/apps/photoprism/231128/data.yml deleted file mode 100644 index e8434f19..00000000 --- a/apps/photoprism/231128/data.yml +++ /dev/null @@ -1,107 +0,0 @@ -additionalProperties: - formFields: - - default: "" - edit: true - envKey: PANEL_DB_HOST - key: mariadb - labelEn: MariaDB Database Service - labelZh: MariaDB数据库服务 - required: true - type: service - - default: "3306" - edit: true - envKey: PHOTOPRISM_DB_PORT - labelEn: MariaDB Database Service Port - labelZh: MariaDB数据库服务端口 - required: true - rule: paramPort - type: number - - default: photoprism - envKey: PANEL_DB_USER - labelEn: User - labelZh: 数据库用户 - random: true - required: true - rule: paramCommon - type: text - - default: photoprism - envKey: PANEL_DB_USER_PASSWORD - labelEn: Password - labelZh: 数据库用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: 40101 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: 1000 - edit: true - envKey: UID - labelEn: UID - labelZh: UID - required: true - type: number - - default: 1000 - edit: true - envKey: GID - labelEn: GID - labelZh: GID - required: true - type: number - - default: admin - edit: true - envKey: ADMIN_USER - labelEn: Admin user - labelZh: 管理员用户名 - required: true - type: text - - default: photoprism - edit: true - envKey: ADMIN_PASSWORD - labelEn: Admin Password - labelZh: 管理员密码 - random: false - required: true - rule: paramComplexity - type: password - - default: http://localhost:40101/ - edit: true - envKey: PHOTOPRISM_EXTERNAL_URL - labelEn: External URL - labelZh: 外部访问地址 - required: true - type: text - - default: "" - edit: true - envKey: SITE_DESCRIPTION - labelEn: Site description - labelZh: 网站描述 - required: false - type: text - - default: "" - edit: true - envKey: SITE_AUTHOR - labelEn: Site description - labelZh: 网站作者 - required: false - type: text - - default: "AI-Powered Photos App" - edit: true - envKey: SITE_CAPTION - labelEn: Site caption - labelZh: 网站标题 - required: false - type: text diff --git a/apps/photoprism/231128/docker-compose.yml b/apps/photoprism/231128/docker-compose.yml deleted file mode 100644 index 8f73c9b4..00000000 --- a/apps/photoprism/231128/docker-compose.yml +++ /dev/null @@ -1,80 +0,0 @@ -services: - photoprism: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:2342" - volumes: - # "/host/folder:/photoprism/folder" # Example - - "${DATA_PATH}/Pictures:/photoprism/originals" # Original media files (DO NOT REMOVE) - # - "/example/family:/photoprism/originals/family" # *Additional* media folders can be mounted like this - # - "~/Import:/photoprism/import" # *Optional* base folder from which files can be imported to originals - - "${DATA_PATH}/storage:/photoprism/storage" # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE) - environment: - PHOTOPRISM_ADMIN_USER: ${ADMIN_USER} # admin login username - PHOTOPRISM_ADMIN_PASSWORD: ${ADMIN_PASSWORD} # initial admin password (8-72 characters) - PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password) - PHOTOPRISM_SITE_URL: ${PHOTOPRISM_EXTERNAL_URL} # server URL in the format "http(s)://domain.name(:port)/(path)" - PHOTOPRISM_DISABLE_TLS: "false" # disables HTTPS/TLS even if the site URL starts with https:// and a certificate is available - PHOTOPRISM_DEFAULT_TLS: "true" # defaults to a self-signed HTTPS/TLS certificate if no other certificate is available - PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video) - PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip) - PHOTOPRISM_LOG_LEVEL: "info" # log level: trace, debug, info, warning, error, fatal, or panic - PHOTOPRISM_READONLY: "false" # do not modify originals directory (reduced functionality) - PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features - PHOTOPRISM_DISABLE_CHOWN: "false" # disables updating storage permissions via chmod and chown on startup - PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server - PHOTOPRISM_DISABLE_SETTINGS: "false" # disables settings UI and API - PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow - PHOTOPRISM_DISABLE_FACES: "false" # disables face detection and recognition (requires TensorFlow) - PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification (requires TensorFlow) - PHOTOPRISM_DISABLE_VECTORS: "false" # disables vector graphics support - PHOTOPRISM_DISABLE_RAW: "false" # disables indexing and conversion of RAW images - PHOTOPRISM_RAW_PRESETS: "false" # enables applying user presets when converting RAW images (reduces performance) - PHOTOPRISM_JPEG_QUALITY: 85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100) - PHOTOPRISM_DETECT_NSFW: "false" # automatically flags photos as private that MAY be offensive (requires TensorFlow) - PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive (no effect without TensorFlow) - # PHOTOPRISM_DATABASE_DRIVER: "sqlite" # SQLite is an embedded database that doesn't require a server - PHOTOPRISM_DATABASE_DRIVER: "mysql" # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance - PHOTOPRISM_DATABASE_SERVER: ${PANEL_DB_HOST}:${PHOTOPRISM_DB_PORT} # MariaDB or MySQL database server (hostname:port) - PHOTOPRISM_DATABASE_NAME: ${PANEL_DB_NAME} # MariaDB or MySQL database schema name - PHOTOPRISM_DATABASE_USER: ${PANEL_DB_USER} # MariaDB or MySQL database user name - PHOTOPRISM_DATABASE_PASSWORD: ${PANEL_DB_USER_PASSWORD} # MariaDB or MySQL database user password - PHOTOPRISM_SITE_CAPTION: ${SITE_CAPTION} - PHOTOPRISM_SITE_DESCRIPTION: ${SITE_DESCRIPTION} # meta site description - PHOTOPRISM_SITE_AUTHOR: ${SITE_AUTHOR} # meta site author - ## Video Transcoding (https://docs.photoprism.app/getting-started/advanced/transcoding/): - # PHOTOPRISM_FFMPEG_ENCODER: "software" # H.264/AVC encoder (software, intel, nvidia, apple, raspberry, or vaapi) - # PHOTOPRISM_FFMPEG_SIZE: "1920" # video size limit in pixels (720-7680) (default: 3840) - # PHOTOPRISM_FFMPEG_BITRATE: "32" # video bitrate limit in Mbit/s (default: 50) - ## Run/install on first startup (options: update https gpu tensorflow davfs clitools clean): - # PHOTOPRISM_INIT: "https gpu tensorflow" - ## Run as a non-root user after initialization (supported: 0, 33, 50-99, 500-600, and 900-1200): - PHOTOPRISM_UID: ${UID:-1000} - PHOTOPRISM_GID: ${GID:-1000} - # PHOTOPRISM_UMASK: 0000 - ## Start as non-root user before initialization (supported: 0, 33, 50-99, 500-600, and 900-1200): - # user: "1000:1000" - ## Share hardware devices with FFmpeg and TensorFlow (optional): - # devices: - # - "/dev/dri:/dev/dri" # Intel QSV - # - "/dev/nvidia0:/dev/nvidia0" # Nvidia CUDA - # - "/dev/nvidiactl:/dev/nvidiactl" - # - "/dev/nvidia-modeset:/dev/nvidia-modeset" - # - "/dev/nvidia-nvswitchctl:/dev/nvidia-nvswitchctl" - # - "/dev/nvidia-uvm:/dev/nvidia-uvm" - # - "/dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools" - # - "/dev/video11:/dev/video11" # Video4Linux Video Encode Device (h264_v4l2m2m) - working_dir: "/photoprism" # do not change or remove - security_opt: - - seccomp:unconfined - - apparmor:unconfined - image: photoprism/photoprism:231128 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/photoprism/README.md b/apps/photoprism/README.md deleted file mode 100644 index 4406ef0d..00000000 --- a/apps/photoprism/README.md +++ /dev/null @@ -1,119 +0,0 @@ -PhotoPrism: Browse Your Life in Pictures -======================================== - -[![License: AGPL](https://img.shields.io/badge/license-AGPL-blue.svg)](https://docs.photoprism.app/license/agpl/) -[![GitHub contributors](https://img.shields.io/github/contributors/photoprism/photoprism.svg)](https://www.photoprism.app/about/team) -[![Documentation](https://img.shields.io/badge/read-the%20docs-4aa087.svg)](https://docs.photoprism.app/) -[![Community Chat](https://img.shields.io/badge/chat-on%20gitter-4aa087.svg)](https://link.photoprism.app/chat) -[![GitHub Discussions](https://img.shields.io/badge/ask-%20on%20github-4d6a91.svg)](https://link.photoprism.app/discussions) -[![Mastodon](https://dl.photoprism.app/img/badges/badge-mastodon.svg)](https://floss.social/@photoprism) -[![Twitter](https://dl.photoprism.app/img/badges/badge-twitter.svg)](https://link.photoprism.app/twitter) - -PhotoPrism® is an AI-Powered Photos App for the [Decentralized Web](https://en.wikipedia.org/wiki/Decentralized_web). -It makes use of the latest technologies to tag and find pictures automatically without getting in your way. -You can run it at home, on a private server, or in the cloud. - -![](https://dl.photoprism.app/img/ui/desktop-1000px.jpg) - -To get a first impression, you are welcome to play with our [public demo](https://try.photoprism.app/). Be careful not to upload any private pictures. - -## Feature Overview ## - -**Our mission is to provide the most user- and privacy-friendly solution to keep your pictures organized and accessible.** That's why PhotoPrism was built from the ground up to run wherever you need it, without compromising freedom, privacy, or functionality: - -* Browse [all your photos](https://docs.photoprism.app/user-guide/organize/browse/) and [videos](https://try.photoprism.app/library/videos) without worrying about [RAW conversion, duplicates or video formats](https://docs.photoprism.app/user-guide/settings/library/) -* Easily find specific pictures using [powerful search filters](https://try.photoprism.app/library/browse?view=cards&q=flower%20color%3Ared) -* Recognizes [the faces of your family and friends](https://try.photoprism.app/library/people) -* [Automatic classification](https://try.photoprism.app/library/labels) of pictures based on their content and location -* [Play Live Photos](https://try.photoprism.app/library/live) by hovering over them in [albums](https://try.photoprism.app/library/albums) and [search results](https://try.photoprism.app/library/browse?view=cards&q=type%3Alive) -* Since the [User Interface](https://try.photoprism.app/) is a [Progressive Web App](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps), - it provides a native app-like experience, and you can conveniently install it on the home screen of all major operating systems and mobile devices -* Includes four high-resolution [World Maps](https://try.photoprism.app/library/places) to bring back the memories of your favorite trips -* Metadata is extracted and merged from Exif, XMP, and other sources such as Google Photos -* Many more image properties like [Colors](https://try.photoprism.app/library/browse?view=cards&q=color:red), [Chroma](https://try.photoprism.app/library/browse?view=cards&q=mono%3Atrue), and [Quality](https://try.photoprism.app/library/review) can be searched as well -* Use [PhotoSync](https://link.photoprism.app/photosync) to securely backup iOS and Android phones in the background -* WebDAV clients such as Microsoft's Windows Explorer and Apple's Finder [can connect directly](https://docs.photoprism.app/user-guide/sync/webdav/) to PhotoPrism, allowing you to open, edit, and delete files from your computer as if they were local - -Being completely [**self-funded and independent**](https://link.photoprism.app/membership), we can promise you that we will [never sell your data](https://www.photoprism.app/privacy) and that we will [always be transparent](https://www.photoprism.app/terms) about our software and services. Your data will never be shared with Google, Amazon, Microsoft or Apple unless you intentionally upload files to one of their services. 🔒 - -## Getting Started ## - - -Step-by-step installation instructions for our self-hosted [community edition](https://www.photoprism.app/get) can be found -on [docs.photoprism.app](https://docs.photoprism.app/getting-started/) - -all you need is a Web browser and [Docker](https://docs.docker.com/get-docker/) to run the server. -It is available for Mac, Linux, and Windows. - -The [stable version](https://docs.photoprism.app/release-notes/) and development -preview have been built into a single [multi-arch image](https://link.photoprism.app/docker-hub) for 64-bit AMD, Intel, -and ARM processors. That means, [Raspberry Pi](https://docs.photoprism.app/getting-started/raspberry-pi/) 3 / 4 owners can pull -from the same repository, enjoy the exact same functionality, and can follow the regular -[installation instructions](https://docs.photoprism.app/getting-started/docker-compose/) -after going through a short list of [requirements](https://docs.photoprism.app/getting-started/raspberry-pi/). - -Existing users are advised to update their `docker-compose.yml` config based on our examples -available at [dl.photoprism.app/docker](https://dl.photoprism.app/docker/). - -## Support Our Mission 💎 ## - -**PhotoPrism is 100% self-funded and independent.** Your [continued support](https://link.photoprism.app/membership) helps us [provide more features to the public](https://www.photoprism.app/oss/faq#what-functionality-is-generally-available), release [regular updates](https://docs.photoprism.app/release-notes/), and remain independent! - -Our members [enjoy additional features](https://www.photoprism.app/kb/personal), including access to [interactive world maps](https://try.photoprism.app/library/places), and can join our private chat room to [connect with our team](https://www.photoprism.app/about/team). We currently have the following membership options: - -- You can [sign up directly on our website](https://link.photoprism.app/membership) and pay with credit card or SEPA through Stripe, so you don't need to [link an external account](https://www.photoprism.app/kb/activation) and can easily upgrade or downgrade at any time -- Alternatively, [Patreon](https://link.photoprism.app/patreon) also supports PayPal, additional currencies, and lets you choose between monthly and annual billing for all tiers - -If you currently support us through [GitHub Sponsors](https://link.photoprism.app/sponsor), you can also [register on our website](https://my.photoprism.app/register) and use the *Activate GitHub Sponsors Membership* button to link your account. For details on this and how to [link your Patreon account](https://www.patreon.com/pledges), see our [Activation Guide](https://www.photoprism.app/kb/activation). - -You are [welcome to contact us](https://www.photoprism.app/contact) for change requests, membership questions, and business partnerships. - -[View Membership FAQ ›](https://www.photoprism.app/kb/membership) [Sign Up ›](https://link.photoprism.app/membership) - -### Why Your Support Matters ### - -- Your continued support helps us provide regular updates and remain independent, so we can fulfill our mission and protect your privacy -- Sustained funding is key to quickly releasing new features requested by you and other community members -- Being self-funded and independent, we can personally promise you that we will never sell your data and that we will always be transparent about our software and services - -Please also leave [a star](https://github.com/photoprism/photoprism/stargazers) on GitHub if you like this project. It provides additional motivation to keep going. - -**A big thank you to all current and past sponsors, whose generous support has been and continues to be essential to the success of the project!** - -[View Sponsors ›](https://github.com/photoprism/photoprism/blob/develop/SPONSORS.md) [View Credits ›](https://docs.photoprism.app/credits/) - -## Getting Support ## - -Visit [docs.photoprism.app/user-guide](https://docs.photoprism.app/user-guide/) to learn how to [sync](https://docs.photoprism.app/user-guide/sync/webdav/), [organize](https://docs.photoprism.app/user-guide/library/), and [share](https://docs.photoprism.app/user-guide/share/) your pictures. If you need help installing our software at home, you are welcome to post your question in [GitHub Discussions](https://link.photoprism.app/discussions) or ask in our [Community Chat](https://link.photoprism.app/chat). -Common problems can be quickly diagnosed and solved using our [Troubleshooting Checklists](https://docs.photoprism.app/getting-started/troubleshooting/). Eligible [members](https://link.photoprism.app/membership) are also welcome to email us for technical support and advice. - -## Upcoming Features and Enhancements ## - -Our [Project Roadmap](https://link.photoprism.app/roadmap) shows what tasks are in progress and what features will be implemented next. You are invited to give ideas you like a thumbs-up, so we know what's most popular. - -Be aware that we have a zero-bug policy and do our best to help users when they need support or have other questions. This comes at a price though, as we can't give exact release dates for new features. Our team receives many more requests than can be implemented, so we want to emphasize that we are in no way obligated to implement the features, enhancements, or other changes you request. We do, however, appreciate your feedback and carefully consider all requests. - -**Because sustained funding is key to quickly releasing new features, we encourage you to support our mission by [signing up as a sponsor](https://link.photoprism.app/sponsor) or purchasing a [commercial license](https://www.photoprism.app/teams). Ultimately, that's what's best for the product and the community.** - -## GitHub Issues ⚠️ ## - -We kindly ask you not to report bugs via GitHub Issues **unless you are certain to have found a fully reproducible and previously unreported issue** that must be fixed directly in the app. Thank you for your careful consideration! - -- When reporting a problem, always include the software versions you are using and other information about your environment such as [browser, browser plugins](https://docs.photoprism.app/getting-started/troubleshooting/browsers/), operating system, [storage type](https://docs.photoprism.app/getting-started/troubleshooting/performance/#storage), [memory size](https://docs.photoprism.app/getting-started/troubleshooting/performance/#memory), and [processor](https://docs.photoprism.app/getting-started/troubleshooting/performance/#server-cpu) -- Note that all issue **subscribers receive an email notification** from GitHub whenever a new comment is added, so these should only be used for sharing important information and not for discussions, questions or expressing personal opinions -- [Contact us](https://www.photoprism.app/contact) or [a community member](https://link.photoprism.app/discussions) if you need help, it could be a local configuration problem, or a misunderstanding in how the software works -- This gives our team the opportunity to [improve the docs](https://docs.photoprism.app/getting-started/troubleshooting/) and provide best-in-class support to you, instead of handling unclear/duplicate bug reports or triggering a flood of notifications by responding to comments - -## Connect with the Community ## - -Follow us on [Twitter](https://link.photoprism.app/twitter) and join the [Community Chat](https://link.photoprism.app/chat) -to get regular updates, connect with other users, and discuss your ideas. Our [Code of Conduct](https://www.photoprism.app/code-of-conduct) explains the "dos and don’ts" when interacting with other community members. - -Feel free to contact us at [hello@photoprism.app](mailto:hello@photoprism.app) with anything that is on your mind. We appreciate your feedback! Due to the high volume of emails we receive, our team may be unable to get back to you immediately. We do our best to respond within five business days or less. - -## Every Contribution Makes a Difference ## - -We welcome [contributions](https://github.com/photoprism/photoprism/blob/develop/CONTRIBUTING.md) of any kind, including blog posts, tutorials, testing, writing documentation, and pull requests. Our [Developer Guide](https://docs.photoprism.app/developer-guide/) contains all the information necessary for you to get started. - ----- - -*PhotoPrism® is a [registered trademark](https://www.photoprism.app/trademark). By using the software and services we provide, you agree to our [Terms of Service](https://www.photoprism.app/terms), [Privacy Policy](https://www.photoprism.app/privacy), and [Code of Conduct](https://www.photoprism.app/code-of-conduct). Docs are [available](https://link.photoprism.app/github-docs) under the [CC BY-NC-SA 4.0 License](https://creativecommons.org/licenses/by-nc-sa/4.0/); [additional terms](https://github.com/photoprism/photoprism/blob/develop/assets/README.md) may apply.* diff --git a/apps/photoprism/data.yml b/apps/photoprism/data.yml deleted file mode 100644 index 43d34e04..00000000 --- a/apps/photoprism/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: PhotoPrism -tags: - - 多媒体 -title: 去中心化网络的人工智能照片应用程序 -description: 去中心化网络的人工智能照片应用程序 -additionalProperties: - key: photoprism - name: PhotoPrism - tags: - - Media - shortDescZh: 去中心化网络的人工智能照片应用程序 - shortDescEn: AI-Powered Photos App for the Decentralized Web - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://www.photoprism.app - github: https://github.com/photoprism/photoprism - document: https://docs.photoprism.app diff --git a/apps/photoprism/latest/.env.sample b/apps/photoprism/latest/.env.sample deleted file mode 100644 index 9b603989..00000000 --- a/apps/photoprism/latest/.env.sample +++ /dev/null @@ -1,16 +0,0 @@ -CONTAINER_NAME="photoprism" -PHOTOPRISM_EXTERNAL_URL="http://localhost:40101/" -ADMIN_PASSWORD="password" -ADMIN_USER="admin" -DATA_PATH="./data" -GID="1000" -UID="1000" -PANEL_APP_PORT_HTTP="40101" -PANEL_DB_HOST="mariadb" -PANEL_DB_NAME="photoprism" -PANEL_DB_USER="photoprism" -PANEL_DB_USER_PASSWORD="photoprism_rCMTjY" -PHOTOPRISM_DB_PORT="3306" -SITE_AUTHOR="" -SITE_DESCRIPTION="" -SITE_CAPTION="AI-Powered Photos App" diff --git a/apps/photoprism/latest/data.yml b/apps/photoprism/latest/data.yml deleted file mode 100644 index e8434f19..00000000 --- a/apps/photoprism/latest/data.yml +++ /dev/null @@ -1,107 +0,0 @@ -additionalProperties: - formFields: - - default: "" - edit: true - envKey: PANEL_DB_HOST - key: mariadb - labelEn: MariaDB Database Service - labelZh: MariaDB数据库服务 - required: true - type: service - - default: "3306" - edit: true - envKey: PHOTOPRISM_DB_PORT - labelEn: MariaDB Database Service Port - labelZh: MariaDB数据库服务端口 - required: true - rule: paramPort - type: number - - default: photoprism - envKey: PANEL_DB_USER - labelEn: User - labelZh: 数据库用户 - random: true - required: true - rule: paramCommon - type: text - - default: photoprism - envKey: PANEL_DB_USER_PASSWORD - labelEn: Password - labelZh: 数据库用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: 40101 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: 1000 - edit: true - envKey: UID - labelEn: UID - labelZh: UID - required: true - type: number - - default: 1000 - edit: true - envKey: GID - labelEn: GID - labelZh: GID - required: true - type: number - - default: admin - edit: true - envKey: ADMIN_USER - labelEn: Admin user - labelZh: 管理员用户名 - required: true - type: text - - default: photoprism - edit: true - envKey: ADMIN_PASSWORD - labelEn: Admin Password - labelZh: 管理员密码 - random: false - required: true - rule: paramComplexity - type: password - - default: http://localhost:40101/ - edit: true - envKey: PHOTOPRISM_EXTERNAL_URL - labelEn: External URL - labelZh: 外部访问地址 - required: true - type: text - - default: "" - edit: true - envKey: SITE_DESCRIPTION - labelEn: Site description - labelZh: 网站描述 - required: false - type: text - - default: "" - edit: true - envKey: SITE_AUTHOR - labelEn: Site description - labelZh: 网站作者 - required: false - type: text - - default: "AI-Powered Photos App" - edit: true - envKey: SITE_CAPTION - labelEn: Site caption - labelZh: 网站标题 - required: false - type: text diff --git a/apps/photoprism/latest/docker-compose.yml b/apps/photoprism/latest/docker-compose.yml deleted file mode 100644 index a63ac0d4..00000000 --- a/apps/photoprism/latest/docker-compose.yml +++ /dev/null @@ -1,80 +0,0 @@ -services: - photoprism: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:2342" - volumes: - # "/host/folder:/photoprism/folder" # Example - - "${DATA_PATH}/Pictures:/photoprism/originals" # Original media files (DO NOT REMOVE) - # - "/example/family:/photoprism/originals/family" # *Additional* media folders can be mounted like this - # - "~/Import:/photoprism/import" # *Optional* base folder from which files can be imported to originals - - "${DATA_PATH}/storage:/photoprism/storage" # *Writable* storage folder for cache, database, and sidecar files (DO NOT REMOVE) - environment: - PHOTOPRISM_ADMIN_USER: ${ADMIN_USER} # admin login username - PHOTOPRISM_ADMIN_PASSWORD: ${ADMIN_PASSWORD} # initial admin password (8-72 characters) - PHOTOPRISM_AUTH_MODE: "password" # authentication mode (public, password) - PHOTOPRISM_SITE_URL: ${PHOTOPRISM_EXTERNAL_URL} # server URL in the format "http(s)://domain.name(:port)/(path)" - PHOTOPRISM_DISABLE_TLS: "false" # disables HTTPS/TLS even if the site URL starts with https:// and a certificate is available - PHOTOPRISM_DEFAULT_TLS: "true" # defaults to a self-signed HTTPS/TLS certificate if no other certificate is available - PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video) - PHOTOPRISM_HTTP_COMPRESSION: "gzip" # improves transfer speed and bandwidth utilization (none or gzip) - PHOTOPRISM_LOG_LEVEL: "info" # log level: trace, debug, info, warning, error, fatal, or panic - PHOTOPRISM_READONLY: "false" # do not modify originals directory (reduced functionality) - PHOTOPRISM_EXPERIMENTAL: "false" # enables experimental features - PHOTOPRISM_DISABLE_CHOWN: "false" # disables updating storage permissions via chmod and chown on startup - PHOTOPRISM_DISABLE_WEBDAV: "false" # disables built-in WebDAV server - PHOTOPRISM_DISABLE_SETTINGS: "false" # disables settings UI and API - PHOTOPRISM_DISABLE_TENSORFLOW: "false" # disables all features depending on TensorFlow - PHOTOPRISM_DISABLE_FACES: "false" # disables face detection and recognition (requires TensorFlow) - PHOTOPRISM_DISABLE_CLASSIFICATION: "false" # disables image classification (requires TensorFlow) - PHOTOPRISM_DISABLE_VECTORS: "false" # disables vector graphics support - PHOTOPRISM_DISABLE_RAW: "false" # disables indexing and conversion of RAW images - PHOTOPRISM_RAW_PRESETS: "false" # enables applying user presets when converting RAW images (reduces performance) - PHOTOPRISM_JPEG_QUALITY: 85 # a higher value increases the quality and file size of JPEG images and thumbnails (25-100) - PHOTOPRISM_DETECT_NSFW: "false" # automatically flags photos as private that MAY be offensive (requires TensorFlow) - PHOTOPRISM_UPLOAD_NSFW: "true" # allows uploads that MAY be offensive (no effect without TensorFlow) - # PHOTOPRISM_DATABASE_DRIVER: "sqlite" # SQLite is an embedded database that doesn't require a server - PHOTOPRISM_DATABASE_DRIVER: "mysql" # use MariaDB 10.5+ or MySQL 8+ instead of SQLite for improved performance - PHOTOPRISM_DATABASE_SERVER: ${PANEL_DB_HOST}:${PHOTOPRISM_DB_PORT} # MariaDB or MySQL database server (hostname:port) - PHOTOPRISM_DATABASE_NAME: ${PANEL_DB_NAME} # MariaDB or MySQL database schema name - PHOTOPRISM_DATABASE_USER: ${PANEL_DB_USER} # MariaDB or MySQL database user name - PHOTOPRISM_DATABASE_PASSWORD: ${PANEL_DB_USER_PASSWORD} # MariaDB or MySQL database user password - PHOTOPRISM_SITE_CAPTION: ${SITE_CAPTION} - PHOTOPRISM_SITE_DESCRIPTION: ${SITE_DESCRIPTION} # meta site description - PHOTOPRISM_SITE_AUTHOR: ${SITE_AUTHOR} # meta site author - ## Video Transcoding (https://docs.photoprism.app/getting-started/advanced/transcoding/): - # PHOTOPRISM_FFMPEG_ENCODER: "software" # H.264/AVC encoder (software, intel, nvidia, apple, raspberry, or vaapi) - # PHOTOPRISM_FFMPEG_SIZE: "1920" # video size limit in pixels (720-7680) (default: 3840) - # PHOTOPRISM_FFMPEG_BITRATE: "32" # video bitrate limit in Mbit/s (default: 50) - ## Run/install on first startup (options: update https gpu tensorflow davfs clitools clean): - # PHOTOPRISM_INIT: "https gpu tensorflow" - ## Run as a non-root user after initialization (supported: 0, 33, 50-99, 500-600, and 900-1200): - PHOTOPRISM_UID: ${UID:-1000} - PHOTOPRISM_GID: ${GID:-1000} - # PHOTOPRISM_UMASK: 0000 - ## Start as non-root user before initialization (supported: 0, 33, 50-99, 500-600, and 900-1200): - # user: "1000:1000" - ## Share hardware devices with FFmpeg and TensorFlow (optional): - # devices: - # - "/dev/dri:/dev/dri" # Intel QSV - # - "/dev/nvidia0:/dev/nvidia0" # Nvidia CUDA - # - "/dev/nvidiactl:/dev/nvidiactl" - # - "/dev/nvidia-modeset:/dev/nvidia-modeset" - # - "/dev/nvidia-nvswitchctl:/dev/nvidia-nvswitchctl" - # - "/dev/nvidia-uvm:/dev/nvidia-uvm" - # - "/dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools" - # - "/dev/video11:/dev/video11" # Video4Linux Video Encode Device (h264_v4l2m2m) - working_dir: "/photoprism" # do not change or remove - security_opt: - - seccomp:unconfined - - apparmor:unconfined - image: photoprism/photoprism:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/photoprism/logo.png b/apps/photoprism/logo.png deleted file mode 100644 index c63f89ca6743be27719d68a377030b494310f77a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4424 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 to any timeseries scraped from this config. - - job_name: "prometheus" - - # metrics_path defaults to '/metrics' - # scheme defaults to 'http'. - - static_configs: - - targets: ["localhost:9090"] \ No newline at end of file diff --git a/apps/prometheus/3.4.2/docker-compose.yml b/apps/prometheus/3.4.2/docker-compose.yml deleted file mode 100644 index 54cfd936..00000000 --- a/apps/prometheus/3.4.2/docker-compose.yml +++ /dev/null @@ -1,17 +0,0 @@ -services: - prometheus: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:9090" - volumes: - - "./data:/etc/prometheus" - image: prom/prometheus:v3.4.2 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/prometheus/README.md b/apps/prometheus/README.md deleted file mode 100644 index 6df07785..00000000 --- a/apps/prometheus/README.md +++ /dev/null @@ -1,197 +0,0 @@ -# 使用说明 - -需要按需配置应用目录下`data`文件夹里的`prometheus.yml`,以自定义更多功能。 - - -# 原始相关 - -

- Prometheus
Prometheus -

- -

Visit prometheus.io for the full documentation, -examples and guides.

- -
- -[![CI](https://github.com/prometheus/prometheus/actions/workflows/ci.yml/badge.svg)](https://github.com/prometheus/prometheus/actions/workflows/ci.yml) -[![Docker Repository on Quay](https://quay.io/repository/prometheus/prometheus/status)][quay] -[![Docker Pulls](https://img.shields.io/docker/pulls/prom/prometheus.svg?maxAge=604800)][hub] -[![Go Report Card](https://goreportcard.com/badge/github.com/prometheus/prometheus)](https://goreportcard.com/report/github.com/prometheus/prometheus) -[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/486/badge)](https://bestpractices.coreinfrastructure.org/projects/486) -[![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/prometheus/prometheus) -[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/prometheus.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:prometheus) - -
- -Prometheus, a [Cloud Native Computing Foundation](https://cncf.io/) project, is a systems and service monitoring system. It collects metrics -from configured targets at given intervals, evaluates rule expressions, -displays the results, and can trigger alerts when specified conditions are observed. - -The features that distinguish Prometheus from other metrics and monitoring systems are: - -* A **multi-dimensional** data model (time series defined by metric name and set of key/value dimensions) -* PromQL, a **powerful and flexible query language** to leverage this dimensionality -* No dependency on distributed storage; **single server nodes are autonomous** -* An HTTP **pull model** for time series collection -* **Pushing time series** is supported via an intermediary gateway for batch jobs -* Targets are discovered via **service discovery** or **static configuration** -* Multiple modes of **graphing and dashboarding support** -* Support for hierarchical and horizontal **federation** - -## Architecture overview - -![Architecture overview](https://raw.githubusercontent.com/prometheus/prometheus/main/documentation/images/architecture.svg) - -## Install - -There are various ways of installing Prometheus. - -### Precompiled binaries - -Precompiled binaries for released versions are available in the -[*download* section](https://prometheus.io/download/) -on [prometheus.io](https://prometheus.io). Using the latest production release binary -is the recommended way of installing Prometheus. -See the [Installing](https://prometheus.io/docs/introduction/install/) -chapter in the documentation for all the details. - -### Docker images - -Docker images are available on [Quay.io](https://quay.io/repository/prometheus/prometheus) or [Docker Hub](https://hub.docker.com/r/prom/prometheus/). - -You can launch a Prometheus container for trying it out with - -```bash -docker run --name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheus -``` - -Prometheus will now be reachable at . - -### Building from source - -To build Prometheus from source code, You need: - -* Go [version 1.17 or greater](https://golang.org/doc/install). -* NodeJS [version 16 or greater](https://nodejs.org/). -* npm [version 7 or greater](https://www.npmjs.com/). - -Start by cloning the repository: - -```bash -git clone https://github.com/prometheus/prometheus.git -cd prometheus -``` - -You can use the `go` tool to build and install the `prometheus` -and `promtool` binaries into your `GOPATH`: - -```bash -GO111MODULE=on go install github.com/prometheus/prometheus/cmd/... -prometheus --config.file=your_config.yml -``` - -*However*, when using `go install` to build Prometheus, Prometheus will expect to be able to -read its web assets from local filesystem directories under `web/ui/static` and -`web/ui/templates`. In order for these assets to be found, you will have to run Prometheus -from the root of the cloned repository. Note also that these directories do not include the -React UI unless it has been built explicitly using `make assets` or `make build`. - -An example of the above configuration file can be found [here.](https://github.com/prometheus/prometheus/blob/main/documentation/examples/prometheus.yml) - -You can also build using `make build`, which will compile in the web assets so that -Prometheus can be run from anywhere: - -```bash -make build -./prometheus --config.file=your_config.yml -``` - -The Makefile provides several targets: - -* *build*: build the `prometheus` and `promtool` binaries (includes building and compiling in web assets) -* *test*: run the tests -* *test-short*: run the short tests -* *format*: format the source code -* *vet*: check the source code for common errors -* *assets*: build the React UI - -### Service discovery plugins - -Prometheus is bundled with many service discovery plugins. -When building Prometheus from source, you can edit the [plugins.yml](./plugins.yml) -file to disable some service discoveries. The file is a yaml-formated list of go -import path that will be built into the Prometheus binary. - -After you have changed the file, you -need to run `make build` again. - -If you are using another method to compile Prometheus, `make plugins` will -generate the plugins file accordingly. - -If you add out-of-tree plugins, which we do not endorse at the moment, -additional steps might be needed to adjust the `go.mod` and `go.sum` files. As -always, be extra careful when loading third party code. - -### Building the Docker image - -The `make docker` target is designed for use in our CI system. -You can build a docker image locally with the following commands: - -```bash -make promu -promu crossbuild -p linux/amd64 -make npm_licenses -make common-docker-amd64 -``` - -## Using Prometheus as a Go Library - -### Remote Write - -We are publishing our Remote Write protobuf independently at -[buf.build](https://buf.build/prometheus/prometheus/assets). - -You can use that as a library: - -```shell -go get go.buf.build/protocolbuffers/go/prometheus/prometheus -``` - -This is experimental. - -### Prometheus code base - -In order to comply with [go mod](https://go.dev/ref/mod#versions) rules, -Prometheus release number do not exactly match Go module releases. For the -Prometheus v2.y.z releases, we are publishing equivalent v0.y.z tags. - -Therefore, a user that would want to use Prometheus v2.35.0 as a library could do: - -```shell -go get github.com/prometheus/prometheus@v0.35.0 -``` - -This solution makes it clear that we might break our internal Go APIs between -minor user-facing releases, as [breaking changes are allowed in major version -zero](https://semver.org/#spec-item-4). - -## React UI Development - -For more information on building, running, and developing on the React-based UI, see the React app's [README.md](web/ui/README.md). - -## More information - -* Godoc documentation is available via [pkg.go.dev](https://pkg.go.dev/github.com/prometheus/prometheus). Due to peculiarities of Go Modules, v2.x.y will be displayed as v0.x.y. -* See the [Community page](https://prometheus.io/community) for how to reach the Prometheus developers and users on various communication channels. - -## Contributing - -Refer to [CONTRIBUTING.md](https://github.com/prometheus/prometheus/blob/main/CONTRIBUTING.md) - -## License - -Apache License 2.0, see [LICENSE](https://github.com/prometheus/prometheus/blob/main/LICENSE). - -[hub]: https://hub.docker.com/r/prom/prometheus/ -[quay]: https://quay.io/repository/prometheus/prometheus diff --git a/apps/prometheus/data.yml b/apps/prometheus/data.yml deleted file mode 100644 index 35c7565b..00000000 --- a/apps/prometheus/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Prometheus -tags: - - 工具 -title: 一个系统和服务监控系统 -description: 一个系统和服务监控系统 -additionalProperties: - key: prometheus - name: Prometheus - tags: - - Tool - shortDescZh: 一个系统和服务监控系统 - shortDescEn: A systems and service monitoring system - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://prometheus.io/ - github: https://github.com/prometheus/prometheus - document: https://prometheus.io/docs/ diff --git a/apps/prometheus/latest/.env.sample b/apps/prometheus/latest/.env.sample deleted file mode 100644 index 97fb2953..00000000 --- a/apps/prometheus/latest/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="grafana" -PANEL_APP_PORT_HTTP="40039" \ No newline at end of file diff --git a/apps/prometheus/latest/data.yml b/apps/prometheus/latest/data.yml deleted file mode 100644 index ac50aa69..00000000 --- a/apps/prometheus/latest/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40039 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/prometheus/latest/data/prometheus.yml b/apps/prometheus/latest/data/prometheus.yml deleted file mode 100644 index c7264547..00000000 --- a/apps/prometheus/latest/data/prometheus.yml +++ /dev/null @@ -1,29 +0,0 @@ -# my global config -global: - scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. - evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. - # scrape_timeout is set to the global default (10s). - -# Alertmanager configuration -alerting: - alertmanagers: - - static_configs: - - targets: - # - alertmanager:9093 - -# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. -rule_files: - # - "first_rules.yml" - # - "second_rules.yml" - -# A scrape configuration containing exactly one endpoint to scrape: -# Here it's Prometheus itself. -scrape_configs: - # The job name is added as a label `job=` to any timeseries scraped from this config. - - job_name: "prometheus" - - # metrics_path defaults to '/metrics' - # scheme defaults to 'http'. - - static_configs: - - targets: ["localhost:9090"] \ No newline at end of file diff --git a/apps/prometheus/latest/docker-compose.yml b/apps/prometheus/latest/docker-compose.yml deleted file mode 100644 index 513992fd..00000000 --- a/apps/prometheus/latest/docker-compose.yml +++ /dev/null @@ -1,17 +0,0 @@ -services: - prometheus: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:9090" - volumes: - - "./data:/etc/prometheus" - image: prom/prometheus:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/prometheus/logo.png b/apps/prometheus/logo.png deleted file mode 100644 index 0449f5f5b04d8ea3534b9c4c793734373a2dbe30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5765 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 DG`Y|H diff --git a/apps/qBittorrent/4.3.5/.env.sample b/apps/qBittorrent/4.3.5/.env.sample deleted file mode 100644 index 2a5c38b1..00000000 --- a/apps/qBittorrent/4.3.5/.env.sample +++ /dev/null @@ -1,5 +0,0 @@ -CONTAINER_NAME="qbittorrent" -PANEL_APP_PORT_HTTP="40155" -PEER_PORT_VALUE="40150" -CACHE_PATH="./data/.cache" -DOWNLOAD_PATH="./data/downloads" \ No newline at end of file diff --git a/apps/qBittorrent/4.3.5/data.yml b/apps/qBittorrent/4.3.5/data.yml deleted file mode 100644 index d7d15635..00000000 --- a/apps/qBittorrent/4.3.5/data.yml +++ /dev/null @@ -1,32 +0,0 @@ -additionalProperties: - formFields: - - default: 40155 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: WebUI Port - labelZh: 网页端口 - required: true - rule: paramPort - type: number - - default: 40150 - edit: true - envKey: PEER_PORT_VALUE - labelEn: Peer Port - labelZh: BT端口 - required: true - rule: paramPort - type: number - - default: ./data/.cache - edit: true - envKey: CACHE_PATH - labelEn: Cache folder path - labelZh: 缓存文件夹路径 - required: true - type: text - - default: ./data/downloads - edit: true - envKey: DOWNLOAD_PATH - labelEn: Download folder path - labelZh: 下载文件夹路径 - required: true - type: text diff --git a/apps/qBittorrent/4.3.5/data/.cache/.gitkeep b/apps/qBittorrent/4.3.5/data/.cache/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/qBittorrent/4.3.5/data/.config/qBittorrent/qBittorrent.conf b/apps/qBittorrent/4.3.5/data/.config/qBittorrent/qBittorrent.conf deleted file mode 100644 index 159b47e8..00000000 --- a/apps/qBittorrent/4.3.5/data/.config/qBittorrent/qBittorrent.conf +++ /dev/null @@ -1,75 +0,0 @@ -[General] -ported_to_new_savepath_system=true - -[AutoRun] -enabled=false -program= - -[Core] -AutoDeleteAddedTorrentFile=Never - -[LegalNotice] -Accepted=true - -[Network] -Cookies=@Invalid() - -[Preferences] -Advanced\IgnoreLimitsLAN=true -Advanced\RecheckOnCompletion=false -Advanced\trackerPort=9000 -Bittorrent\DHT=false -Bittorrent\LSD=false -Bittorrent\MaxConnecs=-1 -Bittorrent\MaxConnecsPerTorrent=-1 -Bittorrent\MaxUploads=-1 -Bittorrent\MaxUploadsPerTorrent=-1 -Bittorrent\PeX=false -Bittorrent\uTP_rate_limited=false -Connection\PortRangeMin= -Connection\ResolvePeerCountries=true -Downloads\SavePath=/data/downloads -Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\0) -Downloads\StartInPause=true -DynDNS\DomainName=changeme.dyndns.org -DynDNS\Enabled=false -DynDNS\Password= -DynDNS\Service=0 -DynDNS\Username= -General\Locale=zh -MailNotification\email= -MailNotification\enabled=false -MailNotification\password= -MailNotification\req_auth=true -MailNotification\req_ssl=false -MailNotification\sender=qBittorrent_notification@example.com -MailNotification\smtp_server=smtp.changeme.com -MailNotification\username= -Queueing\QueueingEnabled=false -WebUI\Address=* -WebUI\AlternativeUIEnabled=false -WebUI\AuthSubnetWhitelist=@Invalid() -WebUI\AuthSubnetWhitelistEnabled=false -WebUI\BanDuration=3600 -WebUI\CSRFProtection=false -WebUI\ClickjackingProtection=true -WebUI\CustomHTTPHeaders= -WebUI\CustomHTTPHeadersEnabled=false -WebUI\Enabled=true -WebUI\HTTPS\CertificatePath= -WebUI\HTTPS\Enabled=false -WebUI\HTTPS\KeyPath= -WebUI\HostHeaderValidation=true -WebUI\LocalHostAuth=true -WebUI\MaxAuthenticationFailCount=5 -WebUI\Port= -WebUI\RootFolder= -WebUI\SecureCookie=true -WebUI\ServerDomains=* -WebUI\SessionTimeout=3600 -WebUI\UseUPnP=true -WebUI\Username=admin - -[RSS] -AutoDownloader\DownloadRepacks=true -AutoDownloader\SmartEpisodeFilter=s(\\d+)e(\\d+), (\\d+)x(\\d+), "(\\d{4}[.\\-]\\d{1,2}[.\\-]\\d{1,2})", "(\\d{1,2}[.\\-]\\d{1,2}[.\\-]\\d{4})" diff --git a/apps/qBittorrent/4.3.5/data/.local/.gitkeep b/apps/qBittorrent/4.3.5/data/.local/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/qBittorrent/4.3.5/data/downloads/.gitkeep b/apps/qBittorrent/4.3.5/data/downloads/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/qBittorrent/4.3.5/docker-compose.yml b/apps/qBittorrent/4.3.5/docker-compose.yml deleted file mode 100644 index 62cb36a6..00000000 --- a/apps/qBittorrent/4.3.5/docker-compose.yml +++ /dev/null @@ -1,27 +0,0 @@ -services: - qbittorrent: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - environment: - - UID=1000 - - GID=1000 - - PEER_PORT=${PEER_PORT_VALUE} - - WEB_PORT=${PANEL_APP_PORT_HTTP} - ports: - - "${PEER_PORT_VALUE}:${PEER_PORT_VALUE}" - - "${PEER_PORT_VALUE}:${PEER_PORT_VALUE}/udp" - - "${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP}" - volumes: - - "./data/.config:/data/.config" - - "./data/.local:/data/.local" - - "${CACHE_PATH}:/data/.cache" - - "${DOWNLOAD_PATH}:/data/downloads" - image: "jarylc/qbittorrent:4.3.5_1.2.14" - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true \ No newline at end of file diff --git a/apps/qBittorrent/4.5.2/.env.sample b/apps/qBittorrent/4.5.2/.env.sample deleted file mode 100644 index 2a5c38b1..00000000 --- a/apps/qBittorrent/4.5.2/.env.sample +++ /dev/null @@ -1,5 +0,0 @@ -CONTAINER_NAME="qbittorrent" -PANEL_APP_PORT_HTTP="40155" -PEER_PORT_VALUE="40150" -CACHE_PATH="./data/.cache" -DOWNLOAD_PATH="./data/downloads" \ No newline at end of file diff --git a/apps/qBittorrent/4.5.2/data.yml b/apps/qBittorrent/4.5.2/data.yml deleted file mode 100644 index d7d15635..00000000 --- a/apps/qBittorrent/4.5.2/data.yml +++ /dev/null @@ -1,32 +0,0 @@ -additionalProperties: - formFields: - - default: 40155 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: WebUI Port - labelZh: 网页端口 - required: true - rule: paramPort - type: number - - default: 40150 - edit: true - envKey: PEER_PORT_VALUE - labelEn: Peer Port - labelZh: BT端口 - required: true - rule: paramPort - type: number - - default: ./data/.cache - edit: true - envKey: CACHE_PATH - labelEn: Cache folder path - labelZh: 缓存文件夹路径 - required: true - type: text - - default: ./data/downloads - edit: true - envKey: DOWNLOAD_PATH - labelEn: Download folder path - labelZh: 下载文件夹路径 - required: true - type: text diff --git a/apps/qBittorrent/4.5.2/data/.cache/.gitkeep b/apps/qBittorrent/4.5.2/data/.cache/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/qBittorrent/4.5.2/data/.config/qBittorrent/qBittorrent.conf b/apps/qBittorrent/4.5.2/data/.config/qBittorrent/qBittorrent.conf deleted file mode 100644 index 159b47e8..00000000 --- a/apps/qBittorrent/4.5.2/data/.config/qBittorrent/qBittorrent.conf +++ /dev/null @@ -1,75 +0,0 @@ -[General] -ported_to_new_savepath_system=true - -[AutoRun] -enabled=false -program= - -[Core] -AutoDeleteAddedTorrentFile=Never - -[LegalNotice] -Accepted=true - -[Network] -Cookies=@Invalid() - -[Preferences] -Advanced\IgnoreLimitsLAN=true -Advanced\RecheckOnCompletion=false -Advanced\trackerPort=9000 -Bittorrent\DHT=false -Bittorrent\LSD=false -Bittorrent\MaxConnecs=-1 -Bittorrent\MaxConnecsPerTorrent=-1 -Bittorrent\MaxUploads=-1 -Bittorrent\MaxUploadsPerTorrent=-1 -Bittorrent\PeX=false -Bittorrent\uTP_rate_limited=false -Connection\PortRangeMin= -Connection\ResolvePeerCountries=true -Downloads\SavePath=/data/downloads -Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\0) -Downloads\StartInPause=true -DynDNS\DomainName=changeme.dyndns.org -DynDNS\Enabled=false -DynDNS\Password= -DynDNS\Service=0 -DynDNS\Username= -General\Locale=zh -MailNotification\email= -MailNotification\enabled=false -MailNotification\password= -MailNotification\req_auth=true -MailNotification\req_ssl=false -MailNotification\sender=qBittorrent_notification@example.com -MailNotification\smtp_server=smtp.changeme.com -MailNotification\username= -Queueing\QueueingEnabled=false -WebUI\Address=* -WebUI\AlternativeUIEnabled=false -WebUI\AuthSubnetWhitelist=@Invalid() -WebUI\AuthSubnetWhitelistEnabled=false -WebUI\BanDuration=3600 -WebUI\CSRFProtection=false -WebUI\ClickjackingProtection=true -WebUI\CustomHTTPHeaders= -WebUI\CustomHTTPHeadersEnabled=false -WebUI\Enabled=true -WebUI\HTTPS\CertificatePath= -WebUI\HTTPS\Enabled=false -WebUI\HTTPS\KeyPath= -WebUI\HostHeaderValidation=true -WebUI\LocalHostAuth=true -WebUI\MaxAuthenticationFailCount=5 -WebUI\Port= -WebUI\RootFolder= -WebUI\SecureCookie=true -WebUI\ServerDomains=* -WebUI\SessionTimeout=3600 -WebUI\UseUPnP=true -WebUI\Username=admin - -[RSS] -AutoDownloader\DownloadRepacks=true -AutoDownloader\SmartEpisodeFilter=s(\\d+)e(\\d+), (\\d+)x(\\d+), "(\\d{4}[.\\-]\\d{1,2}[.\\-]\\d{1,2})", "(\\d{1,2}[.\\-]\\d{1,2}[.\\-]\\d{4})" diff --git a/apps/qBittorrent/4.5.2/data/.local/.gitkeep b/apps/qBittorrent/4.5.2/data/.local/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/qBittorrent/4.5.2/data/downloads/.gitkeep b/apps/qBittorrent/4.5.2/data/downloads/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/qBittorrent/4.5.2/docker-compose.yml b/apps/qBittorrent/4.5.2/docker-compose.yml deleted file mode 100644 index 88bb7700..00000000 --- a/apps/qBittorrent/4.5.2/docker-compose.yml +++ /dev/null @@ -1,27 +0,0 @@ -services: - qbittorrent: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - environment: - - UID=1000 - - GID=1000 - - PEER_PORT=${PEER_PORT_VALUE} - - WEB_PORT=${PANEL_APP_PORT_HTTP} - ports: - - "${PEER_PORT_VALUE}:${PEER_PORT_VALUE}" - - "${PEER_PORT_VALUE}:${PEER_PORT_VALUE}/udp" - - "${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP}" - volumes: - - "./data/.config:/data/.config" - - "./data/.local:/data/.local" - - "${CACHE_PATH}:/data/.cache" - - "${DOWNLOAD_PATH}:/data/downloads" - image: "jarylc/qbittorrent:4.5.2_2.0.8" - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true \ No newline at end of file diff --git a/apps/qBittorrent/README.md b/apps/qBittorrent/README.md deleted file mode 100644 index a618f714..00000000 --- a/apps/qBittorrent/README.md +++ /dev/null @@ -1,73 +0,0 @@ - -# 本应用介绍 - -基于镜像 -> - https://hub.docker.com/r/jarylc/qbittorrent - -- 数据目录:"./data" -- 默认账号:admin -- 密码:adminadmin -- 开启中文,默认为PT下载做的设置,但未优化参数。 - -> 原项目相关 ->> - https://www.qbittorrent.org/ ->> - https://github.com/qbittorrent/qBittorrent - -# 原项目介绍 - -- qBittorrent是一个跨平台的开源、自由的BitTorrent客户端,其图形用户界面是通过Qt所写,后端使用libtorrent。 -- 由贝尔福- 蒙贝利亚尔理工大学的克里斯托夫·迪梅,在2006年3月开始开发。 - -qBittorrent - A BitTorrent client in Qt ------------------------------------------- - -[![AppVeyor Status](https://ci.appveyor.com/api/projects/status/github/qbittorrent/qBittorrent?branch=master&svg=true)](https://ci.appveyor.com/project/qbittorrent/qBittorrent) -[![GitHub Actions CI Status](https://github.com/qbittorrent/qBittorrent/workflows/GitHub%20Actions%20CI/badge.svg)](https://github.com/qbittorrent/qBittorrent/actions) -[![Coverity Status](https://scan.coverity.com/projects/5494/badge.svg)](https://scan.coverity.com/projects/5494) -******************************** -### Description: -qBittorrent is a bittorrent client programmed in C++ / Qt that uses -libtorrent (sometimes called libtorrent-rasterbar) by Arvid Norberg. - -It aims to be a good alternative to all other bittorrent clients -out there. qBittorrent is fast, stable and provides unicode -support as well as many features. - -The free [IP to Country Lite database](https://db-ip.com/db/download/ip-to-country-lite) by [DB-IP](https://db-ip.com/) is used for resolving the countries of peers. The database is licensed under the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/). - -### Installation: -For installation, follow the instructions from INSTALL file, but simple: - -``` -./configure -make && make install -qbittorrent -``` - -will install and execute qBittorrent hopefully without any problem. - -### Public key: -Starting from v3.3.4 all source tarballs and binaries are signed.
-The key currently used is 4096R/[5B7CC9A2](https://pgp.mit.edu/pks/lookup?op=get&search=0x6E4A2D025B7CC9A2) with fingerprint `D8F3DA77AAC6741053599C136E4A2D025B7CC9A2`.
-You can also download it from [here](https://github.com/qbittorrent/qBittorrent/raw/master/5B7CC9A2.asc).
-**PREVIOUSLY** the following key was used to sign the v3.3.4 source tarballs and v3.3.4 Windows installer **only**: 4096R/[520EC6F6](https://pgp.mit.edu/pks/lookup?op=get&search=0xA1ACCAE4520EC6F6) with fingerprint `F4A5FD201B117B1C2AB590E2A1ACCAE4520EC6F6`.
- -### Misc: -For more information please visit: -https://www.qbittorrent.org - -or our wiki here: -http://wiki.qbittorrent.org - -Use the forum for troubleshooting before reporting bugs: -http://forum.qbittorrent.org - -Please report any bug (or feature request) to: -http://bugs.qbittorrent.org - -Official IRC channel: -[#qbittorrent on irc.libera.chat](ircs://irc.libera.chat:6697/qbittorrent) - ------------------------------------------- -sledgehammer999 \ - diff --git a/apps/qBittorrent/data.yml b/apps/qBittorrent/data.yml deleted file mode 100644 index 424847c0..00000000 --- a/apps/qBittorrent/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: qBittorrent -tags: - - 工具 -title: qBittorrent 是一个跨平台的开源 BitTorrent 客户端 -description: qBittorrent 是一个跨平台的开源 BitTorrent 客户端 -additionalProperties: - key: qBittorrent - name: qBittorrent - tags: - - Tool - shortDescZh: qBittorrent 是一个跨平台的开源 BitTorrent 客户端 - shortDescEn: qBittorrent is a cross-platform open source BitTorrent client - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://www.qbittorrent.org/ - github: https://github.com/qbittorrent/qBittorrent - document: http://wiki.qbittorrent.org/ diff --git a/apps/qBittorrent/latest/.env.sample b/apps/qBittorrent/latest/.env.sample deleted file mode 100644 index 2a5c38b1..00000000 --- a/apps/qBittorrent/latest/.env.sample +++ /dev/null @@ -1,5 +0,0 @@ -CONTAINER_NAME="qbittorrent" -PANEL_APP_PORT_HTTP="40155" -PEER_PORT_VALUE="40150" -CACHE_PATH="./data/.cache" -DOWNLOAD_PATH="./data/downloads" \ No newline at end of file diff --git a/apps/qBittorrent/latest/data.yml b/apps/qBittorrent/latest/data.yml deleted file mode 100644 index d7d15635..00000000 --- a/apps/qBittorrent/latest/data.yml +++ /dev/null @@ -1,32 +0,0 @@ -additionalProperties: - formFields: - - default: 40155 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: WebUI Port - labelZh: 网页端口 - required: true - rule: paramPort - type: number - - default: 40150 - edit: true - envKey: PEER_PORT_VALUE - labelEn: Peer Port - labelZh: BT端口 - required: true - rule: paramPort - type: number - - default: ./data/.cache - edit: true - envKey: CACHE_PATH - labelEn: Cache folder path - labelZh: 缓存文件夹路径 - required: true - type: text - - default: ./data/downloads - edit: true - envKey: DOWNLOAD_PATH - labelEn: Download folder path - labelZh: 下载文件夹路径 - required: true - type: text diff --git a/apps/qBittorrent/latest/data/.cache/.gitkeep b/apps/qBittorrent/latest/data/.cache/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/qBittorrent/latest/data/.config/qBittorrent/qBittorrent.conf b/apps/qBittorrent/latest/data/.config/qBittorrent/qBittorrent.conf deleted file mode 100644 index 159b47e8..00000000 --- a/apps/qBittorrent/latest/data/.config/qBittorrent/qBittorrent.conf +++ /dev/null @@ -1,75 +0,0 @@ -[General] -ported_to_new_savepath_system=true - -[AutoRun] -enabled=false -program= - -[Core] -AutoDeleteAddedTorrentFile=Never - -[LegalNotice] -Accepted=true - -[Network] -Cookies=@Invalid() - -[Preferences] -Advanced\IgnoreLimitsLAN=true -Advanced\RecheckOnCompletion=false -Advanced\trackerPort=9000 -Bittorrent\DHT=false -Bittorrent\LSD=false -Bittorrent\MaxConnecs=-1 -Bittorrent\MaxConnecsPerTorrent=-1 -Bittorrent\MaxUploads=-1 -Bittorrent\MaxUploadsPerTorrent=-1 -Bittorrent\PeX=false -Bittorrent\uTP_rate_limited=false -Connection\PortRangeMin= -Connection\ResolvePeerCountries=true -Downloads\SavePath=/data/downloads -Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\0) -Downloads\StartInPause=true -DynDNS\DomainName=changeme.dyndns.org -DynDNS\Enabled=false -DynDNS\Password= -DynDNS\Service=0 -DynDNS\Username= -General\Locale=zh -MailNotification\email= -MailNotification\enabled=false -MailNotification\password= -MailNotification\req_auth=true -MailNotification\req_ssl=false -MailNotification\sender=qBittorrent_notification@example.com -MailNotification\smtp_server=smtp.changeme.com -MailNotification\username= -Queueing\QueueingEnabled=false -WebUI\Address=* -WebUI\AlternativeUIEnabled=false -WebUI\AuthSubnetWhitelist=@Invalid() -WebUI\AuthSubnetWhitelistEnabled=false -WebUI\BanDuration=3600 -WebUI\CSRFProtection=false -WebUI\ClickjackingProtection=true -WebUI\CustomHTTPHeaders= -WebUI\CustomHTTPHeadersEnabled=false -WebUI\Enabled=true -WebUI\HTTPS\CertificatePath= -WebUI\HTTPS\Enabled=false -WebUI\HTTPS\KeyPath= -WebUI\HostHeaderValidation=true -WebUI\LocalHostAuth=true -WebUI\MaxAuthenticationFailCount=5 -WebUI\Port= -WebUI\RootFolder= -WebUI\SecureCookie=true -WebUI\ServerDomains=* -WebUI\SessionTimeout=3600 -WebUI\UseUPnP=true -WebUI\Username=admin - -[RSS] -AutoDownloader\DownloadRepacks=true -AutoDownloader\SmartEpisodeFilter=s(\\d+)e(\\d+), (\\d+)x(\\d+), "(\\d{4}[.\\-]\\d{1,2}[.\\-]\\d{1,2})", "(\\d{1,2}[.\\-]\\d{1,2}[.\\-]\\d{4})" diff --git a/apps/qBittorrent/latest/data/.local/.gitkeep b/apps/qBittorrent/latest/data/.local/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/qBittorrent/latest/data/downloads/.gitkeep b/apps/qBittorrent/latest/data/downloads/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/qBittorrent/latest/docker-compose.yml b/apps/qBittorrent/latest/docker-compose.yml deleted file mode 100644 index 737f627e..00000000 --- a/apps/qBittorrent/latest/docker-compose.yml +++ /dev/null @@ -1,27 +0,0 @@ -services: - qbittorrent: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - environment: - - UID=1000 - - GID=1000 - - PEER_PORT=${PEER_PORT_VALUE} - - WEB_PORT=${PANEL_APP_PORT_HTTP} - ports: - - "${PEER_PORT_VALUE}:${PEER_PORT_VALUE}" - - "${PEER_PORT_VALUE}:${PEER_PORT_VALUE}/udp" - - "${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP}" - volumes: - - "./data/.config:/data/.config" - - "./data/.local:/data/.local" - - "${CACHE_PATH}:/data/.cache" - - "${DOWNLOAD_PATH}:/data/downloads" - image: "jarylc/qbittorrent:latest" - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true \ No newline at end of file diff --git a/apps/qBittorrent/logo.png b/apps/qBittorrent/logo.png deleted file mode 100644 index 8d9d88edd3e78fb87a4f6e2b6a8fccb31225a19c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5426 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 - - - -

- -

QD for Python3

- -
-QD —— 一个HTTP请求定时任务自动执行框架 base on HAR Editor and Tornado Server - -[![HomePage][HomePage-image]][HomePage-url] -[![Github][Github-image]][Github-url] -[![Gitee][Gitee-image]][Gitee-url] -[![license][github-license-image]][github-license-url] -[![Build Image][workflow-image]][workflow-url] -[![last commit][last-commit-image]][last-commit-url] -[![commit activity][commit-activity-image]][commit-activity-url] -[![docker version][docker-version-image]][docker-version-url] -[![docker pulls][docker-pulls-image]][docker-pulls-url] -[![docker stars][docker-stars-image]][docker-stars-url] -[![docker image size][docker-image-size-image]][docker-image-size-url] -![repo size][repo-size-image] -![python version][python-version-image] - -[![All Contributors](https://img.shields.io/badge/all_contributors-15-orange.svg?style=flat-square)](#contributors-) - - -[HomePage-image]: https://img.shields.io/badge/HomePage-qd--today-brightgreen -[HomePage-url]: https://qiandao.a76yyyy.cn -[Github-image]: https://img.shields.io/static/v1?label=Github&message=qd-today&color=brightgreen -[Github-url]: https://github.com/qd-today/qd/ -[Gitee-image]: https://img.shields.io/static/v1?label=Gitee&message=a76yyyy&color=brightgreen -[Gitee-url]: https://gitee.com/qd-today/qd/ -[github-license-image]: https://img.shields.io/github/license/qd-today/qd -[github-license-url]: https://github.com/qd-today/qd/blob/master/LICENSE -[last-commit-image]: https://img.shields.io/github/last-commit/qd-today/qd -[last-commit-url]: https://github.com/qd-today/qd/ -[commit-activity-image]: https://img.shields.io/github/commit-activity/m/qd-today/qd -[commit-activity-url]: https://github.com/qd-today/qd/ -[docker-version-image]: https://img.shields.io/docker/v/qdtoday/qd?style=flat -[docker-version-url]: https://hub.docker.com/r/qdtoday/qd/tags?page=1&ordering=last_updated -[docker-pulls-image]: https://img.shields.io/docker/pulls/qdtoday/qd?style=flat -[docker-pulls-url]: https://hub.docker.com/r/qdtoday/qd -[docker-stars-image]: https://img.shields.io/docker/stars/qdtoday/qd?style=flat -[docker-stars-url]: https://hub.docker.com/r/qdtoday/qd -[docker-image-size-image]: https://img.shields.io/docker/image-size/qdtoday/qd?style=flat -[docker-image-size-url]: https://hub.docker.com/r/qdtoday/qd -[repo-size-image]: https://img.shields.io/github/repo-size/qd-today/qd -[python-version-image]: https://img.shields.io/github/pipenv/locked/python-version/qd-today/qd -[workflow-image]: https://github.com/qd-today/qd/actions/workflows/Publish%20Package.yml/badge.svg -[workflow-url]: https://github.com/qd-today/qd/actions/workflows/Publish%20Package.yml - -
- -

- - -

- -操作说明 -========== - -请参阅 **[使用指南](https://qd-today.github.io/qd/zh_CN/)** - -更新日志 -=========== - -详见 **[CHANGELOG.md](./CHANGELOG.md)** - -维护项目精力有限, 仅保证对 Chrome 浏览器的支持。如果测试了其他浏览器可以 Pull Request。 - -许可 -=========== - -[MIT](https://fastly.jsdelivr.net/gh/qd-today/qd@master/LICENSE) 许可协议 - -致谢 -=========== - -## Contributors ✨ - -Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): - - - - - - - - - - - - - - - - - - - - - - - - - - -

a76yyyy

🎨 💻 🚧

Roy Binux

🎨 💻 🚧

AragonSnow

💻 🎨 🚧

Mark

🎨 📝 💡 📖

pidan

🎨

buzhibujue

💻

billypon

💻

acooler15

💻 🚧

shxyke

💻

xiaoxiao

💻

hiCasper

💻

旋子

💻

chen8945

💻

seiuneko

💻

powersee

💻
- - - - - - -This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! - -Stargazers over time -=========== - -[![Stargazers over time](https://starchart.cc/qd-today/qd.svg)](https://starchart.cc/qd-today/qd) diff --git a/apps/qiandao/data.yml b/apps/qiandao/data.yml deleted file mode 100644 index 8b12b2df..00000000 --- a/apps/qiandao/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: QianDao -tags: - - 工具 -title: 一个 HTTP 请求定时任务自动执行框架 -description: 一个 HTTP 请求定时任务自动执行框架 -additionalProperties: - key: qiandao - name: QianDao - tags: - - Tool - shortDescZh: 一个 HTTP 请求定时任务自动执行框架 - shortDescEn: An HTTP request timed task automation framework - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://hub.docker.com/r/qdtoday/qd - github: https://github.com/qd-today/qd - document: https://qd-today.github.io/qd/zh_CN/ diff --git a/apps/qiandao/latest/.env.sample b/apps/qiandao/latest/.env.sample deleted file mode 100644 index bc165ff4..00000000 --- a/apps/qiandao/latest/.env.sample +++ /dev/null @@ -1,5 +0,0 @@ -CONTAINER_NAME="qiandao" -PANEL_APP_PORT_HTTP="40022" -DATA_PATH="./data" -AES_PWD="Yase308ldibokUbacroq" -COOKIE_PWD="Spaja724cHow3yIwurAw" diff --git a/apps/qiandao/latest/data.yml b/apps/qiandao/latest/data.yml deleted file mode 100644 index 599b185f..00000000 --- a/apps/qiandao/latest/data.yml +++ /dev/null @@ -1,35 +0,0 @@ -additionalProperties: - formFields: - - default: 40022 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: AESPWD - envKey: AES_PWD - labelEn: AES encryption key - labelZh: AES加密密钥 - random: true - required: true - rule: paramCommon - type: text - - default: CKPWD - envKey: COOKIE_PWD - labelEn: COOKIE encryption key - labelZh: COOKIE加密密钥 - random: true - required: true - rule: paramCommon - type: text - - default: http - edit: true diff --git a/apps/qiandao/latest/docker-compose.yml b/apps/qiandao/latest/docker-compose.yml deleted file mode 100644 index 69a04f8a..00000000 --- a/apps/qiandao/latest/docker-compose.yml +++ /dev/null @@ -1,152 +0,0 @@ -services: - qiandao: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - volumes: - - "${DATA_PATH}:/usr/src/app/config" - environment: - # 监听地址 - # - BIND=0.0.0.0 - # 监听端口 - - PORT=80 - # 是否启用Debug模式 - # - QIANDAO_DEBUG=False - # 任务定时执行方式,默认为Queue,可选Queue或Batch - # - WORKER_METHOD=Queue - # 是否启用多进程模式,Windows平台无效 - # - MULTI_PROCESS=False - # 是否启用自动热加载,MULTI_PROCESS=True时无效 - - AUTO_RELOAD=False - # 发送的邮件链接启用HTTPS,非框架前端使用HTTPS,如果前端需要HTTPS,请使用反向代理 - # - ENABLE_HTTPS=False - # 指定访问域名,建议修改,否则通过邮件重置密码等功能无效 - # - DOMAIN= - # AES加密密钥,强烈建议修改 - - AES_KEY=${AES_PWD} - # cookie加密密钥,强烈建议修改 - - COOKIE_SECRET=${COOKIE_PWD} - # Cookie在客户端中保留的天数 - # - COOKIE_DAY=5 - # 需要使用MySQL时设置为'mysql' - - DB_TYPE=sqlite3 - # 需要使用MySQL时,设置为(mysql://用户名:密码@hostname:port/数据库名?auth_plugin=) - # - JAWSDB_MARIA_URL=mysql://user:pass@localhost:3306/dbname\?auth_plugin= - # 是否启用SQLAlchmey的日志输出,默认为False - # - QIANDAO_SQL_ECHO=False - # SQLAlchmey日志名称,默认为'QD.sql_engine' - # - QIANDAO_SQL_LOGGING_NAME=qiandao.sql - # SQLAlchmey日志级别,默认为'Warning' - # - QIANDAO_SQL_LOGGING_LEVEL=WARNING - # 是否启用SQLAlchmey的连接池日志输出,默认为True - # - QIANDAO_SQL_ECHO_POOL=True - # SQLAlchmey连接池日志名称,默认为'QD.sql_pool' - # - QIANDAO_SQL_LOGGING_POOL_NAME=QD.sql_pool - # SQLAlchmey连接池日志级别,默认为'Warning' - # - QIANDAO_SQL_LOGGING_POOL_LEVEL=Warning - # SQLAlchmey连接池大小,默认为10 - # - QIANDAO_SQL_POOL_SIZE=5 - # SQLAlchmey连接池最大溢出,默认为50 - # - QIANDAO_SQL_MAX_OVERFLOW=10 - # 是否在连接池获取连接前,先ping一下,默认为True - # - QIANDAO_SQL_POOL_PRE_PING=True - # SQLAlchmey连接池回收时间,默认为3600a - # - QIANDAO_SQL_POOL_RECYCLE=3600 - # SQLAlchmey连接池超时时间,默认为60 - # - QIANDAO_SQL_POOL_TIMEOUT=60 - # SQLAlchmey是否使用LIFO算法,默认为True - # - QIANDAO_SQL_POOL_USE_LIFO=True - # 需要使用Redis或RedisCloud时,设置为http://rediscloud:密码@hostname:port - # - REDISCLOUD_URL=http://rediscloud:密码@hostname:port - # 默认为1 - # - REDIS_DB_INDEX=1 - # (限Redis连接已开启)登录用户或IP在1小时内分数=操作失败次数*相应惩罚分值,分数达到evil上限后自动封禁直至下一小时周期 - # - QIANDAO_EVIL=1000 - # 是否关闭本机私有IP地址用户及Localhost_API请求的evil限制 - # - EVIL_PASS_LAN_IP=True - # 是否启用在控制台日志中打印Exception的TraceBack信息 - # - TRACEBACK_PRINT=False - # 默认为push_pic.png - # - PUSH_PIC_URL=https://fastly.jsdelivr.net/gh/qd-today/qd@master/web/static/img/push_pic.png - # 是否允许开启定期推送QD任务日志,默认为True - # - PUSH_BATCH_SW=True - # 邮箱SMTP服务器 - # - MAIL_SMTP='' - # 邮箱SMTP服务器端口 - # - MAIL_PORT=465 - # 邮箱用户名 - # - MAIL_USER='' - # 邮箱密码 - # - MAIL_PASSWORD='' - # 发送时使用的邮箱,默认与MAIL_USER相同 - # - MAIL_FROM=${MAIL_USER} - # 邮箱域名,没啥用,使用的DOMAIN - # - MAIL_DOMAIN=mail.qd.today - # 全局代理域名列表,用"|"分隔 - # - PROXIES='' - # 全局代理黑名单模式,默认不启用 - # "url"为网址匹配模式;"regexp"为正则表达式匹配模式 - # - PROXY_DIRECT_MODE=regexp - # 全局代理黑名单匹配规则 - # - PROXY_DIRECT=(?xi)\A([a-z][a-z0-9+\-.]*://)?(0(.0){3}|127(.0){2}.1|localhost|\[::([\d]+)?\])(:[0-9]+)? - # 是否启用Pycurl模组 - # - USE_PYCURL=True - # 在Pycurl环境下部分请求可能导致Request错误时,自动修改冲突设置并重发请求 - # - ALLOW_RETRY=True - # 通过Curl使用指定DNS进行解析(仅支持Pycurl环境),如8.8.8.8 - # - DNS_SERVER='' - # 是否允许使用Curl进行Encoding操作 - # - CURL_ENCODING=True - # 是否允许Curl使用Headers中自定义Content-Length请求 - # - CURL_CONTENT_LENGTH=True - # 详见配置... - # - NOT_RETRY_CODE=301|302|303|304|305|307|400|401|403|404|405|407|408|409|410|412|415|413|414|500|501|502|503|504|599 - # - EMPTY_RETRY=True - # 第一个注册用户为管理员,False关闭 - - USER0ISADMIN=False - # config目录下自定义ONNX文件名(不填 ".onnx" 后缀),多个onnx文件名用"|"分隔 - # - EXTRA_ONNX_NAME='' - # config目录下自定义ONNX对应自定义charsets.json文件名(不填 ".json" 后缀),多个json文件名用"|"分隔 - # - EXTRA_CHARSETS_NAME='' - # WebSocket ping间隔,单位为秒,默认为5s - # - WS_PING_INTERVAL=5 - # WebSocket ping超时时间,单位为秒,默认为30s - # - WS_PING_TIMEOUT=30 - # WebSocket单次接收最大消息大小,默认为10MB - # - WS_MAX_MESSAGE_SIZE=10485760 - # WebSocket最大消息队列大小,默认为100 - # - WS_MAX_QUEUE_SIZE=100 - # WebSocket公共模板更新页面最大连接数,默认为30 - # - WS_MAX_CONNECTIONS_SUBSCRIBE=30 - # 订阅加速方式或地址,用于加速公共模板更新,仅适用于GitHub - # - SUBSCRIBE_ACCELERATE_URL=jsdelivr_cdn - - GZIP=True - # - QUEUE_NUM=50 - - ACCESS_LOG=True - # - PUSH_BATCH_DELTA=60 - # - QIANDAO_SQL_POOL_LOGGING_NAME=qiandao.sql.pool - # - QIANDAO_SQL_POOL_LOGGING_LEVEL=WARNING - # - QIANDAO_SQL_POOL_TIMEOUT=30 - # - PBKDF2_ITERATIONS=400 - # - CHECK_TASK_LOOP=500 - # - TASK_MAX_RETRY_COUNT=8 - # - DOWNLOAD_SIZE_LIMIT=5242880 - # - REQUEST_TIMEOUT=30.0 - # - CONNECT_TIMEOUT=30.0 - # - DELAY_MAX_TIMEOUT=29.9 - # - UNSAFE_EVAL_TIMEOUT=3.0 - # - NEW_TASK_DELAY=1 - # - MAIL_SSL=True - # - MAILGUN_KEY= - image: qdtoday/qd:latest - # image: a76yyyy/qiandao:latest - # image: a76yyyy/qiandao:lite-latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/qiandao/logo.png b/apps/qiandao/logo.png deleted file mode 100644 index a8d1adde5afb02197241b0e51654d45e384fd8c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2334 zcmV+(3E}pMP)Px#Cs0gOMFM>O|Ns9Vfc^k({`~#^jjjFu>IkO3{o&~U z#MA#-lm6z~cK-9PShfqJ000P;Nkl) z`Zm!)`~MnF$-2qNLsh(>&zOp^#oZ>>b7{sH`5ov$}Lvpcg16$e`F zlY@eH=eNIk-}@%5RwIox(nuqXG}1^TjWp6oBmYzB8DSqBm}N#;!)Q6^p0HTY{j>c(}^gt?E0=ul`(rx0icJ-kjp;nE?B&Lod3I&lu-N3so z7G~|}O|HFh5>^SjBsS&R&@KnQmxgsMc~H5+m}R9O!X{)UFA9gExIlg6?rA4sVO^u{ zz+nFzQa8IUEv9)mx)y|T@xMLdu`V90(Wy2jr=6fm1ZgOE0LNb?1npRDOK6ue-lTp5 zzFMVCzC^0>4jt#(qWVD(O1f5CEPP1cE1y}Vog8U>DI&(ZD4I$9(@h;+t1X#CBf=hC zP#UI6n+&YuN#xPfyKDCk+=%C6=6i?}?9_UTdAUih}{(%TxH&#jV4blMvWppiBJ0&DrFY?c#r;*Dh-HD$k#P=MqOPJ@^K0>eW zn1xm1MH#+i1iOE6ZJQN=PD{`&Hh|KNR@E5R4_F{dbq3sZ0v%jko9{6UV9)(}3-?lS z_*Q$yO$NM@dfQkmI~ka`F*jPT*4W;+=GsfpdDiGku?AjYjjkZ}(z@;{dd+ zKlzok#;@HFa4yYE*2{yXeqc(gwnSVZA}P2xs;@3{9saIEdI`ojQ0E+lT*l3JoTtTz zIGX~qLf1wff;RO;aAZXt(EA9)qU(La>#ah9thLRkQ`S-akgtXt*ez^ijlsxcY7w+V)FhX1zBEeG7Xj3;hLl5f4}t+WKZ4>r?DEY@{z>Fg^)GpJK+|W>(kL z93sTKQAZIfBn;isWK7zraXticqWToO!tF5hHPc8~=x{X3?dzvnXsIHtkQlUkJsyoR zgPI!cvF4tNO8H4wPKR}<$_Rg0Krj6!EF)i%MR zSvK+ET+z>iaPBi?&VQE?0b`tR*=sRzd{XV*P3Mlj7p*cjrhR8%GwkZRq3AXBZO`eY zsvd%~8gX%6NkH<6upN3Obv-juWqM2Yh1tJw4PCd=tR`D_)-kU!BWWK2PBr&}(JvnB z2c&%cH)iOj@pp8RyhZ|0dTSxYNwTB{i0YXob17x(Ar3gR zS(03`vp;zE*9i$Kg!I~j8NSp4U#|2$b|Bd~!TEVF8O%_DluoCc%rCoUK-A7&%_vxF zl~SB~c>*(Fym8Xkry|+lh}z-b*VF0r@6@d_eH?4ulVe`06-vWdOJh^Gaa*5?s9_v# z=beDw6i#BRO!sVKayFUVeI`#AfR-Dla+9gsMxci~lZhE2;uv`<52^$!E6B|V)o z>wHj}>nruI1X}{K1mzXD2#~aJkwPJ+=P0-X??jFvL^FuArN2#%yT8TvK1h?wyp zhdXKXScYS#=~_yd{pJ**Qj5tmJs?6$3r}w2v2?3t~nR%4UedeKWiy?k+Qc2dd%!3*rOoA;5Z|- z2bm(%<>~pIRPuG?)jDE`M&oW6e_(g*(Afs&RqLe`>rdKjk!EE zzTlB`_Gaz*!NI}d(~ZQkA@bOn1rNJh7d-1$DDC2e+&!3Q!6SO|ul}x}*J`AZMjH7L z@*aOC^!`E`{Wj7_BOkGl{~&UcSsQ7jkwzM6 注意❗️ -> -> Reader 完整源码仅开放到 v2.5.4,新版本当前仅开放部分开源源码,见 https://github.com/hectorqin/reader-legado. - -
免责声明(Disclaimer) -阅读是一款提供网络文学搜索的工具,为广大网络文学爱好者提供一种方便、快捷舒适的试读体验。 - -当您搜索一本书的时,阅读会将该书的书名以关键词的形式提交到各个第三方网络文学网站。各第三方网站返回的内容与阅读无关,阅读对其概不负责,亦不承担任何法律责任。任何通过使用阅读而链接到的第三方网页均系他人制作或提供,您可能从第三方网页上获得其他服务,阅读对其合法性概不负责,亦不承担任何法律责任。第三方搜索引擎结果根据您提交的书名自动搜索获得并提供试读,不代表阅读赞成或被搜索链接到的第三方网页上的内容或立场。您应该对使用搜索引擎的结果自行承担风险。 - -阅读不做任何形式的保证:不保证第三方搜索引擎的搜索结果满足您的要求,不保证搜索服务不中断,不保证搜索结果的安全性、正确性、及时性、合法性。因网络状况、通讯线路、第三方网站等任何原因而导致您不能正常使用阅读,阅读不承担任何法律责任。阅读尊重并保护所有使用阅读用户的个人隐私权,您注册的用户名、电子邮件地址等个人资料,非经您亲自许可或根据相关法律、法规的强制性规定,阅读不会主动地泄露给第三方。 - -阅读致力于最大程度地减少网络文学阅读者在自行搜寻过程中的无意义的时间浪费,通过专业搜索展示不同网站中网络文学的最新章节。阅读在为广大小说爱好者提供方便、快捷舒适的试读体验的同时,也使优秀网络文学得以迅速、更广泛的传播,从而达到了在一定程度促进网络文学充分繁荣发展之目的。阅读鼓励广大小说爱好者通过阅读发现优秀网络小说及其提供商,并建议阅读正版图书。任何单位或个人认为通过阅读搜索链接到的第三方网页内容可能涉嫌侵犯其信息网络传播权,应该及时向阅读提出书面权力通知,并提供身份证明、权属证明及详细侵权情况证明。阅读在收到上述法律文件后,将会依法尽快断开相关链接内容。 -
- -
功能说明 - 书源管理
-- 书架管理
-- 书架布局
-- 搜索
-- 书海
-- 看书
-- 移动端适配
-- 换源
-- 翻页方式
-- 手势支持
-- 自定义主题
-- 自定义样式
-- WebDAV同步
-- 文字替换过滤
-- 听书<仅部分浏览器支持,手机端会因为锁屏而失效>
-- 用户配置备份恢复
-- 支持漫画
-- 支持音频
-- 书源失效检测
-- 导入本地TXT、EPUB、UMD、PDF格式的书籍
-- 书籍分组
-- RSS订阅
-- 定时更新书架
-- 并发搜书
-- 本地书仓
-- 支持kindle阅读
-
- -## 下载与安装 - -详见[文档](https://github.com/hectorqin/reader/blob/master/doc.md) - -## TODO - -- [x] 定时更新书架书籍章节 -- [x] 多源并发搜索书籍 -- [x] 并发更新书架章节 -- [x] 并发搜索书籍来源 -- [x] WebDav同步 -- [x] 导入本地书籍,支持epub -- [x] 阅读3核心兼容。已最大可能兼容,支持使用webview,支持使用javascript。 -- [x] 支持RSS订阅 - -## 问题 - -- 部分使用了 `Javascript` 的书源可能会报错,如调用原生java等高级Javascript功能 -- `webview` 功能需要另外部署接口,不支持 `sourceRegex` 匹配资源响应 -- 不支持书源登录功能 - -## 感谢 - -- 项目初期参考了 [lightink-小说API](https://github.com/lightink-qingmo/lightink-server) -- [阅读](https://github.com/gedoor/MyBookshelf) -- [阅读3.0](https://github.com/gedoor/legado) -- 项目初期参考了 [阅读3.0Web端](https://github.com/celetor/web-yuedu3) - -## 其它 - -- [帮助文档](https://github.com/hectorqin/reader/blob/master/doc.md) -- [界面预览](https://github.com/hectorqin/reader/blob/master/preview.md) diff --git a/apps/reader/data.yml b/apps/reader/data.yml deleted file mode 100644 index 30841fb6..00000000 --- a/apps/reader/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: 阅读3服务器版 -tags: - - 工具 -title: 阅读3服务器版,不需要手机 -description: 阅读3服务器版,不需要手机 -additionalProperties: - key: reader - name: 阅读3服务器版 - tags: - - Tool - shortDescZh: 阅读3服务器版,不需要手机 - shortDescEn: Legado 3.0 Book Reader Server Version - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://github.com/hectorqin/reader - github: https://github.com/hectorqin/reader - document: https://github.com/hectorqin/reader diff --git a/apps/reader/latest/.env.sample b/apps/reader/latest/.env.sample deleted file mode 100644 index 602d07a2..00000000 --- a/apps/reader/latest/.env.sample +++ /dev/null @@ -1,7 +0,0 @@ -CONTAINER_NAME="reader" -PANEL_APP_PORT_HTTP="40053" -DATA_PATH="./data" -INVITE_CODE="icode" -PASSWORD="reader_pwd" -USER_LIMIT="50" -BOOK_LIMIT="200" diff --git a/apps/reader/latest/data.yml b/apps/reader/latest/data.yml deleted file mode 100644 index 67f8428c..00000000 --- a/apps/reader/latest/data.yml +++ /dev/null @@ -1,51 +0,0 @@ -additionalProperties: - formFields: - - default: 40053 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: 50 - edit: true - envKey: USER_LIMIT - labelEn: User limit - labelZh: 用户数量限制 - required: true - rule: paramCommon - type: number - - default: 200 - edit: true - envKey: BOOK_LIMIT - labelEn: Book limit - labelZh: 书本数量限制 - required: true - rule: paramCommon - type: number - - default: "reader" - edit: true - envKey: PASSWORD - labelEn: Admin Password - labelZh: 管理员密码 - random: true - required: true - rule: paramCommon - type: text - - default: "" - edit: true - envKey: INVITE_CODE - labelEn: Invitation code - labelZh: 邀请码 - random: true - required: true - rule: paramCommon - type: text diff --git a/apps/reader/latest/docker-compose.yml b/apps/reader/latest/docker-compose.yml deleted file mode 100644 index d2053e21..00000000 --- a/apps/reader/latest/docker-compose.yml +++ /dev/null @@ -1,28 +0,0 @@ -services: - reader: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8080" - volumes: - - "${DATA_PATH}/log:/log" - - "${DATA_PATH}/storage:/storage" - environment: - - SPRING_PROFILES_ACTIVE=prod - - READER_APP_USERLIMIT=${USER_LIMIT} - - READER_APP_USERBOOKLIMIT=${BOOK_LIMIT} - - READER_APP_CACHECHAPTERCONTENT=true - # 如果启用远程webview,需要取消注释下面的 remote-webview 服务 - # - READER_APP_REMOTEWEBVIEWAPI=http://remote-webview:8050 #开启远程webview - - READER_APP_SECURE=true - - READER_APP_SECUREKEY=${PASSWORD} - - READER_APP_INVITECODE=${INVITE_CODE} - image: hectorqin/reader:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/reader/logo.png b/apps/reader/logo.png deleted file mode 100644 index 4b828e59093a3a84b1a681fe08e22f1414a9af20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5112 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 - RustDesk - Your remote desktop
- 服务器 • - 编译 • - Docker • - 结构 • - 截图
- [English] | [Українська] | [česky] | [Magyar] | [Español] | [فارسی] | [Français] | [Deutsch] | [Polski] | [Indonesian] | [Suomi] | [മലയാളം] | [日本語] | [Nederlands] | [Italiano] | [Русский] | [Português (Brasil)] | [Esperanto] | [한국어] | [العربي] | [Tiếng Việt] | [Ελληνικά]
-

- -Chat with us: [知乎](https://www.zhihu.com/people/rustdesk) | [Discord](https://discord.gg/nDceKgxnkV) | [Reddit](https://www.reddit.com/r/rustdesk) - -[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/I2I04VU09) - -远程桌面软件,开箱即用,无需任何配置。您完全掌控数据,不用担心安全问题。您可以使用我们的注册/中继服务器, -或者[自己设置](https://rustdesk.com/server), -亦或者[开发您的版本](https://github.com/rustdesk/rustdesk-server-demo)。 - -欢迎大家贡献代码, 请看 [`docs/CONTRIBUTING.md`](CONTRIBUTING.md). - -[**可执行程序下载**](https://github.com/rustdesk/rustdesk/releases) - -## 免费的公共服务器 - -以下是您可以使用的、免费的、会随时更新的公共服务器列表,在国内也许网速会很慢或者无法访问。 - -| Location | Vendor | Specification | -| --------- | ------------- | ------------------ | -| Seoul | AWS lightsail | 1 vCPU / 0.5GB RAM | -| Germany | Hetzner | 2 vCPU / 4GB RAM | -| Germany | Codext | 4 vCPU / 8GB RAM | -| Finland (Helsinki) | 0x101 Cyber Security | 4 vCPU / 8GB RAM | -| USA (Ashburn) | 0x101 Cyber Security | 4 vCPU / 8GB RAM | - -## 依赖 - -桌面版本界面使用[sciter](https://sciter.com/), 请自行下载。 - -[Windows](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.win/x64/sciter.dll) | -[Linux](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so) | -[macOS](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.osx/libsciter.dylib) - -移动版本使用Flutter,未来会将桌面版本从Sciter迁移到Flutter。 - -## 基本构建步骤 - -- 请准备好 Rust 开发环境和 C++编译环境 - -- 安装[vcpkg](https://github.com/microsoft/vcpkg), 正确设置`VCPKG_ROOT`环境变量 - - - Windows: vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static - - Linux/Osx: vcpkg install libvpx libyuv opus - -- 运行 `cargo run` - -## [构建](https://rustdesk.com/docs/en/dev/build/) - -## 在 Linux 上编译 - -### Ubuntu 18 (Debian 10) - -```sh -sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake -``` - -### Fedora 28 (CentOS 8) - -```sh -sudo yum -y install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libxdo-devel libXfixes-devel pulseaudio-libs-devel cmake alsa-lib-devel -``` - -### Arch (Manjaro) - -```sh -sudo pacman -Syu --needed unzip git cmake gcc curl wget yasm nasm zip make pkg-config clang gtk3 xdotool libxcb libxfixes alsa-lib pipewire -``` - -### 安装 vcpkg - -```sh -git clone https://github.com/microsoft/vcpkg -cd vcpkg -git checkout 2021.12.01 -cd .. -vcpkg/bootstrap-vcpkg.sh -export VCPKG_ROOT=$HOME/vcpkg -vcpkg/vcpkg install libvpx libyuv opus -``` - -### 修复 libvpx (仅仅针对 Fedora) - -```sh -cd vcpkg/buildtrees/libvpx/src -cd * -./configure -sed -i 's/CFLAGS+=-I/CFLAGS+=-fPIC -I/g' Makefile -sed -i 's/CXXFLAGS+=-I/CXXFLAGS+=-fPIC -I/g' Makefile -make -cp libvpx.a $HOME/vcpkg/installed/x64-linux/lib/ -cd -``` - -### 构建 - -```sh -curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -source $HOME/.cargo/env -git clone https://github.com/rustdesk/rustdesk -cd rustdesk -mkdir -p target/debug -wget https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so -mv libsciter-gtk.so target/debug -cargo run -``` - -### 把 Wayland 修改成 X11 (Xorg) - -RustDesk 暂时不支持 Wayland,不过正在积极开发中。 -> [点我](https://docs.fedoraproject.org/en-US/quick-docs/configuring-xorg-as-default-gnome-session/) -查看 如何将Xorg设置成默认的GNOME session - -## 使用 Docker 编译 - -### 构建Docker容器 - -```sh -git clone https://github.com/rustdesk/rustdesk # 克隆Github存储库 -cd rustdesk # 进入文件夹 -docker build -t "rustdesk-builder" . # 构建容器 -``` -请注意: -* 针对国内网络访问问题,可以做以下几点优化: - 1. Dockerfile 中修改系统的源到国内镜像 - ``` - 在Dockerfile的RUN apt update之前插入两行: - - RUN sed -i "s/deb.debian.org/mirrors.163.com/g" /etc/apt/sources.list - RUN sed -i "s/security.debian.org/mirrors.163.com/g" /etc/apt/sources.list - ``` - - 2. 修改容器系统中的 cargo 源,在`RUN ./rustup.sh -y`后插入下面代码: - - ``` - RUN echo '[source.crates-io]' > ~/.cargo/config \ - && echo 'registry = "https://github.com/rust-lang/crates.io-index"' >> ~/.cargo/config \ - && echo '# 替换成你偏好的镜像源' >> ~/.cargo/config \ - && echo "replace-with = 'sjtu'" >> ~/.cargo/config \ - && echo '# 上海交通大学' >> ~/.cargo/config \ - && echo '[source.sjtu]' >> ~/.cargo/config \ - && echo 'registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index"' >> ~/.cargo/config \ - && echo '' >> ~/.cargo/config - ``` - - 3. Dockerfile 中加入代理的 env - - ``` - 在User root后插入两行 - - ENV http_proxy=http://host:port - ENV https_proxy=http://host:port - ``` - - 4. docker build 命令后面加上 proxy 参数 - - ``` - docker build -t "rustdesk-builder" . --build-arg http_proxy=http://host:port --build-arg https_proxy=http://host:port - ``` - -### 构建RustDesk程序 -容器构建完成后,运行下列指令以完成对RustDesk应用程序的构建: - -```sh -docker run --rm -it -v $PWD:/home/user/rustdesk -v rustdesk-git-cache:/home/user/.cargo/git -v rustdesk-registry-cache:/home/user/.cargo/registry -e PUID="$(id -u)" -e PGID="$(id -g)" rustdesk-builder -``` - -请注意: -* 因为需要缓存依赖项,首次构建一般很慢(国内网络会经常出现拉取失败,可以多试几次)。 -* 如果您需要添加不同的构建参数,可以在指令末尾的`` 位置进行修改。例如构建一个"Release"版本,在指令后面加上` --release`即可。 -* 如果出现以下的提示,则是无权限问题,可以尝试把`-e PUID="$(id -u)" -e PGID="$(id -g)"`参数去掉。 - ``` - usermod: user user is currently used by process 1 - groupmod: Permission denied. - groupmod: cannot lock /etc/group; try again later. - ``` - > **原因:** 容器的entrypoint脚本会检测UID和GID,在度判和给定的环境变量的不一致时,会强行修改user的UID和GID并重新运行。但在重启后读不到环境中的UID和GID,然后再次进入判错重启环节 - - -### 运行RustDesk程序 - -生成的可执行程序在target目录下,可直接通过指令运行调试(Debug)版本的RustDesk: -```sh -target/debug/rustdesk -``` - -或者您想运行发行(Release)版本: - -```sh -target/release/rustdesk -``` - -请注意: -* 请保证您运行的目录是在RustDesk库的根目录内,否则软件会读不到文件。 -* `install`、`run`等Cargo的子指令在容器内不可用,宿主机才行。 - -## 文件结构 - -- **[libs/hbb_common](https://github.com/rustdesk/rustdesk/tree/master/libs/hbb_common)**: 视频编解码, 配置, tcp/udp 封装, protobuf, 文件传输相关文件系统操作函数, 以及一些其他实用函数 -- **[libs/scrap](https://github.com/rustdesk/rustdesk/tree/master/libs/scrap)**: 屏幕截取 -- **[libs/enigo](https://github.com/rustdesk/rustdesk/tree/master/libs/enigo)**: 平台相关的鼠标键盘输入 -- **[src/ui](https://github.com/rustdesk/rustdesk/tree/master/src/ui)**: GUI -- **[src/server](https://github.com/rustdesk/rustdesk/tree/master/src/server)**: 被控端服务音频、剪切板、输入、视频服务、网络连接的实现 -- **[src/client.rs](https://github.com/rustdesk/rustdesk/tree/master/src/client.rs)**: 控制端 -- **[src/rendezvous_mediator.rs](https://github.com/rustdesk/rustdesk/tree/master/src/rendezvous_mediator.rs)**: 与[rustdesk-server](https://github.com/rustdesk/rustdesk-server)保持UDP通讯, 等待远程连接(通过打洞直连或者中继) -- **[src/platform](https://github.com/rustdesk/rustdesk/tree/master/src/platform)**: 平台服务相关代码 -- **[flutter](https://github.com/rustdesk/rustdesk/tree/master/flutter)**: 移动版本的Flutter代码 -- **[flutter/web/js](https://github.com/rustdesk/rustdesk/tree/master/flutter/web/js)**: Flutter Web版本中的Javascript代码 - -## 截图 - -![image](https://user-images.githubusercontent.com/71636191/113112362-ae4deb80-923b-11eb-957d-ff88daad4f06.png) - -![image](https://user-images.githubusercontent.com/71636191/113112619-f705a480-923b-11eb-911d-97e984ef52b6.png) - -![image](https://user-images.githubusercontent.com/71636191/113112857-3fbd5d80-923c-11eb-9836-768325faf906.png) - -![image](https://user-images.githubusercontent.com/71636191/135385039-38fdbd72-379a-422d-b97f-33df71fb1cec.png) diff --git a/apps/rustdesk/data.yml b/apps/rustdesk/data.yml deleted file mode 100644 index 804ec58a..00000000 --- a/apps/rustdesk/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: RustDesk -tags: - - 工具 -title: RustDesk是一款开源的远程桌面软件 -description: RustDesk是一款开源的远程桌面软件 -additionalProperties: - key: rustdesk - name: RustDesk - tags: - - Tool - shortDescZh: RustDesk是一款开源的远程桌面软件 - shortDescEn: RustDesk is an open source remote desktop software - type: tool - crossVersionUpdate: false - limit: 0 - recommend: 0 - website: https://rustdesk.com/zh/ - github: https://github.com/rustdesk/rustdesk - document: https://rustdesk.com/docs/zh-cn/ diff --git a/apps/rustdesk/latest/.env.sample b/apps/rustdesk/latest/.env.sample deleted file mode 100644 index b34e1183..00000000 --- a/apps/rustdesk/latest/.env.sample +++ /dev/null @@ -1,7 +0,0 @@ -CONTAINER_NAME=rustdesk -NAT_TEST_PORT=21115 -HBBS_PORT=21116 -HBBR_PORT=21117 -WEB_CLIENT_PORT1=21118 -WEB_CLIENT_PORT2=21119 -HOST_ADDRESS=172.17.0.1 diff --git a/apps/rustdesk/latest/data.yml b/apps/rustdesk/latest/data.yml deleted file mode 100644 index 59a5d5ee..00000000 --- a/apps/rustdesk/latest/data.yml +++ /dev/null @@ -1,50 +0,0 @@ -additionalProperties: - formFields: - - default: 21115 - edit: true - envKey: NAT_TEST_PORT - labelEn: NAT type test port - labelZh: NAT类型测试端口 - required: true - rule: paramPort - type: number - - default: 21116 - edit: true - envKey: HBBS_PORT - labelEn: hbbs port (used with IP/domain) - labelZh: hbbs端口(配合IP/域名使用) - required: true - rule: paramPort - type: number - - default: 21117 - edit: true - envKey: HBBR_PORT - labelEn: hbbr port (client relay server port) - labelZh: hbbr端口(客户端中继服务器端口) - required: true - rule: paramPort - type: number - - default: 21118 - edit: true - envKey: WEB_CLIENT_PORT1 - labelEn: Web Client Support Port 1 - labelZh: 网页客户端支持端口1 - required: true - rule: paramPort - type: number - - default: 21119 - edit: true - envKey: WEB_CLIENT_PORT2 - labelEn: Web Client Support Port 2 - labelZh: 网页客户端支持端口2 - required: true - rule: paramPort - type: number - - default: 172.17.0.1 - edit: true - envKey: HOST_ADDRESS - labelEn: IP address or domain name (must change item) - labelZh: IP地址或域名(必改项) - required: true - rule: paramCommon - type: text diff --git a/apps/rustdesk/latest/docker-compose.yml b/apps/rustdesk/latest/docker-compose.yml deleted file mode 100644 index b62118f4..00000000 --- a/apps/rustdesk/latest/docker-compose.yml +++ /dev/null @@ -1,49 +0,0 @@ -services: - hbbs: - container_name: ${CONTAINER_NAME}_hbbs - restart: always - ports: - - "${NAT_TEST_PORT}:21115" #NAT类型测试 - - "${HBBS_PORT}:21116" # 自定义 hbbs 映射端口 - - "${HBBS_PORT}:21116/udp" #自定义 hbbs 映射端口 - - "${WEB_CLIENT_PORT1}:21118" #网页客户端支持端口 - command: hbbs -r ${HOST_ADDRESS}:${HBBS_PORT} -k _ # 填入个人域名或 IP + 暴露端口 - volumes: - - "./data:/root" # 自定义挂载目录 - networks: - - 1panel-network - depends_on: - - hbbr -# deploy: -# resources: -# limits: -# memory: 64M - image: rustdesk/rustdesk-server:latest -# image: rustdesk/rustdesk-server:latest-arm64v8 # 镜像选用 arm64 版 - labels: - createdBy: "Apps" - - hbbr: - container_name: ${CONTAINER_NAME}_hbbr - restart: always - ports: - - "${HBBR_PORT}:21117" # 自定义 hbbr 映射端口 - - "${WEB_CLIENT_PORT2}:21119" #网页客户端支持端口 - command: hbbr -k _ - volumes: - - "./data:/root" # 自定义挂载目录 - networks: - - 1panel-network -# deploy: -# resources: -# limits: -# memory: 64M - image: rustdesk/rustdesk-server:latest -# image: rustdesk/rustdesk-server:latest-arm64v8 # 镜像选用 arm64 版 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true - diff --git a/apps/rustdesk/logo.png b/apps/rustdesk/logo.png deleted file mode 100644 index 86f7c2f347fc6b0e497621936da480f27cf2d5b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2210 zcmV;T2wnGyP)Px#Do{*RMgIT)1GVJ=sp$fL`2&dd0G;julJW#~{N?lg zz1{gEpzn&s^;)6&O~C6#)P0fw007P6;)JGMHN+4QAHJ16fJ#Wb?;B8z14f& zsS3}py)=S03)Z_v+9@9PG$ea;QmWyK2z&9Cnx~8z^&I z4SGk%dBa=X>aV*@uzn!w^4SInCj4_b}RlHHc)T$ z=t)AGTM7DZ9OtQt+tnTe-(WqW1g#GSaUH~Cjva;JRuok~?CrgTvEeu{1Go}&xfaJU zw}WU`qwoWrn&uZ?0yy|_TIoE!JpgHJ3CC_k7jom+!aD%(<)K$)M;<*6Ff`U}G3E0^ z|5RT`=v3~%+%$}jkKhN0V{L-nKi?gl)b?_xsV;xI-fqTJ8yt!LNqMBMV(E{hr1xX0 z4ORnnz0n>|q|^N)wO?wC8f$~ugBO|@+IT19$YKyQn^>3b$iX>H0@^TsmyllG%&1$f zcDpMBE!89XzTa#HLBJdtJd%T!F}vh2UD71d&@$~e<2L~tyG`ttg_fEBmi-{exLeZD z5}o~nkFn!`tY!Nv0rXJ@2Yu7eVQ&ilFK^~12jTf$a(q8?`=a2lZyBcikT!#*Ikw0T z?WuW$IsOKPrfxSye|?xArrrx1#Lr=O#nc(MXg}@{X^LH&6D|6!{7fup5&eOeVf$Z- zq_0{zLj*0NJHE%=Zf*)USh<=XUB^q8E;){uVhcZ}I-a&ox$Y}pqRN;&_(FV`;TEyv zx^Kp@eFs`Q0Oi^zV(DA?%guP{8xClDtVuo>OJD2ZyQC%4*w<~_^SJge5_d~76HA?a zD~`j~vFSgMxPe29SQfW?{GM6y0Gqh&`<}!{x>U`uXU9wLfFG&b5`$ccUV$mLNZNL| z+ku3%&TcoRc&ER%!4T$lO-7nzQjA(G4cJ8ctjw%+$a50mya3W3#>U#8%1P7P4Zed2 zr3tq0NK0pTva!-SHN?S7dFHZ=^i#Z!EQ67t22X(6lafB%An_u(rk)m3+mzbBENcj& zfrBNWc5TY-9l>i@M`FlnfgvtkNZ686&DYC9Ktq<=^Ur8fyOC;R>Qm!4y6ZA=!0yUQ zTa^2R;0)>Th4ej{OEaT5hnM1gNV5=}w1X+m5>}CCyV3%NQ?x zJxQ@WPvQf1Ev!`dN**8o0b5KmY)|5|d#4wYFwMe=>-f*^454OjeUSC9V{^dQK)nq>hN& zW9T&@l1a*$*#hXrHV)4zHc(4hP0bcTm*WABMLBiYxFD4TuZW>b`{XHsKY~;uDXXa? zdFX|Mx7|_YHqEzFv-{gp(%N#8Y!9C*b3;xp?AKVB%U=^Jq2yzMwwnL3!*a*-+_Nvb zS(?8|6Yf^-HQ}75P$fF=biUu6pVxGKe(jaRv-5h|B(i>txI;dZp6}YulY@gT-}VQ7 zki90b*OjgcG#j^Vxb4BzJAjk>t)@+=?P6?u1lzCKk0(*q z^!wb9By*dFx%S(xHo3N&q*qCL0zx^HDnqS(hRvq88=koO_L(XCz!4^zU)g<+VS^!^ zCsX-ZCLU^DlZ7N}>DzX4c3M9s)$mVX4_w~kmky@*6IepNu=?`>)NiZzy4rtGx>i(C kMHN+4QAHJ1)c>&l0#H8&Oq&Ts!2kdN07*qoM6N<$g3YN(T>t<8 diff --git a/apps/rustdesk/s6-latest/.env.sample b/apps/rustdesk/s6-latest/.env.sample deleted file mode 100644 index b34e1183..00000000 --- a/apps/rustdesk/s6-latest/.env.sample +++ /dev/null @@ -1,7 +0,0 @@ -CONTAINER_NAME=rustdesk -NAT_TEST_PORT=21115 -HBBS_PORT=21116 -HBBR_PORT=21117 -WEB_CLIENT_PORT1=21118 -WEB_CLIENT_PORT2=21119 -HOST_ADDRESS=172.17.0.1 diff --git a/apps/rustdesk/s6-latest/data.yml b/apps/rustdesk/s6-latest/data.yml deleted file mode 100644 index 59a5d5ee..00000000 --- a/apps/rustdesk/s6-latest/data.yml +++ /dev/null @@ -1,50 +0,0 @@ -additionalProperties: - formFields: - - default: 21115 - edit: true - envKey: NAT_TEST_PORT - labelEn: NAT type test port - labelZh: NAT类型测试端口 - required: true - rule: paramPort - type: number - - default: 21116 - edit: true - envKey: HBBS_PORT - labelEn: hbbs port (used with IP/domain) - labelZh: hbbs端口(配合IP/域名使用) - required: true - rule: paramPort - type: number - - default: 21117 - edit: true - envKey: HBBR_PORT - labelEn: hbbr port (client relay server port) - labelZh: hbbr端口(客户端中继服务器端口) - required: true - rule: paramPort - type: number - - default: 21118 - edit: true - envKey: WEB_CLIENT_PORT1 - labelEn: Web Client Support Port 1 - labelZh: 网页客户端支持端口1 - required: true - rule: paramPort - type: number - - default: 21119 - edit: true - envKey: WEB_CLIENT_PORT2 - labelEn: Web Client Support Port 2 - labelZh: 网页客户端支持端口2 - required: true - rule: paramPort - type: number - - default: 172.17.0.1 - edit: true - envKey: HOST_ADDRESS - labelEn: IP address or domain name (must change item) - labelZh: IP地址或域名(必改项) - required: true - rule: paramCommon - type: text diff --git a/apps/rustdesk/s6-latest/docker-compose.yml b/apps/rustdesk/s6-latest/docker-compose.yml deleted file mode 100644 index 3c840f49..00000000 --- a/apps/rustdesk/s6-latest/docker-compose.yml +++ /dev/null @@ -1,25 +0,0 @@ -services: - rustdesk-server: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${NAT_TEST_PORT}:21115" #NAT类型测试 - - "${HBBS_PORT}:21116" # 自定义 hbbs 映射端口 - - "${HBBS_PORT}:21116/udp" #自定义 hbbs 映射端口 - - "${HBBR_PORT}:21117" # 自定义 hbbr 映射端口 - - "${WEB_CLIENT_PORT1}:21118" #网页客户端支持端口 - - "${WEB_CLIENT_PORT2}:21119" #网页客户端支持端口 - volumes: - - "./data/hbbs:/data" # 自定义挂载目录 - environment: - - "RELAY=${HOST_ADDRESS}:${HBBR_PORT}" - - "ENCRYPTED_ONLY=1" - image: rustdesk/rustdesk-server-s6:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/siyuan/3.2.0/.env.sample b/apps/siyuan/3.2.0/.env.sample deleted file mode 100644 index 15b6323b..00000000 --- a/apps/siyuan/3.2.0/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="siyuan" -PANEL_APP_PORT_HTTP="40138" -DATA_PATH="./data" diff --git a/apps/siyuan/3.2.0/data.yml b/apps/siyuan/3.2.0/data.yml deleted file mode 100644 index f588f10b..00000000 --- a/apps/siyuan/3.2.0/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40138 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/siyuan/3.2.0/docker-compose.yml b/apps/siyuan/3.2.0/docker-compose.yml deleted file mode 100644 index 846cbf23..00000000 --- a/apps/siyuan/3.2.0/docker-compose.yml +++ /dev/null @@ -1,19 +0,0 @@ -services: - siyuan: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:6806" - volumes: - - "${DATA_PATH}:/siyuan/workspace" - user: "1000:1000" - command: "--workspace=/siyuan/workspace/" - image: b3log/siyuan:v3.2.0 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/siyuan/README.md b/apps/siyuan/README.md deleted file mode 100644 index aa23e903..00000000 --- a/apps/siyuan/README.md +++ /dev/null @@ -1,301 +0,0 @@ -# 使用说明 - -- 赋予文件夹权限 - -容器要求以`1000:1000`用户身份运行,第一次创建可能失败,需要将应用数据文件夹`data`赋予用户权限, - -终端运行以下命令,按需修改 - -``` -chown -R 1000:1000 /opt/1panel/apps/local/siyuan/siyuan/data -``` - -然后重建应用即可。 - -# 原始相关 - -

-SiYuan -
-重构你的思维 -

- - - -
- - - -
- - - -
- - -

-Twitter Follow -Discord -

-SiYuan - WYSIWYG Block Ref E2EE Sync Local-first | Product Hunt -

- -

-English -

- -## 💡 简介 - -思源笔记是一款隐私优先的个人知识管理系统,支持细粒度块级引用和 Markdown 所见即所得。 - -![feature0.png](https://github.com/siyuan-note/siyuan/raw/master/screenshots/feature0.png) - -欢迎到[思源笔记官方讨论区](https://ld246.com/domain/siyuan)了解更多。同时也欢迎关注 B3log 开源社区微信公众号 `B3log开源`: - -![b3logos.jpg](https://b3logfile.com/file/2020/08/b3logos-032af045.jpg) - -## 🔮 特性 - -大部分功能是免费的,即使是在商业环境下使用。 - -* 内容块 - * 块级引用和双向链接 - * 自定义属性 - * SQL 查询嵌入 - * 协议 `siyuan://` -* 编辑器 - * Block 风格 - * Markdown 所见即所得 - * 列表大纲 - * 块缩放聚焦 - * 块横向排版 - * 百万字大文档编辑 - * 数学公式、图表、流程图、甘特图、时序图、五线谱等 - * 网页剪藏 - * PDF 标注双链 -* 导出 - * 引用块和嵌入块 - * 带 assets 文件夹的标准 Markdown - * PDF、Word 和 HTML - * 复制到微信公众号、知乎和语雀 -* 间隔重复 -* 模板片段 -* JavaScript/CSS 代码片段 -* Android/iOS APP -* Docker 部署 -* [API](API_zh_CN.md) -* 社区集市 - -部分功能需要付费会员才能使用,更多细节请参考[定价](https://b3log.org/siyuan/pricing.html)。 - -## 🏗️ 架构设计和开源生态 - -![思源笔记架构设计](https://b3logfile.com/file/2023/05/SiYuan_Arch-Sgu8vXT.png "思源笔记架构设计") - -* [bazzar](https://github.com/siyuan-note/bazaar):社区集市 -* [dejavu](https://github.com/siyuan-note/dejavu):数据仓库 -* [riff](https://github.com/siyuan-note/riff):间隔重复系统 -* [petal](https://github.com/siyuan-note/petal):插件 API -* [chrome](https://github.com/siyuan-note/siyuan-chrome):Chrome 扩展 -* [lute](https://github.com/88250/lute):结构化的编辑器引擎,支持 Go 和 JavaScript -* [ios](https://github.com/siyuan-note/siyuan-ios): iOS APP -* [android](https://github.com/siyuan-note/siyuan-android): Android APP - -## 🌟 Star History - -[![Star History Chart](https://api.star-history.com/svg?repos=siyuan-note/siyuan&type=Date)](https://star-history.com/#siyuan-note/siyuan&Date) - -## 🗺️ 路线图 - -* [思源笔记开发计划和进度](https://github.com/orgs/siyuan-note/projects/1) -* [思源笔记版本变更和公告](CHANGELOG.md) - -## 🚀 下载安装 - -桌面端和移动端建议优先考虑通过应用市场安装,这样以后升级版本时可以一键更新。 - -### 应用市场 - -* [App Store](https://apps.apple.com/cn/app/siyuan/id1583226508) -* [Google Play](https://play.google.com/store/apps/details?id=org.b3log.siyuan) -* [Microsoft Store](https://www.microsoft.com/store/apps/9P7HPMXP73K4) -* [华为应用市场](https://appgallery.huawei.com/app/C105558879) -* [小米应用商店](https://app.mi.com/details?id=org.b3log.siyuan) -* [酷安](https://www.coolapk.com/apk/292664) - -### Docker 部署 - -
-Docker 部署文档 - -#### 概述 - -在服务器上伺服思源最简单的方案是通过 Docker 部署。 - -* 镜像名称 `b3log/siyuan` -* [镜像地址](https://hub.docker.com/r/b3log/siyuan) - -#### 文件结构 - -整体程序位于 `/opt/siyuan/` 下,基本上就是 Electron 安装包 resources 文件夹下的结构: - -* appearance:图标、主题、多语言 -* guide:帮助文档 -* stage:界面和静态资源 -* kernel:内核程序 - -#### 启动入口 - -构建 Docker 镜像时设置了入口:`ENTRYPOINT [ "/opt/siyuan/kernel" ]`,使用 `docker run b3log/siyuan` 并带参即可启动: - -* `--workspace` 指定工作空间文件夹路径,在宿主机上通过 `-v` 挂载到容器中 - -更多的参数可参考 `--help`。下面是一条启动命令示例:`docker run -v workspace_dir_host:workspace_dir_container -p 6806:6806 b3log/siyuan --workspace=workspace_dir_container` - -* `workspace_dir_host`:宿主机上的工作空间文件夹路径 -* `workspace_dir_container`:容器内工作空间文件夹路径,和后面 `--workspace` 指定成一样的 - -为了简化,建议将 workspace 文件夹路径在宿主机和容器上配置为一致的,比如将 `workspace_dir_host` 和 `workspace_dir_container` 都配置为 `/siyuan/workspace`,对应的启动命令示例:`docker run -v /siyuan/workspace:/siyuan/workspace -p 6806:6806 -u 1000:1000 b3log/siyuan --workspace=/siyuan/workspace/`。 - -#### 用户权限 - -镜像中是使用默认创建的普通用户 `siyuan`(uid 1000/gid 1000)来启动内核进程的,所以在宿主机创建工作空间文件夹时请注意设置该文件夹所属用户组:`chown -R 1000:1000 /siyuan/workspace`,在启动容器时需要带参数 `-u 1000:1000`。 - -#### 隐藏端口 - -使用 NGINX 反向代理可以隐藏 6806 端口,请注意: - -* 配置 WebSocket 反代 `/ws` - -#### 注意 - -* 请务必确认挂载卷的正确性,否则容器删除后数据会丢失 -* 不要使用 URL 重写进行重定向,否则鉴权可能会有问题,建议配置反向代理 - -#### 限制 - -* 不支持桌面端和移动端应用连接,仅支持在浏览器上使用 -* 不支持导出 PDF、HTML 和 Word 格式 -* 不支持导入 Markdown 文件 - -
- -### 安装包 - -* [B3log](https://b3log.org/siyuan/download.html) -* [GitHub](https://github.com/siyuan-note/siyuan/releases) - -### 内部预览版 - -我们会在有重大更新前发布内部预览版,请访问 [https://github.com/siyuan-note/insider](https://github.com/siyuan-note/insider)。 - -## 🏘️ 社区 - -* [中文讨论区](https://ld246.com/domain/siyuan) -* [用户社区汇总](https://ld246.com/article/1640266171309) -* [Awesome SiYuan](https://github.com/siyuan-note/awesome) - -## 🛠️ 开发指南 - -见:[开发指南](https://github.com/siyuan-note/siyuan/blob/master/.github/CONTRIBUTING_zh_CN.md)。 - -## ❓ 常见问题和解答 - -### 思源是如何存储数据的? - -数据保存在工作空间文件夹下,在工作空间 data 文件夹下: - -* `assets` 用于保存所有插入的资源文件 -* `emojis` 用于保存自定义图标表情图片 -* `snippets` 用于保存代码片段 -* `storage` 用于保存查询条件、布局和闪卡数据等 -* `templates` 用于保存模板片段 -* `widgets` 用于保存挂件 -* `plugins` 用于保存插件 -* `public` 用于保存公开的数据 -* 其余文件夹就是用户自己创建的笔记本文件夹,笔记本文件夹下 `.sy` 后缀的文件用于保存文档数据,数据格式为 JSON - -### 支持通过第三方同步盘进行数据同步吗? - -不支持通过第三方同步盘进行数据同步,否则可能会导致数据损坏。 - -虽然不支持第三方同步盘,但是支持对接第三方云端存储(会员特权)。 - -另外,也可以考虑手动导出导入 Data 实现数据同步: - -* 桌面端:设置 - 导出 - 导出 Data / 导入 Data -* 移动端:右侧栏 - 关于 - 导出 Data / 导入 Data - -### 思源是开源的吗? - -思源笔记是完全开源的,欢迎参与贡献: - -* [界面和内核](https://github.com/siyuan-note/siyuan) -* [Android 端](https://github.com/siyuan-note/siyuan-android) -* [iOS 端](https://github.com/siyuan-note/siyuan-ios) -* [Chrome 剪藏扩展](https://github.com/siyuan-note/siyuan-chrome) - -更多细节请参考[开发指南](https://github.com/siyuan-note/siyuan/blob/master/.github/CONTRIBUTING_zh_CN.md)。 - -### 如何升级到新版本? - -* 如果是通过应用商店安装的,请通过应用商店更新 -* 如果是桌面端通过安装包安装的,可打开 设置 - 关于 - 自动下载更新安装包 选项,这样思源会自动下载最新版安装包并提示安装 -* 如果是通过手动安装包安装的,请再次下载安装包安装 - -可在 设置 - 关于 - 当前版本检查更新,也可以通过关注[官方网站](https://b3log.org/siyuan/)或者 [GitHub Releases](https://github.com/siyuan-note/siyuan/releases) 来获取新版本。 - -**注意**:切勿将工作空间放置于安装目录下,因为更新版本会清空安装目录下的所有文件 - -### 删除文档有什么注意事项吗? - -文档被删除后不会出现在操作系统回收站中,而是直接删除,删除时思源会生成数据历史。 - -### 如何才能只换行不新起段落? - -请使用 Shift+Enter。 - -## 有的块(比如在列表项中的段落块)找不到块标怎么办? - -在列表项下的第一个子块是省略块标的。可以将光标移到这个块中,然后通过 Ctrl+/ 触发它的块标菜单。 - -### 如何分享笔记? - -* 分享文档到链滴 -* 导出导入 `.sy.zip` 数据包 -* 通过网络伺服 -* 导出导入 Markdown -* 导出预览 中复制到第三方在线服务 - -### 数据仓库密钥遗失怎么办? - -* 如果之前在多个设备上正确初始化过数据仓库密钥的话,那么该密钥在所有设备上都是相同的,可以在 设置 - 关于 - 数据仓库密钥 - 复制密钥字符串 找回 -* 如果之前没有正确配置(比如多个设备上密钥不一致)或者所有设备均不可用,已经无法获得密钥字符串,则可通过如下步骤重置密钥: - - 1. 手动备份好数据,可通过 导出 Data 或者直接在文件系统上复制 工作空间/data/ 文件夹 - 2. 设置 - 关于 - 数据仓库密钥 - 重置数据仓库 - 3. 重新初始化数据仓库密钥,在一台设备上初始化密钥以后,其他设备导入密钥 - 4. 云端使用新的同步目录,旧的同步目录已经无法使用,可以删除 - 5. 已有的云端快照已经无法使用,可以删除 - -### 使用需要付费吗? - -大部分功能是免费的,即使是在商业环境下使用。 - -会员特权需要付费后才能使用,请参考[定价](https://b3log.org/siyuan/pricing.html)。 - -如果你没有会员特权需求但又想支持开发,欢迎进行捐赠:[靠爱发电 - 链滴](https://ld246.com/sponsor) - -## 🙏 鸣谢 - -思源的诞生离不开众多的开源项目和贡献者,请参考项目源代码 kernel/go.mod、app/package.json 和项目首页。 - -思源的成长离不开用户的反馈和宣传推广,感谢所有人对思源的帮助 ❤️ - -### 贡献者列表 - -欢迎加入我们,一起为思源贡献代码。 - - - - diff --git a/apps/siyuan/data.yml b/apps/siyuan/data.yml deleted file mode 100644 index 0f54aa10..00000000 --- a/apps/siyuan/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: 思源笔记 SiYuan -tags: - - 工具 -title: 一款隐私优先的个人知识管理系统 -description: 一款隐私优先的个人知识管理系统 -additionalProperties: - key: siyuan - name: 思源笔记 SiYuan - tags: - - Tool - shortDescZh: 一款隐私优先的个人知识管理系统 - shortDescEn: A privacy-first personal knowledge management system - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://b3log.org/siyuan - github: https://github.com/siyuan-note/siyuan - document: https://github.com/siyuan-note/siyuan diff --git a/apps/siyuan/latest/.env.sample b/apps/siyuan/latest/.env.sample deleted file mode 100644 index 15b6323b..00000000 --- a/apps/siyuan/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="siyuan" -PANEL_APP_PORT_HTTP="40138" -DATA_PATH="./data" diff --git a/apps/siyuan/latest/data.yml b/apps/siyuan/latest/data.yml deleted file mode 100644 index f588f10b..00000000 --- a/apps/siyuan/latest/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40138 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/siyuan/latest/docker-compose.yml b/apps/siyuan/latest/docker-compose.yml deleted file mode 100644 index 278391bf..00000000 --- a/apps/siyuan/latest/docker-compose.yml +++ /dev/null @@ -1,19 +0,0 @@ -services: - siyuan: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:6806" - volumes: - - "${DATA_PATH}:/siyuan/workspace" - user: "1000:1000" - command: "--workspace=/siyuan/workspace/" - image: b3log/siyuan:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/siyuan/logo.png b/apps/siyuan/logo.png deleted file mode 100644 index 59f35fecf74f26147a2f70e4d9421db8ea063c08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6417 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 F`ag5Bt)c(` diff --git a/apps/synapse/1.146.0/.env.sample b/apps/synapse/1.146.0/.env.sample deleted file mode 100644 index 0ef69a4b..00000000 --- a/apps/synapse/1.146.0/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="synapse" -PANEL_APP_PORT_HTTP="40026" diff --git a/apps/synapse/1.146.0/data.yml b/apps/synapse/1.146.0/data.yml deleted file mode 100644 index 045af699..00000000 --- a/apps/synapse/1.146.0/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40026 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/synapse/1.146.0/docker-compose.yml b/apps/synapse/1.146.0/docker-compose.yml deleted file mode 100644 index 04faec02..00000000 --- a/apps/synapse/1.146.0/docker-compose.yml +++ /dev/null @@ -1,29 +0,0 @@ -services: - synapse: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - volumes: - - synapse-data:/data - ports: - - "${PANEL_APP_PORT_HTTP}:8008" - environment: - - TZ=Asia/Shanghai - - UID=1000 - - GID=1000 - image: matrixdotorg/synapse:v1.146.0 - logging: - options: - max-size: "10m" - command: run -m synapse.app.homeserver --config-path=/data/homeserver.yaml - labels: - createdBy: "Apps" - -volumes: - synapse-data: - external: true - -networks: - 1panel-network: - external: true diff --git a/apps/synapse/README.md b/apps/synapse/README.md deleted file mode 100644 index 819a6742..00000000 --- a/apps/synapse/README.md +++ /dev/null @@ -1,244 +0,0 @@ -# 使用说明 - -## 步骤1 -创建前需要使用终端运行以下命令创建依赖配置文件, -需要按需修改参数`my.matrix.host` - - - -``` -# 参数解释说明 -docker run -it --rm \ - -v synapse-data:/data \ # 挂载一个卷,将容器内的 /data 目录映射到 synapse-data 卷 - -e SYNAPSE_SERVER_NAME=my.matrix.host \ # 设置 Synapse 服务器的公共主机名 - -e SYNAPSE_REPORT_STATS=no \ # 禁用匿名统计报告 - -e SYNAPSE_HTTP_PORT=8008 \ # 设置 Synapse 监听的 HTTP 端口为 8008 - -e SYNAPSE_CONFIG_DIR=/data \ # 设置配置文件的存储位置为 /data - -e SYNAPSE_DATA_DIR=/data \ # 设置持久数据的存储位置为 /data - -e TZ=Asia/Shanghai \ # 设置容器的时区为亚洲/上海 - -e UID=1000 \ # 设置运行 Synapse 的用户 ID - -e GID=1000 \ # 设置运行 Synapse 的用户组 ID - matrixdotorg/synapse:latest generate # 运行最新版本的 matrixdotorg/synapse 镜像,并执行 generate 命令来生成配置文件 - -``` -实际运行命令,注意修改 -``` -docker run -it --rm \ - -v synapse-data:/data \ - -e SYNAPSE_SERVER_NAME=my.matrix.host \ - -e SYNAPSE_REPORT_STATS=no \ - -e SYNAPSE_HTTP_PORT=8008 \ - -e SYNAPSE_CONFIG_DIR=/data \ - -e SYNAPSE_DATA_DIR=/data \ - -e TZ=Asia/Shanghai \ - -e UID=1000 \ - -e GID=1000 \ - matrixdotorg/synapse:latest generate - -``` - -配置文件默认存放路径是在一个`synapse-data`存储卷里, -``` -# 配置文件路径 -/var/lib/docker/volumes/synapse-data/_data -``` - -## 步骤2 -创建应用 - -## 步骤3 - -需要打开容器,运行命令创建用户 - -``` -# 创建管理员账户 -# register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml -a -u 用户名 -p 密码 -register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml -a -u admin -p password - -# 创建普通用户账户 -# register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml --no-admin -u 用户名 -p 密码 -register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml --no-admin -u user -p password - -# 查看更多命令与帮助 -register_new_matrix_user http://localhost:8008 -c /data/homeserver.yaml --help -``` - -`register_new_matrix_user`自带命令 - -``` -usage: register_new_matrix_user [-h] [-u USER] [-p PASSWORD] [-t USER_TYPE] [-a | --no-admin] (-c CONFIG | -k SHARED_SECRET) [server_url] -用法:register_new_matrix_user [-h] [-u USER] [-p PASSWORD] [-t USER_TYPE] [-a | --no-admin] (-c CONFIG | -k SHARED_SECRET) [server_url] - -Used to register new users with a given homeserver when registration has been disabled. The homeserver must be configured with the 'registration_shared_secret' option set. -用于在注册被禁用时,通过给定的homeserver注册新用户。homeserver必须配置'registration_shared_secret'选项。 - -positional arguments: -位置参数: -server_url URL to use to talk to the homeserver. By default, tries to find a suitable URL from the configuration file. Otherwise, defaults to 'http://localhost:8008'. -server_url 与homeserver通信的URL。默认情况下,尝试从配置文件中找到合适的URL。否则,默认为'http://localhost:8008'。 - -options: -选项: --h, --help show this help message and exit --h, --help 显示帮助信息并退出 --u USER, --user USER Local part of the new user. Will prompt if omitted. --u USER, --user USER 新用户的本地部分。如果省略,将提示输入。 --p PASSWORD, --password PASSWORD -New password for user. Will prompt if omitted. --p PASSWORD, --password PASSWORD -用户的新密码。如果省略,将提示输入。 --t USER_TYPE, --user_type USER_TYPE -User type as specified in synapse.api.constants.UserTypes --t USER_TYPE, --user_type USER_TYPE -用户类型,如synapse.api.constants.UserTypes中所指定的 --a, --admin Register new user as an admin. Will prompt if --no-admin is not set either. --a, --admin 将新用户注册为管理员。如果未设置--no-admin,也会提示输入。 ---no-admin Register new user as a regular user. Will prompt if --admin is not set either. ---no-admin 将新用户注册为普通用户。如果未设置--admin,也会提示输入。 --c CONFIG, --config CONFIG -Path to server config file. Used to read in shared secret. --c CONFIG, --config CONFIG -服务器配置文件的路径。用于读取共享密钥。 --k SHARED_SECRET, --shared-secret SHARED_SECRET -Shared secret as defined in server config file. --k SHARED_SECRET, --shared-secret SHARED_SECRET -服务器配置文件中定义的共享密钥。 -``` - -## 提示 - -所有数据存放在`synapse-data`存储卷里, - -删除应用时,假如需要完全清除数据,还需要将`synapse-data`存储卷删除。 - -# 原始相关 -## Synapse -[![(get support on #synapse:matrix.org)](https://img.shields.io/matrix/synapse:matrix.org?label=support&logo=matrix)](https://matrix.to/#/#synapse:matrix.org) [![(discuss development on #synapse-dev:matrix.org)](https://img.shields.io/matrix/synapse-dev:matrix.org?label=development&logo=matrix)](https://matrix.to/#/#synapse-dev:matrix.org) [![(Rendered documentation on GitHub Pages)](https://img.shields.io/badge/documentation-%E2%9C%93-success)](https://matrix-org.github.io/synapse/latest/) [![(check license in LICENSE file)](https://img.shields.io/github/license/matrix-org/synapse)](https://raw.githubusercontent.com/matrix-org/synapse/develop/LICENSE) [![(latest version released on PyPi)](https://img.shields.io/pypi/v/matrix-synapse)](https://pypi.org/project/matrix-synapse) [![(supported python versions)](https://img.shields.io/pypi/pyversions/matrix-synapse)](https://pypi.org/project/matrix-synapse) - -Synapse is an open-source [Matrix](https://matrix.org/) homeserver written and maintained by the [Matrix.org](https://github.com/matrix-org/Matrix.org) Foundation. We began rapid development in 2014, reaching v1.0.0 in 2019. Development on Synapse and the Matrix protocol itself continues in earnest today. - -Briefly, Matrix is an open standard for communications on the internet, supporting federation, encryption and VoIP. [Matrix.org](https://github.com/matrix-org/Matrix.org) has more to say about the [goals of the Matrix project](https://matrix.org/docs/guides/introduction), and the [formal specification](https://spec.matrix.org/) describes the technical details. - -Contents - -- [Installing and configuration](#installing-and-configuration) - - [Using a reverse proxy with Synapse](#using-a-reverse-proxy-with-synapse) - - [Upgrading an existing Synapse](#upgrading-an-existing-synapse) - - [Platform dependencies](#platform-dependencies) - - [Security note](#security-note) -- [Testing a new installation](#testing-a-new-installation) - - [Registering a new user from a client](#registering-a-new-user-from-a-client) -- [Troubleshooting and support](#troubleshooting-and-support) -- [Identity Servers](#identity-servers) -- [Development](#development) - - - -## [Installing and configuration](#id1) - -The Synapse documentation describes [how to install Synapse](https://matrix-org.github.io/synapse/latest/setup/installation.html). We recommend using [Docker images](https://matrix-org.github.io/synapse/latest/setup/installation.html#docker-images-and-ansible-playbooks) or [Debian packages from Matrix.org](https://matrix-org.github.io/synapse/latest/setup/installation.html#matrixorg-packages). - -Synapse has a variety of [config options](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html) which can be used to customise its behaviour after installation. There are additional details on how to [configure Synapse for federation here](https://matrix-org.github.io/synapse/latest/federate.html). - - - -### [Using a reverse proxy with Synapse](#id2) - -It is recommended to put a reverse proxy such as [nginx](https://nginx.org/en/docs/http/ngx_http_proxy_module.html), [Apache](https://httpd.apache.org/docs/current/mod/mod_proxy_http.html), [Caddy](https://caddyserver.com/docs/quick-starts/reverse-proxy), [HAProxy](https://www.haproxy.org/) or [relayd](https://man.openbsd.org/relayd.8) in front of Synapse. One advantage of doing so is that it means that you can expose the default https port (443) to Matrix clients without needing to run Synapse with root privileges. For information on configuring one, see [the reverse proxy docs](https://matrix-org.github.io/synapse/latest/reverse_proxy.html). - - - -### [Upgrading an existing Synapse](#id3) - -The instructions for upgrading Synapse are in [the upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade.html). Please check these instructions as upgrading may require extra steps for some versions of Synapse. - - - -### [Platform dependencies](#id4) - -Synapse uses a number of platform dependencies such as Python and PostgreSQL, and aims to follow supported upstream versions. See the [deprecation policy](https://matrix-org.github.io/synapse/latest/deprecation_policy.html) for more details. - - - -### [Security note](#id5) - -Matrix serves raw, user-supplied data in some APIs -- specifically the [content repository endpoints](https://matrix.org/docs/spec/client_server/latest.html#get-matrix-media-r0-download-servername-mediaid). - -Whilst we make a reasonable effort to mitigate against XSS attacks (for instance, by using [CSP](https://github.com/matrix-org/synapse/pull/1021)), a Matrix homeserver should not be hosted on a domain hosting other web applications. This especially applies to sharing the domain with Matrix web clients and other sensitive applications like webmail. See https://developer.github.com/changes/2014-04-25-user-content-security for more information. - -Ideally, the homeserver should not simply be on a different subdomain, but on a completely different [registered domain](https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03#section-2.3) (also known as top-level site or eTLD+1). This is because [some attacks](https://en.wikipedia.org/wiki/Session_fixation#Attacks_using_cross-subdomain_cookie) are still possible as long as the two applications share the same registered domain. - -To illustrate this with an example, if your Element Web or other sensitive web application is hosted on `A.example1.com`, you should ideally host Synapse on `example2.com`. Some amount of protection is offered by hosting on `B.example1.com` instead, so this is also acceptable in some scenarios. However, you should *not* host your Synapse on `A.example1.com`. - -Note that all of the above refers exclusively to the domain used in Synapse's `public_baseurl` setting. In particular, it has no bearing on the domain mentioned in MXIDs hosted on that server. - -Following this advice ensures that even if an XSS is found in Synapse, the impact to other applications will be minimal. - - - -## [Testing a new installation](#id6) - -The easiest way to try out your new Synapse installation is by connecting to it from a web client. - -Unless you are running a test instance of Synapse on your local machine, in general, you will need to enable TLS support before you can successfully connect from a client: see [TLS certificates](https://matrix-org.github.io/synapse/latest/setup/installation.html#tls-certificates). - -An easy way to get started is to login or register via Element at https://app.element.io/#/login or https://app.element.io/#/register respectively. You will need to change the server you are logging into from `matrix.org` and instead specify a Homeserver URL of `https://:8448` (or just `https://` if you are using a reverse proxy). If you prefer to use another client, refer to our [client breakdown](https://matrix.org/docs/projects/clients-matrix). - -If all goes well you should at least be able to log in, create a room, and start sending messages. - - - -### [Registering a new user from a client](#id7) - -By default, registration of new users via Matrix clients is disabled. To enable it: - -1. In the [registration config section](https://matrix-org.github.io/synapse/latest/usage/configuration/config_documentation.html#registration) set `enable_registration: true` in `homeserver.yaml`. -2. Then **either**: - 1. set up a [CAPTCHA](https://matrix-org.github.io/synapse/latest/CAPTCHA_SETUP.html), or - 2. set `enable_registration_without_verification: true` in `homeserver.yaml`. - -We **strongly** recommend using a CAPTCHA, particularly if your homeserver is exposed to the public internet. Without it, anyone can freely register accounts on your homeserver. This can be exploited by attackers to create spambots targetting the rest of the Matrix federation. - -Your new user name will be formed partly from the `server_name`, and partly from a localpart you specify when you create the account. Your name will take the form of: - -@localpart:my.domain.name - -(pronounced "at localpart on my dot domain dot name"). - -As when logging in, you will need to specify a "Custom server". Specify your desired `localpart` in the 'User name' box. - - - -## [Troubleshooting and support](#id8) - -The [Admin FAQ](https://matrix-org.github.io/synapse/latest/usage/administration/admin_faq.html) includes tips on dealing with some common problems. For more details, see [Synapse's wider documentation](https://matrix-org.github.io/synapse/latest/). - -For additional support installing or managing Synapse, please ask in the community support room [`#synapse:matrix.org`](https://matrix.to/#/#synapse:matrix.org) (from a [matrix.org](https://github.com/matrix-org/matrix.org) account if necessary). We do not use GitHub issues for support requests, only for bug reports and feature requests. - - - -## [Identity Servers](#id9) - -Identity servers have the job of mapping email addresses and other 3rd Party IDs (3PIDs) to Matrix user IDs, as well as verifying the ownership of 3PIDs before creating that mapping. - -**They are not where accounts or credentials are stored - these live on home servers. Identity Servers are just for mapping 3rd party IDs to matrix IDs.** - -This process is very security-sensitive, as there is obvious risk of spam if it is too easy to sign up for Matrix accounts or harvest 3PID data. In the longer term, we hope to create a decentralised system to manage it ([matrix-doc #712](https://github.com/matrix-org/matrix-doc/issues/712)), but in the meantime, the role of managing trusted identity in the Matrix ecosystem is farmed out to a cluster of known trusted ecosystem partners, who run 'Matrix Identity Servers' such as [Sydent](https://github.com/matrix-org/sydent), whose role is purely to authenticate and track 3PID logins and publish end-user public keys. - -You can host your own copy of Sydent, but this will prevent you reaching other users in the Matrix ecosystem via their email address, and prevent them finding you. We therefore recommend that you use one of the centralised identity servers at `https://matrix.org` or `https://vector.im` for now. - -To reiterate: the Identity server will only be used if you choose to associate an email address with your account, or send an invite to another user via their email address. - - - -## [Development](#id10) - -We welcome contributions to Synapse from the community! The best place to get started is our [guide for contributors](https://matrix-org.github.io/synapse/latest/development/contributing_guide.html). This is part of our larger [documentation](https://matrix-org.github.io/synapse/latest), which includes - -information for Synapse developers as well as Synapse administrators. Developers might be particularly interested in: - -- [Synapse's database schema](https://matrix-org.github.io/synapse/latest/development/database_schema.html), -- [notes on Synapse's implementation details](https://matrix-org.github.io/synapse/latest/development/internal_documentation/index.html), and -- [how we use git](https://matrix-org.github.io/synapse/latest/development/git.html). - -Alongside all that, join our developer community on Matrix: [#synapse-dev:matrix.org](https://matrix.to/#/#synapse-dev:matrix.org), featuring real humans! diff --git a/apps/synapse/data.yml b/apps/synapse/data.yml deleted file mode 100644 index 66714de9..00000000 --- a/apps/synapse/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Synapse -tags: - - 工具 -title: Synapse是一个开源的Matrix家庭服务器,自建聊天服务端 -description: Synapse是一个开源的Matrix家庭服务器,自建聊天服务端 -additionalProperties: - key: synapse - name: Synapse - tags: - - Tool - shortDescZh: Synapse是一个开源的Matrix家庭服务器,自建聊天服务端 - shortDescEn: Synapse is an open-source Matrix homeserver,build your own chat server - type: tool - crossVersionUpdate: true - limit: 1 - recommend: 0 - website: https://matrix.org/docs/projects/server/synapse - github: https://github.com/matrix-org/synapse - document: https://matrix-org.github.io/synapse/latest/ diff --git a/apps/synapse/latest/.env.sample b/apps/synapse/latest/.env.sample deleted file mode 100644 index 0ef69a4b..00000000 --- a/apps/synapse/latest/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="synapse" -PANEL_APP_PORT_HTTP="40026" diff --git a/apps/synapse/latest/data.yml b/apps/synapse/latest/data.yml deleted file mode 100644 index 045af699..00000000 --- a/apps/synapse/latest/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40026 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/synapse/latest/docker-compose.yml b/apps/synapse/latest/docker-compose.yml deleted file mode 100644 index 5f97e056..00000000 --- a/apps/synapse/latest/docker-compose.yml +++ /dev/null @@ -1,29 +0,0 @@ -services: - synapse: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - volumes: - - synapse-data:/data - ports: - - "${PANEL_APP_PORT_HTTP}:8008" - environment: - - TZ=Asia/Shanghai - - UID=1000 - - GID=1000 - image: matrixdotorg/synapse:latest - logging: - options: - max-size: "10m" - command: run -m synapse.app.homeserver --config-path=/data/homeserver.yaml - labels: - createdBy: "Apps" - -volumes: - synapse-data: - external: true - -networks: - 1panel-network: - external: true diff --git a/apps/synapse/logo.png b/apps/synapse/logo.png deleted file mode 100644 index b4b6d4fc11a9605535b012d5a76fcf65211dcfdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2949 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 nD7`bhGV|i!hW-A-s51xjmcp!)y#wzKxf](https://flathub.org/apps/details/com.github.zadam.trilium) - -## 文档 - -[有关文档页面的完整列表,请参见 Wiki。](https://github.com/zadam/trilium/wiki/) - -* [Wiki 的中文翻译版本](https://github.com/baddate/trilium/wiki/) - -您还可以阅读[个人知识库模式](https://github.com/zadam/trilium/wiki/Patterns-of-personal-knowledge-base),以获取有关如何使用 Trilium 的灵感。 - -## 贡献 - -使用基于浏览器的开发环境 - -[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/zadam/trilium) - -或者克隆本仓库到本地,并运行 - -``` -npm install -npm run start-server -``` - -## 致谢 - -* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - 市面上最好的所见即所得编辑器,拥有互动性强且聆听能力强的团队 -* [FancyTree](https://github.com/mar10/fancytree) - 一个非常丰富的关于树的库,强大到没有对手。没有它,Trilium Notes 将不会如此。 -* [CodeMirror](https://github.com/codemirror/CodeMirror) - 支持大量语言的代码编辑器 -* [jsPlumb](https://github.com/jsplumb/jsplumb) - 强大的可视化连接库。用于[关系图](https://github.com/zadam/trilium/wiki/Relation-map)和[链接图](https://github.com/zadam/trilium/wiki/Link-map) - -## 捐赠 - -你可以通过 GitHub Sponsors,[PayPal](https://paypal.me/za4am) 或者比特币 (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2) 来捐赠。 - -## 许可证 - -本程序是自由软件:你可以再发布本软件和/或修改本软件,只要你遵循 Free Software Foundation 发布的 GNU Affero General Public License 的第三版或者任何(由你选择)更晚的版本。 \ No newline at end of file diff --git a/apps/trilium/data.yml b/apps/trilium/data.yml deleted file mode 100644 index 03c74200..00000000 --- a/apps/trilium/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Trilium Notes -tags: - - 工具 -title: 一个层次化的笔记应用程序,专注于建立大型个人知识库 -description: 一个层次化的笔记应用程序,专注于建立大型个人知识库 -additionalProperties: - key: trilium - name: Trilium Notes - tags: - - Tool - shortDescZh: 一个层次化的笔记应用程序,专注于建立大型个人知识库 - shortDescEn: A hierarchical note taking application with focus on building large personal knowledge bases - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://github.com/zadam/trilium - github: https://github.com/zadam/trilium - document: https://github.com/zadam/trilium/wiki diff --git a/apps/trilium/latest/.env.sample b/apps/trilium/latest/.env.sample deleted file mode 100644 index 7110dc4c..00000000 --- a/apps/trilium/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="trilium" -PANEL_APP_PORT_HTTP="40172" -DATA_PATH="./data" diff --git a/apps/trilium/latest/data.yml b/apps/trilium/latest/data.yml deleted file mode 100644 index cb83282e..00000000 --- a/apps/trilium/latest/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40172 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/trilium/latest/docker-compose.yml b/apps/trilium/latest/docker-compose.yml deleted file mode 100644 index a655d8bc..00000000 --- a/apps/trilium/latest/docker-compose.yml +++ /dev/null @@ -1,18 +0,0 @@ -services: - trilium: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8080" - volumes: - - "${DATA_PATH}:/home/node/trilium-data" - tty: true - image: zadam/trilium:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/trilium/logo.png b/apps/trilium/logo.png deleted file mode 100644 index 1846fa0f8470a0af28b5ebbb2749b8d61215d991..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4890 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 Q{~ke8QP2cc%e@WxKR?V#U;qFB diff --git a/apps/twikoo/README.md b/apps/twikoo/README.md deleted file mode 100644 index edb4f2e6..00000000 --- a/apps/twikoo/README.md +++ /dev/null @@ -1,137 +0,0 @@ -Twikoo - ----- - -[![](https://img.shields.io/npm/v/twikoo)](https://www.npmjs.com/package/twikoo) -[![](https://img.shields.io/bundlephobia/minzip/twikoo)](https://bundlephobia.com/result?p=twikoo) -[![](https://img.shields.io/npm/dt/twikoo)](https://www.npmjs.com/package/twikoo) -[![](https://data.jsdelivr.com/v1/package/npm/twikoo/badge)](https://www.jsdelivr.com/package/npm/twikoo) -[![](https://img.shields.io/npm/l/twikoo)](./LICENSE) - -一个**简洁**、**安全**、**免费**的静态网站评论系统。
-A **simple**, **safe**, **free** comment system. -**简体中文** - -## 特色 | Features - -
-点击展开 - -### 简单 - -* 免费搭建(使用云开发 / Vercel / 私有部署评论后台) -* 简单部署(支持云开发 / Vercel 一键部署) - -### 易用 - -* 支持回复、点赞 -* 无需额外适配,支持搭配浅色主题与深色主题使用 -* 支持 API 调用,批量获取文章评论数、最新评论 -* 访客在昵称栏输入 QQ 号,会自动补全 QQ 昵称和 QQ 邮箱 -* 访客填写数字 QQ 邮箱,会使用 QQ 头像作为评论头像 -* 支持评论框粘贴图片(可禁用) -* 支持插入图片(可禁用) -* 支持去不图床、云开发图床 -* 支持插入表情(可禁用) -* 支持 Ctrl + Enter 快捷回复 -* 评论框内容实时保存草稿,刷新不会丢失 -* [支持 Katex 公式](https://twikoo.js.org/faq.html#%E5%A6%82%E4%BD%95%E5%90%AF%E7%94%A8-katex-%E6%94%AF%E6%8C%81) -* 支持按语言的代码高亮 - -### 安全 - -* 隐私信息安全(通过云函数控制敏感字段(邮箱、IP、环境配置等)不会泄露) -* 支持 Akismet 垃圾评论检测(需自行注册 [akismet.com](https://akismet.com/)) -* 支持腾讯云内容安全垃圾评论检测(需自行注册 [腾讯云内容安全](https://console.cloud.tencent.com/cms/text/overview)) -* 支持人工审核模式 -* 防 XSS 注入 -* 支持限制每个 IP 每 10 分钟最多发表多少条评论 - -### 即时 - -* 支持邮件提醒(访客和博主) -* 支持微信提醒(仅针对博主,基于 [Server酱](https://sc.ftqq.com/3.version),需自行注册) -* 支持 QQ 提醒(仅针对博主,基于 [Qmsg酱](https://qmsg.zendee.cn/),需自行注册) - -### 个性 - -* 支持自定义评论框背景图片 -* 支持自定义“博主”标识文字 -* 支持自定义通知邮件模板 -* 支持自定义评论框提示信息(placeholder) -* 支持自定义表情列表(兼容 [OwO 的数据格式](https://cdn.jsdelivr.net/npm/owo@1.0.2/demo/OwO.json)) -* 支持自定义【昵称】【邮箱】【网址】必填 / 选填 -* 支持自定义代码高亮主题 - -### 便捷管理 - -* 内嵌式管理面板,通过密码登录,可方便地查看评论、隐藏评论、删除评论、修改配置 -* 支持隐藏管理入口,通过输入暗号显示 -* 支持从 Valine、Artalk、Disqus 导入评论 - -### 缺点 - -* 不支持 IE - -
- -## 预览 | Preview - -
-点击展开 - -### 评论 - -![评论](https://github.com/imaegoo/twikoo/raw/main/docs/static/readme-1.png) - -### 评论管理 - -![评论管理](https://github.com/imaegoo/twikoo/raw/main/docs/static/readme-2.png) - -### 推送通知 - -![推送通知](https://github.com/imaegoo/twikoo/raw/main/docs/static/readme-3.jpg) - -
- -## 快速上手 | Quick Start - -有关详细教程,请查看[快速上手](https://twikoo.js.org/quick-start.html) - -
-如果你想获取更新动态、建言献策、参与测试,欢迎加入讨论群:1080829142 -1080829142 -
- - - -## 特别感谢 | Special Thanks - -图标设计:[Maemo Lee](https://www.maemo.cc) - - - -## 开发 | Development - -如果您想在本地二次开发,可以参考以下命令: - -``` sh -yarn dev # 开发 (http://localhost:9820/demo.html) -yarn lint # 代码检查 -yarn build # 编译 (dist/twikoo.all.min.js) -``` - -如果您的改动能够帮助到更多人,欢迎提交 Pull Request! - -## 国际化 | I18N - -支持简体中文、繁体中文、English。欢迎[提交翻译 PR](https://github.com/imaegoo/twikoo/edit/main/src/client/utils/i18n/i18n.js)。 - -## 许可 | License - -
-MIT License - -[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fimaegoo%2Ftwikoo.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fimaegoo%2Ftwikoo?ref=badge_large) - -
\ No newline at end of file diff --git a/apps/twikoo/arm32v7/.env.sample b/apps/twikoo/arm32v7/.env.sample deleted file mode 100644 index 983eeae1..00000000 --- a/apps/twikoo/arm32v7/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="twikoo" -PANEL_APP_PORT_HTTP="40063" -DATA_PATH="./data" diff --git a/apps/twikoo/arm32v7/data.yml b/apps/twikoo/arm32v7/data.yml deleted file mode 100644 index d15535f1..00000000 --- a/apps/twikoo/arm32v7/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40063 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/twikoo/arm32v7/docker-compose.yml b/apps/twikoo/arm32v7/docker-compose.yml deleted file mode 100644 index cc974155..00000000 --- a/apps/twikoo/arm32v7/docker-compose.yml +++ /dev/null @@ -1,20 +0,0 @@ -services: - twikoo: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8080" - volumes: - - "${DATA_PATH}:/app/data" - environment: - - "TWIKOO_THROTTLE=1000" - - "TWIKOO_PORT=8080" - image: imaegoo/twikoo:arm32v7 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/twikoo/data.yml b/apps/twikoo/data.yml deleted file mode 100644 index d98de899..00000000 --- a/apps/twikoo/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Twikoo -tags: - - 工具 -title: 一个简洁、安全、免费的静态网站评论系统 -description: 一个简洁、安全、免费的静态网站评论系统 -additionalProperties: - key: twikoo - name: Twikoo - tags: - - Tool - shortDescZh: 一个简洁、安全、免费的静态网站评论系统 - shortDescEn: A simple, safe, free comment system - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://twikoo.js.org - github: https://github.com/imaegoo/twikoo - document: https://twikoo.js.org diff --git a/apps/twikoo/latest/.env.sample b/apps/twikoo/latest/.env.sample deleted file mode 100644 index 983eeae1..00000000 --- a/apps/twikoo/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="twikoo" -PANEL_APP_PORT_HTTP="40063" -DATA_PATH="./data" diff --git a/apps/twikoo/latest/data.yml b/apps/twikoo/latest/data.yml deleted file mode 100644 index d15535f1..00000000 --- a/apps/twikoo/latest/data.yml +++ /dev/null @@ -1,17 +0,0 @@ -additionalProperties: - formFields: - - default: 40063 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text diff --git a/apps/twikoo/latest/docker-compose.yml b/apps/twikoo/latest/docker-compose.yml deleted file mode 100644 index daeba33a..00000000 --- a/apps/twikoo/latest/docker-compose.yml +++ /dev/null @@ -1,20 +0,0 @@ -services: - twikoo: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8080" - volumes: - - "${DATA_PATH}:/app/data" - environment: - - "TWIKOO_THROTTLE=1000" - - "TWIKOO_PORT=8080" - image: imaegoo/twikoo:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/twikoo/logo.png b/apps/twikoo/logo.png deleted file mode 100644 index 66bb11849557ceff4b309c30179b8500a3779f13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3268 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 diff --git a/apps/uuwaf/6.2.0/.env.sample b/apps/uuwaf/6.2.0/.env.sample deleted file mode 100644 index 3184a321..00000000 --- a/apps/uuwaf/6.2.0/.env.sample +++ /dev/null @@ -1,7 +0,0 @@ -CONTAINER_NAME="uuwaf" -MYSQL_MAX_CONNECTIONS=512 -PANEL_APP_PORT_CONSOLE=4443 -PANEL_APP_PORT_HTTP=80 -PANEL_APP_PORT_HTTPS=443 -PANEL_DB_USER_PASSWORD="Safe3.WAF" -TIME_ZONE="Asia/Shanghai" diff --git a/apps/uuwaf/6.2.0/data.yml b/apps/uuwaf/6.2.0/data.yml deleted file mode 100644 index 8eb6fdc0..00000000 --- a/apps/uuwaf/6.2.0/data.yml +++ /dev/null @@ -1,47 +0,0 @@ -additionalProperties: - formFields: - - default: "80" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: HTTP Port - labelZh: HTTP 端口 - required: true - rule: paramPort - type: number - - default: "443" - edit: true - envKey: PANEL_APP_PORT_HTTPS - labelEn: HTTPS Port - labelZh: HTTPS 端口 - required: true - rule: paramPort - type: number - - default: "4443" - edit: true - envKey: PANEL_APP_PORT_CONSOLE - labelEn: Console Port - labelZh: 控制台端口 - required: true - rule: paramPort - type: number - - default: "Asia/Shanghai" - edit: true - envKey: TIME_ZONE - labelEn: Time zone - labelZh: 时区 - required: true - type: text - - default: "Safe3.WAF" - envKey: PANEL_DB_USER_PASSWORD - labelEn: Password - labelZh: 数据库用户密码 - required: true - rule: paramComplexity - type: password - - default: "512" - edit: true - envKey: MYSQL_MAX_CONNECTIONS - labelEn: MySQL Max Connections - labelZh: 数据库最大连接数 - required: true - type: number diff --git a/apps/uuwaf/6.2.0/docker-compose.yml b/apps/uuwaf/6.2.0/docker-compose.yml deleted file mode 100644 index 27f87c81..00000000 --- a/apps/uuwaf/6.2.0/docker-compose.yml +++ /dev/null @@ -1,58 +0,0 @@ -services: - uuwaf: - image: "uusec/nanqiang:v6.2.0" - ulimits: - nproc: 65535 - nofile: - soft: 102400 - hard: 102400 - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - ${PANEL_APP_PORT_HTTP}:80 - - ${PANEL_APP_PORT_HTTPS}:443 - - ${PANEL_APP_PORT_CONSOLE}:4443 - volumes: - - wafshared:/uuwaf - - /etc/localtime:/etc/localtime:ro - command: ["/run.sh"] - environment: - - TZ=${TIME_ZONE} - - UUWAF_MYSQL_PASSWORD=${PANEL_DB_USER_PASSWORD} - links: - - wafdb - depends_on: - wafdb: - condition: service_healthy - wafdb: - image: "percona/percona-server:5.7.44" - container_name: ${CONTAINER_NAME}-db - restart: always - networks: - - 1panel-network - volumes: - - wafshared:/docker-entrypoint-initdb.d - - wafdata:/var/lib/mysql - - /etc/localtime:/etc/localtime:ro - - ./low-memory-my.cnf:/etc/mysql/my.cnf - environment: - - TZ=${TIME_ZONE} - - INIT_ROCKSDB - - MYSQL_MAX_CONNECTIONS=${MYSQL_MAX_CONNECTIONS} - - MYSQL_ROOT_PASSWORD=${PANEL_DB_USER_PASSWORD} - healthcheck: - test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"] - start_period: 3s - interval: 5s - timeout: 3s - retries: 7 -volumes: - wafshared: - name: wafshared - wafdata: - name: wafdata -networks: - 1panel-network: - external: true diff --git a/apps/uuwaf/6.2.0/low-memory-my.cnf b/apps/uuwaf/6.2.0/low-memory-my.cnf deleted file mode 100644 index 0ef74b63..00000000 --- a/apps/uuwaf/6.2.0/low-memory-my.cnf +++ /dev/null @@ -1,63 +0,0 @@ -# For advice on how to change settings please see -# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html - -[mysqld] -# -# Remove leading # and set to the amount of RAM for the most important data -# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. -# innodb_buffer_pool_size = 128M -# -# Remove leading # to turn on a very important data integrity option: logging -# changes to the binary log between backups. -# log_bin -# -# Remove leading # to set options mainly useful for reporting servers. -# The server defaults are faster for transactions and fast SELECTs. -# Adjust sizes as needed, experiment to find the optimal values. -# join_buffer_size = 128M -# sort_buffer_size = 2M -# read_rnd_buffer_size = 2M -skip-host-cache -skip-name-resolve -datadir=/var/lib/mysql -socket=/var/lib/mysql/mysql.sock -secure-file-priv=/var/lib/mysql-files -user=mysql - -# Disabling symbolic-links is recommended to prevent assorted security risks -symbolic-links=0 - -log-error=/var/log/mysqld.log -pid-file=/var/run/mysqld/mysqld.pid - - -#### These optimize the memory use of MySQL -#### http://www.tocker.ca/2014/03/10/configuring-mysql-to-use-minimal-memory.html -innodb_buffer_pool_size=5M -innodb_log_buffer_size=256K -query_cache_size=0 -max_connections=10 -key_buffer_size=8 -thread_cache_size=0 -host_cache_size=0 -innodb_ft_cache_size=1600000 -innodb_ft_total_cache_size=32000000 - -# per thread or per operation settings -thread_stack=131072 -sort_buffer_size=32K -read_buffer_size=8200 -read_rnd_buffer_size=8200 -max_heap_table_size=16K -tmp_table_size=1K -bulk_insert_buffer_size=0 -join_buffer_size=128 -net_buffer_length=1K -innodb_sort_buffer_size=64K - -#settings that relate to the binary log (if enabled) -binlog_cache_size=4K -binlog_stmt_cache_size=4K - -#### from https://mariadb.com/de/node/579 -performance_schema = off \ No newline at end of file diff --git a/apps/uuwaf/6.2.0/scripts/uninstall.sh b/apps/uuwaf/6.2.0/scripts/uninstall.sh deleted file mode 100644 index 1a62d5e5..00000000 --- a/apps/uuwaf/6.2.0/scripts/uninstall.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -docker-compose down --volumes \ No newline at end of file diff --git a/apps/uuwaf/README.md b/apps/uuwaf/README.md deleted file mode 100644 index dd75770d..00000000 --- a/apps/uuwaf/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# 南墙 - -**南墙** WEB 应用防火墙(简称:`uuWAF`)一款社区驱动的免费、高性能、高扩展顶级 Web 应用安全防护产品。 - -## **技术优势** - -- 先进语义引擎 - - 南墙采用业界领先的 `SQL、XSS、RCE、LFI` 4种基于语义分析的检测引擎,结合多种深度解码引擎可对 `base64、json、form-data` 等 HTTP 内容真实还原,从而有效抵御各种绕过 WAF 的攻击方式,并且相比传统正则匹配具备准确率高、误报率低、效率高等特点,管理员无需维护庞杂的规则库,即可拦截多种攻击类型。 - -- **智能 0day 防御** - - 南墙创新性的运用机器学习技术,使用**异常检测算法**对 http 正常与攻击流量进行区分识别,并对正常流量进行白名单威胁建模。通过**机器学习算法**自动学习正常流量中的参数特征,并转化成对应的参数白名单规则库,可以在面对各种突发 0day 漏洞时,无需添加规则即可拦截攻击,免除网站管理者一出现漏洞就需挑灯夜战升级的痛苦。 - -- **高级规则引擎** - - 南墙积极运用 `nginx` 和 `luajit` 的高性能、高灵活性特点,除了提供对普通用户友好性较好的传统规则创建模式,还提供了高扩展性、高灵活性的 lua 脚本规则编写功能,使得有一定编程功底的高级安全管理员可以创造出一系列传统 WAF 所不能实现的高级漏洞防护规则,用户可以编写一系列插件来扩展 WAF 现有功能。从而使得在拦截一些复杂漏洞时,可以更加得心应手。 - - -## 使用 - -1. 登录后台,访问https://wafip:4443 ,wafip为安装南墙的服务器ip,用户名`admin`,密码`Passw0rd!` -2. 添加站点,进入站点管理菜单,点击添加站点按钮,按提示添加站点域名与网站服务器ip -3. 添加证书,进入证书管理菜单,点击添加证书按钮,上传第二步中域名的https证书和私钥文件 -4. 将域名DNS的ip指向改为南墙服务器ip地址 -5. 访问站点域名查看网站是否能够访问 \ No newline at end of file diff --git a/apps/uuwaf/data.yml b/apps/uuwaf/data.yml deleted file mode 100644 index 4c09d8e6..00000000 --- a/apps/uuwaf/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: uuWAF -tags: - - 安全 -title: 南墙 WEB 应用防火墙 -description: 南墙 WEB 应用防火墙 -additionalProperties: - key: uuwaf - name: uuWAF - tags: - - Security - shortDescZh: 南墙 WEB 应用防火墙 - shortDescEn: NanQiang Web Application Firewall - type: tool - crossVersionUpdate: true - limit: 1 - recommend: 0 - website: https://waf.uusec.com/#/ - github: https://github.com/Safe3/uuWAF - document: https://waf.uusec.com/#/?id=main diff --git a/apps/uuwaf/logo.png b/apps/uuwaf/logo.png deleted file mode 100644 index f82ea82fde288ed28b6815e33782438593b69256..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1765 zcmVPx#`n(M9{KD*L@d{;U)JvJum#QTVr4 z_`G8Oy$kxZM*g=E`lT!Su}=M~82q{?{JA{+qZIkMT>rre`p9|wrXc#RNc*WL4$(#a zz#aRpJo}&={H!AXz!dweEBm})`?Wj&$p#M5MgPSG4$(#Xrz`%m7yH9*{>2Oq(M1l? zMgPPJ`=1#9#tHt$4*$sm{jnbo(M9{ED*m(@4$(#azZ3t!6Z@kf`m;(7(MA8p3H-1w z`?fy)!W<6KMGnzL`nqBM#0w75MGnzL4$(yp(MA8r4E@Fn4$(#b#s&Vk4sox%&Hw-a zNpw<9QvePYn-u;20R##DE%In4?>HU&Li!%mU9#ChQsc$&LR1|MM=E2$6WbzVrA&bmuTTbI$B6hFvmTH7J&40d}JSE0W;<@W(KB z!5h3p!J8uh5P$Z(Mfg7u0Po3Woxd4?h1!@dcrJU}>shKH`ZP`71OO$+5(7I%{&HPK z*`V-iQ2<1xlSFc4mbx@U(}iV7NexM*t`5U6C@CTE~6t)Zp&?u>2Yi~*hCZH z8h;E?r^_JEYG?XTM)ol6R0V%HB+0rcv44vnV`o#E*>0+SS)mRuWGSWW3rRf+B~oE8 z5*MSyF|*~Wedh=Lq0_IToG^4rWG{qIxxT=0y6@yHVjW-Ka17lQ;V%#XSI8J`zE{S7 zX)opKM&HsUOUg|q;Oi!>>w}K-Yp&U5Z^I!3G4~A;Dbw4*rgKrcN(b$tu*_Qn-FYF2 zU%6Z-rMKDAo|Y3NPs+%@+WZ?)n$-;xN9TKhqKW(m<-c>SJm3UU%C=fWKb4db?fon= z(YkwleSLkLe7v7T-ZGNRE2oQ(VZd*y3ymEyxN| z4qT7X2mLfdh}zLTvAa|;`?_ogQR5f`;8ELVEpt2QC>j5+uY3Sh%h-;>Mra%Wt&s(x z<#B`0bO85z$6~Ekd#Yps;KO)DQQ@<6cnnO$Zr9VR>(rw5E`Z8}XoEJu4Ot`PcM$_jnV06n$k(T71;6b9KuYN; zRgt6$Ag>t!OMV7YFqZ{=@CnW$D7NxNH5{W|Hx?EP_Gx2hL97qT={4>5eGc!4JcLLv zMcy*&s81fbwC+^@WY!$2@bxr#JE!+rpk>pPN%#$bQNvCa;KYOC;~7L#K>e}nt&Uqr zAlCj5A-GH?epAC$)Tr~o<{cHSeJUy+SVoU@ zp*uQh&j?7;6JDrX))4P!a-?1uxzx4!)UmTH$xJWZPTItG=_WgXN$O80j?wrLq>2C) zbS4PthDg-z54#4hJAhOcK@i(+z0Rkp54903Ox27Q-tSrjL9`xsm8hIl0aV)*wMfgP z40V-Qj#G8miK$Y2dO8%cmLfuA+L{(-Ge)_tOA4osa8Tokiz!*o#%7=;QqCL;288Z- zd#Yp>;Hj0?a$){#@jv8&9$DU|PX|-`qgLEUU#YxL(kyDqU3>AIS8}Q@Z#%P8AzSx% zlgZsji@;L-Xx1roZF1o@a!$9v9CJRE8h3J-N%fi) z?)7^8X6^`sJETnp;@+J6*%<=WjmT*~P|hwnP>F_ti|$X5g^A@)YG60(NlMiJY^tdx ztlAusD}LX@!0vPTqC`3U-pfO|>C9A>ch=>Hmw3EVuN>IXyrJ^iP~ZlGYOnM1(&<%o zT^GESWT^O+0Fq{rC0R&p?8nI$*{i$P0_-M!Nkdnj`P?2l=! - # scriptsBodyAfter: - # - '' - # HTML tags injected before ends - # metaScripts: - # - '' - # - '' - # - '' - # HTML tags injected first child at - # bodyBefore: - # - '
html before webpack scripts
' - # Public path for template manifest scripts (only manifest) - # publicPath: http://somedomain.org/ - -# https://verdaccio.org/docs/configuration#authentication -auth: - htpasswd: - file: /verdaccio/storage/htpasswd - # Maximum amount of users allowed to register, defaults to "+infinity". - # You can set this to -1 to disable registration. - # max_users: 1000 - # Hash algorithm, possible options are: "bcrypt", "md5", "sha1", "crypt". - # algorithm: bcrypt # by default is crypt, but is recommended use bcrypt for new installations - # Rounds number for "bcrypt", will be ignored for other algorithms. - # rounds: 10 - -# https://verdaccio.org/docs/configuration#uplinks -# a list of other known repositories we can talk to -uplinks: - npmjs: - url: https://registry.npmjs.org/ - -# Learn how to protect your packages -# https://verdaccio.org/docs/protect-your-dependencies/ -# https://verdaccio.org/docs/configuration#packages -packages: - '@*/*': - # scoped packages - access: $all - publish: $authenticated - unpublish: $authenticated - proxy: npmjs - - '**': - # allow all users (including non-authenticated users) to read and - # publish all packages - # - # you can specify usernames/groupnames (depending on your auth plugin) - # and three keywords: "$all", "$anonymous", "$authenticated" - access: $all - - # allow all known users to publish/publish packages - # (anyone can register by default, remember?) - publish: $authenticated - unpublish: $authenticated - - # if package is not available locally, proxy requests to 'npmjs' registry - proxy: npmjs - -# To improve your security configuration and avoid dependency confusion -# consider removing the proxy property for private packages -# https://verdaccio.org/docs/best#remove-proxy-to-increase-security-at-private-packages - -# https://verdaccio.org/docs/configuration#server -# You can specify HTTP/1.1 server keep alive timeout in seconds for incoming connections. -# A value of 0 makes the http server behave similarly to Node.js versions prior to 8.0.0, which did not have a keep-alive timeout. -# WORKAROUND: Through given configuration you can workaround following issue https://github.com/verdaccio/verdaccio/issues/301. Set to 0 in case 60 is not enough. -server: - keepAliveTimeout: 60 - # Allow `req.ip` to resolve properly when Verdaccio is behind a proxy or load-balancer - # See: https://expressjs.com/en/guide/behind-proxies.html - # trustProxy: '127.0.0.1' - -# https://verdaccio.org/docs/configuration#offline-publish -# publish: -# allow_offline: false - -# https://verdaccio.org/docs/configuration#url-prefix -# url_prefix: /verdaccio/ -# VERDACCIO_PUBLIC_URL='https://somedomain.org'; -# url_prefix: '/my_prefix' -# // url -> https://somedomain.org/my_prefix/ -# VERDACCIO_PUBLIC_URL='https://somedomain.org'; -# url_prefix: '/' -# // url -> https://somedomain.org/ -# VERDACCIO_PUBLIC_URL='https://somedomain.org/first_prefix'; -# url_prefix: '/second_prefix' -# // url -> https://somedomain.org/second_prefix/' - -# https://verdaccio.org/docs/configuration#security -# security: -# api: -# legacy: true -# # recomended set to true for older installations -# migrateToSecureLegacySignature: true -# jwt: -# sign: -# expiresIn: 29d -# verify: -# someProp: [value] -# web: -# sign: -# expiresIn: 1h # 1 hour by default -# verify: -# someProp: [value] - -# https://verdaccio.org/docs/configuration#user-rate-limit -# userRateLimit: -# windowMs: 50000 -# max: 1000 - -# https://verdaccio.org/docs/configuration#max-body-size -# max_body_size: 10mb - -# https://verdaccio.org/docs/configuration#listen-port -# listen: -# - localhost:4873 # default value -# - http://localhost:4873 # same thing -# - 0.0.0.0:4873 # listen on all addresses (INADDR_ANY) -# - https://example.org:4873 # if you want to use https -# - "[::1]:4873" # ipv6 -# - unix:/tmp/verdaccio.sock # unix socket - -# The HTTPS configuration is useful if you do not consider use a HTTP Proxy -# https://verdaccio.org/docs/configuration#https -# https: -# key: ./path/verdaccio-key.pem -# cert: ./path/verdaccio-cert.pem -# ca: ./path/verdaccio-csr.pem - -# https://verdaccio.org/docs/configuration#proxy -# http_proxy: http://something.local/ -# https_proxy: https://something.local/ - -# https://verdaccio.org/docs/configuration#notifications -# notify: -# method: POST -# headers: [{ "Content-Type": "application/json" }] -# endpoint: https://usagge.hipchat.com/v2/room/3729485/notification?auth_token=mySecretToken -# content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}' - -middlewares: - audit: - enabled: true - -# https://verdaccio.org/docs/logger -# log settings -log: { type: stdout, format: pretty, level: http } -#experiments: -# # support for npm token command -# token: false -# # enable tarball URL redirect for hosting tarball with a different server, the tarball_url_redirect can be a template string -# tarball_url_redirect: 'https://mycdn.com/verdaccio/${packageName}/${filename}' -# # the tarball_url_redirect can be a function, takes packageName and filename and returns the url, when working with a js configuration file -# tarball_url_redirect(packageName, filename) { -# const signedUrl = // generate a signed url -# return signedUrl; -# } - -# translate your registry, api i18n not available yet -# i18n: -# list of the available translations https://github.com/verdaccio/verdaccio/blob/master/packages/plugins/ui-theme/src/i18n/ABOUT_TRANSLATIONS.md -# web: en-US \ No newline at end of file diff --git a/apps/verdaccio/6.2.4/data/plugins/.gitkeep b/apps/verdaccio/6.2.4/data/plugins/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/verdaccio/6.2.4/data/storage/.gitkeep b/apps/verdaccio/6.2.4/data/storage/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/verdaccio/6.2.4/docker-compose.yml b/apps/verdaccio/6.2.4/docker-compose.yml deleted file mode 100644 index 0371ee67..00000000 --- a/apps/verdaccio/6.2.4/docker-compose.yml +++ /dev/null @@ -1,25 +0,0 @@ -services: - verdaccio: - image: "verdaccio/verdaccio:6.2.4" - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - environment: - - VERDACCIO_APPDIR=${VERDACCIO_APPDIR} - - VERDACCIO_USER_NAME=${VERDACCIO_USER_NAME} - - VERDACCIO_USER_UID=${VERDACCIO_USER_UID} - - VERDACCIO_PORT=${PANEL_APP_PORT_HTTP} - - VERDACCIO_PROTOCOL=${VERDACCIO_PROTOCOL} - ports: - - "${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP}" - volumes: - - ${STORAGE_PATH}:/verdaccio/storage - - ${CONFIG_PATH}:/verdaccio/conf - - ${PLUGINS_PATH}:/verdaccio/plugins - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/verdaccio/6.2.4/scripts/init.sh b/apps/verdaccio/6.2.4/scripts/init.sh deleted file mode 100644 index 44a563b2..00000000 --- a/apps/verdaccio/6.2.4/scripts/init.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -chown -R 10001:65533 data \ No newline at end of file diff --git a/apps/verdaccio/README.md b/apps/verdaccio/README.md deleted file mode 100644 index a92806e3..00000000 --- a/apps/verdaccio/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Verdaccio - -[Verdaccio](https://verdaccio.org/) 是一个简单的,**无需配置的本地私有 npm 注册表**。 -不需要整个数据库就可以开始使用!Verdaccio 开箱即用,**自带一个小型数据库**,并且可以代理其他注册表(例如 npmjs.org),在此过程中缓存下载的模块。 -对于那些希望扩展存储功能的人,Verdaccio **支持各种社区制作的插件,以连接到诸如亚马逊的 S3、谷歌云存储等服务**,或者创建您自己的插件。 - -[![verdaccio (latest)](https://img.shields.io/npm/v/verdaccio/latest.svg)](https://www.npmjs.com/package/verdaccio) -[![verdaccio (downloads)](https://img.shields.io/npm/dy/verdaccio.svg)](https://www.npmjs.com/package/verdaccio) -[![docker pulls](https://img.shields.io/docker/pulls/verdaccio/verdaccio.svg?maxAge=43200)](https://verdaccio.org/docs/en/docker.html) -[![backers](https://opencollective.com/verdaccio/tiers/backer/badge.svg?label=Backer&color=brightgreen)](https://opencollective.com/verdaccio) -[![stackshare](https://img.shields.io/badge/Follow%20on-StackShare-blue.svg?logo=stackshare&style=flat)](https://stackshare.io/verdaccio) - -[![discord](https://img.shields.io/discord/388674437219745793.svg)](http://chat.verdaccio.org/) -[![MIT](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/verdaccio/verdaccio/blob/master/LICENSE) -[![Crowdin](https://d322cqt584bo4o.cloudfront.net/verdaccio/localized.svg)](https://crowdin.com/project/verdaccio) - -[![Github](https://img.shields.io/github/stars/verdaccio/verdaccio.svg?style=social&label=Stars)](https://github.com/verdaccio/verdaccio/stargazers) \ No newline at end of file diff --git a/apps/verdaccio/data.yml b/apps/verdaccio/data.yml deleted file mode 100644 index 68abf5f6..00000000 --- a/apps/verdaccio/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Verdaccio -tags: - - DevOps -title: 本地私有 NPM 注册中心 -description: 本地私有 NPM 注册中心 -additionalProperties: - key: verdaccio - name: Verdaccio - tags: - - DevOps - shortDescZh: 本地私有 NPM 注册中心 - shortDescEn: local private NPM registry - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://verdaccio.org/ - github: https://github.com/verdaccio/verdaccio - document: https://verdaccio.org/docs/what-is-verdaccio diff --git a/apps/verdaccio/logo.png b/apps/verdaccio/logo.png deleted file mode 100644 index 1be3a3c2c926f966b14e0293c04126f341ea8656..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6802 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 AiU0rr diff --git a/apps/verdaccio/nightly-master/.env.sample b/apps/verdaccio/nightly-master/.env.sample deleted file mode 100644 index 260b7511..00000000 --- a/apps/verdaccio/nightly-master/.env.sample +++ /dev/null @@ -1,9 +0,0 @@ -CONFIG_PATH="./data/config" -CONTAINER_NAME="verdaccio" -PANEL_APP_PORT_HTTP=40087 -PLUGINS_PATH="./data/plugins" -STORAGE_PATH="./data/storage" -VERDACCIO_APPDIR="/opt/verdaccio" -VERDACCIO_PROTOCOL="http" -VERDACCIO_USER_NAME="verdaccio" -VERDACCIO_USER_UID=10001 diff --git a/apps/verdaccio/nightly-master/data.yml b/apps/verdaccio/nightly-master/data.yml deleted file mode 100644 index b924f406..00000000 --- a/apps/verdaccio/nightly-master/data.yml +++ /dev/null @@ -1,59 +0,0 @@ -additionalProperties: - formFields: - - default: "40087" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "./data/storage" - disabled: true - envKey: STORAGE_PATH - labelEn: Storage Path - labelZh: 存储路径 - required: true - type: text - - default: "./data/config" - disabled: true - envKey: CONFIG_PATH - labelEn: Config Path - labelZh: 配置路径 - required: true - type: text - - default: "./data/plugins" - disabled: true - envKey: PLUGINS_PATH - labelEn: Plugins Path - labelZh: 插件路径 - required: true - type: text - - default: "/opt/verdaccio" - disabled: true - envKey: VERDACCIO_APPDIR - labelEn: App Directory - labelZh: 应用目录 - required: true - type: text - - default: "verdaccio" - edit: true - envKey: VERDACCIO_USER_NAME - labelEn: User Name - labelZh: 用户名 - required: true - type: text - - default: "10001" - disabled: true - envKey: VERDACCIO_USER_UID - labelEn: User ID - labelZh: 用户 ID - required: true - type: number - - default: "http" - disabled: true - envKey: VERDACCIO_PROTOCOL - labelEn: Protocol - labelZh: 协议 - required: true - type: text diff --git a/apps/verdaccio/nightly-master/data/config/config.yaml b/apps/verdaccio/nightly-master/data/config/config.yaml deleted file mode 100644 index 8a82cff7..00000000 --- a/apps/verdaccio/nightly-master/data/config/config.yaml +++ /dev/null @@ -1,203 +0,0 @@ -# -# This is the default configuration file. It allows all users to do anything, -# please read carefully the documentation and best practices to -# improve security. -# -# Do not configure host and port under `listen` in this file -# as it will be ignored when using docker. -# see https://verdaccio.org/docs/en/docker#docker-and-custom-port-configuration -# -# Look here for more config file examples: -# https://github.com/verdaccio/verdaccio/tree/5.x/conf -# -# Read about the best practices -# https://verdaccio.org/docs/best - -# path to a directory with all packages -storage: /verdaccio/storage/data -# path to a directory with plugins to include -plugins: /verdaccio/plugins - -# https://verdaccio.org/docs/webui -web: - title: Verdaccio - # comment out to disable gravatar support - # gravatar: false - # by default packages are ordercer ascendant (asc|desc) - # sort_packages: asc - # convert your UI to the dark side - # darkMode: true - # html_cache: true - # by default all features are displayed - # login: true - # showInfo: true - # showSettings: true - # In combination with darkMode you can force specific theme - # showThemeSwitch: true - # showFooter: true - # showSearch: true - # showRaw: true - # showDownloadTarball: true - # HTML tags injected after manifest - # scriptsBodyAfter: - # - '' - # HTML tags injected before ends - # metaScripts: - # - '' - # - '' - # - '' - # HTML tags injected first child at - # bodyBefore: - # - '
html before webpack scripts
' - # Public path for template manifest scripts (only manifest) - # publicPath: http://somedomain.org/ - -# https://verdaccio.org/docs/configuration#authentication -auth: - htpasswd: - file: /verdaccio/storage/htpasswd - # Maximum amount of users allowed to register, defaults to "+infinity". - # You can set this to -1 to disable registration. - # max_users: 1000 - # Hash algorithm, possible options are: "bcrypt", "md5", "sha1", "crypt". - # algorithm: bcrypt # by default is crypt, but is recommended use bcrypt for new installations - # Rounds number for "bcrypt", will be ignored for other algorithms. - # rounds: 10 - -# https://verdaccio.org/docs/configuration#uplinks -# a list of other known repositories we can talk to -uplinks: - npmjs: - url: https://registry.npmjs.org/ - -# Learn how to protect your packages -# https://verdaccio.org/docs/protect-your-dependencies/ -# https://verdaccio.org/docs/configuration#packages -packages: - '@*/*': - # scoped packages - access: $all - publish: $authenticated - unpublish: $authenticated - proxy: npmjs - - '**': - # allow all users (including non-authenticated users) to read and - # publish all packages - # - # you can specify usernames/groupnames (depending on your auth plugin) - # and three keywords: "$all", "$anonymous", "$authenticated" - access: $all - - # allow all known users to publish/publish packages - # (anyone can register by default, remember?) - publish: $authenticated - unpublish: $authenticated - - # if package is not available locally, proxy requests to 'npmjs' registry - proxy: npmjs - -# To improve your security configuration and avoid dependency confusion -# consider removing the proxy property for private packages -# https://verdaccio.org/docs/best#remove-proxy-to-increase-security-at-private-packages - -# https://verdaccio.org/docs/configuration#server -# You can specify HTTP/1.1 server keep alive timeout in seconds for incoming connections. -# A value of 0 makes the http server behave similarly to Node.js versions prior to 8.0.0, which did not have a keep-alive timeout. -# WORKAROUND: Through given configuration you can workaround following issue https://github.com/verdaccio/verdaccio/issues/301. Set to 0 in case 60 is not enough. -server: - keepAliveTimeout: 60 - # Allow `req.ip` to resolve properly when Verdaccio is behind a proxy or load-balancer - # See: https://expressjs.com/en/guide/behind-proxies.html - # trustProxy: '127.0.0.1' - -# https://verdaccio.org/docs/configuration#offline-publish -# publish: -# allow_offline: false - -# https://verdaccio.org/docs/configuration#url-prefix -# url_prefix: /verdaccio/ -# VERDACCIO_PUBLIC_URL='https://somedomain.org'; -# url_prefix: '/my_prefix' -# // url -> https://somedomain.org/my_prefix/ -# VERDACCIO_PUBLIC_URL='https://somedomain.org'; -# url_prefix: '/' -# // url -> https://somedomain.org/ -# VERDACCIO_PUBLIC_URL='https://somedomain.org/first_prefix'; -# url_prefix: '/second_prefix' -# // url -> https://somedomain.org/second_prefix/' - -# https://verdaccio.org/docs/configuration#security -# security: -# api: -# legacy: true -# # recomended set to true for older installations -# migrateToSecureLegacySignature: true -# jwt: -# sign: -# expiresIn: 29d -# verify: -# someProp: [value] -# web: -# sign: -# expiresIn: 1h # 1 hour by default -# verify: -# someProp: [value] - -# https://verdaccio.org/docs/configuration#user-rate-limit -# userRateLimit: -# windowMs: 50000 -# max: 1000 - -# https://verdaccio.org/docs/configuration#max-body-size -# max_body_size: 10mb - -# https://verdaccio.org/docs/configuration#listen-port -# listen: -# - localhost:4873 # default value -# - http://localhost:4873 # same thing -# - 0.0.0.0:4873 # listen on all addresses (INADDR_ANY) -# - https://example.org:4873 # if you want to use https -# - "[::1]:4873" # ipv6 -# - unix:/tmp/verdaccio.sock # unix socket - -# The HTTPS configuration is useful if you do not consider use a HTTP Proxy -# https://verdaccio.org/docs/configuration#https -# https: -# key: ./path/verdaccio-key.pem -# cert: ./path/verdaccio-cert.pem -# ca: ./path/verdaccio-csr.pem - -# https://verdaccio.org/docs/configuration#proxy -# http_proxy: http://something.local/ -# https_proxy: https://something.local/ - -# https://verdaccio.org/docs/configuration#notifications -# notify: -# method: POST -# headers: [{ "Content-Type": "application/json" }] -# endpoint: https://usagge.hipchat.com/v2/room/3729485/notification?auth_token=mySecretToken -# content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}' - -middlewares: - audit: - enabled: true - -# https://verdaccio.org/docs/logger -# log settings -log: { type: stdout, format: pretty, level: http } -#experiments: -# # support for npm token command -# token: false -# # enable tarball URL redirect for hosting tarball with a different server, the tarball_url_redirect can be a template string -# tarball_url_redirect: 'https://mycdn.com/verdaccio/${packageName}/${filename}' -# # the tarball_url_redirect can be a function, takes packageName and filename and returns the url, when working with a js configuration file -# tarball_url_redirect(packageName, filename) { -# const signedUrl = // generate a signed url -# return signedUrl; -# } - -# translate your registry, api i18n not available yet -# i18n: -# list of the available translations https://github.com/verdaccio/verdaccio/blob/master/packages/plugins/ui-theme/src/i18n/ABOUT_TRANSLATIONS.md -# web: en-US \ No newline at end of file diff --git a/apps/verdaccio/nightly-master/data/plugins/.gitkeep b/apps/verdaccio/nightly-master/data/plugins/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/verdaccio/nightly-master/data/storage/.gitkeep b/apps/verdaccio/nightly-master/data/storage/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/verdaccio/nightly-master/docker-compose.yml b/apps/verdaccio/nightly-master/docker-compose.yml deleted file mode 100644 index e6dec0b0..00000000 --- a/apps/verdaccio/nightly-master/docker-compose.yml +++ /dev/null @@ -1,25 +0,0 @@ -services: - verdaccio: - image: "verdaccio/verdaccio:nightly-master" - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - environment: - - VERDACCIO_APPDIR=${VERDACCIO_APPDIR} - - VERDACCIO_USER_NAME=${VERDACCIO_USER_NAME} - - VERDACCIO_USER_UID=${VERDACCIO_USER_UID} - - VERDACCIO_PORT=${PANEL_APP_PORT_HTTP} - - VERDACCIO_PROTOCOL=${VERDACCIO_PROTOCOL} - ports: - - "${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP}" - volumes: - - ${STORAGE_PATH}:/verdaccio/storage - - ${CONFIG_PATH}:/verdaccio/conf - - ${PLUGINS_PATH}:/verdaccio/plugins - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/verdaccio/nightly-master/scripts/init.sh b/apps/verdaccio/nightly-master/scripts/init.sh deleted file mode 100644 index 44a563b2..00000000 --- a/apps/verdaccio/nightly-master/scripts/init.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -chown -R 10001:65533 data \ No newline at end of file diff --git a/apps/wallos/4.6.0/.env.sample b/apps/wallos/4.6.0/.env.sample deleted file mode 100644 index 97343631..00000000 --- a/apps/wallos/4.6.0/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="wallos" -PANEL_APP_PORT_HTTP="40212" -TIME_ZONE="Asia/Shanghai" \ No newline at end of file diff --git a/apps/wallos/4.6.0/data.yml b/apps/wallos/4.6.0/data.yml deleted file mode 100644 index fae9b77f..00000000 --- a/apps/wallos/4.6.0/data.yml +++ /dev/null @@ -1,16 +0,0 @@ -additionalProperties: - formFields: - - default: 40212 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: Asia/Shanghai - edit: true - envKey: TIME_ZONE - labelEn: Time zone - labelZh: 时区 - required: true diff --git a/apps/wallos/4.6.0/docker-compose.yml b/apps/wallos/4.6.0/docker-compose.yml deleted file mode 100644 index 5e2e4db6..00000000 --- a/apps/wallos/4.6.0/docker-compose.yml +++ /dev/null @@ -1,20 +0,0 @@ -services: - wallos: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - volumes: - - ./data/db:/var/www/html/db - - ./data/logos:/var/www/html/images/uploads/logos - environment: - - TZ=${TIME_ZONE} - image: bellamy/wallos:4.6.0 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/wallos/README.md b/apps/wallos/README.md deleted file mode 100644 index d9f57daf..00000000 --- a/apps/wallos/README.md +++ /dev/null @@ -1,26 +0,0 @@ - - - - Wallos - - -Wallos: Open-Source Personal Subscription Tracker - -## Introduction - -Wallos is a powerful, open-source, and self-hostable web application designed to empower you in managing your finances with ease. Say goodbye to complicated spreadsheets and expensive financial software – Wallos simplifies the process of tracking expenses and helps you gain better control over your financial life. - -## Features - -- Subscription Management: Keep track of your recurring subscriptions and payments, ensuring you never miss a due date. -- Category Management: Organize your expenses into customizable categories, enabling you to gain insights into your spending habits. -- Multi-Currency support: Wallos supports multiple currencies, allowing you to manage your finances in the currency of your choice. -- Currency Conversion: Integrates with the Fixer API so you can get exchange rates and see all your subscriptions on your main currency. -- Data Privacy: As a self-hosted application, Wallos ensures that your financial data remains private and secure on your own server. -- Customization: Tailor Wallos to your needs with customizable categories, currencies, themes and other display options. -- Sorting Options: Allowing you to view your subscriptions from different perspectives. -- Logo Search: Wallos can search the web for the logo of your subscriptions if you don't have them available for upload. -- Mobile view: Wallos on the go. -- Statistics: Another perspective into your spendings. -- Notifications: Get notified by email of an upcoming payment. -- Multi Language support. \ No newline at end of file diff --git a/apps/wallos/data.yml b/apps/wallos/data.yml deleted file mode 100644 index b3bc56ce..00000000 --- a/apps/wallos/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Wallos -tags: - - 工具 -title: 开源个人订阅跟踪器 -description: 开源个人订阅跟踪器 -additionalProperties: - key: wallos - name: Wallos - tags: - - Tool - shortDescZh: 开源个人订阅跟踪器 - shortDescEn: Open-Source Personal Subscription Tracker - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://github.com/ellite/Wallos - github: https://github.com/ellite/Wallos - document: https://github.com/ellite/Wallos/blob/main/README.md diff --git a/apps/wallos/latest/.env.sample b/apps/wallos/latest/.env.sample deleted file mode 100644 index 97343631..00000000 --- a/apps/wallos/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="wallos" -PANEL_APP_PORT_HTTP="40212" -TIME_ZONE="Asia/Shanghai" \ No newline at end of file diff --git a/apps/wallos/latest/data.yml b/apps/wallos/latest/data.yml deleted file mode 100644 index fae9b77f..00000000 --- a/apps/wallos/latest/data.yml +++ /dev/null @@ -1,16 +0,0 @@ -additionalProperties: - formFields: - - default: 40212 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: Asia/Shanghai - edit: true - envKey: TIME_ZONE - labelEn: Time zone - labelZh: 时区 - required: true diff --git a/apps/wallos/latest/docker-compose.yml b/apps/wallos/latest/docker-compose.yml deleted file mode 100644 index d7a1e674..00000000 --- a/apps/wallos/latest/docker-compose.yml +++ /dev/null @@ -1,20 +0,0 @@ -services: - wallos: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - volumes: - - ./data/db:/var/www/html/db - - ./data/logos:/var/www/html/images/uploads/logos - environment: - - TZ=${TIME_ZONE} - image: bellamy/wallos:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/wallos/logo.png b/apps/wallos/logo.png deleted file mode 100644 index 492887ceeb88e2fa29fe1a95c753f0c88d6126a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2877 zcmZ8i2UJtp77b;90Ya37-UT6pfT&0{^di0Yj+B5jkrG5YN|R7Unjk|9g7hXW^d?nl z1_yxv0zW~DI8uWDG5O#1*T3t&efQaC-*eBq>#g+?jSRHF^qlk{5D2V&SKS0yn=T$Y zDgf!B-vOjlHqtZG00<{1CkF=yfaF0-OA8RP!o|h)U-@Dsiva#2?Ck8n46zO0$ef%d z`%|%}|JW}e6??+M!UE_p7!2UQYybx)D=RAm0!iyV0crxAjg5_$mlx0hKY(dH7j=Ms zfGiLK9Pj{~Tm&%l^Ya5vU;rMn0YLI3D?lo>=kx-x7e@euy#2z{b5Zb@pG?S=$!4JK z|H}d)xl~5qDNu)riRph0$#0JeCeFwTkOj!|ei9=i<1dej=REmD3A<5YtAU$NlL7() zzp}TSCgIkDT0s+n=6(K!cwvkFCk=amqKKT!89DdOUlXw$1VSmNsi$=W>$o{dyK!Le zEyoGC^^m09L`?lY5CZK19^l=1cz9B~FJ2J1!&L0CsLi0T)gYfyuaHIm71RFgq4TT( z61M?1XXGc)HgJ=2$amrnLs2z*k6#m2{3mZZ59f{jeA0M;s`!^r0sdabXY2TnX0eMp zq3<;Vr}q3ap8?;{%RmzYQ_#&;x}7Z3CCGv7kD92XFv8~mPgiqsJ{s!Tk^bU*#uGdi zrLU$eN_yAXU?nBY$-xezKHuA0!_Ai!q$kA&TASPvIy>I_GTqi#UGXY4z~9B$@$MCF z`jfwj@85N0KaJAA{%yXuEH6Gb*w@?DSW!;$$|a^9Oj4MY##Jcve0sdM2JNMKjsA3J zd+pO=Q$=}xPI3|oYo-HHrC`BHtcUHKVCWx{G?RhPn#b+%&!}CF5FzMB9RRnhA&D z&h;T3Ew~@P9#ZaaaWGxp*Y$dLmdn3hf2d=&ITeL1Z{FVnCIokSxQbK*UkZ%kgyB)6KN-56=1G z3><tVA?7y3M)1h^XRbYo=&pRvI1v(`!zL!R-lt^*-7Q5|4I2U}53S;+r_47lJpY z+(WBi3N6=dA5`)w*u|1R#io~Tf0e&ETJ4Y32B! zgwK@gs9DOpRRZ3ebk2#+y4;TbS;Zt7**Y&0{EDQ6Z79ZK-NzSYbL27EfBw)RwZtMN zhQj8=IqNZ{rjt~$%PG1iOevOSoOQ2#iMi57E5AEGjpWHeTK;sO2=09F{kEUa9M|&E&3^ zIrA(2LMJ3utx1uW!ds1FSs0m z^s2t6NRC{?so$Ebge}}Pv!E@Aip7R~nTr#lt{E*lPy$w>skMuDz%M=RP&WM|ZCbBF zGY*c#p}dU*kBf|Qi!(pk?UNR29ZfzKv?V!gr}r9hBYbB@VVHp8qX$~EWv>gV_2=4J z!Nl-)lBI6qy9T$u;I%!#yWlrdlbxX2r1=;xlGG%UHEKKeg?{+y+@V2+V))stp;U%AxF$d>1xuG2F&U3OzsD@=@S9-A+01JVhn_zt&W>ol=%y7#%|%q{w8O@$ z;g5e{MglgkTW3eGLW~Y8d@%IUB5sRZ8=l5Nku3+BF;i#J4pV~t%9e+$_Mr-w%!Unb zAlfP=f6O`S^_pAM-de}bZCHyU|g^A6mjpzvU5O3S-^N8h2Rb6ckKcd_xR zf7!`F80QI#N^EuaI^>4dBqa;G-w81u$e^h<ID42o)+H;sGJ z>cHC~-PHoKY7dR*&Q000>K%3#T8-UpwJS@zuEvhaR;-m# z+=Q>eQ87KY{L^n?1blVEY`ophy=9?qf_1~``rdjL2Zteqe#Jo61!8Gsn?^ z?1ZS#JoP5-x^J=y-oIz4n?Q;-H`^UpI^1~H902i_dho}B%ni%4ms8WZwGPy_Da)F} zA0l3VOB^ka=q!=O - - - # Watchtower - - A process for automating Docker container base image updates. -

- - [![Circle CI](https://circleci.com/gh/containrrr/watchtower.svg?style=shield)](https://circleci.com/gh/containrrr/watchtower) - [![codecov](https://codecov.io/gh/containrrr/watchtower/branch/main/graph/badge.svg)](https://codecov.io/gh/containrrr/watchtower) - [![GoDoc](https://godoc.org/github.com/containrrr/watchtower?status.svg)](https://godoc.org/github.com/containrrr/watchtower) - [![Go Report Card](https://goreportcard.com/badge/github.com/containrrr/watchtower)](https://goreportcard.com/report/github.com/containrrr/watchtower) - [![latest version](https://img.shields.io/github/tag/containrrr/watchtower.svg)](https://github.com/containrrr/watchtower/releases) - [![Apache-2.0 License](https://img.shields.io/github/license/containrrr/watchtower.svg)](https://www.apache.org/licenses/LICENSE-2.0) - [![Codacy Badge](https://app.codacy.com/project/badge/Grade/1c48cfb7646d4009aa8c6f71287670b8)](https://www.codacy.com/gh/containrrr/watchtower/dashboard?utm_source=github.com&utm_medium=referral&utm_content=containrrr/watchtower&utm_campaign=Badge_Grade) - [![All Contributors](https://img.shields.io/github/all-contributors/containrrr/watchtower)](#contributors) - [![Pulls from DockerHub](https://img.shields.io/docker/pulls/containrrr/watchtower.svg)](https://hub.docker.com/r/containrrr/watchtower) - - - -## Quick Start - -With watchtower you can update the running version of your containerized app simply by pushing a new image to the Docker Hub or your own image registry. - -Watchtower will pull down your new image, gracefully shut down your existing container and restart it with the same options that were used when it was deployed initially. Run the watchtower container with the following command: - -``` -$ docker run --detach \ - --name watchtower \ - --volume /var/run/docker.sock:/var/run/docker.sock \ - containrrr/watchtower -``` - -## Documentation -The full documentation is available at https://containrrr.dev/watchtower. - -## Contributors - -Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
James
James

⚠️ 🤔
Florian
Florian

👀 📖
Brian DeHamer
Brian DeHamer

💻 🚧
Ross Cadogan
Ross Cadogan

💻
stffabi
stffabi

💻 🚧
Austin
Austin

📖
David Gardner
David Gardner

👀 📖
Tanguy ⧓ Herrmann
Tanguy ⧓ Herrmann

💻
Rodrigo Damazio Bovendorp
Rodrigo Damazio Bovendorp

💻 📖
Ryan Kuba
Ryan Kuba

🚇
cnrmck
cnrmck

📖
Harry Walter
Harry Walter

💻
Robotex
Robotex

📖
Gerald Pape
Gerald Pape

📖
fomk
fomk

💻
Sven Gottwald
Sven Gottwald

🚇
techknowlogick
techknowlogick

💻
waja
waja

📖
Scott Albertson
Scott Albertson

📖
Jason Huddleston
Jason Huddleston

📖
Napster
Napster

💻
Maxim
Maxim

💻 📖
Max Schmitt
Max Schmitt

📖
cron410
cron410

📖
Paulo Henrique
Paulo Henrique

📖
Kaleb Elwert
Kaleb Elwert

📖
Bill Butler
Bill Butler

📖
Mario Tacke
Mario Tacke

💻
Mark Woodbridge
Mark Woodbridge

💻
Simon Aronsson
Simon Aronsson

💻 🚧 👀 📖
Ansem93
Ansem93

📖
Luka Peschke
Luka Peschke

💻 📖
Zois Pagoulatos
Zois Pagoulatos

💻 👀 🚧
Alexandre Menif
Alexandre Menif

💻
Andrey
Andrey

📖
Armando Lüscher
Armando Lüscher

📖
Ryan Budke
Ryan Budke

📖
Kaloyan Raev
Kaloyan Raev

💻 ⚠️
sixth
sixth

📖
Gina Häußge
Gina Häußge

💻
Max H.
Max H.

💻
Jungkook Park
Jungkook Park

📖
Jan Kristof Nidzwetzki
Jan Kristof Nidzwetzki

📖
lukas
lukas

💻
Ameya Shenoy
Ameya Shenoy

💻
Raymon de Looff
Raymon de Looff

💻
John Clayton
John Clayton

💻
Germs2004
Germs2004

📖
Lukas Willburger
Lukas Willburger

💻
Oliver Cervera
Oliver Cervera

📖
Victor Moura
Victor Moura

⚠️ 💻 📖
Maximilian Brandau
Maximilian Brandau

💻 ⚠️
Andrew
Andrew

📖
sixcorners
sixcorners

📖
nils måsén
nils måsén

📖 💻
Arne Jørgensen
Arne Jørgensen

⚠️ 👀
PatSki123
PatSki123

📖
Valentine Zavadsky
Valentine Zavadsky

💻 📖 ⚠️
Alexander Voronin
Alexander Voronin

💻 🐛
Oliver Mueller
Oliver Mueller

📖
Sebastiaan Tammer
Sebastiaan Tammer

💻
miosame
miosame

📖
Andrew Metzger
Andrew Metzger

🐛 💡
Pierre Grimaud
Pierre Grimaud

📖
Matt Doran
Matt Doran

📖
MihailITPlace
MihailITPlace

💻
bugficks
bugficks

💻 📖
Michael
Michael

💻
D. Domig
D. Domig

📖
Ben Osheroff
Ben Osheroff

💻
David H.
David H.

💻
Chander Ganesan
Chander Ganesan

📖
yrien30
yrien30

💻
ksurl
ksurl

📖 💻 🚇
rg9400
rg9400

💻
Turtle Kalus
Turtle Kalus

💻
Srihari Thalla
Srihari Thalla

📖
Thomas Gaudin
Thomas Gaudin

📖
hydrargyrum
hydrargyrum

📖
Reinout van Rees
Reinout van Rees

📖
DasSkelett
DasSkelett

💻
zenjabba
zenjabba

📖
Dan Quan
Dan Quan

📖
modem7
modem7

📖
Igor Zibarev
Igor Zibarev

💻
Patrice
Patrice

💻
James White
James White

📖
Dirk Kok
Dirk Kok

💻
EDIflyer
EDIflyer

📖
Jauder Ho
Jauder Ho

💻
Tamal Das
Tamal Das

📖
- - - - - - -This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! - diff --git a/apps/watchtower/data.yml b/apps/watchtower/data.yml deleted file mode 100644 index 97bb067e..00000000 --- a/apps/watchtower/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: watchtower -tags: - - 工具 -title: 自动更新 Docker 容器基础镜像的工具 -description: 自动更新 Docker 容器基础镜像的工具 -additionalProperties: - key: watchtower - name: watchtower - tags: - - Tool - shortDescZh: 自动更新 Docker 容器基础镜像的工具 - shortDescEn: Tool to automatically update Docker container base images - type: tool - crossVersionUpdate: true - limit: 1 - recommend: 0 - website: https://github.com/containrrr/watchtower - github: https://github.com/containrrr/watchtower - document: https://containrrr.dev/watchtower/ diff --git a/apps/watchtower/latest/.env.sample b/apps/watchtower/latest/.env.sample deleted file mode 100644 index e6e3f570..00000000 --- a/apps/watchtower/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="watchtower" -ENV1='WATCHTOWER_NO_STARTUP_MESSAGE' -COMMAND1='--interval 3600 --cleanup' \ No newline at end of file diff --git a/apps/watchtower/latest/data.yml b/apps/watchtower/latest/data.yml deleted file mode 100644 index 8f08a3fa..00000000 --- a/apps/watchtower/latest/data.yml +++ /dev/null @@ -1,16 +0,0 @@ -additionalProperties: - formFields: - - default: WATCHTOWER_NO_STARTUP_MESSAGE - edit: true - envKey: ENV1 - labelEn: Environmental parameters (split by ;) - labelZh: 环境参数(以;分割) - required: true - type: text - - default: --interval 3600 --cleanup - edit: true - envKey: COMMAND1 - labelEn: Command parameters (separated by spaces) - labelZh: 命令参数(以空格分割) - required: true - type: text diff --git a/apps/watchtower/latest/docker-compose.yml b/apps/watchtower/latest/docker-compose.yml deleted file mode 100644 index ba145e09..00000000 --- a/apps/watchtower/latest/docker-compose.yml +++ /dev/null @@ -1,19 +0,0 @@ -services: - watchtower: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - volumes: - - /var/run/docker.sock:/var/run/docker.sock - environment: - - TZ=Asia/Shanghai - - ${ENV1} - command: ${COMMAND1} - image: containrrr/watchtower - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/watchtower/logo.png b/apps/watchtower/logo.png deleted file mode 100644 index 802c1df668a2a3d7bb8e608ec180311aa01c6b8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2471 zcmV;Y30U@tP)Px#LQqUpMMrQwvdV=hQj zHBDIm|NlN;ZW=#N0005+@$w8dMVzUx02(yX*4Mzq$9s;KV|jyZGvCPo000VfQchC< z|Ns9o$CUp4Yib|GkpKV)?MXyIRCwC$or#vKAPj~_t)fB!7vBF>FW?FSqTq7RX}Zl= z$A0}M28jXx{(knepZ)A-Kl|Aw_W69O+4wInr>&|Y&&!SFdBN#l2+VQ8fCz-a@g{6U z2YK-(@K2GCxDX~rgK%Vj3HU&4=Ut;q^2fPH;u#o@w=M4?`NQ1RK%96OobFO^!CgHQ zDu6HXT5UM%4XXS7qCAMa@o&C?TfHP0`2p;Te_9~%U;?|kZTAC7Bm=kXlAk=>F?1)% zKbLz(Oymi>x>)AO$P)WXu`iJMa7eCJ&+lB3muMzq{YyKXg<)QWGe-qkY>Ng23 zr2g-O_6;E59Wi6XOeU$^4`|tLyCUJ2UWL!0yy#lCEtR{DjIr*y1xe zFkPV}rQM}jsvGV5!~!0GY{xbLbL$xSIQB!64KA*Mb7T}|M8}rm^gT5o^j7GK(9~ul z_!2prEc*sp)?{!MCg9qM^^Yf&wLP>$>p_Lb&ZG-7S}q#{4q*Aw);2K*>8>r{kkw&^ zuseKc!NUbEs{L8rvR*Ytx68z0T=$z*F$SK%&hUX)>T5h2CLB5ggQ4ls%Vh{? z4_q^}T2;Ps=xvy=8bkgO&uMiF6E&s)t~4?PM-B~ENd+0#Fs27S%NFx&5zh{d^`L^> z&~um&aSh`mpVdc%UhSK39~!R1L>%bqAaqw_EvQV;P_YqO-|Oll&|Pl{)ULM0rSuA1 z?1&s1WrWO!PiTOKdYCw-G`$E~Y?|+!Xv{7x2cm#OZ^K0W7U;CCF^`5SG>>bz?l!AF zqjYD6=FjR8v;eHVzVbs#%P&He?m$BY^jnlpZA#N-CAAg$ZAz=q{hO4w`gHFF9Y^W2 zE#l^j^cN`IUkELgW)gaQkcP!jI`*;0Mro!h&EhEiiE?Oa_31=~PGTr+?T#ZBM`@r! zgBVKNIst!q633^tbR>$Qw6(kC)3Mz-V3N@522mJ|ptQAPyO%=n^69o`dTx)=V5RLT zgrlvC{;`yb-Z%kTGBOh#+kVrBJ*2cfS#z}OvhKNvt_weq7M%d7XYIuCH1Cbe4ARM- zOYg|#u@lfEugu`c-Z(HqgJfK3BFAx{y|Xp5PxlM&(i`7Ems)RpAU_0cPxY>o>K@q| z*&ozWsS;XGj{+$Ahi;Q1=!um*$ZgPUp0?=Y~M0My-Y#J@wn_i`p+X zt*KQ!fNcF~a7_-~1%(Cbsj9DSs~oxyg2rX3M0tJli{@;nNaa(O*0Y@(Xc`C&oSR=X z-z}1Ll-5LtF1?`l3$I*dDtxO-+PUem!P;*pU*t{PG48&tX-(lCtIb)V_ehCy?#Am`EzirY%jIMJJ01t;IFQs*c8d)?2g8_b*FR zy{gY>277_*_5}Wu&iralQCi~~&-dYVy+nO?{r3q z9W{>YBR1$uCK%Qo8)YU3ux0p&ZBcoVJF6}NPe(jr`UYr{`MMd(m+8r2teoi->8_j$ zei9p?IL2e%)f2)0%~S42Ib0Hj2;hb(_y6R@4FIBT7s1+&p}Vd(Qk96cG5P>)f7fLs zgpU;D%eugxE$-MiyZ34|g{X@Tz{aA=`u+>(RAp1rlU~wN{>P78JBRO*O~a0Jx0E%_ zGne}rox5x@&W(37dgD8o6K75N`~{&<(||sm!A)t95jgEZ)1a4JdaKGa4$f%TVx!g= zw;g31ILlvkc{UEt6>pHNH16h-wyu+vp7O2ymDiK|e5xWxL@%r%C@-qlU%YR9t-;q{ lYVc=2``OQa_Ot)j{s9W&Q&AA;)J6aR002ovPDHLkV1nt;wB`T+ diff --git a/apps/web-check/README.md b/apps/web-check/README.md deleted file mode 100644 index 279685d6..00000000 --- a/apps/web-check/README.md +++ /dev/null @@ -1,493 +0,0 @@ -

Web-Check

- - -

-
-Comprehensive, on-demand open source intelligence for any website -
-🌐 web-check.xyz
- -

- ---- - -## About -Get an insight into the inner-workings of a given website: uncover potential attack vectors, analyse server architecture, view security configurations, and learn what technologies a site is using. - -Currently the dashboard will show: IP info, SSL chain, DNS records, cookies, headers, domain info, search crawl rules, page map, server location, redirect ledger, open ports, traceroute, DNS security extensions, site performance, trackers, associated hostnames, carbon footprint. Stay tuned, as I'll add more soon! - -The aim is to help you easily understand, optimize and secure your website. - -### Screenshot -[![Screenshot](https://raw.githubusercontent.com/Lissy93/web-check/master/.github/screenshots/web-check-screenshot7.png)](https://web-check.as93.net/) - -### Live Demo -A hosted version can be accessed at: **[web-check.as93.net](https://web-check.as93.net)** - -### Mirror -The source for this repo is mirrored to CodeBerg, available at: **[codeberg.org/alicia/web-check](https://codeberg.org/alicia/web-check)** - -### Motivation -Often when you're looking into a website, there's several things you always initially check. -Think: Whois, SSL chain, DNS records, tech stack, security protocols, crawl rules, sitemap, redirects, basic performance, open ports, server info, etc. -None of this is hard to find with a series of basic curl commands, or a combination of online tools. But it's just so much easier to have everything presented clearly and visible in one place :) - -### Features - -
-

Expand to see all features

- -**Note** _this list needs updating, many more jobs have been added since..._ - -
-IP Address - - - -###### Description -The IP Address task involves mapping the user provided URL to its corresponding IP address through a process known as Domain Name System (DNS) resolution. An IP address is a unique identifier given to every device on the Internet, and when paired with a domain name, it allows for accurate routing of online requests and responses. - -###### Use Cases -Identifying the IP address of a domain can be incredibly valuable for OSINT purposes. This information can aid in creating a detailed map of a target's network infrastructure, pinpointing the physical location of a server, identifying the hosting service, and even discovering other domains that are hosted on the same IP address. In cybersecurity, it's also useful for tracking the sources of attacks or malicious activities. - -###### Useful Links -- [https://en.wikipedia.org/wiki/IP_address](https://en.wikipedia.org/wiki/IP_address) -- [https://tools.ietf.org/html/rfc791](https://tools.ietf.org/html/rfc791) -- [https://www.cloudflare.com/learning/dns/what-is-dns/](https://www.cloudflare.com/learning/dns/what-is-dns/) -- [https://www.whois.com/whois-lookup](https://www.whois.com/whois-lookup) - -
-
-SSL - - - -###### Description -The SSL task involves checking if the site has a valid Secure Sockets Layer (SSL) certificate. SSL is a protocol for establishing authenticated and encrypted links between networked computers. It's commonly used for securing communications over the internet, such as web browsing sessions, email transmissions, and more. In this task, we reach out to the server and initiate a SSL handshake. If successful, we gather details about the SSL certificate presented by the server. - -###### Use Cases -SSL certificates not only provide the assurance that data transmission to and from the website is secure, but they also provide valuable OSINT data. Information from an SSL certificate can include the issuing authority, the domain name, its validity period, and sometimes even organization details. This can be useful for verifying the authenticity of a website, understanding its security setup, or even for discovering associated subdomains or other services. - -###### Useful Links -- [https://en.wikipedia.org/wiki/Transport_Layer_Security](https://en.wikipedia.org/wiki/Transport_Layer_Security) -- [https://tools.ietf.org/html/rfc8446](https://tools.ietf.org/html/rfc8446) -- [https://letsencrypt.org/docs/](https://letsencrypt.org/docs/) -- [https://www.sslshopper.com/ssl-checker.html](https://www.sslshopper.com/ssl-checker.html) - -
-
-DNS Records - - - -###### Description -The DNS Records task involves querying the Domain Name System (DNS) for records associated with the target domain. DNS is a system that translates human-readable domain names into IP addresses that computers use to communicate. Various types of DNS records exist, including A (address), MX (mail exchange), NS (name server), CNAME (canonical name), and TXT (text), among others. - -###### Use Cases -Extracting DNS records can provide a wealth of information in an OSINT investigation. For example, A and AAAA records can disclose IP addresses associated with a domain, potentially revealing the location of servers. MX records can give clues about a domain's email provider. TXT records are often used for various administrative purposes and can sometimes inadvertently leak internal information. Understanding a domain's DNS setup can also be useful in understanding how its online infrastructure is built and managed. - -###### Useful Links -- [https://en.wikipedia.org/wiki/List_of_DNS_record_types](https://en.wikipedia.org/wiki/List_of_DNS_record_types) -- [https://tools.ietf.org/html/rfc1035](https://tools.ietf.org/html/rfc1035) -- [https://mxtoolbox.com/DNSLookup.aspx](https://mxtoolbox.com/DNSLookup.aspx) -- [https://www.dnswatch.info/](https://www.dnswatch.info/) - -
-
-Cookies - - - -###### Description -The Cookies task involves examining the HTTP cookies set by the target website. Cookies are small pieces of data stored on the user's computer by the web browser while browsing a website. They hold a modest amount of data specific to a particular client and website, such as site preferences, the state of the user's session, or tracking information. - -###### Use Cases -Cookies provide a wealth of information in an OSINT investigation. They can disclose information about how the website tracks and interacts with its users. For instance, session cookies can reveal how user sessions are managed, and tracking cookies can hint at what kind of tracking or analytics frameworks are being used. Additionally, examining cookie policies and practices can offer insights into the site's security settings and compliance with privacy regulations. - -###### Useful Links -- [https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies) -- [https://www.cookiepro.com/knowledge/what-is-a-cookie/](https://www.cookiepro.com/knowledge/what-is-a-cookie/) -- [https://owasp.org/www-community/controls/SecureFlag](https://owasp.org/www-community/controls/SecureFlag) -- [https://tools.ietf.org/html/rfc6265](https://tools.ietf.org/html/rfc6265) - -
-
-Crawl Rules - - - -###### Description -The Crawl Rules task is focused on retrieving and interpreting the 'robots.txt' file from the target website. This text file is part of the Robots Exclusion Protocol (REP), a group of web standards that regulate how robots crawl the web, access and index content, and serve that content up to users. The file indicates which parts of the site the website owner doesn't want to be accessed by web crawler bots. - -###### Use Cases -The 'robots.txt' file can provide valuable information for an OSINT investigation. It often discloses the directories and pages that the site owner doesn't want to be indexed, potentially because they contain sensitive information. Moreover, it might reveal the existence of otherwise hidden or unlinked directories. Additionally, understanding crawl rules may offer insights into a website's SEO strategies. - -###### Useful Links -- [https://developers.google.com/search/docs/advanced/robots/intro](https://developers.google.com/search/docs/advanced/robots/intro) -- [https://www.robotstxt.org/robotstxt.html](https://www.robotstxt.org/robotstxt.html) -- [https://moz.com/learn/seo/robotstxt](https://moz.com/learn/seo/robotstxt) -- [https://en.wikipedia.org/wiki/Robots_exclusion_standard](https://en.wikipedia.org/wiki/Robots_exclusion_standard) - -
-
-Headers - - - -###### Description -The Headers task involves extracting and interpreting the HTTP headers sent by the target website during the request-response cycle. HTTP headers are key-value pairs sent at the start of an HTTP response, or before the actual data. Headers contain important directives for how to handle the data being transferred, including cache policies, content types, encoding, server information, security policies, and more. - -###### Use Cases -Analyzing HTTP headers can provide significant insights in an OSINT investigation. Headers can reveal specific server configurations, chosen technologies, caching directives, and various security settings. This information can help to determine a website's underlying technology stack, server-side security measures, potential vulnerabilities, and general operational practices. - -###### Useful Links -- [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers) -- [https://tools.ietf.org/html/rfc7231#section-3.2](https://tools.ietf.org/html/rfc7231#section-3.2) -- [https://www.w3schools.com/tags/ref_httpheaders.asp](https://www.w3schools.com/tags/ref_httpheaders.asp) -- [https://owasp.org/www-project-secure-headers/](https://owasp.org/www-project-secure-headers/) - -
-
-Quality Report - - - -###### Description -The Headers task involves extracting and interpreting the HTTP headers sent by the target website during the request-response cycle. HTTP headers are key-value pairs sent at the start of an HTTP response, or before the actual data. Headers contain important directives for how to handle the data being transferred, including cache policies, content types, encoding, server information, security policies, and more. - -###### Use Cases -Analyzing HTTP headers can provide significant insights in an OSINT investigation. Headers can reveal specific server configurations, chosen technologies, caching directives, and various security settings. This information can help to determine a website's underlying technology stack, server-side security measures, potential vulnerabilities, and general operational practices. - -###### Useful Links -- [https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers) -- [https://tools.ietf.org/html/rfc7231#section-3.2](https://tools.ietf.org/html/rfc7231#section-3.2) -- [https://www.w3schools.com/tags/ref_httpheaders.asp](https://www.w3schools.com/tags/ref_httpheaders.asp) -- [https://owasp.org/www-project-secure-headers/](https://owasp.org/www-project-secure-headers/) - -
-
-Server Location - - - -###### Description -The Server Location task determines the physical location of a server hosting a website based on its IP address. The geolocation data typically includes the country, region, and often city where the server is located. The task also provides additional contextual information such as the official language, currency, and flag of the server's location country. - -###### Use Cases -In the realm of OSINT, server location information can be very valuable. It can give an indication of the possible jurisdiction that laws the data on the server falls under, which can be important in legal or investigative contexts. The server location can also hint at the target audience of a website and reveal inconsistencies that could suggest the use of hosting or proxy services to disguise the actual location. - -###### Useful Links -- [https://en.wikipedia.org/wiki/Geolocation_software](https://en.wikipedia.org/wiki/Geolocation_software) -- [https://www.iplocation.net/](https://www.iplocation.net/) -- [https://www.cloudflare.com/learning/cdn/glossary/geolocation/](https://www.cloudflare.com/learning/cdn/glossary/geolocation/) -- [https://developers.google.com/maps/documentation/geolocation/intro](https://developers.google.com/maps/documentation/geolocation/intro) - -
-
-Associated Domains and Hostnames - - - -###### Description -This task involves identifying and listing all domains and subdomains (hostnames) that are associated with the website's primary domain. This process often involves DNS enumeration to discover any linked domains and hostnames. - -###### Use Cases -In OSINT investigations, understanding the full scope of a target's web presence is critical. Associated domains could lead to uncovering related projects, backup sites, development/test sites, or services linked to the main site. These can sometimes provide additional information or potential security vulnerabilities. A comprehensive list of associated domains and hostnames can also give an overview of the organization's structure and online footprint. - -###### Useful Links -- [https://en.wikipedia.org/wiki/Domain_Name_System](https://en.wikipedia.org/wiki/Domain_Name_System) -- [https://resources.infosecinstitute.com/topic/dns-enumeration-pentest/](https://resources.infosecinstitute.com/topic/dns-enumeration-pentest/) -- [https://subdomainfinder.c99.nl/](https://subdomainfinder.c99.nl/) -- [https://securitytrails.com/blog/top-dns-enumeration-tools](https://securitytrails.com/blog/top-dns-enumeration-tools) - -
-
-Redirect Chain - - - -###### Description -This task traces the sequence of HTTP redirects that occur from the original URL to the final destination URL. An HTTP redirect is a response with a status code that advises the client to go to another URL. Redirects can occur for several reasons, such as URL normalization (directing to the www version of the site), enforcing HTTPS, URL shorteners, or forwarding users to a new site location. - -###### Use Cases -Understanding the redirect chain can be crucial for several reasons. From a security perspective, long or complicated redirect chains can be a sign of potential security risks, such as unencrypted redirects in the chain. Additionally, redirects can impact website performance and SEO, as each redirect introduces additional round-trip-time (RTT). For OSINT, understanding the redirect chain can help identify relationships between different domains or reveal the use of certain technologies or hosting providers. - -###### Useful Links -- [https://developer.mozilla.org/en-US/docs/Web/HTTP/Redirections](https://developer.mozilla.org/en-US/docs/Web/HTTP/Redirections) -- [https://en.wikipedia.org/wiki/URL_redirection](https://en.wikipedia.org/wiki/URL_redirection) -- [https://www.screamingfrog.co.uk/server-response-codes/](https://www.screamingfrog.co.uk/server-response-codes/) -- [https://ahrefs.com/blog/301-redirects/](https://ahrefs.com/blog/301-redirects/) - -
-
-TXT Records - - - -###### Description -TXT records are a type of Domain Name Service (DNS) record that provides text information to sources outside your domain. They can be used for a variety of purposes, such as verifying domain ownership, ensuring email security, and even preventing unauthorized changes to your website. - -###### Use Cases -In the context of OSINT, TXT records can be a valuable source of information. They may reveal details about the domain's email configuration, the use of specific services like Google Workspace or Microsoft 365, or security measures in place such as SPF and DKIM. Understanding these details can give an insight into the technologies used by the organization, their email security practices, and potential vulnerabilities. - -###### Useful Links -- [https://www.cloudflare.com/learning/dns/dns-records/dns-txt-record/](https://www.cloudflare.com/learning/dns/dns-records/dns-txt-record/) -- [https://en.wikipedia.org/wiki/TXT_record](https://en.wikipedia.org/wiki/TXT_record) -- [https://tools.ietf.org/html/rfc7208](https://tools.ietf.org/html/rfc7208) -- [https://dmarc.org/wiki/FAQ](https://dmarc.org/wiki/FAQ) - -
-
-Server Status - - - - -
-
-Open Ports - - - -###### Description -Open ports on a server are endpoints of communication which are available for establishing connections with clients. Each port corresponds to a specific service or protocol, such as HTTP (port 80), HTTPS (port 443), FTP (port 21), etc. The open ports on a server can be determined using techniques such as port scanning. - -###### Use Cases -In the context of OSINT, knowing which ports are open on a server can provide valuable information about the services running on that server. This information can be useful for understanding the potential vulnerabilities of the system, or for understanding the nature of the services the server is providing. For example, a server with port 22 open (SSH) might be used for remote administration, while a server with port 443 open is serving HTTPS traffic. - -###### Useful Links -- [https://www.netwrix.com/port_scanning.html](https://www.netwrix.com/port_scanning.html) -- [https://nmap.org/book/man-port-scanning-basics.html](https://nmap.org/book/man-port-scanning-basics.html) -- [https://www.cloudflare.com/learning/ddos/glossary/open-port/](https://www.cloudflare.com/learning/ddos/glossary/open-port/) -- [https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers](https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers) - -
-
-Traceroute - - - -###### Description -Traceroute is a network diagnostic tool used to track in real-time the pathway taken by a packet of information from one system to another. It records each hop along the route, providing details about the IPs of routers and the delay at each point. - -###### Use Cases -In OSINT investigations, traceroute can provide insights about the routing paths and geography of the network infrastructure supporting a website or service. This can help to identify network bottlenecks, potential censorship or manipulation of network traffic, and give an overall sense of the network's structure and efficiency. Additionally, the IP addresses collected during the traceroute may provide additional points of inquiry for further OSINT investigation. - -###### Useful Links -- [https://www.cloudflare.com/learning/network-layer/what-is-traceroute/](https://www.cloudflare.com/learning/network-layer/what-is-traceroute/) -- [https://tools.ietf.org/html/rfc1393](https://tools.ietf.org/html/rfc1393) -- [https://en.wikipedia.org/wiki/Traceroute](https://en.wikipedia.org/wiki/Traceroute) -- [https://www.ripe.net/publications/docs/ripe-611](https://www.ripe.net/publications/docs/ripe-611) - -
-
-Carbon Footprint - - - -###### Description -This task calculates the estimated carbon footprint of a website. It's based on the amount of data being transferred and processed, and the energy usage of the servers that host and deliver the website. The larger the website and the more complex its features, the higher its carbon footprint is likely to be. - -###### Use Cases -From an OSINT perspective, understanding a website's carbon footprint doesn't directly provide insights into its internal workings or the organization behind it. However, it can still be valuable data in broader analyses, especially in contexts where environmental impact is a consideration. For example, it can be useful for activists, researchers, or ethical hackers who are interested in the sustainability of digital infrastructure, and who want to hold organizations accountable for their environmental impact. - -###### Useful Links -- [https://www.websitecarbon.com/](https://www.websitecarbon.com/) -- [https://www.thegreenwebfoundation.org/](https://www.thegreenwebfoundation.org/) -- [https://www.nature.com/articles/s41598-020-76164-y](https://www.nature.com/articles/s41598-020-76164-y) -- [https://www.sciencedirect.com/science/article/pii/S0959652620307817](https://www.sciencedirect.com/science/article/pii/S0959652620307817) - -
-
-Server Info - - - -###### Description -This task retrieves various pieces of information about the server hosting the target website. This can include the server type (e.g., Apache, Nginx), the hosting provider, the Autonomous System Number (ASN), and more. The information is usually obtained through a combination of IP address lookups and analysis of HTTP response headers. - -###### Use Cases -In an OSINT context, server information can provide valuable clues about the organization behind a website. For instance, the choice of hosting provider could suggest the geographical region in which the organization operates, while the server type could hint at the technologies used by the organization. The ASN could also be used to find other domains hosted by the same organization. - -###### Useful Links -- [https://en.wikipedia.org/wiki/List_of_HTTP_header_fields](https://en.wikipedia.org/wiki/List_of_HTTP_header_fields) -- [https://en.wikipedia.org/wiki/Autonomous_system_(Internet)](https://en.wikipedia.org/wiki/Autonomous_system_(Internet)) -- [https://tools.ietf.org/html/rfc7231#section-7.4.2](https://tools.ietf.org/html/rfc7231#section-7.4.2) -- [https://builtwith.com/](https://builtwith.com/) - -
-
-Domain Info - - - -###### Description -This task retrieves Whois records for the target domain. Whois records are a rich source of information, including the name and contact information of the domain registrant, the domain's creation and expiration dates, the domain's nameservers, and more. The information is usually obtained through a query to a Whois database server. - -###### Use Cases -In an OSINT context, Whois records can provide valuable clues about the entity behind a website. They can show when the domain was first registered and when it's set to expire, which could provide insights into the operational timeline of the entity. The contact information, though often redacted or anonymized, can sometimes lead to additional avenues of investigation. The nameservers could also be used to link together multiple domains owned by the same entity. - -###### Useful Links -- [https://en.wikipedia.org/wiki/WHOIS](https://en.wikipedia.org/wiki/WHOIS) -- [https://www.icann.org/resources/pages/whois-2018-01-17-en](https://www.icann.org/resources/pages/whois-2018-01-17-en) -- [https://whois.domaintools.com/](https://whois.domaintools.com/) - -
-
-DNS Security Extensions - - - -###### Description -Without DNSSEC, it's possible for MITM attackers to spoof records and lead users to phishing sites. This is because the DNS system includes no built-in methods to verify that the response to the request was not forged, or that any other part of the process wasn’t interrupted by an attacker. The DNS Security Extensions (DNSSEC) secures DNS lookups by signing your DNS records using public keys, so browsers can detect if the response has been tampered with. Another solution to this issue is DoH (DNS over HTTPS) and DoT (DNS over TLD). - -###### Use Cases -DNSSEC information provides insight into an organization's level of cybersecurity maturity and potential vulnerabilities, particularly around DNS spoofing and cache poisoning. If no DNS secururity (DNSSEC, DoH, DoT, etc) is implemented, this may provide an entry point for an attacker. - -###### Useful Links -- [https://dnssec-analyzer.verisignlabs.com/](https://dnssec-analyzer.verisignlabs.com/) -- [https://www.cloudflare.com/dns/dnssec/how-dnssec-works/](https://www.cloudflare.com/dns/dnssec/how-dnssec-works/) -- [https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions](https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions) -- [https://www.icann.org/resources/pages/dnssec-what-is-it-why-important-2019-03-05-en](https://www.icann.org/resources/pages/dnssec-what-is-it-why-important-2019-03-05-en) -- [https://support.google.com/domains/answer/6147083](https://support.google.com/domains/answer/6147083) -- [https://www.internetsociety.org/resources/deploy360/2013/dnssec-test-sites/](https://www.internetsociety.org/resources/deploy360/2013/dnssec-test-sites/) - -
- -
- -Read more here: **[web-check.as93.net/about](https://web-check.as93.net/about)** - -_Note that not all checks will work for all sites. Sometimes it's not possible to determine some information, and the demo instance has some limitations imposed by Netlify for the lambda functions._ - ---- - -## Usage - -### Developing - -1. Clone the repo, `git clone git@github.com:Lissy93/web-check.git` -2. Cd into it, `cd web-check` -3. Install dependencies: `yarn` -4. Start the dev server, with `yarn dev` - -You'll need [Node.js](https://nodejs.org/en) (V 18.16.1 or later) installed, as well as [git](https://git-scm.com/). -Some checks also require `chromium`, `traceroute` and `dns` to be installed within your environment. These jobs will just be skipped if those packages arn't present. - -### Deploying - Option #1: Netlify - -Click the button below, to deploy to Netlify 👇 - -[![Deploy to Netlify](https://img.shields.io/badge/Deploy-Netlify-%2330c8c9?style=for-the-badge&logo=netlify&labelColor=1e0e41 'Deploy Web-Check to Netlify, via 1-Click Script')](https://app.netlify.com/start/deploy?repository=https://github.com/lissy93/web-check) - -### Deploying - Option #2: Docker - -Run `docker run -p 8888:3000 lissy93/web-check`, then open `http://localhost:3000` - -You can get the Docker image from: -- DockerHub: [`lissy93/web-check`](https://hub.docker.com/r/lissy93/web-check) -- GHCR: [`ghcr.io/lissy93/web-check`](https://github.com/Lissy93/web-check/pkgs/container/web-check) -- Or build the image yourself by cloning the repo and running `docker build -t web-check .` - -### Deploying - Option #3: From Source - -Follow the instructions in the [Developing](#developing) section above, then run `yarn build` && `yarn start` to build and serve the application. - -### Configuring - -By default, no configuration is needed. -But there are some optional environmental variables that you can set to give you access to some additional checks - -- `GOOGLE_CLOUD_API_KEY` - A Google API key ([get here](https://cloud.google.com/api-gateway/docs/authenticate-api-keys)). This can be used to return quality metrics for a site -- `TORRENT_IP_API_KEY` - A torrent API key ([get here](https://iknowwhatyoudownload.com/en/api/)). This will show torrents downloaded by an IP -- `REACT_APP_SHODAN_API_KEY` - A Shodan API key ([get here](https://account.shodan.io/)). This will show associated host names for a given domain -- `REACT_APP_WHO_API_KEY` - A WhoAPI key ([get here](https://whoapi.com/)). This will show more comprehensive WhoIs records than the default job -- `SECURITY_TRAILS_API_KEY` - A Security Trails API key ([get here](https://securitytrails.com/corp/api)). This will show org info associated with the IP -- `BUILT_WITH_API_KEY` - A BuiltWith API key ([get here](https://api.builtwith.com/)). This will show the main features of a site - -The above keys can be added into an `.env` file in the projects root, or via the Netlify UI, or by passing directly to the Docker container. - ---- - -## Community - -### Contributing - -Contributions of any kind are very welcome, and would be much appreciated. -For Code of Conduct, see [Contributor Convent](https://www.contributor-covenant.org/version/2/1/code_of_conduct/). - -To get started, fork the repo, make your changes, add, commit and push the code, then come back here to open a pull request. If you're new to GitHub or open source, [this guide](https://www.freecodecamp.org/news/how-to-make-your-first-pull-request-on-github-3#let-s-make-our-first-pull-request-) or the [git docs](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) may help you get started, but feel free to reach out if you need any support. - -[![Submit a PR](https://img.shields.io/badge/Submit_a_PR-GitHub-%23060606?style=for-the-badge&logo=github&logoColor=fff)](https://github.com/Lissy93/web-check/compare) - - -### Reporting Bugs - -If you've found something that doesn't work as it should, or would like to suggest a new feature, then go ahead and raise a ticket on GitHub. -For bugs, please outline the steps needed to reproduce, and include relevant info like system info and resulting logs. - -[![Raise an Issue](https://img.shields.io/badge/Raise_an_Issue-GitHub-%23060606?style=for-the-badge&logo=github&logoColor=fff)](https://github.com/Lissy93/web-check/issues/new/choose) - -### Supporting - -[![Sponsor Lissy93 on GitHub](https://img.shields.io/badge/Sponsor_on_GitHub-Lissy93-%23ff4dda?style=for-the-badge&logo=githubsponsors&logoColor=ff4dda)](https://github.com/sponsors/Lissy93) - - ---- - - -## License - - -> _**[Lissy93/Web-Check](https://github.com/Lissy93/web-check)** is licensed under [MIT](https://github.com/Lissy93/web-check/blob/HEAD/LICENSE) © [Alicia Sykes](https://aliciasykes.com) 2023._
-> For information, see TLDR Legal > MIT - -
-Expand License - -``` -The MIT License (MIT) -Copyright (c) Alicia Sykes - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sub-license, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included install -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANT ABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -``` - -
- - -

- © Alicia Sykes 2023
- Licensed under MIT
-
- Thanks for visiting :) -

- - - - diff --git a/apps/web-check/data.yml b/apps/web-check/data.yml deleted file mode 100644 index ed6fbe69..00000000 --- a/apps/web-check/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Web-Check -tags: - - 工具 -title: 用于分析任何网站的多合一 OSINT 工具 -description: 用于分析任何网站的多合一 OSINT 工具 -additionalProperties: - key: web-check - name: Web-Check - tags: - - Tool - shortDescZh: 用于分析任何网站的多合一 OSINT 工具 - shortDescEn: All-in-one OSINT tool for analysing any website - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://web-check.xyz/ - github: https://github.com/lissy93/web-check - document: https://github.com/lissy93/web-check diff --git a/apps/web-check/latest/.env.sample b/apps/web-check/latest/.env.sample deleted file mode 100644 index 554a62cc..00000000 --- a/apps/web-check/latest/.env.sample +++ /dev/null @@ -1,2 +0,0 @@ -CONTAINER_NAME="web-check" -PANEL_APP_PORT_HTTP="40095" diff --git a/apps/web-check/latest/data.yml b/apps/web-check/latest/data.yml deleted file mode 100644 index 0b96d4e2..00000000 --- a/apps/web-check/latest/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40095 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/web-check/latest/docker-compose.yml b/apps/web-check/latest/docker-compose.yml deleted file mode 100644 index 211c30f0..00000000 --- a/apps/web-check/latest/docker-compose.yml +++ /dev/null @@ -1,16 +0,0 @@ -services: - web-check: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:3000" - image: lissy93/web-check:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true - diff --git a/apps/web-check/logo.png b/apps/web-check/logo.png deleted file mode 100644 index 3f0acf176e7556673daed66752ee57846ef79896..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6266 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 diff --git a/apps/windows/5.14/.env.sample b/apps/windows/5.14/.env.sample deleted file mode 100644 index 12866aaa..00000000 --- a/apps/windows/5.14/.env.sample +++ /dev/null @@ -1,12 +0,0 @@ -CONTAINER_NAME="windows" -CPU_CORES=2 -DATA_PATH="./data/storage" -DISK_SIZE="30GB" -IMAGE_ISO_FILE="" -MANUAL="Y" -PANEL_APP_PORT_HTTP=40286 -PASSWORD="password" -RAM_SIZE="4GB" -RDP_PORT=3389 -RESTART_POLICY="always" -USERNAME="docker" diff --git a/apps/windows/5.14/data.yml b/apps/windows/5.14/data.yml deleted file mode 100644 index d188d18d..00000000 --- a/apps/windows/5.14/data.yml +++ /dev/null @@ -1,95 +0,0 @@ -additionalProperties: - formFields: - - default: "40286" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "./data/storage" - edit: true - envKey: DATA_PATH - labelEn: Data Path - labelZh: 数据路径 - required: true - type: text - - default: "3389" - edit: true - envKey: RDP_PORT - labelEn: RDP Port - labelZh: RDP 远程端口 - required: true - rule: paramPort - type: number - - default: "" - edit: true - envKey: IMAGE_ISO_FILE - labelEn: Windows ISO File - labelZh: Windows ISO 文件路径 - required: true - type: text - - default: "Y" - edit: true - envKey: MANUAL - labelEn: Manual Install - labelZh: 手动安装 - required: true - type: select - values: - - label: "Yes" - value: "Y" - - label: "No" - value: "N" - - default: "30GB" - edit: true - envKey: DISK_SIZE - labelEn: Disk Size - labelZh: 磁盘大小 - required: true - type: text - - default: "4GB" - edit: true - envKey: RAM_SIZE - labelEn: RAM Size - labelZh: 内存大小 - required: true - type: text - - default: "2" - edit: true - envKey: CPU_CORES - labelEn: CPU Cores - labelZh: CPU 核心数 - required: true - type: number - - default: "docker" - edit: true - envKey: USERNAME - labelEn: Login Username (This setting is not valid for non-matching system images) - labelZh: 登录用户名 (非匹配的系统镜像则此设置无效) - required: true - type: text - - default: "password" - edit: true - envKey: PASSWORD - labelEn: Login Password (This setting is not valid for non-matching system images) - labelZh: 登录密码 (非匹配的系统镜像则此设置无效) - random: true - required: true - rule: paramComplexity - type: password - - default: "always" - edit: true - envKey: RESTART_POLICY - labelEn: Restart Policy - labelZh: 重启策略 - required: true - type: select - values: - - label: "Always" - value: "always" - - label: "Unless-stopped" - value: "unless-stopped" - - label: "No" - value: "no" diff --git a/apps/windows/5.14/docker-compose.yml b/apps/windows/5.14/docker-compose.yml deleted file mode 100644 index dacdd61e..00000000 --- a/apps/windows/5.14/docker-compose.yml +++ /dev/null @@ -1,32 +0,0 @@ -services: - windows: - image: "dockurr/windows:5.14" - container_name: ${CONTAINER_NAME} - restart: ${RESTART_POLICY} - networks: - - 1panel-network - environment: - MANUAL: ${MANUAL} - DISK_SIZE: ${DISK_SIZE} - RAM_SIZE: ${RAM_SIZE} - CPU_CORES: ${CPU_CORES} - USERNAME: ${USERNAME} - PASSWORD: ${PASSWORD} - volumes: - - ${DATA_PATH}:/storage - - ${IMAGE_ISO_FILE}:/custom.iso - devices: - - /dev/kvm - cap_add: - - NET_ADMIN - ports: - - ${PANEL_APP_PORT_HTTP}:8006 - - ${RDP_PORT}:3389/tcp - - ${RDP_PORT}:3389/udp - stop_grace_period: 2m - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/windows/README.md b/apps/windows/README.md deleted file mode 100644 index 4c77422c..00000000 --- a/apps/windows/README.md +++ /dev/null @@ -1,48 +0,0 @@ -

Windows
-
- -
-
- - -

- -在 Docker 容器内运行 Windows 。 - -## 使用说明 - -要验证您的系统是否支持 KVM,请运行以下命令: - -``` -sudo apt install cpu-checker -sudo kvm-ok -``` - -如果您根本没有收到来自`kvm-ok`的任何错误,但容器仍然抱怨`/dev/kvm`丢失,则将`privileged: true`添加到您的 compose 文件(或`--privileged`到您的`run`命令)可能会有所帮助,排除任何权限问题。 - -**在线下载的 Windows 镜像版本可从以下选择 (后续官方可能有修改,以官方文档为准)** - - | **Value** | **Version** | **Size** | - |---|---|---| - | `win11` | Windows 11 Pro | 6.4 GB | - | `win11e` | Windows 11 Enterprise | 5.8 GB | - | `win10` | Windows 10 Pro | 5.7 GB | - | `ltsc10` | Windows 10 LTSC | 4.6 GB | - | `win10e` | Windows 10 Enterprise | 5.2 GB | - |||| - | `win8` | Windows 8.1 Pro | 4.0 GB | - | `win8e` | Windows 8.1 Enterprise | 3.7 GB | - | `win7` | Windows 7 Enterprise | 3.0 GB | - | `vista` | Windows Vista Enterprise | 3.0 GB | - | `winxp` | Windows XP Professional | 0.6 GB | - |||| - | `2022` | Windows Server 2022 | 4.7 GB | - | `2019` | Windows Server 2019 | 5.3 GB | - | `2016` | Windows Server 2016 | 6.5 GB | - | `2012` | Windows Server 2012 | 4.3 GB | - | `2008` | Windows Server 2008 | 3.0 GB | - |||| - | `core11` | Tiny 11 Core | 2.1 GB | - | `tiny11` | Tiny 11 | 3.8 GB | - | `tiny10` | Tiny 10 | 3.6 GB | - diff --git a/apps/windows/data.yml b/apps/windows/data.yml deleted file mode 100644 index e18904ee..00000000 --- a/apps/windows/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Windows -tags: - - 实用工具 -title: 在 Docker 容器内运行 Windows -description: 在 Docker 容器内运行 Windows -additionalProperties: - key: windows - name: Windows - tags: - - Tool - shortDescZh: 在 Docker 容器内运行 Windows - shortDescEn: Windows inside a Docker container - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://github.com/dockur/windows - github: https://github.com/dockur/windows - document: https://github.com/dockur/windows diff --git a/apps/windows/latest-online/.env.sample b/apps/windows/latest-online/.env.sample deleted file mode 100644 index 4f0e7cc2..00000000 --- a/apps/windows/latest-online/.env.sample +++ /dev/null @@ -1,15 +0,0 @@ -CONTAINER_NAME="windows" -CPU_CORES=2 -DATA_PATH="./data/storage" -DISK_SIZE="30GB" -KEYBOARD="zh-CN" -LANGUAGE="zh-CN" -MANUAL="N" -PANEL_APP_PORT_HTTP=40286 -PASSWORD="password" -RAM_SIZE="4GB" -RDP_PORT=3389 -REGION="SG" -RESTART_POLICY="always" -USERNAME="docker" -VERSION="ltsc10" diff --git a/apps/windows/latest-online/data.yml b/apps/windows/latest-online/data.yml deleted file mode 100644 index f2684568..00000000 --- a/apps/windows/latest-online/data.yml +++ /dev/null @@ -1,116 +0,0 @@ -additionalProperties: - formFields: - - default: "ltsc10" - edit: true - envKey: VERSION - labelEn: Windows version for online download (also available at https://example.com/win.iso) - labelZh: 在线下载的 Windows 版本 (也可 https://example.com/win.iso) - required: true - type: text - - default: "40286" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "./data/storage" - edit: true - envKey: DATA_PATH - labelEn: Data Path - labelZh: 数据路径 - required: true - type: text - - default: "3389" - edit: true - envKey: RDP_PORT - labelEn: RDP Port - labelZh: RDP 远程端口 - required: true - rule: paramPort - type: number - - default: "N" - edit: true - envKey: MANUAL - labelEn: Manual Install - labelZh: 手动安装 - required: true - type: select - values: - - label: "Yes" - value: "Y" - - label: "No" - value: "N" - - default: "30GB" - edit: true - envKey: DISK_SIZE - labelEn: Disk Size - labelZh: 磁盘大小 - required: true - type: text - - default: "4GB" - edit: true - envKey: RAM_SIZE - labelEn: RAM Size - labelZh: 内存大小 - required: true - type: text - - default: "2" - edit: true - envKey: CPU_CORES - labelEn: CPU Cores - labelZh: CPU 核心数 - required: true - type: number - - default: "docker" - edit: true - envKey: USERNAME - labelEn: Login Username (This setting is not valid for non-matching system images) - labelZh: 登录用户名 (非匹配的系统镜像则此设置无效) - required: true - type: text - - default: "password" - edit: true - envKey: PASSWORD - labelEn: Login Password (This setting is not valid for non-matching system images) - labelZh: 登录密码 (非匹配的系统镜像则此设置无效) - random: true - required: true - rule: paramComplexity - type: password - - default: "always" - edit: true - envKey: RESTART_POLICY - labelEn: Restart Policy - labelZh: 重启策略 - required: true - type: select - values: - - label: "Always" - value: "always" - - label: "Unless-stopped" - value: "unless-stopped" - - label: "No" - value: "no" - - default: "zh-CN" - edit: true - envKey: LANGUAGE - labelEn: Language - labelZh: 语言 - required: true - type: text - - default: "SG" - edit: true - envKey: REGION - labelEn: Region - labelZh: 区域 - required: true - type: text - - default: "zh-CN" - edit: true - envKey: KEYBOARD - labelEn: Keyboard Layout - labelZh: 键盘布局 - required: true - type: text diff --git a/apps/windows/latest-online/docker-compose.yml b/apps/windows/latest-online/docker-compose.yml deleted file mode 100644 index 08c7342c..00000000 --- a/apps/windows/latest-online/docker-compose.yml +++ /dev/null @@ -1,35 +0,0 @@ -services: - windows: - image: "dockurr/windows:latest" - container_name: ${CONTAINER_NAME} - restart: ${RESTART_POLICY} - networks: - - 1panel-network - environment: - VERSION: ${VERSION} - LANGUAGE: ${LANGUAGE} - REGION: ${REGION} - KEYBOARD: ${KEYBOARD} - MANUAL: ${MANUAL} - DISK_SIZE: ${DISK_SIZE} - RAM_SIZE: ${RAM_SIZE} - CPU_CORES: ${CPU_CORES} - USERNAME: ${USERNAME} - PASSWORD: ${PASSWORD} - volumes: - - ${DATA_PATH}:/storage - devices: - - /dev/kvm - cap_add: - - NET_ADMIN - ports: - - ${PANEL_APP_PORT_HTTP}:8006 - - ${RDP_PORT}:3389/tcp - - ${RDP_PORT}:3389/udp - stop_grace_period: 2m - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/windows/latest/.env.sample b/apps/windows/latest/.env.sample deleted file mode 100644 index 12866aaa..00000000 --- a/apps/windows/latest/.env.sample +++ /dev/null @@ -1,12 +0,0 @@ -CONTAINER_NAME="windows" -CPU_CORES=2 -DATA_PATH="./data/storage" -DISK_SIZE="30GB" -IMAGE_ISO_FILE="" -MANUAL="Y" -PANEL_APP_PORT_HTTP=40286 -PASSWORD="password" -RAM_SIZE="4GB" -RDP_PORT=3389 -RESTART_POLICY="always" -USERNAME="docker" diff --git a/apps/windows/latest/data.yml b/apps/windows/latest/data.yml deleted file mode 100644 index d188d18d..00000000 --- a/apps/windows/latest/data.yml +++ /dev/null @@ -1,95 +0,0 @@ -additionalProperties: - formFields: - - default: "40286" - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: "./data/storage" - edit: true - envKey: DATA_PATH - labelEn: Data Path - labelZh: 数据路径 - required: true - type: text - - default: "3389" - edit: true - envKey: RDP_PORT - labelEn: RDP Port - labelZh: RDP 远程端口 - required: true - rule: paramPort - type: number - - default: "" - edit: true - envKey: IMAGE_ISO_FILE - labelEn: Windows ISO File - labelZh: Windows ISO 文件路径 - required: true - type: text - - default: "Y" - edit: true - envKey: MANUAL - labelEn: Manual Install - labelZh: 手动安装 - required: true - type: select - values: - - label: "Yes" - value: "Y" - - label: "No" - value: "N" - - default: "30GB" - edit: true - envKey: DISK_SIZE - labelEn: Disk Size - labelZh: 磁盘大小 - required: true - type: text - - default: "4GB" - edit: true - envKey: RAM_SIZE - labelEn: RAM Size - labelZh: 内存大小 - required: true - type: text - - default: "2" - edit: true - envKey: CPU_CORES - labelEn: CPU Cores - labelZh: CPU 核心数 - required: true - type: number - - default: "docker" - edit: true - envKey: USERNAME - labelEn: Login Username (This setting is not valid for non-matching system images) - labelZh: 登录用户名 (非匹配的系统镜像则此设置无效) - required: true - type: text - - default: "password" - edit: true - envKey: PASSWORD - labelEn: Login Password (This setting is not valid for non-matching system images) - labelZh: 登录密码 (非匹配的系统镜像则此设置无效) - random: true - required: true - rule: paramComplexity - type: password - - default: "always" - edit: true - envKey: RESTART_POLICY - labelEn: Restart Policy - labelZh: 重启策略 - required: true - type: select - values: - - label: "Always" - value: "always" - - label: "Unless-stopped" - value: "unless-stopped" - - label: "No" - value: "no" diff --git a/apps/windows/latest/docker-compose.yml b/apps/windows/latest/docker-compose.yml deleted file mode 100644 index 575617b8..00000000 --- a/apps/windows/latest/docker-compose.yml +++ /dev/null @@ -1,32 +0,0 @@ -services: - windows: - image: "dockurr/windows:latest" - container_name: ${CONTAINER_NAME} - restart: ${RESTART_POLICY} - networks: - - 1panel-network - environment: - MANUAL: ${MANUAL} - DISK_SIZE: ${DISK_SIZE} - RAM_SIZE: ${RAM_SIZE} - CPU_CORES: ${CPU_CORES} - USERNAME: ${USERNAME} - PASSWORD: ${PASSWORD} - volumes: - - ${DATA_PATH}:/storage - - ${IMAGE_ISO_FILE}:/custom.iso - devices: - - /dev/kvm - cap_add: - - NET_ADMIN - ports: - - ${PANEL_APP_PORT_HTTP}:8006 - - ${RDP_PORT}:3389/tcp - - ${RDP_PORT}:3389/udp - stop_grace_period: 2m - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/windows/logo.png b/apps/windows/logo.png deleted file mode 100644 index 39838ec30f36a1182864e880f901649bd8d540d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7042 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 gxw*Nyxw&rr0sD - - Woodpecker - -

-
-

- - - - - - - - Translation status - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-
- -# Woodpecker - -> Woodpecker is a community fork of the Drone CI system. - -![woodpecker](https://github.com/woodpecker-ci/woodpecker/raw/main/docs/docs/woodpecker.png) - -## 🫶 Support - -Please consider to donate and become a backer. 🙏 [[Become a backer](https://opencollective.com/woodpecker-ci#category-CONTRIBUTE)] - - - -## 🚀 Usage - -### .woodpecker.yml - -- Place your pipeline in a file named `.woodpecker.yml` in your repository -- Pipeline steps can be named as you like -- Run any command in the commands section - -[Read More](https://woodpecker-ci.org/docs/usage/intro) - -### Build steps are containers - -- Define any Docker image as context -- Install the needed tools in custom Docker images, use them as context - -[Read More](https://woodpecker-ci.org/docs/usage/pipeline-syntax#steps) - -### Plugins - -Woodpecker has [official plugins](https://woodpecker-ci.org/plugins), but you can also use your own. - -[Read More](https://woodpecker-ci.org/docs/usage/plugins/plugins) - -## 📖 Documentation - -https://woodpecker-ci.org/ - -## ✨ Contribute - -See [Contributing Guide](https://github.com/woodpecker-ci/woodpecker/blob/main/CONTRIBUTING.md) - -[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://woodpecker-ci.org/docs/next/development/getting-started#gitpod) - -## 📣 Translate - -We use an own [Weblate](https://weblate.org/en/) instance at [translate.woodpecker-ci.org](https://translate.woodpecker-ci.org). - - - Translation status - - -## 👋 Who uses Woodpecker? - -[Codeberg](https://codeberg.org), the Woodpecker project itself, and many others. - -Leave a [comment](https://github.com/woodpecker-ci/woodpecker/issues/122) if you're using it as well. - -Also consider using the topic `WoodpeckerCI` in your repository, so others can learn from your config and use the hashtag `#WoodpeckerCI` when talking about the project on social media! - -Here are some places where people mention Woodpecker: - -- [GitHub](https://github.com/topics/WoodpeckerCI) -- [Codeberg](https://codeberg.org/explore/repos?q=woodpeckerci&topic=1) -- [Twitter](https://twitter.com/search?q=%23WoodpeckerCI&src=typed_query) -- [Fediverse](https://mastodon.social/tags/WoodpeckerCI) - -## ✨ Stars over time - -[![Stargazers over time](https://starchart.cc/woodpecker-ci/woodpecker.svg)](https://starchart.cc/woodpecker-ci/woodpecker) - -## License - -Woodpecker is Apache 2.0 licensed with the source files in this repository having a header indicating which license they are under and what copyrights apply. - -Files under the `docs/` folder are licensed under Creative Commons Attribution-ShareAlike 4.0 International Public License. diff --git a/apps/woodpecker/data.yml b/apps/woodpecker/data.yml deleted file mode 100644 index 922f2bab..00000000 --- a/apps/woodpecker/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Woodpecker CI -tags: - - CI/CD -title: 具有极强可扩展性的简单 CI 引擎 -description: 具有极强可扩展性的简单 CI 引擎 -additionalProperties: - key: woodpecker - name: Woodpecker CI - tags: - - CI/CD - shortDescZh: 具有极强可扩展性的简单 CI 引擎 - shortDescEn: A simple CI engine with great extensibility - type: tool - crossVersionUpdate: true - limit: 1 - recommend: 0 - website: https://woodpecker-ci.org - github: https://github.com/woodpecker-ci/woodpecker - document: https://woodpecker-ci.org/docs/intro diff --git a/apps/woodpecker/latest/.env.sample b/apps/woodpecker/latest/.env.sample deleted file mode 100644 index 157ae9c7..00000000 --- a/apps/woodpecker/latest/.env.sample +++ /dev/null @@ -1,21 +0,0 @@ -CONTAINER_NAME="woodpecker" -PANEL_APP_PORT_HTTP="40122" -REGISTER_SWITCH="false" -WOODPECKER_AGENT_SECRET="" -DATA_PATH="./data" -WOODPECKER_HOST="http://ci.example.com" -GITEA_ENABLE_SWITCH="false" -GITHUB_ENABLE_SWITCH="true" -GITLAB_ENABLE_SWITCH="false" -BITBUCKET_ENABLE_SWITCH="false" -WOODPECKER_BITBUCKET_CLIENT="" -WOODPECKER_BITBUCKET_SECRET="" -WOODPECKER_GITEA_CLIENT="" -WOODPECKER_GITEA_SECRET="" -WOODPECKER_GITEA_URL="https://try.gitea.io" -WOODPECKER_GITHUB_CLIENT="" -WOODPECKER_GITHUB_SECRET="" -WOODPECKER_GITHUB_URL="https://github.com" -WOODPECKER_GITLAB_CLIENT="" -WOODPECKER_GITLAB_SECRET="" -WOODPECKER_GITLAB_URL="https://gitlab.com" diff --git a/apps/woodpecker/latest/data.yml b/apps/woodpecker/latest/data.yml deleted file mode 100644 index 6da82903..00000000 --- a/apps/woodpecker/latest/data.yml +++ /dev/null @@ -1,143 +0,0 @@ -additionalProperties: - formFields: - - default: 40122 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: "false" - edit: true - envKey: REGISTER_SWITCH - labelEn: Enable register (true or false) - labelZh: 启用注册(true/false) - required: true - type: text - - default: http://ci.example.com - edit: true - envKey: WOODPECKER_HOST - labelEn: External URL - labelZh: 外部访问地址 - required: true - type: text - - default: '' - edit: true - envKey: WOODPECKER_AGENT_SECRET - labelEn: Github Agent Secret Vaule - labelZh: Github Agent Secret 值 - required: true - type: text - - default: "true" - edit: true - envKey: GITHUB_ENABLE_SWITCH - labelEn: Enable Github (true or false) - labelZh: 启用Github(true/false) - required: true - type: text - - default: https://github.com - edit: true - envKey: WOODPECKER_GITHUB_URL - labelEn: Github URL - labelZh: Github地址 - required: false - type: text - - default: '' - edit: true - envKey: WOODPECKER_GITHUB_CLIENT - labelEn: Github CLIENT Vaule - labelZh: Github CLIENT 值 - required: false - type: text - - default: '' - edit: true - envKey: WOODPECKER_GITHUB_SECRET - labelEn: Github SECRET Vaule - labelZh: Github SECRET 值 - required: false - type: text - - default: "false" - edit: true - envKey: GITEA_ENABLE_SWITCH - labelEn: Enable Gitea (true or false) - labelZh: 启用Gitea(true/false) - required: true - type: text - - default: https://try.gitea.io - edit: true - envKey: WOODPECKER_GITEA_URL - labelEn: Gitea URL - labelZh: Gitea地址 - required: false - type: text - - default: '' - edit: true - envKey: WOODPECKER_GITEA_CLIENT - labelEn: Gitea CLIENT Vaule - labelZh: Gitea CLIENT 值 - required: false - type: text - - default: '' - edit: true - envKey: WOODPECKER_GITEA_SECRET - labelEn: Gitea SECRET Vaule - labelZh: Gitea SECRET 值 - required: false - type: text - - default: "false" - edit: true - envKey: GITLAB_ENABLE_SWITCH - labelEn: Enable GitLab (true or false) - labelZh: 启用GitLab (true/false) - required: true - type: text - - default: https://gitlab.com - edit: true - envKey: WOODPECKER_GITLAB_URL - labelEn: GitLab URL - labelZh: GitLab 地址 - required: false - type: text - - default: '' - edit: true - envKey: WOODPECKER_GITLAB_CLIENT - labelEn: GitLab CLIENT Vaule - labelZh: GitLab CLIENT 值 - required: false - type: text - - default: '' - edit: true - envKey: WOODPECKER_GITLAB_SECRET - labelEn: GitLab SECRET Vaule - labelZh: GitLab SECRET 值 - required: false - type: text - - default: "false" - edit: true - envKey: BITBUCKET_ENABLE_SWITCH - labelEn: Enable Bitbucket (true or false) - labelZh: 启用 Bitbucket (true/false) - required: true - type: text - - default: '' - edit: true - envKey: WOODPECKER_BITBUCKET_CLIENT - labelEn: Bitbucket CLIENT Value - labelZh: Bitbucket CLIENT 值 - required: false - type: text - - default: '' - edit: true - envKey: WOODPECKER_BITBUCKET_SECRET - labelEn: Bitbucket SECRET Value - labelZh: Bitbucket SECRET 值 - required: false - type: text diff --git a/apps/woodpecker/latest/docker-compose.yml b/apps/woodpecker/latest/docker-compose.yml deleted file mode 100644 index 7beeb88a..00000000 --- a/apps/woodpecker/latest/docker-compose.yml +++ /dev/null @@ -1,72 +0,0 @@ -services: - woodpecker-server: - container_name: ${CONTAINER_NAME}-server - restart: always - networks: - - 1panel-network - ports: - - ${PANEL_APP_PORT_HTTP}:8000 - volumes: - - ${DATA_PATH}/server/woodpecker:/var/lib/woodpecker/ - environment: - - WOODPECKER_OPEN=${REGISTER_SWITCH} - - WOODPECKER_HOST=${WOODPECKER_HOST} - - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET} - # GitHub - - WOODPECKER_GITHUB=${GITHUB_ENABLE_SWITCH} - - WOODPECKER_GITHUB_URL=${WOODPECKER_GITHUB_URL} - - WOODPECKER_GITHUB_CLIENT=${WOODPECKER_GITHUB_CLIENT} - - WOODPECKER_GITHUB_SECRET=${WOODPECKER_GITHUB_SECRET} - # Gitea / Forgejo - - WOODPECKER_GITEA=${GITEA_ENABLE_SWITCH} - - WOODPECKER_GITEA_URL=${WOODPECKER_GITEA_URL} - - WOODPECKER_GITEA_CLIENT=${WOODPECKER_GITEA_CLIENT} - - WOODPECKER_GITEA_SECRET=${WOODPECKER_GITEA_SECRET} - - WOODPECKER_GITEA_SKIP_VERIFY=true - # GitLab - - WOODPECKER_GITLAB=${GITLAB_ENABLE_SWITCH} - - WOODPECKER_GITLAB_URL=${WOODPECKER_GITLAB_URL} - - WOODPECKER_GITLAB_CLIENT=${WOODPECKER_GITLAB_CLIENT} - - WOODPECKER_GITLAB_SECRET=${WOODPECKER_GITLAB_SECRET} - - WOODPECKER_GITLAB_SKIP_VERIFY=true - # Bitbucket - - WOODPECKER_BITBUCKET=${BITBUCKET_ENABLE_SWITCH} - - WOODPECKER_BITBUCKET_CLIENT=${WOODPECKER_BITBUCKET_CLIENT} - - WOODPECKER_BITBUCKET_SECRET=${WOODPECKER_BITBUCKET_SECRET} - # - #- WOODPECKER_GRPC_ADDR=:9000 - #- WOODPECKER_SERVER_ADDR= - #- WOODPECKER_GRPC_SECURE=true # defaults to false - #- WOODPECKER_GRPC_VERIFY=true # default - # - # MySQL - #- WOODPECKER_DATABASE_DRIVER=mysql - #- WOODPECKER_DATABASE_DATASOURCE=root:password@tcp(1.2.3.4:3306)/woodpecker?parseTime=true - # Postgres - #- WOODPECKER_DATABASE_DRIVER=postgres - #- WOODPECKER_DATABASE_DATASOURCE=postgres://root:password@1.2.3.4:5432/postgres?sslmode=disable - image: woodpeckerci/woodpecker-server:latest - labels: - createdBy: "Apps" - - woodpecker-agent: - container_name: ${CONTAINER_NAME}-agent - restart: always - networks: - - 1panel-network - command: agent - depends_on: - - woodpecker-server - volumes: - - ${DATA_PATH}/agent/woodpecker:/etc/woodpecker - - /var/run/docker.sock:/var/run/docker.sock - environment: - - WOODPECKER_SERVER=woodpecker-server:9000 - - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET} - image: woodpeckerci/woodpecker-agent:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/woodpecker/logo.png b/apps/woodpecker/logo.png deleted file mode 100644 index 12e6d8b79ea88cc4b4cc9e8b5485be8d67ffef03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5286 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 L${bm(@0$33a=kP- diff --git a/apps/woodpecker/mysql-latest/.env.sample b/apps/woodpecker/mysql-latest/.env.sample deleted file mode 100644 index 636852f3..00000000 --- a/apps/woodpecker/mysql-latest/.env.sample +++ /dev/null @@ -1,26 +0,0 @@ -CONTAINER_NAME="woodpecker" -PANEL_APP_PORT_HTTP="40122" -REGISTER_SWITCH="false" -WOODPECKER_AGENT_SECRET="" -DATA_PATH="./data" -WOODPECKER_HOST="http://ci.example.com" -GITEA_ENABLE_SWITCH="false" -GITHUB_ENABLE_SWITCH="true" -GITLAB_ENABLE_SWITCH="false" -BITBUCKET_ENABLE_SWITCH="false" -WOODPECKER_BITBUCKET_CLIENT="" -WOODPECKER_BITBUCKET_SECRET="" -WOODPECKER_GITEA_CLIENT="" -WOODPECKER_GITEA_SECRET="" -WOODPECKER_GITEA_URL="https://try.gitea.io" -WOODPECKER_GITHUB_CLIENT="" -WOODPECKER_GITHUB_SECRET="" -WOODPECKER_GITHUB_URL="https://github.com" -WOODPECKER_GITLAB_CLIENT="" -WOODPECKER_GITLAB_SECRET="" -WOODPECKER_GITLAB_URL="https://gitlab.com" -PANEL_DB_HOST="127.0.0.1" -WOODPECKER_DB_PORT="3306" -PANEL_DB_NAME="woodpecker" -PANEL_DB_USER="woodpecker" -PANEL_DB_USER_PASSWORD="MyDBPWD_brls9UwcRasl" diff --git a/apps/woodpecker/mysql-latest/data.yml b/apps/woodpecker/mysql-latest/data.yml deleted file mode 100644 index d540864e..00000000 --- a/apps/woodpecker/mysql-latest/data.yml +++ /dev/null @@ -1,194 +0,0 @@ -additionalProperties: - formFields: - - child: - default: "" - envKey: PANEL_DB_HOST - labelEn: Database Service - labelZh: 数据库服务 - required: true - type: service - default: mysql - labelEn: Database Service - labelZh: 数据库服务 - params: - - envKey: WOODPECKER_DB_PORT - key: mysql - type: param - value: "3306" - #- envKey: WOODPECKER_DB_PORT - # key: postgresql - - # type: param - - # value: "5432" - - required: true - type: apps - values: - - label: MySQL - value: mysql - - default: woodpecker - envKey: PANEL_DB_NAME - labelEn: Database - labelZh: 数据库名 - random: true - required: true - rule: paramCommon - type: text - - default: woodpecker - envKey: PANEL_DB_USER - labelEn: User - labelZh: 数据库用户 - random: true - required: true - rule: paramCommon - type: text - - default: woodpecker - envKey: PANEL_DB_USER_PASSWORD - labelEn: Password - labelZh: 数据库用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: 40122 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: "false" - edit: true - envKey: REGISTER_SWITCH - labelEn: Enable register (true or false) - labelZh: 启用注册(true/false) - required: true - type: text - - default: http://ci.example.com - edit: true - envKey: WOODPECKER_HOST - labelEn: External URL - labelZh: 外部访问地址 - required: true - type: text - - default: '' - edit: true - envKey: WOODPECKER_AGENT_SECRET - labelEn: Github Agent Secret Vaule - labelZh: Github Agent Secret 值 - required: true - type: text - - default: "true" - edit: true - envKey: GITHUB_ENABLE_SWITCH - labelEn: Enable Github (true or false) - labelZh: 启用Github(true/false) - required: true - type: text - - default: https://github.com - edit: true - envKey: WOODPECKER_GITHUB_URL - labelEn: Github URL - labelZh: Github地址 - required: false - type: text - - default: '' - edit: true - envKey: WOODPECKER_GITHUB_CLIENT - labelEn: Github CLIENT Vaule - labelZh: Github CLIENT 值 - required: false - type: text - - default: '' - edit: true - envKey: WOODPECKER_GITHUB_SECRET - labelEn: Github SECRET Vaule - labelZh: Github SECRET 值 - required: false - type: text - - default: "false" - edit: true - envKey: GITEA_ENABLE_SWITCH - labelEn: Enable Gitea (true or false) - labelZh: 启用Gitea(true/false) - required: true - type: text - - default: https://try.gitea.io - edit: true - envKey: WOODPECKER_GITEA_URL - labelEn: Gitea URL - labelZh: Gitea地址 - required: false - type: text - - default: '' - edit: true - envKey: WOODPECKER_GITEA_CLIENT - labelEn: Gitea CLIENT Vaule - labelZh: Gitea CLIENT 值 - required: false - type: text - - default: '' - edit: true - envKey: WOODPECKER_GITEA_SECRET - labelEn: Gitea SECRET Vaule - labelZh: Gitea SECRET 值 - required: false - type: text - - default: "false" - edit: true - envKey: GITLAB_ENABLE_SWITCH - labelEn: Enable GitLab (true or false) - labelZh: 启用GitLab (true/false) - required: true - type: text - - default: https://gitlab.com - edit: true - envKey: WOODPECKER_GITLAB_URL - labelEn: GitLab URL - labelZh: GitLab 地址 - required: false - type: text - - default: '' - edit: true - envKey: WOODPECKER_GITLAB_CLIENT - labelEn: GitLab CLIENT Vaule - labelZh: GitLab CLIENT 值 - required: false - type: text - - default: '' - edit: true - envKey: WOODPECKER_GITLAB_SECRET - labelEn: GitLab SECRET Vaule - labelZh: GitLab SECRET 值 - required: false - type: text - - default: "false" - edit: true - envKey: BITBUCKET_ENABLE_SWITCH - labelEn: Enable Bitbucket (true or false) - labelZh: 启用 Bitbucket (true/false) - required: true - type: text - - default: '' - edit: true - envKey: WOODPECKER_BITBUCKET_CLIENT - labelEn: Bitbucket CLIENT Value - labelZh: Bitbucket CLIENT 值 - required: false - type: text - - default: '' - edit: true - envKey: WOODPECKER_BITBUCKET_SECRET - labelEn: Bitbucket SECRET Value - labelZh: Bitbucket SECRET 值 - required: false - type: text diff --git a/apps/woodpecker/mysql-latest/docker-compose.yml b/apps/woodpecker/mysql-latest/docker-compose.yml deleted file mode 100644 index c40128ac..00000000 --- a/apps/woodpecker/mysql-latest/docker-compose.yml +++ /dev/null @@ -1,67 +0,0 @@ -services: - woodpecker-server: - container_name: ${CONTAINER_NAME}-server - restart: always - networks: - - 1panel-network - ports: - - ${PANEL_APP_PORT_HTTP}:8000 - volumes: - - ${DATA_PATH}/server/woodpecker:/var/lib/woodpecker/ - environment: - - WOODPECKER_OPEN=${REGISTER_SWITCH} - - WOODPECKER_HOST=${WOODPECKER_HOST} - - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET} - # GitHub - - WOODPECKER_GITHUB=${GITHUB_ENABLE_SWITCH} - - WOODPECKER_GITHUB_URL=${WOODPECKER_GITHUB_URL} - - WOODPECKER_GITHUB_CLIENT=${WOODPECKER_GITHUB_CLIENT} - - WOODPECKER_GITHUB_SECRET=${WOODPECKER_GITHUB_SECRET} - # Gitea / Forgejo - - WOODPECKER_GITEA=${GITEA_ENABLE_SWITCH} - - WOODPECKER_GITEA_URL=${WOODPECKER_GITEA_URL} - - WOODPECKER_GITEA_CLIENT=${WOODPECKER_GITEA_CLIENT} - - WOODPECKER_GITEA_SECRET=${WOODPECKER_GITEA_SECRET} - - WOODPECKER_GITEA_SKIP_VERIFY=true - # GitLab - - WOODPECKER_GITLAB=${GITLAB_ENABLE_SWITCH} - - WOODPECKER_GITLAB_URL=${WOODPECKER_GITLAB_URL} - - WOODPECKER_GITLAB_CLIENT=${WOODPECKER_GITLAB_CLIENT} - - WOODPECKER_GITLAB_SECRET=${WOODPECKER_GITLAB_SECRET} - - WOODPECKER_GITLAB_SKIP_VERIFY=true - # Bitbucket - - WOODPECKER_BITBUCKET=${BITBUCKET_ENABLE_SWITCH} - - WOODPECKER_BITBUCKET_CLIENT=${WOODPECKER_BITBUCKET_CLIENT} - - WOODPECKER_BITBUCKET_SECRET=${WOODPECKER_BITBUCKET_SECRET} - # - # MySQL - - WOODPECKER_DATABASE_DRIVER=mysql - - WOODPECKER_DATABASE_DATASOURCE=${PANEL_DB_USER}:${PANEL_DB_USER_PASSWORD}@tcp(${PANEL_DB_HOST}:${WOODPECKER_DB_PORT})/${PANEL_DB_NAME}?parseTime=true - # Postgres - #- WOODPECKER_DATABASE_DRIVER=postgres - #- WOODPECKER_DATABASE_DATASOURCE=postgres://root:password@1.2.3.4:5432/postgres?sslmode=disable - image: woodpeckerci/woodpecker-server:latest - labels: - createdBy: "Apps" - - woodpecker-agent: - container_name: ${CONTAINER_NAME}-agent - restart: always - networks: - - 1panel-network - command: agent - depends_on: - - woodpecker-server - volumes: - - ${DATA_PATH}/agent/woodpecker:/etc/woodpecker - - /var/run/docker.sock:/var/run/docker.sock - environment: - - WOODPECKER_SERVER=woodpecker-server:9000 - - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET} - image: woodpeckerci/woodpecker-agent:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/yesplaymusic/0.4.9/.env.sample b/apps/yesplaymusic/0.4.9/.env.sample deleted file mode 100644 index b6acecb4..00000000 --- a/apps/yesplaymusic/0.4.9/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="yesplaymusic" -PANEL_APP_PORT_HTTP="40075" - diff --git a/apps/yesplaymusic/0.4.9/data.yml b/apps/yesplaymusic/0.4.9/data.yml deleted file mode 100644 index faf87eb3..00000000 --- a/apps/yesplaymusic/0.4.9/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40075 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/yesplaymusic/0.4.9/docker-compose.yml b/apps/yesplaymusic/0.4.9/docker-compose.yml deleted file mode 100644 index 7d896ae5..00000000 --- a/apps/yesplaymusic/0.4.9/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -services: - yesplaymusic: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - image: fogforest/yesplaymusic:0.4.9 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/yesplaymusic/README.md b/apps/yesplaymusic/README.md deleted file mode 100644 index 7b7ee57b..00000000 --- a/apps/yesplaymusic/README.md +++ /dev/null @@ -1,260 +0,0 @@ -
-

- - Logo - -

YesPlayMusic

- -

- 高颜值的第三方网易云播放器 -
- 🌎 访问DEMO  |   - 📦️ 下载安装包  |   - 💬 加入交流群 -
-
-

-

- -[![Library][library-screenshot]](https://music.qier222.com) - - -## 全新版本 -全新2.0 Alpha测试版已发布,欢迎前往 [Releases](https://github.com/qier222/YesPlayMusic/releases) 页面下载。 -当前版本将会进入维护模式,除重大bug修复外,不会再更新新功能。 - -## ✨ 特性 - -- ✅ 使用 Vue.js 全家桶开发 -- 🔴 网易云账号登录(扫码/手机/邮箱登录) -- 📺 支持 MV 播放 -- 📃 支持歌词显示 -- 📻 支持私人 FM / 每日推荐歌曲 -- 🚫🤝 无任何社交功能 -- 🌎️ 海外用户可直接播放(需要登录网易云账号) -- 🔐 支持 [UnblockNeteaseMusic](https://github.com/UnblockNeteaseMusic/server#音源清单),自动使用[各类音源](https://github.com/UnblockNeteaseMusic/server#音源清单)替换变灰歌曲链接 (网页版不支持) - - 「各类音源」指默认启用的音源。 - - YouTube 音源需自行安装 `yt-dlp`。 -- ✔️ 每日自动签到(手机端和电脑端同时签到) -- 🌚 Light/Dark Mode 自动切换 -- 👆 支持 Touch Bar -- 🖥️ 支持 PWA,可在 Chrome/Edge 里点击地址栏右边的 ➕ 安装到电脑 -- 🟥 支持 Last.fm Scrobble -- ☁️ 支持音乐云盘 -- ⌨️ 自定义快捷键和全局快捷键 -- 🎧 支持 Mpris -- 🛠 更多特性开发中 - -## 📦️ 安装 - -Electron 版本由 [@hawtim](https://github.com/hawtim) 和 [@qier222](https://github.com/qier222) 适配并维护,支持 macOS、Windows、Linux。 - -访问本项目的 [Releases](https://github.com/qier222/YesPlayMusic/releases) -页面下载安装包。 - -- macOS 用户可以通过 Homebrew 来安装:`brew install --cask yesplaymusic` - -- Windows 用户可以通过 Scoop 来安装:`scoop install extras/yesplaymusic` - -## ⚙️ 部署至 Vercel - -除了下载安装包使用,你还可以将本项目部署到 Vercel 或你的服务器上。下面是部署到 Vercel 的方法。 - -本项目的 Demo (https://music.qier222.com) 就是部署在 Vercel 上的网站。 - -[![Powered by Vercel](https://www.datocms-assets.com/31049/1618983297-powered-by-vercel.svg)](https://vercel.com/?utm_source=ohmusic&utm_campaign=oss) - -1. 部署网易云 API,详情参见 [Binaryify/NeteaseCloudMusicApi](https://neteasecloudmusicapi.vercel.app/#/?id=%e5%ae%89%e8%a3%85) - 。你也可以将 API 部署到 Vercel。 - -2. 点击本仓库右上角的 Fork,复制本仓库到你的 GitHub 账号。 - -3. 点击仓库的 Add File,选择 Create new file,输入 `vercel.json`,将下面的内容复制粘贴到文件中,并将 `https://your-netease-api.example.com` 替换为你刚刚部署的网易云 API 地址: - -```json -{ - "rewrites": [ - { - "source": "/api/:match*", - "destination": "https://your-netease-api.example.com/:match*" - } - ] -} -``` - -4. 打开 [Vercel.com](https://vercel.com),使用 GitHub 登录。 - -5. 点击 Import Git Repository 并选择你刚刚复制的仓库并点击 Import。 - -6. 点击 PERSONAL ACCOUNT 旁边的 Select。 - -7. 点击 Environment Variables,填写 Name 为 `VUE_APP_NETEASE_API_URL`,Value 为 `/api`,点击 Add。最后点击底部的 Deploy 就可以部署到 - Vercel 了。 - -## ⚙️ 部署到自己的服务器 - -除了部署到 Vercel,你还可以部署到自己的服务器上 - -1. 部署网易云 API,详情参见 [Binaryify/NeteaseCloudMusicApi](https://github.com/Binaryify/NeteaseCloudMusicApi) -2. 克隆本仓库 - -```sh -git clone --recursive https://github.com/qier222/YesPlayMusic.git -``` - -3. 安装依赖 - -```sh -yarn install - -``` - -4. (可选)使用 Nginx 反向代理 API,将 API 路径映射为 `/api`,如果 API 和网页不在同一个域名下的话(跨域),会有一些 bug。 - -5. 复制 `/.env.example` 文件为 `/.env`,修改里面 `VUE_APP_NETEASE_API_URL` 的值为网易云 API 地址。本地开发的话可以填写 API 地址为 `http://localhost:3000`,YesPlayMusic 地址为 `http://localhost:8080`。如果你使用了反向代理 API,可以填写 API 地址为 `/api`。 - -``` -VUE_APP_NETEASE_API_URL=http://localhost:3000 -``` - -6. 编译打包 - -```sh -yarn run build -``` - -7. 将 `/dist` 目录下的文件上传到你的 Web 服务器 - -## ⚙️ Docker 部署 - -1. 构建 Docker Image - -```sh -docker build -t yesplaymusic . -``` - -2. 启动 Docker Container - -```sh -docker run -d --name YesPlayMusic -p 80:80 yesplaymusic -``` - -3. Docker Compose 启动 - -```sh -docker-compose up -d -``` - -YesPlayMusic 地址为 `http://localhost` - -## ⚙️ 部署至 Replit - -1. 新建 Repl,选择 Bash 模板 - -2. 在 Replit shell 中运行以下命令 - -```sh -bash <(curl -s -L https://raw.githubusercontent.com/qier222/YesPlayMusic/main/install-replit.sh) -``` - -3. 首次运行成功后,只需点击绿色按钮 `Run` 即可再次运行 - -4. 由于 replit 个人版限制内存为 1G(教育版为 3G),构建过程中可能会失败,请再次运行上述命令或运行以下命令: - -```sh -cd /home/runner/${REPL_SLUG}/music && yarn installl && yarn run build -``` - -## 👷‍♂️ 打包客户端 - -如果在 Release 页面没有找到适合你的设备的安装包的话,你可以根据下面的步骤来打包自己的客户端。 - -1. 打包 Electron 需要用到 Node.js 和 Yarn。可前往 [Node.js 官网](https://nodejs.org/zh-cn/) 下载安装包。安装 Node.js - 后可在终端里执行 `npm install -g yarn` 来安装 Yarn。 - -2. 使用 `git clone --recursive https://github.com/qier222/YesPlayMusic.git` 克隆本仓库到本地。 - -3. 使用 `yarn install` 安装项目依赖。 - -4. 复制 `/.env.example` 文件为 `/.env` 。 - -5. 选择下列表格的命令来打包适合的你的安装包,打包出来的文件在 `/dist_electron` 目录下。了解更多信息可访问 [electron-builder 文档](https://www.electron.build/cli) - -| 命令 | 说明 | -| ------------------------------------------ | ------------------------- | -| `yarn electron:build --windows nsis:ia32` | Windows 32 位 | -| `yarn electron:build --windows nsis:arm64` | Windows ARM | -| `yarn electron:build --linux deb:armv7l` | Debian armv7l(树莓派等) | -| `yarn electron:build --macos dir:arm64` | macOS ARM | - -## :computer: 配置开发环境 - -本项目由 [NeteaseCloudMusicApi](https://github.com/Binaryify/NeteaseCloudMusicApi) 提供 API。 - -运行本项目 - -```shell -# 安装依赖 -yarn install - -# 创建本地环境变量 -cp .env.example .env - -# 运行(网页端) -yarn serve - -# 运行(electron) -yarn electron:serve -``` - -本地运行 NeteaseCloudMusicApi,或者将 API [部署至 Vercel](#%EF%B8%8F-部署至-vercel) - -```shell -# 运行 API (默认 3000 端口) -yarn netease_api:run -``` - -## ☑️ Todo - -查看 Todo 请访问本项目的 [Projects](https://github.com/qier222/YesPlayMusic/projects/1) - -欢迎提 Issue 和 Pull request。 - -## 📜 开源许可 - -本项目仅供个人学习研究使用,禁止用于商业及非法用途。 - -基于 [MIT license](https://opensource.org/licenses/MIT) 许可进行开源。 - -## 灵感来源 - -API 源代码来自 [Binaryify/NeteaseCloudMusicApi](https://github.com/Binaryify/NeteaseCloudMusicApi) - -- [Apple Music](https://music.apple.com) -- [YouTube Music](https://music.youtube.com) -- [Spotify](https://www.spotify.com) -- [网易云音乐](https://music.163.com) - -## 🖼️ 截图 - -![lyrics][lyrics-screenshot] -![library-dark][library-dark-screenshot] -![album][album-screenshot] -![home-2][home-2-screenshot] -![artist][artist-screenshot] -![search][search-screenshot] -![home][home-screenshot] -![explore][explore-screenshot] - - - - -[album-screenshot]: https://github.com/qier222/YesPlayMusic/raw/master/images/album.png -[artist-screenshot]: https://github.com/qier222/YesPlayMusic/raw/master/images/artist.png -[explore-screenshot]: https://github.com/qier222/YesPlayMusic/raw/master/images/explore.png -[home-screenshot]: https://github.com/qier222/YesPlayMusic/raw/master/images/home.png -[home-2-screenshot]: https://github.com/qier222/YesPlayMusic/raw/master/images/home-2.png -[lyrics-screenshot]: https://github.com/qier222/YesPlayMusic/raw/master/images/lyrics.png -[library-screenshot]: https://github.com/qier222/YesPlayMusic/raw/master/images/library.png -[library-dark-screenshot]: https://github.com/qier222/YesPlayMusic/raw/master/images/library-dark.png -[search-screenshot]: https://github.com/qier222/YesPlayMusic/raw/master/images/search.png \ No newline at end of file diff --git a/apps/yesplaymusic/data.yml b/apps/yesplaymusic/data.yml deleted file mode 100644 index 16fe4c3e..00000000 --- a/apps/yesplaymusic/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: YesPlayMusic -tags: - - 多媒体 -title: 一款高颜值的第三方网易云播放器 -description: 一款高颜值的第三方网易云播放器 -additionalProperties: - key: yesplaymusic - name: YesPlayMusic - tags: - - Media - shortDescZh: 一款高颜值的第三方网易云播放器 - shortDescEn: A high-end third-party NetEase cloud player - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://music.qier222.com/ - github: https://github.com/qier222/YesPlayMusic - document: https://github.com/qier222/YesPlayMusic diff --git a/apps/yesplaymusic/latest/.env.sample b/apps/yesplaymusic/latest/.env.sample deleted file mode 100644 index b6acecb4..00000000 --- a/apps/yesplaymusic/latest/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -CONTAINER_NAME="yesplaymusic" -PANEL_APP_PORT_HTTP="40075" - diff --git a/apps/yesplaymusic/latest/data.yml b/apps/yesplaymusic/latest/data.yml deleted file mode 100644 index faf87eb3..00000000 --- a/apps/yesplaymusic/latest/data.yml +++ /dev/null @@ -1,10 +0,0 @@ -additionalProperties: - formFields: - - default: 40075 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/yesplaymusic/latest/docker-compose.yml b/apps/yesplaymusic/latest/docker-compose.yml deleted file mode 100644 index 5668de25..00000000 --- a/apps/yesplaymusic/latest/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -services: - yesplaymusic: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - image: fogforest/yesplaymusic:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/yesplaymusic/logo.png b/apps/yesplaymusic/logo.png deleted file mode 100644 index 7aac808e6d5269ab5e688ce2f541cb534d6b3930..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4120 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 - - YOURLS - -

- -> Your Own URL Shortener - -![CI](https://github.com/YOURLS/YOURLS/workflows/CI/badge.svg) [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/YOURLS/YOURLS/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/YOURLS/YOURLS/?branch=master) ![PHP Version Support](https://img.shields.io/packagist/php-v/yourls/yourls) [![Packagist](https://img.shields.io/packagist/v/yourls/yourls.svg)](https://packagist.org/packages/yourls/yourls) [![OpenCollective](https://opencollective.com/yourls/backers/badge.svg)](https://opencollective.com/yourls#contributors) -[![OpenCollective](https://opencollective.com/yourls/sponsors/badge.svg)](#sponsors) - -**YOURLS** is a set of PHP scripts that will allow you to run Your Own URL Shortener, on **your** server. You'll have full control over your data, detailed stats, analytics, plugins, and more. It's free and open-source. - -## Quick Start - -Get YOURLS : -* Download the latest [release](https://github.com/YOURLS/YOURLS/releases) -* Using Composer? You can simply `composer create-project yourls/yourls .` in an empty directory. - -Install YOURLS: -* Read [yourls.org](https://yourls.org) for starters -* The complete documentation is on [docs.yourls.org](https://docs.yourls.org) and contains everything from beginners to experts. - -## Community news, tips and tricks - -* Read and subscribe to the [The Official YOURLS Blog](http://blog.yourls.org) -* Check what the user community makes: plugins, tools, guides and more on [Awesome YOURLS](https://github.com/YOURLS/awesome-yourls) -* Engage users and ask for help in our [community discussions](https://github.com/YOURLS/YOURLS/discussions) -* Keep track of development: "Star" and "Watch" this project, follow [commit messages](https://github.com/YOURLS/YOURLS/commits/master) - -## Contributing - -Feature suggestion? Bug to report? - -__Before opening any issue, please search for existing [issues](https://github.com/YOURLS/YOURLS/issues) (open and closed) and read the [Contributing Guidelines](https://github.com/YOURLS/.github/blob/master/CONTRIBUTING.md).__ - - -## Backers - -Do you use and enjoy YOURLS? [Become a backer](https://opencollective.com/yourls#backer) and show your support to our open source project. - -[![](https://opencollective.com/yourls/backer/0/avatar.svg)](https://opencollective.com/yourls/backer/0/website) -[![](https://opencollective.com/yourls/backer/1/avatar.svg)](https://opencollective.com/yourls/backer/1/website) -[![](https://opencollective.com/yourls/backer/2/avatar.svg)](https://opencollective.com/yourls/backer/2/website) -[![](https://opencollective.com/yourls/backer/3/avatar.svg)](https://opencollective.com/yourls/backer/3/website) -[![](https://opencollective.com/yourls/backer/4/avatar.svg)](https://opencollective.com/yourls/backer/4/website) -[![](https://opencollective.com/yourls/backer/5/avatar.svg)](https://opencollective.com/yourls/backer/5/website) -[![](https://opencollective.com/yourls/backer/6/avatar.svg)](https://opencollective.com/yourls/backer/6/website) -[![](https://opencollective.com/yourls/backer/7/avatar.svg)](https://opencollective.com/yourls/backer/7/website) -[![](https://opencollective.com/yourls/backer/8/avatar.svg)](https://opencollective.com/yourls/backer/8/website) -[![](https://opencollective.com/yourls/backer/9/avatar.svg)](https://opencollective.com/yourls/backer/9/website) -[![](https://opencollective.com/yourls/backer/10/avatar.svg)](https://opencollective.com/yourls/backer/10/website) -[![](https://opencollective.com/yourls/backer/11/avatar.svg)](https://opencollective.com/yourls/backer/11/website) -[![](https://opencollective.com/yourls/backer/12/avatar.svg)](https://opencollective.com/yourls/backer/12/website) -[![](https://opencollective.com/yourls/backer/13/avatar.svg)](https://opencollective.com/yourls/backer/13/website) -[![](https://opencollective.com/yourls/backer/14/avatar.svg)](https://opencollective.com/yourls/backer/14/website) -[![](https://opencollective.com/yourls/backer/15/avatar.svg)](https://opencollective.com/yourls/backer/15/website) -[![](https://opencollective.com/yourls/backer/16/avatar.svg)](https://opencollective.com/yourls/backer/16/website) -[![](https://opencollective.com/yourls/backer/17/avatar.svg)](https://opencollective.com/yourls/backer/17/website) -[![](https://opencollective.com/yourls/backer/18/avatar.svg)](https://opencollective.com/yourls/backer/18/website) -[![](https://opencollective.com/yourls/backer/19/avatar.svg)](https://opencollective.com/yourls/backer/19/website) -[![](https://opencollective.com/yourls/backer/20/avatar.svg)](https://opencollective.com/yourls/backer/20/website) -[![](https://opencollective.com/yourls/backer/21/avatar.svg)](https://opencollective.com/yourls/backer/21/website) -[![](https://opencollective.com/yourls/backer/22/avatar.svg)](https://opencollective.com/yourls/backer/22/website) -[![](https://opencollective.com/yourls/backer/23/avatar.svg)](https://opencollective.com/yourls/backer/23/website) -[![](https://opencollective.com/yourls/backer/24/avatar.svg)](https://opencollective.com/yourls/backer/24/website) -[![](https://opencollective.com/yourls/backer/25/avatar.svg)](https://opencollective.com/yourls/backer/25/website) -[![](https://opencollective.com/yourls/backer/26/avatar.svg)](https://opencollective.com/yourls/backer/26/website) -[![](https://opencollective.com/yourls/backer/27/avatar.svg)](https://opencollective.com/yourls/backer/27/website) -[![](https://opencollective.com/yourls/backer/28/avatar.svg)](https://opencollective.com/yourls/backer/28/website) -[![](https://opencollective.com/yourls/backer/29/avatar.svg)](https://opencollective.com/yourls/backer/29/website) - - -## Sponsors - -Does your company use YOURLS? Ask your manager or marketing team if your company would be interested in supporting our project. Your company logo will show here. Help support our open-source development efforts by [becoming a sponsor](https://opencollective.com/yourls). - -[![](https://opencollective.com/yourls/sponsor/0/avatar.svg)](https://opencollective.com/yourls/sponsor/0/website) -[![](https://opencollective.com/yourls/sponsor/1/avatar.svg)](https://opencollective.com/yourls/sponsor/1/website) -[![](https://opencollective.com/yourls/sponsor/2/avatar.svg)](https://opencollective.com/yourls/sponsor/2/website) -[![](https://opencollective.com/yourls/sponsor/3/avatar.svg)](https://opencollective.com/yourls/sponsor/3/website) -[![](https://opencollective.com/yourls/sponsor/4/avatar.svg)](https://opencollective.com/yourls/sponsor/4/website) -[![](https://opencollective.com/yourls/sponsor/5/avatar.svg)](https://opencollective.com/yourls/sponsor/5/website) -[![](https://opencollective.com/yourls/sponsor/6/avatar.svg)](https://opencollective.com/yourls/sponsor/6/website) -[![](https://opencollective.com/yourls/sponsor/7/avatar.svg)](https://opencollective.com/yourls/sponsor/7/website) -[![](https://opencollective.com/yourls/sponsor/8/avatar.svg)](https://opencollective.com/yourls/sponsor/8/website) -[![](https://opencollective.com/yourls/sponsor/9/avatar.svg)](https://opencollective.com/yourls/sponsor/9/website) -[![](https://opencollective.com/yourls/sponsor/10/avatar.svg)](https://opencollective.com/yourls/sponsor/10/website) -[![](https://opencollective.com/yourls/sponsor/11/avatar.svg)](https://opencollective.com/yourls/sponsor/11/website) -[![](https://opencollective.com/yourls/sponsor/12/avatar.svg)](https://opencollective.com/yourls/sponsor/12/website) -[![](https://opencollective.com/yourls/sponsor/13/avatar.svg)](https://opencollective.com/yourls/sponsor/13/website) -[![](https://opencollective.com/yourls/sponsor/14/avatar.svg)](https://opencollective.com/yourls/sponsor/14/website) -[![](https://opencollective.com/yourls/sponsor/15/avatar.svg)](https://opencollective.com/yourls/sponsor/15/website) -[![](https://opencollective.com/yourls/sponsor/16/avatar.svg)](https://opencollective.com/yourls/sponsor/16/website) -[![](https://opencollective.com/yourls/sponsor/17/avatar.svg)](https://opencollective.com/yourls/sponsor/17/website) -[![](https://opencollective.com/yourls/sponsor/18/avatar.svg)](https://opencollective.com/yourls/sponsor/18/website) -[![](https://opencollective.com/yourls/sponsor/19/avatar.svg)](https://opencollective.com/yourls/sponsor/19/website) - - -## License - -Free software. Do whatever the hell you want with it. -YOURLS is released under the [MIT license](LICENSE). diff --git a/apps/yourls/data.yml b/apps/yourls/data.yml deleted file mode 100644 index f2ab8422..00000000 --- a/apps/yourls/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: YOURLS -tags: - - 工具 -title: PHP驱动的标准自托管URL缩短器 -description: PHP驱动的标准自托管URL缩短器 -additionalProperties: - key: yourls - name: YOURLS - tags: - - Tool - shortDescZh: PHP驱动的标准自托管URL缩短器 - shortDescEn: The de facto standard self hosted URL shortener in PHP - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://yourls.org/ - github: https://github.com/YOURLS/YOURLS - document: https://yourls.org/docs diff --git a/apps/yourls/latest/.env.sample b/apps/yourls/latest/.env.sample deleted file mode 100644 index ec6e176a..00000000 --- a/apps/yourls/latest/.env.sample +++ /dev/null @@ -1,12 +0,0 @@ -CONTAINER_NAME="yourls" -DATA_PATH="./data" -PANEL_APP_PORT_HTTP="40037" -PANEL_DB_HOST="mysql" -PANEL_DB_NAME="yourls_PXHwjZ" -PANEL_DB_PREFIX="yourls_" -PANEL_DB_USER="yourls_Ytnm8T" -PANEL_DB_USER_PASSWORD="yourls_yyX7PP" -PASSWORD="yourls_4CWtCw" -USERNAME="yourls_hYC4zp" -YOURLS_DB_PORT="3306" -YOURLS_EXTERNAL_URL="http://localhost:40037" diff --git a/apps/yourls/latest/data.yml b/apps/yourls/latest/data.yml deleted file mode 100644 index 6a80e81a..00000000 --- a/apps/yourls/latest/data.yml +++ /dev/null @@ -1,94 +0,0 @@ -additionalProperties: - formFields: - - child: - default: "" - envKey: PANEL_DB_HOST - labelEn: Database Service - labelZh: 数据库服务 - required: true - type: service - default: mysql - labelEn: Database Service - labelZh: 数据库服务 - params: - - envKey: YOURLS_DB_PORT - key: mysql - type: param - value: "3306" - - envKey: YOURLS_DB_PORT - key: postgresql - type: param - value: "5432" - required: true - type: apps - values: - - label: MySQL - value: mysql - - default: yourls - envKey: PANEL_DB_NAME - labelEn: Database - labelZh: 数据库名 - random: true - required: true - rule: paramCommon - type: text - - default: yourls - envKey: PANEL_DB_USER - labelEn: User - labelZh: 数据库用户 - random: true - required: true - rule: paramCommon - type: text - - default: yourls - envKey: PANEL_DB_USER_PASSWORD - labelEn: Password - labelZh: 数据库用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: yourls_ - envKey: PANEL_DB_PREFIX - labelEn: Database prefix - labelZh: 数据库前缀 - required: true - type: text - - default: 40037 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: yourls - envKey: USERNAME - labelEn: User - labelZh: 用户 - random: true - required: true - rule: paramCommon - type: text - - default: yourls - envKey: PASSWORD - labelEn: Password - labelZh: 用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: http://localhost:40037 - edit: true - envKey: YOURLS_EXTERNAL_URL - labelEn: External URL - labelZh: 外部访问地址 - required: true - type: text diff --git a/apps/yourls/latest/docker-compose.yml b/apps/yourls/latest/docker-compose.yml deleted file mode 100644 index c5ab0203..00000000 --- a/apps/yourls/latest/docker-compose.yml +++ /dev/null @@ -1,26 +0,0 @@ -services: - yourls: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:80" - volumes: - - "${DATA_PATH}:/var/www/html" - environment: - - YOURLS_SITE=${YOURLS_EXTERNAL_URL} - - YOURLS_USER=${USERNAME} - - YOURLS_PASS=${PASSWORD} - - YOURLS_DB_HOST=${PANEL_DB_HOST}:${YOURLS_DB_PORT} - - YOURLS_DB_NAME=${PANEL_DB_NAME} - - YOURLS_DB_USER=${PANEL_DB_USER} - - YOURLS_DB_PASS=${PANEL_DB_USER_PASSWORD} - - YOURLS_DB_PREFIX=${PANEL_DB_PREFIX} - image: yourls:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/yourls/logo.png b/apps/yourls/logo.png deleted file mode 100644 index 8fecff3e261dd6e52eec8a1b9da531ffcab2cf76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5534 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 bF3DnkeoE)Wr~J4wTmf3@dTQm5o=5!;Z=bks diff --git a/apps/zabbix-agent/6.4.4/.env.sample b/apps/zabbix-agent/6.4.4/.env.sample deleted file mode 100644 index 46f37d49..00000000 --- a/apps/zabbix-agent/6.4.4/.env.sample +++ /dev/null @@ -1,5 +0,0 @@ -CONTAINER_NAME="zabbix-agent" -PANEL_APP_PORT_HTTP="10050" -HOSTNAME="127.0.0.1" -ZABBIX_SERVER="192.168.8.8" -ZABBIX_SERVER_PORT="10051" diff --git a/apps/zabbix-agent/6.4.4/data.yml b/apps/zabbix-agent/6.4.4/data.yml deleted file mode 100644 index 6f3d104f..00000000 --- a/apps/zabbix-agent/6.4.4/data.yml +++ /dev/null @@ -1,32 +0,0 @@ -additionalProperties: - formFields: - - default: 10050 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: 127.0.0.1 - edit: true - envKey: HOSTNAME - labelEn: Native host name - labelZh: 本机主机名 - required: true - type: text - - default: 192.168.8.8 - edit: true - envKey: ZABBIX_SERVER - labelEn: Zabbix server - labelZh: Zabbix服务端 - required: true - type: text - - default: 10051 - edit: true - envKey: ZABBIX_SERVER_PORT - labelEn: Zabbix server P-port - labelZh: Zabbix服务端端口 - required: true - rule: paramPort - type: number diff --git a/apps/zabbix-agent/6.4.4/docker-compose.yml b/apps/zabbix-agent/6.4.4/docker-compose.yml deleted file mode 100644 index ccf91849..00000000 --- a/apps/zabbix-agent/6.4.4/docker-compose.yml +++ /dev/null @@ -1,19 +0,0 @@ -services: - zabbix-agent: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:10050" - environment: - - ZBX_HOSTNAME=${HOSTNAME} - - ZBX_SERVER_HOST=${ZABBIX_SERVER} - - ZBX_SERVER_PORT=${ZABBIX_SERVER_PORT} - image: zabbix/zabbix-agent:alpine-6.4.4 - labels: - createdBy: Apps - -networks: - 1panel-network: - external: true diff --git a/apps/zabbix-agent/README.md b/apps/zabbix-agent/README.md deleted file mode 100644 index 2035c7bd..00000000 --- a/apps/zabbix-agent/README.md +++ /dev/null @@ -1,32 +0,0 @@ -Zabbix is free software, released under the GNU General Public License -(GPL) version 2. - -You can redistribute it and/or modify it under the terms of the GNU GPL -as published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The formal terms of the GPL can be found at -http://www.fsf.org/licenses/ . - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -Exception for linking with OpenSSL - -In addition, as a special exception, we give permission to link the code -of Zabbix with the OpenSSL project OpenSSL library (or with modified -versions of it that use the same license as the OpenSSL library), and -distribute the linked executables. - -Please see https://www.zabbix.com/ for detailed information about Zabbix. - -On-line Zabbix documentation is available at -https://www.zabbix.com/documentation/6.2/manual/ . - -Zabbix installation instructions can be found at -https://www.zabbix.com/documentation/6.2/manual/installation/ . - -If you are installing Zabbix from packages the instructions can be found at -https://www.zabbix.com/documentation/6.2/manual/installation/install_from_packages/ . \ No newline at end of file diff --git a/apps/zabbix-agent/data.yml b/apps/zabbix-agent/data.yml deleted file mode 100644 index 7e663fd3..00000000 --- a/apps/zabbix-agent/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Zabbix-Agent -tags: - - 工具 -title: 实时监控 IT 组件和服务(监控端) -description: 实时监控 IT 组件和服务(监控端) -additionalProperties: - key: zabbix-agent - name: Zabbix-Agent - tags: - - Tool - shortDescZh: 实时监控 IT 组件和服务(监控端) - shortDescEn: Real-time monitoring of IT components and services (Agent) - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://www.zabbix.com/ - github: https://github.com/zabbix/zabbix - document: https://www.zabbix.com/manuals diff --git a/apps/zabbix-agent/latest/.env.sample b/apps/zabbix-agent/latest/.env.sample deleted file mode 100644 index 46f37d49..00000000 --- a/apps/zabbix-agent/latest/.env.sample +++ /dev/null @@ -1,5 +0,0 @@ -CONTAINER_NAME="zabbix-agent" -PANEL_APP_PORT_HTTP="10050" -HOSTNAME="127.0.0.1" -ZABBIX_SERVER="192.168.8.8" -ZABBIX_SERVER_PORT="10051" diff --git a/apps/zabbix-agent/latest/data.yml b/apps/zabbix-agent/latest/data.yml deleted file mode 100644 index 6f3d104f..00000000 --- a/apps/zabbix-agent/latest/data.yml +++ /dev/null @@ -1,32 +0,0 @@ -additionalProperties: - formFields: - - default: 10050 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: 127.0.0.1 - edit: true - envKey: HOSTNAME - labelEn: Native host name - labelZh: 本机主机名 - required: true - type: text - - default: 192.168.8.8 - edit: true - envKey: ZABBIX_SERVER - labelEn: Zabbix server - labelZh: Zabbix服务端 - required: true - type: text - - default: 10051 - edit: true - envKey: ZABBIX_SERVER_PORT - labelEn: Zabbix server P-port - labelZh: Zabbix服务端端口 - required: true - rule: paramPort - type: number diff --git a/apps/zabbix-agent/latest/docker-compose.yml b/apps/zabbix-agent/latest/docker-compose.yml deleted file mode 100644 index 77458242..00000000 --- a/apps/zabbix-agent/latest/docker-compose.yml +++ /dev/null @@ -1,19 +0,0 @@ -services: - zabbix-agent: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:10050" - environment: - - ZBX_HOSTNAME=${HOSTNAME} - - ZBX_SERVER_HOST=${ZABBIX_SERVER} - - ZBX_SERVER_PORT=${ZABBIX_SERVER_PORT} - image: zabbix/zabbix-agent:alpine-latest - labels: - createdBy: Apps - -networks: - 1panel-network: - external: true diff --git a/apps/zabbix-agent/logo.png b/apps/zabbix-agent/logo.png deleted file mode 100644 index 8cabcacd99d0b44bec7adecef6f438552f7fd42c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5442 zcmd^DS635Uv*uMqq!O0jGAMM=R(eD5uSxgF6BX;K zwiNC3KS9^w4lHHk&M?=BZAc++D9Upbi9~4uI(VRlfq}9-Oz}aVXx(I3>tV2vt1XQF zK4CW(-q)w#d69+A$4VTOrIybl;oaa`;$-zpi&3s7PpHFp28iHiSk3YF)GyJeVdrfE z?hDTu5kXA_bJN7{43BZ|__p?tzRI^b&WAa`jLBkwa>&m z2MFN@Z~B*fj!~Yie~Eoj_Wh4rLpr&oCem@ZdVWFSY5YL*_2aFrI{AVAWq)Z2NrU-x0AfzmH-(JjXO_ym9M&E^Q!w7*3Uj5h8he&O=2 zy%{$y2PrOE8YFmJM_Y@Kzp#3y{ZXLW2qmH3*F~ zo7_vEIm`TA$8cTU5A|hy-Po(X%Oybe%0jTyB}CcbIDtC|5jor#QNgAVVYBYWmBO#} zcf8EPnkz(b6em}%(XAn3W66LD_D$dx=&Szmxyjk+HDU3azQx?^g}ki zTmoGQJFTmypI@N!EG_14T*G1bc7pa=IiK@^v`xA$8h+veVzgt@yDldZ6zm?;VCKR` zRXDR)QM7s`u`Dd-tA8)GqCbl>@k}0HEMQqX|Ei)J!<`(et51XQM%svoaNYfpLJE)k z)$A^PMh(p~OcvCdiu(RXnfi64(Vst7A1D@b>pTP%tbTPIoi zxjxc9OWl(5a=!k@4(OX)$=+dmPomkJqt&;ZMyC}c4(fE*)(HKazE69CTSBAA2G`Lm z980pHC$9A1glX4D`dL|1^ZljJ2t@^_N1RgdEX8BUlgthKIaR3wHF0m(@((4M%BWTm z6>X`9$E!New?Hv*rI{=J^$CZ&=!urc!3*K4Xby7OF+L*k#C1GJvaA)BJpQ3w)nncn zPWXG3sX`2*1sTojT+ct>MeUYx;PU1E7=i_3d37FomqPi3i6wWas(w#&bd;8yu(55+ z{Q9=(_x{@+)?rK1b+S8y@5oK`-%g${7Nw<~LN0h8Orhrd}h?zJpEI+e0h0mUQW;6{ze%VFr05| zQXNw`sy3?3^7tN0(K#;AK&U_EC*A$mA_lct(vHai^YQZ6IGu%6@#z8QEwuFH`?MyW zIO_&wpL_S8TnQ#7HS&(Q1NAVood7kz*)CU{68^Ig$jI&;H8Y-Oa{De2RIX6EdlM8X*wgBp?a^S9%Qeu+TO1BYEk2H1 z*0}E0q+p6ojnJUTCFwTk_{!CPDO6cG=a}*%(8EW7Gw@O53UX-zx*}% z5-hkH8QWZk2>%u>re|W3h`Nd^uhhj69xzES>twj6hwdA2^8@=OZPwSf8=H`5*Kv;gHP+2c@vgd3ATS78+hQGVpcwvTK|J$8 zT}er9rgl&n8;(srg?;BtMLA&8ej%ub_(_6~?^#Zf;nTc4^4Bow%(Tf#(nXh_L%@May3^_xbKIYswI?5Z*5FN$x53xXE7YBa@!GUjAove(?Pe{m8BfFM@lw z?dU!Z38Q&oh2M+|o2sc)?-T&cBr}V{{Y9*JCCto2WUUtO_t`vsI^F7?JMOjqqhx>F zYitK!Xm3)@-oI?L@a?r|i#11Do+>wpx>y-y(Bw!PIiKcWfIgYGNB9SvBaX)Dg|e)B z0~gTB($hP0Sm~KVl0SRf40*y2f+-#(2T^l{?^pMR_Ad+VV-Y`u56xX&wMDQrTqu_ z`K4AR>TzcidbE9q8&}U;_6671vTNx;UV3+}ucn_qig@PlIWMTE6gESY7Gmnx-WZu8 zWM^ueA1M8hmCbH5Z}3z06df9x(4(d{u#*!-vD(C$vEGbsabr0^A1{P$yR>^t_b!piRrJ^Kem} zgnOQ%D%_M-Lw{Dbj&*ck(`@qX=Mrc3tNmOSX+RykZEDiqXFhS)!F1Qiz7qO_s#R{C z%!nnhs8H5Hx4Vn;2j^lnH9s1QRz0qs0&|G%O4Qm}7=-~f#H}X6e2;&XP|TWDd)qI8IqIkS2zxV< zN+kBzH8M=;h@t8@9Pu_vVuoUN@Vl6M1z7(0po7(hm_lWa#>c&*>RwFVE zF>6yzO7edey112;jHDbAy*HgG;+B>*s~B{2KvAkQSESl4Y*5J7&u5wp4&2)LX;=}r zG~YTL9)J7i{jkgvT=tS_Nc+k2g2sw?i>OK%R@p-3trT zN7jawTVZN&PXErMZSO%4WvugL)&rP^wl)(A=XLIPhMuauuEek@`0{%~gq=0(eujsO zYmHQa$~I=E!jIrC#K`6rY2V|B*5&Q#rYi%SM*)p|T6>#d3JqjcK;St&_|i%#?$)g9 zaQUce?LF|L!_P339&P`||Af==>_FJ=aa?!~7CX_iqFxno0lUG-HcXwhyNp zN`ond@Ihs)Jm1^6OZ@ldO?_eYkPNwr($ejJc{Wmj{F?Ww^r+v_-ptZxu*4!Sv#8IP z7d^%n%q@ItF#5xdS~~D0wdm|@w6TwNQsQiRY;5qnT+bF}jTBzmJVpl)$l6?wdOvzG z<^-R#EiNSa(^NRsiC*PArVsYhm_Ju3i`jA7eb4pBu%3gc;mv}typ(rZy?8teDeBFk zC$c{%d1SmUgDBjZes`{u1|f>@CAF+HTT;^ZxD=RK7)$ZyTv74z*1dzMtoiL$?)|pw z5;F{l{TGVJtE9k^m!j|n_)ShP@`KP& zv^OHBI(SxQdU|T@Pt2=EQb$j#;VdXVmZuVWsr<(N?&ROIjdsbUwAED^BSXWnUw%># z=cQ^&OBw0OJ%jI+VHYF{6d7993P_I%pPL7~4Sf2K-?mg$XR6xmQ~kZv3JOoO_JwDJ zy{+FDp4zCQK>Q#=M($v5i9Rn|UiF~5>fvp~oO+UvPe=xU3$Co%xDwc9!Yclp9Ud#@ zoiFFYp0`PAlP{lJ;5xj^FkV?<=)6~rzLYw;tO=1PIBG@Kw{T;@f`*K38|07Z%Pw>d zgYJ8YUKrj+=}Tjyo`P$piPu!V9HQCLSG}=`CUWtgidtj)4;SO!LRApRBbuJJ>n6+i z4l0m-vR1{bIX3jFUm%ux^*|)vkx5ejYon<-6BFSVq+l^tpN`&cWZc1Rlr#~U zq3$rYUOg+=gY`><|M>c97A=rKmsFvlJy0U=EMsPBDxbntyuJ5&b@#2Kc5d>BQT1eu z_RIZjgyok8p*ud1lo1j~{cn zFKBU1%?BOm?5pM6V*w4lRK<3l|0SMG#|wU4pdxX$S&VjOKg=y(esmL-L;uArL__?U zb?=oUJ)}TE^3V)MQM~i_ znE-ewI$Gv?bGt6L_dY)7y)FP%%xPUVPK(9GS#}f!t};40x(<$wc}=?`Qy*`3T@eJz zup2jOAlq-*mMVvae2fB+S7GWoMVw*@iQtwv=$B7&`JD7IsCZep?A>z_-HL$4B=G_K z$--z0vL(o$UeI1Dm-5}fwsp2_?s;8({cO}qztz9vl@zpXeJWh+ZlU2o_&&W4k&VaC zjYh@pB7pj&m4s?14B!6H6DpmJs5b~XJjT|(kau6qa=$f)!XihD)i$jGr;$|um=hcI zZj-g&_%9o?XxeV2Yh)2(UNQeamu>&MMZ5&au@@=UFri30Q8F?eO+$?aux<2z0G^0R A5dZ)H diff --git a/apps/zabbix-server/6.4.13&mysql/.env.sample b/apps/zabbix-server/6.4.13&mysql/.env.sample deleted file mode 100644 index 6f17280a..00000000 --- a/apps/zabbix-server/6.4.13&mysql/.env.sample +++ /dev/null @@ -1,7 +0,0 @@ -CONTAINER_NAME="zabbix-server" -PANEL_APP_PORT_HTTP2="10051" -PANEL_APP_PORT_HTTP="40047" -PANEL_DB_NAME="zabbix" -PANEL_DB_USER="zabbix" -PANEL_DB_USER_PASSWORD="MyDBPWD_brls9UwcRasl" -MYSQL_PASSWORD="MySQL_root_pwd" \ No newline at end of file diff --git a/apps/zabbix-server/6.4.13&mysql/conf/my.cnf b/apps/zabbix-server/6.4.13&mysql/conf/my.cnf deleted file mode 100644 index 30e94200..00000000 --- a/apps/zabbix-server/6.4.13&mysql/conf/my.cnf +++ /dev/null @@ -1,19 +0,0 @@ -[mysqld] -skip-host-cache -skip-name-resolve -datadir=/var/lib/mysql -socket=/var/run/mysqld/mysqld.sock -secure-file-priv=/var/lib/mysql-files -user=mysql - - -character_set_server=utf8 -lower_case_table_names=1 -group_concat_max_len=1024000 -log_bin_trust_function_creators=1 - -pid-file=/var/run/mysqld/mysqld.pid -[client] -socket=/var/run/mysqld/mysqld.sock - -!includedir /etc/mysql/conf.d/ \ No newline at end of file diff --git a/apps/zabbix-server/6.4.13&mysql/data.yml b/apps/zabbix-server/6.4.13&mysql/data.yml deleted file mode 100644 index 66045d54..00000000 --- a/apps/zabbix-server/6.4.13&mysql/data.yml +++ /dev/null @@ -1,50 +0,0 @@ -additionalProperties: - formFields: - - default: zabbix - envKey: MYSQL_PASSWORD - labelEn: MySQL root Password - labelZh: 数据库root密码 - random: true - required: true - rule: paramComplexity - type: password - - default: zabbix - envKey: PANEL_DB_NAME - labelEn: Database - labelZh: 数据库名 - random: true - required: true - rule: paramCommon - type: text - - default: zabbix - envKey: PANEL_DB_USER - labelEn: User - labelZh: 数据库用户 - random: true - required: true - rule: paramCommon - type: text - - default: zabbix - envKey: PANEL_DB_USER_PASSWORD - labelEn: Password - labelZh: 数据库用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: 10051 - edit: true - envKey: PANEL_APP_PORT_HTTP2 - labelEn: Gateway port - labelZh: 网关端口 - required: true - rule: paramPort - type: number - - default: 40047 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/zabbix-server/6.4.13&mysql/docker-compose.yml b/apps/zabbix-server/6.4.13&mysql/docker-compose.yml deleted file mode 100644 index 171051e3..00000000 --- a/apps/zabbix-server/6.4.13&mysql/docker-compose.yml +++ /dev/null @@ -1,76 +0,0 @@ -services: - mysql-server: - container_name: ${CONTAINER_NAME}-mysql - restart: always - networks: - - 1panel-network - volumes: - - ./data/:/var/lib/mysql - - ./conf/my.cnf:/etc/my.cnf - - ./log:/var/log/mysql - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro - environment: - - MYSQL_DATABASE=${PANEL_DB_NAME} - - MYSQL_USER=${PANEL_DB_USER} - - MYSQL_PASSWORD=${PANEL_DB_USER_PASSWORD} - - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD} - command: --character-set-server=utf8 --collation-server=utf8_bin --default-authentication-plugin=mysql_native_password - image: mysql:8.0.36 - labels: - createdBy: Apps - - zabbix-server-mysql: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP2}:10051" - environment: - - DB_SERVER_HOST=mysql-server - - DB_SERVER_PORT=3306 - - MYSQL_DATABASE=${PANEL_DB_NAME} - - MYSQL_USER=${PANEL_DB_USER} - - MYSQL_PASSWORD=${PANEL_DB_USER_PASSWORD} - - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD} - - ZBX_JAVAGATEWAY=zabbix-java-gateway - image: zabbix/zabbix-server-mysql:alpine-6.4.13 - depends_on: - - zabbix-java-gateway - - mysql-server - labels: - createdBy: Apps - - zabbix-java-gateway: - container_name: ${CONTAINER_NAME}-gateway - restart: always - networks: - - 1panel-network - image: zabbix/zabbix-java-gateway:alpine-6.4.13 - labels: - createdBy: Apps - - zabbix-web-nginx-mysql: - container_name: ${CONTAINER_NAME}-nginx - restart: always - networks: - - 1panel-network - environment: - - ZBX_SERVER_HOST=zabbix-server-mysql - - DB_SERVER_HOST=mysql-server - - MYSQL_DATABASE=${PANEL_DB_NAME} - - MYSQL_USER=${PANEL_DB_USER} - - MYSQL_PASSWORD=${PANEL_DB_USER_PASSWORD} - - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD} - ports: - - ${PANEL_APP_PORT_HTTP}:8080 - image: zabbix/zabbix-web-nginx-mysql:alpine-6.4.13 - depends_on: - - zabbix-server-mysql - - mysql-server - labels: - createdBy: Apps -networks: - 1panel-network: - external: true diff --git a/apps/zabbix-server/6.4.13-postgres/.env.sample b/apps/zabbix-server/6.4.13-postgres/.env.sample deleted file mode 100644 index cd31b76b..00000000 --- a/apps/zabbix-server/6.4.13-postgres/.env.sample +++ /dev/null @@ -1,8 +0,0 @@ -CONTAINER_NAME="zabbix-server" -PANEL_APP_PORT_COMM="10051" -PANEL_APP_PORT_HTTP="40047" -PANEL_APP_PORT_SNMP="1162" -PANEL_DB_HOST="127.0.0.1" -PANEL_DB_NAME="zabbix" -PANEL_DB_USER="zabbix" -PANEL_DB_USER_PASSWORD="MyDBPWD_brls9UwcRasl" \ No newline at end of file diff --git a/apps/zabbix-server/6.4.13-postgres/data.yml b/apps/zabbix-server/6.4.13-postgres/data.yml deleted file mode 100644 index 12970b4a..00000000 --- a/apps/zabbix-server/6.4.13-postgres/data.yml +++ /dev/null @@ -1,58 +0,0 @@ -additionalProperties: - formFields: - - default: "" - edit: true - envKey: PANEL_DB_HOST - key: postgresql - labelEn: Database Service - labelZh: 数据库服务 - required: true - type: service - - default: zabbix - envKey: PANEL_DB_NAME - labelEn: Database - labelZh: 数据库名 - random: true - required: true - rule: paramCommon - type: text - - default: zabbix - envKey: PANEL_DB_USER - labelEn: User - labelZh: 数据库用户 - random: true - required: true - rule: paramCommon - type: text - - default: zabbix - envKey: PANEL_DB_USER_PASSWORD - labelEn: Password - labelZh: 数据库用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: 10051 - edit: true - envKey: PANEL_APP_PORT_COMM - labelEn: Gateway port - labelZh: 网关端口 - required: true - rule: paramPort - type: number - - default: 40047 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: 1162 - edit: true - envKey: PANEL_APP_PORT_SNMP - labelEn: Snmptraps Port - labelZh: Snmptraps 端口 - required: true - rule: paramPort - type: number diff --git a/apps/zabbix-server/6.4.13-postgres/data/.gitkeep b/apps/zabbix-server/6.4.13-postgres/data/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/zabbix-server/6.4.13-postgres/docker-compose.yml b/apps/zabbix-server/6.4.13-postgres/docker-compose.yml deleted file mode 100644 index a76c0a10..00000000 --- a/apps/zabbix-server/6.4.13-postgres/docker-compose.yml +++ /dev/null @@ -1,55 +0,0 @@ -services: - zabbix-snmptraps: - container_name: ${CONTAINER_NAME}-snmptraps - image: zabbix/zabbix-snmptraps:alpine-6.4.13 - volumes: - - ./data/snmptraps:/var/lib/zabbix/snmptraps:rw - - ./data/mibs:/usr/share/snmp/mibs:ro - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_SNMP}:1162/udp" - restart: always - labels: - createdBy: Apps - - zabbix-server-pgsql: - container_name: ${CONTAINER_NAME} - image: zabbix/zabbix-server-pgsql:alpine-6.4.13 - environment: - - DB_SERVER_HOST=${PANEL_DB_HOST} - - POSTGRES_USER=${PANEL_DB_USER} - - POSTGRES_PASSWORD=${PANEL_DB_USER_PASSWORD} - - POSTGRES_DB=${PANEL_DB_NAME} - - ZBX_ENABLE_SNMP_TRAPS=true - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_COMM}:10051" - volumes: - - ./data/snmptraps:/var/lib/zabbix/snmptraps:rw - - ./data/mibs:/usr/share/snmp/mibs:ro - restart: always - labels: - createdBy: Apps - - zabbix-web-nginx-pgsql: - container_name: ${CONTAINER_NAME}-nginx - image: zabbix/zabbix-web-nginx-pgsql:alpine-6.4.13 - environment: - - ZBX_SERVER_HOST=zabbix-server-pgsql - - DB_SERVER_HOST=${PANEL_DB_HOST} - - POSTGRES_USER=${PANEL_DB_USER} - - POSTGRES_PASSWORD=${PANEL_DB_USER_PASSWORD} - - POSTGRES_DB=${PANEL_DB_NAME} - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8080" - restart: always - labels: - createdBy: Apps - -networks: - 1panel-network: - external: true diff --git a/apps/zabbix-server/6.4.13-postgres/scripts/init.sh b/apps/zabbix-server/6.4.13-postgres/scripts/init.sh deleted file mode 100644 index 4e811c86..00000000 --- a/apps/zabbix-server/6.4.13-postgres/scripts/init.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -chown -R 1000:1000 data \ No newline at end of file diff --git a/apps/zabbix-server/6.4.13/.env.sample b/apps/zabbix-server/6.4.13/.env.sample deleted file mode 100644 index c6604601..00000000 --- a/apps/zabbix-server/6.4.13/.env.sample +++ /dev/null @@ -1,8 +0,0 @@ -CONTAINER_NAME="zabbix-server" -PANEL_APP_PORT_HTTP2="10051" -PANEL_APP_PORT_HTTP="40047" -PANEL_DB_HOST="127.0.0.1" -ZABBIX_DB_PORT="3306" -PANEL_DB_NAME="zabbix" -PANEL_DB_USER="zabbix" -PANEL_DB_USER_PASSWORD="MyDBPWD_brls9UwcRasl" \ No newline at end of file diff --git a/apps/zabbix-server/6.4.13/data.yml b/apps/zabbix-server/6.4.13/data.yml deleted file mode 100644 index 46a10b9d..00000000 --- a/apps/zabbix-server/6.4.13/data.yml +++ /dev/null @@ -1,62 +0,0 @@ -additionalProperties: - formFields: - - child: - default: "" - envKey: PANEL_DB_HOST - labelEn: Database Service - labelZh: 数据库服务 - required: true - type: service - default: mysql - labelEn: Database Service - labelZh: 数据库服务 - params: - - envKey: ZABBIX_DB_PORT - key: mysql - type: param - value: "3306" - required: true - type: apps - values: - - label: MySQL - value: mysql - - default: zabbix - envKey: PANEL_DB_NAME - labelEn: Database - labelZh: 数据库名 - random: true - required: true - rule: paramCommon - type: text - - default: zabbix - envKey: PANEL_DB_USER - labelEn: User - labelZh: 数据库用户 - random: true - required: true - rule: paramCommon - type: text - - default: zabbix - envKey: PANEL_DB_USER_PASSWORD - labelEn: Password - labelZh: 数据库用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: 10051 - edit: true - envKey: PANEL_APP_PORT_HTTP2 - labelEn: Gateway port - labelZh: 网关端口 - required: true - rule: paramPort - type: number - - default: 40047 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/zabbix-server/6.4.13/docker-compose.yml b/apps/zabbix-server/6.4.13/docker-compose.yml deleted file mode 100644 index eb37c9ce..00000000 --- a/apps/zabbix-server/6.4.13/docker-compose.yml +++ /dev/null @@ -1,51 +0,0 @@ -services: - zabbix-server-mysql: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP2}:10051" - environment: - - DB_SERVER_HOST=${PANEL_DB_HOST} - - DB_SERVER_PORT=${ZABBIX_DB_PORT} - - MYSQL_DATABASE=${PANEL_DB_NAME} - - MYSQL_USER=${PANEL_DB_USER} - - MYSQL_PASSWORD=${PANEL_DB_USER_PASSWORD} - - ZBX_JAVAGATEWAY=zabbix-java-gateway - image: zabbix/zabbix-server-mysql:alpine-6.4.13 - depends_on: - - zabbix-java-gateway - labels: - createdBy: Apps - - zabbix-java-gateway: - container_name: ${CONTAINER_NAME}-gateway - restart: always - networks: - - 1panel-network - image: zabbix/zabbix-java-gateway:alpine-6.4.13 - labels: - createdBy: Apps - - zabbix-web-nginx-mysql: - container_name: ${CONTAINER_NAME}-nginx - restart: always - networks: - - 1panel-network - environment: - - ZBX_SERVER_HOST=zabbix-server-mysql - - DB_SERVER_HOST=${PANEL_DB_HOST} - - MYSQL_DATABASE=${PANEL_DB_NAME} - - MYSQL_USER=${PANEL_DB_USER} - - MYSQL_PASSWORD=${PANEL_DB_USER_PASSWORD} - ports: - - ${PANEL_APP_PORT_HTTP}:8080 - image: zabbix/zabbix-web-nginx-mysql:alpine-6.4.13 - depends_on: - - zabbix-server-mysql - labels: - createdBy: Apps -networks: - 1panel-network: - external: true diff --git a/apps/zabbix-server/README.md b/apps/zabbix-server/README.md deleted file mode 100644 index 949780c4..00000000 --- a/apps/zabbix-server/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# 使用说明 - -- 默认账户与密码(注意大小写) - -``` -username:Admin -password:zabbix -``` - -## 注意事项 - -**注意:默认版本是Zabbix-MySQL版本的,Zabbix 6.X的需求环境MySQL8** - -**`postgresql`的版本,资源占用会小很多。** - -商店自带的`MySQL 8`的数据库格式设置与`Zabbix`需求有所不同,`zabbix-server-mysql`容器会提示存在错误。 - -但是实际能够运行。如有错误,期待反馈。 - -- 带`&mysql`版本,会安装符合`Zabbix`格式要求的数据库版本 -- 不带`&mysql`的版本,默认调用面板安装的数据库 - - -# 原始相关 - -Zabbix is free software, released under the GNU General Public License -(GPL) version 2. - -You can redistribute it and/or modify it under the terms of the GNU GPL -as published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The formal terms of the GPL can be found at -http://www.fsf.org/licenses/ . - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -Exception for linking with OpenSSL - -In addition, as a special exception, we give permission to link the code -of Zabbix with the OpenSSL project OpenSSL library (or with modified -versions of it that use the same license as the OpenSSL library), and -distribute the linked executables. - -Please see https://www.zabbix.com/ for detailed information about Zabbix. - -On-line Zabbix documentation is available at -https://www.zabbix.com/documentation/6.2/manual/ . - -Zabbix installation instructions can be found at -https://www.zabbix.com/documentation/6.2/manual/installation/ . - -If you are installing Zabbix from packages the instructions can be found at -https://www.zabbix.com/documentation/6.2/manual/installation/install_from_packages/ . \ No newline at end of file diff --git a/apps/zabbix-server/data.yml b/apps/zabbix-server/data.yml deleted file mode 100644 index d9862a92..00000000 --- a/apps/zabbix-server/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Zabbix-Server -tags: - - 工具 -title: 实时监控 IT 组件和服务 -description: 实时监控 IT 组件和服务 -additionalProperties: - key: zabbix-server - name: Zabbix-Server - tags: - - Tool - shortDescZh: 实时监控 IT 组件和服务(服务端) - shortDescEn: Real-time monitoring of IT components and services (Server) - type: tool - crossVersionUpdate: true - limit: 1 - recommend: 0 - website: https://www.zabbix.com/ - github: https://github.com/zabbix/zabbix - document: https://www.zabbix.com/manuals diff --git a/apps/zabbix-server/latest&mysql/.env.sample b/apps/zabbix-server/latest&mysql/.env.sample deleted file mode 100644 index 6f17280a..00000000 --- a/apps/zabbix-server/latest&mysql/.env.sample +++ /dev/null @@ -1,7 +0,0 @@ -CONTAINER_NAME="zabbix-server" -PANEL_APP_PORT_HTTP2="10051" -PANEL_APP_PORT_HTTP="40047" -PANEL_DB_NAME="zabbix" -PANEL_DB_USER="zabbix" -PANEL_DB_USER_PASSWORD="MyDBPWD_brls9UwcRasl" -MYSQL_PASSWORD="MySQL_root_pwd" \ No newline at end of file diff --git a/apps/zabbix-server/latest&mysql/conf/my.cnf b/apps/zabbix-server/latest&mysql/conf/my.cnf deleted file mode 100644 index 30e94200..00000000 --- a/apps/zabbix-server/latest&mysql/conf/my.cnf +++ /dev/null @@ -1,19 +0,0 @@ -[mysqld] -skip-host-cache -skip-name-resolve -datadir=/var/lib/mysql -socket=/var/run/mysqld/mysqld.sock -secure-file-priv=/var/lib/mysql-files -user=mysql - - -character_set_server=utf8 -lower_case_table_names=1 -group_concat_max_len=1024000 -log_bin_trust_function_creators=1 - -pid-file=/var/run/mysqld/mysqld.pid -[client] -socket=/var/run/mysqld/mysqld.sock - -!includedir /etc/mysql/conf.d/ \ No newline at end of file diff --git a/apps/zabbix-server/latest&mysql/data.yml b/apps/zabbix-server/latest&mysql/data.yml deleted file mode 100644 index 66045d54..00000000 --- a/apps/zabbix-server/latest&mysql/data.yml +++ /dev/null @@ -1,50 +0,0 @@ -additionalProperties: - formFields: - - default: zabbix - envKey: MYSQL_PASSWORD - labelEn: MySQL root Password - labelZh: 数据库root密码 - random: true - required: true - rule: paramComplexity - type: password - - default: zabbix - envKey: PANEL_DB_NAME - labelEn: Database - labelZh: 数据库名 - random: true - required: true - rule: paramCommon - type: text - - default: zabbix - envKey: PANEL_DB_USER - labelEn: User - labelZh: 数据库用户 - random: true - required: true - rule: paramCommon - type: text - - default: zabbix - envKey: PANEL_DB_USER_PASSWORD - labelEn: Password - labelZh: 数据库用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: 10051 - edit: true - envKey: PANEL_APP_PORT_HTTP2 - labelEn: Gateway port - labelZh: 网关端口 - required: true - rule: paramPort - type: number - - default: 40047 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/zabbix-server/latest&mysql/docker-compose.yml b/apps/zabbix-server/latest&mysql/docker-compose.yml deleted file mode 100644 index 892fbda4..00000000 --- a/apps/zabbix-server/latest&mysql/docker-compose.yml +++ /dev/null @@ -1,76 +0,0 @@ -services: - mysql-server: - container_name: ${CONTAINER_NAME}-mysql - restart: always - networks: - - 1panel-network - volumes: - - ./data/:/var/lib/mysql - - ./conf/my.cnf:/etc/my.cnf - - ./log:/var/log/mysql - - /etc/timezone:/etc/timezone:ro - - /etc/localtime:/etc/localtime:ro - environment: - - MYSQL_DATABASE=${PANEL_DB_NAME} - - MYSQL_USER=${PANEL_DB_USER} - - MYSQL_PASSWORD=${PANEL_DB_USER_PASSWORD} - - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD} - command: --character-set-server=utf8 --collation-server=utf8_bin --default-authentication-plugin=mysql_native_password - image: mysql:8.0.33 - labels: - createdBy: Apps - - zabbix-server-mysql: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP2}:10051" - environment: - - DB_SERVER_HOST=mysql-server - - DB_SERVER_PORT=3306 - - MYSQL_DATABASE=${PANEL_DB_NAME} - - MYSQL_USER=${PANEL_DB_USER} - - MYSQL_PASSWORD=${PANEL_DB_USER_PASSWORD} - - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD} - - ZBX_JAVAGATEWAY=zabbix-java-gateway - image: zabbix/zabbix-server-mysql:alpine-latest - depends_on: - - zabbix-java-gateway - - mysql-server - labels: - createdBy: Apps - - zabbix-java-gateway: - container_name: ${CONTAINER_NAME}-gateway - restart: always - networks: - - 1panel-network - image: zabbix/zabbix-java-gateway:alpine-latest - labels: - createdBy: Apps - - zabbix-web-nginx-mysql: - container_name: ${CONTAINER_NAME}-nginx - restart: always - networks: - - 1panel-network - environment: - - ZBX_SERVER_HOST=zabbix-server-mysql - - DB_SERVER_HOST=mysql-server - - MYSQL_DATABASE=${PANEL_DB_NAME} - - MYSQL_USER=${PANEL_DB_USER} - - MYSQL_PASSWORD=${PANEL_DB_USER_PASSWORD} - - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD} - ports: - - ${PANEL_APP_PORT_HTTP}:8080 - image: zabbix/zabbix-web-nginx-mysql:alpine-latest - depends_on: - - zabbix-server-mysql - - mysql-server - labels: - createdBy: Apps -networks: - 1panel-network: - external: true diff --git a/apps/zabbix-server/latest-postgres/.env.sample b/apps/zabbix-server/latest-postgres/.env.sample deleted file mode 100644 index cd31b76b..00000000 --- a/apps/zabbix-server/latest-postgres/.env.sample +++ /dev/null @@ -1,8 +0,0 @@ -CONTAINER_NAME="zabbix-server" -PANEL_APP_PORT_COMM="10051" -PANEL_APP_PORT_HTTP="40047" -PANEL_APP_PORT_SNMP="1162" -PANEL_DB_HOST="127.0.0.1" -PANEL_DB_NAME="zabbix" -PANEL_DB_USER="zabbix" -PANEL_DB_USER_PASSWORD="MyDBPWD_brls9UwcRasl" \ No newline at end of file diff --git a/apps/zabbix-server/latest-postgres/data.yml b/apps/zabbix-server/latest-postgres/data.yml deleted file mode 100644 index 12970b4a..00000000 --- a/apps/zabbix-server/latest-postgres/data.yml +++ /dev/null @@ -1,58 +0,0 @@ -additionalProperties: - formFields: - - default: "" - edit: true - envKey: PANEL_DB_HOST - key: postgresql - labelEn: Database Service - labelZh: 数据库服务 - required: true - type: service - - default: zabbix - envKey: PANEL_DB_NAME - labelEn: Database - labelZh: 数据库名 - random: true - required: true - rule: paramCommon - type: text - - default: zabbix - envKey: PANEL_DB_USER - labelEn: User - labelZh: 数据库用户 - random: true - required: true - rule: paramCommon - type: text - - default: zabbix - envKey: PANEL_DB_USER_PASSWORD - labelEn: Password - labelZh: 数据库用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: 10051 - edit: true - envKey: PANEL_APP_PORT_COMM - labelEn: Gateway port - labelZh: 网关端口 - required: true - rule: paramPort - type: number - - default: 40047 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: 1162 - edit: true - envKey: PANEL_APP_PORT_SNMP - labelEn: Snmptraps Port - labelZh: Snmptraps 端口 - required: true - rule: paramPort - type: number diff --git a/apps/zabbix-server/latest-postgres/data/.gitkeep b/apps/zabbix-server/latest-postgres/data/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/zabbix-server/latest-postgres/docker-compose.yml b/apps/zabbix-server/latest-postgres/docker-compose.yml deleted file mode 100644 index 365af1e3..00000000 --- a/apps/zabbix-server/latest-postgres/docker-compose.yml +++ /dev/null @@ -1,55 +0,0 @@ -services: - zabbix-snmptraps: - container_name: ${CONTAINER_NAME}-snmptraps - image: zabbix/zabbix-snmptraps:latest - volumes: - - ./data/snmptraps:/var/lib/zabbix/snmptraps:rw - - ./data/mibs:/usr/share/snmp/mibs:ro - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_SNMP}:1162/udp" - restart: always - labels: - createdBy: Apps - - zabbix-server-pgsql: - container_name: ${CONTAINER_NAME} - image: zabbix/zabbix-server-pgsql:latest - environment: - - DB_SERVER_HOST=${PANEL_DB_HOST} - - POSTGRES_USER=${PANEL_DB_USER} - - POSTGRES_PASSWORD=${PANEL_DB_USER_PASSWORD} - - POSTGRES_DB=${PANEL_DB_NAME} - - ZBX_ENABLE_SNMP_TRAPS=true - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_COMM}:10051" - volumes: - - ./data/snmptraps:/var/lib/zabbix/snmptraps:rw - - ./data/mibs:/usr/share/snmp/mibs:ro - restart: always - labels: - createdBy: Apps - - zabbix-web-nginx-pgsql: - container_name: ${CONTAINER_NAME}-nginx - image: zabbix/zabbix-web-nginx-pgsql:latest - environment: - - ZBX_SERVER_HOST=zabbix-server-pgsql - - DB_SERVER_HOST=${PANEL_DB_HOST} - - POSTGRES_USER=${PANEL_DB_USER} - - POSTGRES_PASSWORD=${PANEL_DB_USER_PASSWORD} - - POSTGRES_DB=${PANEL_DB_NAME} - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8080" - restart: always - labels: - createdBy: Apps - -networks: - 1panel-network: - external: true diff --git a/apps/zabbix-server/latest-postgres/scripts/init.sh b/apps/zabbix-server/latest-postgres/scripts/init.sh deleted file mode 100644 index 4e811c86..00000000 --- a/apps/zabbix-server/latest-postgres/scripts/init.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -chown -R 1000:1000 data \ No newline at end of file diff --git a/apps/zabbix-server/latest/.env.sample b/apps/zabbix-server/latest/.env.sample deleted file mode 100644 index c6604601..00000000 --- a/apps/zabbix-server/latest/.env.sample +++ /dev/null @@ -1,8 +0,0 @@ -CONTAINER_NAME="zabbix-server" -PANEL_APP_PORT_HTTP2="10051" -PANEL_APP_PORT_HTTP="40047" -PANEL_DB_HOST="127.0.0.1" -ZABBIX_DB_PORT="3306" -PANEL_DB_NAME="zabbix" -PANEL_DB_USER="zabbix" -PANEL_DB_USER_PASSWORD="MyDBPWD_brls9UwcRasl" \ No newline at end of file diff --git a/apps/zabbix-server/latest/data.yml b/apps/zabbix-server/latest/data.yml deleted file mode 100644 index 46a10b9d..00000000 --- a/apps/zabbix-server/latest/data.yml +++ /dev/null @@ -1,62 +0,0 @@ -additionalProperties: - formFields: - - child: - default: "" - envKey: PANEL_DB_HOST - labelEn: Database Service - labelZh: 数据库服务 - required: true - type: service - default: mysql - labelEn: Database Service - labelZh: 数据库服务 - params: - - envKey: ZABBIX_DB_PORT - key: mysql - type: param - value: "3306" - required: true - type: apps - values: - - label: MySQL - value: mysql - - default: zabbix - envKey: PANEL_DB_NAME - labelEn: Database - labelZh: 数据库名 - random: true - required: true - rule: paramCommon - type: text - - default: zabbix - envKey: PANEL_DB_USER - labelEn: User - labelZh: 数据库用户 - random: true - required: true - rule: paramCommon - type: text - - default: zabbix - envKey: PANEL_DB_USER_PASSWORD - labelEn: Password - labelZh: 数据库用户密码 - random: true - required: true - rule: paramComplexity - type: password - - default: 10051 - edit: true - envKey: PANEL_APP_PORT_HTTP2 - labelEn: Gateway port - labelZh: 网关端口 - required: true - rule: paramPort - type: number - - default: 40047 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number diff --git a/apps/zabbix-server/latest/docker-compose.yml b/apps/zabbix-server/latest/docker-compose.yml deleted file mode 100644 index 34bd3515..00000000 --- a/apps/zabbix-server/latest/docker-compose.yml +++ /dev/null @@ -1,51 +0,0 @@ -services: - zabbix-server-mysql: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP2}:10051" - environment: - - DB_SERVER_HOST=${PANEL_DB_HOST} - - DB_SERVER_PORT=${ZABBIX_DB_PORT} - - MYSQL_DATABASE=${PANEL_DB_NAME} - - MYSQL_USER=${PANEL_DB_USER} - - MYSQL_PASSWORD=${PANEL_DB_USER_PASSWORD} - - ZBX_JAVAGATEWAY=zabbix-java-gateway - image: zabbix/zabbix-server-mysql:alpine-latest - depends_on: - - zabbix-java-gateway - labels: - createdBy: Apps - - zabbix-java-gateway: - container_name: ${CONTAINER_NAME}-gateway - restart: always - networks: - - 1panel-network - image: zabbix/zabbix-java-gateway:alpine-latest - labels: - createdBy: Apps - - zabbix-web-nginx-mysql: - container_name: ${CONTAINER_NAME}-nginx - restart: always - networks: - - 1panel-network - environment: - - ZBX_SERVER_HOST=zabbix-server-mysql - - DB_SERVER_HOST=${PANEL_DB_HOST} - - MYSQL_DATABASE=${PANEL_DB_NAME} - - MYSQL_USER=${PANEL_DB_USER} - - MYSQL_PASSWORD=${PANEL_DB_USER_PASSWORD} - ports: - - ${PANEL_APP_PORT_HTTP}:8080 - image: zabbix/zabbix-web-nginx-mysql:alpine-latest - depends_on: - - zabbix-server-mysql - labels: - createdBy: Apps -networks: - 1panel-network: - external: true diff --git a/apps/zabbix-server/logo.png b/apps/zabbix-server/logo.png deleted file mode 100644 index 8cabcacd99d0b44bec7adecef6f438552f7fd42c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5442 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 A5dZ)H diff --git a/apps/zfile/4.5.0/.env.sample b/apps/zfile/4.5.0/.env.sample deleted file mode 100644 index 5aa28918..00000000 --- a/apps/zfile/4.5.0/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME="zfile" -PANEL_APP_PORT_HTTP="40072" -DATA_PATH="./data/data" -MOUNT_PATH="./data/mnt" \ No newline at end of file diff --git a/apps/zfile/4.5.0/data.yml b/apps/zfile/4.5.0/data.yml deleted file mode 100644 index 13127f01..00000000 --- a/apps/zfile/4.5.0/data.yml +++ /dev/null @@ -1,24 +0,0 @@ -additionalProperties: - formFields: - - default: 40072 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data/data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: ./data/mnt - edit: true - envKey: MOUNT_PATH - labelEn: Mount folder path - labelZh: 挂载文件夹路径 - required: true - type: text diff --git a/apps/zfile/4.5.0/docker-compose.yml b/apps/zfile/4.5.0/docker-compose.yml deleted file mode 100644 index 84f2a9ee..00000000 --- a/apps/zfile/4.5.0/docker-compose.yml +++ /dev/null @@ -1,19 +0,0 @@ -services: - zfile: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8080" - volumes: - - "${DATA_PATH}/db:/root/.zfile-v4/db" - - "${DATA_PATH}/logs:/root/.zfile-v4/logs" - - "${MOUNT_PATH}:/data/file" - image: zhaojun1998/zfile:4.5.0 - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/zfile/README.md b/apps/zfile/README.md deleted file mode 100644 index ed277829..00000000 --- a/apps/zfile/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# ZFile - -[![ZFile License](https://img.shields.io/badge/license-MIT-blue.svg?longCache=true&style=flat-square)](https://github.com/zfile-dev/zfile/blob/main/LICENSE) -[![GitHub release](https://shields.io/github/v/release/zhaojun1998/zfile?style=flat-square)](https://github.com/zfile-dev/zfile/releases) - - - -## ZFile 是什么? - -ZFile 是一个适用于个人的在线网盘(列目录)程序,可以将你各个存储类型的存储源,统一到一个网页中查看、预览、维护,再也不用去登录各种各样的网页登录后管理文件,现在你只需要在 ZFile 中使用。你只需要填写存储源相关信息,其他的令牌刷新,授权都是尽量自动化的,且有完善的文档帮助你使用。 - -- 支持对接 S3、OneDrive、SharePoint、Google Drive、多吉云、又拍云、本地存储、FTP、SFTP 等存储源 -- 支持在线浏览图片、播放音视频,文本文件、Office、obj(3d)等文件类型。 - -## 快速开始 - -请参考部署文档: [https://docs.zfile.vip](https://docs.zfile.vip) - -## 在线体验 - -[https://demo.zfile.vip](https://demo.zfile.vip) - -## 功能预览 - -### 文件列表 -![文件列表](https://cdn.jun6.net/uPic/2022/08/13/0urMn8.png) -### 画廊模式 -![图片预览](https://cdn.jun6.net/uPic/2022/08/13/d2J9aE.png) -### 视频预览 -![视频预览](https://cdn.jun6.net/uPic/2022/08/13/tBX00R.png) -### 文本预览 -![文本预览](https://cdn.jun6.net/uPic/2022/08/13/7dDy4G.png) -### 音频预览 -![音频预览](https://cdn.jun6.net/uPic/2022/08/13/N5bU1R.png) -### PDF 预览 -![PDF 预览](https://cdn.jun6.net/uPic/2022/08/13/H327bV.png) -### Office 预览 -![Office 预览](https://cdn.jun6.net/uPic/2022/08/27/RxeiqI.png) -### 3d 文件预览 -![3d 文件预览](https://cdn.jun6.net/uPic/2022/08/29/8iszyh.png) -### 生成直链 -![生成直链](https://cdn.jun6.net/uPic/2022/08/13/zCX3xT.jpg) -### 页面设置 -![页面设置](https://cdn.jun6.net/uPic/2022/08/13/54nYv2.png) -### 后台设置-登录 -![后台设置-登录](https://cdn.jun6.net/uPic/2022/08/13/J8P2Zf.png) -### 后台设置-存储源列表 -![后台设置-存储源列表](https://cdn.jun6.net/uPic/2022/08/13/jymieO.png) -### 后台设置-存储源权限控制 -![后台设置-存储源权限控制](https://cdn.jun6.net/uPic/2022/08/13/JgiwkH.jpg) -### 后台设置-添加存储源(本地存储) -![后台设置-添加存储源(本地存储)](https://cdn.jun6.net/uPic/2022/08/13/add-storage.png) -### 后台设置-添加存储源(世纪互联) -![后台设置-添加存储源(世纪互联)](https://cdn.jun6.net/uPic/2022/08/13/add-storage2.png) -### 后台设置-显示设置 -![后台设置-显示设置](https://cdn.jun6.net/uPic/2022/08/13/view-setting.png) - - -## 支持作者 - -如果本项目对你有帮助,请作者喝杯咖啡吧。 - -赞助我 - -## Status - -![Alt](https://repobeats.axiom.co/api/embed/580333f83b91087e713f15497e6433c50e1da090.svg "Repobeats analytics image") - -## Star History - -[![Star History Chart](https://api.star-history.com/svg?repos=zfile-dev/zfile&type=Date)](https://star-history.com/#zfile-dev/zfile&Date) diff --git a/apps/zfile/data.yml b/apps/zfile/data.yml deleted file mode 100644 index ed6c3ee3..00000000 --- a/apps/zfile/data.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: ZFile -tags: - - 工具 -title: 基于 Java 的在线网盘程序 -description: 基于 Java 的在线网盘程序 -additionalProperties: - key: zfile - name: ZFile - tags: - - Tool - shortDescZh: 基于 Java 的在线网盘程序 - shortDescEn: Java-based online disk program - type: tool - crossVersionUpdate: true - limit: 0 - recommend: 0 - website: https://www.zfile.vip/ - github: https://github.com/zfile-dev/zfile - document: https://docs.zfile.vip/ diff --git a/apps/zfile/latest/.env.sample b/apps/zfile/latest/.env.sample deleted file mode 100644 index 5aa28918..00000000 --- a/apps/zfile/latest/.env.sample +++ /dev/null @@ -1,4 +0,0 @@ -CONTAINER_NAME="zfile" -PANEL_APP_PORT_HTTP="40072" -DATA_PATH="./data/data" -MOUNT_PATH="./data/mnt" \ No newline at end of file diff --git a/apps/zfile/latest/data.yml b/apps/zfile/latest/data.yml deleted file mode 100644 index 13127f01..00000000 --- a/apps/zfile/latest/data.yml +++ /dev/null @@ -1,24 +0,0 @@ -additionalProperties: - formFields: - - default: 40072 - edit: true - envKey: PANEL_APP_PORT_HTTP - labelEn: Port - labelZh: 端口 - required: true - rule: paramPort - type: number - - default: ./data/data - edit: true - envKey: DATA_PATH - labelEn: Data folder path - labelZh: 数据文件夹路径 - required: true - type: text - - default: ./data/mnt - edit: true - envKey: MOUNT_PATH - labelEn: Mount folder path - labelZh: 挂载文件夹路径 - required: true - type: text diff --git a/apps/zfile/latest/docker-compose.yml b/apps/zfile/latest/docker-compose.yml deleted file mode 100644 index d4c16687..00000000 --- a/apps/zfile/latest/docker-compose.yml +++ /dev/null @@ -1,19 +0,0 @@ -services: - zfile: - container_name: ${CONTAINER_NAME} - restart: always - networks: - - 1panel-network - ports: - - "${PANEL_APP_PORT_HTTP}:8080" - volumes: - - "${DATA_PATH}/db:/root/.zfile-v4/db" - - "${DATA_PATH}/logs:/root/.zfile-v4/logs" - - "${MOUNT_PATH}:/data/file" - image: zhaojun1998/zfile:latest - labels: - createdBy: "Apps" - -networks: - 1panel-network: - external: true diff --git a/apps/zfile/logo.png b/apps/zfile/logo.png deleted file mode 100644 index bc7480956fe843a9b6ce47b3309e6b44cdf84bd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5737 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