From 37ae3a06decbec07daefbfc20622d1678ee376a1 Mon Sep 17 00:00:00 2001 From: alexz Date: Mon, 9 Mar 2026 18:09:37 +0000 Subject: [PATCH] Add nas-samba app --- apps/nas-samba/config.json | 46 ++++++++++++++++++++++++++ apps/nas-samba/docker-compose.json | 50 +++++++++++++++++++++++++++++ apps/nas-samba/metadata/logo.jpg | Bin 0 -> 23829 bytes 3 files changed, 96 insertions(+) create mode 100644 apps/nas-samba/config.json create mode 100644 apps/nas-samba/docker-compose.json create mode 100644 apps/nas-samba/metadata/logo.jpg diff --git a/apps/nas-samba/config.json b/apps/nas-samba/config.json new file mode 100644 index 0000000..18ea517 --- /dev/null +++ b/apps/nas-samba/config.json @@ -0,0 +1,46 @@ +{ + "$schema": "../app-info-schema.json", + "name": "NAS Samba", + "id": "nas-samba", + "available": true, + "exposable": false, + "dynamic_config": true, + "no_gui": true, + "tipi_version": 1, + "version": "latest", + "categories": ["network", "utilities"], + "description": "Samba SMB/CIFS file share for the /nas drive. Connect at \\\\192.168.0.15\\data with username alexz.", + "short_desc": "SMB file share for the NAS drive", + "author": "servercontainers", + "source": "https://github.com/ServerContainers/samba", + "form_fields": [ + { + "type": "password", + "label": "SMB Password", + "env_variable": "SMB_PASSWORD", + "required": true, + "hint": "Password for user alexz" + }, + { + "type": "text", + "label": "NAS Host Path", + "env_variable": "NAS_PATH", + "required": true, + "default": "/nas", + "hint": "Host path to share via SMB" + }, + { + "type": "text", + "label": "Bind IP", + "env_variable": "BIND_IP", + "required": true, + "default": "192.168.0.15", + "hint": "IP address to bind SMB ports to" + } + ], + "supported_architectures": ["arm64", "amd64"], + "created_at": 1741536000000, + "updated_at": 1741536000000, + "deprecated": false, + "min_tipi_version": "4.5.0" +} diff --git a/apps/nas-samba/docker-compose.json b/apps/nas-samba/docker-compose.json new file mode 100644 index 0000000..3cb3e91 --- /dev/null +++ b/apps/nas-samba/docker-compose.json @@ -0,0 +1,50 @@ +{ + "schemaVersion": 2, + "$schema": "https://schemas.runtipi.io/dynamic-compose.json", + "services": [ + { + "name": "nas-samba", + "image": "servercontainers/samba:latest", + "isMain": true, + "hostname": "nas", + "addPorts": [ + { + "hostPort": 445, + "containerPort": 445, + "protocol": "tcp", + "hostIp": "${BIND_IP:-192.168.0.15}" + }, + { + "hostPort": 139, + "containerPort": 139, + "protocol": "tcp", + "hostIp": "${BIND_IP:-192.168.0.15}" + } + ], + "volumes": [ + { + "hostPath": "${NAS_PATH:-/nas}", + "containerPath": "/nas" + } + ], + "environment": [ + { + "key": "ACCOUNT_alexz", + "value": "${SMB_PASSWORD}" + }, + { + "key": "UID_alexz", + "value": "1000" + }, + { + "key": "GROUP_alexz", + "value": "users" + }, + { + "key": "SAMBA_VOLUME_CONFIG_data", + "value": "[data]; path=/nas; valid users=alexz; browsable=yes; writable=yes; create mask=0664; directory mask=0775" + } + ] + } + ] +} diff --git a/apps/nas-samba/metadata/logo.jpg b/apps/nas-samba/metadata/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7e70ebaf417d2ed65be38a4ba613b48df596ffec GIT binary patch literal 23829 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 literal 0 HcmV?d00001