CAVEAT: There are many options the user can choose to utilize or not utilize here. Use of this solution is at your own risk - I will not be held liable because you chose to use VNC software and something happened to your BitCoins. Additionally, I will not support clients of arty - I'm not your technical support, and most of these programs have dedicated support forums and technical support departments at their development houses. Make them work for their fiat money.
Many people have lamented the lack of mobile options for BitCoin, most notably on iOS.
The difficulty seems to stem from the process of getting an app approved, although other platforms will have their own difficulties.
This thread is to discuss best practices for utilizing a VNC client as a front-end to an existing instance of a BitCoin client running on a full-fledged computer somewhere else on the Internet. While I realize this is only an interim solution, for many it is sufficient for their needs, and grants other generally useful computer-related abilities to the mobile device.
Our primary concerns are:
1) Portability, in the sense that our solution must be mobile
2) Security, to prevent unauthorized access to our BitCoins
3) Flexibility, in the sense that our solution must be usable on the largest number of OS'es possible, at both the host and controller ends
4) Speed of use, since we are already waiting for up to an hour for a number of confirmations to come through, any speed gains are significant
5) Ease of use, to reduce barriers to entry for new users
6) Transparency (ideally via open-source) whenever possible, so end users can have verified security of code
7) Power-efficiency, since we are working on mobile devices and battery life is a serious concern
Why VNC, you might ask, and not RDP? In truth, either is usable. I'm partial to VNC since that's what I know and have been using for a couple of years to control my computer at home from my iPhone.
Things you will need:
1) A computer running BitCoin client software with an Internet connection (and ideally, a static IP address)
2) VNC (or RDP) server software for your home computer to offer a VNC (or RDP) server to the mobile device
3) A mobile device (phone, tablet, or laptop) capable of running VNC (or RDP) client software
4) VNC (or RDP) client software for your mobile device
5) Access control to your router or broadband modem to allow your VNC client through to the computer from your mobile device over the Internet (see also: firewall, port forwarding)
6) SSH or VPN tunneling support on the host computer
7) SSH or VPN tunneling support on the mobile device
Things you may want:
1) A hardware firewall to prevent unauthorized access to your host computer
2) Tracking software for your mobile device in case it is lost or stolen
3) A way to remotely disable the home computer without your mobile device, in case it is lost or stolen
4) A secure regular backup of your wallet.dat files to a machine besides the host computer
5) A workaround for having a dynamic IP address (if applicable to you)
Start by acquiring your software. If you don't already have a BitCoin client, download, install, and run that first, as the initial process to download the current block chain can take quite a while (longer than it will take to setup and test your VNC client connection in many cases)
On iOS version 4+(any device) I recommend the Screens VNC client (built-in SSL support, clean interface), although there are many fine options available. I suspect there's at least one decent one for Android and/or for BlackBerry. If your mobile platform (somehow in this day and age) doesn't have a VNC/RDP client, consider offering a bounty in BitCoins for a developer to write it/getting a better mobile device. The same goes for SSH/VPN support. Whatever your choice, I recommend going for a version that doesn't support extraneous features that are not part of the core protocol, and as transparently coded as possible. Because of the software requirements, a laptop computer with a cellular data connection is the most powerful candidate for this setup. A smartphone or tablet is a close second, and tends to beat the laptop on the portability front.
While your software is downloading, read up on VNC here:
http://en.wikipedia.org/wiki/Virtual_Network_Computingand read up on SSH and VPN tunneling here:
http://en.wikipedia.org/wiki/Secure_Shellhttp://en.wikipedia.org/wiki/Virtual_private_networkSetup:
1) Decide which combination of protocols you'll be using. Choose between VNC/RDP and SSH/VPN. You may choose both in either (or both) group(s), but you must choose a least one of the first group, and I strongly recommend at least one of the second group.
2) Download your software to the host computer and mobile device
3) Install your software
4) In many cases your computer will need to rebooted here. If so, reboot.
5) Setup a login profile in your VNC/RDP software
6) Setup a login profile for your SSH/VPN software
7) Connect to it (over the Internet) from your mobile device using the credentials for the login account you just created
Squeal with glee, you're done!
Best practices for usage:
1) Security should come first - in BitCoin you act as the bank. Except you don't have a giant vault, you have a computer. Be mindful of this fact at all times. Disable automatic login on your mobile device. Don't leave the client running unattended on a VNC server machine - your account can be compromised. Don't give away your login information to the VNC/BitCoin server under any circumstances. Make regular backups. Eat your vegetables. Update your software regularly. Run anti-malware software from a trusted source regularly. Vary your passwords from BitCoin wallet to VNC to SSH.
2) Every layer of security is a trade-off for ease of use. Your balance will be different from mine or anyone else's. Find a setup that works for your usage case or ask here for recommendations.
Postscript: Yes, this is a very vague set of instructions. I know. Don't waste my time (or anyone else's) saying so. There are simply too many potential combinations of setup here, and I can't possibly actually test them all, let alone be bothered to, and then write up a complicated multi-branched set of instructions.