Repository navigation
Libre-Closet #2433
Description
Name of the Script
Libre-Closet
Script Type
CT (LXC Container)
Script path
No response
Where does it run?
None
Does this script support arm64?
arm64 not tested
Tested on
- Proxmox VE
- Incus
📋 Script Details
App: Libre Closet - free, open-source, self-hosted wardrobe organizer: catalog clothes, upload photos, build outfits on a calendar, installable as an offline-ready PWA.
- Upstream: https://github.com/Lazztech/Libre-Closet (AGPL-3.0)
- Website: https://librecloset.lazz.tech
Script type: CT (LXC), bare-metal - no Docker. The ct/ script builds the Node app from source:
- Node.js 22 via
setup_nodejs - fetch the app tag (
fetch_and_deploy_gh_tag) →npm ci→npm run build→node dist/main - runs under a
libre-closet.servicesystemd unit - state lives in
/opt/libre-closet_data(SQLite + uploads);update_script()re-fetches and rebuilds in place, leaving the data directory untouched
Resources: 1 vCPU, 2 GB RAM (1 GB OOMs the npm ci build, exit 137), 8 GB disk (4 GB is ~81% full after the build and blocks updates). OS Debian 13. Interface port 3000.
Tested on Proxmox VE 8.4.21 (kernel 6.8.4-2-pve, x86_64, Debian 13 LXC):
- default install completes;
libre-closet.serviceis active; UI answers HTTP 200 onhttp://<ip>:3000 update_script()re-fetch → rebuild → restart verified with the data directory preserved (no data loss)- the advanced-mode wizard was not run (needs the Proxmox console / TTY); the container-side install script is identical in both modes
arm64: not tested. It is a pure-Node build so it should work, but it has not been verified on arm64 - leaving the box unticked.
Version pinning: the app now publishes GitHub Releases for its tags; os is Debian 13. Metadata slug is libre-closet.
Open questions for maintainers:
- Category - currently the
Miscellaneousplaceholder; happy to move it if you prefer another. logo- currently points at the app icon on GitHub; should it use aselfhst/iconsentry instead?app_vars- left undeclared: the app has no first-run account (auth is off by default), so there is nothing to collect during install. OK, or would you prefer an explicitAUTH_ENABLEDvariable?
Files (ready on fork branch Lazztech/DevScripts:add-libre-closet, 3 files, nothing else):
ct/libre-closet.shinstall/libre-closet-install.shjson/libre-closet.json
Disclosure: this proposal is AI-assisted (model: deepseek-v4.1-flash via opencode); the script was reviewed by the app author and tested end-to-end on a real PVE 8.4.21 host before submitting. I, @gianlazz, also performed my own manual testing after the fact to confirm.
Activity