Repository navigation
feat(packaging): Proxmox VE helper script for a Lens LXC container - #10
Merged
Merged
Conversation
proxmox/ct/lens.sh runs on the Proxmox host with the community-scripts engine and creates a Debian 13 container; proxmox/install/lens-install.sh installs SurrealDB 3.2.4, the API, a worker and the web app as systemd services with fresh secrets. `update` in the container pulls main and rebuilds. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SKxzVfEUNtRqvqUti2Lc6L
Containers track the latest published release, and the newest main while the repository has none, so publishing a release is enough for `update` to pick it up. Annotated and lightweight tags both resolve to their commit. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SKxzVfEUNtRqvqUti2Lc6L
This was refere
8000
nced Oct 2, 2026
feat(release): semantic versions and release notes from Conventional Commits in one workflow run
#17
Merged
Each version lives in /opt/lens-<commit> with /opt/lens linked to the running one. `update` clones and builds the next version beside it while the services keep running, then stops them, switches the link and starts them again; a failed build leaves the running version untouched. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SKxzVfEUNtRqvqUti2Lc6L
The install no longer seeds a `media` namespace: with the seq fix from main a namespace-less archive.yaml starts, and the setup wizard at /welcome asks for the first namespace. sources.local_roots stays so the wizard can offer a folder to watch. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SKxzVfEUNtRqvqUti2Lc6L
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SNbRrpHTCqLewRKdkmd45X
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
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: running Lens on Proxmox meant setting up Docker in a VM or container by hand.
After: one command in the Proxmox host's shell creates a Debian 13 LXC container running Lens:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/adeelahmad/lense/main/proxmox/ct/lens.sh)"Open
http://<container-ip>:3000, create the admin with the code fromlens-setup-code, and the setup wizard at/welcomeasks for the first namespace, the model provider and storage.It follows the community-scripts CT guide:
proxmox/ct/lens.shloads the engine fromcommunity-scripts/coreand sets_CS_DEFAULT_URLto this repo'sproxmox/folder, soinstall/lens-install.shand theupdatecommand come from here.How: the install script installs ffmpeg, Tesseract, poppler, antiword (when the release ships it) and rclone, as the lean Docker image does; Python 3.12 via uv and Node 22 with pnpm via the engine's helpers; and SurrealDB 3.2.4 from its release binary. It clones the latest published GitHub release (
mainwhile the repo has none) into/opt/lens-<commit>, links/opt/lensto it, runsuv sync --frozen --no-devandpnpm build, and writes fresh secrets to/etc/lens/*.envand anarchive.yamlwith no namespaces (the wizard asks) and/var/lib/lens/mediaas the folder it may watch. Four systemd services:surrealdb(127.0.0.1:8001),lens-api(127.0.0.1:8000),lens-workerandlens-web(port 3000, the only one on the network).updateresolves the latest release the same way and, when it moved, clones and builds it beside the running version while Lens stays up; then it stops the services, switches the link, starts them and removes the old version, so a failed build leaves Lens as it was. It also bumps SurrealDB when the pinned version changes. Publishing a release is all containers need to pick it up, so there is no Proxmox release workflow. Details inproxmox/README.md.Motivation and Context
Requested in the project thread: support the Proxmox VE community helper scripts.
Steps to reproduce (if appropriate):
Not run on a Proxmox host from here. What was checked:
bash -nand shellcheck on both scripts. The only warnings are SC2164 oncd, which the upstream scripts leave as is becausecatch_errorstraps failures.surrealdb.env, plus the API andlens workerfrom auv sync --frozen --no-devvenv, with the generated settings and anarchive.yamlwith no namespaces./api/v1/auth/statusanswers{"setup_required":true,"wizard_pending":true}, the setup code appears in the log, and the worker starts. Before feat(setup): first-run setup wizard answered by .env, and startup on a fresh database #19, a foreign Host header also got a 400.main: each resolves to and checks out the right commit. With no release, the lookup falls back tomain. The/opt/lenslink swap was checked separately.Types of changes
Checklist:
🤖 Generated with Claude Code
https://claude.ai/code/session_01SKxzVfEUNtRqvqUti2Lc6L