From f62e551ad5b85220e32bd0aed17dd8ec15537601 Mon Sep 17 00:00:00 2001 From: okxlin Date: Sat, 19 Aug 2023 23:26:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0linkding=E5=88=B0?= =?UTF-8?q?=E5=88=97=E8=A1=A8(=E6=84=9F=E8=B0=A2=E7=BD=91=E5=8F=8B?= =?UTF-8?q?=E5=8C=85=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/linkding/1.19.1/.env.sample | 3 +++ apps/linkding/1.19.1/data.yml | 17 +++++++++++++++ apps/linkding/1.19.1/docker-compose.yml | 18 ++++++++++++++++ apps/linkding/README.md | 27 ++++++++++++++++++++++++ apps/linkding/data.yml | 20 ++++++++++++++++++ apps/linkding/latest/.env.sample | 3 +++ apps/linkding/latest/data.yml | 17 +++++++++++++++ apps/linkding/latest/docker-compose.yml | 18 ++++++++++++++++ apps/linkding/logo.png | Bin 0 -> 14486 bytes 9 files changed, 123 insertions(+) create mode 100644 apps/linkding/1.19.1/.env.sample create mode 100644 apps/linkding/1.19.1/data.yml create mode 100644 apps/linkding/1.19.1/docker-compose.yml create mode 100644 apps/linkding/README.md create mode 100644 apps/linkding/data.yml create mode 100644 apps/linkding/latest/.env.sample create mode 100644 apps/linkding/latest/data.yml create mode 100644 apps/linkding/latest/docker-compose.yml create mode 100644 apps/linkding/logo.png diff --git a/apps/linkding/1.19.1/.env.sample b/apps/linkding/1.19.1/.env.sample new file mode 100644 index 00000000..c78feac9 --- /dev/null +++ b/apps/linkding/1.19.1/.env.sample @@ -0,0 +1,3 @@ +CONTAINER_NAME="linkding" +PANEL_APP_PORT_HTTP="40123" +DATA_PATH="./data" diff --git a/apps/linkding/1.19.1/data.yml b/apps/linkding/1.19.1/data.yml new file mode 100644 index 00000000..1876d407 --- /dev/null +++ b/apps/linkding/1.19.1/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + formFields: + - default: 40123 + 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 \ No newline at end of file diff --git a/apps/linkding/1.19.1/docker-compose.yml b/apps/linkding/1.19.1/docker-compose.yml new file mode 100644 index 00000000..6d2be413 --- /dev/null +++ b/apps/linkding/1.19.1/docker-compose.yml @@ -0,0 +1,18 @@ +version: '3' +services: + linkding: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:9090" + volumes: + - "${DATA_PATH}:/etc/linkding/data" + image: sissbruecker/linkding:1.19.1 + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/linkding/README.md b/apps/linkding/README.md new file mode 100644 index 00000000..71341ce1 --- /dev/null +++ b/apps/linkding/README.md @@ -0,0 +1,27 @@ +
+
+ + + +
+
+ +## 创建初始化用户 + +- 宿主机终端方式 +```shell +docker exec -it xxx python manage.py createsuperuser --username=用户名 --email=邮箱 +``` + + * xxx 改成容器名称 + * 用户名 建议 `英文` + * 邮箱 邮箱地址 + * 在`SSH`输入两次密码 + + +- 容器终端方式 + +容器管理页面,连接容器终端执行 +```shell +python manage.py createsuperuser --username=用户名 --email=邮箱 +``` diff --git a/apps/linkding/data.yml b/apps/linkding/data.yml new file mode 100644 index 00000000..31e38160 --- /dev/null +++ b/apps/linkding/data.yml @@ -0,0 +1,20 @@ +name: linkding +tags: + - 工具 +title: 一个书签管理器,您可以自己托管 +type: 工具 +description: 一个书签管理器,您可以自己托管 +additionalProperties: + key: linkding + name: linkding + tags: + - Tool + shortDescZh: 一个书签管理器,您可以自己托管 + shortDescEn: A bookmark manager that you can host yourself + type: tool + crossVersionUpdate: false + limit: 0 + recommend: 0 + website: https://github.com/sissbruecker/linkding + github: https://github.com/sissbruecker/linkding + document: https://github.com/sissbruecker/linkding diff --git a/apps/linkding/latest/.env.sample b/apps/linkding/latest/.env.sample new file mode 100644 index 00000000..c78feac9 --- /dev/null +++ b/apps/linkding/latest/.env.sample @@ -0,0 +1,3 @@ +CONTAINER_NAME="linkding" +PANEL_APP_PORT_HTTP="40123" +DATA_PATH="./data" diff --git a/apps/linkding/latest/data.yml b/apps/linkding/latest/data.yml new file mode 100644 index 00000000..1876d407 --- /dev/null +++ b/apps/linkding/latest/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + formFields: + - default: 40123 + 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 \ No newline at end of file diff --git a/apps/linkding/latest/docker-compose.yml b/apps/linkding/latest/docker-compose.yml new file mode 100644 index 00000000..95d9f2b5 --- /dev/null +++ b/apps/linkding/latest/docker-compose.yml @@ -0,0 +1,18 @@ +version: '3' +services: + linkding: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:9090" + volumes: + - "${DATA_PATH}:/etc/linkding/data" + image: sissbruecker/linkding:latest + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/linkding/logo.png b/apps/linkding/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b5c3d42e72aeb9bda520075c3ae7fe7a5f3b384a GIT binary patch literal 14486 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