Repository navigation
feat(cloudron): package Lens as a Cloudron app, with release image builds - #12
Merged
Merged
Conversation
CloudronManifest.json, Dockerfile.cloudron and cloudron/ make the repository a Cloudron package. One app runs SurrealDB, the API, a job worker and the web app under supervisord; secrets are made on first start in /app/data, mail goes through the sendmail addon, and the database is exported every six hours so backups hold a consistent copy. A workflow builds the image and can push it to GHCR for community-app publishing. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NdWJn5kdhHYz3mjiuQ2mVU
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NdWJn5kdhHYz3mjiuQ2mVU
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NdWJn5kdhHYz3mjiuQ2mVU
…tub) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NdWJn5kdhHYz3mjiuQ2mVU
…ge-tp886o # Conflicts: # CHANGELOG.md
Merged
3 of 8 tasks
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SNbRrpHTCqLewRKdkmd45X
adeelahmad
marked this pull request as ready for review
October 2, 2026 13:32
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SNbRrpHTCqLewRKdkmd45X
2 of 8 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Adeel · project thread
Description
Before: Lens could only be run with docker-compose; there was no way to install it on a Cloudron.
After: the repository is a Cloudron package. From a checkout,
cloudron install --location lens -f Dockerfile.cloudronuploads the source, and the Cloudron builds the image itself and runs Lens as one app. Every published GitHub release also builds the Cloudron image and pushes it to GHCR, ready forcloudron install --imageor community-app publishing throughCloudronVersions.json.How:
CloudronManifest.json(minBoxVersion 9.1.0,localstorageandsendmailaddons, health check/api/v1/auth/statusthrough the web app, 3 GB memory) andDockerfile.cloudrononcloudron/base:5.1.0. The frontend is built in a first stage, and the backend venv is built against the base image's Python 3.12. SurrealDB 3.2.4 and rclone are copied in from their images.cloudron/start.shcreates secrets once in/app/data/secrets.env, including a fixedLENS_SETUP_CODE. It writes/app/data/archive.yamlonce with a startingmedianamespace, because a fresh database needs at least one. It mapsCLOUDRON_APP_ORIGINandCLOUDRON_MAIL_*onto Lens's settings, then runs supervisord.cloudron/supervisord.confruns:next starton :3000export-db.sh, which writes a consistentsurreal exportto/app/data/backup/lens.surqlevery 6 h, so Cloudron's live backups always hold a clean copy.cloudron/README.mdcovers install, update, image builds, community-app publishing and restoring from the export.docs/deployment.mdlinks to it..github/workflows/cloudron.ymlbuilds the image on PRs that touch packaging files. On a published release it pushesghcr.io/<owner>/lens-cloudron:<release version>and:latest. It can also be run by hand.Motivation and Context
Adeel wants to install Lens on their hosted Cloudron, publish it there (https://docs.cloudron.io/packaging/publishing), and have release builds automated.
Steps to reproduce (if appropriate):
I built the image locally and ran it the way Cloudron does: read-only root filesystem, tmpfs on
/runand/tmp, a volume on/app/data, theCLOUDRON_*env and a 3 GB limit./api/v1/auth/statusanswered 200 through :3000./setupreturned 200, and/redirected tohttps://<origin>/login.secrets.envsucceeded.setup_requiredwas false and the data persisted.surreal exportworked against the running database.Not tested here: an actual
cloudron installon a Cloudron server, and the GHCR push.Types of changes
Checklist:
🤖 Generated with Claude Code
https://claude.ai/code/session_01NdWJn5kdhHYz3mjiuQ2mVU