Rockstor Git Gource – project visualization

Gource is Git shiny.

Gource is an open source GPLv3 licensed OpenGL visualiser of Git/SVN/Mecurial, and Bazaar repositories over time and so serves well to indicate a project’s growth / activity.

gource git snapshot showing many names
Family Code Feeding

Wikipedia’s “A picture is worth a thousand words” page has the following:

The actual Chinese expression “Hearing something a hundred times isn’t better than seeing it once” (, p bǎi wén bù rú yī jiàn) is sometimes introduced as an equivalent, as Watts‘s “One showing is worth a hundred sayings”.[6] This was published as early as 1966 discussing persuasion and selling in a book on engineering design.[7]

Rockstor’s 5 git repositories visualised in just over 1.5 minutes.

The essence of Gource’s use, at least on a linux desktop, is to initially build from the code and then point the resulting binary at a copy of one’s repository. The wrinkle here is that Rockstor, akin to many projects, consists of multiple repositories:

  • rockstor-doc – our docs in their original restructured text format.
  • rockstor-core – the main code repository.
  • rockon-registry – our docker based ‘rock-on’ plugins repo.
  • rockstor-iso – code / artifacts concerning the creation of our stable release iso images.
  • rockstor-jslibs – the collection of js libraries we use to do what js does best.

But fear not as the now 29 strong developers of Gource have us covered in their appropriately named: Visualizing-Multiple-Repositories.

“Sometimes it may be interesting to show the history of multiple projects in the same Gource animation.”

Thanks people.

This mini HowTo is essentially a re-telling of that page as applied to Rockstor’s 5 repositories. The hope is that this ‘telling’ might aid other multi-repo projects and save us all some time; at least on mass.

Building Gource

As of 8th September 2017 v0.47 was released which is the version I used here. Be sure to visit their releases page to check on availability of any newer releases. As always it’s best to resource the original text on install matters: please favour the projects own INSTALL doc over what I state here. But by way of completeness I’ll indicate how it worked for me:

Using a Fedora26 desktop:

sudo dnf install git freetype-devel pcre-devel glew-devel SDL2-devel SDL2_image-devel boost-filesystem boost-devel glm-devel
mkdir ~/Downloads/gource
cd ~/Downloads/gource
wget https://github.com/acaudwell/Gource/releases/download/gource-0.47/gource-0.47.tar.gz
tar xvf gource-0.47.tar.gz
cd ~/Downloads/gource/gource-0.47

We refrain from ‘make install’ to keep all our gource activities confined to our Downloads dir. (snap / flatpak suggestions anyone?)

Now we jump up a directory and grab a local copy of Rockstor’s repos:

cd ~/Downloads/gource/
git clone https://github.com/rockstor/rockstor-core.git
git clone https://github.com/rockstor/rockstor-doc.git
git clone https://github.com/rockstor/rockon-registry.git
git clone https://github.com/rockstor/rockstor-jslibs.git
git clone https://github.com/rockstor/rockstor-iso.git

then we resource Gource’s ability to create a custom-log of activity spanning all the above repos. For this we jump back into our gource build directory:

cd ~/Downloads/gource/gource-0.47

and point the binary at each of the rockstor repos in turn with switches requesting our needed custom logs.

./gource --output-custom-log ../doc-log.txt ../rockstor-doc/
./gource --output-custom-log ../core-log.txt ../rockstor-core/
./gource --output-custom-log ../rockon-log.txt ../rockon-registry/
./gource --output-custom-log ../iso-log.txt ../rockstor-iso/
./gource --output-custom-log ../jslibs-log.txt ../rockstor-jslibs/

Then back up to our new logs:

cd ~/Downloads/gource/

Next we make our repos more distinct by putting them on separate branches via multiple stream edits (sed):

sed -i -r "s#(.+)\|#\1|/doc-repo#" doc-log.txt
sed -i -r "s#(.+)\|#\1|/core-repo#" core-log.txt
sed -i -r "s#(.+)\|#\1|/rockon-repo#" rockon-log.txt
sed -i -r "s#(.+)\|#\1|/iso-repo#" iso-log.txt
sed -i -r "s#(.+)\|#\1|/jslibs-repo#" jslibs-log.txt

Now we combine our custom activity logs in a single “all-rockstor-repos-log.txt” thus:

cat doc-log.txt core-log.txt rockon-log.txt iso-log.txt jslibs-log.txt | sort -n > all-rockstor-repos-log.txt

And finally, at least for now, we can move back to our binary dir:

cd ~/Downloads/gource/gource-0.47/

Gource Plays Rockstor Repos

Rockstor dev at 20 days a second = 1m 37s:

(Less than fair as major contributions / contributors flash by but serves as a quick test run.)

./gource -1280x720 --seconds-per-day 0.05 --highlight-users --highlight-colour E76545 --hide filenames --hide-root --multi-sampling ../all-rockstor-repos-log.txt

And if you liked that, try the slightly more sane speed variant of:

Rockstor dev at 5 days a second = 5m 43s:

./gource -1280x720 --seconds-per-day 0.2 --highlight-users --highlight-colour E76545 --hide filenames --hide-root --multi-sampling ../all-rockstor-repos-log.txt

