<!doctype html>
< html lang = "en" class = "no-js" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width,initial-scale=1" >
< meta name = "description" content = "Guides mainly for Sonarr/Radarr/Bazarr and everything related to it." >
< meta name = "author" content = "TRaSH" >
< link rel = "canonical" href = "https://trash-guides.info/Hardlinks/How-to-setup-for/TrueNAS-Core/" >
< link rel = "prev" href = "../Synology/" >
< link rel = "next" href = "../Unraid/" >
< link rel = "icon" href = "../../../img/favicon.png" >
< meta name = "generator" content = "mkdocs-1.4.3, mkdocs-material-9.1.15" >
< title > TrueNAS Core - TRaSH Guides< / title >
< link rel = "stylesheet" href = "../../../assets/stylesheets/main.26e3688c.min.css" >
< link rel = "stylesheet" href = "../../../assets/stylesheets/palette.ecc896b0.min.css" >
< link rel = "preconnect" href = "https://fonts.gstatic.com" crossorigin >
< link rel = "stylesheet" href = "https://fonts.googleapis.com/css?family=Noto+Sans:300,300i,400,400i,700,700i%7CEncode+Sans+Expanded:400,400i,700,700i&display=fallback" >
< style > : root { --md-text-font : "Noto Sans" ; --md-code-font : "Encode Sans Expanded" } < / style >
< link rel = "stylesheet" href = "../../../stylesheets/extra.css" >
< link rel = "stylesheet" href = "../../../stylesheets/github-permalink-style.css" >
< script > _ _md _scope = new URL ( "../../.." , location ) , _ _md _hash = e => [ ... e ] . reduce ( ( e , _ ) => ( e << 5 ) - e + _ . charCodeAt ( 0 ) , 0 ) , _ _md _get = ( e , _ = localStorage , t = _ _md _scope ) => JSON . parse ( _ . getItem ( t . pathname + "." + e ) ) , _ _md _set = ( e , _ , t = localStorage , a = _ _md _scope ) => { try { t . setItem ( a . pathname + "." + e , JSON . stringify ( _ ) ) } catch ( e ) { } } < / script >
< script id = "__analytics" > function _ _md _analytics ( ) { function n ( ) { dataLayer . push ( arguments ) } window . dataLayer = window . dataLayer || [ ] , n ( "js" , new Date ) , n ( "config" , "G-ZZKM4MPQXL" ) , document . addEventListener ( "DOMContentLoaded" , function ( ) { document . forms . search && document . forms . search . query . addEventListener ( "blur" , function ( ) { this . value && n ( "event" , "search" , { search _term : this . value } ) } ) , document $ . subscribe ( function ( ) { var a = document . forms . feedback ; if ( void 0 !== a ) for ( var e of a . querySelectorAll ( "[type=submit]" ) ) e . addEventListener ( "click" , function ( e ) { e . preventDefault ( ) ; var t = document . location . pathname , e = this . getAttribute ( "data-md-value" ) ; n ( "event" , "feedback" , { page : t , data : e } ) , a . firstElementChild . disabled = ! 0 ; e = a . querySelector ( ".md-feedback__note [data-md-value='" + e + "']" ) ; e && ( e . hidden = ! 1 ) } ) , a . hidden = ! 1 } ) , location$ . subscribe ( function ( e ) { n ( "config" , "G-ZZKM4MPQXL" , { page _path : e . pathname } ) } ) } ) ; var e = document . createElement ( "script" ) ; e . async = ! 0 , e . src = "https://www.googletagmanager.com/gtag/js?id=G-ZZKM4MPQXL" , document . getElementById ( "__analytics" ) . insertAdjacentElement ( "afterEnd" , e ) } < / script >
< script > "undefined" != typeof _ _md _analytics && _ _md _analytics ( ) < / script >
< link href = "../../../assets/stylesheets/glightbox.min.css" rel = "stylesheet" / > < style >
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}
< / style > < script src = "../../../assets/javascripts/glightbox.min.js" > < / script > < / head >
< body dir = "ltr" data-md-color-scheme = "slate" data-md-color-primary = "indigo" data-md-color-accent = "blue" >
< script > var palette = _ _md _get ( "__palette" ) ; if ( palette && "object" == typeof palette . color ) for ( var key of Object . keys ( palette . color ) ) document . body . setAttribute ( "data-md-color-" + key , palette . color [ key ] ) < / script >
< input class = "md-toggle" data-md-toggle = "drawer" type = "checkbox" id = "__drawer" autocomplete = "off" >
< input class = "md-toggle" data-md-toggle = "search" type = "checkbox" id = "__search" autocomplete = "off" >
< label class = "md-overlay" for = "__drawer" > < / label >
< div data-md-component = "skip" >
< a href = "#truenas-core" class = "md-skip" >
Skip to content
< / a >
< / div >
< div data-md-component = "announce" >
< / div >
< header class = "md-header" data-md-component = "header" >
< nav class = "md-header__inner md-grid" aria-label = "Header" >
< a href = "../../.." title = "TRaSH Guides" class = "md-header__button md-logo" aria-label = "TRaSH Guides" data-md-component = "logo" >
< img src = "../../../img/logo.png" alt = "logo" >
< / a >
< label class = "md-header__button md-icon" for = "__drawer" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z" / > < / svg >
< / label >
< div class = "md-header__title" data-md-component = "header-title" >
< div class = "md-header__ellipsis" >
< div class = "md-header__topic" >
< span class = "md-ellipsis" >
TRaSH Guides
< / span >
< / div >
< div class = "md-header__topic" data-md-component = "header-topic" >
< span class = "md-ellipsis" >
TrueNAS Core
< / span >
< / div >
< / div >
< / div >
< form class = "md-header__option" data-md-component = "palette" >
< input class = "md-option" data-md-color-media = "(prefers-color-scheme: dark)" data-md-color-scheme = "slate" data-md-color-primary = "indigo" data-md-color-accent = "blue" aria-label = "Switch to light mode" type = "radio" name = "__palette" id = "__palette_1" >
< label class = "md-header__button md-icon" title = "Switch to light mode" for = "__palette_2" hidden >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3Z" / > < / svg >
< / label >
< input class = "md-option" data-md-color-media = "(prefers-color-scheme: light)" data-md-color-scheme = "default" data-md-color-primary = "indigo" data-md-color-accent = "blue" aria-label = "Switch to dark mode" type = "radio" name = "__palette" id = "__palette_2" >
< label class = "md-header__button md-icon" title = "Switch to dark mode" for = "__palette_1" hidden >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6zm0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4zM7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z" / > < / svg >
< / label >
< / form >
< label class = "md-header__button md-icon" for = "__search" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z" / > < / svg >
< / label >
< div class = "md-search" data-md-component = "search" role = "dialog" >
< label class = "md-search__overlay" for = "__search" > < / label >
< div class = "md-search__inner" role = "search" >
< form class = "md-search__form" name = "search" >
< input type = "text" class = "md-search__input" name = "query" aria-label = "Search" placeholder = "Search" autocapitalize = "off" autocorrect = "off" autocomplete = "off" spellcheck = "false" data-md-component = "search-query" required >
< label class = "md-search__icon md-icon" for = "__search" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z" / > < / svg >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z" / > < / svg >
< / label >
< nav class = "md-search__options" aria-label = "Search" >
< button type = "reset" class = "md-search__icon md-icon" title = "Clear" aria-label = "Clear" tabindex = "-1" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z" / > < / svg >
< / button >
< / nav >
< / form >
< div class = "md-search__output" >
< div class = "md-search__scrollwrap" data-md-scrollfix >
< div class = "md-search-result" data-md-component = "search-result" >
< div class = "md-search-result__meta" >
Initializing search
< / div >
< ol class = "md-search-result__list" role = "presentation" > < / ol >
< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "md-header__source" >
< a href = "https://github.com/TRaSH-/Guides" title = "Go to repository" class = "md-source" data-md-component = "source" >
< div class = "md-source__icon md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 448 512" > <!-- ! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --> < path d = "M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z" / > < / svg >
< / div >
< div class = "md-source__repository" >
TRaSH-/Guides
< / div >
< / a >
< / div >
< / nav >
< / header >
< div class = "md-container" data-md-component = "container" >
< nav class = "md-tabs" aria-label = "Tabs" data-md-component = "tabs" >
< div class = "md-grid" >
< ul class = "md-tabs__list" >
< li class = "md-tabs__item" >
< a href = "../../.." class = "md-tabs__link" >
Home
< / a >
< / li >
< li class = "md-tabs__item" >
< a href = "../../../Radarr/" class = "md-tabs__link" >
Radarr
< / a >
< / li >
< li class = "md-tabs__item" >
< a href = "../../../Sonarr/" class = "md-tabs__link" >
Sonarr
< / a >
< / li >
< li class = "md-tabs__item" >
< a href = "../../../Prowlarr/" class = "md-tabs__link" >
Prowlarr
< / a >
< / li >
< li class = "md-tabs__item" >
< a href = "../../../Bazarr/" class = "md-tabs__link" >
Bazarr
< / a >
< / li >
< li class = "md-tabs__item" >
< a href = "../../../Downloaders/" class = "md-tabs__link" >
Downloaders
< / a >
< / li >
< li class = "md-tabs__item" >
< a href = "../../../Plex/" class = "md-tabs__link" >
Plex
< / a >
< / li >
< li class = "md-tabs__item" >
< a href = "../../../Guide-Sync/" class = "md-tabs__link" >
Guide Sync
< / a >
< / li >
< li class = "md-tabs__item" >
< a href = "../../../Misc/" class = "md-tabs__link" >
Misc
< / a >
< / li >
< li class = "md-tabs__item" >
< a href = "../../Hardlinks-and-Instant-Moves/" class = "md-tabs__link md-tabs__link--active" >
Hardlinks
< / a >
< / li >
< li class = "md-tabs__item" >
< a href = ".." class = "md-tabs__link" >
How-to-setup-for
< / a >
< / li >
< / ul >
< / div >
< / nav >
< main class = "md-main" data-md-component = "main" >
< div class = "md-main__inner md-grid" >
< div class = "md-sidebar md-sidebar--primary" data-md-component = "sidebar" data-md-type = "navigation" >
< div class = "md-sidebar__scrollwrap" >
< div class = "md-sidebar__inner" >
< nav class = "md-nav md-nav--primary md-nav--lifted" aria-label = "Navigation" data-md-level = "0" >
< label class = "md-nav__title" for = "__drawer" >
< a href = "../../.." title = "TRaSH Guides" class = "md-nav__button md-logo" aria-label = "TRaSH Guides" data-md-component = "logo" >
< img src = "../../../img/logo.png" alt = "logo" >
< / a >
TRaSH Guides
< / label >
< div class = "md-nav__source" >
< a href = "https://github.com/TRaSH-/Guides" title = "Go to repository" class = "md-source" data-md-component = "source" >
< div class = "md-source__icon md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 448 512" > <!-- ! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --> < path d = "M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z" / > < / svg >
< / div >
< div class = "md-source__repository" >
TRaSH-/Guides
< / div >
< / a >
< / div >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../.." class = "md-nav__link" >
Home
< / a >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_2" >
< label class = "md-nav__link" for = "__nav_2" id = "__nav_2_label" tabindex = "0" >
Radarr
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_2_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_2" >
< span class = "md-nav__icon md-icon" > < / span >
Radarr
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Radarr/" class = "md-nav__link" >
Home
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Radarr/Radarr-Quality-Settings-File-Size/" class = "md-nav__link" >
Quality Settings (File Size)
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Radarr/Radarr-recommended-naming-scheme/" class = "md-nav__link" >
Recommended naming scheme
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Radarr/Radarr-import-custom-formats/" class = "md-nav__link" >
How to import Custom Formats
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Radarr/Radarr-how-to-update-custom-formats/" class = "md-nav__link" >
How to Update Custom Formats
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Radarr/radarr-setup-quality-profiles/" class = "md-nav__link" >
How to setup Quality Profiles
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Radarr/radarr-setup-quality-profiles-anime/" class = "md-nav__link" >
How to setup Quality Profiles (Anime)
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Radarr/radarr-setup-quality-profiles-french-en/" class = "md-nav__link" >
How to setup Quality Profiles (French)
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Radarr/Radarr-collection-of-custom-formats/" class = "md-nav__link" >
Collection of Custom Formats
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Radarr/Radarr-remote-path-mapping/" class = "md-nav__link" >
Remote Path Mappings explained
< / a >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_2_11" >
< label class = "md-nav__link" for = "__nav_2_11" id = "__nav_2_11_label" tabindex = "0" >
Tips
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_2_11_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_2_11" >
< span class = "md-nav__icon md-icon" > < / span >
Tips
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Radarr/Tips/How-to-setup-language-custom-formats/" class = "md-nav__link" >
How to setup Language Custom Formats
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Radarr/Tips/Merge-quality/" class = "md-nav__link" >
How to Merge Quality
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Radarr/Tips/Radarr-rename-your-folders/" class = "md-nav__link" >
How to rename your folders
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Radarr/Tips/Radarr-show-unknown-movie-items/" class = "md-nav__link" >
Show Unknown Movie Items
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Radarr/Tips/Sync-2-radarr-sonarr/" class = "md-nav__link" >
How to Sync 2 Radarr or Sonarr with each other
< / a >
< / li >
< / ul >
< / nav >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_3" >
< label class = "md-nav__link" for = "__nav_3" id = "__nav_3_label" tabindex = "0" >
Sonarr
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_3_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_3" >
< span class = "md-nav__icon md-icon" > < / span >
Sonarr
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Sonarr/" class = "md-nav__link" >
Home
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Sonarr/Sonarr-Quality-Settings-File-Size/" class = "md-nav__link" >
Quality Settings (File Size)
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Sonarr/Sonarr-recommended-naming-scheme/" class = "md-nav__link" >
Recommended naming scheme
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Sonarr/Sonarr-Release-Profile-RegEx/" class = "md-nav__link" >
Release Profile RegEx (WEB-DL)
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Sonarr/Sonarr-Release-Profile-RegEx-Anime/" class = "md-nav__link" >
Release Profile RegEx (Anime)
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Sonarr/Sonarr-remote-path-mapping/" class = "md-nav__link" >
Remote Path Mappings explained
< / a >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_3_7" >
< label class = "md-nav__link" for = "__nav_3_7" id = "__nav_3_7_label" tabindex = "0" >
Sonarr v4 Beta
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_3_7_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_3_7" >
< span class = "md-nav__icon md-icon" > < / span >
Sonarr v4 Beta
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Sonarr/sonarr-import-custom-formats/" class = "md-nav__link" >
How to import Custom Formats
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Sonarr/sonarr-how-to-update-custom-formats/" class = "md-nav__link" >
How to Update Custom Formats
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Sonarr/sonarr-setup-quality-profiles/" class = "md-nav__link" >
How to setup Quality Profiles
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Sonarr/sonarr-setup-quality-profiles-anime/" class = "md-nav__link" >
How to setup Quality Profiles (Anime)
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Sonarr/sonarr-setup-quality-profiles-french-en/" class = "md-nav__link" >
How to setup Quality Profiles (French)
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Sonarr/sonarr-collection-of-custom-formats/" class = "md-nav__link" >
Collection of Custom Formats
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_3_8" >
< label class = "md-nav__link" for = "__nav_3_8" id = "__nav_3_8_label" tabindex = "0" >
Tips
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_3_8_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_3_8" >
< span class = "md-nav__icon md-icon" > < / span >
Tips
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Sonarr/Tips/How-to-setup-language-custom-formats/" class = "md-nav__link" >
How to setup language custom formats
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Sonarr/Tips/Merge-quality/" class = "md-nav__link" >
Merge quality
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Sonarr/Tips/Sync-2-radarr-sonarr/" class = "md-nav__link" >
Sync 2 radarr sonarr
< / a >
< / li >
< / ul >
< / nav >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_4" >
< label class = "md-nav__link" for = "__nav_4" id = "__nav_4_label" tabindex = "0" >
Prowlarr
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_4_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_4" >
< span class = "md-nav__icon md-icon" > < / span >
Prowlarr
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Prowlarr/" class = "md-nav__link" >
Home
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Prowlarr/prowlarr-setup-proxy/" class = "md-nav__link" >
How to setup proxy for certain indexers
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Prowlarr/prowlarr-setup-flaresolverr/" class = "md-nav__link" >
How to setup FlareSolverr
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Prowlarr/prowlarr-setup-limited-api/" class = "md-nav__link" >
How to setup indexers with limited API
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_5" >
< label class = "md-nav__link" for = "__nav_5" id = "__nav_5_label" tabindex = "0" >
Bazarr
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_5_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_5" >
< span class = "md-nav__icon md-icon" > < / span >
Bazarr
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Bazarr/" class = "md-nav__link" >
Home
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Bazarr/Setup-Guide/" class = "md-nav__link" >
Basic-Guide
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Bazarr/After-install-configuration/" class = "md-nav__link" >
After Install Configuration
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "/Bazarr/scripts/" class = "md-nav__link" >
Scripts
< / a >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_5_5" >
< label class = "md-nav__link" for = "__nav_5_5" id = "__nav_5_5_label" tabindex = "0" >
Tips
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_5_5_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_5_5" >
< span class = "md-nav__icon md-icon" > < / span >
Tips
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Bazarr/Tips/Bazarr-suggested-scoring/" class = "md-nav__link" >
Suggested Scoring
< / a >
< / li >
< / ul >
< / nav >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_6" >
< label class = "md-nav__link" for = "__nav_6" id = "__nav_6_label" tabindex = "0" >
Downloaders
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_6_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_6" >
< span class = "md-nav__icon md-icon" > < / span >
Downloaders
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Downloaders/" class = "md-nav__link" >
Home
< / a >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_6_2" >
< label class = "md-nav__link" for = "__nav_6_2" id = "__nav_6_2_label" tabindex = "0" >
NZBGet
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_6_2_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_6_2" >
< span class = "md-nav__icon md-icon" > < / span >
NZBGet
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Downloaders/NZBGet/Basic-Setup/" class = "md-nav__link" >
Basic-Setup
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Downloaders/NZBGet/Paths-and-Categories/" class = "md-nav__link" >
Path and Categories
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "/Downloaders/NZBGet/scripts/" class = "md-nav__link" >
Scripts
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_6_3" >
< label class = "md-nav__link" for = "__nav_6_3" id = "__nav_6_3_label" tabindex = "0" >
SABnzbd
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_6_3_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_6_3" >
< span class = "md-nav__icon md-icon" > < / span >
SABnzbd
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Downloaders/SABnzbd/Basic-Setup/" class = "md-nav__link" >
Basic-Setup
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Downloaders/SABnzbd/Paths-and-Categories/" class = "md-nav__link" >
Path and Categories
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "/Downloaders/SABnzbd/scripts/" class = "md-nav__link" >
Scripts
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_6_4" >
< label class = "md-nav__link" for = "__nav_6_4" id = "__nav_6_4_label" tabindex = "0" >
qBittorrent
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_6_4_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_6_4" >
< span class = "md-nav__icon md-icon" > < / span >
qBittorrent
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Downloaders/qBittorrent/Basic-Setup/" class = "md-nav__link" >
Basic-Setup
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Downloaders/qBittorrent/Paths/" class = "md-nav__link" >
Paths
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Downloaders/qBittorrent/How-to-add-categories/" class = "md-nav__link" >
How to add Categories
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Downloaders/qBittorrent/Port-forwarding/" class = "md-nav__link" >
Port forwarding
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Downloaders/qBittorrent/3rd-party-tools/" class = "md-nav__link" >
3rd Party tools
< / a >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_6_4_6" >
< label class = "md-nav__link" for = "__nav_6_4_6" id = "__nav_6_4_6_label" tabindex = "0" >
Tips
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "3" aria-labelledby = "__nav_6_4_6_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_6_4_6" >
< span class = "md-nav__icon md-icon" > < / span >
Tips
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Downloaders/qBittorrent/Tips/How-to-run-the-unRaid-mover-for-qBittorrent/" class = "md-nav__link" >
How to run the unRaid mover for qBittorent seeding torrents
< / a >
< / li >
< / ul >
< / nav >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_6_5" >
< label class = "md-nav__link" for = "__nav_6_5" id = "__nav_6_5_label" tabindex = "0" >
Deluge
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_6_5_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_6_5" >
< span class = "md-nav__icon md-icon" > < / span >
Deluge
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Downloaders/Deluge/" class = "md-nav__link" >
Deluge Placeholder
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Downloaders/Deluge/Deluge-Basic-Setup/" class = "md-nav__link" >
Deluge - Basic Setup
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Downloaders/Deluge/Deluge-how-to-add-labels/" class = "md-nav__link" >
Deluge - How to add labels
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_6_6" >
< label class = "md-nav__link" for = "__nav_6_6" id = "__nav_6_6_label" tabindex = "0" >
ruTorrent
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_6_6_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_6_6" >
< span class = "md-nav__icon md-icon" > < / span >
ruTorrent
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Downloaders/ruTorrent/" class = "md-nav__link" >
ruTorrent Placeholder
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Downloaders/ruTorrent/ruTorrent-Basic-Setup/" class = "md-nav__link" >
ruTorrent - Basic Setup
< / a >
< / li >
< / ul >
< / nav >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_7" >
< label class = "md-nav__link" for = "__nav_7" id = "__nav_7_label" tabindex = "0" >
Plex
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_7_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_7" >
< span class = "md-nav__icon md-icon" > < / span >
Plex
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Plex/" class = "md-nav__link" >
Home
< / a >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_7_2" >
< label class = "md-nav__link" for = "__nav_7_2" id = "__nav_7_2_label" tabindex = "0" >
Tips
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_7_2_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_7_2" >
< span class = "md-nav__icon md-icon" > < / span >
Tips
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Plex/Tips/Plex-media-server/" class = "md-nav__link" >
Suggested Plex Media Server Settings
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Plex/Tips/Optimal-plex-client-settings/" class = "md-nav__link" >
Optimal Plex Client Settings
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Plex/Tips/4k-transcoding/" class = "md-nav__link" >
JBOPS 4K Transcode Stopping with Tautulli
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "/Plex/profiles/" class = "md-nav__link" >
Profiles
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_8" >
< label class = "md-nav__link" for = "__nav_8" id = "__nav_8_label" tabindex = "0" >
Guide Sync
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_8_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_8" >
< span class = "md-nav__icon md-icon" > < / span >
Guide Sync
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Guide-Sync/" class = "md-nav__link" >
Home
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_9" >
< label class = "md-nav__link" for = "__nav_9" id = "__nav_9_label" tabindex = "0" >
Misc
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_9_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_9" >
< span class = "md-nav__icon md-icon" > < / span >
Misc
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../../Misc/" class = "md-nav__link" >
Home
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Misc/how-to-provide-a-docker-compose/" class = "md-nav__link" >
How to provide a docker compose
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Misc/How-to-setup-Torguard-for-port-forwarding/" class = "md-nav__link" >
Setup TorGuard for port forwarding
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../../Misc/x265-4k/" class = "md-nav__link" >
x265-4k and Golden Rule
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item md-nav__item--active md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_10" checked >
< label class = "md-nav__link" for = "__nav_10" id = "__nav_10_label" tabindex = "0" >
Hardlinks
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_10_label" aria-expanded = "true" >
< label class = "md-nav__title" for = "__nav_10" >
< span class = "md-nav__icon md-icon" > < / span >
Hardlinks
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../Hardlinks-and-Instant-Moves/" class = "md-nav__link" >
Hardlinks - Atomic Moves
< / a >
< / li >
< li class = "md-nav__item md-nav__item--active md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_10_2" checked >
< label class = "md-nav__link" for = "__nav_10_2" id = "__nav_10_2_label" tabindex = "0" >
How to setup for
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_10_2_label" aria-expanded = "true" >
< label class = "md-nav__title" for = "__nav_10_2" >
< span class = "md-nav__icon md-icon" > < / span >
How to setup for
< / label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../" class = "md-nav__link" >
How to setup for
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../Docker/" class = "md-nav__link" >
Docker
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../Dockstarter/" class = "md-nav__link" >
Dockstarter
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../Native/" class = "md-nav__link" >
Native
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../Synology/" class = "md-nav__link" >
Synology
< / a >
< / li >
< li class = "md-nav__item md-nav__item--active" >
< input class = "md-nav__toggle md-toggle" type = "checkbox" id = "__toc" >
< label class = "md-nav__link md-nav__link--active" for = "__toc" >
TrueNAS Core
< span class = "md-nav__icon md-icon" > < / span >
< / label >
< a href = "./" class = "md-nav__link md-nav__link--active" >
TrueNAS Core
< / a >
< nav class = "md-nav md-nav--secondary" aria-label = "Table of contents" >
< label class = "md-nav__title" for = "__toc" >
< span class = "md-nav__icon md-icon" > < / span >
Table of contents
< / label >
< ul class = "md-nav__list" data-md-component = "toc" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "#create-the-main-dataset" class = "md-nav__link" >
Create the main dataset
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#create-a-shared-group" class = "md-nav__link" >
Create a shared group
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#create-your-users" class = "md-nav__link" >
Create your user(s)
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#dataset-permissions" class = "md-nav__link" >
Dataset permissions
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#create-your-nfs-shares" class = "md-nav__link" >
Create your NFS share(s)
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#configure-and-enable-nfs-service" class = "md-nav__link" >
Configure and enable NFS service
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#mount-your-shares" class = "md-nav__link" >
Mount your shares
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#folder-structure" class = "md-nav__link" >
Folder Structure
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "../Unraid/" class = "md-nav__link" >
Unraid
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = "../../Examples/" class = "md-nav__link" >
Examples
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../Check-if-hardlinks-are-working/" class = "md-nav__link" >
Check if hardlinks are working
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "../../Replace-copies-with-hardlinks/" class = "md-nav__link" >
Replace copies with hardlinks
< / a >
< / li >
< / ul >
< / nav >
< / li >
< li class = "md-nav__item" >
< a href = ".." class = "md-nav__link" >
How-to-setup-for
< / a >
< / li >
< / ul >
< / nav >
< / div >
< / div >
< / div >
< div class = "md-sidebar md-sidebar--secondary" data-md-component = "sidebar" data-md-type = "toc" >
< div class = "md-sidebar__scrollwrap" >
< div class = "md-sidebar__inner" >
< nav class = "md-nav md-nav--secondary" aria-label = "Table of contents" >
< label class = "md-nav__title" for = "__toc" >
< span class = "md-nav__icon md-icon" > < / span >
Table of contents
< / label >
< ul class = "md-nav__list" data-md-component = "toc" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "#create-the-main-dataset" class = "md-nav__link" >
Create the main dataset
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#create-a-shared-group" class = "md-nav__link" >
Create a shared group
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#create-your-users" class = "md-nav__link" >
Create your user(s)
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#dataset-permissions" class = "md-nav__link" >
Dataset permissions
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#create-your-nfs-shares" class = "md-nav__link" >
Create your NFS share(s)
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#configure-and-enable-nfs-service" class = "md-nav__link" >
Configure and enable NFS service
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#mount-your-shares" class = "md-nav__link" >
Mount your shares
< / a >
< / li >
< li class = "md-nav__item" >
< a href = "#folder-structure" class = "md-nav__link" >
Folder Structure
< / a >
< / li >
< / ul >
< / nav >
< / div >
< / div >
< / div >
< div class = "md-content" data-md-component = "content" >
< article class = "md-content__inner md-typeset" >
< a href = "https://github.com/TRaSH-/Guides/edit/master/docs/Hardlinks/How-to-setup-for/TrueNAS-Core.md" title = "Edit this page" class = "md-content__button md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4v-2m10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1 2.1 2.1Z" / > < / svg >
< / a >
< a href = "https://github.com/TRaSH-/Guides/raw/master/docs/Hardlinks/How-to-setup-for/TrueNAS-Core.md" title = "View source of this page" class = "md-content__button md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.15 8.15 0 0 1-1.23-2Z" / > < / svg >
< / a >
< h1 id = "truenas-core" > TrueNAS Core< a class = "headerlink" href = "#truenas-core" title = "Permanent link" > < / a > < / h1 >
< div class = "admonition note" >
< p class = "admonition-title" > Note< / p >
< p > This guide is based on TrueNAS Core 13, a storage solution based on ZFS. While there are more similarities than differences between Core and Scale in terms of creating datasets, this guide explicitly covers dataset, share, and basic permission setup in order to provide a place for creating and accessing the recommended folder structure. This does not cover jails or other virtualization means on the TrueNAS Core platform.< / p >
< p > This guide assumes that you've already created a pool, which by default will contain a top-level dataset that was configured during the time of pool configuration. For the examples below, we'll be using a pool name of < code > tank< / code > . Encryption is recommended on the pool (TrueNAS uses ZFS Encryption with AES-256-GCM in TrueNAS Core 13), but not required. TrueNAS Core allows for granularity in encrypting individual datasets if you don't want to encrypt at the top-level dataset and have it be inherited down to the other datasets.< / p >
< p > TrueNAS Core defaults to < code > lz4< / code > encryption as the compression level when creating a pool. This is fine for most workloads, and can be safely inherited down to other datasets under the top-level dataset. < code > ztsd< / code > is currently the default in FreeBSD, however TrueNAS Core still defaults to < code > lz4< / code > . Given that media files are not very compressible by nature, the only benefit that compression provides in this case is to supplementary files such as < code > .srt< / code > , < code > .nfo< / code > , etc.< / p >
< p > Additionally, since SMB does not support hardlinks we will only be covering the creation and use of NFS shares.< / p >
< / div >
< hr / >
< h2 id = "create-the-main-dataset" > Create the main dataset< a class = "headerlink" href = "#create-the-main-dataset" title = "Permanent link" > < / a > < / h2 >
< div class = "admonition warning" >
< p class = "admonition-title" > Warning< / p >
< p > To get hardlinks and atomic moves working with ZFS you will need to make use of < u > < strong > ONE< / strong > < / u > dataset with subfolders. Note that this does not mean multiple datasets under the example top-level dataset < code > tank< / code > from this example.< / p >
< / div >
< p > For this example I'm using the dataset from my existing setup, < code > Media< / code > . The naming isn't important as host machine mappings can be manipulated as desired.< / p >
< p > Go to Storage -> Pools and click on ⋮ on the right side of your root dataset, then select < code > Add Dataset< / code > .< / p >
< p > < a class = "glightbox" href = "../images/truenas-create-dataset.png" data-type = "image" data-width = "100%" data-height = "auto" data-desc-position = "bottom" > < img alt = "truenas-dataset" src = "../images/truenas-create-dataset.png" / > < / a > < / p >
< p > On the next screen you'll fill out your basic dataset info, such as name and comments. I have a few things grayed out here as the dataset has already been configured, but in this example you would use < code > Media< / code > in the Name field and keep everything else at its default (< code > Inherit< / code > ) with the exception of < code > Enable Atime< / code > and < code > Record Size< / code > . Set < code > Enable Atime< / code > to < code > off< / code > and < code > Record Size< / code > to < code > 1M< / code > . This provides a performance increase on a dataset that will primarily be handling media files. Optionally, you can configure < code > Quota for this dataset< / code > if you want to limit what the dataset displays and will accept in terms of capacity when it's mounted (i.e. setting this to < code > 10 TiB< / code > will show 10T as the capacity when mounted).< / p >
< p > During share creation, there will be an option at the bottom for < code > Share Type< / code > . < code > Generic< / code > is the default, with < code > SMB< / code > as a selectable option. Since we'll be using NFS, select < code > Generic< / code > .< / p >
< p > Click < code > Submit< / code > (mine shows < code > Save< / code > since this is an existing dataset) once complete.< / p >
< p > < a class = "glightbox" href = "../images/truenas-dataset-options.png" data-type = "image" data-width = "100%" data-height = "auto" data-desc-position = "bottom" > < img alt = "truenas-dataset" src = "../images/truenas-dataset-options.png" / > < / a > < / p >
< hr / >
< h2 id = "create-a-shared-group" > Create a shared group< a class = "headerlink" href = "#create-a-shared-group" title = "Permanent link" > < / a > < / h2 >
< p > We'll need to create a shared group so that we can ensure proper access when mounting, and to avoid ending up with < code > nobody< / code > as the group name when mounting over NFS. This group should contain any of your user accounts that will be accessing the share (Starr apps, download clients, etc). It should also match the group and < code > GID< / code > on the host you plan to mount the share to, and run your apps on.< / p >
< p > Navigate to Accounts -> Groups, and click < code > Add< / code > at the top right.< / p >
< p > You'll arrive at a simple configuration screen like the one shown below. Set your < code > GID< / code > that you plan to use, and name the group. In this example I'm using a < code > GID< / code > of < code > 1215< / code > and a group name of < code > dockermedia< / code > . Since this group won't be used for anything other than share permissions, leave < code > Permit Sudo< / code > and < code > Samba Authentication< / code > unchecked. Click < code > Submit< / code > once complete.< / p >
< p > < a class = "glightbox" href = "../images/truenas-group-options.png" data-type = "image" data-width = "100%" data-height = "auto" data-desc-position = "bottom" > < img alt = "truenas-group" src = "../images/truenas-group-options.png" / > < / a > < / p >
< hr / >
< h2 id = "create-your-users" > Create your user(s)< a class = "headerlink" href = "#create-your-users" title = "Permanent link" > < / a > < / h2 >
< p > We'll need to create a user (or users if you're using individual user accounts per service) on TrueNAS that matches the user and UID of the user you'll be mounting your share with. It's important that these match since we're not using the < code > Mapall< / code > function that exist under the NFS Share options.< / p >
< p > Navigate to Accounts -> Users, and click < code > Add< / code > at the top right.< / p >
< p > You'll arrive at a configuration screen like the one shown below. Fill out < code > Full Name< / code > and < code > Username< / code > with the desired username, and set your < code > User ID< / code > that you plan to use.< / p >
< p > You'll need to uncheck < code > New Primary Group< / code > so you can manually populate < code > Primary Group< / code > with the shared group you created in the previous step. In this example I'm using a GID of < code > 1215< / code > and a < code > Primary Group< / code > name of < code > dockermedia< / code > . Leave < code > Home Directory< / code > as < code > /nonexistent< / code > , and set < code > Disable Password< / code > to < code > Yes< / code > . Uncheck < code > Samba Authentication< / code > and click < code > Submit< / code > once complete. < code > Home Directory Permissions< / code > aren't important as it's set to < code > /nonexistent< / code > , and we won't ever be accessing it.< / p >
< p > < a class = "glightbox" href = "../images/truenas-user-options.png" data-type = "image" data-width = "100%" data-height = "auto" data-desc-position = "bottom" > < img alt = "truenas-user" src = "../images/truenas-user-options.png" / > < / a > < / p >
< div class = "admonition note" >
< p class = "admonition-title" > Note< / p >
< p > If you're using a single, shared user and group setup (1000:1000 is the common one) you can leave New Primary Group checked. Assuming there's not a group that already exists with GID 1000 it will create that group automatically with the same name as the user.< / p >
< / div >
< hr / >
< h2 id = "dataset-permissions" > Dataset permissions< a class = "headerlink" href = "#dataset-permissions" title = "Permanent link" > < / a > < / h2 >
< p > Now that we have a user and a group, we can set the permissions on the dataset.< / p >
< p > Navigate to Storage -> Pools, and click ⋮ on the right side of your target dataset (< code > Media< / code > if you're following my example), then select < code > Edit Permissions< / code > .< / p >
< p > You'll arrive at a configuration screen like the one shown below. Under < code > Owner< / code > , fill out your < code > User< / code > and < code > Group< / code > information with your desired user and the shared group you plan to use for your apps. < code > User< / code > isn't super important here if you're using a NFS share and have < code > Group< / code > configured properly, but it would matter if you're doing a single-user share (i.e. if you wanted a single person to have their own dataset -> share to map).< / p >
< p > Check the boxes for < code > Apply User< / code > , < code > Apply Group< / code > , and < code > Apply Permissions Recursively< / code > (check < code > Confirm< / code > and click < code > Continue< / code > if you get a popup). Check the < code > Access Mode< / code > boxes as indicated in the image example and click < code > Save< / code > once complete.< / p >
< p > < a class = "glightbox" href = "../images/truenas-dataset-permissions.png" data-type = "image" data-width = "100%" data-height = "auto" data-desc-position = "bottom" > < img alt = "truenas-dataset-permissions" src = "../images/truenas-dataset-permissions.png" / > < / a > < / p >
< hr / >
< h2 id = "create-your-nfs-shares" > Create your NFS share(s)< a class = "headerlink" href = "#create-your-nfs-shares" title = "Permanent link" > < / a > < / h2 >
< p > Navigate to Sharing -> Unix Shares (NFS), and click < code > Add< / code > at the top right.< / p >
< p > Under < code > Paths< / code > you can either use the interactive browser by clicking < code > /mnt< / code > , or just enter the correct < code > Path< / code > . Following along with the previous examples, mine is < code > /mnt/tank/Media< / code > .< / p >
< p > Set a < code > Description< / code > if desired (recommended for tracking), and check < code > All dirs< / code > and < code > Enabled< / code > .< / p >
< p > Click < code > Advanced Options< / code > to show the rest of the options we need.< / p >
< p > Leave < code > Security< / code > alone as the defaults are fine.< / p >
< p > At the bottom, you have a couple of options. You can either specify < code > Authorized Networks< / code > for more broad access, or authorize specific hosts (my preferred method). Either way, make sure you use one of these options to ensure that whichever host is mounting the NFS share has access.< / p >
< p > Click < code > Submit< / code > once complete.< / p >
< p > < a class = "glightbox" href = "../images/truenas-nfs-share-options.png" data-type = "image" data-width = "100%" data-height = "auto" data-desc-position = "bottom" > < img alt = "truenas-nfs-share-options" src = "../images/truenas-nfs-share-options.png" / > < / a > < / p >
< hr / >
< h2 id = "configure-and-enable-nfs-service" > Configure and enable NFS service< a class = "headerlink" href = "#configure-and-enable-nfs-service" title = "Permanent link" > < / a > < / h2 >
< p > Navigate to Services and click the edit icon under < code > Actions< / code > on the < code > NFS< / code > row.< / p >
< p > Enabling < code > NFSv4< / code > is optional, but I generally prefer it since NFSv4 has some improvements over NFSv3. Make sure to check < code > Allow non-root mount< / code > under < code > Other Options< / code > .< / p >
< p > One of the most important options here is the < code > Number of servers< / code > setting. If you click on the help icon you'll see the help text for this setting, which indicates that you should keep this less than or equal to the number of CPUs reported by < code > sysctl -n kern.smp.cpus< / code > to limit CPU context switching.< / p >
< p > Any other options are mostly up to your environment and you should consult standard TrueNAS support paths for assistance.< / p >
< p > Click < code > Save< / code > once complete.< / p >
< p > Make sure to check < code > Start Automatically< / code > and click the slider under < code > Running< / code > to make sure the service is running correctly and starts at boot.< / p >
< p > < a class = "glightbox" href = "../images/truenas-nfs-service-options.png" data-type = "image" data-width = "100%" data-height = "auto" data-desc-position = "bottom" > < img alt = "truenas-nfs-service-options" src = "../images/truenas-nfs-service-options.png" / > < / a > < / p >
< hr / >
< h2 id = "mount-your-shares" > Mount your shares< a class = "headerlink" href = "#mount-your-shares" title = "Permanent link" > < / a > < / h2 >
< p > Follow standard mounting procedures for your operating system/device. In Ubuntu mounting a NFS share is as simple as adding it to < code > /etc/fstab< / code > with < code > < host> :/mnt/tank/Media /mnt/data nfs defaults,_netdev,rw 0 0< / code > , and issuing < code > mount -a< / code > (or rebooting).< / p >
< p > Regardless of method, make sure that the device ends up with a < code > data< / code > mount point. The mount point is important since it will allow us to follow the usual guide for folder structure. If you've followed the guide, from a NFS share standpoint the owner and group of the < code > /mnt/data< / code > directory will be the user and group that were previously configured in the Dataset Permissions section. If this is improperly configured you can end up with < code > nobody< / code > as the owner or group, or have permission errors.< / p >
< hr / >
< h2 id = "folder-structure" > Folder Structure< a class = "headerlink" href = "#folder-structure" title = "Permanent link" > < / a > < / h2 >
< p > Now that you have a < code > data< / code > folder, you can follow the normal folder structure recommendations, such as the one below.< / p >
<!-- BEGIN INCLUDE ../../../includes/hardlinks/docker - tree - full.md -->
< div class = "highlight" > < pre > < span > < / span > < code > data
├── torrents
│ ├── books
│ ├── movies
│ ├── music
│ └── tv
├── usenet
│ ├── incomplete
│ └── complete
│ ├── books
│ ├── movies
│ ├── music
│ └── tv
└── media
├── books
├── movies
├── music
└── tv
< / code > < / pre > < / div >
<!-- END INCLUDE -->
< p > These subfolders you need to create yourself using your preferred method. Set your permissions accordingly as well. If you use ACLs on the datasets you can replicate the usual 775/664 (UMASK 002) or 755/644 (UMASK 022) recommendation, but this guide only covers the use of basic permissions for mounting and expects the end user to fine-tune permissions via chmod, chown, and uid/gid/umask settings on the applications that will be utilizing the share.< / p >
<!-- BEGIN INCLUDE ../../../includes/support.md -->
< hr / >
< div class = "admonition question" >
< p class = "admonition-title" > Questions or Suggestions?< / p >
< p > If you have questions or suggestions click the chat badge to join the Discord Support Channel where you can ask your questions directly and get live support.< / p >
< p > < a href = "https://trash-guides.info/discord" rel = "noopener noreferrer" target = "_blank" > < img alt = "Discord chat" class = "off-glb" src = "https://img.shields.io/discord/492590071455940612?style=for-the-badge&color=4051B5&logo=discord" / > < / a > < / p >
< / div >
<!-- END INCLUDE -->
<!-- - - 8< - - "includes/support.md" -->
< hr >
< div class = "md-source-file" >
< small >
Last update:
< span class = "git-revision-date-localized-plugin git-revision-date-localized-plugin-datetime" > February 19, 2023 18:19:44< / span >
< / small >
< / div >
< footer class = "sponsorship" >
< hr >
< a href = "https://github.com/sponsors/TRaSH-" title = "Buy me a Coffee" > < img src = "/img/buy-me-a-coffee.png" alt = "Buy me a coffee" width = "137" height = "39" >
< / a >
< hr >
< / footer >
< / article >
< / div >
< / div >
< button type = "button" class = "md-top md-icon" data-md-component = "top" hidden >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" > < path d = "M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z" / > < / svg >
Back to top
< / button >
< / main >
< footer class = "md-footer" >
< div class = "md-footer-meta md-typeset" >
< div class = "md-footer-meta__inner md-grid" >
< div class = "md-copyright" >
< div class = "md-copyright__highlight" >
Copyright © 2022 TRaSH
< / div >
Made with
< a href = "https://squidfunk.github.io/mkdocs-material/" target = "_blank" rel = "noopener" >
Material for MkDocs
< / a >
< / div >
< div class = "md-social" >
< a href = "https://trash-guides.info/discord" target = "_blank" rel = "noopener" title = "trash-guides.info" class = "md-social__link" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 640 512" > <!-- ! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --> < path d = "M524.531 69.836a1.5 1.5 0 0 0-.764-.7A485.065 485.065 0 0 0 404.081 32.03a1.816 1.816 0 0 0-1.923.91 337.461 337.461 0 0 0-14.9 30.6 447.848 447.848 0 0 0-134.426 0 309.541 309.541 0 0 0-15.135-30.6 1.89 1.89 0 0 0-1.924-.91 483.689 483.689 0 0 0-119.688 37.107 1.712 1.712 0 0 0-.788.676C39.068 183.651 18.186 294.69 28.43 404.354a2.016 2.016 0 0 0 .765 1.375 487.666 487.666 0 0 0 146.825 74.189 1.9 1.9 0 0 0 2.063-.676A348.2 348.2 0 0 0 208.12 430.4a1.86 1.86 0 0 0-1.019-2.588 321.173 321.173 0 0 1-45.868-21.853 1.885 1.885 0 0 1-.185-3.126 251.047 251.047 0 0 0 9.109-7.137 1.819 1.819 0 0 1 1.9-.256c96.229 43.917 200.41 43.917 295.5 0a1.812 1.812 0 0 1 1.924.233 234.533 234.533 0 0 0 9.132 7.16 1.884 1.884 0 0 1-.162 3.126 301.407 301.407 0 0 1-45.89 21.83 1.875 1.875 0 0 0-1 2.611 391.055 391.055 0 0 0 30.014 48.815 1.864 1.864 0 0 0 2.063.7A486.048 486.048 0 0 0 610.7 405.729a1.882 1.882 0 0 0 .765-1.352c12.264-126.783-20.532-236.912-86.934-334.541ZM222.491 337.58c-28.972 0-52.844-26.587-52.844-59.239s23.409-59.241 52.844-59.241c29.665 0 53.306 26.82 52.843 59.239 0 32.654-23.41 59.241-52.843 59.241Zm195.38 0c-28.971 0-52.843-26.587-52.843-59.239s23.409-59.241 52.843-59.241c29.667 0 53.307 26.82 52.844 59.239 0 32.654-23.177 59.241-52.844 59.241Z" / > < / svg >
< / a >
< a href = "https://github.com/TRaSH-/Guides" target = "_blank" rel = "noopener" title = "github.com" class = "md-social__link" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 448 512" > <!-- ! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --> < path d = "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM277.3 415.7c-8.4 1.5-11.5-3.7-11.5-8 0-5.4.2-33 .2-55.3 0-15.6-5.2-25.5-11.3-30.7 37-4.1 76-9.2 76-73.1 0-18.2-6.5-27.3-17.1-39 1.7-4.3 7.4-22-1.7-45-13.9-4.3-45.7 17.9-45.7 17.9-13.2-3.7-27.5-5.6-41.6-5.6-14.1 0-28.4 1.9-41.6 5.6 0 0-31.8-22.2-45.7-17.9-9.1 22.9-3.5 40.6-1.7 45-10.6 11.7-15.6 20.8-15.6 39 0 63.6 37.3 69 74.3 73.1-4.8 4.3-9.1 11.7-10.6 22.3-9.5 4.3-33.8 11.7-48.3-13.9-9.1-15.8-25.5-17.1-25.5-17.1-16.2-.2-1.1 10.2-1.1 10.2 10.8 5 18.4 24.2 18.4 24.2 9.7 29.7 56.1 19.7 56.1 19.7 0 13.9.2 36.5.2 40.6 0 4.3-3 9.5-11.5 8-66-22.1-112.2-84.9-112.2-158.3 0-91.8 70.2-161.5 162-161.5S388 165.6 388 257.4c.1 73.4-44.7 136.3-110.7 158.3zm-98.1-61.1c-1.9.4-3.7-.4-3.9-1.7-.2-1.5 1.1-2.8 3-3.2 1.9-.2 3.7.6 3.9 1.9.3 1.3-1 2.6-3 3zm-9.5-.9c0 1.3-1.5 2.4-3.5 2.4-2.2.2-3.7-.9-3.7-2.4 0-1.3 1.5-2.4 3.5-2.4 1.9-.2 3.7.9 3.7 2.4zm-13.7-1.1c-.4 1.3-2.4 1.9-4.1 1.3-1.9-.4-3.2-1.9-2.8-3.2.4-1.3 2.4-1.9 4.1-1.5 2 .6 3.3 2.1 2.8 3.4zm-12.3-5.4c-.9 1.1-2.8.9-4.3-.6-1.5-1.3-1.9-3.2-.9-4.1.9-1.1 2.8-.9 4.3.6 1.3 1.3 1.8 3.3.9 4.1zm-9.1-9.1c-.9.6-2.6 0-3.7-1.5s-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3 1.1 1.5 1.1 3.3 0 4.1zm-6.5-9.7c-.9.9-2.4.4-3.5-.6-1.1-1.3-1.3-2.8-.4-3.5.9-.9 2.4-.4 3.5.6 1.1 1.3 1.3 2.8.4 3.5zm-6.7-7.4c-.4.9-1.7 1.1-2.8.4-1.3-.6-1.9-1.7-1.5-2.6.4-.6 1.5-.9 2.8-.4 1.3.7 1.9 1.8 1.5 2.6z" / > < / svg >
< / a >
< / div >
< / div >
< / div >
< / footer >
< / div >
< div class = "md-dialog" data-md-component = "dialog" >
< div class = "md-dialog__inner md-typeset" > < / div >
< / div >
< script id = "__config" type = "application/json" > { "base" : "../../.." , "features" : [ "navigation.instant" , "navigation.tabs" , "navigation.top" , "content.code.copy" , "content.action.edit" , "content.action.view" ] , "search" : "../../../assets/javascripts/workers/search.208ed371.min.js" , "translations" : { "clipboard.copied" : "Copied to clipboard" , "clipboard.copy" : "Copy to clipboard" , "search.result.more.one" : "1 more on this page" , "search.result.more.other" : "# more on this page" , "search.result.none" : "No matching documents" , "search.result.one" : "1 matching document" , "search.result.other" : "# matching documents" , "search.result.placeholder" : "Type to start searching" , "search.result.term.missing" : "Missing" , "select.version" : "Select version" } } < / script >
< script src = "../../../assets/javascripts/bundle.b4d07000.min.js" > < / script >
< script > document $ . subscribe ( ( ) => { const lightbox = GLightbox ( { "touchNavigation" : true , "loop" : false , "zoomable" : true , "draggable" : true , "openEffect" : "zoom" , "closeEffect" : "zoom" , "slideEffect" : "slide" } ) ; } ) < / script > < / body >
< / html >