From 7d302816cdb382160aabfe3b2296a1cf565b9bba Mon Sep 17 00:00:00 2001
From: Rohit Mulani <289630555+rohitmulani63-ops@users.noreply.github.com>
Date: Mon, 22 Jun 2026 14:19:35 +0400
Subject: [PATCH 1/4] feat: add FileRun template
---
blueprints/filerun/docker-compose.yml | 35 +++++++++++++++++++++++++++
blueprints/filerun/filerun.svg | 7 ++++++
blueprints/filerun/template.toml | 19 +++++++++++++++
meta.json | 17 +++++++++++++
4 files changed, 78 insertions(+)
create mode 100644 blueprints/filerun/docker-compose.yml
create mode 100644 blueprints/filerun/filerun.svg
create mode 100644 blueprints/filerun/template.toml
diff --git a/blueprints/filerun/docker-compose.yml b/blueprints/filerun/docker-compose.yml
new file mode 100644
index 00000000..0f1d3646
--- /dev/null
+++ b/blueprints/filerun/docker-compose.yml
@@ -0,0 +1,35 @@
+version: "3.8"
+
+services:
+ filerun:
+ image: filerun/filerun:latest
+ restart: unless-stopped
+ user: "1001:1001"
+ depends_on:
+ - db
+ environment:
+ FR_DB_HOST: db
+ FR_DB_PORT: 3306
+ FR_DB_NAME: ${MYSQL_DATABASE}
+ FR_DB_USER: ${MYSQL_USER}
+ FR_DB_PASS: ${MYSQL_PASSWORD}
+ volumes:
+ - filerun-html:/var/www/html
+ - filerun-user-files:/user-files
+
+ db:
+ image: mariadb:12.2
+ restart: unless-stopped
+ environment:
+ MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD}
+ MYSQL_USER: ${MYSQL_USER}
+ MYSQL_PASSWORD: ${MYSQL_PASSWORD}
+ MYSQL_DATABASE: ${MYSQL_DATABASE}
+ MARIADB_AUTO_UPGRADE: "1"
+ volumes:
+ - filerun-db:/var/lib/mysql
+
+volumes:
+ filerun-html:
+ filerun-user-files:
+ filerun-db:
diff --git a/blueprints/filerun/filerun.svg b/blueprints/filerun/filerun.svg
new file mode 100644
index 00000000..7825769e
--- /dev/null
+++ b/blueprints/filerun/filerun.svg
@@ -0,0 +1,7 @@
+
diff --git a/blueprints/filerun/template.toml b/blueprints/filerun/template.toml
new file mode 100644
index 00000000..6edf05ac
--- /dev/null
+++ b/blueprints/filerun/template.toml
@@ -0,0 +1,19 @@
+[variables]
+main_domain = "${domain}"
+mysql_user = "filerun"
+mysql_database = "filerun"
+mysql_password = "${password:32}"
+mariadb_root_password = "${password:32}"
+
+[config]
+env = [
+ "MYSQL_USER=${mysql_user}",
+ "MYSQL_DATABASE=${mysql_database}",
+ "MYSQL_PASSWORD=${mysql_password}",
+ "MARIADB_ROOT_PASSWORD=${mariadb_root_password}",
+]
+
+[[config.domains]]
+serviceName = "filerun"
+port = 80
+host = "${main_domain}"
diff --git a/meta.json b/meta.json
index 8be7825d..7e519d05 100644
--- a/meta.json
+++ b/meta.json
@@ -2292,6 +2292,23 @@
"storage"
]
},
+ {
+ "id": "filerun",
+ "name": "FileRun",
+ "version": "latest",
+ "description": "FileRun is a self-hosted file manager and file sharing platform.",
+ "logo": "filerun.svg",
+ "links": {
+ "website": "https://filerun.com/",
+ "docs": "https://docs.filerun.com/docker",
+ "github": "https://github.com/filerun/docker"
+ },
+ "tags": [
+ "file-manager",
+ "file-sharing",
+ "storage"
+ ]
+ },
{
"id": "filestash",
"name": "Filestash",
From a185fe862558146ff2fab98e221cafb35b9ef80a Mon Sep 17 00:00:00 2001
From: Rohit Mulani <289630555+rohitmulani63-ops@users.noreply.github.com>
Date: Mon, 22 Jun 2026 14:19:54 +0400
Subject: [PATCH 2/4] fix: remove FileRun template BOM
---
blueprints/filerun/template.toml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/blueprints/filerun/template.toml b/blueprints/filerun/template.toml
index 6edf05ac..b9b2b8bf 100644
--- a/blueprints/filerun/template.toml
+++ b/blueprints/filerun/template.toml
@@ -1,4 +1,4 @@
-[variables]
+[variables]
main_domain = "${domain}"
mysql_user = "filerun"
mysql_database = "filerun"
@@ -16,4 +16,4 @@ env = [
[[config.domains]]
serviceName = "filerun"
port = 80
-host = "${main_domain}"
+host = "${main_domain}"
\ No newline at end of file
From dabe8466acf6f0efdbe3ef8c70fae9957d53d3ab Mon Sep 17 00:00:00 2001
From: Rohit Mulani <289630555+rohitmulani63-ops@users.noreply.github.com>
Date: Tue, 7 Jul 2026 23:38:00 +0400
Subject: [PATCH 3/4] Align FileRun compose with upstream runtime settings
---
blueprints/filerun/docker-compose.yml | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/blueprints/filerun/docker-compose.yml b/blueprints/filerun/docker-compose.yml
index 0f1d3646..78b164f3 100644
--- a/blueprints/filerun/docker-compose.yml
+++ b/blueprints/filerun/docker-compose.yml
@@ -4,9 +4,11 @@ services:
filerun:
image: filerun/filerun:latest
restart: unless-stopped
- user: "1001:1001"
+ user: "99:100"
depends_on:
- db
+ links:
+ - db:db
environment:
FR_DB_HOST: db
FR_DB_PORT: 3306
@@ -20,6 +22,7 @@ services:
db:
image: mariadb:12.2
restart: unless-stopped
+ command: --old-mode=NO_PROGRESS_INFO
environment:
MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD}
MYSQL_USER: ${MYSQL_USER}
From 88fae2f9ccf1ee3cff86404f5bf23554eb4161fb Mon Sep 17 00:00:00 2001
From: Mauricio Siu
Date: Wed, 8 Jul 2026 01:00:34 -0600
Subject: [PATCH 4/4] fix: chown named volumes so the non-root filerun user can
install on first run
The filerun/filerun image runs as user filerun (1001:1001), but /var/www/html
is created as root in the image, so the named volume inherits root:root
ownership. The entrypoint's first-run installer then fails to download
filerun.zip into /var/www/html (Permission denied) and the container
crash-loops with exit 1.
- Add a busybox init service that chowns the html and user-files volumes to
1001:1001 before filerun starts (gated via service_completed_successfully).
- Drop the user: "99:100" override, which is meant for pre-chowned host bind
mounts in the upstream example, not named volumes.
- Remove the UTF-8 BOM at the start of the file, the legacy links: entry and
the obsolete version: key.
Verified on a live Dokploy deploy: HTTP 200 with page title
"FileRun :: Installation".
Co-Authored-By: Claude Fable 5
---
blueprints/filerun/docker-compose.yml | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/blueprints/filerun/docker-compose.yml b/blueprints/filerun/docker-compose.yml
index 78b164f3..eb39e695 100644
--- a/blueprints/filerun/docker-compose.yml
+++ b/blueprints/filerun/docker-compose.yml
@@ -1,14 +1,20 @@
-version: "3.8"
-
services:
+ filerun-init:
+ image: busybox:1.37
+ restart: "no"
+ command: chown -R 1001:1001 /var/www/html /user-files
+ volumes:
+ - filerun-html:/var/www/html
+ - filerun-user-files:/user-files
+
filerun:
image: filerun/filerun:latest
restart: unless-stopped
- user: "99:100"
depends_on:
- - db
- links:
- - db:db
+ filerun-init:
+ condition: service_completed_successfully
+ db:
+ condition: service_started
environment:
FR_DB_HOST: db
FR_DB_PORT: 3306