Note the following abstract of the interactive controls:

  • (TAB) key to switch user highlight
  • (Space bar) pause / resume the animation
  • (V) center camera on above user (if selected) – bit much on the brain
  • (F12) Screenshot
  • (Alt+Enter) Fullscreen toggle – a winner this one
  • (+-) Adjust simulation speed
  • (ESC) Quit

There’s also a nice selection of mouse interactions such as jumping to any time point; although this does reset the graph. While paused one can inspect the details of individual files and users, and dragging with the left mouse button manually controls the camera. Centre button toggles tracking / entire tree view.

Building the Bling Vid

To capture the raw video we use Gource’s “-o” switch.

Entire dev history in 1.5m (earlier video):

./gource -1280x720 --seconds-per-day 0.05 --highlight-users --highlight-colour E76545 --hide filenames --hide-root --multi-sampling ../all-rockstor-repos-log.txt -o ../rockstor-dev.ppm

We then encode to x264 via ffmpeg from Negativo17’s multimedia repo: https://negativo17.org/handbrake/ (Elrepo dependency) Thanks.

sudo dnf install ffmpeg

ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i ../rockstor-dev.ppm -vcodec libx264 -preset medium -pix_fmt yuv420p -crf 20 -threads 0 -bf 0 ../rockstor-dev.mkv

And 16.2 GB becomes 33 MB.

Entire dev history in just under 6 minutes (slightly less manic):

./gource -1280x720 --seconds-per-day 0.2 --highlight-users --highlight-colour E76545 --hide filenames --hide-root --multi-sampling ../all-rockstor-repos-log.txt -o ../rockstor-dev-long.ppm

ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i ../rockstor-dev-long.ppm -vcodec libx264 -preset medium -pix_fmt yuv420p -crf 20 -threads 0 -bf 0 ../rockstor-dev-long.mkv

57 GB via a similar ffmpeg command (differing file names) becomes 60 MB: bargain.

And finally the last 90 days at the rather more sedate 1 second/day = 1m 31s:

./gource -1280x720 --seconds-per-day 1 --start-date $(date -I --date='-90 days') --highlight-users --highlight-colour E76545 --hide filenames --hide-root --multi-sampling ../all-rockstor-repos-log.txt -o ../rockstor-dev-last-90days.ppm

ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i ../rockstor-dev-last-90days.ppm -vcodec libx264 -preset medium -pix_fmt yuv420p -crf 20 -threads 0 -bf 0 ../rockstor-dev-last-90days.mkv

Where 15 GB via ffmpeg becomes 9 MB.

Note that as with the mouse ‘time jumps’ in the interactive mode covered earlier, using the “–start-date” option, as we have just done, results in no previous activity being displayed. That is, only files changed after the given date, and their respective repositories, will appear in the resulting Gource graph.

And thus we have our thousand words.


Read More

Announcing Rockstor 3.9.1

Rockstor 3.9.1 is now available. Six contributors have come together to close 30+ issues, including Major feature updates and bug fixes to make this update happen. Disk encryption with LUKS is the biggest feature we’ve added and something the community has been wanting for a while. We’ve also added support for scheduling power management and jumbo frames just to name a few.  This update also comes with a 4.10 kernel from elrepo and a btrfs-progs update from the BTRFS community. It is my pleasure to make this announcement.

For new installs, We created a brand new 3.9.1 ISO. Please purchase a subscription for Stable updates subscription after install and enjoy these benefits. Stable update subscribers can update from the UI as usual.

Here’s the list of issues we closed in this release

Support full disk LUKS #550 @phillxnet
Schedule power down/up of the system #735 @MFlyer
Graceful shutdown with cron job #1306 @MFlyer
UI Shares view incorrect sort on size #1673 @MFlyer
Rockstor Translations #1643 @MFlyer
Systemd warns that “rockstor-hdparm.service is marked world-inaccessible” #1493 @schakrava
Importing an unlabeled btrfs RAID5 pool fails #1342 @schakrava
single pool metadata level is single not dup #1409 @phillxnet
Samba Custom configuration UI glitch #1691 @MFlyer
rockstor update doesn’t fail if db migration fails #1332 @schakrava
Add Yum capabilities to System updates #1619 @MFlyer
Turn off debug logs in Rockstor built by rpm(prod/testing builds) #1478 @schakrava
update nginx and /etc/issue if mgmt interface config changes #1701 @schakrava
Muting gulp tasks over buildout process #1708 @MFlyer
nbd devices do not support S.M.A.R.T. #1705 @KaiRo-at
fix ‘for’ attributes on user_create_template labels #1706 @KaiRo-at
create SHA256 certs so browser devtools don’t complain all the time #1707 @KaiRo-at
overflow of disk.role db field #1709 @phillxnet
Non integer threshold value in SMART data blocks reporting #1725 @phillxnet
support ro rw degraded and skip_balance mount options #1728 @phillxnet
Support Jumbo frames config in the UI #1044 @schakrava
Extra button adding storage to a Rock-On #1341 @priyaganti
#1286 #1286 @schakrava
AFP export doesn’t expand when underneath share (subvolume in btrfs) expands #614 @schakrava
insufficient use of btrfs device scan #1547 @phillxnet
Rock-on bad behaviour when starting with no configuration #1579 @priyaganti
add cli initiated config backup #1382 @daniel-illi
change Pool API to use ids instead of names #1741 @schakrava
detached disks used in mount command #1422 @phillxnet
Display client-side error differently #1743 @priyaganti
change disk api to use ids instead of names #1746 @schakrava
propagate user errors properly in user management #1748 @schakrava
minor disk api regression follow up #1750 @phillxnet

