From bd256e4b2c24b5bf1193ad0a007c8e46a9b1035b Mon Sep 17 00:00:00 2001 From: okxlin Date: Mon, 14 Aug 2023 21:55:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0slash=E5=88=B0=E5=88=97?= =?UTF-8?q?=E8=A1=A8(=E6=84=9F=E8=B0=A2=E7=BD=91=E5=8F=8B=E5=8C=85?= =?UTF-8?q?=E5=AD=90=E5=8F=94=E7=9A=84=E6=8A=95=E7=A8=BF)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/slash/0.4.1/.env.sample | 3 +++ apps/slash/0.4.1/data.yml | 17 ++++++++++++ apps/slash/0.4.1/docker-compose.yml | 18 +++++++++++++ apps/slash/README.md | 37 +++++++++++++++++++++++++++ apps/slash/data.yml | 20 +++++++++++++++ apps/slash/latest/.env.sample | 3 +++ apps/slash/latest/data.yml | 17 ++++++++++++ apps/slash/latest/docker-compose.yml | 18 +++++++++++++ apps/slash/logo.png | Bin 0 -> 19014 bytes 9 files changed, 133 insertions(+) create mode 100644 apps/slash/0.4.1/.env.sample create mode 100644 apps/slash/0.4.1/data.yml create mode 100644 apps/slash/0.4.1/docker-compose.yml create mode 100644 apps/slash/README.md create mode 100644 apps/slash/data.yml create mode 100644 apps/slash/latest/.env.sample create mode 100644 apps/slash/latest/data.yml create mode 100644 apps/slash/latest/docker-compose.yml create mode 100644 apps/slash/logo.png diff --git a/apps/slash/0.4.1/.env.sample b/apps/slash/0.4.1/.env.sample new file mode 100644 index 00000000..6ae5b4f0 --- /dev/null +++ b/apps/slash/0.4.1/.env.sample @@ -0,0 +1,3 @@ +CONTAINER_NAME="slash" +PANEL_APP_PORT_HTTP="40114" +DATA_PATH="./data" diff --git a/apps/slash/0.4.1/data.yml b/apps/slash/0.4.1/data.yml new file mode 100644 index 00000000..feba5207 --- /dev/null +++ b/apps/slash/0.4.1/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + formFields: + - default: 40114 + 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/slash/0.4.1/docker-compose.yml b/apps/slash/0.4.1/docker-compose.yml new file mode 100644 index 00000000..6fb8edd5 --- /dev/null +++ b/apps/slash/0.4.1/docker-compose.yml @@ -0,0 +1,18 @@ +version: '3' +services: + slash: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:5231" + volumes: + - "${DATA_PATH}:/var/opt/slash" + image: yourselfhosted/slash:0.4.1 + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/slash/README.md b/apps/slash/README.md new file mode 100644 index 00000000..6cc4dc9d --- /dev/null +++ b/apps/slash/README.md @@ -0,0 +1,37 @@ +# Slash + +logo + +**Slash** is an open source, self-hosted bookmarks and link sharing platform. It allows you to organize your links with tags, and share them using custom shortened URLs. Slash also supports team sharing of link libraries for easy collaboration. + +

+ Discord + Docker pull + GitHub stars +

+ +![demo](https://github.com/boojack/slash/raw/main/resources/demo.png) + +## Features + +- Create customizable `/s/` short links for any URL. +- Share short links privately or with teammates. +- View analytics on link traffic and sources. +- Easy access to your shortcuts with browser extension. +- Open source self-hosted solution. + +## Deploy with Docker in seconds + +```bash +docker run -d --name slash -p 5231:5231 -v ~/.slash/:/var/opt/slash yourselfhosted/slash:latest +``` + +Learn more in [Self-hosting Slash with Docker](https://github.com/boojack/slash/blob/main/docs/install.md). + +## Browser Extension + +Slash provides a browser extension to help you use your shortcuts in the search bar to go to the corresponding URL. + +![browser-extension-example](https://github.com/boojack/slash/raw/main/resources/browser-extension-example.png) + +Learn more in [The Browser Extension of Slash](https://github.com/boojack/slash/blob/main/docs/install-browser-extension.md). \ No newline at end of file diff --git a/apps/slash/data.yml b/apps/slash/data.yml new file mode 100644 index 00000000..527a5a6f --- /dev/null +++ b/apps/slash/data.yml @@ -0,0 +1,20 @@ +name: Slash +tags: + - 工具 +title: 一个开源、自托管书签和链接共享平台 +type: 工具 +description: 一个开源、自托管书签和链接共享平台 +additionalProperties: + key: slash + name: Slash + tags: + - Tool + shortDescZh: 一个开源、自托管书签和链接共享平台 + shortDescEn: An open source, self-hosted bookmarks and link sharing platform + type: tool + crossVersionUpdate: false + limit: 0 + recommend: 0 + website: https://demo.slash.yourselfhosted.com/ + github: https://github.com/boojack/slash + document: https://github.com/boojack/slash/blob/main/docs/install.md diff --git a/apps/slash/latest/.env.sample b/apps/slash/latest/.env.sample new file mode 100644 index 00000000..6ae5b4f0 --- /dev/null +++ b/apps/slash/latest/.env.sample @@ -0,0 +1,3 @@ +CONTAINER_NAME="slash" +PANEL_APP_PORT_HTTP="40114" +DATA_PATH="./data" diff --git a/apps/slash/latest/data.yml b/apps/slash/latest/data.yml new file mode 100644 index 00000000..feba5207 --- /dev/null +++ b/apps/slash/latest/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + formFields: + - default: 40114 + 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/slash/latest/docker-compose.yml b/apps/slash/latest/docker-compose.yml new file mode 100644 index 00000000..7f41f7f2 --- /dev/null +++ b/apps/slash/latest/docker-compose.yml @@ -0,0 +1,18 @@ +version: '3' +services: + slash: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:5231" + volumes: + - "${DATA_PATH}:/var/opt/slash" + image: yourselfhosted/slash:latest + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/slash/logo.png b/apps/slash/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..48e53427bde3c3c1d9768d800c83006f48420f2a GIT binary patch literal 19014 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 literal 0 HcmV?d00001