Try Now

How to Cull and Rate Photos on TrueNAS

By Ingo D ·

You chose TrueNAS because you wanted your photo library on a storage platform that takes data integrity seriously. ZFS checksums, regular scrubs, snapshots you can roll back in seconds. You built a storage pool that protects your RAW files better than any consumer NAS ever could. You did not choose it for its photo-management features, because there are none. TrueNAS is a file server. It stores your data brilliantly and leaves every other job to the applications you connect to it.

The problem is that after a shoot, you need to turn a thousand frames into fifty keepers, and TrueNAS cannot help you do that. It has no photo app. It has no rating interface. It has no culling workflow of any kind. You are left with the same desktop round-trip every other NAS photographer knows: copy the shoot to a laptop, import into Lightroom, cull there, and hope the metadata stays in sync with the files on the server. It works, but it costs you hours.

This guide covers the faster path: culling directly on your TrueNAS NAS over SMB, with setup steps for both SCALE and CORE, TrueNAS-specific troubleshooting, and the XMP handoff that lands your selects in Lightroom and Capture One without re-importing.

Why doesn’t TrueNAS have a built-in photo culling tool?

TrueNAS is a storage operating system, not a photo-management platform. There is no built-in photo viewer, no rating interface, and no culling workflow in either SCALE or CORE. This is not an oversight. It is by design. iXsystems builds TrueNAS to be the most reliable ZFS storage platform available, and it delegates every application-level job to the apps and services you run on top of it.

Synology NAS devices ship with Synology Photos. QNAP ships QuMagie. UGREEN ships a cloud-photos-style photo app. TrueNAS ships none of these, because its audience (homelab operators, self-hosters, and professionals who value data integrity above convenience) prefers purpose-built tools over bundled ones. You run Plex for media, Nextcloud for files, and now CullKit for photo culling. Each does one thing, and does it on the same ZFS pool your photos already live on.

The gap this creates for photographers is real. Without a culling tool that connects directly to the share, you are back to the copy-to-laptop round-trip. The good news is that TrueNAS speaks SMB natively, which is all any SMB-capable culling app needs. The configuration is the part that differs from other NAS brands, and it is worth getting right.

How do I set up an SMB share on TrueNAS SCALE for photo culling?

TrueNAS SCALE is the Linux-based version of TrueNAS and the one most new users install. Its web interface is different from CORE’s, and the SMB setup path reflects the SCALE design.

  1. In the SCALE web interface, open Shares in the left sidebar, then select Windows (SMB) Shares and click Add.
  2. Under Path, browse to the ZFS dataset that holds your photos. A common layout is /mnt/tank/photos where tank is your pool name and photos is the child dataset you created for your library.
  3. Give the share a Name; something descriptive like photos or shoots. This name is what you will type into CullKit later, not the full dataset path.
  4. Under Purpose, leave the default preset (or choose “No presets” if you want to tune ACLs manually). Enable the Enabled checkbox and click Save.
  5. If the SMB service is not running, SCALE prompts you to start it. Confirm and wait for the service to come online.
  6. Confirm your user account has permission on the dataset. Go to Credentials → Local Users, find your account, and check that it appears in the dataset’s ACL. If it does not, go back to the dataset, click Edit Permissions, and add your user with the appropriate access level.

TrueNAS SCALE uses NFSv4 ACLs by default. If you migrated a dataset from an older FreeBSD-based system (CORE), the permissions model may still be POSIX. Either works for SMB, but the ACL editor in the web interface looks different between the two. The SCALE documentation at https://www.truenas.com/docs/scale/scaletutorials/shares/smb/addsmbshare/ keeps the latest UI screenshots current.

How do I set up an SMB share on TrueNAS CORE for photo culling?

TrueNAS CORE is FreeBSD-based and has a different web interface, though the SMB fundamentals are the same.

  1. Open the CORE web interface and navigate to Sharing → Windows (SMB) Shares → Add.
  2. Select the dataset path that holds your photo library (for example /mnt/tank/photos). The dataset must already exist; create one under Storage → Pools if it does not.
  3. Enter a Name for the share. This is the visible share name in your SMB client, so make it something clear like photos.
  4. Leave the Purpose dropdown at its default or choose “Basic share”. Set the share as Enabled and click Submit.
  5. If prompted to start the SMB service, click Start Service.
  6. Verify your user has permission on the dataset under Accounts → Users and through the dataset ACL (Storage → Pools → Edit Permissions).

