From 82de89779cee262a68b81440188eadbe674c0b3d Mon Sep 17 00:00:00 2001 From: Christopher Date: Sun, 4 Feb 2024 00:50:14 -0600 Subject: [PATCH] feat(cloudreve) Migrate from unmaintained to upstream images. (#17489) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Description** Replaces the 2-year-outdated cloudreve image with upstream v.3.8.3, which includes aria2 support and English translations. ⚒️ Fixes #16912 **⚙️ Type of change** - [ ] ⚙️ Feature/App addition - [x] 🪛 Bugfix - [ ] ⚠️ Breaking change (fix or feature that would cause existing functionality to not work as expected) - [ ] 🔃 Refactor of current code **🧪 How Has This Been Tested?** Tested for page load, login, Aria2 setup locally with k8s + Docker Desktop. Have not tested any downloads or real use. **📃 Notes:** - Have not tested beyond initial "it runs and I can log in". Should I be copying this app into dev or incubator? - Upstream docker image does not appear to support passing RPC_SECRET, which leads to a mess chasing down the auto-generated secret and manually entering it on the webpage. Should this be a questions.yaml entry instead? - Since cloudreve requires configuration to setup and use aria2 anyway, should the aria2 image be removed and documentation added to refer to the aria2-app (https://truecharts.org/charts/stable/aria2/)? **✔️ Checklist:** - [x] ⚖️ My code follows the style guidelines of this project - [x] 👀 I have performed a self-review of my own code - [ ] #️⃣ I have commented my code, particularly in hard-to-understand areas - [ ] 📄 I have made corresponding changes to the documentation - [x] ⚠️ My changes generate no new warnings - [ ] 🧪 I have added tests to this description that prove my fix is effective or that my feature works - [x] ⬆️ I increased versions for any altered app according to semantic versioning **➕ App addition** If this PR is an app addition please make sure you have done the following. - [ ] 🖼️ I have added an icon in the Chart's root directory called `icon.png` --- _Please don't blindly check all the boxes. Read them and only check those that apply. Those checkboxes are there for the reviewer to see what is this all about and the status of this PR with a quick glance._ --------- Signed-off-by: Christopher Co-authored-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> --- charts/stable/cloudreve/Chart.yaml | 2 +- .../cloudreve/docs/installation_notes.md | 49 +++++++++++++++++++ charts/stable/cloudreve/questions.yaml | 8 --- charts/stable/cloudreve/values.yaml | 39 +++++++++++---- 4 files changed, 79 insertions(+), 19 deletions(-) create mode 100644 charts/stable/cloudreve/docs/installation_notes.md diff --git a/charts/stable/cloudreve/Chart.yaml b/charts/stable/cloudreve/Chart.yaml index 7688afd4de1..779d2f95d1c 100644 --- a/charts/stable/cloudreve/Chart.yaml +++ b/charts/stable/cloudreve/Chart.yaml @@ -35,4 +35,4 @@ sources: - https://github.com/truecharts/charts/tree/master/charts/stable/cloudreve - https://hub.docker.com/r/xavierniu/cloudreve type: application -version: 4.1.12 +version: 5.0.0 diff --git a/charts/stable/cloudreve/docs/installation_notes.md b/charts/stable/cloudreve/docs/installation_notes.md new file mode 100644 index 00000000000..5eaf0290b98 --- /dev/null +++ b/charts/stable/cloudreve/docs/installation_notes.md @@ -0,0 +1,49 @@ +--- +title: Important Notes +--- + +## Credentials + +On first run, cloudreve will generate an admin user and print the email and password to the app logs. It will look something like this: + +``` + ___ _ _ + / __\ | ___ _ _ __| |_ __ _____ _____ + / / | |/ _ \| | | |/ _ | '__/ _ \ \ / / _ \ +/ /___| | (_) | |_| | (_| | | | __/\ V / __/ +\____/|_|\___/ \__,_|\__,_|_| \___| \_/ \___| + + V3.8.3 Commit #88409cc Pro=false +================================================ + +[Info] 2024-01-22 03:27:02 Initializing database connection... +[Info] 2024-01-22 03:27:02 Start initializing database schema... +[Info] 2024-01-22 03:27:03 Admin user name: admin@cloudreve.org +[Info] 2024-01-22 03:27:03 Admin password: 8vLCPvDl +[Info] 2024-01-22 03:27:06 Start executing database script "UpgradeTo3.4.0". +[Info] 2024-01-22 03:27:06 Finish initializing database schema. +[Info] 2024-01-22 03:27:06 Initialize task queue with WorkerNum = 10 +[Info] 2024-01-22 03:27:06 Initialize crontab jobs... +[Info] 2024-01-22 03:27:06 Current running mode: Master. +[Info] 2024-01-22 03:27:06 Listening to ":5212" +``` + +To retrieve the password in TrueNAS SCALE, wait for the app to finish deploying and then navigate to the `Workload` card and click the `View Logs` icon. + +## Aria2 + +To use cloudreve with aria2, install the [TrueCharts aria2 app](https://truecharts.org/charts/stable/aria2/). The installation dialog will ask for a RPC Secret, which should be a securely generated string that will be copied to cloudreve later. See below for an example. + +Once aria2 is installed, open cloudreve's webpage and navigate to the Dashboard (Click on profile icon in top right corner -> Dashboard). In the dashboard, select `Nodes` and then click the edit icon beside `Master (Local Machine)`. In the edit dialog, click `Enable` and then fill out the settings: + +* RPC Server: find with `heavyscript dns`, and read about internal DNS [here](https://truecharts.org/manual/SCALE/guides/linking-apps/). +* RPC Secret: Set the shared secret here. Must also be set in the Aria2 app. +* Absolute Path: Set this to a custom persistent mount that you've created for this cloudreve app, and have also mounted to Aria2. + +### Example RPC Secrete Generation + +Below is an example of one way to generate the RPC Secret value. If you do not have a computer with openssl installed, you can use the shell (`System Settings` -> `Shell`) in TrueNAS SCALE. Copy the resulting value by highlighting it and pressing `Ctrl+Insert`. + +``` +$ openssl rand -hex 32 +``` diff --git a/charts/stable/cloudreve/questions.yaml b/charts/stable/cloudreve/questions.yaml index dc953bcf8eb..976ea941486 100644 --- a/charts/stable/cloudreve/questions.yaml +++ b/charts/stable/cloudreve/questions.yaml @@ -47,14 +47,6 @@ questions: additional_attrs: true type: dict attrs: -# Include{persistenceBasic} - - variable: databasepath - label: "databasepath Storage" - description: "Container Path cloudrevedb" - schema: - additional_attrs: true - type: dict - attrs: # Include{persistenceBasic} - variable: avatarpath label: "avatarpath Storage" diff --git a/charts/stable/cloudreve/values.yaml b/charts/stable/cloudreve/values.yaml index 3770add295c..174ce930986 100644 --- a/charts/stable/cloudreve/values.yaml +++ b/charts/stable/cloudreve/values.yaml @@ -1,32 +1,51 @@ image: pullPolicy: IfNotPresent - repository: xavierniu/cloudreve - tag: latest@sha256:cdd00367bbdf3247e15feebfbde354237586a308c6fac730856670dd31b44b47 + repository: cloudreve/cloudreve + tag: 3.8.3@sha256:a9e2373b7ca59bc43b9a4ceb50e7f6b80539c1732a9439b96dfe1aec6354a6c5 persistence: avatarpath: enabled: true mountPath: /cloudreve/avatar config: enabled: true - mountPath: /cloudreve/config - databasepath: - enabled: true - mountPath: /cloudreve/db + targetSelector: + main: + main: + mountPath: /cloudreve + init: + mountPath: /conf-init uploadpath: enabled: true mountPath: /cloudreve/uploads -portal: - open: - enabled: true securityContext: container: readOnlyRootFilesystem: false runAsGroup: 0 runAsUser: 0 +workload: + main: + podSpec: + initContainers: + init: + enabled: true + type: init + imageSelector: image + command: + - "/bin/sh" + - "-c" + - | + set -x + ls -lasth /cloudreve + cp -a /cloudreve/cloudreve /conf-init/cloudreve + ls -lasht /conf-init + containers: + main: {} service: main: ports: main: port: 5212 - protocol: tcp targetPort: 5212 +portal: + open: + enabled: true