Config skeleton @ p3xrs.json
sudo npm i -g p3x-redis-ui
# help info
p3x-redis --help
# help info detailed
Usage: p3x-redis [options]
Options:
-V, --version output the version number
-c, --config [config] Set the p3xr.json p3x-redis-ui-server configuration, see more help in https://github.com/patrikx3/redis-ui-server
-r, --readonly-connections Set the connections to be readonly, no adding, saving or delete a connection
-n, --connections-file-name [filename] Set the connections file name, overrides default .p3xrs-conns.json
-h, --help output usage information
# startup with default settings on 7843 port
p3x-redis
# if you want to disable changing of connections
p3x-redis --readonly-connections
# or
p3x-redis -r
# or
p3x-redis --config /home/p3x-redis-ui/p3xrs.json
# mix
p3x-redis --config /home/p3x-redis-ui/p3xrs.json --readonly-connections
adduser --disabled-password p3x-redis-ui
touch /etc/systemd/system/p3x-redis-ui.service
nano /etc/systemd/system/p3x-redis-ui.service
Place this file with this content:
[Unit]
Description=p3x-redis
After=network.target
[Service]
Type=simple
User=p3x-redis-ui
WorkingDirectory=/home/p3x-redis-ui
# or if you want readonly connections as it is public
#ExecStart=/usr/bin/p3x-redis --readonly-connections
#ExecStart=/usr/bin/p3x-redis --readonly-connections --config /home/p3x-redis-ui/p3xrs.json
ExecStart=/usr/bin/p3x-redis
Restart=on-abort
[Install]
WantedBy=multi-user.target
Finally:
systemctl daemon-reload
systemctl enable p3x-redis-ui
service p3x-redis-ui start
The server is loading at:
http://localhost:7843
The best is, if you have an NGINX with a valid, secure HTTPS certificate for example Let's Encrypt and then use it as a proxy, for example my own:
/etc/nginx/sites-enabled/p3x.redis.patrikx3.com
For free SSL certificate, I use acme.sh
:
https://github.com/Neilpang/acme.sh
Config:
server {
listen 80 ;
listen [::]:80 ;
server_name p3x.redis.patrikx3.com;
error_log /var/log/nginx/p3x.redis.patrikx3.com-error.log;
access_log /var/log/nginx/p3x.redis.patrikx3.com-access.log combined;
location ~ /.well-known {
auth_basic off;
auth_pam off;
allow all;
# make sure this path existing and has read for nginx
root /var/www/acme-challenge;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
return 301 https://$host$request_uri;
}
server {
server_name p3x.redis.patrikx3.com;
error_log /var/log/nginx/p3x.redis.patrikx3.com-error.log;
access_log /var/log/nginx/p3x.redis.patrikx3.com-access.log combined;
location ~ /.well-known {
auth_basic off;
auth_pam off;
allow all;
root /var/www/acme-challenge;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
ssl_certificate /home/p3x-redis-ui/acme/ssl/p3x.redis.patrikx3.com/fullchain.cer;
ssl_certificate_key /home/p3x-redis-ui/acme/ssl//patrikx3.com/patrikx3.com.key;
location / {
proxy_pass "http://127.0.0.1:7843";
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl on;
add_header Strict-Transport-Security "max-age=31536000; " always;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
}