Rpi Softwares

From Network Security Wiki

Dynamic DNS

The objective is to access Raspberry Pi from Internet using Dynamic DNS service. Most of the ISPs in India (& other third world countries) provide Dynamic IP address due to shortage of IP addresses.

Using this tutorial you will be able to access your device(or any other Linux machine) through Internet. You will have a registered unique sub-domain name which will be pointing to the current IP address assigned to the device.

  • Raspberry Pi(or any other Linux machine; for windows machine you need to download a different client)
  • ISP which provides Dynamic IP address.
  • DDClient,inadyn, etc or any other free Dynamic DNS Client.
  • Need to register at FreeDNS (free)

  • If you ISP provides a static IP, then you can directly access device using IP address or can use any DNS service(e.g: FreeDNS) for mapping IP to domain name. there is no need of installing client in Raspberry Pi.
  • If your ISP provides a private IP address (e.g., then following this tutorial will not help.

  • Log on to SignUp page and register for a new unique sub-domain name (e.g: network.info.tm).
  • Open Dynamic DNS page. Copy the large alpha-numeric key in "Direct URL" link. e.g:
  • Install & Configure DDClient
sudo apt-get install ddclient
sudo nano /etc/ddclient.conf
 use=if, if=eth0                        ##comment out this line & use below line if Interface is not having Public IP directly assigned
 #use=web, web=checkip.dyndns.com/, web-skip='IP Address'
 xxxxxxxx.com                              ##replace with your domain name
sudo service ddclient restart 




git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin


gpio -v
gpio readall



sudo mkdir /usr/local/tonido
cd /usr/local/tonido
sudo wget http://patch.codelathe.com/tonido/live/installer/armv6l-rpi/tonido.tar.gz
sudo tar-zxvf tonido.tar.gz
./tonido.sh start 

Audio Playback for FLAC, M4A etc:

cd /usr/local/tonido
sudo apt-get install ffmpeg
sudo ln -s /usr/bin/ffmpeg ffmpeg.exe
sudo ln -s /usr/bin/ffmpeg ffmpegv.exe

Auto Start at Bootup:

sudo wget --output-document=tonido http://www.tonido.com/support/download/attachments/9109990/tonido?version=2&modificationDate=1412274854000&api=v2
sudo cp tonido /etc/init.d/
sudo chmod +x /etc/init.d/tonido
sudo update-rc.d tonido defaults


Please follow Automount USB Drive for mounting USB during bootup else Transmission will give error for temp files not found.


sudo apt-get install transmission-daemon
sudo /etc/init.d/transmission-daemon stop
sudo nano /etc/transmission-daemon/settings.json

Change “rpc-authentication-required” to false

"rpc-password": "password",
"rpc-username": "username",
"rpc-whitelist-enabled": false,
"download-dir": "/mnt/USBDrive",
"download-queue-size": 5,
"incomplete-dir": "/mnt/USBDrive", 
"incomplete-dir-enabled": true,
"seed-queue-size": 10,
"watch-dir": "/mnt/USBDrive",
"watch-dir-enabled": true,
"umask": 2,
sudo nano /etc/init.d/transmission-daemon
Change the USER=transmission-daemon to USER=root
sudo service transmission-daemon reload

Transmission will be available at following link now:


sudo systemctl stop transmission
sudo nano /home/osmc/.config/transmission-daemon/settings.json
sudo systemctl start transmission


Source: [howtogeek.com]


sudo apt-get install deluged
sudo apt-get install python-mako
sudo apt-get install deluge-web

Run deluge-web once

sudo pkill deluge-web

Auto Start at boot up:

sudo nano /etc/rc.local
# Start Deluge on boot:
sudo -u pi /usr/bin/python /usr/bin/deluged
sudo -u pi /usr/bin/python /usr/bin/deluge-web

Now reboot the Pi & open the WebUI to see if everything is running fine:


Upgrade to Deluge 2.x

Add the following line to your apt sources:

sudo nano /etc/apt/sources.list
deb http://ppa.launchpad.net/deluge-team/stable/ubuntu/ xenial main

Update the Cache

sudo apt update

Import the correct public key:

gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys C5E6A5ED249AD24C

Add the imported key to apt keys:

gpg --export 8EED8FB4A8E6DA6DFDF0192BC5E6A5ED249AD24C | sudo apt-key add -

Upgrade Deluge:

sudo apt update
sudo apt upgrade

Daemon Password Config

sudo nano /home/pi/.config/deluge/auth

Autostart using Systemd

Source: readthedocs.io

  • Create a service specific user:
sudo adduser --system  --gecos "Deluge Service" --disabled-password --group --home /var/lib/deluge deluge
sudo adduser <username> deluge
  • Daemon (deluged) service
sudo nano /etc/systemd/system/deluged.service containing the following:
Description=Deluge Bittorrent Client Daemon
# Start after network and specified mounts are available.
After=network-online.target media-aman32.mount
# Stops deluged if mount points disconnect


ExecStart=/usr/bin/deluged -d -l /var/log/deluge/daemon.log -L warning --logrotate


# Time to wait before forcefully stopped.

WantedBy=multi-user.target media-aman32.mount
  • Conditionally start deluged for mount points:

List the available drive mounts:

sudo systemctl -t mount

Look for your mount point in the Description column. Mounts are formatted similar to the mount point with -s replacing /s in the path. e.g.: media-xyz.mount

Modify the [Unit] section of the deluged.service script by adding the details below, substituting xyz.mount for the mount you want the service to depend on:

Description=Deluge Bittorrent Client Daemon
# Start after network and specified mounts are available.
After=network-online.target xyz.mount
# Stops deluged if mount points disconnect

For multiple mount points add a space between additional entries. e.g.:

After=network-online.target xyz.mount abc.mount def.mount

Modify the [Install] section to ensure the deluged service is started when the mount point comes back online:

WantedBy=multi-user.target xyz.mount
  • Umask for deluged downloaded files:
000 - full access for all users and groups.
007 - only user and group that deluged is running as (e.g. deluge) with no access from any other accounts.
002 - user and group deluged is running as with read-only for all other accounts.
022 - user deluged is running as with read-only for all other accounts.
  • User configuration
sudo mkdir /etc/systemd/system/deluged.service.d/
sudo nano /etc/systemd/system/deluged.service.d/user.conf
 # Override service user
  • Start deluged service:
sudo systemctl enable /etc/systemd/system/deluged.service
sudo systemctl start deluged
sudo systemctl status deluged
  • Web UI (deluge-web) service
sudo nano /etc/systemd/system/deluge-web.service containing the following:
Description=Deluge Bittorrent Client Web Interface


ExecStart=/usr/bin/deluge-web -d -l /var/log/deluge/web.log -L warning --logrotate


  • User configuration:
sudo mkdir /etc/systemd/system/deluge-web.service.d/
sudo nano /etc/systemd/system/deluge-web.service.d/user.conf with the following contents:
# Override service user
  • Start deluge-web service:
sudo systemctl enable /etc/systemd/system/deluge-web.service
sudo systemctl start deluge-web
sudo systemctl status deluge-web
  • Service logging:
sudo mkdir -p /var/log/deluge
sudo touch /var/log/deluge/web.log
sudo chown -R deluge:deluge /var/log/deluge
sudo chmod -R 750 /var/log/deluge
  • Finally restart the services:
sudo systemctl daemon-reload
sudo systemctl restart deluged
sudo systemctl restart deluge-web
  • Move the exisitng configuration files, if present to below directory as deluge user cannot access files present in other users home dir:
sudo mv /home/pi/.config/deluge/ /var/lib/deluge/.config/
sudo chown deluge:deluge -R /var/lib/deluge/.config/deluge/            # this is to fix the permissions issue
  • If the services fail to start due to cryptography version issue:
sudo pip3 install cryptography==35.0.0
pip3 install cryptography==35.0.0



sudo apt-get install amule-daemon

Copy the md5 of the password:

echo -n "password" | md5sum

Run amuled once


Edit the Config file:

nano ~/.aMule/amule.conf
ECPassword = md5 value of On Password
ECPort = 4712

Below [WebServer]:

Password= md5 value of On Password

Create Addresses file:

nano addresses.dat

Auto Start:

sudo nano /etc/default/amule-daemon


sudo reboot


Source: wiki.amule.org

  • Edit the below file:
nano .aMule/amule.conf
CoreCommand=/home/pi/scripts/telegram_bot.py "%DLACTIVETIME" "%NAME" "%FILE"
  • Create the script file:
nano /home/pi/scripts/telegram_bot.py
#!/usr/bin/env python3
import requests
import sys

file_name = sys.argv[1]

def telegram_bot_sendtext(bot_message):
   bot_token = '1183862178:AAGfLdGsddsgdggk'
   bot_chatID = '1053242213'
   send_text = 'https://api.telegram.org/bot' + bot_token + '/sendMessage?chat_id=' + bot_chatID + '&parse_mode=Markdown&text=' + bot_message
   response = requests.get(send_text)
   return response.json()


Amule Remote in Ubuntu 20.04

Source: ubuntuforums.org

sudo apt install -y libboost-system1.67.0 libcrypto++6 libwxbase3.0-0v5 libgeoip1 libupnp13
wget http://archive.ubuntu.com/ubuntu/pool/universe/a/amule/amule-utils-gui_2.3.2-6_amd64.deb
sudo dpkg -i amule-utils-gui_2.3.2-6_amd64.deb

Auto Mount USB Drive

        This method fails to load part files if they are on external mount device
  • To prevent the Boot failure due to missing/corrupt USB Drive, Remove the entry from FSTAB.
  • Disable auto start for Amule Daemon:
sudo systemctl disable amule-daemon
  • Edit the rc.local file:
sudo nano /etc/rc.local
  • Add below lines before "exit 0":
sudo mount /dev/sda1 /media/aman32
sudo service amule-daemon start

Systemd autostart amuled

  • Create a service file:
sudo nano /etc/systemd/system/amuledmn.service
Description=Amuled Daemon
# Start after network and specified mounts are available.
After=network-online.target media-aman32.mount
# Stops deluged if mount points disconnect


ExecStart=/usr/bin/amuled -c /home/pi/.aMule/
ExecStop=/usr/bin/amulecmd -c shutdown -P <PASSWORD>


# Time to wait before forcefully stopped.

WantedBy=multi-user.target media-aman32.mount
  • Reload daemon and enable service:
sudo systemctl daemon-reload 
sudo systemctl enable amuledmn.service
sudo systemctl start amuledmn.service

FTP Server

sudo apt-get install vsftpd
sudo nano /etc/vsftpd.conf

uncomment the following options:


In case of errors replace the contents of conf file with below contents:

max_per_ip=0                                 //By default connection limit is set to 50, you can remove this limitation by setting it to 0

Restart the Service

sudo service vsftpd restart

Now you should be able to login with any local user credentails.

Use Filezille to upload files & verify:

tail /var/log/vsftpd.log 

TFTP Server

sudo apt-get install tftpd-hpa

tftpd-hpa look for ipv6 and wont start without it. Add -4 or –ipv4 between the quotes on the TFTP_OPTIONS line in the file

sudo nano /etc/default/tftpd-hpa
sudo chmod -R 777 /srv/tftp
sudo service tftpd-hpa restart
sudo service –status-all


Install Tor:

sudo apt-get install tor

Edit torrc file:

sudo nano /etc/tor/torrc
 SocksPort 9050
 SocksPolicy accept
 SocksPolicy accept
 SocksPolicy reject *
 Log notice file /var/log/tor/notices.log
 RunAsDaemon 1

Create log file:

sudo touch /var/log/tor/notices.log
sudo chmod 666 /var/log/tor/notices.log

Enable Autostart:

sudo update-rc.d tor enable

Reboot & Verify Installation

netstat -an | grep 9050
ps -aux | grep tor

You will have two services running as Tor:

tor.service                                         # dummy service appears to the user as active but in exited status.
tor@default.service                                 # most reliable service to check if Tor is running

Therefore check the Tor Service using below command:

sudo systemctl status tor@default.service


Source: steven-england.info

  • If you are in a SSH connection, change into a desktop session based terminal before starting JDownloader.
  • JDownloader needs features of an active LXDE environment, it won’t work as a headless service.
mkdir ~/jdownloader2
cd jdownloader2
wget http://installer.jdownloader.org/JDownloader.jar
java -jar /home/pi/jdownloader2/JDownloader.jar
  • Create startup script
nano /home/pi/jdownloader2/startjd2.sh
java -jar /home/pi/jdownloader2/JDownloader.jar

Make it executable:

chmod 755 /home/pi/jdownloader2/startjd2.sh
  • Autostart
nano ~/.config/lxsession/LXDE-pi/autostart

Paste this line into the file:

  • If you want a desktop icon:
sudo apt-get install lxshortcut                      ## Install lxshortcut if it is not already installed by default
lxshortcut -o /home/pi/Desktop/JDownloader.desktop
  • To create a Menu item:
nano JDownloader.desktop

Add below line to the file:


Move the file to applications folder:

cp JDownloader.desktop ~/.local/share/applications/

Jdownloader with Tor Proxy

Goto Connection Manager, add a proxy for:

Socks5 Proxy  -> -> 9050 -> Whitelist -> rapidshare.*(domain names)


  • Install Java
sudo apt-get install openjdk-11-jre-headless
  • Download Jar File:
cd /opt/jdownloader
wget http://installer.jdownloader.org/JDownloader.jar
  • Start JDownloader installation
sudo java -jar JDownloader.jar -norestart
Repeat step 3.1 until JDownloader asks you to enter your MyJDownloader logins on console
You can now remote control your JDownloader instance via MyJDownloader
  • Start JDownloader:
java -jar JDownloader.jar &    (without the -norestart parameter!)


Source docs.swizzin.net

  • Create below dir & file:
mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/jdownloader.service
  • Paste the following[1]:
Description=JDownloader Service

#ExecStart=/usr/bin/java -jar /home/pi/bin/jdownloader/JDownloader.jar
ExecStart=/usr/bin/java -Djava.awt.headless=true -jar /opt/jdownloader/JDownloader.jar


# Time to wait before forcefully stopped.

  • Change the dir permissions:
sudo chown pi:pi -R jdownloader/
  • As of systemd v230, the new default is to kill all children of a terminating login session. Change it:
sudo nano /etc/systemd/logind.conf
  • Reload your systemd user daemon:
systemctl --user daemon-reload
  • Enable and start the service now:
systemctl enable --now --user jdownloader
  • You can now check the status of jdownloader with
systemctl status --user jdownloader


Source: nodered.org

Upgrading existing installation:

bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

Start the application:


Access the Web-UI:

Install Dashboard

npm i node-red-dashboard


Install Dependancies:

sudo apt-get update
sudo apt-get install python-support python-crypto python-pycurl tesseract-ocr tesseract-ocr-eng python-imaging python-qt4 -y

Download Package

wget https://github.com/pyload/pyload/releases/download/0.4.20/pyload-cli_0.4.20_all.deb

Install Package:

sudo dpkg -i pyload-cli_0.4.20_all.deb
sudo apt --fix-broken install

For downloading from storage sites with click-n-load install Rhino javascript engine:

sudo apt-get install rhino -y

Add/Edit user

pyLoadCore -u

Initial Config

pyLoadCore -s

Test process:

sudo pyLoadCore 

Start process:

/etc/init.d/pyload start

Enable Autostart:

sudo update-rc.d pyload defaults

Access the GUI:

2nd Method

Source: github.com

Add Sources:

sudo nano /etc/apt/sources.list
deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi

Update our package list and install the dependencies:

sudo apt-get update
sudo apt-get -y install git liblept4 python python-crypto python-pycurl python-imaging tesseract-ocr zip unzip python-openssl libmozjs-24-bin
sudo apt-get -y build-dep rar unrar-nonfree
sudo apt-get source -b unrar-nonfree
sudo dpkg -i unrar_*_armhf.deb
sudo rm -rf unrar-*
cd /usr/bin
ln -s js24 js

Download the current version of pyLoad and install that:

cd /opt
sudo git clone -b stable https://github.com/pyload/pyload.git
cd pyload
sudo ./pyLoadCore.py

Start pyload at every reboot:

sudo nano /etc/systemd/system/pyload.service
Description=Python Downloader

ExecStart=/usr/bin/python /opt/pyload/pyLoadCore.py


Activate this rule with systemd:

sudo systemctl enable pyload.service

Check the status of the service:

sudo systemctl status pyload

Resilio Sync

Source: resilio.com

Download the ARM Package from below URL:


Extract the Binary file, make it executable & test:

./rslsync --webui.listen

Enable autostart on reboot:

sudo nano /etc/rc.local

Add below before "exit 0":

/home/pi/rslsync --webui.listen


sudo reboot

DC ++

AirDCPP on Rpi Zero W (Armv6)

Auto starting in Rpi as normal user:

sudo -i -u pi /home/pi/airdcpp/airdcppd $> /home/pi/airdcpp/event.log &

Compile Using Docker

        This is a Work-in-Progress.

Source: blog.kitware.com airdcpp-web.github.io

Clone the Repository:

git clone https://github.com/airdcpp-web/airdcpp-webclient.git
cd airdcpp-webclient

Install Docker, Pull Image and start the Container:

sudo apt install docker docker.io
sudo docker pull thewtex/cross-compiler-linux-armv6
sudo docker run --rm -it -v /home/aman/airdcpp-webclient:/usr/src/airdc:rw thewtex/cross-compiler-linux-armv6 bash

Update the Container:

apt update 
apt upgrade

Install Tools:

apt install gcc g++ git cmake python pkg-config git npm

Install libraries:

apt install pkg-config libbz2-dev zlib1g-dev libssl-dev libstdc++6 libminiupnpc-dev libnatpmp-dev libtbb-dev libmaxminddb-dev libboost1.58-dev libboost-regex1.58 libboost-thread1.58 libboost-system1.58 libleveldb-dev libwebsocketpp-dev

Compile the binary:

cmake .
make -j1               # j1 for 1 CPU core in Rpi ZeroW



GCC 4.9 not getting detected error:

vi CMakeLists.txt



Install BZIP2 Lib:

apt install libbz2-dev

Install MindmaxDB Lib

wget http://ftp.de.debian.org/debian/pool/main/libm/libmaxminddb/libmaxminddb-dev_1.3.2
wget http://ftp.de.debian.org/debian/pool/main/libm/libmaxminddb/libmaxminddb0_1.3.2-1_amd64.deb
dpkg -i libmaxminddb0_1.3.2-1_amd64.deb 
dpkg -i libmaxminddb-dev_1.3.2-1_amd64.deb

Compile using Buildroot

        There should be atleast 10GB free disk available.

Source: github.com

Install NPM:

sudo apt install npm

Install Dependencies:

sudo apt install libncurses-dev unzip pcregrep cmake python

Check for the latest patch of Buildroot to get the latest fixes and security updates:


Download Buildroot:

mkdir buildroot
cd buildroot/
wget https://buildroot.org/downloads/buildroot-2020.05.1.tar.bz2
tar jxvf buildroot-2020.05.1.tar.bz2
mv -f buildroot-2020.05.1 armhf

Now you should have the below directory:


Download Airdccpp Source in home directory:

cd ~ && git clone https://github.com/airdcpp-web/airdcpp-webclient.git

The source code should be in below directory:


Compile the Buildroot:

/home/aman/airdcpp-webclient/buildroot/setup-buildroot.sh /home/aman/buildroot/armhf/
cd buildroot/armhf/
make nconfig

Now edit the configuration based on you needs (mainly the Target options sections).

For Raspberry Pi Zero W:
    Target Architecture            --->    ARM (Little Endian]
    Target Architecture Variant    --->    arm1176jzf-s
Press F6 -> Save
Press F9 -> Exit
make -j4

Create the build directory:

cd /home/aman/ && mkdir build

Compile the Airdcpp Source Code:

SKIP_EXISTING=1 BUILD_THREADS=4 BRANCH=master /home/aman/airdcpp-webclient/buildroot/build-portable.sh /home/aman/buildroot/ /home/aman/build armhf


Install Daemon
sudo apt-get install eiskaltdcpp eiskaltdcpp-daemon
mkdir /home/pi/.config/eiskaltdc++/Logs
touch /home/pi/.config/eiskaltdc++/Logs/daemon.log
eiskaltdcpp-daemon -L -d
Install Simple WebUI
cd ~
git clone https://github.com/eiskaltdcpp/eiskaltdcpp-web
sudo mv eiskaltdcpp-web /usr/share/
cd /usr/share/eiskaltdcpp-web/
sudo nano config.js
 "host" : "",    # IP address of remote computer where eiskaltdcpp-daemon is launched

Install Apache Server

sudo apt install apache2
cd /etc/apache2/conf-enabled/
cd sites-enabled/
nano 000-default.conf 
Listen 80
<VirtualHost *:80>
    DocumentRoot /usr/share/eiskaltdcpp-web/
sudo systemctl restart apache2

Test the WebUI:
Icecult WebUI

Run the daemon once and kill it:


Edit the Config File:

nano ~/.config/eiskaltdc++/DCPlusPlus.xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <Directory Virtual="Name of share">/path/to/share/</Directory>

Edit Favorites file for auto connect:

nano ~/.config/eiskaltdc++/Favorites.xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <Hub Name="Name of your hub" Connect="1" Description="" Nick="MyNickname" Password="" Server="adc://HubIP:HubPort" UserDescription="" Encoding="" ClientId="" ExternalIP="" OverrideId="0" UseInternetIp="0" DisableChat="0" Mode="0" SearchInterval="1"/>

Download the Icecult Files:

git clone https://github.com/kraiz/icecult.git

Install Nginx Server:

sudo apt install nginx

To serve the webinterface and proxy the jsonrpc interface and replace

sudo nano /etc/nginx/site-enabled/default 

With below config:

server {
  root /home/pi/icecult/app;
  location /rpc {
    rewrite /rpc/(.*) /$1 break;
    proxy_http_version 1.1;

Restart the Rpi:

sudo reboot

Test the WebUI:


        This version does not compile successfully.

Download and extract the Source:

wget http://www.ptokax.org/files/

Packages to install:

sudo apt install make g++ zlib1g-dev libtinyxml-dev liblua5.3-dev 

Optional package for SQLite database support

sudo apt install libsqlite3-dev

To compile PtokaX with SQLite database for Lua 5.3:

make -f makefile-sqlite

Emulate Rpi with Docker

Source: github.com

Install Docker:

sudo apt install docker docker.io

Run the container:

sudo docker run -it lukechilds/dockerpi

Boot a local Raspbian image:

sudo docker run -it -v /home/aman/filesystem.img:/sdcard/filesystem.img lukechilds/dockerpi 

Download a much slimmer VM only Docker container that doesn't contain the Raspbian filesystem image:

sudo docker run -it -v /home/aman/filesystem.img:/sdcard/filesystem.img lukechilds/dockerpi:vm

Also add storage:

sudo docker run -it -v /home/aman/filesystem.img:/sdcard/filesystem.img -v /tmp:/sdcard2 lukechilds/dockerpi:vm

Plex Media Server on OSMC

  • Installation

Source: pimylifeup.com


sudo apt-get update
sudo apt-get upgrade

Install Dependencies:

sudo apt-get install apt-transport-https

Add Repository:

curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add -
echo deb https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list

Install Plex:

sudo apt-get update
sudo apt install plexmediaserver

Access Plex:
  • Upgrade
sudo apt-get update
sudo apt-get install plexmediaserver


Source simplesi.net


wget https://git.io/vMS6T -O isgh8.sh
sudo bash isgh8.sh pi


  • Configure static Ip address for the Raspberry pi.
  • Use this IP address as DNS server in the Router.
  • Install:
curl -sSL https://install.pi-hole.net | bash
sudo reboot
  • Change password:
pihole -a -p
  • Upgrade:
pihole -up

Youtube Blocklist



Source: techrepublic.com askubuntu.com flexion.org

Install Snapd:

sudo apt update
sudo apt install snapd
sudo reboot

After this, install the core snap in order to get the latest snapd:

sudo snap install core

Install Nextcloud

sudo snap install nextcloud


Source stackexchange.com


pip3 install selenium

Chrome driver

sudo apt install chromium-chromedriver


sudo dpkg -i chromium-chromedriver_65.0.3325.181-0ubuntu0.14.04.1_armhf.deb
sudo apt install -f
sudo apt install xvfb
pip3 install PyVirtualDisplay
pip3 install xvfbwrapper 


         Rust/Cryptography error: can't find Rust compiler

Install Rust:

curl https://sh.rustup.rs -sSf | sh
source "$HOME/.cargo/env"

Install Calibre:

pip3 install calibreweb

Calibre-Web can be started:


Access Calibre-Web:

http://localhost:8083/opds for the OPDS catalog

Default login:

Username: admin
Password: admin123

Auto Start:

sudo nano /etc/systemd/system/cps.service



Start Service

sudo systemctl enable cps.service

If getting this error:

AttributeError: 'backports.zoneinfo.ZoneInfo' object has no attribute 'normalize'

Downgrade tzlocal:

pip install tzlocal==2.1

Multiple Calibre Libraries

        This section is under construction.


Source: docker.com

Install using the apt repository

  • Set up the repository

Update the apt package index and install packages to allow apt to use a repository over HTTPS:

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

Add Docker’s official GPG key:

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/raspbian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Use the following command to set up the repository:

echo \
 "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/raspbian \
 "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
 sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Update the apt package index:

sudo apt-get update
  • Install Docker Engine

To install the latest version, run:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Verify that the Docker Engine installation is successful by running the hello-world image:

sudo docker run hello-world

This command downloads a test image and runs it in a container. When the container runs, it prints a confirmation message and exits.

Unistalling Docker

Uninstall the Docker Engine, CLI, containerd, and Docker Compose packages:

sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

Images, containers, volumes, or custom configuration files on your host aren’t automatically removed. To delete all images, containers, and volumes:

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Installing Portainer

Source pimylifeup.com


sudo docker pull portainer/portainer-ce:latest
sudo docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest



Source: docs.photoprism.app docs.photoprism.app

  • Ensure compatibility with 64-bit Docker images
sudo nano /boot/config.txt
  • Increase Swap to 4 GB
swapon --show
  • Getting Image:
docker pull --platform=arm64 photoprism/photoprism:latest
  • Getting Updates:

Open a terminal and change to the folder where the docker-compose.yml file is located

docker compose pull
docker compose stop
docker compose up -d
  • Download the Composer file:
wget https://dl.photoprism.app/docker/arm64/docker-compose.yml
  • We recommend that you change ~/Pictures to the directory where your existing media files are, for example:
     - "/mnt/photos:/photoprism/originals"
  • Additional directories can be mounted as sub folders of /photoprism/originals (depending on overlay filesystem support):
     - "/mnt/photos:/photoprism/originals"
     - "/mnt/videos:/photoprism/originals/videos"
  • Start the server:

Open a terminal and change to the folder in which the docker-compose.yml file has been saved:

docker compose up -d

Access the service:
  • The server port and other config options can be changed in docker-compose.yml at any time. Remember to restart the services for changes to take effect:
docker compose stop
docker compose up -d

Install Python 3.11

Source: aruljohn.com

Run this command to download the latest Python source code.

wget https://www.python.org/ftp/python/3.11.5/Python-3.11.5.tgz

Install the build tools

sudo apt update
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev git

Configure, make and make install

tar -xzvf Python-3.11.5.tgz 
cd Python-3.11.5/
./configure --enable-optimizations
sudo make altinstall

This will install Python at /usr/local/bin/python3.11. To test the version, run this:

/usr/local/bin/python3.11 -V

You will get this output:

Python 3.11.5

Still the default version is 3.9:

/usr/bin/python3 -V
Python 3.9.2

To make the default version of Python 3.11.5, run this:

sudo rm /usr/bin/python3
sudo ln -s /usr/local/bin/python3.11 /usr/bin/python3

Test whether Python 3.11.5 is the default version:

python -VV
Python 3.11.5

{{#widget:DISQUS |id=networkm |uniqid=Rpi Softwares |url=https://aman.awiki.org/wiki/Rpi_Softwares }}