Today, when I opened a Virtualizor panel for a VM node, I found an issue like the following:
Could not make the Query.
SELECT tasks.actid, tasks.action, users.uid, users.email FROM `tasks` LEFT JOIN users on tasks.uid = users.uid WHERE action NOT IN ('vpsbackups_plan_email', 'send_background_mail', 'backuply_vpsbackups_plan_email') ORDER BY tasks.actid DESC LIMIT 10
Array
(
[0] => HY000
[1] => 144
[2] => Table './virtualizor/tasks' is marked as crashed and last (automatic?) repair failed
Issue was the tasks table is marked as crashed. To solve this, we need to repair the table tasks.
First, find the password for database ‘virtualizor’ using the following command:
There are times, you may end up with the following error, when you are trying to install R1Soft hcp module or the kernel module in Ubuntu based servers:
kernel module installer failed. (0) - R1Soft - Could not find a suitable hcpdriver module for your system - Ubuntu
Full error could be like the following when you call for –get-module
root@hisab:/lib/modules/r1soft# serverbackup-setup --get-module
Building header archive ...
outfile = /tmp/headers881407773
headers = /usr/src/linux-headers-5.4.0-128-generic
Session ID: 379634599
Waiting to upload...
Uploading file...
Waiting in build queue...
Failed to get suitable module for this system: Failed to build module: No builders found.
Get module failed.
Falling back to old get-module ...
Checking if module needs updated
Checking for binary module
Waiting /
No binary module found
Gathering kernel information
Gathering kernel information complete.
Creating kernel headers package
Checking '/tmp/r1soft-cki.1667140819' for kernel headers
Found headers in '/tmp/r1soft-cki.1667140819'
Compressing...
Starting module build...
Building / kernel module installer failed. (0):
Internal error encountered. Please contact support
Request ID: (75ca382d-5a0e-4161-8c70-8b136a6b1330)
http://www.r1soft.com/distros/index.php?uuid=75ca382d-5a0e-4161-8c70-8b136a6b1330
To solve this error, you may get the built kernel module for Ubuntu based on it’s distribution in their repository. The link to the repository would be as following:
http://beta.r1soft.com/modules/
Now, if you are using Ubuntu 20.04, then the module would be available under the folder: Ubuntu_2004_x64
In my case, it was Ubuntu 20.04. Next stop, is to find the kernel version. You may get it from the following command:
root@hisab:~# uname -a
Linux hisab.skincafe.co 5.4.0-128-generic #144-Ubuntu SMP Tue Sep 20 11:00:04 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
root@hisab:~#
Kernel number to note in our case, would be ‘5.4.0-128’. Now search for this inside the link:
http://beta.r1soft.com/modules/Ubuntu_2004_x64/
You should find a match, like for my case it was the following link:
Next stop, is to go to the r1soft module folder and load the module. You may do so like the following:
cd /lib/modules/r1soft
wget http://beta.r1soft.com/modules/Ubuntu_2004_x64/hcpdriver-cki-5.4.0-128-generic.209.ko
Now, all you need, is to restart r1soft. Remember to stop and star the agent instead of direct restart.
service cdp-agent stop
service cdp-agent start
This should be able to load the HCP module now. You may verify this by typing:
root@hisab:~# hcp --list
Idera Hot Copy 6.16.4 build 117 (http://www.r1soft.com)
Documentation http://wiki.r1soft.com
Forums http://forum.r1soft.com
Thank you for using Hot Copy!
Idera makes the only Continuous Data Protection software for Linux.
No Hot Copy sessions are currently running.
root@hisab:~#
You may have raw images in your system coming from some bare metal VM, like KVM/Vmware. You may mount them directly to the host machine without attaching them to a VM. To do so, you need two things:
Partition to mount
Sector size of the partition and the first position of the partition.
Both of these, can be derived using a command called fdisk with attribute l as the following:
[root@vps5 vpsextra]# fdisk -l mhdevelopment.img
Disk mhdevelopment.img: 268.4 GB, 268435456000 bytes, 524288000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000f1752
Device Boot Start End Blocks Id System
mhdevelopment.img1 2048 523241471 261619712 83 Linux
mhdevelopment.img2 523241472 524287999 523264 82 Linux swap / Solaris
You have new mail in /var/spool/mail/root
[root@vps5 vpsextra]#
Here, we are trying to mount an old image of mine, called ‘mhdevelopment.img. I would like to mount the partition that is not swap, which is namely ‘mhdevelopment.img2’ here. This partition starts from 2048 and the sector size is 512 bytes.
So to mount the partition, you can now use the following command:
sudo mount -o loop,offset=$((2048 * 512)) mhdevelopment.img /mnt
This will mount the the partition mhdevelopment.img1 to /mnt. If you want to change the mount destination, you may do this at the end in replace of /mnt to wherever you want this to be.
WkHTMLtoPDF is a tool to convert html reports to PDF. Odoo/OpenERP uses this tool to generate PDF reports. If you are using an unicode character in PDF report, that character has to be installed in font package in the system. If you are using Windows, Bangla characters are available by default. But that is not same for Linux.
Bangla & Assamese fonts are available for Linux, in a package called ‘lohit’.
To install Bangla fonts in CentOS/Redhat based system, use the following:
yum install lohit-bengali-fonts
To install in Debian/Ubuntu based system, use the following:
apt install fonts-lohit-beng-bengali
Once this is installed, PDF reports should start showing the Bangla characters properly.
Consider the following situation, you have two interfaces in your system, eth0, and eth1 (or more). Both the interfaces have a default gateway. But how can you choose which interface to follow as the default outbound requests by the server? This could be a situation like adding secondary alias IP addresses to an interface (Like eth0, eth0:0, eth0:1, eth0:2, etc).
In these cases, Linux can decide based on its own algorithm. The problem with this is in the case of Licensing. In most licensing systems these days, you need to provide an outbound IP address to your server. If this IP changes over time, you would have trouble managing the license. For these cases, you need to define your default interface to Linux.
You may set this configuration under /etc/sysconfig/network file. The ‘key’ for the settings is ‘GATEWAYDEV’.
So for example if your gatewaydev would be eth0:1, the file would look like something following:
After a lot of system administration and backend programming stuffs on this blog, let’s check some experiences with frontend and designing.
Tailwind is my favorite most used CSS framework. A common thing, I face on centering an element on the screen. There are a couple of ways to do it. First, we can actually use flex and horizontal and vertical center to put the element in the center, and use h-screen to take the height of full screen like following:
<div class="h-screen flex justify-center items-center">
<div>
Element on the center of the screen
</div>
</div>
There are other ways to do it as well. You can set the flex and h-screen to the container, and m-auto to allow margin to put your inside element center of the screen, like the following:
<div class="h-screen flex">
<div class="m-auto">
Element on the center of the screen
</div>
</div>
Then, you probably want to put the content as a modal. To use the modal, you need to set the position absolute. Here is how you may do this:
<div class="relative">
<div class="absolute inset-0 h-screen flex">
<div class="m-auto">
Element on the center of the screen
</div>
</div>
</div>
or like the following:
<div class="relative">
<div class="absolute inset-0 h-screen flex justify-center items-center">
<div>
Element on the center of the screen
</div>
</div>
</div>
Hope this helps to someone, and myself specially when I forget after a while, on how to create a center modal in Tailwind 🙂
In Odoo Qweb report, you probably want to change the time to something else, like add few hours, or change the timezone, or so on. To do that, you would need to use ‘t-esc’ template attribute of Odoo. Here is an example of how to add 6 hours to the original timestamp and then convert the time to string to show the value according to the user preference:
You are seeing a time in the Odoo form view, which is using the correct timezone, but when you try to download the report of the same form view data, you see, the timezone is changed to UTC or something else. How to fix this?
Solution
The issue appears when the user has configured a different timezone or has not, while the Odoo system uses a central timezone. Make sure to set the timezone for the user to same as the one Odoo uses. You may do so, from
Odoo >> Settings >> Users >> Select User >> Edit >> Preference >> Set Timezone
If this does not solve the problem, then the problem probably appears because Odoobot is set to use a different timezone, and your report is generated using ‘sudo()’ function. To set the timezone for Odoobot
Odoo >> Settings >> Users >> From the Filters, select ‘Inactive Users’ >> Click on Odoobot >> Edit >> Preference >> Set the Timezone