diff --git a/docs/guides/automation/anacron.md b/docs/guides/automation/anacron.md
index d7d4478480..ca821afdaf 100644
--- a/docs/guides/automation/anacron.md
+++ b/docs/guides/automation/anacron.md
@@ -10,23 +10,23 @@ update : 2021-10-20
## Prerequisites
* A machine running Rocky Linux.
-* Know how to use your favorite editor to modify the configuration file (such as *vim* ) in the command line environment .
-* Understand basic RPM package management
+* Know how to use your favorite editor to modify the configuration file (such as *vim*) in the command line environment.
+* Understand basic RPM package management.
-## Assumption
+## Assumptions
* You have understood the basic knowledge of bash, python or other scripting/programming tools, and want to run the script automatically.
-* You are logged in as the root user, or switch to root with `su - root`
+* You are logged in as the root user, or switch to root with `su - root`.
-## Anacron Introduction
+## `anacron` Introduction
-**anacron is used to run commands on a regular basis, and the operating frequency is defined in units of days. It is suitable for computers that do not run 24/7, such as laptops and desktops. Suppose you have a scheduled task (such as a backup script) to be run in the early morning of every day using crontab. When you fall asleep, your desktop/laptop is shut down. Your backup script will not be executed. However, if you use anacron, you can rest assured that the next time you turn on the desktop/laptop, the backup script will be executed.**
+**`anacron` is used to run commands on a regular basis, and the operating frequency is defined in units of days. It is suitable for computers that do not run 24/7, such as laptops and desktops. Suppose you have a scheduled task (such as a backup script) to be run in the early morning of every day using crontab. When you fall asleep, your desktop/laptop is shut down. Your backup script will not be executed. However, if you use `anacron`, you can rest assured that the next time you turn on the desktop/laptop, the backup script will be executed.**
-The appearance of anacron is not to replace crontab, but to complement crontab. Their relationship is as follows:
+The appearance of `anacron` is not to replace `crontab`, but to complement `crontab`. Their relationship is as follows:

-## anacron configuration file
+## `anacron` Configuration File
```bash
shell > rpm -ql cronie-anacron
@@ -97,7 +97,7 @@ In order to make certain files run within these automatically defined times, all
Let's use cron.daily to illustrate the execution process of /etc/anacrontab:
-1. Anacron reads the ** /var/spool/anacron/cron.daily ** file, and the content of the file shows the time of the last execution.
+1. `anacron` reads the ** /var/spool/anacron/cron.daily ** file, and the content of the file shows the time of the last execution.
2. Compared with the current time, if the difference between the two times exceeds 1 day, the cron.daily job will be executed.
3. This work can only be performed from 03:00-22:00.
4. Check whether a file is executed after 5 minutes after booting. When the first one is executed, it will be randomly delayed for 0~45 minutes to execute the next one.
diff --git a/docs/guides/automation/cron_jobs_howto.md b/docs/guides/automation/cron_jobs_howto.md
index fefd026c72..eb5362c233 100644
--- a/docs/guides/automation/cron_jobs_howto.md
+++ b/docs/guides/automation/cron_jobs_howto.md
@@ -161,7 +161,7 @@ Another way to run jobs at a strictly scheduled time (i.e., day, week, month, ye
Using these `crontab` entries bypasses the `anacron` system and reverts to the `crond.service` whether `anacron` is installed or not.
-For our backup script example, if we used use the @daily option to run the backup script at midnight, the entry would look like this:
+For our backup script example, if we use the @daily option to run the backup script at midnight, the entry would look like this:
`@daily /usr/local/sbin/backup`
diff --git a/docs/guides/automation/cronie.md b/docs/guides/automation/cronie.md
index edf51e1c1f..02e077a12e 100644
--- a/docs/guides/automation/cronie.md
+++ b/docs/guides/automation/cronie.md
@@ -10,14 +10,14 @@ update: 2021-10-26
* A machine running Rocky Linux.
* Know how to use your favorite editor to modify the configuration file in the command line environment (this article will use `vi`).
* You have understood the basic knowledge of bash, python or other scripting/programming tools, and expect to run the script automatically.
-* You have connected to your machine via ssh (it can be root user or ordinary user with UID greater than 1000)
+* You have connected to your machine via ssh (it can be root user or ordinary user with UID greater than 1000).
* We think you are a very cool person.
-## cron introduction
+## cron Introduction
-GNU/Linux provides the *cron* system, which is a time-based `cron` jobs program for automated processes. It is simple, but quite powerful. Want a script or program to run at 5 pm every day? `cron` can do it. There are different branches (or variants) of `cron`, which have the same functions. In this document, **cronie** is used, and the version is 1.5.2. You can click [here](https://github .com/cronie-crond/cronie) to find the latest version and update log.
+GNU/Linux provides the *cron* system, which is a time-based `cron` jobs program for automated processes. It is simple, but quite powerful. Want a script or program to run at 5 pm every day? `cron` can do it. There are different branches (or variants) of `cron`, which have the same functions. In this document, **cronie** is used, and the version is 1.5.2. You can click [here](https://github.com/cronie-crond/cronie) to find the latest version and update log.
-## cronie's description
+## cronie's Description
* **cronie** -package name, Rocky Linux includes cronie by default;
* **crontab** -command to maintain `crontab` (task schedule) for each user;
@@ -26,7 +26,7 @@ GNU/Linux provides the *cron* system, which is a time-based `cron` jobs program
* **/var/log/cron \* ** -Cronie's log, by default, does log rotation and ends with a date suffix. \* Here means wildcard
* **anacron** -part of cronie . For more information about `anacron`, see [anacron-automation commands](anacron.md).
-## `crontab` command
+## `crontab` Command
`crontab` is a command obtained after installation of the cronie package. Compared with `anacron`, it is more suitable for servers that work 7 \* 24 hours a day. Common options of `crontab` are:
@@ -64,18 +64,26 @@ MAILTO=root
|The 4th\*|The month of the year|1-12|
|The 5th\*|Day of the week|0-7 (0 and 7 both indicate Sunday)|
-In this example, assuming you are performing this operation as the root user, type the following: `crontab -e`, this will bring up the timed tasks of the root user, if you use `vi` as the default system editor, press i key to enter the insert mode, enter the following content, # means this is a line of comment. Press Esc to exit insert mode, enter: wq (displayed at the bottom) to save and exit `vi`, which means to run the script once every night at 22:00. Obviously, this is a very simple example, and the situation can become very complicated when you need to elaborate.
+In the example that follows, assuming you are performing this operation as the root user, type the following:
+
+* `crontab -e` which will bring up the timed tasks of the root user. If you use `vi` as the default system editor, press i key to enter the insert mode.
+* "#" means this is a line of comment.
```bash
# Nightly 10:00 backup system
00 22 * * * /usr/local/sbin/backup
```
+* Once the above has been entered (again assuming `vi` is the system editor), press ESC to exit insert mode.
+* Save and exit your file with SHIFT+:+wq! (displayed at the bottom of the editor).
+
+Now the script will run every night at 22:00. Obviously, this is a very simple example. Things can become more complicated if you need something more elaborate.
+
!!! tip "Attention"
The script needs to have execute permission (`chmod +x`) before cronie can run it.
-#### Complex options
+#### Complex Options
So far, the content discussed are very simple options, but how to complete more complex timed tasks?
diff --git a/docs/guides/automation/templates-automation-packer-vsphere.md b/docs/guides/automation/templates-automation-packer-vsphere.md
index 6ebf293e9c..52657fc151 100644
--- a/docs/guides/automation/templates-automation-packer-vsphere.md
+++ b/docs/guides/automation/templates-automation-packer-vsphere.md
@@ -38,7 +38,7 @@ You can also choose not to convert the virtual machine into a template, in this
### Introduction to Packer
-Packer is an open source virtual machine imaging tool, released under the MPL 2.0 license and created by Hashicorp. It will help you automate the process of creating virtual machine images withpre-configured operating systems and installed software from a single source configuration in both, cloud and on-prem virtualized environments.
+Packer is an open source virtual machine imaging tool, released under the MPL 2.0 license and created by Hashicorp. It will help you automate the process of creating virtual machine images with pre-configured operating systems and installed software from a single source configuration in both, cloud and on-prem virtualized environments.
With Packer you can create images to be used on the following platforms:
@@ -58,7 +58,7 @@ You can have a look at these resources for additional information:
### Installing Packer
-There are two ways of install Packer in your Rocky Linux system.
+There are two ways to install Packer on your Rocky Linux system.
#### Installing Packer from the Hashicorp repo
@@ -119,7 +119,7 @@ $ sudo mv packer /usr/local/bin/
If all the steps of the previous procedures have been completed correctly, we can proceed to verify the installation of Packer on our system.
-To verify that Packer has been installed correctly, run the packer command and you will get the result shown below:
+To verify that Packer has been installed correctly, run the `packer` command and you will get the result shown below:
```bash
$ packer
@@ -142,7 +142,7 @@ Available commands are:
It is assumed that you are on Linux to perform the following tasks.
-As we will connect to a VMware vCenter Server to send our commands via Packer, we need to store our credentials outside the configuration files that we will create next.
+As we will connect to a VMware vCenter Server to send our commands via Packer, we need to store our credentials outside the configuration files which we will create next.
Let's create a hidden file with our credentials in our home directory. This is a json file:
@@ -236,13 +236,13 @@ In a first step, we declare variables, mainly for the sake of readability:
We will use the variable `version` later in the template name we will create. You can easily increment this value to suit your needs.
-We will also need our booting virtual machine to access a ks.cfg (Kickstart) file.
+We will also need our booting virtual machine to access a `ks.cfg` (Kickstart) file.
A Kickstart file contains the answers to the questions asked during the installation process. This file passes all its contents to Anaconda (the installation process), which allows you to fully automate the creation of the template.
-The author likes to store his ks.cfg file in an internal web server accessible from his template, but other possibilities exists that you may chose to use instead.
+The author likes to store his `ks.cfg` file in an internal web server accessible from his template, but other possibilities exists that you may chose to use instead.
-For example, the ks.cfg file is accessible from the VM at this url in our lab: http://fileserver.rockylinux.lan/packer/rockylinux/8/ks.cfg. You would need to set up something similar to use this method.
+For example, the `ks.cfg` file is accessible from the VM at this url in our lab: http://fileserver.rockylinux.lan/packer/rockylinux/8/ks.cfg. You would need to set up something similar to use this method.
Since we want to keep our password private, It is declared as a sensitive variable. Example:
diff --git a/docs/guides/cms/cloud_server_using_nextcloud.md b/docs/guides/cms/cloud_server_using_nextcloud.md
index 034e2168ad..690e76ea8a 100644
--- a/docs/guides/cms/cloud_server_using_nextcloud.md
+++ b/docs/guides/cms/cloud_server_using_nextcloud.md
@@ -16,6 +16,11 @@ tags:
* A high degree of comfort operating from the command line for installation and for configuration.
* Knowledge of a command-line editor. For this example, we are using _vi_, but you can use your favorite editor if you have one.
* While Nextcloud can be installed via a snap application, we will be documenting two installation methods, the module and the .zip file.
+
+!!! note "Specifics for Rocky Linux 9.0"
+
+ You will need to use the .zip file install method for Rocky Linux 9.0 as the module does not exist on 9.0.
+
* We will be applying concepts from the Apache "sites enabled" document (linked to down below) for directory setup in the .zip file method.
* We will also be using the _mariadb-server_ hardening procedure (also linked to later) for database setup.
* Throughout this document we will assume that you are root, or that you can be by using _sudo_.
diff --git a/docs/guides/containers/lxd_web_servers.md b/docs/guides/containers/lxd_web_servers.md
index aae81139c9..0e739a9e2a 100644
--- a/docs/guides/containers/lxd_web_servers.md
+++ b/docs/guides/containers/lxd_web_servers.md
@@ -180,7 +180,7 @@ If you want to use IPv6 on your LXD containers, you can turn on this next option
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
```
-This is necessary to easily back up the server, and can allow you to manage your LXD install from other computers. If that all sounds good to you, answer "yes" here/
+This is necessary to easily back up the server, and can allow you to manage your LXD install from other computers. If that all sounds good to you, answer "yes" here
```
Would you like the LXD server to be available over the network? (yes/no) [default=no]: yes
@@ -570,7 +570,7 @@ If you have `curl` installed on your server host, you can make sure the default
curl [container-ip-address]
```
-Remember, you can see all contkainer IPs with `lxc list`. And if you install curl on all your containers, you *could* just run:
+Remember, you can see all container IPs with `lxc list`. And if you install curl on all your containers, you *could* just run:
```bash
curl localhost
@@ -844,7 +844,7 @@ lxc exec apache-server systemctl restart httpd && lxc exec nginx-server restart
That will apply the "real-ip.conf" files we made to their respective server configurations.
#### Getting SSL certificates for your websites
-Getting official, proper SSL certificates is easiest with Let's Encrypt, and a little application called certbot. certbot will automatically detect your websites, get SSL certificates for them, and configure the sites itself. It will even renew the certificates for you every 30 days or so, without any intervention from you or cron jobs.
+Getting official, proper SSL certificates is easiest with Let's Encrypt, and a little application called certbot. certbot will automatically detect your websites, get SSL certificates for them, and configure the sites themselves. It will even renew the certificates for you every 30 days or so, without any intervention from you or cron jobs.
This all has to be done from the "proxy-server" container, so log into that shell. Once there, install the EPEL repositories, just like you did on the host. Make sure the container is updated first:
diff --git a/docs/guides/containers/podman-nextcloud.md b/docs/guides/containers/podman-nextcloud.md
index ed047f63c6..3235c837ce 100644
--- a/docs/guides/containers/podman-nextcloud.md
+++ b/docs/guides/containers/podman-nextcloud.md
@@ -268,7 +268,7 @@ And here's the code you'll need:
!!! warning
- For the purposes of this guide, the following script will deleted all Podman Volumes. If you have other applications running with their own volumes, modify/comment the line "podman volume rm --all";
+ For the purposes of this guide, the following script will delete all Podman Volumes. If you have other applications running with their own volumes, modify/comment the line "podman volume rm --all";
```
#!/bin/bash
@@ -419,7 +419,7 @@ podman run --name nextcloud --net host --privileged -d -p 80:80 \
nextcloud ;
```
-Save and close that out,, make all of your scripts executable, then run the image building script first:
+Save and close that out, make all of your scripts executable, then run the image building script first:
```bash
chmod +x *.sh
diff --git a/docs/guides/contribute/navigation.md b/docs/guides/contribute/navigation.md
index 0ccb11e53d..6464e1a26d 100644
--- a/docs/guides/contribute/navigation.md
+++ b/docs/guides/contribute/navigation.md
@@ -82,11 +82,12 @@ Once completed, you can try running `mkdocs serve` to see if you get your desire
## Navigation and Other Changes
-Navigation is handled with mkdocs `.pages` files. Are not terribly complex, BUT, if something is left out, it can cause the server to fail to load. That's why this procedure is **ONLY** for Managers and Editors. These individuals are going to have the tools in place (local install of mkdocs, plus clones of both documentation and docs.rockylinux.org) so that something pushed and merged to GitHub will not break the serving of the documentation website. A contributor cannot be expected to have even one of these requirements in place.
+Navigation is handled with mkdocs `.pages` files **OR** by the value of the "title:" meta in the document front matter. The `.pages` files are not terribly complex, BUT, if something is left out, it can cause the server to fail to load. That's why this procedure is **ONLY** for Managers and Editors. These individuals are going to have the tools in place (local install of mkdocs, plus clones of both documentation and docs.rockylinux.org) so that something pushed and merged to GitHub will not break the serving of the documentation website. A contributor cannot be expected to have even one of these requirements in place.
+
### `.pages` Files
-As already stated, the .pages files are generally pretty simple. They are a YAML formatted file that `mkdocs` reads before rendering the content. To take a look at one of the more complex `.pages` files, let's look at the one created to help format the side navigation:
+As already stated, the `.pages` files are generally pretty simple. They are a YAML formatted file that `mkdocs` reads before rendering the content. To take a look at one of the more complex `.pages` files, let's look at the one created to help format the side navigation:
```
---
diff --git a/docs/guides/contribute/rockydocs_formatting.md b/docs/guides/contribute/rockydocs_formatting.md
index 0f93ecd388..085ec8dd58 100644
--- a/docs/guides/contribute/rockydocs_formatting.md
+++ b/docs/guides/contribute/rockydocs_formatting.md
@@ -9,7 +9,7 @@ tags:
# Rocky Docs Formatting - Introduction
-Over the last year, a lot has changed with Rocky documentation. This guide is meant to help contributors get familiar with our more advanced formatting options: including admonitions, numbered lists, tables, and more.
+Over the last year, a lot has changed with Rocky documentation. This guide is meant to help contributors get familiar with our more advanced formatting options including: admonitions, numbered lists, tables, and more.
To be clear, a document may or may not need to contain any of these elements. If you feel that your document will benefit from them, then this guide should help.
@@ -31,7 +31,7 @@ To be clear, a document may or may not need to contain any of these elements. If
###### A Level 6 heading
```
- The key here is that there can be as many of the 2 through 6 headings as you want to use, but only **ONE** level 1 heading. While the documentation will be build with more than one level 1 heading, the automatically generated table of contents for the document that appears on the right-hand side, will **NOT** display correctly (or sometimes at all), with more than one. Keep this in mind when writing your documents.
+ The key here is that there can be as many of the 2 through 6 headings as you want to use, but only **ONE** level 1 heading. While the documentation will be built with more than one level 1 heading, the automatically generated table of contents for the document that appears on the right-hand side will **NOT** display correctly (or sometimes at all) with more than one. Keep this in mind when writing your documents.
## Admonitions
@@ -179,7 +179,7 @@ You can't use your eyes to line them up under the numbered item, however, as thi
Here's an example of a multi-line numbered list with a code block thrown in for good measure:
-1. When dealing with numbered lists that are multi line and include things like code blocks, use the space indentation to get what you want.
+1. When dealing with numbered lists that are multi-line and include things like code blocks, use the space indentation to get what you want.
For example: this is indented four (4) spaces and represents a new paragraph of text. And here, we are adding a code block in. It is also indented by the same four (4) spaces as our paragraph:
@@ -275,7 +275,7 @@ And yes, the code block you just saw used five backticks at the beginning and en
## Keyboard
-Another way to make sure that you add as much clarity to your documents as possible is to represent keys on the keyboard that must be entered, in the correct manner. This is done with `key`. For instance, to represent that you need to hit the escape key in your document, you would use `ESCCTRL + F4` if keys need to be pressed simultaneously, add "simultaneously" or "at the same time" or some similar phrase to your instructions. Here's an example of a keyboard instruction in your editor:
+Another way to make sure that you add as much clarity to your documents as possible is to represent keys on the keyboard that must be entered in the correct manner. This is done with `key`. For instance, to represent that you need to hit the escape key in your document you would use `ESCCTRL + F4`. If keys need to be pressed simultaneously, add "simultaneously" or "at the same time" or some similar phrase to your instructions. Here's an example of a keyboard instruction in your editor:
```
A workstation type installation (with graphical interface) starts this interface on terminal 1. Linux being multi-user, it is possible to connect several users several times, on different **physical terminals** (TTY) or **virtual terminals** (PTS). Virtual terminals are available within a graphical environment. A user switches from one physical terminal to another using Alt + Fx from the command line or using CTRL + Alt + Fx.
@@ -286,7 +286,7 @@ A workstation type installation (with graphical interface) starts this interface
## Grouping Different Formatting Types
-Things really get crazy, when you need to combine multiple elements within another one. For instance, an admonition with a numbered list:
+Things really get crazy when you need to combine multiple elements within another one. For instance, an admonition with a numbered list:
!!! note
@@ -398,7 +398,7 @@ A comment should have a blank line before and after the comment.
## Conclusion
-Document formatting with admonitions, tables, numbered lists, and block quotes, can add clarity to your document. When using admonitions, take care to pick the correct type. This can make it easier to visually see the importance of the particular admonition.
+Document formatting with admonitions, tables, numbered lists, and block quotes can add clarity to your document. When using admonitions, take care to pick the correct type. This can make it easier to visually see the importance of the particular admonition.
Overuse of any of these elements can simply add clutter where none is needed. Learning to use these formatting items conservatively and well can be very helpful to get your point across in a document.
diff --git a/docs/guides/proxies/haproxy_apache_lxd.md b/docs/guides/proxies/haproxy_apache_lxd.md
index 2b49748fbf..905441c68e 100644
--- a/docs/guides/proxies/haproxy_apache_lxd.md
+++ b/docs/guides/proxies/haproxy_apache_lxd.md
@@ -21,7 +21,7 @@ If your problem is website performance, however, you may need to distribute your
* Complete comfort at the command line on a Linux machine
* Experience with a command line editor (we are using `vim` here)
* Experience with `crontab`
-* Knowledge of LXD. For more information, you may want to consult the [LXD Server](https://docs.rockylinux.org/guides/containers/lxd_server) document. It is perfectly fine to install LXD on a laptop or workstation as well without doing the full-blown server install. This document is being written with a lab machine that is running LXD, but is not set up as a full server as the document linked above uses.
+* Knowledge of LXD. For more information, you may want to consult the [LXD Server](../../books/lxd_server/00-toc.md) document. It is perfectly fine to install LXD on a laptop or workstation as well without doing the full-blown server install. This document is being written with a lab machine that is running LXD, but is not set up as a full server as the document linked above uses.
* Some knowledge on installing, configuring, and using web servers.
* We will assume that LXD is already installed and ready to create containers.
@@ -99,7 +99,7 @@ lxc profile assign web2 default,macvlan
lxc profile assign proxyha default,macvlan
```
-Unfortunately, the default behavior of `macvlan` as implemented in the kernel, is inexplicably broken within an LXD container (see [this document](https://docs.rockylinux.org/guides/containers/lxd_server/#centos-macvlan)). This has been the case with the upstream provider since version 8 was released. To get around these issues, we will need to run `dhclient` on boot in each of the containers.
+Unfortunately, the default behavior of `macvlan` as implemented in the kernel, is inexplicably broken within an LXD container (see [this document](../../books/lxd_server/06-profiles.md)) `dhclient` on boot in each of the containers.
Doing this is pretty simple when using DHCP. Just follow this for each container: