2026-09-22 18:24:59 +02:00
{
"schema_version" : "0.3.0" ,
"kind" : "proxmenux.oci-template" ,
"id" : "linuxserver-projectsend" ,
"status" : "generated-unvalidated" ,
"catalog_ui" : {
"title" : {
"en_US" : "Projectsend"
},
"tagline" : {
"en_US" : "Projectsend is a self-hosted application that lets you upload files and assign them to specific clients that you create yourself. Secure, private and easy. No more depending on external services or e-mail to send those files."
},
"description" : {
"en_US" : "Projectsend is a self-hosted application that lets you upload files and assign them to specific clients that you create yourself. Secure, private and easy. No more depending on external services or e-mail to send those files."
},
"category" : "documents" ,
"category_label" : "Documents & Notes" ,
"author" : "LinuxServer.io" ,
"developer" : null ,
2026-09-25 21:51:12 +02:00
"icon" : "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/projectsend.webp" ,
2026-09-22 18:24:59 +02:00
"thumbnail" : "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/projectsend-banner.png" ,
"screenshots" : [],
"architectures" : [
"amd64" ,
"arm64"
],
"launch" : {
"scheme" : "http" ,
"port" : 80 ,
"path" : "/"
},
"website" : "http://www.projectsend.org" ,
"documentation" : "https://docs.linuxserver.io/images/docker-projectsend/" ,
"repository" : "https://github.com/linuxserver/docker-projectsend" ,
"tips" : [],
"mini_changelog" : [
{
"date" : "2026-08-10" ,
"note" : "Switch to legacy repo until migration steps are figured out."
},
{
"date" : "2025-12-14" ,
"note" : "Add php ldap module."
},
{
"date" : "2025-11-16" ,
"note" : "Add missing language files to default install."
},
{
"date" : "2025-10-14" ,
"note" : "Rebase to 3.22."
},
{
"date" : "2025-06-06" ,
"note" : "Add crontab handler for scheduled tasks."
}
],
"display_version" : null ,
"updated_at" : "2026-08-10"
},
"source" : {
"provider" : "linuxserver.io" ,
"repository" : "https://github.com/linuxserver/docker-projectsend" ,
"default_branch" : "master" ,
"revision" : "a55c01acfea91d9f0155d828e46aff3ec2b34263" ,
"readme_raw_url" : "https://raw.githubusercontent.com/linuxserver/docker-projectsend/a55c01acfea91d9f0155d828e46aff3ec2b34263/README.md" ,
"readme_pushed_at" : "2026-09-07T23:43:11Z" ,
"compose_sha256" : "e967c0d7e36573b730add5b0eeaba62ccdbf795a037b2fe4f4a9aa7677345042" ,
"generated_at" : "2026-09-12T14:37:34+00:00"
},
"container_contract" : {
"service_name" : "projectsend" ,
"container_name" : "projectsend" ,
"image" : {
"reference" : "lscr.io/linuxserver/projectsend:latest" ,
"registry" : "lscr.io" ,
"repository" : "lscr.io/linuxserver/projectsend" ,
"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"
}
],
"volumes" : [
{
"id" : "volume-0" ,
"container_path" : "/config" ,
"compose_source_example" : "/path/to/projectsend/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" : "/data" ,
"compose_source_example" : "/path/to/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" : 80 ,
"published_example" : 80 ,
"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 projectsend:\n image: lscr.io/linuxserver/projectsend:latest\n container_name: projectsend\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/projectsend/config:/config\n - /path/to/data:/data\n ports:\n - 80:80\n restart: unless-stopped\n"
},
"first_run" : {
"endpoints" : [
{
"label" : "Web UI" ,
"scheme" : "http" ,
"port" : 80 ,
"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"
},
"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"
}
]
},
"compatibility" : {
"automatic_install_candidate" : true ,
"validated" : false ,
"supported_compose_keys" : [
"container_name" ,
"environment" ,
"image" ,
"ports" ,
"restart" ,
"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" : "pending" ,
"service_health" : "pending" ,
"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
}
}