SETUP REDIS SERVER FOR CLOUDB
This howto is written to help those who may wish to run their own local redis server to run
cloudDB operations on AI2. This may assist with any privacy or data protection concerns
surrounding use of MIT based redis servers, or simplify matters if running an app
which only needs the local network.
You will need a Linux Server for this, the example uses Debian (Windows binaries are available)
This setup is for a local server, therefore SSL is not required
and the default ports are used, 6379 / 16379 these are blocked
on the router firewall
The Linux server has sudo running and my user has sudo access
in order to be able to run all commands requiring root permissions
Login into your server
$: sudo apt-get update
$: sudo apt-get upgrade
You may need to install the gcc compiler:
$: sudo apt-get install build-essential
Check build has been successful
(This will take some time, so coffee break unless you want to see all the "OK's" go by....
Copy the executable to your PATH
$: sudo cp src/redis-server /usr/local/bin/
$: sudo cp src/redis-cli /usr/local/bin/
or instead use
You should now be able to test the redis server:
CTRL+C to close that instance
Now we need to setup redis properly:
(note the use of the port number in filenames)
Create the following three directories:
$: sudo mkdir /etc/redis
$: sudo mkdir /var/redis
$: sudo mkdir /var/redis/6379
Copy the init script from install folder:
$:sudo cp redis-stable/utils/redis_init_script /etc/init.d/redis_6379
Copy the conf file from the install folder:
$:sudo cp /redis-stable/redis.conf /etc/redis/6379.conf
Now set configuration options:
$: sudo nano /etc/redis/6379.conf
It is quite a long file and can be difficult to find things.
read through the file to get an idea of what might be needed.
I used the following settings:
#bind 127.0.0.1 # << !important to comment out allow other devices access
protected-mode no # << we are using a password
port 6379 # << default
timeout 0 # << default
daemonize yes # << means redis will start up with server in background
supervised no # << default
pidfile /var/run/redis_6379.pid # << default
loglevel notice # << default
logfile /var/log/redis_6379.log # << the usual place for logs
save 120 1 # << persistence settings
save 90 10 # << will save after 90 secs if up to 10 keys have changed
save 60 100
dir /var/redis/6379 # << !important
requirepass mydifficultpassword # << added security
Save the conf file and open the init script:
$: sudo nano /etc/init.d/redis_6379
If you are not using the default port of 6379 you need to change the
value of $REDISPORT
Also, to make life a bit easier find the line:
$CLIEXEC -p $REDISPORT shutdown
and add "-a mydifficultpassword" so it looks like this
$CLIEXEC -p $REDISPORT -a mydifficultpassword shutdown
(This allows you to stop the script at the server, having set a password)
Save the init script. Now:
$: sudo update-rc.d redis_6379 defaults
ready to start:
$: sudo /etc/init.d/redis_6379 start
You should be back at a prompt with redis server running. Now for some testing.
We can use the built in redis-cli tool for this. Start this up as follows:
$: redis-cli -a mydifficultpassword
This should give you a new prompt:
You should get back: PONG
Now add and retrieve a key value:
set mykey somevalue
get mykey
Returns:
"somevalue"
Find all the keys:
1) "mykey"
If you do this after setting some data with appinventor the response will be (for example):
1) "test:mykey"
AI2 uses the ProjectID and the tag name together
Finally delete the key you created:
You should be back at the normal command prompt. Now to setup appInventor!
Let us assume you have a project open and that you have added a cloudDB component
Selecting the cloudDB component on the right should show you the default settings.
You need to change these to match your redis-server.
Project ID
This can be whatever you want, it is used to form part of any key or tag you create.
Or just leave as "test"
RedisPort << use which ever port number you set, if not the default
6379
RedisServer << the computer/server name recognised on the network or the IP address
myserver or 192.168.1.220
Token << use the password you used for requirepass in redis_6379.conf
mydifficultpassword
Setup some components and blocks to test the connectivity.
Away you go :)