{"id":19483559,"url":"https://github.com/librity/ft_born2beroot","last_synced_at":"2026-04-15T10:36:46.781Z","repository":{"id":99702982,"uuid":"435879265","full_name":"librity/ft_born2beroot","owner":"librity","description":"42 São Paulo - Born2beRoot","archived":false,"fork":false,"pushed_at":"2022-02-25T10:52:25.000Z","size":506,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-25T17:46:15.108Z","etag":null,"topics":["42","42born2code","42saopaulo","bash-script","bitcoin","bitcoind","born2beroot","debian","infrastructure","linux","shell","tor","wordpress"],"latest_commit_sha":null,"homepage":"https://www.42sp.org.br/","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/librity.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":"2021-12-07T12:53:07.000Z","updated_at":"2021-12-29T01:18:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"b2156df3-9772-4178-9a68-5f960d9ce456","html_url":"https://github.com/librity/ft_born2beroot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/librity/ft_born2beroot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/librity%2Fft_born2beroot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/librity%2Fft_born2beroot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/librity%2Fft_born2beroot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/librity%2Fft_born2beroot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/librity","download_url":"https://codeload.github.com/librity/ft_born2beroot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/librity%2Fft_born2beroot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260769589,"owners_count":23060139,"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":["42","42born2code","42saopaulo","bash-script","bitcoin","bitcoind","born2beroot","debian","infrastructure","linux","shell","tor","wordpress"],"created_at":"2024-11-10T20:15:33.650Z","updated_at":"2026-04-15T10:36:41.750Z","avatar_url":"https://github.com/librity.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch3 align=\"center\"\u003e42 São Paulo - Born2BeRoot\u003c/h3\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n![42 São Paulo](https://img.shields.io/badge/42-SP-1E2952)\n![License](https://img.shields.io/github/license/librity/ft_born2beroot?color=yellow)\n![Code size in bytes](https://img.shields.io/github/languages/code-size/librity/ft_born2beroot?color=blue)\n![Lines of code](https://img.shields.io/tokei/lines/github/librity/ft_born2beroot?color=blueviolet)\n![Top language](https://img.shields.io/github/languages/top/librity/ft_born2beroot?color=ff69b4)\n![Last commit](https://img.shields.io/github/last-commit/librity/ft_born2beroot?color=orange)\n\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e Virtual Linux server setup and config.\n  \u003cbr\u003e\n\u003c/p\u003e\n\n---\n\n## 📜 Table of Contents\n\n- [About](#about)\n- [Checklist](#checklist)\n- [Notes](#notes)\n- [42 São Paulo](#ft_sp)\n- [Resources](#resources)\n\n## 🧐 About \u003ca name = \"about\"\u003e\u003c/a\u003e\n\nIn this project we learn the fundamentals of UNIX, virtualization,\nsystem administration and shell scripting.\nAmong other things, we create a debian virtual machine with LVM partitions,\nwrite a sysinfo script and setup a wordpress website.\n\n## ✅ Checklist \u003ca name = \"checklist\"\u003e\u003c/a\u003e\n\n- [x] Install Debian VM w/ correct partitions and encrypted LVM\n  - [x] Primary boot partition\n  - [x] Encrypted LVM Group\n    - [x] /\n    - [x] /swap\n    - [x] /home\n    - [x] /var\n    - [x] /srv\n    - [x] /tmp\n    - [x] /var/log\n  - [x] lpaulo-m42 hostname\n  - [x] lpaulo-m user\n- [x] Add lpaulo-m to `sudo` and `user42` groups\n- [x] Practice changing hostname\n- [x] Practice creating and deleting a sudoer user\n- [x] Install and configure `ufw`\n  - [x] Create allow rule for port 4242\n- [x] Install and configure `ssh`\n  - [x] On port 4242\n  - [x] Can't connect as root\n  - [x] Set a static IP\n- [x] Install and configure `sudo`\n  - [x] Limit authentication to 3 attempts\n  - [x] Add custom message on failed attempt\n  - [x] Log authentication attempts in `/var/log/sudo/`\n  - [x] Restrict sudo to TTY mode only\n  - [x] Restrict sudo paths to `/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin`\n- [x] Implement a strong password policy\n  - [x] Expire password every 30 days.\n  - [x] Wait 2 days before password change\n  - [x] Warning message 7 days before expiration\n  - [x] Minimum password length of 10\n  - [x] Must contain an uppercase letter\n  - [x] Must contain a digit\n  - [x] No more than 3 consecutive identical chars\n  - [x] Must not include username\n  - [x] New password must have at least 7 characters that are not part of the former password (except for root user)\n  - [x] Root password must comply\n  - [x] Change all users passwords after config\n- [x] Write `monitoring.sh`\n  - [x] Runs every 10 minutes from startup\n  - [x] Runs every 10 minutes (`crontab`)\n  - [x] Broadcast the following statistics to all users (`wall`)\n    - [x] The OS architecture and kernel version.\n    - [x] Number of physical processors.\n    - [x] Number of virtual processors.\n    - [x] Available RAM and percentage utilization rate\n    - [x] Current available storage and percentage utilization rate.\n    - [x] Percentage utilization rate your processors.\n    - [x] Date and time of last reboot.\n    - [x] Whether LVM is active or not.\n    - [x] Number of active connections.\n    - [x] Number of users using the server.\n    - [x] The IPv4 and MAC (Media Access Control) address.\n    - [x] Number of commands executed with the sudo\n- [x] Bonus\n  - [x] Setup a Wordpress website\n    - [x] lighttpd\n    - [x] MariaDB\n    - [x] PHP\n    - [x] Wordpress\n  - [x] Set up an arbitrary service\n    - [x] `bitcoind`\n    - [x] Tor **Bridge** Relay\n- [x] Backup virtual box from file explorer\n- [x] Get virtual drive signature and add it to intra’s project repo\n\n## 📝 Notes \u003ca name = \"notes\"\u003e\u003c/a\u003e\n\n### Logical vs Primary Partition\n\nThe Master Boot Record Partition scheme only allows for 4 primary partitions.\nTo get around this we create an extended partition that contains logical partitions.\nWindows can't boot from logical partitions, only primary one.\n\n### LVM (Logical Volume Management)\n\nA device mapper framework that provides logical volume management,\ni.e. the creation and use of logical partitions.\n\n### Encrypted volumes\n\nIt's highly recommended to encrypt your logical volumes,\nespecially the swap partition.\nYou don't need to go crazy with the password, this isn't the NSA.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://imgs.xkcd.com/comics/security.png\"\u003e\n\u003c/p\u003e\n\n### systemd\n\nA software suite that provides an array of system components.\nArch, CentOS, CoreOS, Debian, Fedora, Linux, Mageia,\nManjaro, openSUSE, Red, Solus, SUSE and Ubuntu come with it by default.\n\n### Linux directory structure\n\n- `/`: The root directory\n- `/bin`: Binaries accessible to everyone\n- `/dev`: Device files, like logical volumes\n- `/etc`: Configuration files\n- `/usr`: User binaries and program data\n  - `/usr/bin`: contains basic user commands\n  - `/usr/sbin`: contains additional commands for the administrator\n  - `/usr/lib`: contains the system libraries\n  - `/usr/share`: contains documentation or common to all libraries, like `/usr/share/man`\n- `/home`: User personal data\n- `/lib`: Shared libraries\n- `/sbin`: System/Super/Sudo binaries (that can only be run by root or a sudo user)\n- `/tmp`: Temporary files\n- `/var`: Variable data files (like logs)\n- `/boot`: Boot files, usually a primary partition is mounted here\n- `/proc`: Process and kernel files like `/proc/cpuinfo`\n- `/opt`: Optional/3rd-party software\n- `/root`: The home directory of the root\n- `/media`: Mount point for removable media\n- `/mnt`: Mount directory for file systems by sysadmins\n- `/srv`: Service data, like web apps\n- `/snap`: Where system snaps (packages that work across many different Linux distributions) are installed.\n- `/run`: Run-time variable data\n- `/sys`: Virtual directory for system information\n\n### Security-Enhanced Linux (SELinux) vs. AppArmor\n\nThey're both Linux kernel security modules.\nThey both provide Mandatory Access Control (MAC).\n\nFedora and CentOS use SELinux by default.\nDebian and Ubuntu use AppArmor by default.\n\nAppArmor is easier to use but less secure.\nSELinux is harder to use but more secure.\n\nBefore any syscall the kernel check with AppArmor or SELinux\nif the process is allowed to execute that command or access the file.\nBy configuring them we can restrict the actions\nthat subjects (processes) can perform\non objects (files, IO, memory, Network ports, etc.)\n\nAppArmor allows access by default; policies then restrict access to objects.\nSELinux restricts access by default; policies then allow access to objects.\n\n### Uncomplicated Firewall (UFW)\n\nA program that manages the Netfilter firewall framework, native to the Linux kernel.\nUbuntu comes with UFW by default.\n\n### aptitude vs. apt vs. apt-get\n\nThey're all package managers that use `dpkg` behind the scenes.\nThey all use the same repositories.\n\n`aptitude` provides a terminal menu interface with `ncurses`\nand it's easier to use.\nAdvanced Packaging Tool (`apt`) and `apt-get` are a collection of CLI tools.\n`apt-get` was the first sub-project of `apt`.\n\nDebian comes with `apt` (Advanced Package Tool) by default.\n\n### `apt` Virtual Packages\n\nWhen there are different packages that would all satisfy\nthe same arbitrary dependency, that dependency is given a dummy name\nand becomes a virtual package:\na named group of packages that provide similar basic functionality.\nThis allows for other packages to require dependencies without\nneeding to know exactly which package is being used.\n\n### PAM (Pluggable Authentication Modules)\n\nA suite of libraries that allows a Linux system administrator\nto configure methods to authenticate users.\nThis is where we set the password policy.\n\n### CPU Core (Physical) vs Thread (Virtual)\n\nA CPU core is an independent processing unit that processes one command at a time.\nIt's a physical component inside a chip, mounted on a socket on the motherboard.\nModern chips, having multiple cores, need some way of sharing their processing\nresources with many programs at the same time.\n\nThreads solve this problem by distributing instructions to multiple cores.\nThey're virtual components that manage the CPU schedule.\nThey act like independent CPU\nsince programs interact with them as they would a core:\na thread receives a command,\nsends it to an available core,\nwaits for it to execute and returns the value.\n\nMy computer runs on an\n[Intel Core i7-7700HQ](https://www.intel.com/content/www/us/en/products/sku/97185/intel-core-i77700hq-processor-6m-cache-up-to-3-80-ghz/specifications.html).\nIt has 4 cores and 8 threads, so my system monitor list it as 8 virtual CPUs.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\".github/concurrency_vs_parallelism.svg\"\u003e\n\u003c/p\u003e\n\n### `monitoring.sh`\n\nWe have to write a monitoring script that broadcasts every 10 minutes\nvarious system stats with `wall`:\n\n```bash\nBroadcast message from root@lpaulo-m42 (somewhere) (Tue Dec 21 00:30:01 2021):\n\n  # Architecture: Linux lpaulo-m42 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64 GNU/Linux\n  # Physical CPUs (cores): 2\n  # Virtual CPUs (threads): 2\n  # Memory Usage: 218/976MB (22.33%)\n  # Disk Usage: 1.1/8.0GB (15%%)\n  # CPU load: .14%\n  # Last boot: 2021-12-20 09:49\n  # LVM enabled: false\n  # TCP Connections: 2 - ESTABLISHED\n  # Logged-in Users: 2\n  # IP address: 192.168.0.15\n  # MAC address: 08:00:27:25:76:99\n  # Sudo commands: 326\n```\n\n### FastCGI\n\nIs a protocol that interfaces applications (like PHP)\nto web servers (like lighttpd and apache);\n\n### Bonus Service Ideas\n\n- [searx Search Engine](https://github.com/searx/searx)\n  - https://searx.github.io/searx/admin/installation.html\n  - https://searx.github.io/searx/admin/installation-searx.html\n  - https://searx.github.io/searx/admin/installation-docker.html\n- [phpMyAdmin](https://docs.phpmyadmin.net/en/latest/setup.html)\n- [traefik Proxy](https://github.com/traefik/traefik/)\n  - https://doc.traefik.io/traefik/getting-started/install-traefik/\n  - https://github.com/approov/debian-traefik-setup\n- [Cockpit sysadmin webview](https://github.com/cockpit-project/cockpit)\n  - https://www.techlear.com/blog/2021/10/14/how-to-install-cockpit-on-debian-11/\n- [fail2ban security](https://github.com/fail2ban/fail2ban)\n  - https://www.fail2ban.org/wiki/index.php/MANUAL_0_8#Installation\n- [vsftpd](https://github.com/InfrastructureServices/vsftpd)\n  - https://www.osradar.com/how-to-set-up-an-ftp-server-on-debian-10-buster/\n  - https://linuxconfig.org/how-to-setup-vsftpd-on-debian\n- [Docker](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-debian-10)\n- [PostgreSQL DB](https://linuxize.com/post/how-to-install-postgresql-on-debian-10/)\n- [Email](https://www.tecmint.com/setup-postfix-mail-server-in-ubuntu-debian/)\n- [DNS](https://blog.eldernode.com/private-dns-server-in-debian-10/)\n- [InterPlanetary File System](https://github.com/ipfs/go-ipfs)\n  - https://docs.ipfs.io/how-to/command-line-quick-start/#prerequisites\n- One of your web apps:\n  - Rails\n  - Go\n  - Node.js\n- A blockchain node:\n  - [https://bitcoin.org/en/full-node](https://bitcoin.org/en/full-node)\n- A mixnet node:\n  - [TOR Network Relay](\u003chttps://en.wikipedia.org/wiki/Tor_(network)\u003e)\n    - [Relay guide](https://community.torproject.org/relay/)\n    - [Relay guide (onion link)](http://xmrhfasfg5suueegrnc4gsgyi2tyclcy5oz7f5drnrodmdtob6t2ioyd.onion/relay/)\n  - [I2P](https://en.wikipedia.org/wiki/I2P)\n  - [ZeroNet](https://en.wikipedia.org/wiki/ZeroNet)\n  - [Retroshare](https://en.wikipedia.org/wiki/Retroshare)\n  - [Tribler](https://en.wikipedia.org/wiki/Tribler)\n  - [Nym](https://github.com/nymtech/nym)\n\n### Bitcoin Core and `bitcoind`\n\nMy goal was to run a bitcoin node on my server.\nI managed to install and configure `bitcoind`,\nbut whenever I started the server it would error out\ndue to insufficient disk space.\nI don't have a lot of storage space available,\nso I left it as is.\n\nI really wanted to finish the config process and have a working node,\nbut I learned a lot about bitcoin during the process.\nI'll run a full node whenever I get some better hardware\n(I'm obsessed with blockchain and crypto if you haven't noticed yet).\n\n### Tor **Bridge** Relay\n\nTor is a\n[mix network protocol](https://en.wikipedia.org/wiki/Mix_network)\nthat allows users to hide their IP by relaying requests through a chain of\nthree random proxies:\n\n1. **The Guard**\n2. **The Middle**\n3. **The Exit**\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\".github/mixnet.png\"\u003e\n\u003c/p\u003e\n\nThe request is encrypted three times with three different keys.\nEach relay decrypts the request with its corresponding key\nand forwards it to the next except for **The Exit**,\nwhich forwards the request to its intended destination.\nThe end receiver of the request can only see **The Exit**'s IP,\nhiding the identity of the sender.\nIt can also be used to access restricted or illegal content\nin countries that censor online traffic.\n\nPeople from all over the world who believe in our fundamental right\nto privacy, anonymity and free speech run proxy relays\nthat maintain the Tor network.\nThe more relays the network has,\nthe greater the amount of paths a request could take\nand the harder it is to identify the sender.\nIt also runs faster.\n\nIn my Debian server I installed and configured a **Bridge** Relay,\nwhich is a special type of **Middle** that doesn't list its IP publicly.\nUsers first have to connect to to the Tor network\nto discover and use **Bridge** relays.\nIt's by far the easiest relay type to setup\nand it requires the least amount of network resources.\n\n## 🛸 42 São Paulo \u003ca name = \"ft_sp\"\u003e\u003c/a\u003e\n\nPart of the larger [42 Network](https://www.42.fr/42-network/),\n[42 São Paulo](https://www.42sp.org.br/) is a software engineering school\nthat offers a healthy alternative to traditional education:\n\n- It doesn't have any teachers and classes.\n- Students learn by cooperating\n  and correcting each other's work (peer-to-peer learning).\n- Its focus is as much on social skills as it is on technical skills.\n- It's completely free to anyone that passes its selection process -\n  [**The Piscine**](https://42.fr/en/admissions/42-piscine/)\n\nIt's an amazing school, and I'm grateful for the opportunity.\n\n## 📚 Resources \u003ca name = \"resources\"\u003e\u003c/a\u003e\n\n### Debian\n\n- [https://www.debian.org/releases/bullseye/installmanual](https://www.debian.org/releases/bullseye/installmanual)\n- [https://www.howtoforge.com/tutorial/debian-minimal-server/](https://www.howtoforge.com/tutorial/debian-minimal-server/)\n- [https://debian-handbook.info/download/en-US/stable/debian-handbook.pdf](https://debian-handbook.info/download/en-US/stable/debian-handbook.pdf)\n- [https://debian-handbook.info/browse/stable/](https://debian-handbook.info/browse/stable/)\n\n### CentOS\n\n- [https://linuxhint.com/install_centos8_virtualbox/](https://linuxhint.com/install_centos8_virtualbox/)\n\n### systemd\n\n- [https://en.wikipedia.org/wiki/Systemd](https://en.wikipedia.org/wiki/Systemd)\n- [https://www.slant.co/options/12956/alternatives/~systemd-alternatives](https://www.slant.co/options/12956/alternatives/~systemd-alternatives)\n\n### Partitions\n\n- [https://wikiless.org/wiki/Partition\\_(computing)?lang=en](\u003chttps://wikiless.org/wiki/Partition_(computing)?lang=en\u003e)\n- [https://askubuntu.com/questions/495994/what-filesystem-should-boot-be](https://askubuntu.com/questions/495994/what-filesystem-should-boot-be)\n- https://superuser.com/questions/337146/what-are-the-differences-between-primary-and-logical-partition\n- https://en.wikipedia.org/wiki/Master_boot_record\n\n### LVM\n\n- https://linuxhandbook.com/lvm-guide/\n- [https://wikiless.org/wiki/Logical*Volume_Manager*(Linux)](\u003chttps://wikiless.org/wiki/Logical_Volume_Manager_(Linux)?lang=en\u003e)\n- [https://wikiless.org/wiki/Logical_volume_management](https://wikiless.org/wiki/Logical_volume_management)\n\n### Linux Dir Structure\n\n- [https://www.geeksforgeeks.org/linux-directory-structure/](https://www.geeksforgeeks.org/linux-directory-structure/)\n- [https://linuxhandbook.com/linux-directory-structure/](https://linuxhandbook.com/linux-directory-structure/)\n- https://help.ubuntu.com/lts/installation-guide/armhf/apcs02.html\n\n### [Advanced Packaging Tool (apt)](https://thecustomizewindows.com/2014/03/what-is-advanced-packaging-tool-apt-aptitude/)\n\n- [https://thecustomizewindows.com/2020/01/aptitude-vs-apt-get-vs-apt/](https://thecustomizewindows.com/2020/01/aptitude-vs-apt-get-vs-apt/)\n\n### IP and Ports\n\n- [https://linuxconfig.org/how-to-setup-a-static-ip-address-on-debian-linux](https://linuxconfig.org/how-to-setup-a-static-ip-address-on-debian-linux)\n\n### Users and Groups\n\n- [https://www.cyberciti.biz/faq/howto-change-rename-user-name-id/](https://www.cyberciti.biz/faq/howto-change-rename-user-name-id/)\n\n### Hostname\n\n- [https://phoenixnap.com/kb/debian-change-hostname](https://phoenixnap.com/kb/debian-change-hostname)\n\n### Virtual Packages\n\n- https://askubuntu.com/questions/652326/whats-a-virtual-package\n- https://www.linuxquestions.org/questions/debian-26/what-is-meant-by-virtual-package-wrt-apt-get-169359/\n\n### **AppArmor**\n\n- [https://en.wikipedia.org/wiki/AppArmor](https://en.wikipedia.org/wiki/AppArmor)\n- [https://en.wikipedia.org/wiki/Linux_Security_Modules](https://en.wikipedia.org/wiki/Linux_Security_Modules)\n- [https://www.omarine.org/blog/apparmor-vs-selinux/](https://www.omarine.org/blog/apparmor-vs-selinux/)\n- [https://beginlinux.com/desktop_training/ubuntu/ubsecure_m/Secure_ub/aap_selinux](https://beginlinux.com/desktop_training/ubuntu/ubsecure_m/Secure_ub/aap_selinux)\n- [https://en.wikipedia.org/wiki/Mandatory_access_control](https://en.wikipedia.org/wiki/Mandatory_access_control)\n\n### Uncomplicated Firewall (UFW)\n\n- [https://en.wikipedia.org/wiki/Uncomplicated_Firewall](https://en.wikipedia.org/wiki/Uncomplicated_Firewall)\n- [https://www.linux.com/training-tutorials/introduction-uncomplicated-firewall-ufw/](https://www.linux.com/training-tutorials/introduction-uncomplicated-firewall-ufw/)\n- [https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-debian-9](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-debian-9)\n- [https://en.wikipedia.org/wiki/Netfilter](https://en.wikipedia.org/wiki/Netfilter)\n\n### SSH\n\n- [https://linuxize.com/post/how-to-change-ssh-port-in-linux/](https://linuxize.com/post/how-to-change-ssh-port-in-linux/)\n\n### Sudo\n\n- [https://www.real-world-systems.com/docs/sudoers.5.html](https://www.real-world-systems.com/docs/sudoers.5.html)\n- [https://phoenixnap.com/kb/create-a-sudo-user-on-debian](https://phoenixnap.com/kb/create-a-sudo-user-on-debian)\n- [https://www.vivaolinux.com.br/dica/Bloquear-restringir-acesso-ao-su-somente-ao-grupo-wheel](https://www.vivaolinux.com.br/dica/Bloquear-restringir-acesso-ao-su-somente-ao-grupo-wheel)\n- [https://serverfault.com/questions/649143/sudo-io-log-output-shows-garbled-text](https://serverfault.com/questions/649143/sudo-io-log-output-shows-garbled-text)\n- [https://www.digitalocean.com/community/tutorials/how-to-edit-the-sudoers-file](https://www.digitalocean.com/community/tutorials/how-to-edit-the-sudoers-file)\n- [https://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/](https://www.tecmint.com/sudoers-configurations-for-setting-sudo-in-linux/)\n- [https://www.sudo.ws/docs/man/1.8.15/sudoers.man/](https://www.sudo.ws/docs/man/1.8.15/sudoers.man/)\n- [https://stackoverflow.com/questions/67985925/why-would-i-want-to-require-a-tty-for-sudo-whats-the-security-benefit-of-requi](https://stackoverflow.com/questions/67985925/why-would-i-want-to-require-a-tty-for-sudo-whats-the-security-benefit-of-requi)\n\n### Passwords\n\n- [https://www.debian.org/doc/manuals/securing-debian-manual/ch04s11.en.html](https://www.debian.org/doc/manuals/securing-debian-manual/ch04s11.en.html)\n- [https://en.wikipedia.org/wiki/Pluggable_authentication_module](https://en.wikipedia.org/wiki/Pluggable_authentication_module)\n- [http://www.linux-pam.org/Linux-PAM-html/](http://www.linux-pam.org/Linux-PAM-html/)\n  - https://github.com/linux-pam/linux-pam\n- [https://docs.fedoraproject.org/en-US/quick-docs/reset-root-password/](https://docs.fedoraproject.org/en-US/quick-docs/reset-root-password/)\n- [https://www.tecmint.com/reset-forgotten-root-password-in-debian/](https://www.tecmint.com/reset-forgotten-root-password-in-debian/)\n\n### Password Policy\n\n- [https://linux.die.net/man/8/pam_pwquality](https://linux.die.net/man/8/pam_pwquality)\n- [https://linux.die.net/man/8/pam_cracklib](https://linux.die.net/man/8/pam_cracklib)\n- [https://access.redhat.com/solutions/5027331](https://access.redhat.com/solutions/5027331)\n- [https://computingforgeeks.com/enforce-strong-user-password-policy-ubuntu-debian/](https://computingforgeeks.com/enforce-strong-user-password-policy-ubuntu-debian/)\n- [https://stackoverflow.com/questions/70328764/set-password-expiration-policy-for-all-users-on-debian-login-defs-doesnt-work](https://stackoverflow.com/questions/70328764/set-password-expiration-policy-for-all-users-on-debian-login-defs-doesnt-work)\n- [https://www.poftut.com/linux-etc-login-defs-configuration-examples/](https://www.poftut.com/linux-etc-login-defs-configuration-examples/)\n\n### Bash\n\n- [https://linuxize.com/post/bash-shebang/](https://linuxize.com/post/bash-shebang/)\n- [https://unix.stackexchange.com/questions/29878/can-i-access-nth-line-number-of-standard-output](https://unix.stackexchange.com/questions/29878/can-i-access-nth-line-number-of-standard-output)\n- [https://riptutorial.com/bash/topic/8762/the-cut-command](https://riptutorial.com/bash/topic/8762/the-cut-command)\n- [https://stackoverflow.com/questions/11454343/pipe-output-to-bash-function](https://stackoverflow.com/questions/11454343/pipe-output-to-bash-function)\n- [https://www.baeldung.com/linux/silencing-bash-output](https://www.baeldung.com/linux/silencing-bash-output)\n- [https://unix.stackexchange.com/questions/338000/bash-assign-output-of-pipe-to-a-variable](https://unix.stackexchange.com/questions/338000/bash-assign-output-of-pipe-to-a-variable)\n- [https://askubuntu.com/questions/1042659/how-to-check-if-a-value-is-greater-than-or-equal-to-another](https://askubuntu.com/questions/1042659/how-to-check-if-a-value-is-greater-than-or-equal-to-another)\n- [https://linuxhandbook.com/if-else-bash/](https://linuxhandbook.com/if-else-bash/)\n- [https://stackoverflow.com/questions/13182070/best-way-to-divide-in-bash-using-pipes](https://stackoverflow.com/questions/13182070/best-way-to-divide-in-bash-using-pipes)\n- [https://stackoverflow.com/questions/816820/use-space-as-a-delimiter-with-cut-command](https://stackoverflow.com/questions/816820/use-space-as-a-delimiter-with-cut-command)\n- [https://stackoverflow.com/questions/14093452/grep-only-the-first-match-and-stop](https://stackoverflow.com/questions/14093452/grep-only-the-first-match-and-stop)\n\n### `sed`\n\n- [https://www.cyberciti.biz/faq/sed-remove-all-except-digits-numbers/](https://www.cyberciti.biz/faq/sed-remove-all-except-digits-numbers/)\n- [https://linuxhint.com/bash_sed_examples/](https://linuxhint.com/bash_sed_examples/)\n\n### Bash Math\n\n- [https://www.gnu.org/software/bc/manual/html_mono/bc.html](https://www.gnu.org/software/bc/manual/html_mono/bc.html)\n- [https://unix.stackexchange.com/questions/40786/how-to-do-integer-float-calculations-in-bash-or-other-languages-frameworks](https://unix.stackexchange.com/questions/40786/how-to-do-integer-float-calculations-in-bash-or-other-languages-frameworks)\n- [https://stackoverflow.com/questions/55277725/bash-calculate-percentage](https://stackoverflow.com/questions/55277725/bash-calculate-percentage)\n- [https://ryanstutorials.net/bash-scripting-tutorial/bash-arithmetic.php](https://ryanstutorials.net/bash-scripting-tutorial/bash-arithmetic.php)\n\n### Bash Functions\n\n- [https://ryanstutorials.net/bash-scripting-tutorial/bash-functions.php](https://ryanstutorials.net/bash-scripting-tutorial/bash-functions.php)\n- [https://linuxhint.com/return-string-bash-functions/](https://linuxhint.com/return-string-bash-functions/)\n- [https://stackoverflow.com/questions/3236871/how-to-return-a-string-value-from-a-bash-function](https://stackoverflow.com/questions/3236871/how-to-return-a-string-value-from-a-bash-function)\n- [https://stackoverflow.com/questions/17336915/return-value-in-a-bash-function](https://stackoverflow.com/questions/17336915/return-value-in-a-bash-function)\n\n### Bash Strings\n\n- [https://unix.stackexchange.com/questions/20035/how-to-add-newlines-into-variables-in-bash-script](https://unix.stackexchange.com/questions/20035/how-to-add-newlines-into-variables-in-bash-script)\n- [https://unix.stackexchange.com/questions/334240/how-to-add-a-line-break-inside-a-bash-string](https://unix.stackexchange.com/questions/334240/how-to-add-a-line-break-inside-a-bash-string)\n- [https://linuxhandbook.com/bash-strings/](https://linuxhandbook.com/bash-strings/)\n- [https://www.cyberciti.biz/faq/bash-remove-whitespace-from-string/](https://www.cyberciti.biz/faq/bash-remove-whitespace-from-string/)\n- [https://unixutils.com/string-manipulation-with-bash/](https://unixutils.com/string-manipulation-with-bash/)\n- [https://linuxhint.com/remove_characters_string_bash/](https://linuxhint.com/remove_characters_string_bash/)\n\n### Bash Arrays\n\n- [https://www.shell-tips.com/bash/arrays/](https://www.shell-tips.com/bash/arrays/)\n- [https://www.educba.com/bash-split-string/](https://www.educba.com/bash-split-string/)\n- [https://stackoverflow.com/questions/36977855/get-last-element-in-bash-array](https://stackoverflow.com/questions/36977855/get-last-element-in-bash-array)\n\n### nano\n\n- [https://linuxhint.com/select_delete_all_text_nano/](https://linuxhint.com/select_delete_all_text_nano/)\n\n### `monitoring.sh`\n\n- [https://www.geeksforgeeks.org/wall-command-in-linux-with-examples/](https://www.geeksforgeeks.org/wall-command-in-linux-with-examples/)\n- [https://www.tutorialspoint.com/unix_commands/uname.htm](https://www.tutorialspoint.com/unix_commands/uname.htm)\n\n### CPUs\n\n- [https://www.educba.com/cores-vs-threads/](https://www.educba.com/cores-vs-threads/)\n- [https://linuxhandbook.com/check-cpu-info-linux/](https://linuxhandbook.com/check-cpu-info-linux/)\n- [https://www.tecmint.com/check-linux-cpu-information/](https://www.tecmint.com/check-linux-cpu-information/)\n- [https://www.intel.com/content/www/us/en/products/sku/97185/intel-core-i77700hq-processor-6m-cache-up-to-3-80-ghz/specifications.html](https://www.intel.com/content/www/us/en/products/sku/97185/intel-core-i77700hq-processor-6m-cache-up-to-3-80-ghz/specifications.html)\n- [https://stackoverflow.com/questions/6481005/how-to-obtain-the-number-of-cpus-cores-in-linux-from-the-command-line](https://stackoverflow.com/questions/6481005/how-to-obtain-the-number-of-cpus-cores-in-linux-from-the-command-line)\n- [https://webhostinggeeks.com/howto/how-to-display-the-number-of-processors-vcpu-on-linux-vps/](https://webhostinggeeks.com/howto/how-to-display-the-number-of-processors-vcpu-on-linux-vps/)\n- [https://stackoverflow.com/questions/9229333/how-to-get-overall-cpu-usage-e-g-57-on-linux](https://stackoverflow.com/questions/9229333/how-to-get-overall-cpu-usage-e-g-57-on-linux)\n- [https://en.wikipedia.org/wiki/Hyper-threading](https://en.wikipedia.org/wiki/Hyper-threading)\n- [https://www.howtogeek.com/194756/cpu-basics-multiple-cpus-cores-and-hyper-threading-explained/](https://www.howtogeek.com/194756/cpu-basics-multiple-cpus-cores-and-hyper-threading-explained/)\n\n### CPU Load\n\n- [https://phoenixnap.com/kb/check-cpu-usage-load-linux](https://phoenixnap.com/kb/check-cpu-usage-load-linux)\n- [https://stackoverflow.com/questions/9229333/how-to-get-overall-cpu-usage-e-g-57-on-linux](https://stackoverflow.com/questions/9229333/how-to-get-overall-cpu-usage-e-g-57-on-linux)\n- [https://unix.stackexchange.com/questions/152988/how-to-get-cpu-usage-for-every-core-with-a-bash-script-using-standard-nix-tools](https://unix.stackexchange.com/questions/152988/how-to-get-cpu-usage-for-every-core-with-a-bash-script-using-standard-nix-tools)\n\n### Memory\n\n- [https://stackoverflow.com/questions/2441046/how-to-get-the-total-physical-memory-in-bash-to-assign-it-to-a-variable](https://stackoverflow.com/questions/2441046/how-to-get-the-total-physical-memory-in-bash-to-assign-it-to-a-variable)\n- [https://phoenixnap.com/kb/linux-commands-check-memory-usage](https://phoenixnap.com/kb/linux-commands-check-memory-usage)\n\n### Disk Storage\n\n- [https://www.howtogeek.com/409611/how-to-view-free-disk-space-and-disk-usage-from-the-linux-terminal/](https://www.howtogeek.com/409611/how-to-view-free-disk-space-and-disk-usage-from-the-linux-terminal/)\n\n### Boot History\n\n- [https://www.geeksforgeeks.org/linux-uptime-command-with-examples/](https://www.geeksforgeeks.org/linux-uptime-command-with-examples/)\n- [https://www.cyberciti.biz/tips/linux-last-reboot-time-and-date-find-out.html](https://www.cyberciti.biz/tips/linux-last-reboot-time-and-date-find-out.html)\n\n### LVM\n\n- [https://docstore.mik.ua/manuals/hp-ux/en/5992-4589/ch03s02.html](https://docstore.mik.ua/manuals/hp-ux/en/5992-4589/ch03s02.html)\n- [https://askubuntu.com/questions/202613/how-do-i-check-whether-i-am-using-lvm](https://askubuntu.com/questions/202613/how-do-i-check-whether-i-am-using-lvm)\n\n### `ss` and TCP Connections\n\n- [https://www.networkworld.com/article/3327557/using-the-linux-ss-command-to-examine-network-and-socket-connections.html](https://www.networkworld.com/article/3327557/using-the-linux-ss-command-to-examine-network-and-socket-connections.html)\n- [https://www.cyberciti.biz/faq/check-network-connection-linux/](https://www.cyberciti.biz/faq/check-network-connection-linux/)\n- [https://unix.stackexchange.com/questions/67150/getting-current-tcp-connection-count-on-a-system](https://unix.stackexchange.com/questions/67150/getting-current-tcp-connection-count-on-a-system)\n- [https://computingforgeeks.com/how-to-check-tcp-connections-states-in-linux-with-netstat/](https://computingforgeeks.com/how-to-check-tcp-connections-states-in-linux-with-netstat/)\n\n### Logged-in Users\n\n- [https://stackoverflow.com/questions/28208069/linux-bash-script-to-determine-number-of-users-logged-in](https://stackoverflow.com/questions/28208069/linux-bash-script-to-determine-number-of-users-logged-in)\n\n### IP and MAC\n\n- [https://www.cyberciti.biz/faq/bash-shell-command-to-find-get-ip-address/](https://www.cyberciti.biz/faq/bash-shell-command-to-find-get-ip-address/)\n- [https://stackoverflow.com/questions/23828413/get-mac-address-using-shell-script](https://stackoverflow.com/questions/23828413/get-mac-address-using-shell-script)\n\n### `wall`\n\n- [https://www.geeksforgeeks.org/wall-command-in-linux-with-examples/](https://www.geeksforgeeks.org/wall-command-in-linux-with-examples/)\n\n### Cron\n\n- [https://crontab.guru/every-10-minutes](https://crontab.guru/every-10-minutes)\n- [https://phoenixnap.com/kb/crontab-reboot](https://phoenixnap.com/kb/crontab-reboot)\n- [https://serverfault.com/questions/37244/crontab-ifconfig-outputting-nothing](https://serverfault.com/questions/37244/crontab-ifconfig-outputting-nothing)\n- [https://vitux.com/how-to-setup-a-cron-job-in-debian-10/](https://vitux.com/how-to-setup-a-cron-job-in-debian-10/)\n- [https://askubuntu.com/questions/1051066/cronjob-every-20-minutes-starting-direct-after-reboot](https://askubuntu.com/questions/1051066/cronjob-every-20-minutes-starting-direct-after-reboot)\n- [https://askubuntu.com/questions/816285/what-is-the-difference-between-systemctl-mask-and-systemctl-disable](https://askubuntu.com/questions/816285/what-is-the-difference-between-systemctl-mask-and-systemctl-disable)\n\n### Run every 10 minutes from startup\n\n- [https://raspberrypi.stackexchange.com/questions/15475/run-bash-script-on-startup](https://raspberrypi.stackexchange.com/questions/15475/run-bash-script-on-startup)\n- [https://www.geeksforgeeks.org/linux-uptime-command-with-examples/](https://www.geeksforgeeks.org/linux-uptime-command-with-examples/)\n- [https://linuxhandbook.com/bash-sleep/](https://linuxhandbook.com/bash-sleep/)\n\n### Lighttpd\n\n- [https://www.lighttpd.net/](https://www.lighttpd.net/)\n- [https://www.tecmint.com/install-lighttpd-in-ubuntu/](https://www.tecmint.com/install-lighttpd-in-ubuntu/)\n- [https://www.rosehosting.com/blog/how-to-install-lighttpd-on-debian-9/](https://www.rosehosting.com/blog/how-to-install-lighttpd-on-debian-9/)\n- [https://vijaynayani.wordpress.com/2010/10/09/how-to-installing-lighttpd-with-php5-and-mysql-support-on-centos/](https://vijaynayani.wordpress.com/2010/10/09/how-to-installing-lighttpd-with-php5-and-mysql-support-on-centos/)\n- [https://www.howtoforge.com/how-to-install-lighttpd-with-php-and-mariadb-on-debian-10/](https://www.howtoforge.com/how-to-install-lighttpd-with-php-and-mariadb-on-debian-10/)\n\n### WordPress\n\n- [https://wordpress.org/](https://wordpress.org/)\n- [https://www.how2shout.com/linux/install-wordpress-on-lighttpd-web-server-ubuntu/](https://www.how2shout.com/linux/install-wordpress-on-lighttpd-web-server-ubuntu/)\n- [https://websiteforstudents.com/install-wordpress-on-ubuntu-16-04-lts-with-lighttpd-mariadb-and-php-7-1-support/](https://websiteforstudents.com/install-wordpress-on-ubuntu-16-04-lts-with-lighttpd-mariadb-and-php-7-1-support/)\n- [https://www.atlantic.net/dedicated-server-hosting/how-to-install-wordpress-with-lighttpd-web-server-on-ubuntu-20-04/](https://www.atlantic.net/dedicated-server-hosting/how-to-install-wordpress-with-lighttpd-web-server-on-ubuntu-20-04/)\n\n### MariaDB\n\n- [https://mariadb.org/](https://mariadb.org/)\n\n### PHP\n\n- [https://php.watch/articles/php-8.0-installation-update-guide-debian-ubuntu](https://php.watch/articles/php-8.0-installation-update-guide-debian-ubuntu)\n- [https://www.linuxtechi.com/install-php-8-on-debian-10/](https://www.linuxtechi.com/install-php-8-on-debian-10/)\n- https://en.wikipedia.org/wiki/FastCGI\n\n### Bitcoin Core (GUI + daemon)\n\n- https://github.com/bitcoin/bitcoin\n- [https://bitcoincore.org/](https://bitcoincore.org/)\n- [https://bitcoincore.org/en/download/](https://bitcoincore.org/en/download/)\n- [https://github.com/bitcoin/bitcoin/tree/master/contrib/builder-keys](https://github.com/bitcoin/bitcoin/tree/master/contrib/builder-keys)\n- [https://bitcoin.org/en/full-node](https://bitcoin.org/en/full-node)\n- [https://en.bitcoin.it/wiki/Full_node](https://en.bitcoin.it/wiki/Full_node)\n- [https://www.youtube.com/watch?v=xc_TxlByxeY](https://www.youtube.com/watch?v=xc_TxlByxeY)\n- [https://en.bitcoin.it/wiki/Bitcoin_Core](https://en.bitcoin.it/wiki/Bitcoin_Core)\n\n### `bitcoind`\n\n- [https://en.bitcoin.it/wiki/Bitcoind](https://en.bitcoin.it/wiki/Bitcoind)\n- [https://developer.bitcoin.org/reference/rpc/](https://developer.bitcoin.org/reference/rpc/)\n- [https://bitnodes.io/#join-the-network](https://bitnodes.io/#join-the-network)\n- [https://developer.bitcoin.org/reference/rpc/](https://developer.bitcoin.org/reference/rpc/)\n- [https://vhernando.github.io/run-bitcoin-node-debian-how-to](https://vhernando.github.io/run-bitcoin-node-debian-how-to)\n- [https://support.bitexchange.systems/support/articles/installing-bitcoin-onto-your-server](https://support.bitexchange.systems/support/articles/installing-bitcoin-onto-your-server)\n\n### Bitcoin Community\n\n- [https://bitcoin.org/en/community](https://bitcoin.org/en/community)\n- [https://bitcointalk.org/](https://bitcointalk.org/)\n- [https://bitcoin.stackexchange.com/](https://bitcoin.stackexchange.com/)\n- [https://www.reddit.com/r/Bitcoin/](https://www.reddit.com/r/Bitcoin/)\n\n### Tor **Bridge** Relay\n\n- [http://xmrhfasfg5suueegrnc4gsgyi2tyclcy5oz7f5drnrodmdtob6t2ioyd.onion/relay/index.html](http://xmrhfasfg5suueegrnc4gsgyi2tyclcy5oz7f5drnrodmdtob6t2ioyd.onion/relay/index.html)\n- [http://xmrhfasfg5suueegrnc4gsgyi2tyclcy5oz7f5drnrodmdtob6t2ioyd.onion/relay/types-of-relays/](http://xmrhfasfg5suueegrnc4gsgyi2tyclcy5oz7f5drnrodmdtob6t2ioyd.onion/relay/types-of-relays/)\n- [http://xmrhfasfg5suueegrnc4gsgyi2tyclcy5oz7f5drnrodmdtob6t2ioyd.onion/relay/setup/](http://xmrhfasfg5suueegrnc4gsgyi2tyclcy5oz7f5drnrodmdtob6t2ioyd.onion/relay/setup/)\n- [http://xmrhfasfg5suueegrnc4gsgyi2tyclcy5oz7f5drnrodmdtob6t2ioyd.onion/relay/setup/bridge/debian-ubuntu/](http://xmrhfasfg5suueegrnc4gsgyi2tyclcy5oz7f5drnrodmdtob6t2ioyd.onion/relay/setup/bridge/debian-ubuntu/)\n- [http://xmrhfasfg5suueegrnc4gsgyi2tyclcy5oz7f5drnrodmdtob6t2ioyd.onion/relay/setup/post-install/](http://xmrhfasfg5suueegrnc4gsgyi2tyclcy5oz7f5drnrodmdtob6t2ioyd.onion/relay/setup/post-install/)\n- [https://nyx.torproject.org/](https://nyx.torproject.org/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibrity%2Fft_born2beroot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibrity%2Fft_born2beroot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibrity%2Fft_born2beroot/lists"}