The key difference on CORE is that ACLs default to Unix-style permissions unless you explicitly switched a dataset to NFSv4 ACLs. For most photo libraries, standard owner/group/world read-write on the dataset works fine. If you see permission-denied errors from the SMB client, the first thing to check is the dataset permission mask, not the share-level access.

CullKit is an independent product. It is not affiliated with or endorsed by iXsystems or TrueNAS. It connects to TrueNAS devices via the standard SMB protocol, the same way any other SMB client does.

How do I connect CullKit to my TrueNAS share?

Once the SMB share is live, connecting CullKit takes under a minute.

  1. Find your TrueNAS IP address. In SCALE, it is on the Dashboard under System Information. In CORE, it is on the main dashboard or under Network → Interfaces. Typically something like 192.168.1.50.
  2. In CullKit, add an SMB connection with the address smb://192.168.1.50/photos (or the share name you chose).
  3. Enter your TrueNAS user credentials: the same username and password you use to log into the web interface.
  4. Browse to your shoot folder and start a culling session. The connection is stored securely in the device Keychain.

If your TrueNAS has a static hostname on your local network, you can also use smb://truenas.local/photos. A static IP for the NAS is the more reliable option, especially if your router’s DHCP server changes leases. Consider assigning one under Network → Interfaces → Edit in SCALE, or Network → Global Configuration in CORE.

Nothing is copied. Nothing is uploaded. Your photos stay on the ZFS pool, and CullKit reads and writes directly to the share over your local network.

How does the culling session work on TrueNAS-stored photos?

CullKit is a dedicated culling and rating app, not an editor. It sits between your memory card and your editing software and handles the first-pass triage. You browse, rate, flag, tag, and organise. The rest (develop, crop, and export) belongs to Lightroom or Capture One.

On iPhone and iPad, the culling interface is full-screen and gesture-driven. Swipe right to keep a frame, swipe left to reject it, tap to assign a star rating from 1 to 5, and use the quick-access bar for colour labels and tags. On Mac, the workflow is keyboard-driven: number keys for star ratings, P to pick, X to reject, 0 to clear, and arrow keys to move through frames. Auto-advance carries you to the next frame the moment you make a decision.

A session runs in three phases: start (review all frames in the folder, unrated only, or a subset filtered by rating or label), rate (the main swipe or keyboard pass), and batch review (confirm your selects before the ratings are written to disk). This lets you work in passes: a fast first sweep to cut the obvious discards, then a focused second pass to star-rate the survivors. For a portrait photographer with 900 frames on a TrueNAS share, a culling session over a wired or 5GHz Wi-Fi connection runs at roughly three to five seconds per frame for a decision pass. A 900-frame shoot takes about 30 to 45 minutes of focused culling.

The ZFS advantage here is subtle but real. Because ZFS stores checksums on every block, a background scrub (which you can schedule weekly in Data Protection → Scrub Tasks) confirms that no bit rot has crept into your library between shoots. When CullKit reads a RAW file from the share to render a preview, ZFS verifies the data silently in the background. For a photographer who keeps a working library for months or years, that guarantee matters.

How do my ratings get into Lightroom or Capture One from TrueNAS?

Every star rating, reject flag, colour label, and tag you assign in CullKit is written to an XMP sidecar file stored alongside your RAW files on the TrueNAS share. XMP is the open metadata standard that Lightroom, Capture One, and Darktable all read natively. It is not a proprietary format, and the sidecars are plain files that live on your ZFS pool, just like your RAWs.

When you open your working folder in Lightroom after a culling session, your selects are already there. Five-star keepers are rated. Rejects are flagged. Colour labels are set. No re-importing. No manual metadata sync. If the folder is already in your Lightroom catalogue, run Library → Synchronize Folder (or Read Metadata from Files) and Lightroom picks up every rating CullKit wrote. In Capture One, import the folder into a session or catalogue and the XMP sidecars are read automatically.