Thank you for reading till the end! Here’s a discount code for first 25 Stable subscriptions: ROCKSTOR391.

Read More

Announcing Rockstor 3.9.0

We’ve just wrapped up a fun release cycle, and it’s my pleasure to announce Rockstor 3.9.0. Our community has been really active and we’ve prioritized nicely to improve on a few different areas. 6 contributors have come together for this release and besides working on new features and bug fixes, we made significant improvements to code quality. @phillxnet has made a big enhancement to the disk management subsystem. I’ve made large code quality improvement to backend Python stack. @MFlyer collaborated with me on that and took upon himself to do the same for all of Javascript stack. He made several ninja style contributions and helped fix many bugs. I’d say this is a nice release with some new stuff and a bunch of useful maintenance updates. Thanks to everyone that made this happen!

For new installs, We created a brand new 3.9.0 ISO. Please purchase a subscription for Stable updates subscription after install and enjoy these benefits. Stable update subscribers can update from the UI as usual.

Here’s the list of issues we closed in this release

Issue: Non-ASCII password on user creation leads to ‘User(…) already exists’ #1555 @ansemjo
[Enhancement] data_collector move from Django ORM to CRUD operations (on db writes) #1567 @MFlyer
Dashboard widget resizing is glitchy in Chrome on Mac #1530 @MFlyer
[Bug] Disks widget console errors #1596 @MFlyer
cosmetic issue: create snapshot label appears twice in share details view #1564 @MFlyer
SMART edit icon tooltip text in disks table view not fully visible #1565 @MFlyer
More documentation on services page! #1168 @priyaganti
cleanup dependencies and add build status badge to readme #1604 @schakrava
root and home shares offer delete button #1583 @MFlyer
fs unit tests settings issue #1609 @phillxnet
work around failure of udev to observe btrfs device add #1606 @phillxnet
Flake8 satisfying style improvements and cleanup #1615 @schakrava
Sector Size empty for 512e drives #1590 @chrstphrchvz
Fixing Jenkins’ Flake8 regressions #1626 @MFlyer
enhance disk role/management subsystem #1494 @phillxnet
balance cancel requested ‘unit test’ false alarm #1627 @phillxnet
Share usage not reported correctly while pool usage is #1412 @MFlyer
improve state column clarity in network device tables #1633 @phillxnet
keyerror in samba config restore #1585 @MFlyer
“Comment” field not filled when editing Samba share #1647 @MFlyer
inconsistent redirect role validator message and bug #1651 @phillxnet
[Rockstor Devel Feature] Add Gulp file testing #1632 @MFlyer
Rock-on share columns reversed #1581 @schakrava
Remove python downgrade workaround #1587 @schakrava
[Flake8] Unused import over initrock.py script #1663 @MFlyer
Small UI bug while installing rock-ons #1660 @MFlyer
fix replication regression from django 1.8 update #1667 @schakrava
Make software update non-disruptive #1188 @schakrava
Updating Font Awesome to latest 4.7 #1669 @MFlyer

Thank you for reading till the end! Here’s a discount code for first 25 Stable subscriptions: ROCKSTOR390.

Read More

Announcing 3.8.16

I am happy to announce Rockstor 3.8.16. It has been an exciting release cycle in which 6 contributors have come together to close 35 issues in the last 5 weeks. The theme of this release is Maintenance! It’s worth noting that there are many overall stability and reliability improvements in this release, from Django upgrade to the tiniest of UI fixes and everything in between. A large set of issues reported in our forum and github were resolved. We’ve really suited Rockstor up for a year-end holiday party and are deeply grateful for the engagement and contributions of our great community!

For new installs, We created a brand new 3.8.16 ISO which is a rebase of a newer CentOS release. Please purchase a subscription for Stable updates subscription after install and enjoy these benefits. Stable update subscribers can update from the UI as usual. Please refer to the e-mail we sent out to all subscribers with some additional information that may be necessary.

Here’s the list of issues we closed in this release

Improve Dashboard pool usage widget #1426 @sfranzen
Improve pool usage reporting #1460 @sfranzen
Linked to #1379 – writable snapshots #1482 @MFlyer
Show up Rockstor as a Server in AFP Shares #1485 @MFlyer
Ajax-Loader.gif does not dissappear #623 @MFlyer
Increase widget animation timing to grant a better smoothing #1487 @MFlyer
NUT timed shutdown option #982 @phillxnet
improve NUT port config usability #1458 @phillxnet
Fix time comparison failing #1479 @MFlyer
null value in column “details” when parsing SMART error log #1498 @phillxnet
Remove flash websocket files #848 @MFlyer
Glitch in SMART error log UI #1001 @phillxnet
SMART parsing issue shell script helper #1507 @phillxnet
Small Samba regression #1495 @MFlyer
Move from gevent-socketio python-socketio #1503 @MFlyer
Make services configure forms as modals #1278 @MFlyer
remove gateway requirements for manual interface configuration #1520 @tomtom13
Improve Pool delete UX #1195 @gkadillak
use chattr to make parent dirs of mount points immutable #1414 @schakrava
Missing favicon on login page #1535 @MFlyer
failure to submit on modal service dialogs #1537 @MFlyer
support pool compression inline edit in pool details view #1464 @priyaganti
Update Django #1190 @schakrava
Improved handling of spawned functions in socket server #1524 @MFlyer
Samba configuration enhancements #1540 @MFlyer
incorrect space calculation on disk removal #1553 @phillxnet
Wrong Samba AD closing line #1548 @MFlyer
unsaved related object fix #1551 @phillxnet
Resize UI bug #1194 @priyaganti
Fix loading while edit scheduled tasks #1561 @MFlyer
Snapshots & scrubs scheduled tasks not working – double issue #1560 @schakrava
data_collector changes for django >= 1.7 #1556 @MFlyer
add datatables feature to users view #1370 @MFlyer
add datatables feature to pool srub and rebalance tables #1369 @MFlyer
Pool creation succeeds but refresh icon(ajax-loader) still exists #1563 @MFlyer

Thank you for reading till the end! Here’s a discount code for first 25 Stable subscriptions: ROCKSTOR3816.

Read More

Announcing Rockstor 3.8.15

I am thrilled to announce the release of Rockstor 3.8.15. It’s been a long release cycle and It’s our 30th release, woohoo! We have entered a new phase of Rockstor community growth with steady patches from dedicated contributors. A total of 43 issues were closed making this a substantial update. Several enhancements were made to the UI, prominently to the dashboard. I’d like to also highlight the big(design and implementation) refactoring of our backend disk management. Last but not least, numerous improvements and bugfixes were committed throughout the stack. Please see the list below for detailed log of all patches that went in.

It’s ironic that we took longer to close this release cycle despite more contributors and a lot more eyeballs overall, but that is primarily due to inefficiencies in my gate-keeping. We learned how to make things more efficient in the next cycle and plan to close it quicker.

The 3.8.15 ISO is downloadable from here for new users. After installation, please purchase Stable update subscription and take advantage of many benefits that come with it. Existing subscribers on the other hand, can update easily from the Web-UI.

List of issues we closed in this cycle.

Overhaul pagination, sort and search on UI using DataTables. #1138 @priyaganti
Revise internal use and format of device names. #1320 @phillxnet
Support customizing web-ui port. #983 @schakrava
Improvements to password recovery system. #1290 @MFlyer
Remove smb service dependency on rockstor-bootstrap. #1241 @schakrava @phillxnet
add raid56 warning. #1372 @phillxnet
Fix Samba regression from 3.8-14.03 #1385 @phillxnet
Add local/current time on the UI. #1362 @MFlyer
Update postfix config when hostname is changed. #1392 @MFlyer
Edit user page – bad render for username and uid. #1389 @MFlyer
Support Console access from the Web-UI with Shell In a Box. #518 @MFlyer
Allow force removal of Rock-on metadata. #1124 @schakrava
improve nvme compatibility for system disk. #1397 @phillxnet
Fix Services page bottleneck on Active Directory status. #1391 @MFlyer
Improve test e-mail notification. #978 @MFlyer @schakrava
Field validation in e-mail setup. #1340 @MFlyer @schakrava
GMail detects Rockstor as a Less Secure application. #1083 @MFlyer
single to raid1 pool resize not reflected in Web-UI. #1406 @grebnek
Email Alerts page missing dependency. #1410 @MFlyer
Docker journald logging. #1420 @sfranzen
Adjust share usage reporting. #1415 @sfranzen
add samba shadow localtime param. #1252 @MFlyer
Improve Dashboard pool usage widget. #1426 @sfranzen
Fix: argument to docker run should still be -d. #1423 @sfranzen
Fix DataTables error on AFP shares view. #1442 @sfranzen
Bootstrap inline edit with X-editable js library. #1356 @priyaganti
Inline edit – pool compression in Pools view. #1401 @priyaganti
Web-UI initiated balance status not updated during execution. #1405 @phillxnet
improve dashboard disk activity widget for by-id names. #1366 @phillxnet
Allow scheduling of read-only snapshot creation. #1379 @tomtom13 @schakrava
Improve how smb.conf is updated. #1453 @MFlyer
Fix: Dashboard crashes if left open for a long time #998 @MFlyer
add the second knowns fake uuid to exception list. #1461 @schakrava
fs unittests part 1. #1443 @phillxnet
dashboard crashes if opened long – Memory Widget – Part 3. #998 @MFlyer
dashboard crashes if opened long – Cpu Widget – Part 1 Final. #998 @MFlyer
dashboard crashes if opened long – Network Widget – Part 2. #998 @MFlyer
dashboard crashes if opened long – Top Shares Widget – Part 4. #998 @MFlyer
dashboard crashes if opened long – Pool Usage Widget – Part 5. #998 @MFlyer
dashboard crashes if opened long – Storage Metrics Widget – Part 6. #998 @MFlyer
dashboard crashes if opened long – Disks Widget – Part 7. #998 @MFlyer
New progressbars height, tested over 10+ shares. #1476 @MFlyer
support long nutanix device names. #1471 @phillxnet

Thank you for reading till the end! Here’s a discount code for first 25 Stable subscriptions: ROCKSTOR3815.

Read More

Announcing Rockstor 3.8-14

I am happy to announce that Rockstor 3.8-14 is now released. We’ve added big new features including an interface to power down HDDs to reduce noise and conserve electricity, and a way to browse and download logs almost too easily with a few clicks on the UI. As usual, there are may enhancements and bug fixes. 34 issues were closed altogether by the hard and smart work of 8 different contributors!

The 3.8-14 ISO is downloadable from here for new users. After installation, please purchase Stable update subscription and take advantage of many benefits that come with it. Existing subscribers on the other hand, can update easily from the Web-UI.

We welcomed new contributors in this 3.8-14 release cycle, most we’ve had so far working together on one release. As the project’s maintainer this makes me very happy. Our community is strengthening with every release, thanks to everyone including code contributors, forum members, incident support purchasers, stable-updates subscribers, patrons donating and purchasing t-shirts, usb drives and stickers from our shop. Much appreciated!

To better organize support matters and provide a reliable platform for our paying users, we’ve launched a new support portal, using osticket. We hope to provide more value to customers purchasing incident bundles. Home users that subscribe to Stable updates are also eligible for limited paid support with the option to purchase more support as needed. Details will be added to documentation in the coming days.

Final note, here’s the long list of issues we closed in this cycle.

Add anacron like feature to task scheduling. #1233 @MFlyer
Add support for policy driven powering down of HDDs from the UI. #885 @phillxnet
Add the feature to browse and download various log files from the UI. #762 @MFlyer
Significantly improve UI templates part 2. #1287 @priyaganti
Significantly improve UI templates part 3. #1304 @priyaganti
Significantly improve UI templates part 4. #1307 @priyaganti
Add different support flows for stable and testing channel users. #1339 @schakrava
Improve Active Directory info popup. #1284 @ScarabMonkey
Improve multiple disk selection during resize. #1196 @priyaganti
Show correct screens in add/remove disks during resize. #811 @priyaganti
Fix power menu alignment. #1192 @priyaganti
Use chardet to properly encode/decode user/group names. #1283 @demount
Add Active Directory rfc2307 support. #1263 @MFlyer
Sort Shares by name in the UI. #973 @maxhq
Fix a regression in scheduled tasks. #1296 @MFlyer
Fix Total capacity widget resize bug. #1225 @MFlyer
Fix deprecated volume removal bug in rock-on update. #1294 @phillxnet
Fix transfer rate column in replication history. #1279 @priyaganti
Improve NTP check in Active Directory service. #1301 @ScarabMonkey
Enhance Rock-on service config UX. #1202 @priyaganti
Properly update mdraid member status. #1214 @phillxnet
Add pagination support to replication tasks. #1305 @priyaganti
Improve snmp config UI. #1240 @schakrava
Humanize replication transfer rate display. #1317 @priyaganti
Fix bug in Pool disk removal wizard. #1325 @phillxnet
Fix a bug in scheduled tasks. #1327 @MFlyer
Add support for nossd mount option. #1313 @priyaganti
Fix regression in network widget. #1302 @MFlyer
Show system users shell info. #1335 @MFlyer
Add the ability of add/remove drives to/from single profile pools. #1337 @bskrtich
Fix a bug in userdel. #1343 @MFlyer
Make Appliance UUID persistent through reinstalls. #1348 @schakrava
Add better error handling to network connection refresh. #1350 @schakrava
Fix handlebar helper in replication. #1352 @priyaganti

Thank you for reading till the end! Here’s a discount code for first 25 Stable subscriptions: ROCKSTOR3814. Prices are going up soon and the 5 year plan is on the way out. Grab it while you can!

Read More

Announcing Rockstor 3.8-13

Rockstor 3.8-13 is now available! We closed 23 issues of different magnitudes in this cycle. The two big ones include adding support for Network Teaming and Bonding, and advanced S.M.A.R.T management support. These features were requested and voted for, by many users which makes us especially happy to finally roll out.

There were several fixes and enhancements as well, following the established trend of our updates. All this is possible, thanks to a strong and growing community. We welcomed two new contributors in this cycle, @MFlyer and @ScarabMonkey. A total of five contributors collaborated to bring you this release. Also, as always, thanks to subscribers for supporting our effort. We are delighted to bring you this update.

The 3.8-13 ISO is downloadable from here for new users. After installation, please purchase Stable update subscription and take advantage of many benefits that come with it. Existing subscribers on the other hand, can update easily from the Web-UI.

3.8-13 release cycle was fun, and made substantial with high participation, both by regular and new community members. We are evolving and reinforcing our iterative development habit with every release, which means a lot of short term improvements and sustained long term work along with new features. We were able to react to bugs faster in this cycle thanks to active users who are quick to report and in some cases, document the fix or even open a pull request. I regret not getting to a couple of pull requests still pending review, which I am looking forward to next!

Here is the list of all issues resolved in this release

Add Network Teaming and Bonding support. #560 @schakrava @priyaganti
Support user supplied custom S.M.A.R.T parameters. #1079 @phillxnet
Redesign Services page. #796 @priyaganti
Advice user to use nmtui in case of install without network. #1268 @ScarabMonkey
Allow Rock-on metadata update on failed installation. #1259 @schakrava
Add optional SMTP authentication to e-mail notification setup. #1228 @MFlyer
Handlebars template improvements in samba UI. #1176 @priyaganti
Add support to sort services by status in the UI. #1201 @MFlyer
Improve storage unmount logic. #1242 @schakrava
Make adding storage to Rock-ons more intuitive. #1178 @priyaganti
Improve tooltip display. #1198 @priyaganti
Make favicon access secure. #1055 @priyaganti
Fix compression UI bug. #1245 @priyaganti @MFlyer
Improve Rock-on install state transition logic. #1216 @schakrava
Mount by-label consistently as first preference. #1181 @schakrava
Fix Samba UI pagination. #1224 @schakrava
Improve scheduled Snapshot management. #1227 @MFlyer
Add more frequency choices for scheduled tasks. #1226 @MFlyer
Automatically map /etc/localtime to Rock-ons. #809 @schakrava
Fix dashboard by locking backend library versions. #1215 @schakrava
Improve S.M.A.R.T self test log parsing. #1207 @phillxnet
Improve S.M.A.R.T behaviour on root drive. #1206 @phillxnet
Fix snapshot name prefix bug. #1186 @schakrava

Thank you for reading till the end! Here’s a discount code for first 25 Stable subscriptions: ROCKSTOR3813

Read More

Announcing Rockstor 3.8-12

Rockstor 3.8-12 is now available! This is our fourth release update in the Stable channel and we are encouraged by the support of subscribers as we continue to improve Rockstor. Thanks for keeping the project alive.

We’ve created a new 3.8-12 ISO downloadable from here for new users. After installation, please purchase Stable update subscription and take advantage of many benefits that come with it. Existing subscribers on the other hand, can update easily from the Web-UI.

3.8-12 release cycle was very different compared to the ones before. Usually, we work on a couple of bigger items, like a brand new feature or two and a bunch of smaller enhancements and bug fixes. But this time, there has been much more community activity with users reporting bugs and requesting minor improvements to existing features. So we focused entirely on closing as many user reported issues as possible and closed 26 issues in total. In a continuing trend, that is a few more issues than the previous one.

I am really pleased to see every feature of Rockstor being used by more and more users. We are eager to keep up with the community and make swift improvements. Over all, we’ve improved many features including AD integration, S.M.A.R.T, Rock-Ons among others. Happy to finally close the Tenaya milestone!

Here is the list of all issues resolved in this release

Added support for hostname configuration. #896 @Mchakravartula

Improved S.M.A.R.T support for more types drives. #1107 @phillxnet

Improved tooltip design. #1110 @Mchakravartula

Redesigned Pool creation UI to handle large number of drives better. #693 @priyaganti

Improved Share size reporting. #669 @schakrava

Added support for dynamic root Pool name retrieval. #921 @schakrava

Made rockstor-pre service more robust. #1128 @schakrava

Fixed bug in updating nginx on ip changes. #1101 @schakrava

Improved disk information handling of system disk(s). #1116 @phillxnet

Improved AD integration via winbind. #1024 @schakrava

Improved Share deletion UX and warnings. #979 @priyaganti

Improved bulk Snapshot deletion UX. #988 @priyaganti

Fixed a bug in schedule task history display. #1129 @Mchakravartula

Improved bios raid handling on system disk. #1151 @phillxnet

Fixed version display bug in the UI. #1119 @schakrava

Improved Rock-On app profile updates. #1131 @schakrava

Improved support for mdraid root disk setup. #1164 @phillxnet

Change font and color of banner elements. #1165 @gkadillak

Improved Rock-On restart policy. #1132 @schakrava

Fixed a bug in group creation. #1161 @schakrava

Fixed a bug in AD join. #1122 @schakrava

Added support for force removal of Shares. #1125 @schakrava

Added support for custom port in e-mail alerts setup. #837 @schakrava

Fixed a UI bug in Rock-On restart. #1175 @nicolaslt

Fixed a templating bug in Samba exports UI. #1176 @schakrava

Improved design of Services view. #796 @priyaganti @schakrava


Thank you for reading till the end! Here’s a discount code for first 25 Stable subscriptions: ROCKSTOR3812



Read More

Rockstor Pro 8: Eight bay DIY Rockstor build

More than a year ago, I shared our then newly assembled Rockstor server in this article. It proved to be a solid part of our production infrastructure. In the last year, I’ve also helped users with a few different DIY builds. It’s a collaborative effort with active members in the community plus the usual shameless thievery from the internet. But we have a winning build that is great for smaller organizations and prosumers. It is a quiet 8 Bay tower packing high performance and supports large storage capacity with up to 12 HDDs.



Welcome the Rockstor Pro 8 and it is now available for purchase from our shop. Save time by buying it directly from us and enjoy these additional benefits

  • 60 day e-mail support from Rockstor engineers included. ($200.00 value)
  • 5 year subscription to Stable updates included. ($35.00 value)
  • 50% discount on incident-based support bundles for 1 year. (up to $450.00 value)

DIY projects are fun and we like to provide all the necessary information in one place if you choose to build it yourself. These are the parts you need for this specific build.

While the motherboard can be upgraded to C2750D4I and extra RAM can be added for better performance, it’s not really necessary as Rockstor is considerably less resource hungry compared to other options out there.

Whether you build your own or buy the Rockstor Pro 8 from us, you get the following key benefits that make this box an effective workhorse and a much better value for money than proprietary solutions out there.

  • Intel Avoton C2550 Quad-Core Processor. Can be upgraded to C2750
  • 8GB RAM (64GB max).
  • 32GB SSD boot drive for Rockstor OS.
  • Simple and secure browser based management.
  • Supports up to 8 hot-pluggable 3.5″ HDDs and 4 fixed internal (2.5″) HDDs.
  • Bitrot protection, checksums, compression and other advanced filesystem (BTRFS) features.
  • Efficient (CoW) Snapshots of Shares on demand or on schedule.
  • Supports different size HDDs and online capacity scaling. Add more drives as and when you need them.
  • File sharing and access from Linux, Mac, Windows and mobile devices (Android and iOS).
  • Must have prosumer apps for Media streaming, backup and file synchronization.
  • Apps for developers and small businesses including JenkinsCI, Gitlab, Discourse and more.
  • Privacy and Productivity enhancing apps for everybody
  • Efficient Rockstor -> Rockstor replication for backup and DR.

More info on the build with pictures!



8 hot-pluggable 3.5″ HDD bays
hot plugging 4TB WD-red for demonstration
Two 120mm fans on the side covered with a magnetic vent
Vent taken off




Back of the box. 120mm fan, three Gigabit LAN ports and two USB 2.0 ports.
Back of the box. 120mm fan, three Gigabit LAN ports and two USB 2.0 ports.
Inside view. 8 bay HDD cage to the left and 4 bay 2.5" internal HDD cage to the top right with PSU behind it. Requires dissembling to plug in PSU and motherboard.
Inside view. 8 bay HDD cage to the left and 4 bay 2.5″ internal HDD cage to the top right with PSU behind it. Requires dissembling to plug in PSU and motherboard.


Inside view with HDD cages removed.
Inside view with HDD cages removed.



ASRock C2550D4I with Avaton CPU and 8GM RAM
ASRock C2550D4I with Avaton CPU and 8GM RAM



Read More


Expectation doesn’t always match actuality, which is a shame, but sometimes we can do something about it. This is a tiny tale of my attempt to do just that.

ups examples

Early in 2015 I was on the lookout for a Linux based Network Attached Storage (NAS) system that had the more enterprise goodness I had encountered with my ventures into ZFS via FreeNAS i.e. Copy on Write (CoW), data checksums, snapshots etc., and happened across Rockstor; but at the time it had no graphical Uninterruptible Power Supply (UPS) configuration. This for me was a show stopper (story to follow), my expectation was to adopt my dream NAS setup that ran on my favourite Operating System (OS) and to have an all Linux setup once again. Actuality was falling short.

Sure I was impressed with FreeNAS but I’m a Linux guy and having been an all Linux setup for 15 years at least, it grated to be using NanoBSD for my NAS. Nothing against FreeNAS but my mainstay OS of choice was set and I had grown very familiar with it; the BSD’s for all their splendour were just not my cup of tea and it sat uneasy that my darling OS was just not serving me in every way I wanted. It had been years since I’d looked at Linux NAS ditributions so surely something had happened. It was at this point that I first came across Rockstor. This thing was neat, focused, to the point, and most encouragingly developed completely in the open. Sure it was still quite young at less than two and a half years but the pace of development was fast. That’s great I thought, if it has what I need then marvellous but alas it was short of one key feature. It had no graphical way to configure Network UPS Tools (NUT), a UPS tools system, and for me this was just not the ticket. Given that Rockstor is essentially a full CentOS with a WebUI bolted on to deal with the btrfs / NAS / sharing stuff I knew I could simply do a text based NUT config but that wasn’t what I wanted. That wasn’t an appliance. I had already spent many years doing everything with my teeth even down to the early days of mode lines in X windows and reserving memory just to get 3D going, and regular kernel recompilations or CUPS recompilations just to be able to print. My Linux should be better than that, it should by now be for the people; all the people. With all the goodness of a modern file system.

