{"id":16397565,"url":"https://github.com/bxnxm/rpitools","last_synced_at":"2025-10-26T14:31:35.251Z","repository":{"id":123448177,"uuid":"112665243","full_name":"BxNxM/rpitools","owner":"BxNxM","description":"RaspberryPi media server, with GPIO based OLED interface - with complete  automatic deployment system ","archived":false,"fork":false,"pushed_at":"2020-04-17T14:26:50.000Z","size":233454,"stargazers_count":11,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-31T20:44:00.511Z","etag":null,"topics":["autodeployments","backup-restore","central-config","central-controller","debian","gpio","lifecycle-management","mediaserver","minidlna","network-disk-sync","retropie","samba","sftp","sshfs","systemmonitor","usermanagement","webpage"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BxNxM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-30T22:03:01.000Z","updated_at":"2023-07-25T17:30:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"b10a5deb-8306-4aba-89e6-9436006cd478","html_url":"https://github.com/BxNxM/rpitools","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BxNxM%2Frpitools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BxNxM%2Frpitools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BxNxM%2Frpitools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BxNxM%2Frpitools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BxNxM","download_url":"https://codeload.github.com/BxNxM/rpitools/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238347764,"owners_count":19456987,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autodeployments","backup-restore","central-config","central-controller","debian","gpio","lifecycle-management","mediaserver","minidlna","network-disk-sync","retropie","samba","sftp","sshfs","systemmonitor","usermanagement","webpage"],"created_at":"2024-10-11T05:10:26.144Z","updated_at":"2025-10-26T14:31:26.744Z","avatar_url":"https://github.com/BxNxM.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"![logo](https://github.com/BxNxM/rpitools/blob/master/template/demo_images/rpitools_structure.png?raw=true)\n\n```\n  _____    _____    _____   _______    ____     ____    _         _____ \n |  __ \\  |  __ \\  |_   _| |__   __|  / __ \\   / __ \\  | |       / ____|\n | |__) | | |__) |   | |      | |    | |  | | | |  | | | |      | (___  \n |  _  /  |  ___/    | |      | |    | |  | | | |  | | | |       \\___ \\ \n | | \\ \\  | |       _| |_     | |    | |__| | | |__| | | |____   ____) |\n |_|  \\_\\ |_|      |_____|    |_|     \\____/   \\____/  |______| |_____/ \n```\n## WHAT IS RPITOOLS [HomeCloud]?\n* RPITOOLS is an installation and configuration (deployment) system for the raspberry pi family. It deploys the official raspbain lite operating system and many useful programs(1), and set the complete system to a tiny low cost perfectly configured server.\n* Completly set for remote usage - ssh, sshfs, sftp, smb, vnc(optional), website(http), camera stream support (motion)\n* Sets an optional GUI (PIXEL) for graphical usage\n* Supports a UNIQUE extension shiled with many periphery (Oled, led, buttons, etc.).\n* LIST OF MAIN FUNCTIONALITIES:\n\t* torrent client - transmission (with http client, port: 9091)\n\t* network drive - samba (smb), web UI (h5ai)\n\t* OLED (128x64) display support on extension shield\n\t* extarnal ip deepnet clinet access (dropbox - external ip sync)\n\t* description for duckdns installation (get your free web domain)\n\t* disks handling: autoformat, automount, with commandline interface\n\t* user management (permissions, groups, seperated disk space, shared disk space) with commandline interface\n\t* terminal/command line set for easy usage - aliases and so on ...\n\t* vim, xdotool, scrot, python (with many modules), kodi etc.\n\t* custom ```rpitools/autodeployment/config/rpitools_config.cfg``` user configuration based on ```rpitools/autodeployment/config/rpitools_config_template.cfg```\n\t* security: ufw, fail2ban\n\t* backup handling - system, user - backup, restore\n\t* autosync based on rsync: remote, local sync with modes: copy, move, mirror\n\t* complete system monitoring solution - sysmonitor\n\t* embedded multiprocess communication memdict with commandline interface\n\t* easy update: ```update_rpitools```\n\n(1) Installing many linux apps and serices, furthermore creates several custom services.\n\n***More detailed informations coming soon for every function***\n\n## How to install:\n \n#### CONFIGURATION ON MAC \u0026 LINUX\n\n***Deploy and setup raspbian image***\n\n* ***macOS***: open terminal ```CMD+SPACE``` type ```Terminal``` press enter\n* ***Linux***: open ```terminal``` and ```sudo apt-get install git```\n\n* clone rpitools repository from github - to get the resources\n\n```\ngit clone https://github.com/BxNxM/rpitools.git\n```\n\n* go to rpitools/\n\n```\ncd rpitools/\nsource setup.bash\n\n#### SETUP EXECUTION ####\n* Detect the device | linux | mac | raspbian\n* [linux | mac] install requirements on deployment side\n  and set installation environment. \n* [raspbain] manage depoyment depends on your custom config\n#########################\n```\nFollow the instructions.\n\n***Note***: First you need to set up your custom configuration with confeditor. It will use vim editor, commands cheetsheet for vim:\n\n\n## VIM - command line text editor\n\nESC MODE\n\n```\n:w\t\t\t- type \u0026 enter - save the actual file\n:q!     \t- type \u0026 enter - exit without save\n:wq\t\t\t- type \u0026 enter - save and exit\n\njump end of the line: $\njump beginning of the line: 0 \n```\n\nINSERT MODE\n\n```\nmove the cursor with the arrows [up - down - right - left]\nSHIT + v\t- type - select line\nCTRL + v \t- type - select block\ny\t\t\t- type - copy selected area\nx\t\t\t- type - cut selected area\np\t\t\t- type - paste copied area\n```\n\n## Deployment\nWhen your custom configuration (confeditor) is ready and validated, you can start to deploy your system.\n\n* Execute deployment scripts:\n\n```\n./1_raspbian_imager.bash\n###### DESCRIPTION ######\n* It deploys (write) the factory raspbian_lite_latest image to the SD card.\n(It serach your rapbian image from Downloads folder)\n(If it not works copy your image under: rpitools/prepare/sd_card/raspbian_img)\n#########################\n\n./2_boot_config.bash\n###### DESCRIPTION ######\n* It makes an SD configuration, before the fisrt boot:\nwifi, ssh, i2c, spi etc. based on previously set config file (rpitools_config.cfg)\n#########################\n```\n\n* Unmount and disconnect the SD card from your computer. Take it to the pi, and power it up.\n* Wait a little to boot up propely (max. 2-4 min.)\n\n```\n./3_remote_config_for_rpi_machine.bash\n###### DESCRIPTION ######\n* It copies all the rpitools repository to the raspberrypi\n* Executes the rpitools/setup configuration sourcing\n*** Based on your configuration (rpitools_config.cfg) it will prepare\nyour whole system.\n* It takes 30-80 minutes (many installations and configurations with reboots)\n#########################\n\n./4_connect_and_enjoy.bash\n###### DESCRIPTION ######\n* FInally connect to your pi, and enjoy your NEW, PERSONAL environmat!\n#########################\n```\n\n***WIRING***\n\n###### If you have our - offcial shild - just connect it to your raspberrypi.\n###### Otherwase if you want, build your own shield for your pi, wiring is down below.\n\n##### RPITOOLS EXTENSION SHILED WIRING 1.0\n\n![page_welcome](https://github.com/BxNxM/rpitools/blob/master/gpio/RPITOOLS_1.0_GPIO_PINOUT.png?raw=true)\n\n***OLED BOOTUP LAUNCH SETUP - CONFIGURE A SERVICE (optional) [1]***\n\n```\nfor more info:\noledinterface -h\n```\n\n* Use virtual buttons:\n\nOled dedicated buttons\n\n```\noledinterface -b LEFT\noledinterface -b RIGHT\noledinterface -b OK\noledinterface -b standby\n\n```\nOled page joystick buttons\n\n```\noledinterface -j LEFT\noledinterface -j RIGHT\noledinterface -j CENTER\noledinterface -j UP\noledinterface -j DOWN\n```\n\n#### CUSTOMIZE OLED FRAMEWORK AND CREATE NEW PAGES (OPTIONAL)\n\n* create your own page under\n\n```\n/home/$USER/rpitools/gpio/oled_128x64/lib/pages/page_XY.py\n```\nChange XY to the next page number\n\nUse the example page resources under page folder, and create your own custom pages. List existing pages with:\n\n```\nList folder content:\nllt /home/$USER/rpitools/gpio/oled_128x64/lib/pages\nor\nls -lath /home/$USER/rpitools/gpio/oled_128x64/lib/pages\n```\n\n## oled framework main features\n* draw text\n* draw shapes: ellipse, rectangle, line, poligon\n* draw image\n* automatic functions: header bar (optional), page bar (optional), button handling\n* automatic button handling (physical and virtual over oledinterface)\n* page control, load, run in loop, unload, next, previus etc...\n\n![oled_pages_demo](https://github.com/BxNxM/rpitools/blob/master/template/demo_images/oledPagesDemo.png?raw=true)\n![oled_pages_gif](https://github.com/BxNxM/rpitools/blob/master/template/demo_images/oledp.GIF?raw=true)\n## performance with default settings (medium)\nRaspberryPi Zero W - get service CPU usage (average)\n\n```\nwhile true; do cpu=$(ps aux | grep -v grep | grep \"oled_gui_core\" | awk '{print $3}') \u0026\u0026 echo -ne \"oledfw: $cpu %\\r\"; done\n```\n\nOn MEDIUM performance set:\n\n```\nCPU LOAD: 25 % - 35 %\nCPU if oled in STANDBY: 2.3 %\n```\n\n# BUILT IN KODI\n```                            \n  _  __   ____    _____    _____ \n | |/ /  / __ \\  |  __ \\  |_   _|\n | ' /  | |  | | | |  | |   | |  \n |  \u003c   | |  | | | |  | |   | |  \n | . \\  | |__| | | |__| |  _| |_ \n |_|\\_\\  \\____/  |_____/  |_____|\n                                           \n``` \n\n***use hardware optimized media player for 720p and 180p videos***\n\n```\nrun in command line:\nkodibg\n```\n\nIt gives you a full media player with many options. \nThe video output goes to the dedicated HDMI connector.\n\n\n# RGB interface\n```\n                 _       _           _                    __                       \n                | |     (_)         | |                  / _|                      \n  _ __    __ _  | |__    _   _ __   | |_    ___   _ __  | |_    __ _    ___    ___ \n | '__|  / _` | | '_ \\  | | | '_ \\  | __|  / _ \\ | '__| |  _|  / _` |  / __|  / _ \\\n | |    | (_| | | |_) | | | | | | | | |_  |  __/ | |    | |   | (_| | | (__  |  __/\n |_|     \\__, | |_.__/  |_| |_| |_|  \\__|  \\___| |_|    |_|    \\__,_|  \\___|  \\___|\n          __/ |                                                                    \n         |___/                                                                     \n```\nTo controll connected rgb leds.\n\n* start rgb service - it controlls the leds - and process requests\n\n```\nrgbinterface -s ON\n```\n\n* turn on the leds\n\n```\nrgbinterface -l ON\n```\n\n* set colors\n\n```\nrgbinterface -r 0 -g 0 -b 0\nrgbinterface -r 100 -g 100 -b 100\n\n# color ranges: 0-100, min. step 1\n```\n\n* turn off the leds\n\n```\nrgbinterface -l OFF\n```\n\n* turn off the service\n\n```\nrgbinterface -s OFF\n```\nYou don't have to turn off the service, it can runs in the background, so you can send data for it over rgbinterface and it makes the magic ;)\n\n* show rgb leds service status\n\n```\nrgbinterface -sh\n```\n\n* interface help for informations\n\n```\nrgbinterface -h\n```\n\n# HAPTIC-ENGINE interface\n```\n  _    _              _____    _______   _____    _____   ______   _   _    _____   _____   _   _   ______ \n | |  | |     /\\     |  __ \\  |__   __| |_   _|  / ____| |  ____| | \\ | |  / ____| |_   _| | \\ | | |  ____|\n | |__| |    /  \\    | |__) |    | |      | |   | |      | |__    |  \\| | | |  __    | |   |  \\| | | |__   \n |  __  |   / /\\ \\   |  ___/     | |      | |   | |      |  __|   | . ` | | | |_ |   | |   | . ` | |  __|  \n | |  | |  / ____ \\  | |         | |     _| |_  | |____  | |____  | |\\  | | |__| |  _| |_  | |\\  | | |____ \n |_|  |_| /_/    \\_\\ |_|         |_|    |_____|  \\_____| |______| |_| \\_|  \\_____| |_____| |_| \\_| |______|\n                                                                                                           \n                                                                                                           \nhapticengingeinterface -h\n\noptional arguments:\n  -h, --help        show this help message and exit\n  -u, --up          HapticEngine UP signel\n  -d, --down        HapticEngine DOWN signel\n  -s, --soft        HapticEngine SOFT signel\n  -t, --tap         HapticEngine TAP signel\n  -dt, --doubletap  HapticEngine DoubleTAP signel\n  -sn, --snooze     HapticEngine SNOOZE signel\n```\n\n# USER MANAGEMENT interface\n```\nusermanager --man\n\n--man\t\t::\tmanual \n--adduser\t::\tAdd new user with settings, \u003cusername\u003e \u003cuserpasswd\u003e 2 par\n--removeuser\t::\tRemove user, \u003cusername\u003e 1 par\n--changepasswd\t::\tChange user password, \u003cusername\u003e \u003cuserpasswd\u003e 2 par\n--userstat\t::\tShow users list and used disk space 0 par\n--logoff\t::\tLog off user - select after execute 0 par\n--fixusergroups\t::\tFix user groups for every user, except rpitools user 0 par\n--addapacheuser\t::\tAdd user for apache - private cloud \u003cusername\u003e \u003cuserpasswd\u003e 2 par\n```\n\n# BACKUPHANDLER interface\n```\nbackuphandler --man\n\n========================== backup_handler ====================================\nsystem backup\t\t- backup system [for migration]\n\t\t\twith all user homes, user accounts and /var/www/html /var/lib/transmission-daemon/.config/transmission-daemon/torrents/ /var/spool/cron/ extra folders, optional parameter: --skiphomedirs\nsystem restore\t\t- restore system [for migration]\n\t\t\twith all user homes, user accounts and /var/www/html /var/lib/transmission-daemon/.config/transmission-daemon/torrents/ /var/spool/cron/ extra folders, optional parameter: --skiphomedirs\nbackup\t\t\t- backup home folders\nrestore\t\t\t- restores every users last backup in subfolder under its own home dir\nrestore \u003cusername\u003e\t- restore a selected user last backup in subfolder under its own home dir\nstruct\t\t\t-show actual backup archive structure\n```\n\n# Custom System monitoring\n```\nsysmonitor -h\n\n  -h, --help      show this help message and exit\n  -a, --all       show all implemented informations\n  -t, --temp      show cpu and gpu temerature\n  -c, --cpu       show cpu usage\n  -d, --disk      show disk usage\n  -m, --memory    show memory usage\n  -l, --loggedin  show logged in users\n  -g, --general   show general informations\n  -o, --loop      show informations in loop\n  -s, --services  show rpitools services\n  -e, --export    save measured health data to memdict\n\nEXAMPLE: sysmonitor --services\n _____    _____    _____   _                     _\n|  __ \\  |  __ \\  |_   _| | |                   | |\n| |__) | | |__) |   | |   | |_    ___     ___   | |  ___\n|  _  /  |  ___/    | |   | __|  / _ \\   / _ \\  | | / __|\n| | \\ \\  | |       _| |_  | |_  | (_) | | (_) | | | \\__ \\\n|_|  \\_\\ |_|      |_____|  \\__|  \\___/   \\___/  |_| |___/system monitor\n\n ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| Sun May  5 09:55:22 BST 2019 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| RPItools monitor |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| Hi, USER! Have a GOO:D time! ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n\n ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| SERVICES |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n RPITOOLS SERVICES:\n\toled_gui_core active status: inactive\n\toled_gui_core enabled status: disabled\n\tdropbox_halpage active status: active\n\tdropbox_halpage enabled status: enabled\n\tauto_restart_transmission active status: inactive\n\tauto_restart_transmission enabled status: disabled\n\trpitools_logrotate active status: active\n\trpitools_logrotate enabled status: enabled\n\tmemDictCore active status: active\n\tmemDictCore enabled status: enabled\n\trgb_led_controller active status: inactive\n\trgb_led_controller enabled status: disabled\n\ttemp_controll_fan active status: inactive\n\ttemp_controll_fan enabled status: disabled\n\thAlarm active status: active\n\thAlarm enabled status: enabled\n LINUX SERVICES:\n\tapache2 active status: active\n\tapache2 enabled status: enabled\n\ttransmission-daemon active status: active\n\ttransmission-daemon enabled status: enabled\n\tmotion active status: \n\tmotion enabled status: \n\tsmbd active status: active\n\tsmbd enabled status: enabled\n\tminidlna active status: active\n\tminidlna enabled status: enabled\n\tssh active status: active\n\tssh enabled status: enabled\n\tnfs-kernel-server active status: active\n\tnfs-kernel-server enabled status: enabled\n\tglances active status: active\n\tglances enabled status: enabled\n\tcron active status: active\n\tcron enabled status: enabled\n\tnetworking active status: active\n\tnetworking enabled status: enabled\n MONITORED PROCESSES:\n\tXorg state: inactive\n\tvncserver state: inactive\n\tkodi state: inactive\n\tautosync state: ok\n\tbackuphandler state: ok\n OVERALL HEALTH [100.0%]:\n\t:) 0...23 :( exit code: 0\n```\n\n# RPITOOLs custom configuration access\n```\nconfeditor -h\n\n==== QUICK COMANDS ====\nedit | e\t- edit configuration\ndiff | d\t- diff configuration with template config\nsave | s\t- save all rpitools system related configs to cache backup folder\nrestore | r \t- restore all rpitools system related configs from cache backup folder\nimport | i\t- [not on raspberry!] import existing configuration for deployment\nOR RUN WITHOUT PARAMETERS, AND FOLLOW THE INSTRUCTIONS (RECOMMENDED)\n```\n\n# Your website\nYou have a custom website, with protected files web folder - like custom dropbox (cloud) on a private drive at home.\nGet your internal or extarnal ip address and copy-paste it to your browser.\n\n```\nget your ip address on the pi:\nsysmonitor -g\n```\n\n![website_1.0](https://github.com/BxNxM/rpitools/blob/master/template/demo_images/website1.0.png?raw=true)\n![websiteAllDemo](https://github.com/BxNxM/rpitools/blob/master/template/demo_images/webpageDemoAll.png?raw=true)\n# How to use bluetooth keyboard and other devices\n[resource](https://askubuntu.com/questions/17504/how-can-i-have-a-bluetooth-keyboard-auto-connect-at-startup)\n\n```\nsudo bluetoothctl -a\n\n[bluetooth]# power on\n[bluetooth]# agent KeyboardOnly\n[bluetooth]# pairable on\n[bluetooth]# scan on\n```\n\nLast command will show all available (waiting for pairing) bluetooth keyboards like this.\n\nDiscovery started\n[CHG] Controller 06:05:04:03:02:01 Discovering: yes\n\n```\n[bluetooth]# pair 01:02:03:04:05:06\n[bluetooth]# trust 01:02:03:04:05:06\n[bluetooth]# connect 01:02:03:04:05:06\n[bluetooth]# quit\n```\n\nNow put this simple script into ```/etc/init.d/keyboard```\n\n```\n#! /bin/sh\nsudo hcitool spinq\nexit 0\n```\n\nThen execute these.\n\n```\nsudo chmod +x /etc/init.d/keyboard\nsudo update-rc.d keyboard defaults\nsudo service keyboard start\nsudo service keyboard status\n```\n\nThat's it. Now whenever you turn your Bluetooth keyboard on, it'll be connected to your Linux automatically.\n\n# Useful links for Debian/Raspbain:\n* RaspberryPi GPIO usage:\n\n```\n https://sourceforge.net/p/raspberry-gpio-python/wiki/BasicUsage/\n```\n\n* GPIO pinout\n\n```\nhttps://pinout.xyz/pinout/pin1_3v3_power\n```\n\n* Download raspbian image (my project use the light version)\n\n```\nhttps://www.raspberrypi.org/downloads/raspbian/\n```\n\n* Raspbain image installation - manual - Windows / Mac / Linux\n\n```\nhttps://www.raspberrypi.org/documentation/installation/installing-images/\n```\n\n* My favourite raspberry pi order site (not sponsored - yet :P)\n\n```\nhttps://thepihut.com/products/raspberry-pi-zero-essential-kit\n```\n\n* Format disks\n\n```\nhttps://www.raspberrypi.org/forums/viewtopic.php?t=38429\n```\n\n* Useful - command line - commands collection\n\n```\nhttp://www.circuitbasics.com/useful-raspberry-pi-commands/\n```\n\n* Backup / Restore SDCard\n\n```\nhttps://thepihut.com/blogs/raspberry-pi-tutorials/17789160-backing-up-and-restoring-your-raspberry-pis-sd-card\nhttp://bobbyromeo.com/technology/backup-clone-raspberry-pi-sd-card/\n```\n\n* Password protected apache folder setup\n\n```\nhttps://www.cyberciti.biz/faq/howto-setup-apache-password-protect-directory-with-htaccess-file/\n```\n\n* Other usefull commands in the system\n\n```\nGet Kernel modules load state (spi, i2c)\nsystemctl status systemd-modules-load.service\n```\n\n* Convert pdf to html\n\n```\nhttp://www.pdfonline.com/convert-pdf-to-html/\n```\n\n* Set crontab for programs time based execution\n\n```\n* * * * * command to be executed\n- - - - -\n| | | | |\n| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)\n| | | ------- Month (1 - 12)\n| | --------- Day of month (1 - 31)\n| ----------- Hour (0 - 23)\n------------- Minute (0 - 59)\n\nstring         meaning\n------         -------\n@reboot        Run once, at startup.\n@yearly        Run once a year, \"0 0 1 1 *\".\n@annually      (same as @yearly)\n@monthly       Run once a month, \"0 0 1 * *\".\n@weekly        Run once a week, \"0 0 * * 0\".\n@daily         Run once a day, \"0 0 * * *\".\n@midnight      (same as @daily)\n@hourly        Run once an hour, \"0 * * * *\".\n\ncrontab -e     edit crontab\ncrontab -l     list crontab settings\n\nhttps://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/\n```\n\n* Image convert (convert howtogeek.png -quality 95 howtogeek.jpg)\n\n```\nhttps://www.howtogeek.com/109369/how-to-quickly-resize-convert-modify-images-from-the-linux-terminal/\n```\n\n* NFS howto\n\n```\nhttps://www.htpcguides.com/configure-nfs-server-and-nfs-client-raspberry-pi/\n```\n\n* Terminal colors\n\n```\nhttps://misc.flogisoft.com/bash/tip_colors_and_formatting\n```\n\n* ASCII ART\n\n```\nhttp://patorjk.com/software/taag/#p=display\u0026h=0\u0026f=Big\u0026t=RPITOOLS%0A\n```\n\n* DynamicDNS - duck DNS\n\n```\nhttps://www.duckdns.org\n```\n\n* Elecrow HDMI 5\" 800x480 TFT Display with XPT2046 Touch Controller\n\n```\nSets everything:\ndriver: git clone https://github.com/Elecrow-keen/Elecrow-LCD5.git\n\n# Manual setup:\nhttps://www.jeffgeerling.com/blog/2016/review-elecrow-hdmi-5-800x480-tft-display-xpt2046-touch-controller\n```\n\n* retropie - the best gaming platform\n\n```\nhttps://retropie.org.uk/docs/Manual-Installation/\n```\n\n* acct (Process accounting) - user monitor\n\n```\nhttps://www.ostechnix.com/monitor-user-activity-linux/\n```\n\n* SSHFS on windows\n\n```\nhttps://github.com/feo-cz/win-sshfs/releases\n```\n\n* Learn git usage interactively\n\n```\nhttps://learngitbranching.js.org\n```\n\n## GIT\n***push master repo:*** git push -u origin master\n\n***push develop repo:*** git push -u origin develop\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbxnxm%2Frpitools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbxnxm%2Frpitools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbxnxm%2Frpitools/lists"}