# Almalinux LXC setup

Here is a simple review of what should be done in a newly created LXC using the image from Proxmox VE.  
If you're installing a VM using the official `.iso` image, some packages might already be installed by default (eg. `openssh-server` and `wget`).

## Step by step procedure

1. Install important packages
   - update and upgrade
     ```bash
     sudo dnf update -y && dnf upgrade -y
     ```
     
   - install basic packages (`git` and `net-tools` might not be useful, depending on your usage)
     ```bash
     sudo dnf install -y vim git tar wget bind-utils net-tools openssh-server
     ```

   - _Optional_: Docker installation
     - Add Docker repository
        ```bash
        sudo dnf install -y dnf-plugins-core
        sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
        ```
     - Install Docker
         ```bash
         sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
         ```
     - Enable Docker
         ```bash
         sudo systemctl enable --now docker
         ```
      - Test Docker installation
        ```bash
        docker run hello-world
        ```

2. Create a user with sudo privileges (replace `thorgan` by the username of your choice)
   ```bash
   sudo adduser thorgan
   sudo usermod -aG wheel thorgan
   sudo passwd thorgan
   ```

   > If you installed Docker in `step 1`, you can give permission to your newly created user to use it:
   >
   > ```bash
   > sudo usermod -aG docker thorgan
   > ```
   > _Replace `thorgan` by the username you created before_.

3. Open the port `22` in the firewall
    ```bash
    sudo firewall-cmd --add-service=ssh --permanent
    sudo firewall-cmd --reload
    ```

4. Start and enable `sshd` to accept SSH connections
   ```bash
   sudo service sshd start && systemctl enable sshd
   ```

## Script procedure

   ```bash
   #!/bin/bash

   sudo dnf update -y && dnf upgrade -y
   sudo dnf install -y vim git tar wget bind-utils net-tools openssh-server

   read -p "Enter username: " user
   sudo adduser "$user"
   sudo usermod -aG wheel "$user"
   sudo passwd "$user"

   sudo firewall-cmd --add-service=ssh --permanent
   sudo firewall-cmd --reload

   sudo service sshd start && systemctl enable sshd
   ```

## Script with docker installation

  ```bash
#!/bin/bash

# Update & Upgrade
sudo dnf update -y && dnf upgrade -y
# Install necessary packages
sudo dnf install -y dnf-plugins-core vim git tar wget bind-utils net-tools openssh-server

# Adding docker repository
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
# Install docker
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Enable docker
sudo systemctl enable --now docker
# Test docker installation
docker run hello-world

# Create sudoer user
read -p "Enter username: " user
sudo adduser "$user"
sudo usermod -aG wheel "$user"
sudo usermod -aG docker "$user"
sudo passwd "$user"

# Open port 22 on the firewall
sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload

# Enable & Start SSH
sudo service sshd start && systemctl enable sshd
  ```