Skip to content

feat: add Cloudreve community app#4771

Closed
Lalit-Patil-07 wants to merge 2 commits intotruenas:masterfrom
Lalit-Patil-07:add-cloudreve
Closed

feat: add Cloudreve community app#4771
Lalit-Patil-07 wants to merge 2 commits intotruenas:masterfrom
Lalit-Patil-07:add-cloudreve

Conversation

@Lalit-Patil-07
Copy link
Copy Markdown

App Addition

  • I have opened an issue to discuss this app addition before submitting this pull request.

AI

  • Part or All of this PR was generated by an LLM.

Description

Adds Cloudreve to the community train.

Cloudreve is a self-hosted cloud storage platform with a web-based file manager,
file sharing, multi-storage-provider support, and an admin dashboard. It uses
PostgreSQL as its database backend and Redis for caching/session management.

App Information

Testing

Tested locally with:

  • basic-values.yaml

All tests passed successfully. All 5 containers (cloudreve, postgres, redis,
permissions, postgres_upgrade) started and passed health checks.

Icons and Screenshots

Special Notes

  • Cloudreve v4 is not backwards compatible with v3. This app targets v4 only.
  • The supervisord process inside the container logs a non-fatal permission warning
    for /cloudreve/supervisord.log when running as uid 568. Cloudreve itself starts
    and runs correctly regardless — this is a cosmetic issue with the image's
    entrypoint script.
  • Default web port is 5212.

Checklist

  • App runs successfully locally
  • Only modified files under /ix-dev/ or /library/
  • README.md included
  • Multiple test scenarios tested
  • questions.yaml has clear descriptions and follows structure of existing apps
  • All automated CI checks pass

@Lalit-Patil-07 Lalit-Patil-07 changed the title community: add Cloudreve self-hosted cloud storage app feat: add Cloudreve community app Apr 6, 2026
Copy link
Copy Markdown
Contributor

@stavros-k stavros-k left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You LLM seems to have missed lots of things.
I'm not confident enough at this point to even try to review further. As I will have to go over every single line.
Which will be faster to re-implement myself.

Sorry

images:
image:
repository: cloudreve/cloudreve
tag: v4
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use semver tag

repository: ixsystems/container-utils
tag: 1.0.2
postgres_17_image:
repository: paradedb/paradedb
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why paradedb?

Comment on lines +12 to +13
repository: redis
tag: latest
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

valkey - and semver version

tag: 1.0.2
postgres_17_image:
repository: paradedb/paradedb
tag: 0.22.5-pg17
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

start with 18

{% do c1.environment.add_env("CR_CONF_Database.Name", values.consts.db_name) %}
{% do c1.environment.add_env("CR_CONF_Database.Port", 5432) %}
{% do c1.environment.add_env("CR_CONF_Database.Password", values.cloudreve.db_password) %}
{% do c1.environment.add_env("CR_CONF_Redis.Server", "%s:6379"|format(values.consts.redis_container_name)) %}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

redis.get_url

{% do c1.depends.add_dependency(values.consts.postgres_container_name, "service_healthy") %}
{% do c1.depends.add_dependency(values.consts.redis_container_name, "service_healthy") %}
{% do c1.set_user(values.run_as.user, values.run_as.group) %}
{% do c1.healthcheck.set_test("netcat", {"port": 5212}) %}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use an env to sync port with the user provided number.
something like cr_conf_system.listen

schema:
type: dict
attrs:
- variable: db_password
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

where is the postgres image selector?

Comment on lines +89 to +118
- variable: web_port
label: WebUI Port
schema:
type: dict
attrs:
- variable: bind_mode
label: Port Bind Mode
description: |
The bind mode for the port.</br>
- published: The port will be published on the host.</br>
- exposed: The port will be exposed to linked services.</br>
- none: The port will not be published or exposed.
schema:
type: string
default: published
enum:
- value: published
description: Published
- value: exposed
description: Exposed
- value: ""
description: None
- variable: port_number
label: Port Number
schema:
type: int
default: 5212
required: true
min: 1
max: 65535
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

docker networks? host ips?

schema:
type: dict
show_if: [["type", "=", "ix_volume"]]
attrs:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

acls?

description: ixVolume
- value: tmpfs
description: Tmpfs
- variable: mount_path
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lots of types m,issing

@stavros-k stavros-k closed this Apr 6, 2026
@Lalit-Patil-07 Lalit-Patil-07 deleted the add-cloudreve branch April 6, 2026 14:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants