For this project the customer wanted TeamViewer running on a Raspberry Pi Nano so that a programmer he hired from interstate could connect easily to get some scripts running. For the more tech savvy an SSH terminal connection is by far more solid and runs easily on a Pi Nano, but the configuration is harder as a port forward would have to be setup on the customers home or business router and then DNS resolution has to happen. In the end that set up would be more fault tolerant, but then again it depends on how you look at it.
TeamViewer has almost become an industry standard as it is generally fast, reliable and easy to set up. I’ve not done a speed test between TeamViewer and FreeNX, but for ease of use TeamViewer is great. It also bypasses the firewall using tunneling without compromising security.
Back to the job at hand. It turns out that the older older ARM chips found in the Nano and the Pi 1 do not support SIMD (Single Instruction Multiple Data). SIMD is a type of parallel computing involving vectors (beyond the scope of this article). Either way the ARM processors in the Pi3 have an architecture called NEON which supports SIMD.
After 4ish hours of flattening the OS, reinstalling Raspbian, hunting for the appropriate version of TeamViewer host for Linux and then figuring out what the spurious errors meant I finally realised the NEON SIMD issue above. I popped the SD card out of the Raspberry Pi Nano and put it in a Pi3 B+ and away it went. Mission accomplished.
(Skip ahead if you already know the basics) DNS (Domain Name System) is a method of taking a computer and giving it a name on the web. For example our domain is 7rocks.com. I might have a laptop which I’ve called Manfred. To access it from anywhere in the world we’d like to type manfred.7rocks.com maybe in a web browser to access web software on manfred.
7rocks.com comes to this website, but manfred.7rocks.com connects to the hypothetical computer called manfred. For technical reasons when the computer is on your home network you need something called dynamic host resolution to make this happen.
For the more technical
Sniffing around Bind9 trying to make my own dynamic DNS service I realised that Bind9 has a service called NSupdate. I’m not sure if it was there in the early naughties when I was setting up mail and DNS servers, but it’s here now. So the scripts I wrote are minimal and there’s no more hand editing of the zone files. Fantastic!! Especially if you’ve a server with a static IP address already. Nice one Bind9. The O’reillys books are still good for giving an overview of how it all works for those interested in giving it a crack.
I have to say, I’m impressed so far. A few weeks ago I installed NextCloud server on a Raspberry Pi 3b. So far it is working very solidly. The Android apps and the website interface work very well and are highly polished. The OS X client is very smooth and the Linux Mate client is nearly as good as the OS X one. It’s only missing the little green / blue dot icons in the Caja file browser to notify of synchronisation. It’ll take some months to make a true assessment of NextCloud, but I am fairly confident it will keep out stripping my expectations.
For instance, I wanted to make a standard network share for our client. I was going to set up Samba (windows file sharing on Linux servers). Samba works well. I’ve used it for years. It was to point to the same NextCloud share. However there was no need to set up Samba as NextCloud uses a protocol (communication language) called DAV. Simply create a
The security system seem good and you can make it as hard as you want. Even to the point of using two factor authentication using SMS. How nice it that?
Why did I install it on a Raspberry Pi and not a more powerful solid server or a VPS?
The client does not add a lot of data per day
The Pi uses less than 2 watts of energy (+ hard drive power)
It’s not a huge expense to make a replicated mirrored backup server with automatic fall over protection.
Having it onsite means the client knows physically where their data is at all times.
Using Bind9 with NSupdate makes it possible from any internet connection, so why not.
It just makes sense. Most data conscious companies and business owners I speak to just want to control their own data. The phrase “just stick it in the Cloud…” is too ambiguous for them. Even though there are so many advantages to the technology of Cloud based systems, they still feel unsettled knowing that the core of their business is reliant on some other data company being reliable. Now systems like NextCloud are possibly giving an alternative way to using this tech.
Following up on my last post I decided to look for some accounting software I could run on my computers or servers. Jam paying for web accessible software if I can’t load it on my own cloud servers. Double entry accounting is not that complex a subject. Neither is payroll and neither are tax rules for small businesses. I also wanted to be able to access the database behind the accounting software and payroll had to be in there. I started with GNUcash, Quicken, then SQL Ledger. I was happy to pay a fee for support.
SQL Ledger was looking nice, but it’s not a 5 minute install affair. If only they had an apt-get installer. Quicken has evaporated into the cloud. Xero and MYOB just said a flat “NO” to me buying even a binary to load on my own systems. Finally I came back to GnuCash. It’s a bit different, but it’s actually way easier to use. You can download QIF or OFX files from the bank to bring in your transactions and it does automatic transaction matching like MYOB Essentials although you can’t build rules as yet. Then again, the gnu cash method combined with the fact that it runs lighteningly fast more than makes up for it. Now I am tending towards quickly checking transactions as some of the text pattern matches I made (usually late at night when I’m fading) have been incorrect. It has an auto transaction download feature which I’ve yet to set up with the banks. AAAannnnd,, drum roll please,,,, wholly cow, it is able to connect directly to a remote SQL database (Postgres or MySQL).
How bloody awesome! I’ve yet to test the SQL connection, but just the fact that it’s there is good. Because it’s open source there is no rubbish in there. No bells and whistles which a marketing department has asked for. It just works. The only thing is that there is no automated payroll. When you think about it though, for the business with only a few employees, what’s the big deal? It’s pretty easy to ammortise 8.4 weeks of sick leave, public holidays and normal holidays over the other 43.6 weeks of the year. Super is 9.5%. Tax is just read off the tax tables from the ATO. A spreadsheet and throwing the saved chunks into liability accounts until they come due. No probs. When it becomes more complicated well it’s not too hard to write a web app to automate it if you’ve access to the SQL database in the background. That’s if the people at GnuCash don’t get to it first.
An other thing is the sub accounts feature. You can make hundreds of levels deep. MYOB is only about 4 or so.
I’m not going to say I’m totally sold, but I am testing it from here on in. Watch this space for how it goes as the months pass by. If you want my spreadsheet templates for payroll, let me know and I can make a download page for you.