app_versions.json 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878
  1. {
  2. "1.3.8": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/apps/apps/trains/community/tailscale/1.3.8",
  7. "last_update": "2025-09-02 11:33:24",
  8. "required_features": [],
  9. "human_version": "v1.86.5_1.3.8",
  10. "version": "1.3.8",
  11. "app_metadata": {
  12. "app_version": "v1.86.5",
  13. "capabilities": [
  14. {
  15. "description": "Tailscale is able to change file ownership arbitrarily",
  16. "name": "CHOWN"
  17. },
  18. {
  19. "description": "Tailscale is able to bypass file permission checks",
  20. "name": "DAC_OVERRIDE"
  21. },
  22. {
  23. "description": "Tailscale is able to bypass permission checks for file operations",
  24. "name": "FOWNER"
  25. },
  26. {
  27. "description": "Tailscale is able to perform network administration tasks",
  28. "name": "NET_ADMIN"
  29. },
  30. {
  31. "description": "Tailscale is able to use raw and packet sockets",
  32. "name": "NET_RAW"
  33. },
  34. {
  35. "description": "Tailscale is able to load and unload kernel modules",
  36. "name": "SYS_MODULE"
  37. }
  38. ],
  39. "categories": [
  40. "networking"
  41. ],
  42. "changelog_url": "https://tailscale.com/changelog#client",
  43. "date_added": "2024-07-30",
  44. "description": "Secure remote access to shared resources",
  45. "home": "https://tailscale.com/",
  46. "host_mounts": [
  47. {
  48. "description": "Network device",
  49. "host_path": "/dev/net/tun"
  50. }
  51. ],
  52. "icon": "https://media.sys.truenas.net/apps/tailscale/icons/icon.png",
  53. "keywords": [
  54. "vpn",
  55. "tailscale"
  56. ],
  57. "lib_version": "2.1.49",
  58. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  59. "maintainers": [
  60. {
  61. "email": "dev@ixsystems.com",
  62. "name": "truenas",
  63. "url": "https://www.truenas.com/"
  64. }
  65. ],
  66. "name": "tailscale",
  67. "run_as_context": [
  68. {
  69. "description": "Tailscale runs as a root user.",
  70. "gid": 0,
  71. "group_name": "root",
  72. "uid": 0,
  73. "user_name": "root"
  74. }
  75. ],
  76. "screenshots": [],
  77. "sources": [
  78. "https://tailscale.com/",
  79. "https://hub.docker.com/r/tailscale/tailscale"
  80. ],
  81. "title": "Tailscale",
  82. "train": "community",
  83. "version": "1.3.8"
  84. },
  85. "schema": {
  86. "groups": [
  87. {
  88. "name": "Tailscale Configuration",
  89. "description": "Configure Tailscale"
  90. },
  91. {
  92. "name": "Network Configuration",
  93. "description": "Configure Network for Tailscale"
  94. },
  95. {
  96. "name": "Storage Configuration",
  97. "description": "Configure Storage for Tailscale"
  98. },
  99. {
  100. "name": "Labels Configuration",
  101. "description": "Configure Labels for Tailscale"
  102. },
  103. {
  104. "name": "Resources Configuration",
  105. "description": "Configure Resources for Tailscale"
  106. }
  107. ],
  108. "questions": [
  109. {
  110. "variable": "TZ",
  111. "label": "Timezone",
  112. "description": "Timezone",
  113. "group": "Tailscale Configuration",
  114. "schema": {
  115. "type": "string",
  116. "default": "Etc/UTC",
  117. "$ref": [
  118. "definitions/timezone"
  119. ]
  120. }
  121. },
  122. {
  123. "variable": "tailscale",
  124. "label": "",
  125. "group": "Tailscale Configuration",
  126. "schema": {
  127. "type": "dict",
  128. "attrs": [
  129. {
  130. "variable": "hostname",
  131. "label": "Hostname",
  132. "description": "The hostname for Tailscale Node.</br>\nOnly lowercase letters, numbers, and hyphens are allowed.</br>\nSame as `--hostname` flag.\n",
  133. "schema": {
  134. "type": "string",
  135. "default": "truenas-scale",
  136. "valid_chars": "^[a-z0-9-]+$",
  137. "valid_chars_error": "Only lowercase letters, numbers, and hyphens are allowed.\n",
  138. "required": true
  139. }
  140. },
  141. {
  142. "variable": "auth_key",
  143. "label": "Auth Key",
  144. "description": "The auth key for Tailscale Node.</br>\nSame as `--authkey` flag.</br>\nTo generate one: https://login.tailscale.com/admin/settings/keys\n",
  145. "schema": {
  146. "type": "string",
  147. "default": "",
  148. "required": true,
  149. "private": true
  150. }
  151. },
  152. {
  153. "variable": "auth_once",
  154. "label": "Auth Once",
  155. "description": "Attempt to log in only if not already logged in.",
  156. "schema": {
  157. "type": "boolean",
  158. "default": true
  159. }
  160. },
  161. {
  162. "variable": "reset",
  163. "label": "Reset",
  164. "description": "Reset unspecified settings to default values.</br>\nSame as `--reset` flag.\n",
  165. "schema": {
  166. "type": "boolean",
  167. "default": false
  168. }
  169. },
  170. {
  171. "variable": "accept_dns",
  172. "label": "Accept DNS",
  173. "description": "Accept DNS</br>\nSame as `--accept-dns` flag.\n",
  174. "schema": {
  175. "type": "boolean",
  176. "default": false
  177. }
  178. },
  179. {
  180. "variable": "userspace",
  181. "label": "Userspace",
  182. "description": "Run Tailscale in userspace</br>\nSame as `--userspace` flag.\n",
  183. "schema": {
  184. "type": "boolean",
  185. "default": false
  186. }
  187. },
  188. {
  189. "variable": "advertise_exit_node",
  190. "label": "Advertise Exit Node",
  191. "description": "Advertise exit node</br>\nSame as `--advertise-exit-node` flag.</br>\nNeeds enabled IP forwarding on the host via System > Advanced Settings > Sysctls.</br>\nPlease make sure you read and understand the warnings displayed when adding Sysctls</br>\nSee also https://tailscale.com/kb/1019/subnets?tab=linux#enable-ip-forwarding\n",
  192. "schema": {
  193. "type": "boolean",
  194. "default": false
  195. }
  196. },
  197. {
  198. "variable": "advertise_routes",
  199. "label": "Advertise Routes",
  200. "description": "Advertise routes</br>\nSame as `--advertise-routes` flag.</br>\nNeeds enabled IP forwarding on the host via System > Advanced Settings > Sysctls.</br>\nPlease make sure you read and understand the warnings displayed when adding Sysctls</br>\nSee also https://tailscale.com/kb/1019/subnets?tab=linux#enable-ip-forwarding\n",
  201. "schema": {
  202. "type": "list",
  203. "default": [],
  204. "items": [
  205. {
  206. "variable": "route",
  207. "label": "Route",
  208. "schema": {
  209. "type": "string",
  210. "required": true
  211. }
  212. }
  213. ]
  214. }
  215. },
  216. {
  217. "variable": "extra_args",
  218. "label": "Extra Arguments",
  219. "description": "Extra arguments</br>\nFlags to pass to tailscale CLI in a tailscale set command.\n",
  220. "schema": {
  221. "type": "list",
  222. "default": [],
  223. "items": [
  224. {
  225. "variable": "arg",
  226. "label": "Argument",
  227. "schema": {
  228. "type": "string",
  229. "required": true
  230. }
  231. }
  232. ]
  233. }
  234. },
  235. {
  236. "variable": "tailscaled_args",
  237. "label": "Tailscale Daemon Arguments",
  238. "description": "Tailscaled arguments</br>\nFlags to pass to the tailscaled daemon.\n",
  239. "schema": {
  240. "type": "list",
  241. "default": [],
  242. "items": [
  243. {
  244. "variable": "arg",
  245. "label": "Argument",
  246. "schema": {
  247. "type": "string",
  248. "required": true
  249. }
  250. }
  251. ]
  252. }
  253. },
  254. {
  255. "variable": "additional_envs",
  256. "label": "Additional Environment Variables",
  257. "schema": {
  258. "type": "list",
  259. "default": [],
  260. "items": [
  261. {
  262. "variable": "env",
  263. "label": "Environment Variable",
  264. "schema": {
  265. "type": "dict",
  266. "attrs": [
  267. {
  268. "variable": "name",
  269. "label": "Name",
  270. "schema": {
  271. "type": "string",
  272. "required": true
  273. }
  274. },
  275. {
  276. "variable": "value",
  277. "label": "Value",
  278. "schema": {
  279. "type": "string"
  280. }
  281. }
  282. ]
  283. }
  284. }
  285. ]
  286. }
  287. }
  288. ]
  289. }
  290. },
  291. {
  292. "variable": "network",
  293. "label": "",
  294. "group": "Network Configuration",
  295. "schema": {
  296. "type": "dict",
  297. "attrs": [
  298. {
  299. "variable": "host_network",
  300. "label": "Host Network",
  301. "description": "Bind to the host network.</br>\nNeeded in most cases in order to communicate with the host.\n",
  302. "schema": {
  303. "type": "boolean",
  304. "default": true
  305. }
  306. }
  307. ]
  308. }
  309. },
  310. {
  311. "variable": "storage",
  312. "label": "",
  313. "group": "Storage Configuration",
  314. "schema": {
  315. "type": "dict",
  316. "attrs": [
  317. {
  318. "variable": "state",
  319. "label": "Tailscale State Storage",
  320. "description": "The path to store Tailscale State.",
  321. "schema": {
  322. "type": "dict",
  323. "attrs": [
  324. {
  325. "variable": "type",
  326. "label": "Type",
  327. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  328. "schema": {
  329. "type": "string",
  330. "required": true,
  331. "default": "ix_volume",
  332. "enum": [
  333. {
  334. "value": "host_path",
  335. "description": "Host Path (Path that already exists on the system)"
  336. },
  337. {
  338. "value": "ix_volume",
  339. "description": "ixVolume (Dataset created automatically by the system)"
  340. }
  341. ]
  342. }
  343. },
  344. {
  345. "variable": "ix_volume_config",
  346. "label": "ixVolume Configuration",
  347. "description": "The configuration for the ixVolume dataset.",
  348. "schema": {
  349. "type": "dict",
  350. "show_if": [
  351. [
  352. "type",
  353. "=",
  354. "ix_volume"
  355. ]
  356. ],
  357. "$ref": [
  358. "normalize/ix_volume"
  359. ],
  360. "attrs": [
  361. {
  362. "variable": "acl_enable",
  363. "label": "Enable ACL",
  364. "description": "Enable ACL for the storage.",
  365. "schema": {
  366. "type": "boolean",
  367. "default": false
  368. }
  369. },
  370. {
  371. "variable": "dataset_name",
  372. "label": "Dataset Name",
  373. "description": "The name of the dataset to use for storage.",
  374. "schema": {
  375. "type": "string",
  376. "required": true,
  377. "hidden": true,
  378. "default": "state"
  379. }
  380. },
  381. {
  382. "variable": "acl_entries",
  383. "label": "ACL Configuration",
  384. "schema": {
  385. "type": "dict",
  386. "show_if": [
  387. [
  388. "acl_enable",
  389. "=",
  390. true
  391. ]
  392. ],
  393. "attrs": []
  394. }
  395. }
  396. ]
  397. }
  398. },
  399. {
  400. "variable": "host_path_config",
  401. "label": "Host Path Configuration",
  402. "schema": {
  403. "type": "dict",
  404. "show_if": [
  405. [
  406. "type",
  407. "=",
  408. "host_path"
  409. ]
  410. ],
  411. "attrs": [
  412. {
  413. "variable": "acl_enable",
  414. "label": "Enable ACL",
  415. "description": "Enable ACL for the storage.",
  416. "schema": {
  417. "type": "boolean",
  418. "default": false
  419. }
  420. },
  421. {
  422. "variable": "acl",
  423. "label": "ACL Configuration",
  424. "schema": {
  425. "type": "dict",
  426. "show_if": [
  427. [
  428. "acl_enable",
  429. "=",
  430. true
  431. ]
  432. ],
  433. "attrs": [],
  434. "$ref": [
  435. "normalize/acl"
  436. ]
  437. }
  438. },
  439. {
  440. "variable": "path",
  441. "label": "Host Path",
  442. "description": "The host path to use for storage.",
  443. "schema": {
  444. "type": "hostpath",
  445. "show_if": [
  446. [
  447. "acl_enable",
  448. "=",
  449. false
  450. ]
  451. ],
  452. "required": true
  453. }
  454. }
  455. ]
  456. }
  457. }
  458. ]
  459. }
  460. },
  461. {
  462. "variable": "additional_storage",
  463. "label": "Additional Storage",
  464. "schema": {
  465. "type": "list",
  466. "default": [],
  467. "items": [
  468. {
  469. "variable": "storageEntry",
  470. "label": "Storage Entry",
  471. "schema": {
  472. "type": "dict",
  473. "attrs": [
  474. {
  475. "variable": "type",
  476. "label": "Type",
  477. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.</br>\nSMB Share: Is a SMB share that is mounted to as a volume.\n",
  478. "schema": {
  479. "type": "string",
  480. "required": true,
  481. "default": "ix_volume",
  482. "enum": [
  483. {
  484. "value": "host_path",
  485. "description": "Host Path (Path that already exists on the system)"
  486. },
  487. {
  488. "value": "ix_volume",
  489. "description": "ixVolume (Dataset created automatically by the system)"
  490. },
  491. {
  492. "value": "cifs",
  493. "description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
  494. }
  495. ]
  496. }
  497. },
  498. {
  499. "variable": "read_only",
  500. "label": "Read Only",
  501. "description": "Mount the volume as read only.",
  502. "schema": {
  503. "type": "boolean",
  504. "default": false
  505. }
  506. },
  507. {
  508. "variable": "mount_path",
  509. "label": "Mount Path",
  510. "description": "The path inside the container to mount the storage.",
  511. "schema": {
  512. "type": "path",
  513. "required": true
  514. }
  515. },
  516. {
  517. "variable": "host_path_config",
  518. "label": "Host Path Configuration",
  519. "schema": {
  520. "type": "dict",
  521. "show_if": [
  522. [
  523. "type",
  524. "=",
  525. "host_path"
  526. ]
  527. ],
  528. "attrs": [
  529. {
  530. "variable": "acl_enable",
  531. "label": "Enable ACL",
  532. "description": "Enable ACL for the storage.",
  533. "schema": {
  534. "type": "boolean",
  535. "default": false
  536. }
  537. },
  538. {
  539. "variable": "acl",
  540. "label": "ACL Configuration",
  541. "schema": {
  542. "type": "dict",
  543. "show_if": [
  544. [
  545. "acl_enable",
  546. "=",
  547. true
  548. ]
  549. ],
  550. "attrs": [],
  551. "$ref": [
  552. "normalize/acl"
  553. ]
  554. }
  555. },
  556. {
  557. "variable": "path",
  558. "label": "Host Path",
  559. "description": "The host path to use for storage.",
  560. "schema": {
  561. "type": "hostpath",
  562. "show_if": [
  563. [
  564. "acl_enable",
  565. "=",
  566. false
  567. ]
  568. ],
  569. "required": true
  570. }
  571. }
  572. ]
  573. }
  574. },
  575. {
  576. "variable": "ix_volume_config",
  577. "label": "ixVolume Configuration",
  578. "description": "The configuration for the ixVolume dataset.",
  579. "schema": {
  580. "type": "dict",
  581. "show_if": [
  582. [
  583. "type",
  584. "=",
  585. "ix_volume"
  586. ]
  587. ],
  588. "$ref": [
  589. "normalize/ix_volume"
  590. ],
  591. "attrs": [
  592. {
  593. "variable": "acl_enable",
  594. "label": "Enable ACL",
  595. "description": "Enable ACL for the storage.",
  596. "schema": {
  597. "type": "boolean",
  598. "default": false
  599. }
  600. },
  601. {
  602. "variable": "dataset_name",
  603. "label": "Dataset Name",
  604. "description": "The name of the dataset to use for storage.",
  605. "schema": {
  606. "type": "string",
  607. "required": true,
  608. "default": "storage_entry"
  609. }
  610. },
  611. {
  612. "variable": "acl_entries",
  613. "label": "ACL Configuration",
  614. "schema": {
  615. "type": "dict",
  616. "show_if": [
  617. [
  618. "acl_enable",
  619. "=",
  620. true
  621. ]
  622. ],
  623. "attrs": []
  624. }
  625. }
  626. ]
  627. }
  628. },
  629. {
  630. "variable": "cifs_config",
  631. "label": "SMB Configuration",
  632. "description": "The configuration for the SMB dataset.",
  633. "schema": {
  634. "type": "dict",
  635. "show_if": [
  636. [
  637. "type",
  638. "=",
  639. "cifs"
  640. ]
  641. ],
  642. "attrs": [
  643. {
  644. "variable": "server",
  645. "label": "Server",
  646. "description": "The server to mount the SMB share.",
  647. "schema": {
  648. "type": "string",
  649. "required": true
  650. }
  651. },
  652. {
  653. "variable": "path",
  654. "label": "Path",
  655. "description": "The path to mount the SMB share.",
  656. "schema": {
  657. "type": "string",
  658. "required": true
  659. }
  660. },
  661. {
  662. "variable": "username",
  663. "label": "Username",
  664. "description": "The username to use for the SMB share.",
  665. "schema": {
  666. "type": "string",
  667. "required": true
  668. }
  669. },
  670. {
  671. "variable": "password",
  672. "label": "Password",
  673. "description": "The password to use for the SMB share.",
  674. "schema": {
  675. "type": "string",
  676. "required": true,
  677. "private": true
  678. }
  679. },
  680. {
  681. "variable": "domain",
  682. "label": "Domain",
  683. "description": "The domain to use for the SMB share.",
  684. "schema": {
  685. "type": "string"
  686. }
  687. }
  688. ]
  689. }
  690. }
  691. ]
  692. }
  693. }
  694. ]
  695. }
  696. }
  697. ]
  698. }
  699. },
  700. {
  701. "variable": "labels",
  702. "label": "",
  703. "group": "Labels Configuration",
  704. "schema": {
  705. "type": "list",
  706. "default": [],
  707. "items": [
  708. {
  709. "variable": "label",
  710. "label": "Label",
  711. "schema": {
  712. "type": "dict",
  713. "attrs": [
  714. {
  715. "variable": "key",
  716. "label": "Key",
  717. "schema": {
  718. "type": "string",
  719. "required": true
  720. }
  721. },
  722. {
  723. "variable": "value",
  724. "label": "Value",
  725. "schema": {
  726. "type": "string",
  727. "required": true
  728. }
  729. },
  730. {
  731. "variable": "containers",
  732. "label": "Containers",
  733. "description": "Containers where the label should be applied",
  734. "schema": {
  735. "type": "list",
  736. "items": [
  737. {
  738. "variable": "container",
  739. "label": "Container",
  740. "schema": {
  741. "type": "string",
  742. "required": true,
  743. "enum": [
  744. {
  745. "value": "tailscale",
  746. "description": "tailscale"
  747. }
  748. ]
  749. }
  750. }
  751. ]
  752. }
  753. }
  754. ]
  755. }
  756. }
  757. ]
  758. }
  759. },
  760. {
  761. "variable": "resources",
  762. "label": "",
  763. "group": "Resources Configuration",
  764. "schema": {
  765. "type": "dict",
  766. "attrs": [
  767. {
  768. "variable": "limits",
  769. "label": "Limits",
  770. "schema": {
  771. "type": "dict",
  772. "attrs": [
  773. {
  774. "variable": "cpus",
  775. "label": "CPUs",
  776. "description": "CPUs limit for Tailscale.",
  777. "schema": {
  778. "type": "int",
  779. "default": 2,
  780. "required": true
  781. }
  782. },
  783. {
  784. "variable": "memory",
  785. "label": "Memory (in MB)",
  786. "description": "Memory limit for Tailscale.",
  787. "schema": {
  788. "type": "int",
  789. "default": 4096,
  790. "required": true
  791. }
  792. }
  793. ]
  794. }
  795. }
  796. ]
  797. }
  798. }
  799. ]
  800. },
  801. "readme": "<h1>Tailscale</h1> <p><a href=\"https://tailscale.com\">Tailscale</a> Secure remote access to shared resources</p> <ul> <li>When <code>Userspace</code> is <strong>disabled</strong>, <code>Tailscale</code> will run with <code>/dev/net/tun</code> device mounted from the host.</li> </ul>",
  802. "changelog": null,
  803. "chart_metadata": {
  804. "app_version": "v1.86.5",
  805. "capabilities": [
  806. {
  807. "description": "Tailscale is able to change file ownership arbitrarily",
  808. "name": "CHOWN"
  809. },
  810. {
  811. "description": "Tailscale is able to bypass file permission checks",
  812. "name": "DAC_OVERRIDE"
  813. },
  814. {
  815. "description": "Tailscale is able to bypass permission checks for file operations",
  816. "name": "FOWNER"
  817. },
  818. {
  819. "description": "Tailscale is able to perform network administration tasks",
  820. "name": "NET_ADMIN"
  821. },
  822. {
  823. "description": "Tailscale is able to use raw and packet sockets",
  824. "name": "NET_RAW"
  825. },
  826. {
  827. "description": "Tailscale is able to load and unload kernel modules",
  828. "name": "SYS_MODULE"
  829. }
  830. ],
  831. "categories": [
  832. "networking"
  833. ],
  834. "changelog_url": "https://tailscale.com/changelog#client",
  835. "date_added": "2024-07-30",
  836. "description": "Secure remote access to shared resources",
  837. "home": "https://tailscale.com/",
  838. "host_mounts": [
  839. {
  840. "description": "Network device",
  841. "host_path": "/dev/net/tun"
  842. }
  843. ],
  844. "icon": "https://media.sys.truenas.net/apps/tailscale/icons/icon.png",
  845. "keywords": [
  846. "vpn",
  847. "tailscale"
  848. ],
  849. "lib_version": "2.1.49",
  850. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  851. "maintainers": [
  852. {
  853. "email": "dev@ixsystems.com",
  854. "name": "truenas",
  855. "url": "https://www.truenas.com/"
  856. }
  857. ],
  858. "name": "tailscale",
  859. "run_as_context": [
  860. {
  861. "description": "Tailscale runs as a root user.",
  862. "gid": 0,
  863. "group_name": "root",
  864. "uid": 0,
  865. "user_name": "root"
  866. }
  867. ],
  868. "screenshots": [],
  869. "sources": [
  870. "https://tailscale.com/",
  871. "https://hub.docker.com/r/tailscale/tailscale"
  872. ],
  873. "title": "Tailscale",
  874. "train": "community",
  875. "version": "1.3.8"
  876. }
  877. }
  878. }