So I wondered on by. But the whole Rockstor dabble had left a lasting impression and I just couldn’t shake the fact that I was just not happy running a NanoBSD based system when my passions and interests were Linux based. It also greatly excited me that I might once again become an all Linux setup. I enjoy the Linux ethos and I believe the nature of the licence to be key: i.e. Apple’s advancements in BSD that no one else has. Alas; sometimes expectation just doesn’t match actuality.

But hold on I thought, I can’t let a little thing like a missing feature stand in my way. I began making tentative inroads into Rockstor’s community forum and the GitHub hosted code to see what I might do to make a difference. There were some unusual elements to this NAS distro, they had obviously made significant efforts towards usability, you know where things make sense due to design; an all too sparse quality in many OSs. I slowly and surely became convinced that this was an OS NAS OS (open source NAS operating system) of the future, in the making. And I wanted to be part of that future.

Oh and what Brett said.

Sometimes one just has to adapt to a situation and sometimes one can adapt the situation.

series of serial adapters

Adaptation by adapter. Not all FT232R’s are equal; a null modem wired usb to serial adapter adapted for UPS testing. Sorted.

Part of the future

At that time the forum was run on something decidedly inferior to Discourse and wouldn’t even render in my browser of choice, this wasn’t good. So I dove into the git repository and browsed the issues and pull requests to try and gain a deeper understanding. In my meandering I saw one or two tiny fixes I could make and on a whim started submitting the smallest of pull requests. Whilst exploring the feature set further I received a friendly error message that something had gone wrong. Nicely caught and no horrible crashes just a neat dialog encouraging me to send an automatically prepared zip of logs to the developers. Elegant I thought. Not just a long wait in the nothingness of an unresponsive system but true assistance and guidance. I was further impressed. So I downloaded the log zip and not wanting to bother the developers with my silly problem I took a peak. What I saw was something crafted, full on Python with exceptions caught everywhere, not just another PHP monster but a proper structured entity with objects and fancy ways and means. Anyway, the logs pretty much pinpointed the problem but I just wasn’t familiar enough with the code to tackle this myself so in the interests of living up to my ideals I posted an issue.

The response to my issue was surprisingly fast and entirely jovial; I had (in internet terms) met Suman, the project lead. A fix was committed and in no time at all my silly little issue was sorted, and this was good. The joys of a rapid development cycle.

Soon thereafter the forum software was thankfully switched to the most excellent open source discourse and was becoming alive with the growing interest in this newfangled btrfs NAS solution. I was, perhaps unwisely, awarded the privilege of forum maintainer; a pretty friendly place so no worries there. By then I had also submitted some doc tweaks and additions. To my surprise I found the [docs][10] to be programmatically generated from .rst files, a mark up format know as reStructeredText that through the magic of Sphinx ends up as html for the Rockstor home page docs section. This was just getting better and better, and I had started to make a difference. At about the same time I ventured an email declaring my interest in adding NUT and was pleasantly surprised by the encouraging return. They had no plans to implement this feature “just yet” but they were all to happy to help in whatever way they could. So why NUT; or maybe why not NUT.


Why not NUT

So why not NUT, why bother, well indeed; in the context of no doubt well meaning mice this is a question that answers itself. But stories are nice so here goes.

Over time where I live and work the electric had been a little iffy, the occasional trip out but nothing too serious. I had as a matter of course implemented a number of UPS’s and hand configured NUT to deal with these little outages but more was to come.

One morning I awoke to a calmness, this can’t be bad I thought, but there was a down side. The entire electric had failed and this time there was no just flipping it back on and going about my business no no. This time it was serious. It turned out that we could no longer make any sockets live; the Residual Current Device (RCD) refusing to enact our expectation. An investigation was in order.

The investigation

Most people who have dealings with computers have had mouse problems at one time or another, these days the problems tend not to be physical but electrical; given the prevalence of optical mice. It turned out that my electrical problem was both physical and mouse related.

electrical mouse problem

The mouse problem diagnosed; definitely both physical and electrical and behind a drywall at the back of a cupboard. Inconvenience incarnate.

So without ripping apart my whole (rented) accommodation I can only assume that other as yet undiscovered gems such as the above are lying in wait. What’s in your walls?

After many hours of diagnostics and much frustration I had found at least one reason for our previously flaky and now critical electric situation. Needless to say my NUT interest grew and I began as a matter of course to make all systems aware of their pending doom; or at least when it might be a good idea to shut down. NUT, due to it’s network nature, is a perfect fit.

To cut a long story short I ended up submitting (on my 47th birthday) my first non trivial pull request to Rockstor core. A fortnight of advice reviews and tweaks later and Rockstor now has graphical NUT configuration (in beta). I for one am chuffed. And yes wouldn’t it be great to have a nice UPS data page or a whizzy additional widget on Rockstor’s dashboard but until that time, successive approximation and development in the open and all, I offer up some “desktop” shiny.

Some shiny

Given no fancy technology is complete without fancy telemetry; I present walNUT.

walNUT gnome extension

walNUT the Gnome Shell Extension to monitor one’s UPS, thanks Daniele.

And for those of a KDE persuasion there is KNutClient, thanks Daniel.

Note the similarity in the names; funny that. Graphical NUT clients are also available for other popular platforms.

What are these things but what we make them.





Read More