2026-09-22 18:24:59 +02:00
{
"schema_version" : "0.3.0" ,
"kind" : "proxmenux.oci-template" ,
"id" : "linuxserver-bookstack" ,
"status" : "generated-unvalidated" ,
"catalog_ui" : {
"title" : {
"en_US" : "Bookstack"
},
"tagline" : {
"en_US" : "Bookstack is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease."
},
"description" : {
"en_US" : "Bookstack is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease."
},
"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/bookstack.webp" ,
2026-09-22 18:24:59 +02:00
"thumbnail" : "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/bookstack-banner.png" ,
"screenshots" : [],
"architectures" : [
"amd64" ,
"arm64"
],
"launch" : {
"scheme" : "http" ,
"port" : 80 ,
"path" : "/"
},
"website" : "https://codeberg.org/bookstack/bookstack" ,
"documentation" : "https://docs.linuxserver.io/images/docker-bookstack/" ,
"repository" : "https://github.com/linuxserver/docker-bookstack" ,
"tips" : [],
"mini_changelog" : [
{
"date" : "2026-08-05" ,
"note" : "Run the async queue worker as the PUID/PGID-managed abc user."
},
{
"date" : "2026-07-05" ,
"note" : "Rebase to Alpine 3.24."
},
{
"date" : "2026-04-29" ,
"note" : "Switch to pulling releases from [Codeberg](https://codeberg.org/bookstack/bookstack)."
},
{
"date" : "2025-12-28" ,
"note" : "Rebase to Alpine 3.23."
},
{
"date" : "2025-07-05" ,
"note" : "Rebase to Alpine 3.22."
}
],
"display_version" : null ,
"updated_at" : "2026-08-05"
},
"source" : {
"provider" : "linuxserver.io" ,
"repository" : "https://github.com/linuxserver/docker-bookstack" ,
"default_branch" : "master" ,
"revision" : "b36da9cac7b506f71fa1acc55528d6923db5b471" ,
"readme_raw_url" : "https://raw.githubusercontent.com/linuxserver/docker-bookstack/b36da9cac7b506f71fa1acc55528d6923db5b471/README.md" ,
"readme_pushed_at" : "2026-09-07T21:32:19Z" ,
"compose_sha256" : "b0be2e3cba70b0ef414aeb81040f3bfbf970eaac0a8458103ab93c1859162498" ,
"generated_at" : "2026-09-12T14:37:23+00:00"
},
"container_contract" : {
"service_name" : "bookstack" ,
"container_name" : "bookstack" ,
"image" : {
"reference" : "lscr.io/linuxserver/bookstack:latest" ,
"registry" : "lscr.io" ,
"repository" : "lscr.io/linuxserver/bookstack" ,
"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" : "APP_URL" ,
"example" : "" ,
"required" : true ,
"sensitive" : false ,
"source" : "linuxserver-compose"
},
{
"name" : "APP_KEY" ,
"example" : "" ,
"required" : true ,
"sensitive" : false ,
"source" : "linuxserver-compose"
},
{
"name" : "DB_HOST" ,
"example" : "" ,
"required" : true ,
"sensitive" : false ,
"source" : "linuxserver-compose"
},
{
"name" : "DB_PORT" ,
"example" : "3306" ,
"required" : true ,
"sensitive" : false ,
"source" : "linuxserver-compose"
},
{
"name" : "DB_USERNAME" ,
"example" : "" ,
"required" : true ,
"sensitive" : false ,
"source" : "linuxserver-compose"
},
{
"name" : "DB_PASSWORD" ,
"example" : "" ,
"required" : true ,
"sensitive" : true ,
"source" : "linuxserver-compose"
},
{
"name" : "DB_DATABASE" ,
"example" : "" ,
"required" : true ,
"sensitive" : false ,
"source" : "linuxserver-compose"
},
{
"name" : "QUEUE_CONNECTION" ,
"example" : "" ,
"required" : false ,
"sensitive" : false ,
"source" : "linuxserver-compose"
}
],
"volumes" : [
{
"id" : "volume-0" ,
"container_path" : "/config" ,
"compose_source_example" : "/path/to/bookstack/config" ,
"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" : 80 ,
"published_example" : 6875 ,
"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 bookstack:\n image: lscr.io/linuxserver/bookstack:latest\n container_name: bookstack\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - APP_URL=\n - APP_KEY=\n - DB_HOST=\n - DB_PORT=3306\n - DB_USERNAME=\n - DB_PASSWORD=\n - DB_DATABASE=\n - QUEUE_CONNECTION= #optional\n volumes:\n - /path/to/bookstack/config:/config\n ports:\n - 6875: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
}
}