mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-09-29 18:16:43 +00:00
OCI manager Apps - App tab: containers installed from an OCI image are identified from their installation record; the application and image versions are shown and an update is detected by image digest; repository link; Refresh data. - Updates tab for OCI containers: Update and Recreate run the same flow as the OCI menu in the Monitor terminal; the pre-update backup can be kept in a backup storage; scheduled image updates with an optional minimum age. - Logs tab: console output of the application, kept on the host (lxc.console.logfile + logrotate) and followed live. - The Proxmox console opens a shell (cmode: shell) when the image has one. - A damaged image download is fetched again before failing. - Multi-container applications open at their LAN address; volume mount points on block storage report their usage. Monitor - Proxmox notifications are delivered to a loopback-only HTTP listener when HTTPS is enabled, so they no longer fail certificate verification. - Log persistence counts recurring patterns only; an ended burst is not reported as persistent and its warning clears on its own (#386). - Proxmox notification config backups are deduplicated and capped at three. - The update icon on the Apps page opens the container on its Updates tab. - Version 1.2.6.2-beta and its release notes in every Monitor language. Docs - OCI manager Apps and Audit & Report rebuilt as per-page message files, with a new page for OCI containers in the Monitor. - Seven pages fixed where rich-text tags were missing from t.rich. Translations - Spanish fixes across the OCI engine, the Monitor and the TUI menus. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
322 lines
11 KiB
JSON
322 lines
11 KiB
JSON
{
|
|
"schema_version": "0.4.0",
|
|
"kind": "proxmenux.oci-template",
|
|
"id": "linuxserver-duplicati",
|
|
"status": "laboratory-validated",
|
|
"catalog_ui": {
|
|
"title": {
|
|
"en_US": "Duplicati"
|
|
},
|
|
"tagline": {
|
|
"en_US": "Duplicati is a backup client that securely stores encrypted, incremental, compressed backups on local storage, cloud storage services and remote file servers. It works with standard protocols like FTP, SSH, WebDAV as well as popular services like Microsoft OneDrive, Amazon S3, Google Drive, box.com, Mega, B2, and many others."
|
|
},
|
|
"description": {
|
|
"en_US": "Duplicati is a backup client that securely stores encrypted, incremental, compressed backups on local storage, cloud storage services and remote file servers. It works with standard protocols like FTP, SSH, WebDAV as well as popular services like Microsoft OneDrive, Amazon S3, Google Drive, box.com, Mega, B2, and many others."
|
|
},
|
|
"category": "backup",
|
|
"category_label": "Backup & Recovery",
|
|
"author": "LinuxServer.io",
|
|
"developer": null,
|
|
"icon": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/duplicati.webp",
|
|
"thumbnail": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/duplicati-banner.png",
|
|
"screenshots": [],
|
|
"architectures": [
|
|
"amd64",
|
|
"arm64"
|
|
],
|
|
"launch": {
|
|
"scheme": "http",
|
|
"port": 8200,
|
|
"path": "/"
|
|
},
|
|
"website": "https://www.duplicati.com/",
|
|
"documentation": "https://docs.linuxserver.io/images/docker-duplicati/",
|
|
"repository": "https://github.com/linuxserver/docker-duplicati",
|
|
"tips": [],
|
|
"mini_changelog": [
|
|
{
|
|
"date": "2026-09-03",
|
|
"note": "Make sure /config is only accessible by the PUID user."
|
|
},
|
|
{
|
|
"date": "2025-01-31",
|
|
"note": "Make `latest` stable releases, move beta releases to `development`."
|
|
},
|
|
{
|
|
"date": "2025-01-28",
|
|
"note": "Add xz-utils."
|
|
},
|
|
{
|
|
"date": "2024-12-03",
|
|
"note": "Add mscorefonts for captcha support."
|
|
},
|
|
{
|
|
"date": "2024-11-29",
|
|
"note": "Rebase to Noble, add support for settings DB encryption."
|
|
}
|
|
],
|
|
"display_version": null,
|
|
"updated_at": "2026-09-03"
|
|
},
|
|
"source": {
|
|
"provider": "linuxserver.io",
|
|
"repository": "https://github.com/linuxserver/docker-duplicati",
|
|
"default_branch": "master",
|
|
"revision": "63a71b5a130e008f9bf20df18820f6bee1b771f3",
|
|
"readme_raw_url": "https://raw.githubusercontent.com/linuxserver/docker-duplicati/63a71b5a130e008f9bf20df18820f6bee1b771f3/README.md",
|
|
"readme_pushed_at": "2026-09-12T08:31:37Z",
|
|
"compose_sha256": "5f149ca1dc249caeec8903c4d9f08c5632ff52e1ec28cee05259a431f830cbaa",
|
|
"generated_at": "2026-09-13T14:38:33+00:00"
|
|
},
|
|
"container_contract": {
|
|
"service_name": "duplicati",
|
|
"container_name": "duplicati",
|
|
"image": {
|
|
"reference": "lscr.io/linuxserver/duplicati:latest",
|
|
"registry": "lscr.io",
|
|
"repository": "lscr.io/linuxserver/duplicati",
|
|
"tag": "latest",
|
|
"digest": null,
|
|
"pull_policy": "resolve-selected-tag-to-architecture-digest-at-install"
|
|
},
|
|
"environment": [
|
|
{
|
|
"name": "PUID",
|
|
"example": "1000",
|
|
"required": true,
|
|
"sensitive": false,
|
|
"source": "linuxserver-compose"
|
|
},
|
|
{
|
|
"name": "PGID",
|
|
"example": "1000",
|
|
"required": true,
|
|
"sensitive": false,
|
|
"source": "linuxserver-compose"
|
|
},
|
|
{
|
|
"name": "TZ",
|
|
"example": "Etc/UTC",
|
|
"required": true,
|
|
"sensitive": false,
|
|
"source": "linuxserver-compose"
|
|
},
|
|
{
|
|
"name": "SETTINGS_ENCRYPTION_KEY",
|
|
"example": "",
|
|
"required": true,
|
|
"sensitive": true,
|
|
"source": "linuxserver-compose"
|
|
},
|
|
{
|
|
"name": "CLI_ARGS",
|
|
"example": "",
|
|
"required": false,
|
|
"sensitive": false,
|
|
"source": "linuxserver-compose"
|
|
},
|
|
{
|
|
"name": "DUPLICATI__WEBSERVICE_PASSWORD",
|
|
"example": "",
|
|
"required": false,
|
|
"sensitive": true,
|
|
"source": "linuxserver-compose"
|
|
}
|
|
],
|
|
"volumes": [
|
|
{
|
|
"id": "volume-0",
|
|
"container_path": "/config",
|
|
"compose_source_example": "/path/to/duplicati/config",
|
|
"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": "/backups",
|
|
"compose_source_example": "/path/to/backups",
|
|
"read_only": false,
|
|
"required": true,
|
|
"installation_choice": [
|
|
"managed-volume",
|
|
"host-bind"
|
|
],
|
|
"default": "managed-volume",
|
|
"managed_volume": {
|
|
"backup": true,
|
|
"default_size_gb": 8
|
|
}
|
|
},
|
|
{
|
|
"id": "volume-2",
|
|
"container_path": "/source",
|
|
"compose_source_example": "/path/to/source",
|
|
"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": 8200,
|
|
"published_example": 8200,
|
|
"protocol": "tcp",
|
|
"required": true,
|
|
"proxmox_behavior": "listener-on-dedicated-lxc-address-no-nat"
|
|
}
|
|
],
|
|
"related_services": [],
|
|
"restart": "unless-stopped",
|
|
"stop_grace_period": null,
|
|
"original_compose": "---\nservices:\n duplicati:\n image: lscr.io/linuxserver/duplicati:latest\n container_name: duplicati\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - SETTINGS_ENCRYPTION_KEY=\n - CLI_ARGS= #optional\n - DUPLICATI__WEBSERVICE_PASSWORD= #optional\n volumes:\n - /path/to/duplicati/config:/config\n - /path/to/backups:/backups\n - /path/to/source:/source\n ports:\n - 8200:8200\n restart: unless-stopped\n"
|
|
},
|
|
"first_run": {
|
|
"endpoints": [
|
|
{
|
|
"label": "Web UI",
|
|
"scheme": "http",
|
|
"port": 8200,
|
|
"path": "/",
|
|
"source": "compose-first-tcp-port-fallback"
|
|
}
|
|
],
|
|
"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": 30
|
|
},
|
|
"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": {
|
|
"SETTINGS_ENCRYPTION_KEY": {
|
|
"strategy": "token-hex",
|
|
"bytes": 16,
|
|
"prompt": false
|
|
}
|
|
}
|
|
},
|
|
"adaptations": [
|
|
{
|
|
"id": "dedicated-lxc-network",
|
|
"upstream_behavior": "Docker publishes selected container ports on the Docker host.",
|
|
"native_lxc_behavior": "The application listens on the same container ports at its dedicated LXC address.",
|
|
"reason": "A native LXC has its own address and does not require Docker port NAT.",
|
|
"behavioral_impact": "Users open the LXC address instead of the Proxmox host address.",
|
|
"validation": "pending-per-application"
|
|
},
|
|
{
|
|
"id": "compose-environment-overlay",
|
|
"upstream_behavior": "Compose environment values override OCI image environment values.",
|
|
"native_lxc_behavior": "ProxMenux merges the same values into lxc.environment.runtime while the CT is stopped.",
|
|
"reason": "PVE imports image Env automatically; Compose values still need to override it.",
|
|
"behavioral_impact": "None expected.",
|
|
"validation": "pending-per-application"
|
|
},
|
|
{
|
|
"id": "stop-grace-period",
|
|
"upstream_behavior": "Docker waits for Compose stop_grace_period before forcing termination.",
|
|
"native_lxc_behavior": "ProxMenux records the same timeout for its pct shutdown lifecycle operations.",
|
|
"reason": "Proxmox has no equivalent per-CT persistent restart-policy field; startup.down is not a shutdown timeout.",
|
|
"behavioral_impact": "Normal Proxmox node shutdown remains governed by the node-wide shutdown policy.",
|
|
"validation": "not-requested-by-compose"
|
|
},
|
|
{
|
|
"id": "compose-shm-size",
|
|
"upstream_behavior": "Compose sets the size of the container /dev/shm tmpfs.",
|
|
"native_lxc_behavior": "ProxMenux mounts a native LXC tmpfs at /dev/shm with the same requested capacity.",
|
|
"reason": "The OCI image runs directly as an LXC and therefore needs the equivalent Proxmox mount entry.",
|
|
"behavioral_impact": "None expected.",
|
|
"validation": "not-requested-by-compose"
|
|
},
|
|
{
|
|
"id": "compose-command",
|
|
"upstream_behavior": "Compose replaces the image Cmd while retaining its Entrypoint.",
|
|
"native_lxc_behavior": "ProxMenux reads the official OCI Entrypoint and combines it with the Compose command as the native LXC init command.",
|
|
"reason": "Proxmox stores the effective OCI process as one entrypoint string.",
|
|
"behavioral_impact": "None expected.",
|
|
"validation": "not-requested-by-compose"
|
|
}
|
|
]
|
|
},
|
|
"compatibility": {
|
|
"automatic_install_candidate": true,
|
|
"validated": false,
|
|
"supported_compose_keys": [
|
|
"command",
|
|
"container_name",
|
|
"environment",
|
|
"image",
|
|
"ports",
|
|
"restart",
|
|
"shm_size",
|
|
"stop_grace_period",
|
|
"volumes"
|
|
],
|
|
"untranslated_blockers": [],
|
|
"policy": "A generated template is never promoted to validated without install, health, restart and persistence tests."
|
|
},
|
|
"validation": {
|
|
"schema": "passed-at-generation",
|
|
"clean_install": "passed-amd64",
|
|
"service_health": "passed-amd64",
|
|
"restart_persistence": "pending",
|
|
"backup_restore": "pending",
|
|
"update_preserves_data": "pending"
|
|
},
|
|
"lifecycle": {
|
|
"update_strategy": "replace-rootfs-from-new-oci-image-preserve-managed-volumes",
|
|
"registry_state": {
|
|
"resolved_architecture": null,
|
|
"resolved_digest": null,
|
|
"image_version_label": null,
|
|
"image_created": null
|
|
},
|
|
"change_detection": "compare-resolved-architecture-digest",
|
|
"automatic_unattended_updates": false
|
|
}
|
|
}
|