Restic REST Server

Get Started with Apps!
Keywords: backup, restic
Train: Community
Home Page: https://github.com/restic/rest-server
Added: 2025-08-22
Last Updated: 2025-08-25
Rest Server is a high performance HTTP server that implements restic's REST backend API.
Run as Context- Restic rest-server runs as any non-root user.
Group: 568 / rest-server
User: 568 / rest-server
App Metadata (Raw File)
{
"1.0.0": {
"healthy": true,
"supported": true,
"healthy_error": null,
"location": "/__w/apps/apps/trains/community/restic-rest-server/1.0.0",
"last_update": "2025-08-25 13:40:43",
"required_features": [],
"human_version": "0.14.0_1.0.0",
"version": "1.0.0",
"app_metadata": {
"app_version": "0.14.0",
"capabilities": [],
"categories": [
"backup"
],
"changelog_url": "https://github.com/restic/restic-rest-server/releases",
"date_added": "2025-08-22",
"description": "Rest Server is a high performance HTTP server that implements restic's REST backend API.",
"home": "https://github.com/restic/rest-server",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/restic-rest-server/icons/icon.png",
"keywords": [
"backup",
"restic"
],
"lib_version": "2.1.48",
"lib_version_hash": "8f7fee2e0e2eb5755e29a0d74cf22e5b0b19aff15d083e3b061b5f6075d4c849",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "restic-rest-server",
"run_as_context": [
{
"description": "Restic rest-server runs as any non-root user.",
"gid": 568,
"group_name": "rest-server",
"uid": 568,
"user_name": "rest-server"
}
],
"screenshots": [],
"sources": [
"https://github.com/restic/rest-server",
"https://hub.docker.com/r/restic/rest-server"
],
"title": "Restic REST Server",
"train": "community",
"version": "1.0.0"
},
"schema": {
"groups": [
{
"name": "Restic REST Server Configuration",
"description": "Configure Restic REST Server"
},
{
"name": "User and Group Configuration",
"description": "Configure User and Group for Restic REST Server"
},
{
"name": "Network Configuration",
"description": "Configure Network for Restic REST Server"
},
{
"name": "Storage Configuration",
"description": "Configure Storage for Restic REST Server"
},
{
"name": "Labels Configuration",
"description": "Configure Labels for Restic REST Server"
},
{
"name": "Resources Configuration",
"description": "Configure Resources for Restic REST Server"
}
],
"questions": [
{
"variable": "TZ",
"group": "Restic REST Server Configuration",
"label": "Timezone",
"schema": {
"type": "string",
"default": "Etc/UTC",
"required": true,
"$ref": [
"definitions/timezone"
]
}
},
{
"variable": "rest_server",
"label": "",
"group": "Restic REST Server Configuration",
"schema": {
"type": "dict",
"immutable": false,
"default": {},
"attrs": [
{
"variable": "append_only",
"label": "Append Only",
"group": "Restic REST Server Configuration",
"description": "Enable append-only mode. In this mode, no existing snapshots can be deleted or modified.\n",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "group_accessible_repos",
"label": "Group Accessible Repositories",
"group": "Restic REST Server Configuration",
"description": "Enable group accessible repositories. In this mode, repositories can be accessed by users in the same group.\n",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "private_repos",
"label": "Private Repositories",
"group": "Restic REST Server Configuration",
"description": "Enable private repositories. In this mode, repositories can only be accessed by authenticated users.\n",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "no_auth",
"label": "No Authentication",
"group": "Restic REST Server Configuration",
"description": "Disable authentication. In this mode, no authentication is required to access the repositories.\n",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "proxy_auth_username",
"label": "Proxy Authentication Username",
"group": "Restic REST Server Configuration",
"description": "Specifies the HTTP header containing the username for proxy-based authentication\n",
"schema": {
"type": "string",
"show_if": [
[
"no_auth",
"=",
false
]
],
"default": ""
}
},
{
"variable": "users",
"label": "Basic Auth Users",
"description": "The list of basic auth users.",
"schema": {
"type": "list",
"show_if": [
[
"no_auth",
"=",
false
]
],
"default": [],
"items": [
{
"variable": "user_entry",
"label": "User Entry",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "username",
"label": "Username",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "password",
"label": "Password",
"schema": {
"type": "string",
"required": true,
"private": true
}
}
]
}
}
]
}
},
{
"variable": "extra_options",
"label": "Extra Options",
"group": "Restic REST Server Configuration",
"description": "Additional options to pass to the Restic REST Server.\nExample: --some-option=value\n",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "option",
"label": "Option",
"schema": {
"type": "string",
"required": true
}
}
]
}
},
{
"variable": "additional_envs",
"label": "Additional Environment Variables",
"description": "Configure additional environment variables for Restic REST Server.",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "env",
"label": "Environment Variable",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "name",
"label": "Name",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "value",
"label": "Value",
"schema": {
"type": "string"
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "run_as",
"label": "",
"group": "User and Group Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "user",
"label": "User ID",
"description": "The user id that Restic REST Server files will be owned by.",
"schema": {
"type": "int",
"min": 568,
"default": 568,
"required": true
}
},
{
"variable": "group",
"label": "Group ID",
"description": "The group id that Restic REST Server files will be owned by.",
"schema": {
"type": "int",
"min": 568,
"default": 568,
"required": true
}
}
]
}
},
{
"variable": "network",
"label": "",
"group": "Network Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "web_port",
"label": "WebUI Port",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "bind_mode",
"label": "Port Bind Mode",
"description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
"schema": {
"type": "string",
"default": "published",
"enum": [
{
"value": "published",
"description": "Publish port on the host for external access"
},
{
"value": "exposed",
"description": "Expose port for inter-container communication"
},
{
"value": "",
"description": "None"
}
]
}
},
{
"variable": "port_number",
"label": "Port Number",
"schema": {
"type": "int",
"default": 30248,
"min": 1,
"max": 65535,
"required": true
}
},
{
"variable": "host_ips",
"label": "Host IPs",
"description": "IPs on the host to bind this port",
"schema": {
"type": "list",
"show_if": [
[
"bind_mode",
"=",
"published"
]
],
"default": [],
"items": [
{
"variable": "host_ip",
"label": "Host IP",
"schema": {
"type": "string",
"required": true,
"$ref": [
"definitions/node_bind_ip"
]
}
}
]
}
}
]
}
},
{
"variable": "host_network",
"label": "Host Network",
"description": "Bind to the host network. It's recommended to keep this disabled.\n",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "certificate_id",
"label": "Certificate",
"description": "The certificate to use for Restic REST Servers.",
"schema": {
"type": "int",
"null": true,
"$ref": [
"definitions/certificate"
]
}
}
]
}
},
{
"variable": "storage",
"label": "",
"group": "Storage Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "data",
"label": "Data Storage",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "type",
"label": "Type",
"description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"default": "ix_volume",
"enum": [
{
"value": "host_path",
"description": "Host Path (Path that already exists on the system)"
},
{
"value": "ix_volume",
"description": "ixVolume (Dataset created automatically by the system)"
}
]
}
},
{
"variable": "ix_volume_config",
"label": "ixVolume Configuration",
"description": "The configuration for the ixVolume dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"ix_volume"
]
],
"$ref": [
"normalize/ix_volume"
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "dataset_name",
"label": "Dataset Name",
"description": "The name of the dataset to use for storage.",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"hidden": true,
"default": "data"
}
},
{
"variable": "acl_entries",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": []
}
}
]
}
},
{
"variable": "host_path_config",
"label": "Host Path Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"host_path"
]
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "acl",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": [],
"$ref": [
"normalize/acl"
]
}
},
{
"variable": "path",
"label": "Host Path",
"description": "The host path to use for storage.",
"schema": {
"type": "hostpath",
"show_if": [
[
"acl_enable",
"=",
false
]
],
"required": true
}
}
]
}
}
]
}
},
{
"variable": "additional_storage",
"label": "Additional Storage",
"description": "Additional storage for Distribution.",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "storageEntry",
"label": "Storage Entry",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "type",
"label": "Type",
"description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.</br>\n",
"schema": {
"type": "string",
"required": true,
"default": "ix_volume",
"immutable": true,
"enum": [
{
"value": "host_path",
"description": "Host Path (Path that already exists on the system)"
},
{
"value": "ix_volume",
"description": "ixVolume (Dataset created automatically by the system)"
}
]
}
},
{
"variable": "read_only",
"label": "Read Only",
"description": "Mount the volume as read only.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "mount_path",
"label": "Mount Path",
"description": "The path inside the container to mount the storage.",
"schema": {
"type": "path",
"required": true
}
},
{
"variable": "host_path_config",
"label": "Host Path Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"host_path"
]
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "acl",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": [],
"$ref": [
"normalize/acl"
]
}
},
{
"variable": "path",
"label": "Host Path",
"description": "The host path to use for storage.",
"schema": {
"type": "hostpath",
"show_if": [
[
"acl_enable",
"=",
false
]
],
"required": true
}
}
]
}
},
{
"variable": "ix_volume_config",
"label": "ixVolume Configuration",
"description": "The configuration for the ixVolume dataset.",
"schema": {
"type": "dict",
"show_if": [
[
"type",
"=",
"ix_volume"
]
],
"$ref": [
"normalize/ix_volume"
],
"attrs": [
{
"variable": "acl_enable",
"label": "Enable ACL",
"description": "Enable ACL for the storage.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"variable": "dataset_name",
"label": "Dataset Name",
"description": "The name of the dataset to use for storage.",
"schema": {
"type": "string",
"required": true,
"immutable": true,
"default": "storage_entry"
}
},
{
"variable": "acl_entries",
"label": "ACL Configuration",
"schema": {
"type": "dict",
"show_if": [
[
"acl_enable",
"=",
true
]
],
"attrs": []
}
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "labels",
"label": "",
"group": "Labels Configuration",
"schema": {
"type": "list",
"default": [],
"items": [
{
"variable": "label",
"label": "Label",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "key",
"label": "Key",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "value",
"label": "Value",
"schema": {
"type": "string",
"required": true
}
},
{
"variable": "containers",
"label": "Containers",
"description": "Containers where the label should be applied",
"schema": {
"type": "list",
"items": [
{
"variable": "container",
"label": "Container",
"schema": {
"type": "string",
"required": true,
"enum": [
{
"value": "restic-server",
"description": "restic-server"
}
]
}
}
]
}
}
]
}
}
]
}
},
{
"variable": "resources",
"label": "",
"group": "Resources Configuration",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "limits",
"label": "Limits",
"schema": {
"type": "dict",
"attrs": [
{
"variable": "cpus",
"label": "CPUs",
"description": "CPUs limit for Restic REST Server.",
"schema": {
"type": "int",
"default": 2,
"required": true
}
},
{
"variable": "memory",
"label": "Memory (in MB)",
"description": "Memory limit for Restic REST Server.",
"schema": {
"type": "int",
"default": 4096,
"required": true
}
}
]
}
}
]
}
}
]
},
"readme": "<h1>Restic REST Server</h1> <p><a href=\"https://github.com/restic/rest-server\">Restic REST Server</a> Rest Server is a high performance HTTP server that implements restic's REST backend API.</p>",
"changelog": null,
"chart_metadata": {
"app_version": "0.14.0",
"capabilities": [],
"categories": [
"backup"
],
"changelog_url": "https://github.com/restic/restic-rest-server/releases",
"date_added": "2025-08-22",
"description": "Rest Server is a high performance HTTP server that implements restic's REST backend API.",
"home": "https://github.com/restic/rest-server",
"host_mounts": [],
"icon": "https://media.sys.truenas.net/apps/restic-rest-server/icons/icon.png",
"keywords": [
"backup",
"restic"
],
"lib_version": "2.1.48",
"lib_version_hash": "8f7fee2e0e2eb5755e29a0d74cf22e5b0b19aff15d083e3b061b5f6075d4c849",
"maintainers": [
{
"email": "dev@ixsystems.com",
"name": "truenas",
"url": "https://www.truenas.com/"
}
],
"name": "restic-rest-server",
"run_as_context": [
{
"description": "Restic rest-server runs as any non-root user.",
"gid": 568,
"group_name": "rest-server",
"uid": 568,
"user_name": "rest-server"
}
],
"screenshots": [],
"sources": [
"https://github.com/restic/rest-server",
"https://hub.docker.com/r/restic/rest-server"
],
"title": "Restic REST Server",
"train": "community",
"version": "1.0.0"
}
}
}
Support, maintenance, and documentation for applications within the Community catalog is handled by the TrueNAS community. The TrueNAS Applications Market hosts but does not validate or maintain any linked resources associated with this app.
There currently aren’t any resources available for this application!
Please help the TrueNAS community add resources here or discuss this application in the TrueNAS Community forum.