====== How to Create a Bridge Connection Between PC and VM ======
===== Prerequisites =====
Verify that the necessary packages are installed. For Ubuntu, you will need the bridge-utils package.
$ sudo apt-get install bridge-utils
===== Step 1 =====
* Identify the physical network interface of the PC using the following command and note down the name of the physical interface (e.g., eth0, enp1s0, etc.):
$ ip link show
===== Step 2 =====
==== Configure the bridge on the PC ====
* Open the network configuration file using a text editor at "/etc/netplan/" (Ubuntu)
* Create a new configuration file (e.g., bridge.yaml) or modify an existing one and paste the following configuration:
network:
version: 2
renderer: networkd
ethernets:
pc_interface_name: #replace pc_interface_name with the network interface you noted before
dhcp4: no
dhcp6: no
bridges:
br0:
interfaces: [pc_interface_name]
addresses: [192.168.1.128/24] //You can choose a different address if you want
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8]
=== !!Note!! ===
This only works with wired network. You have to replace networkd with NetworkManager to have your internet access through wifi back
* Apply the network configuration:
$ sudo netplan apply
* This will create the bridge interface (br0) and associate it with the physical interface you can check that using:
$ ip -br a s
* If not you can restart your network:
$ sudo systemctl restart network-online.target
* Or:
$ sudo systemctl restart systemd-networkd
===== Step 3 =====
==== Configure the VM to use the bridge: ====
* Make sure the vm is shut off before applying any changes , check using the following command:
$ virsh list --all
* Modify the XML configuration file of the VM to use the bridge interface (br0) instead of a virtual network you can do that usig the following commands or manually which i'll be mentioning it afterwards:
* Determine the name of the VM's network interface: Run the following command on the host machine to list the available network interfaces of the VM:
$ virsh domiflist vm_name
* Connect the VM to the bridge interface:
$ virsh attach-interface --domain vm_name --type bridge --source br0 --model virtio --config --live
==== Manually ====
* Locate the XML configuration file of the VM (e.g., /etc/libvirt/qemu/.xml)and open it with a text editor of your choice
* Locate the tag and add the follwing after the closing tag of interface :
* Save the changes and exit
===== Step 4 =====
==== Assign the ip address ====
* Launch the VM using:
$ virsh start VM_name
* On the VM Terminal check the network interfaces names using :
$ ip -br a s
* You will notice that there is an additional interface named (e.g: enp9s0) if it's DOWN use this command to set it UP:
$ ip link set dev enp9s0 up
* Replace enp9s0 according to your interface name
* Add an ip address of your choice:
$ ip address add 192.168.1.182/24 dev enp9s0
* Replace enp9s0 according to your interface name
* Check if it's running using :
$ ip address show dev enp9s0
* Verify connectivity by accessing the VM from the PC:
$ ping 192.168.1.182
* Or:
$ ssh vm_username@192.168.1.182
* Change the address according to your configuration
====== Docker Installation Guide for Debian ======
This guide provides step-by-step instructions for installing Docker on Debian.
=== Prerequisites ===
* A Debian-based system
* Administrative privileges (sudo access)
=== Step 1: Update Package Index ===
Open a terminal and update the package index on your Debian system:
$ sudo apt update
=== Step 2: Install Dependencies ===
Install the necessary packages to enable APT to use repositories over HTTPS and handle certificates:
$ sudo apt install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
=== Step 3: Add Docker's Official GPG Key ===
Download and add Docker's official GPG key to your system:
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
=== Step 4: Add Docker Repository ===
Add the Docker repository to your APT sources by creating a new file:
$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
=== Step 5: Update Package Index Again ===
Update the package index to reflect the newly added Docker repository:
$ sudo apt update
=== Step 6: Install Docker ===
Install Docker on your Debian system:
$ sudo apt install -y docker-ce docker-ce-cli containerd.io
=== Step 7: Add user to the docker group ===
Add your username to the docker group:
$ sudo usermod -aG docker username
=== Step 8: Add docker to user groups ===
You can do that by logging out and logging back in or simply by creating a group named docker in your groups list
$ newgrp docker
=== Step 9: Verify Docker Installation ===
Verify that Docker is installed correctly by running a test container:
$ sudo docker run hello-world
====== Backup Script for Proxmox VM ======
This documentation will guide you through using the provided backup script to create backups for a virtual machine (VM) running on Proxmox. The script will create backup files for the Odoo filestore, database, and extra-addons .
===== 1. Script Overview =====
The backup script is designed to create separate backup files for the Odoo filestore, database, and extra-addons. Each backup file will be named with the current date and time (YYYY-MM-DD_HH-MM-SS) to ensure uniqueness.
===== 2. Running the Backup Script =====
#!/bin/bash
# Usage function
usage() {
echo "Usage: $0 DATABASE FILESTORE_DIR EXTRA_ADDONS_DIR POSTGRES_CONT BACKUP_DIR"
echo " DATABASE: Name of the Odoo database to backup"
echo " FILESTORE_DIR: Path to the Odoo filestore directory"
echo " EXTRA_ADDONS_DIR: Path to the Odoo extra-addons directory"
echo " POSTGRES_CONT: Name of the PostgreSQL container"
echo " BACKUP_DIR: Path to the backup destination directory"
}
# Check the number of arguments
if [ $# -ne 5 ]; then
usage
exit 1
fi
# Assign command-line arguments to variables
DATABASE=$1
FILESTORE_DIR=$2
EXTRA_ADDONS_DIR=$3
POSTGRES_CONT=$4
BACKUP_DIR=$5
# Generate the backup date and time
DATETIME=$(date +\%Y-\%m-\%d_\%H-\%M-\%S)
# Backup filenames
FILESTORE_ARCHIVE="$DATABASE"_filestore_"$DATETIME".tar.gz
DATABASE_ARCHIVE="$DATABASE"_database_"$DATETIME".sql.bz2
EXTRA_ADDONS_ARCHIVE="$DATABASE"_extra-addons_"$DATETIME".tar.gz
# Function to log messages to the terminal
log_message() {
echo "$(date +\%Y-\%m-\%d_\%H:\%M:\%S): $1"
}
# Start logging
log_message "Backup process started."
# Perform the Filestore Backup
log_message "Performing Filestore Backup..."
tar -C "$FILESTORE_DIR" -czf "$BACKUP_DIR/$FILESTORE_ARCHIVE" . 2>&1 | log_message
log_message "Filestore Backup completed."
# Perform the Extra Addons Backup
log_message "Performing Extra Addons Backup..."
tar -C "$EXTRA_ADDONS_DIR" -czf "$BACKUP_DIR/$EXTRA_ADDONS_ARCHIVE" . 2>&1 | log_message
log_message "Extra Addons Backup completed."
# Perform the Database Backup
log_message "Performing Database Backup..."
docker exec -i "$POSTGRES_CONT" pg_dump -U odoo --create --format=plain "$DATABASE" | gzip > "$BACKUP_DIR/$DATABASE_ARCHIVE" 2>&1 | log_message
log_message "Database Backup completed."
# End logging
log_message "Backup process completed."
# Print message to the terminal
echo "Backups completed successfully."
Save the script to a file (e.g., backup_script.sh) and make it executable using the command:
$ chmod +x backup_script.sh
To execute the script, simply run:
$ ./backup_script.sh DATABASE FILESTORE_DIR EXTRA_ADDONS_DIR POSTGRES_CONT BACKUP_DIR
* DATABASE: Name of the Odoo database to backup.
* FILESTORE_DIR: Path to the Odoo filestore directory.
* EXTRA_ADDONS_DIR: Path to the Odoo extra-addons directory.
* POSTGRES_CONT: Name of the PostgreSQL container associated with Odoo.
* BACKUP_DIR: Path to the backup destination directory.
The script will create three backup files in a directory of your choice :
* _filestore_.tar.gz: Backup for the Odoo filestore.
* _database_.sql.bz2: Backup for the Odoo database.
* _extra-addons_.tar.gz: Backup for the Odoo extra-addons.
====== Restoring the Backups ======
In the event of data loss or VM issues, you can use these backup files to restore the Odoo VM. Ensure you have backups available for all three components: filestore, database, and extra-addons.
===== Step 1: Restore the Filestore =====
* SSH into your Proxmox server as the appropriate user with privileges to manage VMs.
* Upload the filestore backup (_filestore_.tar.gz) to the appropriate directory on the VM. You can use scp or any other file transfer method to upload the file.
* Create a file in the filestore/filestore named with the database name
$ sudo mkdir path/to/filestore/filestore/database_name
* Decompress and restore the filestore backup on the VM using the following command:
$ sudo tar -xzf /path/to/_filestore_.tar.gz -C /path/to/filestore/directory
===== Step 2: Restore the Extra Addons =====
* Upload the extra-addons backup (_extra-addons_.tar.gz) to the appropriate directory on the VM.
* Decompress and restore the extra-addons backup on the VM using the following command:
$ sudo tar -xzf /path/to/_extra-addons_.tar.gz -C /path/to/extra-addons/directory
===== Step 3: Restore the Database =====
* Upload the database backup (_database_.sql.bz2) to the VM.
* If the database was completly deleted you need to create the database first by running this command :
$ docker exec -i createdb -U odoo
Replace with the database name you want to restore
* Decompress and restore the database backup on the VM using the following command:
$ gunzip -c /path/to/_database_.sql.bz2 | docker exec -i psql -U odoo --dbname=
* Replace with the name of the Odoo database you want to restore.
====== Odoo Backup Restoration Script ======
- This bash script is designed to automate the process of restoring backups for Odoo in case of data loss or VM issues. The script restores the filestore, extra-addons, and database backups, allowing you to recover your Odoo VM efficiently.
===== Prerequisites =====
* Ensure that Docker is installed on the system and the necessary permissions are set to execute Docker commands.
* You should have access to the Odoo PostgreSQL container and the required Odoo directories (filestore and extra-addons).
* Make sure you have the necessary backup files available for the filestore, extra-addons, and database components.
===== Usage =====
#!/bin/bash
# Function to print log messages
log_message() {
echo "$(date +\%Y-\%m-\%d_\%H:\%M:\%S): $1"
}
# Function to decompress and restore filestore backup
restore_filestore() {
log_message "Restoring the Filestore..."
sudo mkdir -p "$FILESTORE_DIR/$DATABASE"
sudo tar -xzf "$BACKUP_DIR/$FILESTORE_ARCHIVE" -C "$FILESTORE_DIR/$DATABASE"
log_message "Filestore Restore completed."
}
# Function to decompress and restore extra-addons backup
restore_extra_addons() {
log_message "Restoring the Extra Addons..."
sudo tar -xzf "$BACKUP_DIR/$EXTRA_ADDONS_ARCHIVE" -C "$EXTRA_ADDONS_DIR"
log_message "Extra Addons Restore completed."
}
# Function to restore the database
restore_database() {
log_message "Restoring the Database..."
docker exec -i "$POSTGRES_CONT" createdb -U odoo "$DATABASE"
gunzip -c "$BACKUP_DIR/$DATABASE_ARCHIVE" | docker exec -i "$POSTGRES_CONT" psql -U odoo --dbname="$DATABASE"
log_message "Database Restore completed."
}
# Check the number of arguments
if [ $# -ne 5 ]; then
echo "Usage: $0 DATABASE FILESTORE_DIR EXTRA_ADDONS_DIR POSTGRES_CONT BACKUP_DIR"
exit 1
fi
# Assign command-line arguments to variables
DATABASE=$1
FILESTORE_DIR=$2
EXTRA_ADDONS_DIR=$3
POSTGRES_CONT=$4
BACKUP_DIR=$5
# Backup filenames
FILESTORE_ARCHIVE="$DATABASE"_filestore_"$DATETIME".tar.gz
DATABASE_ARCHIVE="$DATABASE"_database_"$DATETIME".sql.bz2
EXTRA_ADDONS_ARCHIVE="$DATABASE"_extra-addons_"$DATETIME".tar.gz
# Backup date and time
DATETIME=$(date +\%Y-\%m-\%d_\%H-\%M-\%S)
# Start restoring the backups
log_message "Restoration process started."
# Step 1: Restore the Filestore
restore_filestore
# Step 2: Restore the Extra Addons
restore_extra_addons
# Step 3: Restore the Database
restore_database
# End restoration
log_message "Restoration process completed."
# Print message to the terminal
echo "Restoration completed successfully."
* Save the script in a file named restore_script.sh.
* Make the script executable with the following command:
$ chmod +x restore_script.sh
* Execute the script with the required arguments:
$ ./restore_script.sh DATABASE FILESTORE_DIR EXTRA_ADDONS_DIR POSTGRES_CONT BACKUP_DIR
* DATABASE: Name of the Odoo database to restore.
* FILESTORE_DIR: Path to the Odoo filestore directory.
* EXTRA_ADDONS_DIR: Path to the Odoo extra-addons directory.
* POSTGRES_CONT: Name of the PostgreSQL container associated with Odoo.
* BACKUP_DIR: Path to the directory containing the backup files.
===== Example =====
$ ./restore_script.sh my_odoo_db /path/to/odoo/filestore /path/to/odoo/extra-addons odoo_postgres_container /path/to/backup/destination
===== Restoration Process =====
* The script performs the following restoration steps:
* Restores the filestore backup to the specified filestore directory.
* Restores the extra-addons backup to the specified extra-addons directory.
* Creates the Odoo database (if it was completely deleted) and restores the database backup.
[[http://babyshop-dz.com]]