Roadmap¶
What is planned, in priority order, with honest notes on where each item actually stands. Updated as things move; anything finished goes to Project status.
Next¶
Signed repository packages¶
Manifest signing is done: the manifest carries a detached signature, the updater checks it against the key shipped inside the image, and it refuses to go on when the key is missing or the signature does not verify. That replaced the inherited scheme, which relied on an iX certificate authority and has been cut out.
Package signing is done too, since v0.1.5-dev: the repository catalogues
are signed at publishing time with a separate repository key (RSA, through
pkg's signing_command, the way FreeBSD does it), and a system on v0.1.5-dev or
later checks them against a key fingerprint shipped in the image
(signature_type: fingerprints). The fingerprints are kept in trusted/ and
revoked/ parts, so the key can be replaced later. Publishing refuses a
catalogue that clients would reject. Systems on earlier builds do not check
catalogue signatures.
What is left is replay: a compromised update server could serve an older catalogue that was validly signed with the same key. That is not addressed yet and is the next step here. The updater keeps requiring HTTPS.
A web interface for containers¶
Containers run from the command line, and now they need an interface. Not a Portainer clone — the minimum someone actually installs a NAS for:
- list of containers and images, state, resource use;
- pull an image, create a container: name, ports, a dataset mounted inside, environment variables, start on boot;
- start, stop, remove, read the log;
- a link to the application's own web interface, where the container offers one.
On the way it has to handle two known traps by itself: podman storage must
live on a dataset, or it ends up in tmpfs, and for Linux images the interface
should report the state of emulation rather than fail silently with
Exec format error.
Later¶
A firewall in the web interface¶
TrueNAS never had one — a deliberate call by iX that a NAS is not a firewall. We disagree: a machine holding data sits on a network, and filtering rules belong in the interface. The research is done. The rule model is taken from OPNsense (BSD licence), the backend is pf, user rules are isolated in their own anchor and leave container NAT alone, and application is atomic with a guard against locking yourself out: an undeletable rule for interface access plus a confirmation with a rollback timer. Not implemented yet.
A new update mechanism: pkgbase and bectl¶
The inherited updater was written in 2014, when the standard tools did not exist, and it moves the system around in a gigabyte-sized archive. FreeBSD 15 supports pkgbase officially — the base system as ordinary pkg packages. The plan: clone a new boot environment (copy-on-write), update the packages inside it with plain pkg, activate, reboot; roll back by activating the previous environment. A routine update then costs megabytes instead of a gigabyte, and the old version is never touched.
Publishing builds automatically¶
The build runs from sources to ISO on its own, but publishing to the update train is still done by hand. Finish the pipeline: built, passed acceptance, published.
Further out¶
- Wider test coverage: different disk controllers, raidz pools, separate cache and log devices, behaviour under real load.
- Ready-made storage appliances on BSDnas — an idea being weighed, no more than that.
What this roadmap does not have¶
Dates. Promising one would cost more than the feature itself. The order is the promise: what is higher comes first.