RAW+JPEG pairs share a single sidecar, following the Lightroom convention. Nothing is duplicated. Nothing is uploaded to a cloud. The sidecar is a small text file, typically a few kilobytes, sitting right next to the RAW it describes.

How do ZFS snapshots protect my photo library during culling?

One TrueNAS feature that is genuinely useful during culling is the ZFS snapshot. Before you start a culling session on a large shoot, take a manual snapshot of the dataset. In SCALE, go to Data Protection → Snapshots → Add, select your photos dataset, and create a snapshot called something like pre-cull-20260728. It takes seconds regardless of dataset size.

A snapshot is a point-in-time record of every file on the dataset. It is read-only, it consumes no extra space initially, and you can browse it from any SMB client by navigating to the .zfs/snapshot directory inside the share. If you accidentally delete the wrong folder during an organise pass, or if you change your mind about a batch of ratings, you can copy files back from the snapshot. No backup restore, no waiting. The snapshot is just there.

This is optional, and most culling sessions never need it. But for a wedding photographer with 2,500 frames that represent a once-only event, sixty seconds spent on a snapshot before the cull is a cheap insurance policy. TrueNAS is the only NAS platform in the category that makes this level of data protection standard.

Troubleshooting TrueNAS SMB connections

  • “Connection refused” or the NAS is not found. The SMB service is probably not running. In SCALE, check System Settings → Services and confirm SMB shows as running. In CORE, check Services. If it is stopped, start it and confirm the checkbox to start automatically on boot.
  • Credentials prompt loops. Either the username or password is wrong, or the account lacks permission on the dataset. On SCALE, go to Datasets → Edit Permissions for your photos dataset and add your user with Full Control or Modify access. On CORE, check Storage → Pools → Edit Permissions.
  • You can see folders but not open files. The share-level permissions are fine, but the dataset ACL is blocking read access. Re-check the dataset permissions for your user account.
  • RAW thumbnails load slowly over Wi-Fi. Full-resolution previews stream over the network and render progressively. A wired connection between the NAS and your router, plus a 5GHz Wi-Fi client, makes a measurable difference on large RAWs. If your TrueNAS has multiple network interfaces, consider dedicating one to your photo share.
  • SMB share works on one device but not another. The share configuration is correct, but the client device may be on a different subnet or VLAN. Confirm both the NAS and the device you are culling from are on the same network segment.
  • Some RAW formats do not render. CullKit supports most common RAW formats. Very new camera models or proprietary formats may need an update. Check the supported-format list on the CullKit site or test with a known-good file first.

Why does a local-only workflow matter for TrueNAS photographers?

A cloud photo app would ask you to upload your entire library before you can review it. For a photographer who runs TrueNAS specifically to own their data on a ZFS pool they control, that is the opposite of the goal. CullKit processes everything locally. Your photos never leave your network. Credentials are stored in the device Keychain. There is no third-party server involved, no additional storage subscription, and no privacy compromise. For the detail, see the privacy FAQ.

You built the TrueNAS pool for data integrity and control. CullKit works on that same principle. The files stay where you put them, on your hardware, protected by ZFS. The ratings and flags are written as standard XMP sidecars, also on your hardware. Nothing leaves.

Getting started

CullKit runs on iPhone, iPad, and Mac (Apple platforms only; there is no Android or Windows version). You can test with a local folder or external SSD if you want to try the culling workflow before connecting your TrueNAS share. A built-in demo mode lets you explore the full interface on sample data with no NAS required.

Browse is free. The Pro subscription includes a seven-day free trial, then monthly or yearly, and unlocks culling, star ratings, XMP sidecar writing, colour labels, move, and delete. Once your TrueNAS SMB share is connected, your entire photo library is ready to cull from the device you already carry.

Download CullKit from the App Store or learn more at cullkit.com.


CullKit is an independent product. It is not affiliated with or endorsed by iXsystems, Inc. or TrueNAS.

← Back to all posts