- Notifications
You must be signed in to change notification settings - Fork16
📡 Redsmin proxy deamon - Access local redis instance from Redsmin
License
Redsmin/proxy
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Redsmin Proxy — Securely connect behind the firewall (or localhost) Redis servers toRedsmin
- Installation - Getting started
- Environment variables options
- Is the communication safe between my server and Redsmin? (Yes)
- How to start Redsmin proxy
- on Docker
- on Mac OS X
- on Debian/Ubuntu, *nix
- on Windows
- with a password protected redis
- with a redis listening on a unix-socket
- reading a configuration file
- How to connect multiple Redis from the same server to Redsmin
- How to keep redsmin proxy up once I disconnect
- I'm behind a firewall, what rule should I add?
- How to uninstall Redsmin Proxy
- Throubleshooting
- Changelog
We announce changes on our Twitter account@redsmin, ourFacebook page.
CONFIG_FILE
: configuration file to read (if any), default:/path/to/redsmin-proxy/etc/redsmin.json
REDIS_URI
: Redis URI or socket path, defaultredis://127.0.0.1:6379
REDIS_AUTH
: Redis authentication password, defaultnull
REDSMIN_KEY
: your Redsmin server connection key, default''
Advanced configuration:
REDSMIN_PORT
: where redsmin proxy should connect, default:993
REDSMIN_HOSTNAME
: where redsmin proxy should connect, defaultssl.redsmin.com
DEBUG
: debug mode, defaultfalse
- Prefix
REDIS_URI
withrediss://
to connect to Redis using TLS encryption
Yes, Redsmin and Redsmin proxy communicate through a secure connection using theTLS 1.2 protocol so no one will be able to inspect the data looking at the traffic.
Let say you startedredis-server
on your machine and then want to start redsmin-proxy from docker.If you are on MacOSX or Windows the following command won't work (if you are on Linux the following line will work):
docker run -it --rm --net=host --name redsmin-proxy -e REDSMIN_KEY=YOUR_REDSMIN_KEY -e REDIS_URI="redis://127.0.0.1:6379" redsmin/proxy
It does not work because on non-linux environment the docker daemon is running inside a VM and yourredis-server
is running on your host machine, thus accessing 127.0.0.1 from the docker daemon will simply hit the VM loopback.
So we simply need to specify theHOST_IP
(replace it with your own local IP, you may want to useifconfig
to find it) instead of127.0.0.1
:
docker run -it --rm --name redsmin-proxy -e REDSMIN_KEY=YOUR_REDSMIN_KEY -e REDIS_URI="redis://HOST_IP:6379" redsmin/proxy
On MacOSX, this should work and let redsmin-proxy connect to a Redis container on the same host:
docker run -it --rm --name redsmin-proxy -e REDSMIN_KEY=YOUR_REDSMIN_KEY -e REDIS_URI="redis://docker.for.mac.localhost:6379" redsmin/proxy
docker run -it --rm --name redsmin-proxy -e REDSMIN_KEY=YOUR_REDSMIN_KEY -e REDIS_URI="redis://192.168.3.50:6379" redsmin/proxy
Whereredis://192.168.3.50:6379
will be the ip address and port of the running Redis server andYOUR_REDSMIN_KEY
is yourRedsmin key.
Let first say you've started a Redis container:
docker run --name my-redis --rm redis
You canlink redsmin proxy container to the redis one with `--link:
docker run -it --rm --name redsmin-proxy --link my-redis:local-redis -e REDSMIN_KEY=YOUR_KEY -e REDIS_URI="redis://local-redis:6379" redsmin/proxy
If you want to leverage dockerauto-restart docker feature, use the--restart=always
command.
npm install redsmin --globalREDIS_URI="redis://127.0.0.1:6379" REDSMIN_KEY="redsmin-token" redsmin
npm install redsmin --global$env:REDIS_URI="redis://127.0.0.1:6379"$env:REDSMIN_KEY="redsmin-token"redsmin
npm install redsmin --globalset REDIS_URI=redis://127.0.0.1:6379set REDSMIN_KEY=redsmin-tokenredsmin
Note: don't use double quotes for values on windows (bad 🔴 :set KEY="VALUE"
, good ✅ :set KEY=VALUE
)
npm install redsmin --globalREDIS_URI="redis://127.0.0.1:6379" REDIS_AUTH="auth-pass" REDSMIN_KEY="redsmin-token" redsmin
npm install redsmin --globalset REDIS_URI=redis://127.0.0.1:6379set REDIS_AUTH=auth-passset REDSMIN_KEY=redsmin-tokenredsmin
Note: don't use double quotes for values on windows (bad 🔴 :set KEY="VALUE"
, good ✅ :set KEY=VALUE
)
npm install redsmin --globalREDIS_URI="/tmp/redis.sock" REDSMIN_KEY="5517e20046f4c7530d000357" redsmin
npm install redsmin --globalset REDIS_URI=/tmp/redis.sockset REDSMIN_KEY=5517e20046f4c7530d000357redsmin
Note:
- don't use double quotes for values on windows (bad 🔴 :
set KEY="VALUE"
, good ✅ :set KEY=VALUE
) - you may need to use
sudo
to access to the socket.
First create a json configuration file, for instance/etc/redsmin.json
:
{"key":"redsmin-token","redis":"redis://127.0.0.1:6379","auth":""}
Then start redsmin proxy with:
CONFIG_FILE="/etc/redsmin.json" redsmin
set CONFIG_FILE="/etc/redsmin.json"redsmin
REDIS_URI="redis://127.0.0.1:6379" REDSMIN_KEY="redsmin-token1" redsmin&REDIS_URI="redis://127.0.0.1:6380" REDSMIN_KEY="redsmin-token2" redsmin&REDIS_URI="redis://127.0.0.1:6381" REDSMIN_KEY="redsmin-token3" redsmin&REDIS_URI="redis://127.0.0.1:6382" REDSMIN_KEY="redsmin-token4" redsmin&
set REDIS_URI="redis://127.0.0.1:6379"set REDSMIN_KEY=redsmin-token1START /B redsminset REDIS_URI="redis://127.0.0.1:6380"set REDSMIN_KEY=redsmin-token2START /B redsminset REDIS_URI="redis://127.0.0.1:6381"set REDSMIN_KEY=redsmin-token3START /B redsminset REDIS_URI="redis://127.0.0.1:6382"set REDSMIN_KEY=redsmin-token4START /B redsmin
Note:
- of course we could have used multiple
CONFIG_FILE
instead of environment variables.
The easiest way is to usenohup that will keep redsmin-proxy running even once the SSH session is closed. Simply connect to the server that contains Redis, run the commands below, don't forget to replaceYOUR_REDSMIN_TOKEN
with theREDSMIN_TOKEN
you had when creating the proxy connection from Redsmin app.
echo'#!/usr/bin/env bash'>> redsmin-proxy.shecho'while true; do REDSMIN_KEY=YOUR_REDSMIN_TOKEN redsmin; sleep 1; done;'>> redsmin-proxy.shchmod +x redsmin-proxy.shnohup ./redsmin-proxy.sh&
To check that everything is alright or to debug Redsmin proxy, you can usetail -f nohup.out
.
nohup bash -c "while true; do REDSMIN_KEY=YOUR_REDSMIN_TOKEN redsmin; sleep 1; done" &
On MacOS, Ubuntu/Debian, the simplest way is to usescreen:
# start screenscreen# start redsmin-proxyREDIS_URI="redis://127.0.0.1:6379" REDSMIN_KEY="redsmin-token1" redsmin# Ctrl+A+D to detach from screen# and then to reattach to the screen session:screen -r
But you could also useUpstart,systemd,supervisord orpm2 on these system.
On Windows you will need tocreate a service or usepm2.
Create the service at/etc/systemd/system/redsmin.service
[Unit]Description = Redsmin ProxyAfter = network.target[Service]Type = simpleEnvironment = REDIS_URI=redis://127.0.0.1:6379 REDSMIN_KEY=your-token-hereExecStart = /usr/bin/redsmin $REDIS_URI $REDSMIN_KEYTimeoutStartSec = infinityRestart = on-abort[Install]WantedBy = multi-user.target
Reload systemd bysystemctl daemon-reload
.
You can now start/stop/restart redsmin like any other systemd service, likesystemctl start redsmin
.
Create a config file with these contents:
[program:redsmin]command = /usr/bin/redsminautostart = trueautorestart = trueenvironment = REDIS_URI="redis://127.0.0.1:6379",REDSMIN_KEY="your-token-here"
Reload supervisord config bysupervisorctl reread && supervisorctl update
We will happily merge into this repository any pull-request describing a configuration file for any other process runner.
Redsmin proxy connects tossl.redsmin.com
on port993
with a secureTLS socket connection. For troubleshooting:What ip/port should I locally open to use Redsmin proxy.
npm uninstall redsmin -g
It means that your Redis server required a password and that no password is configured in Redsmin Proxy. To fix this start Redsmin proxy with theREDIS_AUTH
environment variable.
About
📡 Redsmin proxy deamon - Access local redis instance from Redsmin