Add 25 curated OCI application profiles

This commit is contained in:
Jonatan
2026-10-26 09:05:06 +01:00
parent af29bc9274
commit 2014105343
51 changed files with 16552 additions and 1 deletions
+276
View File
@@ -0,0 +1,276 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-artalk",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Artalk"
},
"description": {
"en_US": "Self-hosted comment server for blogs and websites, with a browser-based dashboard."
},
"category": "documents",
"category_label": "Documents & Notes",
"author": "ArtalkJS",
"developer": "ArtalkJS",
"icon": "https://raw.githubusercontent.com/ArtalkJS/Artalk/master/docs/docs/images/artalk-logo.png",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 23366,
"path": "/"
},
"website": "https://artalk.js.org/",
"documentation": "https://artalk.js.org/en/guide/deploy.html",
"repository": "https://github.com/ArtalkJS/Artalk",
"tips": [
"Create the initial dashboard administrator from the container console with the upstream artalk admin command."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "ArtalkJS",
"repository": "https://github.com/ArtalkJS/Artalk",
"default_branch": "master",
"revision": "53d15ee0c3a908b4a58fc43f42c44b5e709279bd",
"image_repository_url": "https://hub.docker.com/r/artalk/artalk-go",
"readme_pushed_at": "",
"compose_sha256": "856f4fcf59914076799bc5774d1e69ab3d3da7d60c3b2598062864cd02552677",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/ArtalkJS/Artalk/master/README.md"
},
"container_contract": {
"service_name": "artalk",
"container_name": "artalk",
"image": {
"reference": "docker.io/artalk/artalk-go:latest",
"registry": "docker.io",
"repository": "docker.io/artalk/artalk-go",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 23366,
"published_example": 23366,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"artalk\",\n \"services\": {\n \"artalk\": {\n \"image\": \"docker.io/artalk/artalk-go:latest\",\n \"container_name\": \"artalk\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"23366:23366/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\"\n ]\n }\n }\n}"
},
"compose_stack": {
"project_name": "artalk",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "artalk",
"service_count": 1,
"services": [
{
"name": "artalk",
"image": "docker.io/artalk/artalk-go:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "docker.io/artalk/artalk-go:latest",
"container_name": "artalk",
"restart": "unless-stopped",
"ports": [
"23366:23366/tcp"
],
"volumes": [
"./data:/data"
]
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "artalk-volume-0",
"service": "artalk",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"artalk"
],
"stop_order": [
"artalk"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Artalk",
"scheme": "http",
"port": 23366,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 23366,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+313
View File
@@ -0,0 +1,313 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-bichon",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Bichon"
},
"description": {
"en_US": "Self-hosted email archival and search server that downloads mailboxes over IMAP into encrypted local storage."
},
"category": "communication",
"category_label": "Communication & Community",
"author": "rustmailer",
"developer": "rustmailer",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/bichon.webp",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 15630,
"path": "/"
},
"website": "https://github.com/rustmailer/bichon",
"documentation": "https://github.com/rustmailer/bichon#readme",
"repository": "https://github.com/rustmailer/bichon",
"tips": [
"The upstream Docker command runs as UID:GID 1000:1000 and requires BICHON_ENCRYPT_PASSWORD. The initial web login is admin / admin@bichon; change it immediately."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "rustmailer",
"repository": "https://github.com/rustmailer/bichon",
"default_branch": "main",
"revision": "010e7dbd8ea1eceb478d6cee070c2156319e5685",
"image_repository_url": "https://hub.docker.com/r/rustmailer/bichon",
"readme_pushed_at": "",
"compose_sha256": "8e6b0d98f8fe7ff90ec4d092fc19ece93ba1f940b6690914c9fd6ab864729cdd",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/rustmailer/bichon/main/README.md"
},
"container_contract": {
"service_name": "bichon",
"container_name": "bichon",
"image": {
"reference": "docker.io/rustmailer/bichon:latest",
"registry": "docker.io",
"repository": "docker.io/rustmailer/bichon",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "BICHON_ROOT_DIR",
"example": "/data",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "BICHON_ENCRYPT_PASSWORD",
"example": null,
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "BICHON_LOG_LEVEL",
"example": "info",
"required": false,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./bichon-data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 15630,
"published_example": 15630,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"bichon\",\n \"services\": {\n \"bichon\": {\n \"image\": \"docker.io/rustmailer/bichon:latest\",\n \"container_name\": \"bichon\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"15630:15630/tcp\"\n ],\n \"volumes\": [\n \"./bichon-data:/data\"\n ],\n \"environment\": {\n \"BICHON_ROOT_DIR\": \"/data\",\n \"BICHON_ENCRYPT_PASSWORD\": null,\n \"BICHON_LOG_LEVEL\": \"info\"\n },\n \"user\": \"1000:1000\"\n }\n }\n}"
},
"compose_stack": {
"project_name": "bichon",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "bichon",
"service_count": 1,
"services": [
{
"name": "bichon",
"image": "docker.io/rustmailer/bichon:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "docker.io/rustmailer/bichon:latest",
"container_name": "bichon",
"restart": "unless-stopped",
"ports": [
"15630:15630/tcp"
],
"volumes": [
"./bichon-data:/data"
],
"environment": {
"BICHON_ROOT_DIR": "/data",
"BICHON_ENCRYPT_PASSWORD": null,
"BICHON_LOG_LEVEL": "info"
},
"user": "1000:1000"
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "bichon-volume-0",
"service": "bichon",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"bichon"
],
"stop_order": [
"bichon"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Bichon",
"scheme": "http",
"port": 15630,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": [
{
"label": "Bichon administrator",
"type": "static-default",
"username": "admin",
"password": "admin@bichon",
"change_required": true,
"source": "upstream-documentation"
}
]
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 15630,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+333
View File
@@ -0,0 +1,333 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-calnode",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Calnode"
},
"description": {
"en_US": "Self-hosted scheduling and booking app with a built-in admin interface and SQLite database."
},
"category": "productivity",
"category_label": "Productivity & Workflows",
"author": "Calnode",
"developer": "Calnode",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/calnode.webp",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3000,
"path": "/admin/"
},
"website": "https://github.com/Calnode/calnode",
"documentation": "https://github.com/Calnode/calnode/blob/main/DEPLOY.md",
"repository": "https://github.com/Calnode/calnode",
"tips": [
"The generated encryption and recovery secrets must be backed up with /data; losing them may make stored credentials unrecoverable. Configure HTTPS before enabling integrations that require secure origins."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "Calnode",
"repository": "https://github.com/Calnode/calnode",
"default_branch": "main",
"revision": "e0a942f8a7234c1dd28e1688ae35d3d6ec9f169f",
"image_repository_url": "https://github.com/orgs/calnode/packages/container/package/calnode",
"readme_pushed_at": "",
"compose_sha256": "719e5706269e843f00e5036390e9179253f64c472318cd5d960173cfb6dc03a8",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/Calnode/calnode/main/README.md"
},
"container_contract": {
"service_name": "calnode",
"container_name": "calnode",
"image": {
"reference": "ghcr.io/calnode/calnode:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/calnode/calnode",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "CALNODE_ENCRYPTION_KEY",
"example": "${GENERATED_CALNODE_ENCRYPTION_KEY}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "CALNODE_RECOVERY_SECRET",
"example": "${GENERATED_CALNODE_RECOVERY_SECRET}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "DATABASE_URL",
"example": "sqlite:///data/calnode.db",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 3000,
"published_example": 3000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"calnode\",\n \"services\": {\n \"calnode\": {\n \"image\": \"ghcr.io/calnode/calnode:latest\",\n \"container_name\": \"calnode\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3000:3000/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\"\n ],\n \"environment\": {\n \"CALNODE_ENCRYPTION_KEY\": \"${GENERATED_CALNODE_ENCRYPTION_KEY}\",\n \"CALNODE_RECOVERY_SECRET\": \"${GENERATED_CALNODE_RECOVERY_SECRET}\",\n \"DATABASE_URL\": \"sqlite:///data/calnode.db\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "calnode",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "calnode",
"service_count": 1,
"services": [
{
"name": "calnode",
"image": "ghcr.io/calnode/calnode:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/calnode/calnode:latest",
"container_name": "calnode",
"restart": "unless-stopped",
"ports": [
"3000:3000/tcp"
],
"volumes": [
"./data:/data"
],
"environment": {
"CALNODE_ENCRYPTION_KEY": "${GENERATED_CALNODE_ENCRYPTION_KEY}",
"CALNODE_RECOVERY_SECRET": "${GENERATED_CALNODE_RECOVERY_SECRET}",
"DATABASE_URL": "sqlite:///data/calnode.db"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "calnode-volume-0",
"service": "calnode",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"calnode"
],
"stop_order": [
"calnode"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-calnode-calnode-encryption-key",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "calnode",
"environment_variable": "CALNODE_ENCRYPTION_KEY"
}
]
},
{
"id": "generated-calnode-calnode-recovery-secret",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "calnode",
"environment_variable": "CALNODE_RECOVERY_SECRET"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "Calnode",
"scheme": "http",
"port": 3000,
"path": "/admin/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"CALNODE_ENCRYPTION_KEY": {
"strategy": "token-hex",
"bytes": 32
},
"CALNODE_RECOVERY_SECRET": {
"strategy": "token-hex",
"bytes": 32
}
},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+353
View File
@@ -0,0 +1,353 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-cooktrace",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "CookTrace"
},
"description": {
"en_US": "Self-hosted recipe manager for collecting, organizing, and sharing recipes."
},
"category": "productivity",
"category_label": "Productivity & Workflows",
"author": "TraceApps",
"developer": "TraceApps",
"icon": "https://raw.githubusercontent.com/traceapps/cooktrace/main/public/icons/icon-512.png",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3003,
"path": "/"
},
"website": "https://github.com/traceapps/cooktrace",
"documentation": "https://github.com/traceapps/cooktrace#readme",
"repository": "https://github.com/traceapps/cooktrace",
"tips": [
"The first-run wizard creates the initial administrator account."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "TraceApps",
"repository": "https://github.com/traceapps/cooktrace",
"default_branch": "main",
"revision": "f2734f0c4547fa605a935b20bb8e1516a8c39ba9",
"image_repository_url": "https://github.com/orgs/traceapps/packages/container/package/cooktrace",
"readme_pushed_at": "",
"compose_sha256": "97c6d80a15b18ba20e2740bd61220cb6907434a33ada01ffac476ebe89861989",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/traceapps/cooktrace/main/README.md"
},
"container_contract": {
"service_name": "cooktrace",
"container_name": "cooktrace",
"image": {
"reference": "ghcr.io/traceapps/cooktrace:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/traceapps/cooktrace",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "JWT_SECRET",
"example": "${GENERATED_JWT_SECRET}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "DB_PATH",
"example": "/data/db/cooktrace.db",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "UPLOADS_PATH",
"example": "/data/uploads",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data/db",
"compose_source_example": "./data/db",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
},
{
"id": "volume-1",
"container_path": "/data/uploads",
"compose_source_example": "./data/uploads",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 3003,
"published_example": 3003,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"cooktrace\",\n \"services\": {\n \"cooktrace\": {\n \"image\": \"ghcr.io/traceapps/cooktrace:latest\",\n \"container_name\": \"cooktrace\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3003:3003/tcp\"\n ],\n \"volumes\": [\n \"./data/db:/data/db\",\n \"./data/uploads:/data/uploads\"\n ],\n \"environment\": {\n \"JWT_SECRET\": \"${GENERATED_JWT_SECRET}\",\n \"DB_PATH\": \"/data/db/cooktrace.db\",\n \"UPLOADS_PATH\": \"/data/uploads\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "cooktrace",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "cooktrace",
"service_count": 1,
"services": [
{
"name": "cooktrace",
"image": "ghcr.io/traceapps/cooktrace:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/traceapps/cooktrace:latest",
"container_name": "cooktrace",
"restart": "unless-stopped",
"ports": [
"3003:3003/tcp"
],
"volumes": [
"./data/db:/data/db",
"./data/uploads:/data/uploads"
],
"environment": {
"JWT_SECRET": "${GENERATED_JWT_SECRET}",
"DB_PATH": "/data/db/cooktrace.db",
"UPLOADS_PATH": "/data/uploads"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "cooktrace-volume-0",
"service": "cooktrace",
"container_path": "/data/db",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
},
{
"id": "cooktrace-volume-1",
"service": "cooktrace",
"container_path": "/data/uploads",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"cooktrace"
],
"stop_order": [
"cooktrace"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-cooktrace-jwt-secret",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "cooktrace",
"environment_variable": "JWT_SECRET"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "CookTrace",
"scheme": "http",
"port": 3003,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"JWT_SECRET": {
"strategy": "token-hex",
"bytes": 48
}
},
"volume_preparations": [
{
"container_path": "/data/db",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/data/uploads",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3003,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+320
View File
@@ -0,0 +1,320 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-degubase",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Degubase"
},
"description": {
"en_US": "A single-container web interface for building small relational workspaces backed by SQLite."
},
"category": "databases",
"category_label": "Databases",
"author": "saintedlama",
"developer": "saintedlama",
"icon": "https://raw.githubusercontent.com/saintedlama/degubase/main/ui/public/assets/logo.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64"
],
"launch": {
"scheme": "http",
"port": 8080,
"path": "/"
},
"website": "https://github.com/saintedlama/degubase",
"documentation": "https://github.com/saintedlama/degubase#readme",
"repository": "https://github.com/saintedlama/degubase",
"tips": [
"The image stores workspace data under /data and configuration under /config. Authentication is configurable; review its security settings before publishing it."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "saintedlama",
"repository": "https://github.com/saintedlama/degubase",
"default_branch": "main",
"revision": "173257a2b0567ba91eef7454f174db9265f0f26c",
"image_repository_url": "https://github.com/orgs/saintedlama/packages/container/package/degubase",
"readme_pushed_at": "",
"compose_sha256": "f42e7bf9286f453d71411ffd69d9b18da1b209d51ef6f263f2ae60c7bc7e8616",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/saintedlama/degubase/main/README.md"
},
"container_contract": {
"service_name": "degubase",
"container_name": "degubase",
"image": {
"reference": "ghcr.io/saintedlama/degubase:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/saintedlama/degubase",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "DEGUBASE_HOST",
"example": "0.0.0.0",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
},
{
"id": "volume-1",
"container_path": "/config",
"compose_source_example": "./config",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 2
}
}
],
"ports": [
{
"container_port": 8080,
"published_example": 8080,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"degubase\",\n \"services\": {\n \"degubase\": {\n \"image\": \"ghcr.io/saintedlama/degubase:latest\",\n \"container_name\": \"degubase\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"8080:8080/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\",\n \"./config:/config\"\n ],\n \"environment\": {\n \"DEGUBASE_HOST\": \"0.0.0.0\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "degubase",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "degubase",
"service_count": 1,
"services": [
{
"name": "degubase",
"image": "ghcr.io/saintedlama/degubase:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/saintedlama/degubase:latest",
"container_name": "degubase",
"restart": "unless-stopped",
"ports": [
"8080:8080/tcp"
],
"volumes": [
"./data:/data",
"./config:/config"
],
"environment": {
"DEGUBASE_HOST": "0.0.0.0"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "degubase-volume-0",
"service": "degubase",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
},
{
"id": "degubase-volume-1",
"service": "degubase",
"container_path": "/config",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"degubase"
],
"stop_order": [
"degubase"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Degubase",
"scheme": "http",
"port": 8080,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/config",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 8080,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+303
View File
@@ -0,0 +1,303 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-flagr",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Flagr"
},
"description": {
"en_US": "Self-hosted feature-flag and experimentation service with a web interface and SQLite defaults."
},
"category": "ai",
"category_label": "AI / Coding & Dev-Tools",
"author": "openflagr",
"developer": "openflagr",
"icon": "https://raw.githubusercontent.com/openflagr/flagr/main/docs/brand/flagr-mark.png",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 18000,
"path": "/"
},
"website": "https://github.com/openflagr/flagr",
"documentation": "https://github.com/openflagr/flagr/blob/main/docs/flagr_self_host.md",
"repository": "https://github.com/openflagr/flagr",
"tips": [
"This profile uses Flagr's built-in SQLite mode; no MySQL or PostgreSQL service is required."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "openflagr",
"repository": "https://github.com/openflagr/flagr",
"default_branch": "main",
"revision": "e026211babf05b0cc3431b6deb565f65df7ae3c7",
"image_repository_url": "https://github.com/orgs/openflagr/packages/container/package/flagr",
"readme_pushed_at": "",
"compose_sha256": "ec4044f5b9f5c33c67ed266efd16be2b0d4c929c7a6ce7fa3b03d858fc0f93d5",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/openflagr/flagr/main/README.md"
},
"container_contract": {
"service_name": "flagr",
"container_name": "flagr",
"image": {
"reference": "ghcr.io/openflagr/flagr:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/openflagr/flagr",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "HOST",
"example": "0.0.0.0",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "FLAGR_DB_DBDRIVER",
"example": "sqlite3",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "FLAGR_DB_DBCONNECTIONSTR",
"example": "/data/flagr.sqlite",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 18000,
"published_example": 18000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"flagr\",\n \"services\": {\n \"flagr\": {\n \"image\": \"ghcr.io/openflagr/flagr:latest\",\n \"container_name\": \"flagr\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"18000:18000/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\"\n ],\n \"environment\": {\n \"HOST\": \"0.0.0.0\",\n \"FLAGR_DB_DBDRIVER\": \"sqlite3\",\n \"FLAGR_DB_DBCONNECTIONSTR\": \"/data/flagr.sqlite\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "flagr",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "flagr",
"service_count": 1,
"services": [
{
"name": "flagr",
"image": "ghcr.io/openflagr/flagr:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/openflagr/flagr:latest",
"container_name": "flagr",
"restart": "unless-stopped",
"ports": [
"18000:18000/tcp"
],
"volumes": [
"./data:/data"
],
"environment": {
"HOST": "0.0.0.0",
"FLAGR_DB_DBDRIVER": "sqlite3",
"FLAGR_DB_DBCONNECTIONSTR": "/data/flagr.sqlite"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "flagr-volume-0",
"service": "flagr",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"flagr"
],
"stop_order": [
"flagr"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Flagr",
"scheme": "http",
"port": 18000,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 18000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+307
View File
@@ -0,0 +1,307 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-guestroll",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Guestroll"
},
"description": {
"en_US": "Self-hosted event photo gallery for guests, with moderation, QR-code sharing, and local SQLite storage."
},
"category": "sharing",
"category_label": "Files & Sharing",
"author": "achedon12",
"developer": "achedon12",
"icon": "https://raw.githubusercontent.com/achedon12/guestroll/develop/src/app/icon.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3000,
"path": "/admin"
},
"website": "https://github.com/achedon12/guestroll",
"documentation": "https://github.com/achedon12/guestroll#readme",
"repository": "https://github.com/achedon12/guestroll",
"tips": [
"Sign in as admin at /admin. ADMIN_PASSWORD is requested at installation; PUBLIC_URL is initially set to the local LXC address.",
"Mobile camera access requires HTTPS; configure a reverse proxy before using that feature at an event."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "achedon12",
"repository": "https://github.com/achedon12/guestroll",
"default_branch": "develop",
"revision": "3fc407dd872a3e649b7ba505e2e6d80cefb9b82a",
"image_repository_url": "https://github.com/orgs/achedon12/packages/container/package/guestroll",
"readme_pushed_at": "",
"compose_sha256": "a02f45b0aacaf2a5e35a4554f3e35b547dc38011e693390d15f82f6c991c84e5",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/achedon12/guestroll/develop/README.md"
},
"container_contract": {
"service_name": "guestroll",
"container_name": "guestroll",
"image": {
"reference": "ghcr.io/achedon12/guestroll:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/achedon12/guestroll",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "ADMIN_PASSWORD",
"example": null,
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "PUBLIC_URL",
"example": "http://@CONTAINER_ADDRESS@:3000",
"required": true,
"sensitive": false,
"container_address": "http://@CONTAINER_ADDRESS@:3000",
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 3000,
"published_example": 3000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"guestroll\",\n \"services\": {\n \"guestroll\": {\n \"image\": \"ghcr.io/achedon12/guestroll:latest\",\n \"container_name\": \"guestroll\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3000:3000/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\"\n ],\n \"environment\": {\n \"ADMIN_PASSWORD\": null,\n \"PUBLIC_URL\": \"http://@CONTAINER_ADDRESS@:3000\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "guestroll",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "guestroll",
"service_count": 1,
"services": [
{
"name": "guestroll",
"image": "ghcr.io/achedon12/guestroll:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/achedon12/guestroll:latest",
"container_name": "guestroll",
"restart": "unless-stopped",
"ports": [
"3000:3000/tcp"
],
"volumes": [
"./data:/data"
],
"environment": {
"ADMIN_PASSWORD": null,
"PUBLIC_URL": "http://@CONTAINER_ADDRESS@:3000"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "guestroll-volume-0",
"service": "guestroll",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"guestroll"
],
"stop_order": [
"guestroll"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Guestroll",
"scheme": "http",
"port": 3000,
"path": "/admin",
"source": "upstream-documentation"
}
],
"credentials": [
{
"label": "Guestroll administrator",
"type": "configured-or-installer-generated",
"username": "admin",
"password": null,
"password_environment": "ADMIN_PASSWORD",
"change_required": false,
"source": "upstream-documentation"
}
]
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+352
View File
@@ -0,0 +1,352 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-ihatemoney",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "I Hate Money"
},
"description": {
"en_US": "Self-hosted shared-expense and group-budget manager for tracking purchases and settling who owes whom."
},
"category": "finance",
"category_label": "Finance & Budgeting",
"author": "spiral-project",
"developer": "spiral-project",
"icon": "https://raw.githubusercontent.com/spiral-project/ihatemoney/main/ihatemoney/static/favicon.ico",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 8000,
"path": "/"
},
"website": "https://ihatemoney.org/",
"documentation": "https://ihatemoney.readthedocs.io/en/latest/installation.html#with-docker",
"repository": "https://github.com/spiral-project/ihatemoney",
"tips": [
"The profile keeps the upstream admin dashboard disabled and public project creation enabled for the initial setup. Do not expose it publicly without reviewing those access settings.",
"The project is currently maintained with a focus on stability and maintenance rather than major new features."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "spiral-project",
"repository": "https://github.com/spiral-project/ihatemoney",
"default_branch": "main",
"revision": "e66a7672e8e5c41549bf53c4a824c72c43ab9079",
"image_repository_url": "https://hub.docker.com/r/ihatemoney/ihatemoney",
"readme_pushed_at": "",
"compose_sha256": "8a8be316e105a542379edca87eafadd0b9f42d980067b39ddcdab4fa71fce9c3",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/spiral-project/ihatemoney/main/README.md"
},
"container_contract": {
"service_name": "ihatemoney",
"container_name": "ihatemoney",
"image": {
"reference": "docker.io/ihatemoney/ihatemoney:latest",
"registry": "docker.io",
"repository": "docker.io/ihatemoney/ihatemoney",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "SECRET_KEY",
"example": "${GENERATED_SECRET_KEY}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "SQLALCHEMY_DATABASE_URI",
"example": "sqlite:////database/ihatemoney.db",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "SESSION_COOKIE_SECURE",
"example": "False",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "ACTIVATE_DEMO_PROJECT",
"example": "True",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "ACTIVATE_ADMIN_DASHBOARD",
"example": "False",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "ALLOW_PUBLIC_PROJECT_CREATION",
"example": "True",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "PORT",
"example": "8000",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/database",
"compose_source_example": "./database",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 8000,
"published_example": 8000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"ihatemoney\",\n \"services\": {\n \"ihatemoney\": {\n \"image\": \"docker.io/ihatemoney/ihatemoney:latest\",\n \"container_name\": \"ihatemoney\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"8000:8000/tcp\"\n ],\n \"volumes\": [\n \"./database:/database\"\n ],\n \"environment\": {\n \"SECRET_KEY\": \"${GENERATED_SECRET_KEY}\",\n \"SQLALCHEMY_DATABASE_URI\": \"sqlite:////database/ihatemoney.db\",\n \"SESSION_COOKIE_SECURE\": \"False\",\n \"ACTIVATE_DEMO_PROJECT\": \"True\",\n \"ACTIVATE_ADMIN_DASHBOARD\": \"False\",\n \"ALLOW_PUBLIC_PROJECT_CREATION\": \"True\",\n \"PORT\": \"8000\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "ihatemoney",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "ihatemoney",
"service_count": 1,
"services": [
{
"name": "ihatemoney",
"image": "docker.io/ihatemoney/ihatemoney:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "docker.io/ihatemoney/ihatemoney:latest",
"container_name": "ihatemoney",
"restart": "unless-stopped",
"ports": [
"8000:8000/tcp"
],
"volumes": [
"./database:/database"
],
"environment": {
"SECRET_KEY": "${GENERATED_SECRET_KEY}",
"SQLALCHEMY_DATABASE_URI": "sqlite:////database/ihatemoney.db",
"SESSION_COOKIE_SECURE": "False",
"ACTIVATE_DEMO_PROJECT": "True",
"ACTIVATE_ADMIN_DASHBOARD": "False",
"ALLOW_PUBLIC_PROJECT_CREATION": "True",
"PORT": "8000"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "ihatemoney-volume-0",
"service": "ihatemoney",
"container_path": "/database",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"ihatemoney"
],
"stop_order": [
"ihatemoney"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-ihatemoney-secret-key",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "ihatemoney",
"environment_variable": "SECRET_KEY"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "I Hate Money",
"scheme": "http",
"port": 8000,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"SECRET_KEY": {
"strategy": "token-hex",
"bytes": 32
}
},
"volume_preparations": [
{
"container_path": "/database",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 8000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+296
View File
@@ -0,0 +1,296 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-imagesilo",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "ImageSilo"
},
"description": {
"en_US": "Self-hosted image-hosting service with authenticated uploads, image processing, public links, and local storage."
},
"category": "sharing",
"category_label": "Files & Sharing",
"author": "Willxup",
"developer": "Willxup",
"icon": "https://raw.githubusercontent.com/Willxup/imagesilo/main/assets/brand/imagesilo-icon-512.png",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 8080,
"path": "/admin/setup"
},
"website": "https://github.com/Willxup/imagesilo",
"documentation": "https://github.com/Willxup/imagesilo/blob/main/README.md",
"repository": "https://github.com/Willxup/imagesilo",
"tips": [
"On first start, retrieve the one-time bootstrap token from the container log and enter it at /admin/setup to create the administrator.",
"Set IMAGESILO_COOKIE_SECURE=true when accessing the service through HTTPS."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "Willxup",
"repository": "https://github.com/Willxup/imagesilo",
"default_branch": "main",
"revision": "aecbdc402011f8a4bb8d0a4469786ab48db7d88a",
"image_repository_url": "https://github.com/orgs/Willxup/packages/container/package/imagesilo",
"readme_pushed_at": "",
"compose_sha256": "b1d73df6458fe0fb2c891f4f32eca925836c132ebbbccee9f95962ad0e4b7121",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/Willxup/imagesilo/main/README.md"
},
"container_contract": {
"service_name": "imagesilo",
"container_name": "imagesilo",
"image": {
"reference": "ghcr.io/willxup/imagesilo:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/willxup/imagesilo",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "IMAGESILO_COOKIE_SECURE",
"example": "false",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "IMAGESILO_PROCESSING_CONCURRENCY",
"example": "1",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 8080,
"published_example": 8080,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"imagesilo\",\n \"services\": {\n \"imagesilo\": {\n \"image\": \"ghcr.io/willxup/imagesilo:latest\",\n \"container_name\": \"imagesilo\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"8080:8080/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\"\n ],\n \"environment\": {\n \"IMAGESILO_COOKIE_SECURE\": \"false\",\n \"IMAGESILO_PROCESSING_CONCURRENCY\": \"1\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "imagesilo",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "imagesilo",
"service_count": 1,
"services": [
{
"name": "imagesilo",
"image": "ghcr.io/willxup/imagesilo:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/willxup/imagesilo:latest",
"container_name": "imagesilo",
"restart": "unless-stopped",
"ports": [
"8080:8080/tcp"
],
"volumes": [
"./data:/data"
],
"environment": {
"IMAGESILO_COOKIE_SECURE": "false",
"IMAGESILO_PROCESSING_CONCURRENCY": "1"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "imagesilo-volume-0",
"service": "imagesilo",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"imagesilo"
],
"stop_order": [
"imagesilo"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "ImageSilo",
"scheme": "http",
"port": 8080,
"path": "/admin/setup",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 8080,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+368
View File
@@ -0,0 +1,368 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-instatic",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Instatic"
},
"description": {
"en_US": "Single-server website CMS and visual editor with SQLite-backed content, media uploads, forms, and publishing."
},
"category": "web",
"category_label": "Webservers & Proxies",
"author": "CoreBunch",
"developer": "CoreBunch",
"icon": "https://raw.githubusercontent.com/CoreBunch/Instatic/main/public/favicon.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64"
],
"launch": {
"scheme": "http",
"port": 3001,
"path": "/admin"
},
"website": "https://github.com/CoreBunch/Instatic",
"documentation": "https://github.com/CoreBunch/Instatic/blob/main/docs/deployment/vps.md",
"repository": "https://github.com/CoreBunch/Instatic",
"tips": [
"The initial visit at /admin creates the site and administrator. INSTATIC_SECRET_KEY is generated and persisted with the recipe; back up the volume."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "CoreBunch",
"repository": "https://github.com/CoreBunch/Instatic",
"default_branch": "main",
"revision": "1a7ab33ff1614e80b2f618b284dd55b0e2b9d9ae",
"image_repository_url": "https://github.com/orgs/CoreBunch/packages/container/package/instatic",
"readme_pushed_at": "",
"compose_sha256": "b8b34bcb67ace12f558f3a93b2363bfd525992ea66c9dd89b9cb53258087a16f",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/CoreBunch/Instatic/main/README.md"
},
"container_contract": {
"service_name": "instatic",
"container_name": "instatic",
"image": {
"reference": "ghcr.io/corebunch/instatic:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/corebunch/instatic",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "PORT",
"example": "3001",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "DATABASE_URL",
"example": "sqlite:/app/data/cms.db",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "UPLOADS_DIR",
"example": "/app/uploads",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "STATIC_DIR",
"example": "/app/dist",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "INSTATIC_SECRET_KEY",
"example": "${GENERATED_INSTATIC_SECRET_KEY}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/app/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
},
{
"id": "volume-1",
"container_path": "/app/uploads",
"compose_source_example": "./uploads",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 3001,
"published_example": 3001,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"instatic\",\n \"services\": {\n \"instatic\": {\n \"image\": \"ghcr.io/corebunch/instatic:latest\",\n \"container_name\": \"instatic\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3001:3001/tcp\"\n ],\n \"volumes\": [\n \"./data:/app/data\",\n \"./uploads:/app/uploads\"\n ],\n \"environment\": {\n \"PORT\": \"3001\",\n \"DATABASE_URL\": \"sqlite:/app/data/cms.db\",\n \"UPLOADS_DIR\": \"/app/uploads\",\n \"STATIC_DIR\": \"/app/dist\",\n \"INSTATIC_SECRET_KEY\": \"${GENERATED_INSTATIC_SECRET_KEY}\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "instatic",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "instatic",
"service_count": 1,
"services": [
{
"name": "instatic",
"image": "ghcr.io/corebunch/instatic:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/corebunch/instatic:latest",
"container_name": "instatic",
"restart": "unless-stopped",
"ports": [
"3001:3001/tcp"
],
"volumes": [
"./data:/app/data",
"./uploads:/app/uploads"
],
"environment": {
"PORT": "3001",
"DATABASE_URL": "sqlite:/app/data/cms.db",
"UPLOADS_DIR": "/app/uploads",
"STATIC_DIR": "/app/dist",
"INSTATIC_SECRET_KEY": "${GENERATED_INSTATIC_SECRET_KEY}"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "instatic-volume-0",
"service": "instatic",
"container_path": "/app/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
},
{
"id": "instatic-volume-1",
"service": "instatic",
"container_path": "/app/uploads",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"instatic"
],
"stop_order": [
"instatic"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-instatic-instatic-secret-key",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "instatic",
"environment_variable": "INSTATIC_SECRET_KEY"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "Instatic",
"scheme": "http",
"port": 3001,
"path": "/admin",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"INSTATIC_SECRET_KEY": {
"strategy": "token-hex",
"bytes": 24
}
},
"volume_preparations": [
{
"container_path": "/app/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/app/uploads",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3001,
"path": "/health",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+387
View File
@@ -0,0 +1,387 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-invoiceshelf",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "InvoiceShelf"
},
"description": {
"en_US": "Self-hosted invoicing and estimates with customer portals, recurring billing, payments, and expense tracking."
},
"category": "business",
"category_label": "Business & ERP",
"author": "InvoiceShelf",
"developer": "InvoiceShelf",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/invoiceshelf.webp",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 8080,
"path": "/"
},
"website": "https://github.com/InvoiceShelf/InvoiceShelf",
"documentation": "https://github.com/InvoiceShelf/docker#readme",
"repository": "https://github.com/InvoiceShelf/InvoiceShelf",
"tips": [
"The initial visit opens the setup wizard. The SQLite database is stored under /var/www/html/storage.",
"The upstream Docker image includes the web server and scheduler in one image; there is no database or scheduler container to add."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "InvoiceShelf",
"repository": "https://github.com/InvoiceShelf/docker",
"default_branch": "master",
"revision": "479f2396569959064fc6ca7a2bb36af30920d199",
"image_repository_url": "https://hub.docker.com/r/invoiceshelf/invoiceshelf",
"readme_pushed_at": "",
"compose_sha256": "5c855909373c8b9a8f3c4997fd24e06d8f11f303a2f318ddf084b6185efc43b4",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/InvoiceShelf/docker/master/README.md"
},
"container_contract": {
"service_name": "invoiceshelf",
"container_name": "invoiceshelf",
"image": {
"reference": "docker.io/invoiceshelf/invoiceshelf:latest",
"registry": "docker.io",
"repository": "docker.io/invoiceshelf/invoiceshelf",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "APP_NAME",
"example": "InvoiceShelf",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "APP_ENV",
"example": "production",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "APP_DEBUG",
"example": "false",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "APP_URL",
"example": "http://@CONTAINER_ADDRESS@:8080",
"required": true,
"sensitive": false,
"container_address": "http://@CONTAINER_ADDRESS@:8080",
"source": "upstream-documentation"
},
{
"name": "DB_CONNECTION",
"example": "sqlite",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "DB_DATABASE",
"example": "/var/www/html/storage/app/database.sqlite",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "CACHE_STORE",
"example": "file",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "SESSION_DRIVER",
"example": "file",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "SESSION_LIFETIME",
"example": "240",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/var/www/html/storage",
"compose_source_example": "./invoiceshelf/storage",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
},
{
"id": "volume-1",
"container_path": "/var/www/html/Modules",
"compose_source_example": "./invoiceshelf/modules",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 8080,
"published_example": 8090,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"invoiceshelf\",\n \"services\": {\n \"invoiceshelf\": {\n \"image\": \"docker.io/invoiceshelf/invoiceshelf:latest\",\n \"container_name\": \"invoiceshelf\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"8090:8080/tcp\"\n ],\n \"volumes\": [\n \"./invoiceshelf/storage:/var/www/html/storage\",\n \"./invoiceshelf/modules:/var/www/html/Modules\"\n ],\n \"environment\": {\n \"APP_NAME\": \"InvoiceShelf\",\n \"APP_ENV\": \"production\",\n \"APP_DEBUG\": \"false\",\n \"APP_URL\": \"http://@CONTAINER_ADDRESS@:8080\",\n \"DB_CONNECTION\": \"sqlite\",\n \"DB_DATABASE\": \"/var/www/html/storage/app/database.sqlite\",\n \"CACHE_STORE\": \"file\",\n \"SESSION_DRIVER\": \"file\",\n \"SESSION_LIFETIME\": \"240\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "invoiceshelf",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "invoiceshelf",
"service_count": 1,
"services": [
{
"name": "invoiceshelf",
"image": "docker.io/invoiceshelf/invoiceshelf:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "docker.io/invoiceshelf/invoiceshelf:latest",
"container_name": "invoiceshelf",
"restart": "unless-stopped",
"ports": [
"8090:8080/tcp"
],
"volumes": [
"./invoiceshelf/storage:/var/www/html/storage",
"./invoiceshelf/modules:/var/www/html/Modules"
],
"environment": {
"APP_NAME": "InvoiceShelf",
"APP_ENV": "production",
"APP_DEBUG": "false",
"APP_URL": "http://@CONTAINER_ADDRESS@:8080",
"DB_CONNECTION": "sqlite",
"DB_DATABASE": "/var/www/html/storage/app/database.sqlite",
"CACHE_STORE": "file",
"SESSION_DRIVER": "file",
"SESSION_LIFETIME": "240"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "invoiceshelf-volume-0",
"service": "invoiceshelf",
"container_path": "/var/www/html/storage",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
},
{
"id": "invoiceshelf-volume-1",
"service": "invoiceshelf",
"container_path": "/var/www/html/Modules",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"invoiceshelf"
],
"stop_order": [
"invoiceshelf"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "InvoiceShelf",
"scheme": "http",
"port": 8080,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/var/www/html/storage",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/var/www/html/Modules",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 8080,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+311
View File
@@ -0,0 +1,311 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-kroma",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "KROMA"
},
"description": {
"en_US": "Personal media server for browsing and playing a local video library, with direct play and optional modules."
},
"category": "media",
"category_label": "Media & Streaming",
"author": "kromatv",
"developer": "kromatv",
"icon": "https://raw.githubusercontent.com/kromatv/kroma/main/.github/assets/logo.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 4040,
"path": "/"
},
"website": "https://github.com/kromatv/kroma",
"documentation": "https://github.com/kromatv/kroma#readme",
"repository": "https://github.com/kromatv/kroma",
"tips": [
"Without KROMA_MEDIA_DIRS configured, the server seeds demo titles. To browse your own library, add a host media directory at /media and configure KROMA_MEDIA_DIRS=/media.",
"KROMA modules can start additional processes when enabled; this profile installs only the base server image."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "kromatv",
"repository": "https://github.com/kromatv/kroma",
"default_branch": "main",
"revision": "616024831f332d3c24a6ebc6afc2dd5a1148b63f",
"image_repository_url": "https://github.com/orgs/kromatv/packages/container/package/kroma",
"readme_pushed_at": "",
"compose_sha256": "0eef24d6d6c187a1188ba00183d7a8f4dc7244e1ca13dea3dbf5fc57e9c6c3d6",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/kromatv/kroma/main/README.md"
},
"container_contract": {
"service_name": "kroma",
"container_name": "kroma",
"image": {
"reference": "ghcr.io/kromatv/kroma:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/kromatv/kroma",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "KROMA_MEDIA_DIRS",
"example": "/media",
"required": false,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
},
{
"id": "volume-1",
"container_path": "/media",
"compose_source_example": "/path/to/video-library",
"read_only": true,
"required": false,
"installation_choice": [
"host-bind",
"skip"
],
"default": "skip",
"managed_volume": {
"backup": false,
"default_size_gb": 1
}
}
],
"ports": [
{
"container_port": 4040,
"published_example": 4040,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"kroma\",\n \"services\": {\n \"kroma\": {\n \"image\": \"ghcr.io/kromatv/kroma:latest\",\n \"container_name\": \"kroma\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"4040:4040/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\",\n \"/path/to/video-library:/media:ro\"\n ],\n \"environment\": {\n \"KROMA_MEDIA_DIRS\": \"/media\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "kroma",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "kroma",
"service_count": 1,
"services": [
{
"name": "kroma",
"image": "ghcr.io/kromatv/kroma:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/kromatv/kroma:latest",
"container_name": "kroma",
"restart": "unless-stopped",
"ports": [
"4040:4040/tcp"
],
"volumes": [
"./data:/data",
"/path/to/video-library:/media:ro"
],
"environment": {
"KROMA_MEDIA_DIRS": "/media"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "kroma-volume-0",
"service": "kroma",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"kroma"
],
"stop_order": [
"kroma"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "KROMA",
"scheme": "http",
"port": 4040,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/media",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 4040,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+303
View File
@@ -0,0 +1,303 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-libre-closet",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Libre Closet"
},
"description": {
"en_US": "Self-hosted wardrobe catalog for organizing clothing, outfits, and personal style with SQLite and local file storage."
},
"category": "productivity",
"category_label": "Productivity & Workflows",
"author": "lazztech",
"developer": "lazztech",
"icon": "https://raw.githubusercontent.com/lazztech/Libre-Closet/main/public/favicon.ico",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3000,
"path": "/"
},
"website": "https://github.com/lazztech/Libre-Closet",
"documentation": "https://github.com/lazztech/Libre-Closet#readme",
"repository": "https://github.com/lazztech/Libre-Closet",
"tips": [
"Upstream defaults to AUTH_ENABLED=false. Keep this service on a trusted network or enable authentication and configure accounts before exposing it beyond your LAN."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "lazztech",
"repository": "https://github.com/lazztech/Libre-Closet",
"default_branch": "main",
"revision": "08f66dd9fe071e3b62e529d0ca4050169d31532d",
"image_repository_url": "https://github.com/orgs/lazztech/packages/container/package/libre-closet",
"readme_pushed_at": "",
"compose_sha256": "55286f8ae33f8a4e91d9224ff1804e99b41fd9d5045409cbef3641be211c34c5",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/lazztech/Libre-Closet/main/README.md"
},
"container_contract": {
"service_name": "libre-closet",
"container_name": "libre-closet",
"image": {
"reference": "ghcr.io/lazztech/libre-closet:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/lazztech/libre-closet",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "AUTH_ENABLED",
"example": "false",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "PWA_ENABLED",
"example": "true",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "DATA_PATH",
"example": "/app/data",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/app/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 3000,
"published_example": 3000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"libre-closet\",\n \"services\": {\n \"libre-closet\": {\n \"image\": \"ghcr.io/lazztech/libre-closet:latest\",\n \"container_name\": \"libre-closet\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3000:3000/tcp\"\n ],\n \"volumes\": [\n \"./data:/app/data\"\n ],\n \"environment\": {\n \"AUTH_ENABLED\": \"false\",\n \"PWA_ENABLED\": \"true\",\n \"DATA_PATH\": \"/app/data\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "libre-closet",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "libre-closet",
"service_count": 1,
"services": [
{
"name": "libre-closet",
"image": "ghcr.io/lazztech/libre-closet:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/lazztech/libre-closet:latest",
"container_name": "libre-closet",
"restart": "unless-stopped",
"ports": [
"3000:3000/tcp"
],
"volumes": [
"./data:/app/data"
],
"environment": {
"AUTH_ENABLED": "false",
"PWA_ENABLED": "true",
"DATA_PATH": "/app/data"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "libre-closet-volume-0",
"service": "libre-closet",
"container_path": "/app/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"libre-closet"
],
"stop_order": [
"libre-closet"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Libre Closet",
"scheme": "http",
"port": 3000,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/app/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+353
View File
@@ -0,0 +1,353 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-lifttrace",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "LiftTrace"
},
"description": {
"en_US": "Self-hosted strength-training tracker with workout logs, programs, progress photos, and a mobile PWA."
},
"category": "productivity",
"category_label": "Productivity & Workflows",
"author": "TraceApps",
"developer": "TraceApps",
"icon": "https://raw.githubusercontent.com/traceapps/lifttrace/main/public/icons/icon-512.png",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3002,
"path": "/"
},
"website": "https://github.com/traceapps/lifttrace",
"documentation": "https://github.com/traceapps/lifttrace#readme",
"repository": "https://github.com/traceapps/lifttrace",
"tips": [
"The first-run wizard creates the initial administrator account."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "TraceApps",
"repository": "https://github.com/traceapps/lifttrace",
"default_branch": "main",
"revision": "bfde1fef9c8c38508197cd679ad646f3385ec5d8",
"image_repository_url": "https://github.com/orgs/traceapps/packages/container/package/lifttrace",
"readme_pushed_at": "",
"compose_sha256": "5e271146d220f3fda16a48b9e996f5a3df111461e36b4542fa91f245876af101",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/traceapps/lifttrace/main/README.md"
},
"container_contract": {
"service_name": "lifttrace",
"container_name": "lifttrace",
"image": {
"reference": "ghcr.io/traceapps/lifttrace:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/traceapps/lifttrace",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "JWT_SECRET",
"example": "${GENERATED_JWT_SECRET}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "DB_PATH",
"example": "/data/db/lifttrace.db",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "UPLOADS_PATH",
"example": "/data/uploads",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data/db",
"compose_source_example": "./data/db",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
},
{
"id": "volume-1",
"container_path": "/data/uploads",
"compose_source_example": "./data/uploads",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 3002,
"published_example": 3002,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"lifttrace\",\n \"services\": {\n \"lifttrace\": {\n \"image\": \"ghcr.io/traceapps/lifttrace:latest\",\n \"container_name\": \"lifttrace\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3002:3002/tcp\"\n ],\n \"volumes\": [\n \"./data/db:/data/db\",\n \"./data/uploads:/data/uploads\"\n ],\n \"environment\": {\n \"JWT_SECRET\": \"${GENERATED_JWT_SECRET}\",\n \"DB_PATH\": \"/data/db/lifttrace.db\",\n \"UPLOADS_PATH\": \"/data/uploads\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "lifttrace",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "lifttrace",
"service_count": 1,
"services": [
{
"name": "lifttrace",
"image": "ghcr.io/traceapps/lifttrace:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/traceapps/lifttrace:latest",
"container_name": "lifttrace",
"restart": "unless-stopped",
"ports": [
"3002:3002/tcp"
],
"volumes": [
"./data/db:/data/db",
"./data/uploads:/data/uploads"
],
"environment": {
"JWT_SECRET": "${GENERATED_JWT_SECRET}",
"DB_PATH": "/data/db/lifttrace.db",
"UPLOADS_PATH": "/data/uploads"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "lifttrace-volume-0",
"service": "lifttrace",
"container_path": "/data/db",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
},
{
"id": "lifttrace-volume-1",
"service": "lifttrace",
"container_path": "/data/uploads",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"lifttrace"
],
"stop_order": [
"lifttrace"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-lifttrace-jwt-secret",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "lifttrace",
"environment_variable": "JWT_SECRET"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "LiftTrace",
"scheme": "http",
"port": 3002,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"JWT_SECRET": {
"strategy": "token-hex",
"bytes": 48
}
},
"volume_preparations": [
{
"container_path": "/data/db",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/data/uploads",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3002,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+288
View File
@@ -0,0 +1,288 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-maintainerr",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Maintainerr"
},
"description": {
"en_US": "Self-hosted media-library cleanup and maintenance dashboard for Plex, Jellyfin, or Emby."
},
"category": "media",
"category_label": "Media & Streaming",
"author": "Maintainerr",
"developer": "Maintainerr",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/maintainerr.webp",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 6246,
"path": "/"
},
"website": "https://github.com/Maintainerr/Maintainerr",
"documentation": "https://github.com/Maintainerr/Maintainerr#readme",
"repository": "https://github.com/Maintainerr/Maintainerr",
"tips": [
"To manage a library, configure an external Plex, Jellyfin, or Emby server in the UI. CPU feature x86-64-v2 is required for overlays and collection-poster image processing; the UI can still start without it."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "Maintainerr",
"repository": "https://github.com/Maintainerr/Maintainerr",
"default_branch": "development",
"revision": "518078a712c8223b32e4d5817c8a90851c6c0743",
"image_repository_url": "https://github.com/orgs/Maintainerr/packages/container/package/maintainerr",
"readme_pushed_at": "",
"compose_sha256": "70d646e01856512988acdb119804c3ddb6c516d809c4b44c33806cefe42753e9",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/Maintainerr/Maintainerr/development/README.md"
},
"container_contract": {
"service_name": "maintainerr",
"container_name": "maintainerr",
"image": {
"reference": "ghcr.io/maintainerr/maintainerr:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/maintainerr/maintainerr",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "TZ",
"example": "Europe/Madrid",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/opt/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 6246,
"published_example": 6246,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"maintainerr\",\n \"services\": {\n \"maintainerr\": {\n \"image\": \"ghcr.io/maintainerr/maintainerr:latest\",\n \"container_name\": \"maintainerr\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"6246:6246/tcp\"\n ],\n \"volumes\": [\n \"./data:/opt/data\"\n ],\n \"environment\": {\n \"TZ\": \"Europe/Madrid\"\n },\n \"user\": \"1000:1000\"\n }\n }\n}"
},
"compose_stack": {
"project_name": "maintainerr",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "maintainerr",
"service_count": 1,
"services": [
{
"name": "maintainerr",
"image": "ghcr.io/maintainerr/maintainerr:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/maintainerr/maintainerr:latest",
"container_name": "maintainerr",
"restart": "unless-stopped",
"ports": [
"6246:6246/tcp"
],
"volumes": [
"./data:/opt/data"
],
"environment": {
"TZ": "Europe/Madrid"
},
"user": "1000:1000"
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "maintainerr-volume-0",
"service": "maintainerr",
"container_path": "/opt/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"maintainerr"
],
"stop_order": [
"maintainerr"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Maintainerr",
"scheme": "http",
"port": 6246,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/opt/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 6246,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+303
View File
@@ -0,0 +1,303 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-notara",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Notara"
},
"description": {
"en_US": "Self-hosted collaborative notes and knowledge base with pages, inline databases, and SQLite storage."
},
"category": "documents",
"category_label": "Documents & Notes",
"author": "DnzzL",
"developer": "DnzzL",
"icon": "https://raw.githubusercontent.com/DnzzL/notara/main/packages/app/public/icon-512.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3000,
"path": "/"
},
"website": "https://github.com/DnzzL/notara",
"documentation": "https://github.com/DnzzL/notara#readme",
"repository": "https://github.com/DnzzL/notara",
"tips": [
"Create the initial account through the web interface. SMTP is optional and is needed only for invitations and password resets."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "DnzzL",
"repository": "https://github.com/DnzzL/notara",
"default_branch": "main",
"revision": "46dddd593651fe452ab0cc0951504d76d468e862",
"image_repository_url": "https://github.com/orgs/dnzzl/packages/container/package/notara",
"readme_pushed_at": "",
"compose_sha256": "7b74dd1c9a15ae341a165b646053c1fccccb948adc5b773134ccf04bd80ecb1a",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/DnzzL/notara/main/README.md"
},
"container_contract": {
"service_name": "notara",
"container_name": "notara",
"image": {
"reference": "ghcr.io/dnzzl/notara:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/dnzzl/notara",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "BETTER_AUTH_SECRET",
"example": "${GENERATED_BETTER_AUTH_SECRET}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 3000,
"published_example": 3000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"notara\",\n \"services\": {\n \"notara\": {\n \"image\": \"ghcr.io/dnzzl/notara:latest\",\n \"container_name\": \"notara\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3000:3000/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\"\n ],\n \"environment\": {\n \"BETTER_AUTH_SECRET\": \"${GENERATED_BETTER_AUTH_SECRET}\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "notara",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "notara",
"service_count": 1,
"services": [
{
"name": "notara",
"image": "ghcr.io/dnzzl/notara:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/dnzzl/notara:latest",
"container_name": "notara",
"restart": "unless-stopped",
"ports": [
"3000:3000/tcp"
],
"volumes": [
"./data:/data"
],
"environment": {
"BETTER_AUTH_SECRET": "${GENERATED_BETTER_AUTH_SECRET}"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "notara-volume-0",
"service": "notara",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"notara"
],
"stop_order": [
"notara"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-notara-better-auth-secret",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "notara",
"environment_variable": "BETTER_AUTH_SECRET"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "Notara",
"scheme": "http",
"port": 3000,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"BETTER_AUTH_SECRET": {
"strategy": "token-hex",
"bytes": 32
}
},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+353
View File
@@ -0,0 +1,353 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-notetrace",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "NoteTrace"
},
"description": {
"en_US": "Self-hosted notes and notebooks with attachments, backups, and optional multi-user accounts."
},
"category": "documents",
"category_label": "Documents & Notes",
"author": "TraceApps",
"developer": "TraceApps",
"icon": "https://raw.githubusercontent.com/traceapps/notetrace/main/public/icons/icon-512.png",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3004,
"path": "/"
},
"website": "https://github.com/traceapps/notetrace",
"documentation": "https://github.com/traceapps/notetrace#readme",
"repository": "https://github.com/traceapps/notetrace",
"tips": [
"The first-run wizard creates the initial administrator account."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "TraceApps",
"repository": "https://github.com/traceapps/notetrace",
"default_branch": "main",
"revision": "0a3bf0b33531b940a069d98e1928f29d48894d6e",
"image_repository_url": "https://github.com/orgs/traceapps/packages/container/package/notetrace",
"readme_pushed_at": "",
"compose_sha256": "69d694f8c1e557f51dacd5a2427acc3d1ec47ce0207b70e518b18ca1ca7e6137",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/traceapps/notetrace/main/README.md"
},
"container_contract": {
"service_name": "notetrace",
"container_name": "notetrace",
"image": {
"reference": "ghcr.io/traceapps/notetrace:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/traceapps/notetrace",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "JWT_SECRET",
"example": "${GENERATED_JWT_SECRET}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "DB_PATH",
"example": "/data/db/notetrace.db",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "UPLOADS_PATH",
"example": "/data/uploads",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data/db",
"compose_source_example": "./data/db",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
},
{
"id": "volume-1",
"container_path": "/data/uploads",
"compose_source_example": "./data/uploads",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 3004,
"published_example": 3004,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"notetrace\",\n \"services\": {\n \"notetrace\": {\n \"image\": \"ghcr.io/traceapps/notetrace:latest\",\n \"container_name\": \"notetrace\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3004:3004/tcp\"\n ],\n \"volumes\": [\n \"./data/db:/data/db\",\n \"./data/uploads:/data/uploads\"\n ],\n \"environment\": {\n \"JWT_SECRET\": \"${GENERATED_JWT_SECRET}\",\n \"DB_PATH\": \"/data/db/notetrace.db\",\n \"UPLOADS_PATH\": \"/data/uploads\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "notetrace",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "notetrace",
"service_count": 1,
"services": [
{
"name": "notetrace",
"image": "ghcr.io/traceapps/notetrace:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/traceapps/notetrace:latest",
"container_name": "notetrace",
"restart": "unless-stopped",
"ports": [
"3004:3004/tcp"
],
"volumes": [
"./data/db:/data/db",
"./data/uploads:/data/uploads"
],
"environment": {
"JWT_SECRET": "${GENERATED_JWT_SECRET}",
"DB_PATH": "/data/db/notetrace.db",
"UPLOADS_PATH": "/data/uploads"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "notetrace-volume-0",
"service": "notetrace",
"container_path": "/data/db",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
},
{
"id": "notetrace-volume-1",
"service": "notetrace",
"container_path": "/data/uploads",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"notetrace"
],
"stop_order": [
"notetrace"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-notetrace-jwt-secret",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "notetrace",
"environment_variable": "JWT_SECRET"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "NoteTrace",
"scheme": "http",
"port": 3004,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"JWT_SECRET": {
"strategy": "token-hex",
"bytes": 48
}
},
"volume_preparations": [
{
"container_path": "/data/db",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/data/uploads",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3004,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+353
View File
@@ -0,0 +1,353 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-nutritrace",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "NutriTrace"
},
"description": {
"en_US": "Self-hosted nutrition and meal tracker with food logging, recipes, and nutrition data."
},
"category": "productivity",
"category_label": "Productivity & Workflows",
"author": "TraceApps",
"developer": "TraceApps",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/nutritrace.webp",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3001,
"path": "/"
},
"website": "https://github.com/traceapps/nutritrace",
"documentation": "https://github.com/traceapps/nutritrace#readme",
"repository": "https://github.com/traceapps/nutritrace",
"tips": [
"The first-run wizard can enable user management and create an administrator; single-user mode is also available."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "TraceApps",
"repository": "https://github.com/traceapps/nutritrace",
"default_branch": "main",
"revision": "888c9664cd3a0222a9449cff506264097a2ae9b2",
"image_repository_url": "https://github.com/orgs/traceapps/packages/container/package/nutritrace",
"readme_pushed_at": "",
"compose_sha256": "2a9bbfd67502e5fd7e7d09393abd510b2ac70f9d841cd4cca44b5364e3348d90",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/traceapps/nutritrace/main/README.md"
},
"container_contract": {
"service_name": "nutritrace",
"container_name": "nutritrace",
"image": {
"reference": "ghcr.io/traceapps/nutritrace:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/traceapps/nutritrace",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "JWT_SECRET",
"example": "${GENERATED_JWT_SECRET}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "DB_PATH",
"example": "/data/db/nutritrace.db",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "UPLOADS_PATH",
"example": "/data/uploads",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data/db",
"compose_source_example": "./data/db",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
},
{
"id": "volume-1",
"container_path": "/data/uploads",
"compose_source_example": "./data/uploads",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 3001,
"published_example": 3001,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"nutritrace\",\n \"services\": {\n \"nutritrace\": {\n \"image\": \"ghcr.io/traceapps/nutritrace:latest\",\n \"container_name\": \"nutritrace\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3001:3001/tcp\"\n ],\n \"volumes\": [\n \"./data/db:/data/db\",\n \"./data/uploads:/data/uploads\"\n ],\n \"environment\": {\n \"JWT_SECRET\": \"${GENERATED_JWT_SECRET}\",\n \"DB_PATH\": \"/data/db/nutritrace.db\",\n \"UPLOADS_PATH\": \"/data/uploads\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "nutritrace",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "nutritrace",
"service_count": 1,
"services": [
{
"name": "nutritrace",
"image": "ghcr.io/traceapps/nutritrace:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/traceapps/nutritrace:latest",
"container_name": "nutritrace",
"restart": "unless-stopped",
"ports": [
"3001:3001/tcp"
],
"volumes": [
"./data/db:/data/db",
"./data/uploads:/data/uploads"
],
"environment": {
"JWT_SECRET": "${GENERATED_JWT_SECRET}",
"DB_PATH": "/data/db/nutritrace.db",
"UPLOADS_PATH": "/data/uploads"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "nutritrace-volume-0",
"service": "nutritrace",
"container_path": "/data/db",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
},
{
"id": "nutritrace-volume-1",
"service": "nutritrace",
"container_path": "/data/uploads",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"nutritrace"
],
"stop_order": [
"nutritrace"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-nutritrace-jwt-secret",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "nutritrace",
"environment_variable": "JWT_SECRET"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "NutriTrace",
"scheme": "http",
"port": 3001,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"JWT_SECRET": {
"strategy": "token-hex",
"bytes": 48
}
},
"volume_preparations": [
{
"container_path": "/data/db",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/data/uploads",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3001,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+285
View File
@@ -0,0 +1,285 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-opengist",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Opengist"
},
"description": {
"en_US": "Self-hosted Git-powered pastebin for snippets with syntax highlighting, history, and optional Git-over-SSH access."
},
"category": "documents",
"category_label": "Documents & Notes",
"author": "thomiceli",
"developer": "thomiceli",
"icon": "https://raw.githubusercontent.com/thomiceli/opengist/master/public/img/opengist.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 6157,
"path": "/"
},
"website": "https://opengist.io/",
"documentation": "https://opengist.io/docs",
"repository": "https://github.com/thomiceli/opengist",
"tips": [
"The /opengist directory contains the SQLite database and Git-backed snippets.",
"Port 2222 provides Git-over-SSH; publish it only if you plan to use that feature."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "thomiceli",
"repository": "https://github.com/thomiceli/opengist",
"default_branch": "master",
"revision": "2acf3dae87f9c3d536e0a870787941bbd06d0b46",
"image_repository_url": "https://github.com/thomiceli/opengist/pkgs/container/opengist",
"readme_pushed_at": "",
"compose_sha256": "493ca309582a2dd17a31e7a7b12835830e7ee0b75c4faf20c21bfd9419a0ad30",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/thomiceli/opengist/master/README.md"
},
"container_contract": {
"service_name": "opengist",
"container_name": "opengist",
"image": {
"reference": "ghcr.io/thomiceli/opengist:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/thomiceli/opengist",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [],
"volumes": [
{
"id": "volume-0",
"container_path": "/opengist",
"compose_source_example": "./opengist-data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 6157,
"published_example": 6157,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
},
{
"container_port": 2222,
"published_example": 2222,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"opengist\",\n \"services\": {\n \"opengist\": {\n \"image\": \"ghcr.io/thomiceli/opengist:latest\",\n \"container_name\": \"opengist\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"6157:6157/tcp\",\n \"2222:2222/tcp\"\n ],\n \"volumes\": [\n \"./opengist-data:/opengist\"\n ]\n }\n }\n}"
},
"compose_stack": {
"project_name": "opengist",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "opengist",
"service_count": 1,
"services": [
{
"name": "opengist",
"image": "ghcr.io/thomiceli/opengist:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/thomiceli/opengist:latest",
"container_name": "opengist",
"restart": "unless-stopped",
"ports": [
"6157:6157/tcp",
"2222:2222/tcp"
],
"volumes": [
"./opengist-data:/opengist"
]
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "opengist-volume-0",
"service": "opengist",
"container_path": "/opengist",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"opengist"
],
"stop_order": [
"opengist"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Opengist",
"scheme": "http",
"port": 6157,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/opengist",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 6157,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+276
View File
@@ -0,0 +1,276 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-opentask",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "OpenTask"
},
"description": {
"en_US": "Self-hosted personal task manager with a Todoist-compatible workflow, search, and automatic account-registration lock."
},
"category": "productivity",
"category_label": "Productivity & Workflows",
"author": "pranav-karra-3301",
"developer": "pranav-karra-3301",
"icon": "https://raw.githubusercontent.com/junkdrawerlab/opentask/main/assets/brand/icon.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 7968,
"path": "/"
},
"website": "https://github.com/junkdrawerlab/opentask",
"documentation": "https://github.com/junkdrawerlab/opentask#readme",
"repository": "https://github.com/pranav-karra-3301/opentask",
"tips": [
"The first user registration is automatically treated as the administrator and locks new registration; HTTPS is needed for Web Push outside localhost."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "pranav-karra-3301",
"repository": "https://github.com/pranav-karra-3301/opentask",
"default_branch": "main",
"revision": "1214ee494d9692c39a733933a10ddc66af6a580f",
"image_repository_url": "https://github.com/orgs/pranav-karra-3301/packages/container/package/opentask",
"readme_pushed_at": "",
"compose_sha256": "f0f5b59f015c866295b7027420951dd8df66abb7296e0ccef47fdbd9bbeb7b09",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/pranav-karra-3301/opentask/main/README.md"
},
"container_contract": {
"service_name": "opentask",
"container_name": "opentask",
"image": {
"reference": "ghcr.io/pranav-karra-3301/opentask:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/pranav-karra-3301/opentask",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 7968,
"published_example": 7968,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"opentask\",\n \"services\": {\n \"opentask\": {\n \"image\": \"ghcr.io/pranav-karra-3301/opentask:latest\",\n \"container_name\": \"opentask\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"7968:7968/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\"\n ]\n }\n }\n}"
},
"compose_stack": {
"project_name": "opentask",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "opentask",
"service_count": 1,
"services": [
{
"name": "opentask",
"image": "ghcr.io/pranav-karra-3301/opentask:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/pranav-karra-3301/opentask:latest",
"container_name": "opentask",
"restart": "unless-stopped",
"ports": [
"7968:7968/tcp"
],
"volumes": [
"./data:/data"
]
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "opentask-volume-0",
"service": "opentask",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"opentask"
],
"stop_order": [
"opentask"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "OpenTask",
"scheme": "http",
"port": 7968,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 7968,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+302
View File
@@ -0,0 +1,302 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-papra",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Papra"
},
"description": {
"en_US": "Self-hosted document management for storing, organizing, searching, and sharing personal documents."
},
"category": "documents",
"category_label": "Documents & Notes",
"author": "papra-hq",
"developer": "papra-hq",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/papra.webp",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 1221,
"path": "/"
},
"website": "https://papra.app/",
"documentation": "https://docs.papra.app/self-hosting/using-docker/",
"repository": "https://github.com/papra-hq/papra",
"tips": [
"The installer generates AUTH_SECRET. Keep /app/app-data backed up; it contains the database and documents."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "papra-hq",
"repository": "https://github.com/papra-hq/papra",
"default_branch": "main",
"revision": "93a569f3e90fd63a6034522d6c3b316d8bb67a65",
"image_repository_url": "https://github.com/orgs/papra-hq/packages/container/package/papra",
"readme_pushed_at": "",
"compose_sha256": "49e2b3120cd8d33b5d737a872bd2f695fb1bea63f155f9142ccc7860e93ede2e",
"generated_at": "2026-10-26T06:10:04+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/papra-hq/papra/main/README.md"
},
"container_contract": {
"service_name": "papra",
"container_name": "papra",
"image": {
"reference": "ghcr.io/papra-hq/papra:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/papra-hq/papra",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "AUTH_SECRET",
"example": "${GENERATED_AUTH_SECRET}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/app/app-data",
"compose_source_example": "./papra-data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 1221,
"published_example": 1221,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"papra\",\n \"services\": {\n \"papra\": {\n \"image\": \"ghcr.io/papra-hq/papra:latest\",\n \"container_name\": \"papra\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"1221:1221/tcp\"\n ],\n \"volumes\": [\n \"./papra-data:/app/app-data\"\n ],\n \"environment\": {\n \"AUTH_SECRET\": \"${GENERATED_AUTH_SECRET}\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "papra",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "papra",
"service_count": 1,
"services": [
{
"name": "papra",
"image": "ghcr.io/papra-hq/papra:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/papra-hq/papra:latest",
"container_name": "papra",
"restart": "unless-stopped",
"ports": [
"1221:1221/tcp"
],
"volumes": [
"./papra-data:/app/app-data"
],
"environment": {
"AUTH_SECRET": "${GENERATED_AUTH_SECRET}"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "papra-volume-0",
"service": "papra",
"container_path": "/app/app-data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"papra"
],
"stop_order": [
"papra"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-papra-auth-secret",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "papra",
"environment_variable": "AUTH_SECRET"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "Papra",
"scheme": "http",
"port": 1221,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"AUTH_SECRET": {
"strategy": "token-hex",
"bytes": 48
}
},
"volume_preparations": [
{
"container_path": "/app/app-data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 1221,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+298
View File
@@ -0,0 +1,298 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-photofield",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Photofield"
},
"description": {
"en_US": "Self-hosted photo library that indexes local photo collections and keeps its thumbnail cache in persistent storage."
},
"category": "media",
"category_label": "Media & Streaming",
"author": "SmilyOrg",
"developer": "SmilyOrg",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/photofield.webp",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 8080,
"path": "/"
},
"website": "https://github.com/SmilyOrg/photofield",
"documentation": "https://github.com/SmilyOrg/photofield#readme",
"repository": "https://github.com/SmilyOrg/photofield",
"tips": [
"Map a host photo directory at /app/photos for a real library; it is mounted read-only in the upstream example."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "SmilyOrg",
"repository": "https://github.com/SmilyOrg/photofield",
"default_branch": "main",
"revision": "d7374a9ab11be7d684e958b9bdf2b4205d0dbc23",
"image_repository_url": "https://github.com/orgs/SmilyOrg/packages/container/package/photofield",
"readme_pushed_at": "",
"compose_sha256": "9786bbfa8603a75fa42037397f14707c6f2d830edb2bc9844474590764ee5de4",
"generated_at": "2026-10-26T06:10:04+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/SmilyOrg/photofield/main/README.md"
},
"container_contract": {
"service_name": "photofield",
"container_name": "photofield",
"image": {
"reference": "ghcr.io/smilyorg/photofield:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/smilyorg/photofield",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [],
"volumes": [
{
"id": "volume-0",
"container_path": "/app/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
},
{
"id": "volume-1",
"container_path": "/app/photos",
"compose_source_example": "./photos",
"read_only": true,
"required": false,
"installation_choice": [
"host-bind",
"skip"
],
"default": "skip",
"managed_volume": {
"backup": false,
"default_size_gb": 1
}
}
],
"ports": [
{
"container_port": 8080,
"published_example": 8080,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"photofield\",\n \"services\": {\n \"photofield\": {\n \"image\": \"ghcr.io/smilyorg/photofield:latest\",\n \"container_name\": \"photofield\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"8080:8080/tcp\"\n ],\n \"volumes\": [\n \"./data:/app/data\",\n \"./photos:/app/photos:ro\"\n ]\n }\n }\n}"
},
"compose_stack": {
"project_name": "photofield",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "photofield",
"service_count": 1,
"services": [
{
"name": "photofield",
"image": "ghcr.io/smilyorg/photofield:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/smilyorg/photofield:latest",
"container_name": "photofield",
"restart": "unless-stopped",
"ports": [
"8080:8080/tcp"
],
"volumes": [
"./data:/app/data",
"./photos:/app/photos:ro"
]
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "photofield-volume-0",
"service": "photofield",
"container_path": "/app/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"photofield"
],
"stop_order": [
"photofield"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Photofield",
"scheme": "http",
"port": 8080,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/app/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/app/photos",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 8080,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+285
View File
@@ -0,0 +1,285 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-plants",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Plants"
},
"description": {
"en_US": "Self-hosted household plant-care tracker with reminders, photos, and multiple user accounts."
},
"category": "productivity",
"category_label": "Productivity & Workflows",
"author": "dhrandy",
"developer": "dhrandy",
"icon": "https://raw.githubusercontent.com/dhrandy/plants/main/app/static/icon.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64"
],
"launch": {
"scheme": "http",
"port": 8000,
"path": "/"
},
"website": "https://github.com/dhrandy/plants",
"documentation": "https://github.com/dhrandy/plants#readme",
"repository": "https://github.com/dhrandy/plants",
"tips": [
"The first visit opens setup; the first account becomes the administrator."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "dhrandy",
"repository": "https://github.com/dhrandy/plants",
"default_branch": "main",
"revision": "e40a84a0fb9c1e9de491f9f69653034e561ac7fe",
"image_repository_url": "https://github.com/orgs/dhrandy/packages/container/package/plants",
"readme_pushed_at": "",
"compose_sha256": "25e903044cb5ef53f0b58ec9cab4ce88d47c4073bf69f8c6c836389cae46cd87",
"generated_at": "2026-10-26T06:10:04+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/dhrandy/plants/main/README.md"
},
"container_contract": {
"service_name": "plants",
"container_name": "plants",
"image": {
"reference": "ghcr.io/dhrandy/plants:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/dhrandy/plants",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "TZ",
"example": "UTC",
"required": false,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/app/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 8000,
"published_example": 8000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"plants\",\n \"services\": {\n \"plants\": {\n \"image\": \"ghcr.io/dhrandy/plants:latest\",\n \"container_name\": \"plants\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"8000:8000/tcp\"\n ],\n \"volumes\": [\n \"./data:/app/data\"\n ],\n \"environment\": {\n \"TZ\": \"UTC\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "plants",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "plants",
"service_count": 1,
"services": [
{
"name": "plants",
"image": "ghcr.io/dhrandy/plants:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/dhrandy/plants:latest",
"container_name": "plants",
"restart": "unless-stopped",
"ports": [
"8000:8000/tcp"
],
"volumes": [
"./data:/app/data"
],
"environment": {
"TZ": "UTC"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "plants-volume-0",
"service": "plants",
"container_path": "/app/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"plants"
],
"stop_order": [
"plants"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Plants",
"scheme": "http",
"port": 8000,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/app/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 8000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+321
View File
@@ -0,0 +1,321 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-sofa",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Sofa"
},
"description": {
"en_US": "Self-hosted movie and TV tracker with watch history, recommendations, and media-server integrations."
},
"category": "media",
"category_label": "Media & Streaming",
"author": "jakejarvis",
"developer": "jakejarvis",
"icon": "https://raw.githubusercontent.com/jakejarvis/sofa/main/apps/web/public/icon.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3000,
"path": "/"
},
"website": "https://github.com/jakejarvis/sofa",
"documentation": "https://github.com/jakejarvis/sofa#readme",
"repository": "https://github.com/jakejarvis/sofa",
"tips": [
"A TMDB API Read Access Token is required for metadata and discovery. Update BETTER_AUTH_URL to the public HTTPS address when putting the app behind a reverse proxy.",
"The first account created becomes the administrator and registration then closes by default."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "jakejarvis",
"repository": "https://github.com/jakejarvis/sofa",
"default_branch": "main",
"revision": "a8294d977b0f2c0ad267d0b516298881a5571e86",
"image_repository_url": "https://github.com/orgs/jakejarvis/packages/container/package/sofa",
"readme_pushed_at": "",
"compose_sha256": "f58035702e2110cf26805bcb3c6a442296146ddd8dd36c1bf956469e94007471",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/jakejarvis/sofa/main/README.md"
},
"container_contract": {
"service_name": "sofa",
"container_name": "sofa",
"image": {
"reference": "ghcr.io/jakejarvis/sofa:edge",
"registry": "ghcr.io",
"repository": "ghcr.io/jakejarvis/sofa",
"tag": "edge",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "TMDB_API_READ_ACCESS_TOKEN",
"example": null,
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "BETTER_AUTH_SECRET",
"example": "${GENERATED_BETTER_AUTH_SECRET}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "BETTER_AUTH_URL",
"example": "http://@CONTAINER_ADDRESS@:3000",
"required": true,
"sensitive": false,
"container_address": "http://@CONTAINER_ADDRESS@:3000",
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 3000,
"published_example": 3000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"sofa\",\n \"services\": {\n \"sofa\": {\n \"image\": \"ghcr.io/jakejarvis/sofa:edge\",\n \"container_name\": \"sofa\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3000:3000/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\"\n ],\n \"environment\": {\n \"TMDB_API_READ_ACCESS_TOKEN\": null,\n \"BETTER_AUTH_SECRET\": \"${GENERATED_BETTER_AUTH_SECRET}\",\n \"BETTER_AUTH_URL\": \"http://@CONTAINER_ADDRESS@:3000\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "sofa",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "sofa",
"service_count": 1,
"services": [
{
"name": "sofa",
"image": "ghcr.io/jakejarvis/sofa:edge",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/jakejarvis/sofa:edge",
"container_name": "sofa",
"restart": "unless-stopped",
"ports": [
"3000:3000/tcp"
],
"volumes": [
"./data:/data"
],
"environment": {
"TMDB_API_READ_ACCESS_TOKEN": null,
"BETTER_AUTH_SECRET": "${GENERATED_BETTER_AUTH_SECRET}",
"BETTER_AUTH_URL": "http://@CONTAINER_ADDRESS@:3000"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "sofa-volume-0",
"service": "sofa",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"sofa"
],
"stop_order": [
"sofa"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-sofa-better-auth-secret",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "sofa",
"environment_variable": "BETTER_AUTH_SECRET"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "Sofa",
"scheme": "http",
"port": 3000,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"BETTER_AUTH_SECRET": {
"strategy": "token-hex",
"bytes": 32
}
},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+238
View File
@@ -0,0 +1,238 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-web-check",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Web Check"
},
"description": {
"en_US": "Self-hosted website diagnostics for checking DNS, TLS certificates, HTTP headers, and other web properties."
},
"category": "tools",
"category_label": "Tools",
"author": "Lissy93",
"developer": "Lissy93",
"icon": "https://raw.githubusercontent.com/Lissy93/web-check/master/public/favicon.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3000,
"path": "/"
},
"website": "https://web-check.xyz/",
"documentation": "https://github.com/Lissy93/web-check#readme",
"repository": "https://github.com/Lissy93/web-check",
"tips": [
"No authentication is built in. Restrict access to trusted users and avoid exposing the service publicly; submitted checks can target private network addresses."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "Lissy93",
"repository": "https://github.com/Lissy93/web-check",
"default_branch": "master",
"revision": "d4be4895c94270c3b8d5a2be544298e3b1b7ee39",
"image_repository_url": "https://github.com/orgs/Lissy93/packages/container/package/web-check",
"readme_pushed_at": "",
"compose_sha256": "273607094e2cec1c15d64d9a672c89aa033ad109acf1580c47f4fa52ca3ea019",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/Lissy93/web-check/master/README.md"
},
"container_contract": {
"service_name": "web-check",
"container_name": "web-check",
"image": {
"reference": "ghcr.io/lissy93/web-check:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/lissy93/web-check",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [],
"volumes": [],
"ports": [
{
"container_port": 3000,
"published_example": 3000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"web-check\",\n \"services\": {\n \"web-check\": {\n \"image\": \"ghcr.io/lissy93/web-check:latest\",\n \"container_name\": \"web-check\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3000:3000/tcp\"\n ],\n \"volumes\": []\n }\n }\n}"
},
"compose_stack": {
"project_name": "web-check",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "web-check",
"service_count": 1,
"services": [
{
"name": "web-check",
"image": "ghcr.io/lissy93/web-check:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/lissy93/web-check:latest",
"container_name": "web-check",
"restart": "unless-stopped",
"ports": [
"3000:3000/tcp"
],
"volumes": []
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"web-check"
],
"stop_order": [
"web-check"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Web Check",
"scheme": "http",
"port": 3000,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [],
"startup_healthcheck": {
"scheme": "http",
"port": 3000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+276
View File
@@ -0,0 +1,276 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-artalk",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Artalk"
},
"description": {
"en_US": "Self-hosted comment server for blogs and websites, with a browser-based dashboard."
},
"category": "documents",
"category_label": "Documents & Notes",
"author": "ArtalkJS",
"developer": "ArtalkJS",
"icon": "https://raw.githubusercontent.com/ArtalkJS/Artalk/master/docs/docs/images/artalk-logo.png",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 23366,
"path": "/"
},
"website": "https://artalk.js.org/",
"documentation": "https://artalk.js.org/en/guide/deploy.html",
"repository": "https://github.com/ArtalkJS/Artalk",
"tips": [
"Create the initial dashboard administrator from the container console with the upstream artalk admin command."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "ArtalkJS",
"repository": "https://github.com/ArtalkJS/Artalk",
"default_branch": "master",
"revision": "53d15ee0c3a908b4a58fc43f42c44b5e709279bd",
"image_repository_url": "https://hub.docker.com/r/artalk/artalk-go",
"readme_pushed_at": "",
"compose_sha256": "856f4fcf59914076799bc5774d1e69ab3d3da7d60c3b2598062864cd02552677",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/ArtalkJS/Artalk/master/README.md"
},
"container_contract": {
"service_name": "artalk",
"container_name": "artalk",
"image": {
"reference": "docker.io/artalk/artalk-go:latest",
"registry": "docker.io",
"repository": "docker.io/artalk/artalk-go",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 23366,
"published_example": 23366,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"artalk\",\n \"services\": {\n \"artalk\": {\n \"image\": \"docker.io/artalk/artalk-go:latest\",\n \"container_name\": \"artalk\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"23366:23366/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\"\n ]\n }\n }\n}"
},
"compose_stack": {
"project_name": "artalk",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "artalk",
"service_count": 1,
"services": [
{
"name": "artalk",
"image": "docker.io/artalk/artalk-go:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "docker.io/artalk/artalk-go:latest",
"container_name": "artalk",
"restart": "unless-stopped",
"ports": [
"23366:23366/tcp"
],
"volumes": [
"./data:/data"
]
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "artalk-volume-0",
"service": "artalk",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"artalk"
],
"stop_order": [
"artalk"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Artalk",
"scheme": "http",
"port": 23366,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 23366,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+313
View File
@@ -0,0 +1,313 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-bichon",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Bichon"
},
"description": {
"en_US": "Self-hosted email archival and search server that downloads mailboxes over IMAP into encrypted local storage."
},
"category": "communication",
"category_label": "Communication & Community",
"author": "rustmailer",
"developer": "rustmailer",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/bichon.webp",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 15630,
"path": "/"
},
"website": "https://github.com/rustmailer/bichon",
"documentation": "https://github.com/rustmailer/bichon#readme",
"repository": "https://github.com/rustmailer/bichon",
"tips": [
"The upstream Docker command runs as UID:GID 1000:1000 and requires BICHON_ENCRYPT_PASSWORD. The initial web login is admin / admin@bichon; change it immediately."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "rustmailer",
"repository": "https://github.com/rustmailer/bichon",
"default_branch": "main",
"revision": "010e7dbd8ea1eceb478d6cee070c2156319e5685",
"image_repository_url": "https://hub.docker.com/r/rustmailer/bichon",
"readme_pushed_at": "",
"compose_sha256": "8e6b0d98f8fe7ff90ec4d092fc19ece93ba1f940b6690914c9fd6ab864729cdd",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/rustmailer/bichon/main/README.md"
},
"container_contract": {
"service_name": "bichon",
"container_name": "bichon",
"image": {
"reference": "docker.io/rustmailer/bichon:latest",
"registry": "docker.io",
"repository": "docker.io/rustmailer/bichon",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "BICHON_ROOT_DIR",
"example": "/data",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "BICHON_ENCRYPT_PASSWORD",
"example": null,
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "BICHON_LOG_LEVEL",
"example": "info",
"required": false,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./bichon-data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 15630,
"published_example": 15630,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"bichon\",\n \"services\": {\n \"bichon\": {\n \"image\": \"docker.io/rustmailer/bichon:latest\",\n \"container_name\": \"bichon\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"15630:15630/tcp\"\n ],\n \"volumes\": [\n \"./bichon-data:/data\"\n ],\n \"environment\": {\n \"BICHON_ROOT_DIR\": \"/data\",\n \"BICHON_ENCRYPT_PASSWORD\": null,\n \"BICHON_LOG_LEVEL\": \"info\"\n },\n \"user\": \"1000:1000\"\n }\n }\n}"
},
"compose_stack": {
"project_name": "bichon",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "bichon",
"service_count": 1,
"services": [
{
"name": "bichon",
"image": "docker.io/rustmailer/bichon:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "docker.io/rustmailer/bichon:latest",
"container_name": "bichon",
"restart": "unless-stopped",
"ports": [
"15630:15630/tcp"
],
"volumes": [
"./bichon-data:/data"
],
"environment": {
"BICHON_ROOT_DIR": "/data",
"BICHON_ENCRYPT_PASSWORD": null,
"BICHON_LOG_LEVEL": "info"
},
"user": "1000:1000"
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "bichon-volume-0",
"service": "bichon",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"bichon"
],
"stop_order": [
"bichon"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Bichon",
"scheme": "http",
"port": 15630,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": [
{
"label": "Bichon administrator",
"type": "static-default",
"username": "admin",
"password": "admin@bichon",
"change_required": true,
"source": "upstream-documentation"
}
]
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 15630,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+333
View File
@@ -0,0 +1,333 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-calnode",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Calnode"
},
"description": {
"en_US": "Self-hosted scheduling and booking app with a built-in admin interface and SQLite database."
},
"category": "productivity",
"category_label": "Productivity & Workflows",
"author": "Calnode",
"developer": "Calnode",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/calnode.webp",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3000,
"path": "/admin/"
},
"website": "https://github.com/Calnode/calnode",
"documentation": "https://github.com/Calnode/calnode/blob/main/DEPLOY.md",
"repository": "https://github.com/Calnode/calnode",
"tips": [
"The generated encryption and recovery secrets must be backed up with /data; losing them may make stored credentials unrecoverable. Configure HTTPS before enabling integrations that require secure origins."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "Calnode",
"repository": "https://github.com/Calnode/calnode",
"default_branch": "main",
"revision": "e0a942f8a7234c1dd28e1688ae35d3d6ec9f169f",
"image_repository_url": "https://github.com/orgs/calnode/packages/container/package/calnode",
"readme_pushed_at": "",
"compose_sha256": "719e5706269e843f00e5036390e9179253f64c472318cd5d960173cfb6dc03a8",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/Calnode/calnode/main/README.md"
},
"container_contract": {
"service_name": "calnode",
"container_name": "calnode",
"image": {
"reference": "ghcr.io/calnode/calnode:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/calnode/calnode",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "CALNODE_ENCRYPTION_KEY",
"example": "${GENERATED_CALNODE_ENCRYPTION_KEY}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "CALNODE_RECOVERY_SECRET",
"example": "${GENERATED_CALNODE_RECOVERY_SECRET}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "DATABASE_URL",
"example": "sqlite:///data/calnode.db",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 3000,
"published_example": 3000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"calnode\",\n \"services\": {\n \"calnode\": {\n \"image\": \"ghcr.io/calnode/calnode:latest\",\n \"container_name\": \"calnode\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3000:3000/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\"\n ],\n \"environment\": {\n \"CALNODE_ENCRYPTION_KEY\": \"${GENERATED_CALNODE_ENCRYPTION_KEY}\",\n \"CALNODE_RECOVERY_SECRET\": \"${GENERATED_CALNODE_RECOVERY_SECRET}\",\n \"DATABASE_URL\": \"sqlite:///data/calnode.db\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "calnode",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "calnode",
"service_count": 1,
"services": [
{
"name": "calnode",
"image": "ghcr.io/calnode/calnode:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/calnode/calnode:latest",
"container_name": "calnode",
"restart": "unless-stopped",
"ports": [
"3000:3000/tcp"
],
"volumes": [
"./data:/data"
],
"environment": {
"CALNODE_ENCRYPTION_KEY": "${GENERATED_CALNODE_ENCRYPTION_KEY}",
"CALNODE_RECOVERY_SECRET": "${GENERATED_CALNODE_RECOVERY_SECRET}",
"DATABASE_URL": "sqlite:///data/calnode.db"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "calnode-volume-0",
"service": "calnode",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"calnode"
],
"stop_order": [
"calnode"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-calnode-calnode-encryption-key",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "calnode",
"environment_variable": "CALNODE_ENCRYPTION_KEY"
}
]
},
{
"id": "generated-calnode-calnode-recovery-secret",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "calnode",
"environment_variable": "CALNODE_RECOVERY_SECRET"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "Calnode",
"scheme": "http",
"port": 3000,
"path": "/admin/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"CALNODE_ENCRYPTION_KEY": {
"strategy": "token-hex",
"bytes": 32
},
"CALNODE_RECOVERY_SECRET": {
"strategy": "token-hex",
"bytes": 32
}
},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+353
View File
@@ -0,0 +1,353 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-cooktrace",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "CookTrace"
},
"description": {
"en_US": "Self-hosted recipe manager for collecting, organizing, and sharing recipes."
},
"category": "productivity",
"category_label": "Productivity & Workflows",
"author": "TraceApps",
"developer": "TraceApps",
"icon": "https://raw.githubusercontent.com/traceapps/cooktrace/main/public/icons/icon-512.png",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3003,
"path": "/"
},
"website": "https://github.com/traceapps/cooktrace",
"documentation": "https://github.com/traceapps/cooktrace#readme",
"repository": "https://github.com/traceapps/cooktrace",
"tips": [
"The first-run wizard creates the initial administrator account."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "TraceApps",
"repository": "https://github.com/traceapps/cooktrace",
"default_branch": "main",
"revision": "f2734f0c4547fa605a935b20bb8e1516a8c39ba9",
"image_repository_url": "https://github.com/orgs/traceapps/packages/container/package/cooktrace",
"readme_pushed_at": "",
"compose_sha256": "97c6d80a15b18ba20e2740bd61220cb6907434a33ada01ffac476ebe89861989",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/traceapps/cooktrace/main/README.md"
},
"container_contract": {
"service_name": "cooktrace",
"container_name": "cooktrace",
"image": {
"reference": "ghcr.io/traceapps/cooktrace:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/traceapps/cooktrace",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "JWT_SECRET",
"example": "${GENERATED_JWT_SECRET}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "DB_PATH",
"example": "/data/db/cooktrace.db",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "UPLOADS_PATH",
"example": "/data/uploads",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data/db",
"compose_source_example": "./data/db",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
},
{
"id": "volume-1",
"container_path": "/data/uploads",
"compose_source_example": "./data/uploads",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 3003,
"published_example": 3003,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"cooktrace\",\n \"services\": {\n \"cooktrace\": {\n \"image\": \"ghcr.io/traceapps/cooktrace:latest\",\n \"container_name\": \"cooktrace\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3003:3003/tcp\"\n ],\n \"volumes\": [\n \"./data/db:/data/db\",\n \"./data/uploads:/data/uploads\"\n ],\n \"environment\": {\n \"JWT_SECRET\": \"${GENERATED_JWT_SECRET}\",\n \"DB_PATH\": \"/data/db/cooktrace.db\",\n \"UPLOADS_PATH\": \"/data/uploads\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "cooktrace",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "cooktrace",
"service_count": 1,
"services": [
{
"name": "cooktrace",
"image": "ghcr.io/traceapps/cooktrace:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/traceapps/cooktrace:latest",
"container_name": "cooktrace",
"restart": "unless-stopped",
"ports": [
"3003:3003/tcp"
],
"volumes": [
"./data/db:/data/db",
"./data/uploads:/data/uploads"
],
"environment": {
"JWT_SECRET": "${GENERATED_JWT_SECRET}",
"DB_PATH": "/data/db/cooktrace.db",
"UPLOADS_PATH": "/data/uploads"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "cooktrace-volume-0",
"service": "cooktrace",
"container_path": "/data/db",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
},
{
"id": "cooktrace-volume-1",
"service": "cooktrace",
"container_path": "/data/uploads",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"cooktrace"
],
"stop_order": [
"cooktrace"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-cooktrace-jwt-secret",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "cooktrace",
"environment_variable": "JWT_SECRET"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "CookTrace",
"scheme": "http",
"port": 3003,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"JWT_SECRET": {
"strategy": "token-hex",
"bytes": 48
}
},
"volume_preparations": [
{
"container_path": "/data/db",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/data/uploads",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3003,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+320
View File
@@ -0,0 +1,320 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-degubase",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Degubase"
},
"description": {
"en_US": "A single-container web interface for building small relational workspaces backed by SQLite."
},
"category": "databases",
"category_label": "Databases",
"author": "saintedlama",
"developer": "saintedlama",
"icon": "https://raw.githubusercontent.com/saintedlama/degubase/main/ui/public/assets/logo.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64"
],
"launch": {
"scheme": "http",
"port": 8080,
"path": "/"
},
"website": "https://github.com/saintedlama/degubase",
"documentation": "https://github.com/saintedlama/degubase#readme",
"repository": "https://github.com/saintedlama/degubase",
"tips": [
"The image stores workspace data under /data and configuration under /config. Authentication is configurable; review its security settings before publishing it."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "saintedlama",
"repository": "https://github.com/saintedlama/degubase",
"default_branch": "main",
"revision": "173257a2b0567ba91eef7454f174db9265f0f26c",
"image_repository_url": "https://github.com/orgs/saintedlama/packages/container/package/degubase",
"readme_pushed_at": "",
"compose_sha256": "f42e7bf9286f453d71411ffd69d9b18da1b209d51ef6f263f2ae60c7bc7e8616",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/saintedlama/degubase/main/README.md"
},
"container_contract": {
"service_name": "degubase",
"container_name": "degubase",
"image": {
"reference": "ghcr.io/saintedlama/degubase:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/saintedlama/degubase",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "DEGUBASE_HOST",
"example": "0.0.0.0",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
},
{
"id": "volume-1",
"container_path": "/config",
"compose_source_example": "./config",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 2
}
}
],
"ports": [
{
"container_port": 8080,
"published_example": 8080,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"degubase\",\n \"services\": {\n \"degubase\": {\n \"image\": \"ghcr.io/saintedlama/degubase:latest\",\n \"container_name\": \"degubase\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"8080:8080/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\",\n \"./config:/config\"\n ],\n \"environment\": {\n \"DEGUBASE_HOST\": \"0.0.0.0\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "degubase",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "degubase",
"service_count": 1,
"services": [
{
"name": "degubase",
"image": "ghcr.io/saintedlama/degubase:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/saintedlama/degubase:latest",
"container_name": "degubase",
"restart": "unless-stopped",
"ports": [
"8080:8080/tcp"
],
"volumes": [
"./data:/data",
"./config:/config"
],
"environment": {
"DEGUBASE_HOST": "0.0.0.0"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "degubase-volume-0",
"service": "degubase",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
},
{
"id": "degubase-volume-1",
"service": "degubase",
"container_path": "/config",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"degubase"
],
"stop_order": [
"degubase"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Degubase",
"scheme": "http",
"port": 8080,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/config",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 8080,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+303
View File
@@ -0,0 +1,303 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-flagr",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Flagr"
},
"description": {
"en_US": "Self-hosted feature-flag and experimentation service with a web interface and SQLite defaults."
},
"category": "ai",
"category_label": "AI / Coding & Dev-Tools",
"author": "openflagr",
"developer": "openflagr",
"icon": "https://raw.githubusercontent.com/openflagr/flagr/main/docs/brand/flagr-mark.png",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 18000,
"path": "/"
},
"website": "https://github.com/openflagr/flagr",
"documentation": "https://github.com/openflagr/flagr/blob/main/docs/flagr_self_host.md",
"repository": "https://github.com/openflagr/flagr",
"tips": [
"This profile uses Flagr's built-in SQLite mode; no MySQL or PostgreSQL service is required."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "openflagr",
"repository": "https://github.com/openflagr/flagr",
"default_branch": "main",
"revision": "e026211babf05b0cc3431b6deb565f65df7ae3c7",
"image_repository_url": "https://github.com/orgs/openflagr/packages/container/package/flagr",
"readme_pushed_at": "",
"compose_sha256": "ec4044f5b9f5c33c67ed266efd16be2b0d4c929c7a6ce7fa3b03d858fc0f93d5",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/openflagr/flagr/main/README.md"
},
"container_contract": {
"service_name": "flagr",
"container_name": "flagr",
"image": {
"reference": "ghcr.io/openflagr/flagr:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/openflagr/flagr",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "HOST",
"example": "0.0.0.0",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "FLAGR_DB_DBDRIVER",
"example": "sqlite3",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "FLAGR_DB_DBCONNECTIONSTR",
"example": "/data/flagr.sqlite",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 18000,
"published_example": 18000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"flagr\",\n \"services\": {\n \"flagr\": {\n \"image\": \"ghcr.io/openflagr/flagr:latest\",\n \"container_name\": \"flagr\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"18000:18000/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\"\n ],\n \"environment\": {\n \"HOST\": \"0.0.0.0\",\n \"FLAGR_DB_DBDRIVER\": \"sqlite3\",\n \"FLAGR_DB_DBCONNECTIONSTR\": \"/data/flagr.sqlite\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "flagr",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "flagr",
"service_count": 1,
"services": [
{
"name": "flagr",
"image": "ghcr.io/openflagr/flagr:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/openflagr/flagr:latest",
"container_name": "flagr",
"restart": "unless-stopped",
"ports": [
"18000:18000/tcp"
],
"volumes": [
"./data:/data"
],
"environment": {
"HOST": "0.0.0.0",
"FLAGR_DB_DBDRIVER": "sqlite3",
"FLAGR_DB_DBCONNECTIONSTR": "/data/flagr.sqlite"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "flagr-volume-0",
"service": "flagr",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"flagr"
],
"stop_order": [
"flagr"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Flagr",
"scheme": "http",
"port": 18000,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 18000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+307
View File
@@ -0,0 +1,307 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-guestroll",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Guestroll"
},
"description": {
"en_US": "Self-hosted event photo gallery for guests, with moderation, QR-code sharing, and local SQLite storage."
},
"category": "sharing",
"category_label": "Files & Sharing",
"author": "achedon12",
"developer": "achedon12",
"icon": "https://raw.githubusercontent.com/achedon12/guestroll/develop/src/app/icon.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3000,
"path": "/admin"
},
"website": "https://github.com/achedon12/guestroll",
"documentation": "https://github.com/achedon12/guestroll#readme",
"repository": "https://github.com/achedon12/guestroll",
"tips": [
"Sign in as admin at /admin. ADMIN_PASSWORD is requested at installation; PUBLIC_URL is initially set to the local LXC address.",
"Mobile camera access requires HTTPS; configure a reverse proxy before using that feature at an event."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "achedon12",
"repository": "https://github.com/achedon12/guestroll",
"default_branch": "develop",
"revision": "3fc407dd872a3e649b7ba505e2e6d80cefb9b82a",
"image_repository_url": "https://github.com/orgs/achedon12/packages/container/package/guestroll",
"readme_pushed_at": "",
"compose_sha256": "a02f45b0aacaf2a5e35a4554f3e35b547dc38011e693390d15f82f6c991c84e5",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/achedon12/guestroll/develop/README.md"
},
"container_contract": {
"service_name": "guestroll",
"container_name": "guestroll",
"image": {
"reference": "ghcr.io/achedon12/guestroll:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/achedon12/guestroll",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "ADMIN_PASSWORD",
"example": null,
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "PUBLIC_URL",
"example": "http://@CONTAINER_ADDRESS@:3000",
"required": true,
"sensitive": false,
"container_address": "http://@CONTAINER_ADDRESS@:3000",
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 3000,
"published_example": 3000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"guestroll\",\n \"services\": {\n \"guestroll\": {\n \"image\": \"ghcr.io/achedon12/guestroll:latest\",\n \"container_name\": \"guestroll\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3000:3000/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\"\n ],\n \"environment\": {\n \"ADMIN_PASSWORD\": null,\n \"PUBLIC_URL\": \"http://@CONTAINER_ADDRESS@:3000\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "guestroll",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "guestroll",
"service_count": 1,
"services": [
{
"name": "guestroll",
"image": "ghcr.io/achedon12/guestroll:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/achedon12/guestroll:latest",
"container_name": "guestroll",
"restart": "unless-stopped",
"ports": [
"3000:3000/tcp"
],
"volumes": [
"./data:/data"
],
"environment": {
"ADMIN_PASSWORD": null,
"PUBLIC_URL": "http://@CONTAINER_ADDRESS@:3000"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "guestroll-volume-0",
"service": "guestroll",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"guestroll"
],
"stop_order": [
"guestroll"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Guestroll",
"scheme": "http",
"port": 3000,
"path": "/admin",
"source": "upstream-documentation"
}
],
"credentials": [
{
"label": "Guestroll administrator",
"type": "configured-or-installer-generated",
"username": "admin",
"password": null,
"password_environment": "ADMIN_PASSWORD",
"change_required": false,
"source": "upstream-documentation"
}
]
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+352
View File
@@ -0,0 +1,352 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-ihatemoney",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "I Hate Money"
},
"description": {
"en_US": "Self-hosted shared-expense and group-budget manager for tracking purchases and settling who owes whom."
},
"category": "finance",
"category_label": "Finance & Budgeting",
"author": "spiral-project",
"developer": "spiral-project",
"icon": "https://raw.githubusercontent.com/spiral-project/ihatemoney/main/ihatemoney/static/favicon.ico",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 8000,
"path": "/"
},
"website": "https://ihatemoney.org/",
"documentation": "https://ihatemoney.readthedocs.io/en/latest/installation.html#with-docker",
"repository": "https://github.com/spiral-project/ihatemoney",
"tips": [
"The profile keeps the upstream admin dashboard disabled and public project creation enabled for the initial setup. Do not expose it publicly without reviewing those access settings.",
"The project is currently maintained with a focus on stability and maintenance rather than major new features."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "spiral-project",
"repository": "https://github.com/spiral-project/ihatemoney",
"default_branch": "main",
"revision": "e66a7672e8e5c41549bf53c4a824c72c43ab9079",
"image_repository_url": "https://hub.docker.com/r/ihatemoney/ihatemoney",
"readme_pushed_at": "",
"compose_sha256": "8a8be316e105a542379edca87eafadd0b9f42d980067b39ddcdab4fa71fce9c3",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/spiral-project/ihatemoney/main/README.md"
},
"container_contract": {
"service_name": "ihatemoney",
"container_name": "ihatemoney",
"image": {
"reference": "docker.io/ihatemoney/ihatemoney:latest",
"registry": "docker.io",
"repository": "docker.io/ihatemoney/ihatemoney",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "SECRET_KEY",
"example": "${GENERATED_SECRET_KEY}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "SQLALCHEMY_DATABASE_URI",
"example": "sqlite:////database/ihatemoney.db",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "SESSION_COOKIE_SECURE",
"example": "False",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "ACTIVATE_DEMO_PROJECT",
"example": "True",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "ACTIVATE_ADMIN_DASHBOARD",
"example": "False",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "ALLOW_PUBLIC_PROJECT_CREATION",
"example": "True",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "PORT",
"example": "8000",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/database",
"compose_source_example": "./database",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 8000,
"published_example": 8000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"ihatemoney\",\n \"services\": {\n \"ihatemoney\": {\n \"image\": \"docker.io/ihatemoney/ihatemoney:latest\",\n \"container_name\": \"ihatemoney\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"8000:8000/tcp\"\n ],\n \"volumes\": [\n \"./database:/database\"\n ],\n \"environment\": {\n \"SECRET_KEY\": \"${GENERATED_SECRET_KEY}\",\n \"SQLALCHEMY_DATABASE_URI\": \"sqlite:////database/ihatemoney.db\",\n \"SESSION_COOKIE_SECURE\": \"False\",\n \"ACTIVATE_DEMO_PROJECT\": \"True\",\n \"ACTIVATE_ADMIN_DASHBOARD\": \"False\",\n \"ALLOW_PUBLIC_PROJECT_CREATION\": \"True\",\n \"PORT\": \"8000\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "ihatemoney",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "ihatemoney",
"service_count": 1,
"services": [
{
"name": "ihatemoney",
"image": "docker.io/ihatemoney/ihatemoney:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "docker.io/ihatemoney/ihatemoney:latest",
"container_name": "ihatemoney",
"restart": "unless-stopped",
"ports": [
"8000:8000/tcp"
],
"volumes": [
"./database:/database"
],
"environment": {
"SECRET_KEY": "${GENERATED_SECRET_KEY}",
"SQLALCHEMY_DATABASE_URI": "sqlite:////database/ihatemoney.db",
"SESSION_COOKIE_SECURE": "False",
"ACTIVATE_DEMO_PROJECT": "True",
"ACTIVATE_ADMIN_DASHBOARD": "False",
"ALLOW_PUBLIC_PROJECT_CREATION": "True",
"PORT": "8000"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "ihatemoney-volume-0",
"service": "ihatemoney",
"container_path": "/database",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"ihatemoney"
],
"stop_order": [
"ihatemoney"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-ihatemoney-secret-key",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "ihatemoney",
"environment_variable": "SECRET_KEY"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "I Hate Money",
"scheme": "http",
"port": 8000,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"SECRET_KEY": {
"strategy": "token-hex",
"bytes": 32
}
},
"volume_preparations": [
{
"container_path": "/database",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 8000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+296
View File
@@ -0,0 +1,296 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-imagesilo",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "ImageSilo"
},
"description": {
"en_US": "Self-hosted image-hosting service with authenticated uploads, image processing, public links, and local storage."
},
"category": "sharing",
"category_label": "Files & Sharing",
"author": "Willxup",
"developer": "Willxup",
"icon": "https://raw.githubusercontent.com/Willxup/imagesilo/main/assets/brand/imagesilo-icon-512.png",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 8080,
"path": "/admin/setup"
},
"website": "https://github.com/Willxup/imagesilo",
"documentation": "https://github.com/Willxup/imagesilo/blob/main/README.md",
"repository": "https://github.com/Willxup/imagesilo",
"tips": [
"On first start, retrieve the one-time bootstrap token from the container log and enter it at /admin/setup to create the administrator.",
"Set IMAGESILO_COOKIE_SECURE=true when accessing the service through HTTPS."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "Willxup",
"repository": "https://github.com/Willxup/imagesilo",
"default_branch": "main",
"revision": "aecbdc402011f8a4bb8d0a4469786ab48db7d88a",
"image_repository_url": "https://github.com/orgs/Willxup/packages/container/package/imagesilo",
"readme_pushed_at": "",
"compose_sha256": "b1d73df6458fe0fb2c891f4f32eca925836c132ebbbccee9f95962ad0e4b7121",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/Willxup/imagesilo/main/README.md"
},
"container_contract": {
"service_name": "imagesilo",
"container_name": "imagesilo",
"image": {
"reference": "ghcr.io/willxup/imagesilo:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/willxup/imagesilo",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "IMAGESILO_COOKIE_SECURE",
"example": "false",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "IMAGESILO_PROCESSING_CONCURRENCY",
"example": "1",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 8080,
"published_example": 8080,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"imagesilo\",\n \"services\": {\n \"imagesilo\": {\n \"image\": \"ghcr.io/willxup/imagesilo:latest\",\n \"container_name\": \"imagesilo\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"8080:8080/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\"\n ],\n \"environment\": {\n \"IMAGESILO_COOKIE_SECURE\": \"false\",\n \"IMAGESILO_PROCESSING_CONCURRENCY\": \"1\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "imagesilo",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "imagesilo",
"service_count": 1,
"services": [
{
"name": "imagesilo",
"image": "ghcr.io/willxup/imagesilo:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/willxup/imagesilo:latest",
"container_name": "imagesilo",
"restart": "unless-stopped",
"ports": [
"8080:8080/tcp"
],
"volumes": [
"./data:/data"
],
"environment": {
"IMAGESILO_COOKIE_SECURE": "false",
"IMAGESILO_PROCESSING_CONCURRENCY": "1"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "imagesilo-volume-0",
"service": "imagesilo",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"imagesilo"
],
"stop_order": [
"imagesilo"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "ImageSilo",
"scheme": "http",
"port": 8080,
"path": "/admin/setup",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 8080,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+368
View File
@@ -0,0 +1,368 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-instatic",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Instatic"
},
"description": {
"en_US": "Single-server website CMS and visual editor with SQLite-backed content, media uploads, forms, and publishing."
},
"category": "web",
"category_label": "Webservers & Proxies",
"author": "CoreBunch",
"developer": "CoreBunch",
"icon": "https://raw.githubusercontent.com/CoreBunch/Instatic/main/public/favicon.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64"
],
"launch": {
"scheme": "http",
"port": 3001,
"path": "/admin"
},
"website": "https://github.com/CoreBunch/Instatic",
"documentation": "https://github.com/CoreBunch/Instatic/blob/main/docs/deployment/vps.md",
"repository": "https://github.com/CoreBunch/Instatic",
"tips": [
"The initial visit at /admin creates the site and administrator. INSTATIC_SECRET_KEY is generated and persisted with the recipe; back up the volume."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "CoreBunch",
"repository": "https://github.com/CoreBunch/Instatic",
"default_branch": "main",
"revision": "1a7ab33ff1614e80b2f618b284dd55b0e2b9d9ae",
"image_repository_url": "https://github.com/orgs/CoreBunch/packages/container/package/instatic",
"readme_pushed_at": "",
"compose_sha256": "b8b34bcb67ace12f558f3a93b2363bfd525992ea66c9dd89b9cb53258087a16f",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/CoreBunch/Instatic/main/README.md"
},
"container_contract": {
"service_name": "instatic",
"container_name": "instatic",
"image": {
"reference": "ghcr.io/corebunch/instatic:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/corebunch/instatic",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "PORT",
"example": "3001",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "DATABASE_URL",
"example": "sqlite:/app/data/cms.db",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "UPLOADS_DIR",
"example": "/app/uploads",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "STATIC_DIR",
"example": "/app/dist",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "INSTATIC_SECRET_KEY",
"example": "${GENERATED_INSTATIC_SECRET_KEY}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/app/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
},
{
"id": "volume-1",
"container_path": "/app/uploads",
"compose_source_example": "./uploads",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 3001,
"published_example": 3001,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"instatic\",\n \"services\": {\n \"instatic\": {\n \"image\": \"ghcr.io/corebunch/instatic:latest\",\n \"container_name\": \"instatic\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3001:3001/tcp\"\n ],\n \"volumes\": [\n \"./data:/app/data\",\n \"./uploads:/app/uploads\"\n ],\n \"environment\": {\n \"PORT\": \"3001\",\n \"DATABASE_URL\": \"sqlite:/app/data/cms.db\",\n \"UPLOADS_DIR\": \"/app/uploads\",\n \"STATIC_DIR\": \"/app/dist\",\n \"INSTATIC_SECRET_KEY\": \"${GENERATED_INSTATIC_SECRET_KEY}\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "instatic",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "instatic",
"service_count": 1,
"services": [
{
"name": "instatic",
"image": "ghcr.io/corebunch/instatic:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/corebunch/instatic:latest",
"container_name": "instatic",
"restart": "unless-stopped",
"ports": [
"3001:3001/tcp"
],
"volumes": [
"./data:/app/data",
"./uploads:/app/uploads"
],
"environment": {
"PORT": "3001",
"DATABASE_URL": "sqlite:/app/data/cms.db",
"UPLOADS_DIR": "/app/uploads",
"STATIC_DIR": "/app/dist",
"INSTATIC_SECRET_KEY": "${GENERATED_INSTATIC_SECRET_KEY}"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "instatic-volume-0",
"service": "instatic",
"container_path": "/app/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
},
{
"id": "instatic-volume-1",
"service": "instatic",
"container_path": "/app/uploads",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"instatic"
],
"stop_order": [
"instatic"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-instatic-instatic-secret-key",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "instatic",
"environment_variable": "INSTATIC_SECRET_KEY"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "Instatic",
"scheme": "http",
"port": 3001,
"path": "/admin",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"INSTATIC_SECRET_KEY": {
"strategy": "token-hex",
"bytes": 24
}
},
"volume_preparations": [
{
"container_path": "/app/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/app/uploads",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3001,
"path": "/health",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+387
View File
@@ -0,0 +1,387 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-invoiceshelf",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "InvoiceShelf"
},
"description": {
"en_US": "Self-hosted invoicing and estimates with customer portals, recurring billing, payments, and expense tracking."
},
"category": "business",
"category_label": "Business & ERP",
"author": "InvoiceShelf",
"developer": "InvoiceShelf",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/invoiceshelf.webp",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 8080,
"path": "/"
},
"website": "https://github.com/InvoiceShelf/InvoiceShelf",
"documentation": "https://github.com/InvoiceShelf/docker#readme",
"repository": "https://github.com/InvoiceShelf/InvoiceShelf",
"tips": [
"The initial visit opens the setup wizard. The SQLite database is stored under /var/www/html/storage.",
"The upstream Docker image includes the web server and scheduler in one image; there is no database or scheduler container to add."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "InvoiceShelf",
"repository": "https://github.com/InvoiceShelf/docker",
"default_branch": "master",
"revision": "479f2396569959064fc6ca7a2bb36af30920d199",
"image_repository_url": "https://hub.docker.com/r/invoiceshelf/invoiceshelf",
"readme_pushed_at": "",
"compose_sha256": "5c855909373c8b9a8f3c4997fd24e06d8f11f303a2f318ddf084b6185efc43b4",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/InvoiceShelf/docker/master/README.md"
},
"container_contract": {
"service_name": "invoiceshelf",
"container_name": "invoiceshelf",
"image": {
"reference": "docker.io/invoiceshelf/invoiceshelf:latest",
"registry": "docker.io",
"repository": "docker.io/invoiceshelf/invoiceshelf",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "APP_NAME",
"example": "InvoiceShelf",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "APP_ENV",
"example": "production",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "APP_DEBUG",
"example": "false",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "APP_URL",
"example": "http://@CONTAINER_ADDRESS@:8080",
"required": true,
"sensitive": false,
"container_address": "http://@CONTAINER_ADDRESS@:8080",
"source": "upstream-documentation"
},
{
"name": "DB_CONNECTION",
"example": "sqlite",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "DB_DATABASE",
"example": "/var/www/html/storage/app/database.sqlite",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "CACHE_STORE",
"example": "file",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "SESSION_DRIVER",
"example": "file",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "SESSION_LIFETIME",
"example": "240",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/var/www/html/storage",
"compose_source_example": "./invoiceshelf/storage",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
},
{
"id": "volume-1",
"container_path": "/var/www/html/Modules",
"compose_source_example": "./invoiceshelf/modules",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 8080,
"published_example": 8090,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"invoiceshelf\",\n \"services\": {\n \"invoiceshelf\": {\n \"image\": \"docker.io/invoiceshelf/invoiceshelf:latest\",\n \"container_name\": \"invoiceshelf\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"8090:8080/tcp\"\n ],\n \"volumes\": [\n \"./invoiceshelf/storage:/var/www/html/storage\",\n \"./invoiceshelf/modules:/var/www/html/Modules\"\n ],\n \"environment\": {\n \"APP_NAME\": \"InvoiceShelf\",\n \"APP_ENV\": \"production\",\n \"APP_DEBUG\": \"false\",\n \"APP_URL\": \"http://@CONTAINER_ADDRESS@:8080\",\n \"DB_CONNECTION\": \"sqlite\",\n \"DB_DATABASE\": \"/var/www/html/storage/app/database.sqlite\",\n \"CACHE_STORE\": \"file\",\n \"SESSION_DRIVER\": \"file\",\n \"SESSION_LIFETIME\": \"240\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "invoiceshelf",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "invoiceshelf",
"service_count": 1,
"services": [
{
"name": "invoiceshelf",
"image": "docker.io/invoiceshelf/invoiceshelf:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "docker.io/invoiceshelf/invoiceshelf:latest",
"container_name": "invoiceshelf",
"restart": "unless-stopped",
"ports": [
"8090:8080/tcp"
],
"volumes": [
"./invoiceshelf/storage:/var/www/html/storage",
"./invoiceshelf/modules:/var/www/html/Modules"
],
"environment": {
"APP_NAME": "InvoiceShelf",
"APP_ENV": "production",
"APP_DEBUG": "false",
"APP_URL": "http://@CONTAINER_ADDRESS@:8080",
"DB_CONNECTION": "sqlite",
"DB_DATABASE": "/var/www/html/storage/app/database.sqlite",
"CACHE_STORE": "file",
"SESSION_DRIVER": "file",
"SESSION_LIFETIME": "240"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "invoiceshelf-volume-0",
"service": "invoiceshelf",
"container_path": "/var/www/html/storage",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
},
{
"id": "invoiceshelf-volume-1",
"service": "invoiceshelf",
"container_path": "/var/www/html/Modules",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"invoiceshelf"
],
"stop_order": [
"invoiceshelf"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "InvoiceShelf",
"scheme": "http",
"port": 8080,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/var/www/html/storage",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/var/www/html/Modules",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 8080,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+311
View File
@@ -0,0 +1,311 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-kroma",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "KROMA"
},
"description": {
"en_US": "Personal media server for browsing and playing a local video library, with direct play and optional modules."
},
"category": "media",
"category_label": "Media & Streaming",
"author": "kromatv",
"developer": "kromatv",
"icon": "https://raw.githubusercontent.com/kromatv/kroma/main/.github/assets/logo.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 4040,
"path": "/"
},
"website": "https://github.com/kromatv/kroma",
"documentation": "https://github.com/kromatv/kroma#readme",
"repository": "https://github.com/kromatv/kroma",
"tips": [
"Without KROMA_MEDIA_DIRS configured, the server seeds demo titles. To browse your own library, add a host media directory at /media and configure KROMA_MEDIA_DIRS=/media.",
"KROMA modules can start additional processes when enabled; this profile installs only the base server image."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "kromatv",
"repository": "https://github.com/kromatv/kroma",
"default_branch": "main",
"revision": "616024831f332d3c24a6ebc6afc2dd5a1148b63f",
"image_repository_url": "https://github.com/orgs/kromatv/packages/container/package/kroma",
"readme_pushed_at": "",
"compose_sha256": "0eef24d6d6c187a1188ba00183d7a8f4dc7244e1ca13dea3dbf5fc57e9c6c3d6",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/kromatv/kroma/main/README.md"
},
"container_contract": {
"service_name": "kroma",
"container_name": "kroma",
"image": {
"reference": "ghcr.io/kromatv/kroma:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/kromatv/kroma",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "KROMA_MEDIA_DIRS",
"example": "/media",
"required": false,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
},
{
"id": "volume-1",
"container_path": "/media",
"compose_source_example": "/path/to/video-library",
"read_only": true,
"required": false,
"installation_choice": [
"host-bind",
"skip"
],
"default": "skip",
"managed_volume": {
"backup": false,
"default_size_gb": 1
}
}
],
"ports": [
{
"container_port": 4040,
"published_example": 4040,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"kroma\",\n \"services\": {\n \"kroma\": {\n \"image\": \"ghcr.io/kromatv/kroma:latest\",\n \"container_name\": \"kroma\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"4040:4040/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\",\n \"/path/to/video-library:/media:ro\"\n ],\n \"environment\": {\n \"KROMA_MEDIA_DIRS\": \"/media\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "kroma",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "kroma",
"service_count": 1,
"services": [
{
"name": "kroma",
"image": "ghcr.io/kromatv/kroma:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/kromatv/kroma:latest",
"container_name": "kroma",
"restart": "unless-stopped",
"ports": [
"4040:4040/tcp"
],
"volumes": [
"./data:/data",
"/path/to/video-library:/media:ro"
],
"environment": {
"KROMA_MEDIA_DIRS": "/media"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "kroma-volume-0",
"service": "kroma",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"kroma"
],
"stop_order": [
"kroma"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "KROMA",
"scheme": "http",
"port": 4040,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/media",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 4040,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+303
View File
@@ -0,0 +1,303 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-libre-closet",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Libre Closet"
},
"description": {
"en_US": "Self-hosted wardrobe catalog for organizing clothing, outfits, and personal style with SQLite and local file storage."
},
"category": "productivity",
"category_label": "Productivity & Workflows",
"author": "lazztech",
"developer": "lazztech",
"icon": "https://raw.githubusercontent.com/lazztech/Libre-Closet/main/public/favicon.ico",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3000,
"path": "/"
},
"website": "https://github.com/lazztech/Libre-Closet",
"documentation": "https://github.com/lazztech/Libre-Closet#readme",
"repository": "https://github.com/lazztech/Libre-Closet",
"tips": [
"Upstream defaults to AUTH_ENABLED=false. Keep this service on a trusted network or enable authentication and configure accounts before exposing it beyond your LAN."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "lazztech",
"repository": "https://github.com/lazztech/Libre-Closet",
"default_branch": "main",
"revision": "08f66dd9fe071e3b62e529d0ca4050169d31532d",
"image_repository_url": "https://github.com/orgs/lazztech/packages/container/package/libre-closet",
"readme_pushed_at": "",
"compose_sha256": "55286f8ae33f8a4e91d9224ff1804e99b41fd9d5045409cbef3641be211c34c5",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/lazztech/Libre-Closet/main/README.md"
},
"container_contract": {
"service_name": "libre-closet",
"container_name": "libre-closet",
"image": {
"reference": "ghcr.io/lazztech/libre-closet:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/lazztech/libre-closet",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "AUTH_ENABLED",
"example": "false",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "PWA_ENABLED",
"example": "true",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "DATA_PATH",
"example": "/app/data",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/app/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 3000,
"published_example": 3000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"libre-closet\",\n \"services\": {\n \"libre-closet\": {\n \"image\": \"ghcr.io/lazztech/libre-closet:latest\",\n \"container_name\": \"libre-closet\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3000:3000/tcp\"\n ],\n \"volumes\": [\n \"./data:/app/data\"\n ],\n \"environment\": {\n \"AUTH_ENABLED\": \"false\",\n \"PWA_ENABLED\": \"true\",\n \"DATA_PATH\": \"/app/data\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "libre-closet",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "libre-closet",
"service_count": 1,
"services": [
{
"name": "libre-closet",
"image": "ghcr.io/lazztech/libre-closet:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/lazztech/libre-closet:latest",
"container_name": "libre-closet",
"restart": "unless-stopped",
"ports": [
"3000:3000/tcp"
],
"volumes": [
"./data:/app/data"
],
"environment": {
"AUTH_ENABLED": "false",
"PWA_ENABLED": "true",
"DATA_PATH": "/app/data"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "libre-closet-volume-0",
"service": "libre-closet",
"container_path": "/app/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"libre-closet"
],
"stop_order": [
"libre-closet"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Libre Closet",
"scheme": "http",
"port": 3000,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/app/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+353
View File
@@ -0,0 +1,353 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-lifttrace",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "LiftTrace"
},
"description": {
"en_US": "Self-hosted strength-training tracker with workout logs, programs, progress photos, and a mobile PWA."
},
"category": "productivity",
"category_label": "Productivity & Workflows",
"author": "TraceApps",
"developer": "TraceApps",
"icon": "https://raw.githubusercontent.com/traceapps/lifttrace/main/public/icons/icon-512.png",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3002,
"path": "/"
},
"website": "https://github.com/traceapps/lifttrace",
"documentation": "https://github.com/traceapps/lifttrace#readme",
"repository": "https://github.com/traceapps/lifttrace",
"tips": [
"The first-run wizard creates the initial administrator account."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "TraceApps",
"repository": "https://github.com/traceapps/lifttrace",
"default_branch": "main",
"revision": "bfde1fef9c8c38508197cd679ad646f3385ec5d8",
"image_repository_url": "https://github.com/orgs/traceapps/packages/container/package/lifttrace",
"readme_pushed_at": "",
"compose_sha256": "5e271146d220f3fda16a48b9e996f5a3df111461e36b4542fa91f245876af101",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/traceapps/lifttrace/main/README.md"
},
"container_contract": {
"service_name": "lifttrace",
"container_name": "lifttrace",
"image": {
"reference": "ghcr.io/traceapps/lifttrace:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/traceapps/lifttrace",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "JWT_SECRET",
"example": "${GENERATED_JWT_SECRET}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "DB_PATH",
"example": "/data/db/lifttrace.db",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "UPLOADS_PATH",
"example": "/data/uploads",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data/db",
"compose_source_example": "./data/db",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
},
{
"id": "volume-1",
"container_path": "/data/uploads",
"compose_source_example": "./data/uploads",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 3002,
"published_example": 3002,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"lifttrace\",\n \"services\": {\n \"lifttrace\": {\n \"image\": \"ghcr.io/traceapps/lifttrace:latest\",\n \"container_name\": \"lifttrace\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3002:3002/tcp\"\n ],\n \"volumes\": [\n \"./data/db:/data/db\",\n \"./data/uploads:/data/uploads\"\n ],\n \"environment\": {\n \"JWT_SECRET\": \"${GENERATED_JWT_SECRET}\",\n \"DB_PATH\": \"/data/db/lifttrace.db\",\n \"UPLOADS_PATH\": \"/data/uploads\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "lifttrace",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "lifttrace",
"service_count": 1,
"services": [
{
"name": "lifttrace",
"image": "ghcr.io/traceapps/lifttrace:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/traceapps/lifttrace:latest",
"container_name": "lifttrace",
"restart": "unless-stopped",
"ports": [
"3002:3002/tcp"
],
"volumes": [
"./data/db:/data/db",
"./data/uploads:/data/uploads"
],
"environment": {
"JWT_SECRET": "${GENERATED_JWT_SECRET}",
"DB_PATH": "/data/db/lifttrace.db",
"UPLOADS_PATH": "/data/uploads"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "lifttrace-volume-0",
"service": "lifttrace",
"container_path": "/data/db",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
},
{
"id": "lifttrace-volume-1",
"service": "lifttrace",
"container_path": "/data/uploads",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"lifttrace"
],
"stop_order": [
"lifttrace"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-lifttrace-jwt-secret",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "lifttrace",
"environment_variable": "JWT_SECRET"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "LiftTrace",
"scheme": "http",
"port": 3002,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"JWT_SECRET": {
"strategy": "token-hex",
"bytes": 48
}
},
"volume_preparations": [
{
"container_path": "/data/db",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/data/uploads",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3002,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+288
View File
@@ -0,0 +1,288 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-maintainerr",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Maintainerr"
},
"description": {
"en_US": "Self-hosted media-library cleanup and maintenance dashboard for Plex, Jellyfin, or Emby."
},
"category": "media",
"category_label": "Media & Streaming",
"author": "Maintainerr",
"developer": "Maintainerr",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/maintainerr.webp",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 6246,
"path": "/"
},
"website": "https://github.com/Maintainerr/Maintainerr",
"documentation": "https://github.com/Maintainerr/Maintainerr#readme",
"repository": "https://github.com/Maintainerr/Maintainerr",
"tips": [
"To manage a library, configure an external Plex, Jellyfin, or Emby server in the UI. CPU feature x86-64-v2 is required for overlays and collection-poster image processing; the UI can still start without it."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "Maintainerr",
"repository": "https://github.com/Maintainerr/Maintainerr",
"default_branch": "development",
"revision": "518078a712c8223b32e4d5817c8a90851c6c0743",
"image_repository_url": "https://github.com/orgs/Maintainerr/packages/container/package/maintainerr",
"readme_pushed_at": "",
"compose_sha256": "70d646e01856512988acdb119804c3ddb6c516d809c4b44c33806cefe42753e9",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/Maintainerr/Maintainerr/development/README.md"
},
"container_contract": {
"service_name": "maintainerr",
"container_name": "maintainerr",
"image": {
"reference": "ghcr.io/maintainerr/maintainerr:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/maintainerr/maintainerr",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "TZ",
"example": "Europe/Madrid",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/opt/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 6246,
"published_example": 6246,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"maintainerr\",\n \"services\": {\n \"maintainerr\": {\n \"image\": \"ghcr.io/maintainerr/maintainerr:latest\",\n \"container_name\": \"maintainerr\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"6246:6246/tcp\"\n ],\n \"volumes\": [\n \"./data:/opt/data\"\n ],\n \"environment\": {\n \"TZ\": \"Europe/Madrid\"\n },\n \"user\": \"1000:1000\"\n }\n }\n}"
},
"compose_stack": {
"project_name": "maintainerr",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "maintainerr",
"service_count": 1,
"services": [
{
"name": "maintainerr",
"image": "ghcr.io/maintainerr/maintainerr:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/maintainerr/maintainerr:latest",
"container_name": "maintainerr",
"restart": "unless-stopped",
"ports": [
"6246:6246/tcp"
],
"volumes": [
"./data:/opt/data"
],
"environment": {
"TZ": "Europe/Madrid"
},
"user": "1000:1000"
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "maintainerr-volume-0",
"service": "maintainerr",
"container_path": "/opt/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"maintainerr"
],
"stop_order": [
"maintainerr"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Maintainerr",
"scheme": "http",
"port": 6246,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/opt/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 6246,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+303
View File
@@ -0,0 +1,303 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-notara",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Notara"
},
"description": {
"en_US": "Self-hosted collaborative notes and knowledge base with pages, inline databases, and SQLite storage."
},
"category": "documents",
"category_label": "Documents & Notes",
"author": "DnzzL",
"developer": "DnzzL",
"icon": "https://raw.githubusercontent.com/DnzzL/notara/main/packages/app/public/icon-512.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3000,
"path": "/"
},
"website": "https://github.com/DnzzL/notara",
"documentation": "https://github.com/DnzzL/notara#readme",
"repository": "https://github.com/DnzzL/notara",
"tips": [
"Create the initial account through the web interface. SMTP is optional and is needed only for invitations and password resets."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "DnzzL",
"repository": "https://github.com/DnzzL/notara",
"default_branch": "main",
"revision": "46dddd593651fe452ab0cc0951504d76d468e862",
"image_repository_url": "https://github.com/orgs/dnzzl/packages/container/package/notara",
"readme_pushed_at": "",
"compose_sha256": "7b74dd1c9a15ae341a165b646053c1fccccb948adc5b773134ccf04bd80ecb1a",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/DnzzL/notara/main/README.md"
},
"container_contract": {
"service_name": "notara",
"container_name": "notara",
"image": {
"reference": "ghcr.io/dnzzl/notara:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/dnzzl/notara",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "BETTER_AUTH_SECRET",
"example": "${GENERATED_BETTER_AUTH_SECRET}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 3000,
"published_example": 3000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"notara\",\n \"services\": {\n \"notara\": {\n \"image\": \"ghcr.io/dnzzl/notara:latest\",\n \"container_name\": \"notara\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3000:3000/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\"\n ],\n \"environment\": {\n \"BETTER_AUTH_SECRET\": \"${GENERATED_BETTER_AUTH_SECRET}\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "notara",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "notara",
"service_count": 1,
"services": [
{
"name": "notara",
"image": "ghcr.io/dnzzl/notara:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/dnzzl/notara:latest",
"container_name": "notara",
"restart": "unless-stopped",
"ports": [
"3000:3000/tcp"
],
"volumes": [
"./data:/data"
],
"environment": {
"BETTER_AUTH_SECRET": "${GENERATED_BETTER_AUTH_SECRET}"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "notara-volume-0",
"service": "notara",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"notara"
],
"stop_order": [
"notara"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-notara-better-auth-secret",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "notara",
"environment_variable": "BETTER_AUTH_SECRET"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "Notara",
"scheme": "http",
"port": 3000,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"BETTER_AUTH_SECRET": {
"strategy": "token-hex",
"bytes": 32
}
},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+353
View File
@@ -0,0 +1,353 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-notetrace",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "NoteTrace"
},
"description": {
"en_US": "Self-hosted notes and notebooks with attachments, backups, and optional multi-user accounts."
},
"category": "documents",
"category_label": "Documents & Notes",
"author": "TraceApps",
"developer": "TraceApps",
"icon": "https://raw.githubusercontent.com/traceapps/notetrace/main/public/icons/icon-512.png",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3004,
"path": "/"
},
"website": "https://github.com/traceapps/notetrace",
"documentation": "https://github.com/traceapps/notetrace#readme",
"repository": "https://github.com/traceapps/notetrace",
"tips": [
"The first-run wizard creates the initial administrator account."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "TraceApps",
"repository": "https://github.com/traceapps/notetrace",
"default_branch": "main",
"revision": "0a3bf0b33531b940a069d98e1928f29d48894d6e",
"image_repository_url": "https://github.com/orgs/traceapps/packages/container/package/notetrace",
"readme_pushed_at": "",
"compose_sha256": "69d694f8c1e557f51dacd5a2427acc3d1ec47ce0207b70e518b18ca1ca7e6137",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/traceapps/notetrace/main/README.md"
},
"container_contract": {
"service_name": "notetrace",
"container_name": "notetrace",
"image": {
"reference": "ghcr.io/traceapps/notetrace:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/traceapps/notetrace",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "JWT_SECRET",
"example": "${GENERATED_JWT_SECRET}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "DB_PATH",
"example": "/data/db/notetrace.db",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "UPLOADS_PATH",
"example": "/data/uploads",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data/db",
"compose_source_example": "./data/db",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
},
{
"id": "volume-1",
"container_path": "/data/uploads",
"compose_source_example": "./data/uploads",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 3004,
"published_example": 3004,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"notetrace\",\n \"services\": {\n \"notetrace\": {\n \"image\": \"ghcr.io/traceapps/notetrace:latest\",\n \"container_name\": \"notetrace\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3004:3004/tcp\"\n ],\n \"volumes\": [\n \"./data/db:/data/db\",\n \"./data/uploads:/data/uploads\"\n ],\n \"environment\": {\n \"JWT_SECRET\": \"${GENERATED_JWT_SECRET}\",\n \"DB_PATH\": \"/data/db/notetrace.db\",\n \"UPLOADS_PATH\": \"/data/uploads\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "notetrace",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "notetrace",
"service_count": 1,
"services": [
{
"name": "notetrace",
"image": "ghcr.io/traceapps/notetrace:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/traceapps/notetrace:latest",
"container_name": "notetrace",
"restart": "unless-stopped",
"ports": [
"3004:3004/tcp"
],
"volumes": [
"./data/db:/data/db",
"./data/uploads:/data/uploads"
],
"environment": {
"JWT_SECRET": "${GENERATED_JWT_SECRET}",
"DB_PATH": "/data/db/notetrace.db",
"UPLOADS_PATH": "/data/uploads"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "notetrace-volume-0",
"service": "notetrace",
"container_path": "/data/db",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
},
{
"id": "notetrace-volume-1",
"service": "notetrace",
"container_path": "/data/uploads",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"notetrace"
],
"stop_order": [
"notetrace"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-notetrace-jwt-secret",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "notetrace",
"environment_variable": "JWT_SECRET"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "NoteTrace",
"scheme": "http",
"port": 3004,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"JWT_SECRET": {
"strategy": "token-hex",
"bytes": 48
}
},
"volume_preparations": [
{
"container_path": "/data/db",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/data/uploads",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3004,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+353
View File
@@ -0,0 +1,353 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-nutritrace",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "NutriTrace"
},
"description": {
"en_US": "Self-hosted nutrition and meal tracker with food logging, recipes, and nutrition data."
},
"category": "productivity",
"category_label": "Productivity & Workflows",
"author": "TraceApps",
"developer": "TraceApps",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/nutritrace.webp",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3001,
"path": "/"
},
"website": "https://github.com/traceapps/nutritrace",
"documentation": "https://github.com/traceapps/nutritrace#readme",
"repository": "https://github.com/traceapps/nutritrace",
"tips": [
"The first-run wizard can enable user management and create an administrator; single-user mode is also available."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "TraceApps",
"repository": "https://github.com/traceapps/nutritrace",
"default_branch": "main",
"revision": "888c9664cd3a0222a9449cff506264097a2ae9b2",
"image_repository_url": "https://github.com/orgs/traceapps/packages/container/package/nutritrace",
"readme_pushed_at": "",
"compose_sha256": "2a9bbfd67502e5fd7e7d09393abd510b2ac70f9d841cd4cca44b5364e3348d90",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/traceapps/nutritrace/main/README.md"
},
"container_contract": {
"service_name": "nutritrace",
"container_name": "nutritrace",
"image": {
"reference": "ghcr.io/traceapps/nutritrace:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/traceapps/nutritrace",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "JWT_SECRET",
"example": "${GENERATED_JWT_SECRET}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "DB_PATH",
"example": "/data/db/nutritrace.db",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
},
{
"name": "UPLOADS_PATH",
"example": "/data/uploads",
"required": true,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data/db",
"compose_source_example": "./data/db",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
},
{
"id": "volume-1",
"container_path": "/data/uploads",
"compose_source_example": "./data/uploads",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 3001,
"published_example": 3001,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"nutritrace\",\n \"services\": {\n \"nutritrace\": {\n \"image\": \"ghcr.io/traceapps/nutritrace:latest\",\n \"container_name\": \"nutritrace\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3001:3001/tcp\"\n ],\n \"volumes\": [\n \"./data/db:/data/db\",\n \"./data/uploads:/data/uploads\"\n ],\n \"environment\": {\n \"JWT_SECRET\": \"${GENERATED_JWT_SECRET}\",\n \"DB_PATH\": \"/data/db/nutritrace.db\",\n \"UPLOADS_PATH\": \"/data/uploads\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "nutritrace",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "nutritrace",
"service_count": 1,
"services": [
{
"name": "nutritrace",
"image": "ghcr.io/traceapps/nutritrace:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/traceapps/nutritrace:latest",
"container_name": "nutritrace",
"restart": "unless-stopped",
"ports": [
"3001:3001/tcp"
],
"volumes": [
"./data/db:/data/db",
"./data/uploads:/data/uploads"
],
"environment": {
"JWT_SECRET": "${GENERATED_JWT_SECRET}",
"DB_PATH": "/data/db/nutritrace.db",
"UPLOADS_PATH": "/data/uploads"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "nutritrace-volume-0",
"service": "nutritrace",
"container_path": "/data/db",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
},
{
"id": "nutritrace-volume-1",
"service": "nutritrace",
"container_path": "/data/uploads",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"nutritrace"
],
"stop_order": [
"nutritrace"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-nutritrace-jwt-secret",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "nutritrace",
"environment_variable": "JWT_SECRET"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "NutriTrace",
"scheme": "http",
"port": 3001,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"JWT_SECRET": {
"strategy": "token-hex",
"bytes": 48
}
},
"volume_preparations": [
{
"container_path": "/data/db",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/data/uploads",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3001,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+285
View File
@@ -0,0 +1,285 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-opengist",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Opengist"
},
"description": {
"en_US": "Self-hosted Git-powered pastebin for snippets with syntax highlighting, history, and optional Git-over-SSH access."
},
"category": "documents",
"category_label": "Documents & Notes",
"author": "thomiceli",
"developer": "thomiceli",
"icon": "https://raw.githubusercontent.com/thomiceli/opengist/master/public/img/opengist.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 6157,
"path": "/"
},
"website": "https://opengist.io/",
"documentation": "https://opengist.io/docs",
"repository": "https://github.com/thomiceli/opengist",
"tips": [
"The /opengist directory contains the SQLite database and Git-backed snippets.",
"Port 2222 provides Git-over-SSH; publish it only if you plan to use that feature."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "thomiceli",
"repository": "https://github.com/thomiceli/opengist",
"default_branch": "master",
"revision": "2acf3dae87f9c3d536e0a870787941bbd06d0b46",
"image_repository_url": "https://github.com/thomiceli/opengist/pkgs/container/opengist",
"readme_pushed_at": "",
"compose_sha256": "493ca309582a2dd17a31e7a7b12835830e7ee0b75c4faf20c21bfd9419a0ad30",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/thomiceli/opengist/master/README.md"
},
"container_contract": {
"service_name": "opengist",
"container_name": "opengist",
"image": {
"reference": "ghcr.io/thomiceli/opengist:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/thomiceli/opengist",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [],
"volumes": [
{
"id": "volume-0",
"container_path": "/opengist",
"compose_source_example": "./opengist-data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 6157,
"published_example": 6157,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
},
{
"container_port": 2222,
"published_example": 2222,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"opengist\",\n \"services\": {\n \"opengist\": {\n \"image\": \"ghcr.io/thomiceli/opengist:latest\",\n \"container_name\": \"opengist\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"6157:6157/tcp\",\n \"2222:2222/tcp\"\n ],\n \"volumes\": [\n \"./opengist-data:/opengist\"\n ]\n }\n }\n}"
},
"compose_stack": {
"project_name": "opengist",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "opengist",
"service_count": 1,
"services": [
{
"name": "opengist",
"image": "ghcr.io/thomiceli/opengist:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/thomiceli/opengist:latest",
"container_name": "opengist",
"restart": "unless-stopped",
"ports": [
"6157:6157/tcp",
"2222:2222/tcp"
],
"volumes": [
"./opengist-data:/opengist"
]
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "opengist-volume-0",
"service": "opengist",
"container_path": "/opengist",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"opengist"
],
"stop_order": [
"opengist"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Opengist",
"scheme": "http",
"port": 6157,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/opengist",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 6157,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+276
View File
@@ -0,0 +1,276 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-opentask",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "OpenTask"
},
"description": {
"en_US": "Self-hosted personal task manager with a Todoist-compatible workflow, search, and automatic account-registration lock."
},
"category": "productivity",
"category_label": "Productivity & Workflows",
"author": "pranav-karra-3301",
"developer": "pranav-karra-3301",
"icon": "https://raw.githubusercontent.com/junkdrawerlab/opentask/main/assets/brand/icon.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 7968,
"path": "/"
},
"website": "https://github.com/junkdrawerlab/opentask",
"documentation": "https://github.com/junkdrawerlab/opentask#readme",
"repository": "https://github.com/pranav-karra-3301/opentask",
"tips": [
"The first user registration is automatically treated as the administrator and locks new registration; HTTPS is needed for Web Push outside localhost."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "pranav-karra-3301",
"repository": "https://github.com/pranav-karra-3301/opentask",
"default_branch": "main",
"revision": "1214ee494d9692c39a733933a10ddc66af6a580f",
"image_repository_url": "https://github.com/orgs/pranav-karra-3301/packages/container/package/opentask",
"readme_pushed_at": "",
"compose_sha256": "f0f5b59f015c866295b7027420951dd8df66abb7296e0ccef47fdbd9bbeb7b09",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/pranav-karra-3301/opentask/main/README.md"
},
"container_contract": {
"service_name": "opentask",
"container_name": "opentask",
"image": {
"reference": "ghcr.io/pranav-karra-3301/opentask:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/pranav-karra-3301/opentask",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 7968,
"published_example": 7968,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"opentask\",\n \"services\": {\n \"opentask\": {\n \"image\": \"ghcr.io/pranav-karra-3301/opentask:latest\",\n \"container_name\": \"opentask\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"7968:7968/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\"\n ]\n }\n }\n}"
},
"compose_stack": {
"project_name": "opentask",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "opentask",
"service_count": 1,
"services": [
{
"name": "opentask",
"image": "ghcr.io/pranav-karra-3301/opentask:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/pranav-karra-3301/opentask:latest",
"container_name": "opentask",
"restart": "unless-stopped",
"ports": [
"7968:7968/tcp"
],
"volumes": [
"./data:/data"
]
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "opentask-volume-0",
"service": "opentask",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"opentask"
],
"stop_order": [
"opentask"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "OpenTask",
"scheme": "http",
"port": 7968,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 7968,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+302
View File
@@ -0,0 +1,302 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-papra",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Papra"
},
"description": {
"en_US": "Self-hosted document management for storing, organizing, searching, and sharing personal documents."
},
"category": "documents",
"category_label": "Documents & Notes",
"author": "papra-hq",
"developer": "papra-hq",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/papra.webp",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 1221,
"path": "/"
},
"website": "https://papra.app/",
"documentation": "https://docs.papra.app/self-hosting/using-docker/",
"repository": "https://github.com/papra-hq/papra",
"tips": [
"The installer generates AUTH_SECRET. Keep /app/app-data backed up; it contains the database and documents."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "papra-hq",
"repository": "https://github.com/papra-hq/papra",
"default_branch": "main",
"revision": "93a569f3e90fd63a6034522d6c3b316d8bb67a65",
"image_repository_url": "https://github.com/orgs/papra-hq/packages/container/package/papra",
"readme_pushed_at": "",
"compose_sha256": "49e2b3120cd8d33b5d737a872bd2f695fb1bea63f155f9142ccc7860e93ede2e",
"generated_at": "2026-10-26T06:10:04+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/papra-hq/papra/main/README.md"
},
"container_contract": {
"service_name": "papra",
"container_name": "papra",
"image": {
"reference": "ghcr.io/papra-hq/papra:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/papra-hq/papra",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "AUTH_SECRET",
"example": "${GENERATED_AUTH_SECRET}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/app/app-data",
"compose_source_example": "./papra-data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 1221,
"published_example": 1221,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"papra\",\n \"services\": {\n \"papra\": {\n \"image\": \"ghcr.io/papra-hq/papra:latest\",\n \"container_name\": \"papra\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"1221:1221/tcp\"\n ],\n \"volumes\": [\n \"./papra-data:/app/app-data\"\n ],\n \"environment\": {\n \"AUTH_SECRET\": \"${GENERATED_AUTH_SECRET}\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "papra",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "papra",
"service_count": 1,
"services": [
{
"name": "papra",
"image": "ghcr.io/papra-hq/papra:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/papra-hq/papra:latest",
"container_name": "papra",
"restart": "unless-stopped",
"ports": [
"1221:1221/tcp"
],
"volumes": [
"./papra-data:/app/app-data"
],
"environment": {
"AUTH_SECRET": "${GENERATED_AUTH_SECRET}"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "papra-volume-0",
"service": "papra",
"container_path": "/app/app-data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"papra"
],
"stop_order": [
"papra"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-papra-auth-secret",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "papra",
"environment_variable": "AUTH_SECRET"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "Papra",
"scheme": "http",
"port": 1221,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"AUTH_SECRET": {
"strategy": "token-hex",
"bytes": 48
}
},
"volume_preparations": [
{
"container_path": "/app/app-data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 1221,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+298
View File
@@ -0,0 +1,298 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-photofield",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Photofield"
},
"description": {
"en_US": "Self-hosted photo library that indexes local photo collections and keeps its thumbnail cache in persistent storage."
},
"category": "media",
"category_label": "Media & Streaming",
"author": "SmilyOrg",
"developer": "SmilyOrg",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/photofield.webp",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 8080,
"path": "/"
},
"website": "https://github.com/SmilyOrg/photofield",
"documentation": "https://github.com/SmilyOrg/photofield#readme",
"repository": "https://github.com/SmilyOrg/photofield",
"tips": [
"Map a host photo directory at /app/photos for a real library; it is mounted read-only in the upstream example."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "SmilyOrg",
"repository": "https://github.com/SmilyOrg/photofield",
"default_branch": "main",
"revision": "d7374a9ab11be7d684e958b9bdf2b4205d0dbc23",
"image_repository_url": "https://github.com/orgs/SmilyOrg/packages/container/package/photofield",
"readme_pushed_at": "",
"compose_sha256": "9786bbfa8603a75fa42037397f14707c6f2d830edb2bc9844474590764ee5de4",
"generated_at": "2026-10-26T06:10:04+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/SmilyOrg/photofield/main/README.md"
},
"container_contract": {
"service_name": "photofield",
"container_name": "photofield",
"image": {
"reference": "ghcr.io/smilyorg/photofield:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/smilyorg/photofield",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [],
"volumes": [
{
"id": "volume-0",
"container_path": "/app/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
},
{
"id": "volume-1",
"container_path": "/app/photos",
"compose_source_example": "./photos",
"read_only": true,
"required": false,
"installation_choice": [
"host-bind",
"skip"
],
"default": "skip",
"managed_volume": {
"backup": false,
"default_size_gb": 1
}
}
],
"ports": [
{
"container_port": 8080,
"published_example": 8080,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"photofield\",\n \"services\": {\n \"photofield\": {\n \"image\": \"ghcr.io/smilyorg/photofield:latest\",\n \"container_name\": \"photofield\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"8080:8080/tcp\"\n ],\n \"volumes\": [\n \"./data:/app/data\",\n \"./photos:/app/photos:ro\"\n ]\n }\n }\n}"
},
"compose_stack": {
"project_name": "photofield",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "photofield",
"service_count": 1,
"services": [
{
"name": "photofield",
"image": "ghcr.io/smilyorg/photofield:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/smilyorg/photofield:latest",
"container_name": "photofield",
"restart": "unless-stopped",
"ports": [
"8080:8080/tcp"
],
"volumes": [
"./data:/app/data",
"./photos:/app/photos:ro"
]
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "photofield-volume-0",
"service": "photofield",
"container_path": "/app/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"photofield"
],
"stop_order": [
"photofield"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Photofield",
"scheme": "http",
"port": 8080,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/app/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
},
{
"container_path": "/app/photos",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 8080,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+285
View File
@@ -0,0 +1,285 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-plants",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Plants"
},
"description": {
"en_US": "Self-hosted household plant-care tracker with reminders, photos, and multiple user accounts."
},
"category": "productivity",
"category_label": "Productivity & Workflows",
"author": "dhrandy",
"developer": "dhrandy",
"icon": "https://raw.githubusercontent.com/dhrandy/plants/main/app/static/icon.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64"
],
"launch": {
"scheme": "http",
"port": 8000,
"path": "/"
},
"website": "https://github.com/dhrandy/plants",
"documentation": "https://github.com/dhrandy/plants#readme",
"repository": "https://github.com/dhrandy/plants",
"tips": [
"The first visit opens setup; the first account becomes the administrator."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "dhrandy",
"repository": "https://github.com/dhrandy/plants",
"default_branch": "main",
"revision": "e40a84a0fb9c1e9de491f9f69653034e561ac7fe",
"image_repository_url": "https://github.com/orgs/dhrandy/packages/container/package/plants",
"readme_pushed_at": "",
"compose_sha256": "25e903044cb5ef53f0b58ec9cab4ce88d47c4073bf69f8c6c836389cae46cd87",
"generated_at": "2026-10-26T06:10:04+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/dhrandy/plants/main/README.md"
},
"container_contract": {
"service_name": "plants",
"container_name": "plants",
"image": {
"reference": "ghcr.io/dhrandy/plants:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/dhrandy/plants",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "TZ",
"example": "UTC",
"required": false,
"sensitive": false,
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/app/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 4
}
}
],
"ports": [
{
"container_port": 8000,
"published_example": 8000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"plants\",\n \"services\": {\n \"plants\": {\n \"image\": \"ghcr.io/dhrandy/plants:latest\",\n \"container_name\": \"plants\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"8000:8000/tcp\"\n ],\n \"volumes\": [\n \"./data:/app/data\"\n ],\n \"environment\": {\n \"TZ\": \"UTC\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "plants",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "plants",
"service_count": 1,
"services": [
{
"name": "plants",
"image": "ghcr.io/dhrandy/plants:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/dhrandy/plants:latest",
"container_name": "plants",
"restart": "unless-stopped",
"ports": [
"8000:8000/tcp"
],
"volumes": [
"./data:/app/data"
],
"environment": {
"TZ": "UTC"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "plants-volume-0",
"service": "plants",
"container_path": "/app/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"plants"
],
"stop_order": [
"plants"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Plants",
"scheme": "http",
"port": 8000,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [
{
"container_path": "/app/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 8000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+321
View File
@@ -0,0 +1,321 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-sofa",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Sofa"
},
"description": {
"en_US": "Self-hosted movie and TV tracker with watch history, recommendations, and media-server integrations."
},
"category": "media",
"category_label": "Media & Streaming",
"author": "jakejarvis",
"developer": "jakejarvis",
"icon": "https://raw.githubusercontent.com/jakejarvis/sofa/main/apps/web/public/icon.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3000,
"path": "/"
},
"website": "https://github.com/jakejarvis/sofa",
"documentation": "https://github.com/jakejarvis/sofa#readme",
"repository": "https://github.com/jakejarvis/sofa",
"tips": [
"A TMDB API Read Access Token is required for metadata and discovery. Update BETTER_AUTH_URL to the public HTTPS address when putting the app behind a reverse proxy.",
"The first account created becomes the administrator and registration then closes by default."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "jakejarvis",
"repository": "https://github.com/jakejarvis/sofa",
"default_branch": "main",
"revision": "a8294d977b0f2c0ad267d0b516298881a5571e86",
"image_repository_url": "https://github.com/orgs/jakejarvis/packages/container/package/sofa",
"readme_pushed_at": "",
"compose_sha256": "f58035702e2110cf26805bcb3c6a442296146ddd8dd36c1bf956469e94007471",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/jakejarvis/sofa/main/README.md"
},
"container_contract": {
"service_name": "sofa",
"container_name": "sofa",
"image": {
"reference": "ghcr.io/jakejarvis/sofa:edge",
"registry": "ghcr.io",
"repository": "ghcr.io/jakejarvis/sofa",
"tag": "edge",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [
{
"name": "TMDB_API_READ_ACCESS_TOKEN",
"example": null,
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "BETTER_AUTH_SECRET",
"example": "${GENERATED_BETTER_AUTH_SECRET}",
"required": true,
"sensitive": true,
"source": "upstream-documentation"
},
{
"name": "BETTER_AUTH_URL",
"example": "http://@CONTAINER_ADDRESS@:3000",
"required": true,
"sensitive": false,
"container_address": "http://@CONTAINER_ADDRESS@:3000",
"source": "upstream-documentation"
}
],
"volumes": [
{
"id": "volume-0",
"container_path": "/data",
"compose_source_example": "./data",
"read_only": false,
"required": true,
"installation_choice": [
"managed-volume",
"host-bind"
],
"default": "managed-volume",
"managed_volume": {
"backup": true,
"default_size_gb": 8
}
}
],
"ports": [
{
"container_port": 3000,
"published_example": 3000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"sofa\",\n \"services\": {\n \"sofa\": {\n \"image\": \"ghcr.io/jakejarvis/sofa:edge\",\n \"container_name\": \"sofa\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3000:3000/tcp\"\n ],\n \"volumes\": [\n \"./data:/data\"\n ],\n \"environment\": {\n \"TMDB_API_READ_ACCESS_TOKEN\": null,\n \"BETTER_AUTH_SECRET\": \"${GENERATED_BETTER_AUTH_SECRET}\",\n \"BETTER_AUTH_URL\": \"http://@CONTAINER_ADDRESS@:3000\"\n }\n }\n }\n}"
},
"compose_stack": {
"project_name": "sofa",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "sofa",
"service_count": 1,
"services": [
{
"name": "sofa",
"image": "ghcr.io/jakejarvis/sofa:edge",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/jakejarvis/sofa:edge",
"container_name": "sofa",
"restart": "unless-stopped",
"ports": [
"3000:3000/tcp"
],
"volumes": [
"./data:/data"
],
"environment": {
"TMDB_API_READ_ACCESS_TOKEN": null,
"BETTER_AUTH_SECRET": "${GENERATED_BETTER_AUTH_SECRET}",
"BETTER_AUTH_URL": "http://@CONTAINER_ADDRESS@:3000"
}
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [
{
"id": "sofa-volume-0",
"service": "sofa",
"container_path": "/data",
"mode": "managed-volume",
"user_selectable": true,
"backup": true,
"shared_with_other_lxc": false,
"source_path": null,
"source_path_prompt": null
}
],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"sofa"
],
"stop_order": [
"sofa"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": [
{
"id": "generated-sofa-better-auth-secret",
"strategy": "generate-cryptographically-random-at-install",
"bindings": [
{
"service": "sofa",
"environment_variable": "BETTER_AUTH_SECRET"
}
]
}
]
}
},
"first_run": {
"endpoints": [
{
"label": "Sofa",
"scheme": "http",
"port": 3000,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {
"BETTER_AUTH_SECRET": {
"strategy": "token-hex",
"bytes": 32
}
},
"volume_preparations": [
{
"container_path": "/data",
"remove_lost_found": true,
"owner_strategy": "mapped-application-user",
"only_when_mount_type": "managed-volume"
}
],
"startup_healthcheck": {
"scheme": "http",
"port": 3000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+238
View File
@@ -0,0 +1,238 @@
{
"schema_version": "0.5.0",
"kind": "proxmenux.oci-template",
"id": "image-web-check",
"status": "generated-unvalidated",
"catalog_ui": {
"title": {
"en_US": "Web Check"
},
"description": {
"en_US": "Self-hosted website diagnostics for checking DNS, TLS certificates, HTTP headers, and other web properties."
},
"category": "tools",
"category_label": "Tools",
"author": "Lissy93",
"developer": "Lissy93",
"icon": "https://raw.githubusercontent.com/Lissy93/web-check/master/public/favicon.svg",
"thumbnail": null,
"screenshots": [],
"architectures": [
"amd64",
"arm64"
],
"launch": {
"scheme": "http",
"port": 3000,
"path": "/"
},
"website": "https://web-check.xyz/",
"documentation": "https://github.com/Lissy93/web-check#readme",
"repository": "https://github.com/Lissy93/web-check",
"tips": [
"No authentication is built in. Restrict access to trusted users and avoid exposing the service publicly; submitted checks can target private network addresses."
],
"mini_changelog": [],
"display_version": null,
"updated_at": null
},
"source": {
"provider": "Lissy93",
"repository": "https://github.com/Lissy93/web-check",
"default_branch": "master",
"revision": "d4be4895c94270c3b8d5a2be544298e3b1b7ee39",
"image_repository_url": "https://github.com/orgs/Lissy93/packages/container/package/web-check",
"readme_pushed_at": "",
"compose_sha256": "273607094e2cec1c15d64d9a672c89aa033ad109acf1580c47f4fa52ca3ea019",
"generated_at": "2026-10-26T06:12:09+00:00",
"readme_raw_url": "https://raw.githubusercontent.com/Lissy93/web-check/master/README.md"
},
"container_contract": {
"service_name": "web-check",
"container_name": "web-check",
"image": {
"reference": "ghcr.io/lissy93/web-check:latest",
"registry": "ghcr.io",
"repository": "ghcr.io/lissy93/web-check",
"tag": "latest",
"digest": null,
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
},
"environment": [],
"volumes": [],
"ports": [
{
"container_port": 3000,
"published_example": 3000,
"protocol": "tcp",
"required": true,
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
}
],
"related_services": [],
"restart": "unless-stopped",
"stop_grace_period": null,
"original_compose": "{\n \"name\": \"web-check\",\n \"services\": {\n \"web-check\": {\n \"image\": \"ghcr.io/lissy93/web-check:latest\",\n \"container_name\": \"web-check\",\n \"restart\": \"unless-stopped\",\n \"ports\": [\n \"3000:3000/tcp\"\n ],\n \"volumes\": []\n }\n }\n}"
},
"compose_stack": {
"project_name": "web-check",
"deployment_model": "one-native-oci-lxc-per-compose-service",
"user_experience": "single-application-install",
"main_service": "web-check",
"service_count": 1,
"services": [
{
"name": "web-check",
"image": "ghcr.io/lissy93/web-check:latest",
"is_main": true,
"role": "frontend",
"vmid_offset": 0,
"depends_on": [],
"frontend_network": true,
"private_network": false,
"compose": {
"image": "ghcr.io/lissy93/web-check:latest",
"container_name": "web-check",
"restart": "unless-stopped",
"ports": [
"3000:3000/tcp"
],
"volumes": []
}
}
],
"top_level": {},
"networking": {
"frontend": "selected-proxmox-bridge",
"private_required": false,
"private_creation": "automatic-create-if-missing",
"private_address_allocation": "automatic-static-address-per-service",
"service_discovery": "private-addresses-with-compose-service-host-aliases",
"dependency_external_access": "disabled-unless-service-publishes-ports",
"prompt_user_for_private_network": false
},
"storage": [],
"orchestration": {
"reserve_vmids_atomically": 1,
"start_order": [
"web-check"
],
"stop_order": [
"web-check"
],
"dependency_readiness": "compose-healthcheck-then-port-or-process-fallback",
"rollback_on_failure": "remove-new-rootfs-preserve-created-persistent-volumes"
},
"installer_inputs": {
"prompted": [
"stack_name",
"base_vmid",
"rootfs_storage",
"persistent_data_destinations",
"frontend_bridge",
"frontend_ipv4_mode"
],
"automatic": [
"dependent_vmids",
"private_bridge",
"private_subnet",
"private_service_addresses",
"compose_service_aliases",
"generated_secrets",
"dependency_start_and_stop_order"
],
"generated_secrets": []
}
},
"first_run": {
"endpoints": [
{
"label": "Web Check",
"scheme": "http",
"port": 3000,
"path": "/",
"source": "upstream-documentation"
}
],
"credentials": []
},
"proxmox": {
"runtime": "native-oci-lxc",
"technology_status": "proxmox-technology-preview",
"defaults": {
"unprivileged": true,
"ostype": "auto-from-image",
"cores": 2,
"memory_mb": 1024,
"swap_mb": 512,
"rootfs_size_gb": 8,
"rootfs_storage": "local-lvm",
"volume_storage": "local-lvm",
"template_storage": "local",
"bridge": "vmbr0",
"ipv4": "dhcp",
"firewall": true,
"host_managed_network": true,
"onboot": false,
"features": [
"nesting=1"
],
"shutdown_timeout_seconds": 120
},
"image_metadata_policy": {
"entrypoint": "import-from-oci-image",
"cmd": "import-from-oci-image",
"environment": "import-image-env-then-apply-compose-overrides",
"user": "import-from-oci-image",
"working_dir": "import-from-oci-image",
"stop_signal": "import-from-oci-image"
},
"installer_profile": {
"generated_sensitive_environment": {},
"volume_preparations": [],
"startup_healthcheck": {
"scheme": "http",
"port": 3000,
"path": "/",
"timeout_seconds": 180,
"request_timeout_seconds": 10,
"stability_seconds": 4,
"verify_tls": true
}
}
},
"compatibility": {
"automatic_install_candidate": true,
"validated": false,
"supported_compose_keys": [
"image",
"container_name",
"environment",
"ports",
"restart",
"volumes",
"user"
],
"untranslated_blockers": [],
"policy": "Single OCI image and one application service. Persistent paths, required settings, listeners and upstream first-run steps are recorded; runtime installation and service behavior remain unvalidated until laboratory testing."
},
"validation": {
"schema": "passed-at-generation",
"clean_install": "pending",
"service_health": "pending",
"restart_persistence": "pending",
"backup_restore": "pending",
"update_preserves_data": "pending"
},
"lifecycle": {
"update_strategy": "resolve-latest-image-then-apply-reviewed-native-lxc-update",
"registry_state": {
"resolved_architecture": null,
"resolved_digest": null,
"image_version_label": null,
"image_created": null
},
"change_detection": "compare-compose-sha256-and-resolved-latest-image-digest",
"automatic_unattended_updates": false
}
}
+798 -1
View File
@@ -2,7 +2,7 @@
"schema_version": "0.2.0",
"kind": "proxmenux.oci-catalog-index",
"provider": "multiple-container-images",
"generated_at": "2026-09-13T21:11:40+00:00",
"generated_at": "2026-10-26T08:04:51+00:00",
"applications": [
{
"id": "2fauth",
@@ -622,6 +622,38 @@
"hidden": false,
"template_id": "linuxserver-ardour"
},
{
"id": "artalk",
"provider": "ArtalkJS",
"template_family": "curated-profile",
"title": "Artalk",
"repository": "https://github.com/ArtalkJS/Artalk",
"description": "Self-hosted comment server for blogs and websites, with a browser-based dashboard.",
"website": "https://artalk.js.org/",
"icon": "https://raw.githubusercontent.com/ArtalkJS/Artalk/master/docs/docs/images/artalk-logo.png",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "docker.io/artalk/artalk-go:latest",
"category": "documents",
"category_label": "Documents & Notes",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/artalk.json",
"template": "apps/artalk.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-artalk"
},
{
"id": "audacity",
"provider": "linuxserver.io",
@@ -1020,6 +1052,38 @@
"hidden": false,
"template_id": "image-beszel"
},
{
"id": "bichon",
"provider": "rustmailer",
"template_family": "curated-profile",
"title": "Bichon",
"repository": "https://github.com/rustmailer/bichon",
"description": "Self-hosted email archival and search server that downloads mailboxes over IMAP into encrypted local storage.",
"website": "https://github.com/rustmailer/bichon",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/bichon.webp",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "docker.io/rustmailer/bichon:latest",
"category": "communication",
"category_label": "Communication & Community",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/bichon.json",
"template": "apps/bichon.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-bichon"
},
{
"id": "bitcoin-knots",
"provider": "linuxserver.io",
@@ -1472,6 +1536,38 @@
"hidden": false,
"template_id": "linuxserver-calligra"
},
{
"id": "calnode",
"provider": "Calnode",
"template_family": "curated-profile",
"title": "Calnode",
"repository": "https://github.com/Calnode/calnode",
"description": "Self-hosted scheduling and booking app with a built-in admin interface and SQLite database.",
"website": "https://github.com/Calnode/calnode",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/calnode.webp",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/calnode/calnode:latest",
"category": "productivity",
"category_label": "Productivity & Workflows",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/calnode.json",
"template": "apps/calnode.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-calnode"
},
{
"id": "changedetection.io",
"provider": "linuxserver.io",
@@ -1982,6 +2078,38 @@
"hidden": false,
"template_id": "image-convertx"
},
{
"id": "cooktrace",
"provider": "TraceApps",
"template_family": "curated-profile",
"title": "CookTrace",
"repository": "https://github.com/traceapps/cooktrace",
"description": "Self-hosted recipe manager for collecting, organizing, and sharing recipes.",
"website": "https://github.com/traceapps/cooktrace",
"icon": "https://raw.githubusercontent.com/traceapps/cooktrace/main/public/icons/icon-512.png",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/traceapps/cooktrace:latest",
"category": "productivity",
"category_label": "Productivity & Workflows",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/cooktrace.json",
"template": "apps/cooktrace.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-cooktrace"
},
{
"id": "cops",
"provider": "linuxserver.io",
@@ -2521,6 +2649,37 @@
"hidden": true,
"template_id": "image-deepseek-ocr-nvidia"
},
{
"id": "degubase",
"provider": "saintedlama",
"template_family": "curated-profile",
"title": "Degubase",
"repository": "https://github.com/saintedlama/degubase",
"description": "A single-container web interface for building small relational workspaces backed by SQLite.",
"website": "https://github.com/saintedlama/degubase",
"icon": "https://raw.githubusercontent.com/saintedlama/degubase/main/ui/public/assets/logo.svg",
"architectures": [
"amd64"
],
"updated_at": null,
"main_image": "ghcr.io/saintedlama/degubase:latest",
"category": "databases",
"category_label": "Databases",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/degubase.json",
"template": "apps/degubase.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-degubase"
},
{
"id": "deluge",
"provider": "linuxserver.io",
@@ -4186,6 +4345,38 @@
"hidden": false,
"template_id": "linuxserver-firefox"
},
{
"id": "flagr",
"provider": "openflagr",
"template_family": "curated-profile",
"title": "Flagr",
"repository": "https://github.com/openflagr/flagr",
"description": "Self-hosted feature-flag and experimentation service with a web interface and SQLite defaults.",
"website": "https://github.com/openflagr/flagr",
"icon": "https://raw.githubusercontent.com/openflagr/flagr/main/docs/brand/flagr-mark.png",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/openflagr/flagr:latest",
"category": "ai",
"category_label": "AI / Coding & Dev-Tools",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/flagr.json",
"template": "apps/flagr.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-flagr"
},
{
"id": "flame",
"provider": "pawelmalak",
@@ -5248,6 +5439,38 @@
"hidden": false,
"template_id": "linuxserver-grocy"
},
{
"id": "guestroll",
"provider": "achedon12",
"template_family": "curated-profile",
"title": "Guestroll",
"repository": "https://github.com/achedon12/guestroll",
"description": "Self-hosted event photo gallery for guests, with moderation, QR-code sharing, and local SQLite storage.",
"website": "https://github.com/achedon12/guestroll",
"icon": "https://raw.githubusercontent.com/achedon12/guestroll/develop/src/app/icon.svg",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/achedon12/guestroll:latest",
"category": "sharing",
"category_label": "Files & Sharing",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/guestroll.json",
"template": "apps/guestroll.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-guestroll"
},
{
"id": "gzdoom",
"provider": "linuxserver.io",
@@ -6040,6 +6263,70 @@
"multi_container": false,
"template_id": "image-icecast"
},
{
"id": "ihatemoney",
"provider": "spiral-project",
"template_family": "curated-profile",
"title": "I Hate Money",
"repository": "https://github.com/spiral-project/ihatemoney",
"description": "Self-hosted shared-expense and group-budget manager for tracking purchases and settling who owes whom.",
"website": "https://ihatemoney.org/",
"icon": "https://raw.githubusercontent.com/spiral-project/ihatemoney/main/ihatemoney/static/favicon.ico",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "docker.io/ihatemoney/ihatemoney:latest",
"category": "finance",
"category_label": "Finance & Budgeting",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/ihatemoney.json",
"template": "apps/ihatemoney.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-ihatemoney"
},
{
"id": "imagesilo",
"provider": "Willxup",
"template_family": "curated-profile",
"title": "ImageSilo",
"repository": "https://github.com/Willxup/imagesilo",
"description": "Self-hosted image-hosting service with authenticated uploads, image processing, public links, and local storage.",
"website": "https://github.com/Willxup/imagesilo",
"icon": "https://raw.githubusercontent.com/Willxup/imagesilo/main/assets/brand/imagesilo-icon-512.png",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/willxup/imagesilo:latest",
"category": "sharing",
"category_label": "Files & Sharing",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/imagesilo.json",
"template": "apps/imagesilo.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-imagesilo"
},
{
"id": "immich",
"provider": "immich",
@@ -6173,6 +6460,37 @@
"hidden": false,
"template_id": "linuxserver-inkscape"
},
{
"id": "instatic",
"provider": "CoreBunch",
"template_family": "curated-profile",
"title": "Instatic",
"repository": "https://github.com/CoreBunch/Instatic",
"description": "Single-server website CMS and visual editor with SQLite-backed content, media uploads, forms, and publishing.",
"website": "https://github.com/CoreBunch/Instatic",
"icon": "https://raw.githubusercontent.com/CoreBunch/Instatic/main/public/favicon.svg",
"architectures": [
"amd64"
],
"updated_at": null,
"main_image": "ghcr.io/corebunch/instatic:latest",
"category": "web",
"category_label": "Webservers & Proxies",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/instatic.json",
"template": "apps/instatic.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-instatic"
},
{
"id": "intellij-idea",
"provider": "linuxserver.io",
@@ -6204,6 +6522,38 @@
"hidden": false,
"template_id": "linuxserver-intellij-idea"
},
{
"id": "invoiceshelf",
"provider": "InvoiceShelf",
"template_family": "curated-profile",
"title": "InvoiceShelf",
"repository": "https://github.com/InvoiceShelf/InvoiceShelf",
"description": "Self-hosted invoicing and estimates with customer portals, recurring billing, payments, and expense tracking.",
"website": "https://github.com/InvoiceShelf/InvoiceShelf",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/invoiceshelf.webp",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "docker.io/invoiceshelf/invoiceshelf:latest",
"category": "business",
"category_label": "Business & ERP",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/invoiceshelf.json",
"template": "apps/invoiceshelf.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-invoiceshelf"
},
{
"id": "iobroker",
"provider": "ioBroker Community",
@@ -7021,6 +7371,38 @@
"hidden": false,
"template_id": "linuxserver-krita"
},
{
"id": "kroma",
"provider": "kromatv",
"template_family": "curated-profile",
"title": "KROMA",
"repository": "https://github.com/kromatv/kroma",
"description": "Personal media server for browsing and playing a local video library, with direct play and optional modules.",
"website": "https://github.com/kromatv/kroma",
"icon": "https://raw.githubusercontent.com/kromatv/kroma/main/.github/assets/logo.svg",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/kromatv/kroma:latest",
"category": "media",
"category_label": "Media & Streaming",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/kroma.json",
"template": "apps/kroma.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-kroma"
},
{
"id": "label-studio",
"source_app_id": "label-studio",
@@ -7156,6 +7538,38 @@
"hidden": false,
"template_id": "linuxserver-ldap-auth"
},
{
"id": "libre-closet",
"provider": "lazztech",
"template_family": "curated-profile",
"title": "Libre Closet",
"repository": "https://github.com/lazztech/Libre-Closet",
"description": "Self-hosted wardrobe catalog for organizing clothing, outfits, and personal style with SQLite and local file storage.",
"website": "https://github.com/lazztech/Libre-Closet",
"icon": "https://raw.githubusercontent.com/lazztech/Libre-Closet/main/public/favicon.ico",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/lazztech/libre-closet:latest",
"category": "productivity",
"category_label": "Productivity & Workflows",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/libre-closet.json",
"template": "apps/libre-closet.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-libre-closet"
},
{
"id": "librechat",
"source_app_id": "librechat",
@@ -7392,6 +7806,38 @@
"hidden": false,
"template_id": "linuxserver-lidarr"
},
{
"id": "lifttrace",
"provider": "TraceApps",
"template_family": "curated-profile",
"title": "LiftTrace",
"repository": "https://github.com/traceapps/lifttrace",
"description": "Self-hosted strength-training tracker with workout logs, programs, progress photos, and a mobile PWA.",
"website": "https://github.com/traceapps/lifttrace",
"icon": "https://raw.githubusercontent.com/traceapps/lifttrace/main/public/icons/icon-512.png",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/traceapps/lifttrace:latest",
"category": "productivity",
"category_label": "Productivity & Workflows",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/lifttrace.json",
"template": "apps/lifttrace.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-lifttrace"
},
{
"id": "limnoria",
"provider": "linuxserver.io",
@@ -7957,6 +8403,38 @@
"hidden": false,
"template_id": "image-mailpit"
},
{
"id": "maintainerr",
"provider": "Maintainerr",
"template_family": "curated-profile",
"title": "Maintainerr",
"repository": "https://github.com/Maintainerr/Maintainerr",
"description": "Self-hosted media-library cleanup and maintenance dashboard for Plex, Jellyfin, or Emby.",
"website": "https://github.com/Maintainerr/Maintainerr",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/maintainerr.webp",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/maintainerr/maintainerr:latest",
"category": "media",
"category_label": "Media & Streaming",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/maintainerr.json",
"template": "apps/maintainerr.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-maintainerr"
},
{
"id": "makemkv",
"provider": "jlesage",
@@ -9601,6 +10079,70 @@
"hidden": false,
"template_id": "image-node-red"
},
{
"id": "notara",
"provider": "DnzzL",
"template_family": "curated-profile",
"title": "Notara",
"repository": "https://github.com/DnzzL/notara",
"description": "Self-hosted collaborative notes and knowledge base with pages, inline databases, and SQLite storage.",
"website": "https://github.com/DnzzL/notara",
"icon": "https://raw.githubusercontent.com/DnzzL/notara/main/packages/app/public/icon-512.svg",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/dnzzl/notara:latest",
"category": "documents",
"category_label": "Documents & Notes",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/notara.json",
"template": "apps/notara.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-notara"
},
{
"id": "notetrace",
"provider": "TraceApps",
"template_family": "curated-profile",
"title": "NoteTrace",
"repository": "https://github.com/traceapps/notetrace",
"description": "Self-hosted notes and notebooks with attachments, backups, and optional multi-user accounts.",
"website": "https://github.com/traceapps/notetrace",
"icon": "https://raw.githubusercontent.com/traceapps/notetrace/main/public/icons/icon-512.png",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/traceapps/notetrace:latest",
"category": "documents",
"category_label": "Documents & Notes",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/notetrace.json",
"template": "apps/notetrace.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-notetrace"
},
{
"id": "ntfy",
"provider": "binwiederhier",
@@ -9664,6 +10206,38 @@
"hidden": false,
"template_id": "image-nut-server"
},
{
"id": "nutritrace",
"provider": "TraceApps",
"template_family": "curated-profile",
"title": "NutriTrace",
"repository": "https://github.com/traceapps/nutritrace",
"description": "Self-hosted nutrition and meal tracker with food logging, recipes, and nutrition data.",
"website": "https://github.com/traceapps/nutritrace",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/nutritrace.webp",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/traceapps/nutritrace:latest",
"category": "productivity",
"category_label": "Productivity & Workflows",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/nutritrace.json",
"template": "apps/nutritrace.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-nutritrace"
},
{
"id": "nzbfast",
"source_app_id": "nzbfast",
@@ -10124,6 +10698,38 @@
"hidden": false,
"template_id": "image-openclaw"
},
{
"id": "opengist",
"provider": "thomiceli",
"template_family": "curated-profile",
"title": "Opengist",
"repository": "https://github.com/thomiceli/opengist",
"description": "Self-hosted Git-powered pastebin for snippets with syntax highlighting, history, and optional Git-over-SSH access.",
"website": "https://opengist.io/",
"icon": "https://raw.githubusercontent.com/thomiceli/opengist/master/public/img/opengist.svg",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/thomiceli/opengist:latest",
"category": "documents",
"category_label": "Documents & Notes",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/opengist.json",
"template": "apps/opengist.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-opengist"
},
{
"id": "openhab",
"source_app_id": "openhab",
@@ -10362,6 +10968,38 @@
"hidden": false,
"template_id": "linuxserver-openssh-server"
},
{
"id": "opentask",
"provider": "pranav-karra-3301",
"template_family": "curated-profile",
"title": "OpenTask",
"repository": "https://github.com/pranav-karra-3301/opentask",
"description": "Self-hosted personal task manager with a Todoist-compatible workflow, search, and automatic account-registration lock.",
"website": "https://github.com/junkdrawerlab/opentask",
"icon": "https://raw.githubusercontent.com/junkdrawerlab/opentask/main/assets/brand/icon.svg",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/pranav-karra-3301/opentask:latest",
"category": "productivity",
"category_label": "Productivity & Workflows",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/opentask.json",
"template": "apps/opentask.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-opentask"
},
{
"id": "openvscode-server",
"provider": "linuxserver.io",
@@ -10691,6 +11329,38 @@
"hidden": false,
"template_id": "image-paperless-ngx"
},
{
"id": "papra",
"provider": "papra-hq",
"template_family": "curated-profile",
"title": "Papra",
"repository": "https://github.com/papra-hq/papra",
"description": "Self-hosted document management for storing, organizing, searching, and sharing personal documents.",
"website": "https://papra.app/",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/papra.webp",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/papra-hq/papra:latest",
"category": "documents",
"category_label": "Documents & Notes",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/papra.json",
"template": "apps/papra.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-papra"
},
{
"id": "pcsx2",
"provider": "linuxserver.io",
@@ -10893,6 +11563,38 @@
"hidden": false,
"template_id": "image-pgadmin"
},
{
"id": "photofield",
"provider": "SmilyOrg",
"template_family": "curated-profile",
"title": "Photofield",
"repository": "https://github.com/SmilyOrg/photofield",
"description": "Self-hosted photo library that indexes local photo collections and keeps its thumbnail cache in persistent storage.",
"website": "https://github.com/SmilyOrg/photofield",
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/photofield.webp",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/smilyorg/photofield:latest",
"category": "media",
"category_label": "Media & Streaming",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/photofield.json",
"template": "apps/photofield.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-photofield"
},
{
"id": "photoprism",
"source_app_id": "photoprism",
@@ -11259,6 +11961,37 @@
"hidden": true,
"template_id": "linuxserver-planka"
},
{
"id": "plants",
"provider": "dhrandy",
"template_family": "curated-profile",
"title": "Plants",
"repository": "https://github.com/dhrandy/plants",
"description": "Self-hosted household plant-care tracker with reminders, photos, and multiple user accounts.",
"website": "https://github.com/dhrandy/plants",
"icon": "https://raw.githubusercontent.com/dhrandy/plants/main/app/static/icon.svg",
"architectures": [
"amd64"
],
"updated_at": null,
"main_image": "ghcr.io/dhrandy/plants:latest",
"category": "productivity",
"category_label": "Productivity & Workflows",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/plants.json",
"template": "apps/plants.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-plants"
},
{
"id": "plantuml-server",
"provider": "plantuml",
@@ -13444,6 +14177,38 @@
"hidden": false,
"template_id": "image-snapotter"
},
{
"id": "sofa",
"provider": "jakejarvis",
"template_family": "curated-profile",
"title": "Sofa",
"repository": "https://github.com/jakejarvis/sofa",
"description": "Self-hosted movie and TV tracker with watch history, recommendations, and media-server integrations.",
"website": "https://github.com/jakejarvis/sofa",
"icon": "https://raw.githubusercontent.com/jakejarvis/sofa/main/apps/web/public/icon.svg",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/jakejarvis/sofa:edge",
"category": "media",
"category_label": "Media & Streaming",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/sofa.json",
"template": "apps/sofa.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-sofa"
},
{
"id": "sonarr",
"provider": "linuxserver.io",
@@ -15747,6 +16512,38 @@
"multi_container": false,
"template_id": "image-wbo"
},
{
"id": "web-check",
"provider": "Lissy93",
"template_family": "curated-profile",
"title": "Web Check",
"repository": "https://github.com/Lissy93/web-check",
"description": "Self-hosted website diagnostics for checking DNS, TLS certificates, HTTP headers, and other web properties.",
"website": "https://web-check.xyz/",
"icon": "https://raw.githubusercontent.com/Lissy93/web-check/master/public/favicon.svg",
"architectures": [
"amd64",
"arm64"
],
"updated_at": null,
"main_image": "ghcr.io/lissy93/web-check:latest",
"category": "tools",
"category_label": "Tools",
"replaces_discovered_ids": [],
"curated_path": "catalog/curated/web-check.json",
"template": "apps/web-check.json",
"template_status": "generated-unvalidated",
"automatic_install_candidate": true,
"untranslated_blockers": [],
"requires_privileged_lxc": false,
"optional_privileged_lxc": false,
"requires_host_pid_namespace": false,
"requires_relaxed_confinement": false,
"optional_relaxed_confinement": false,
"requires_security_confirmation": false,
"hidden": false,
"template_id": "image-web-check"
},
{
"id": "webcord",
"provider": "linuxserver.io",