# Ubuntu # Thay đổi kernel mặc định trên Ubuntu Kernel hoạt động như một cầu nối (middleware) giữa phần cứng và phần mềm chạy trên hệ thống. Kernel giao tiếp với phần cứng thông qua các trình điều khiển (drivers) được tích hợp sẵn bên trong nó hoặc được cài đặt bổ sung dưới dạng một module. Việc cập nhật kernel – điều này giúp tận dụng tối đa thế mạnh tài nguyên phần cứng của chúng. Ngoài ra, cập nhật kernel còn giúp khai thác tối đa những tính năng mới của nó và vá các lỗ hổng bảo mật đã được phát hiện trong phiên bản tiền nhiệm. Trong nội dung bài viết này, mình sẽ chia sẻ cách thực hiện cập nhật kernel trên Ubuntu (hoặc Debian) ## **Kiểm tra phiên bản kernel hiện tại** Để kiểm tra phiên bản Linux kernel đang được cài đặt trên hệ thống, sử dụng lệnh sau: ``` ``` uname -sr ``` ``` ![Alt text](https://wiki.kienletv.com/linux/image-9.png) ## **Nâng cấp kernel trên Ubuntu** ``` ``` sudo apt update && sudo apt upgrade sudo apt install wget ``` ``` ## **Tải Bash script để nâng cấp kernel** Bạn có thể tải xuống trực tiếp gói Kernel Deb từ kho lưu trữ Linux của Ubuntu. Tuy nhiên, để dễ dàng cài đặt, cập nhật và gỡ cài đặt Kernels trên Ubuntu, chúng ta có thể sử dụng scripts có sẵn tại [GitHub](https://github.com/pimlie/ubuntu-mainline-kernel.sh). Tải về server Ubuntu của bạn. ``` ``` wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh chmod +x ubuntu-mainline-kernel.sh sudo mv ubuntu-mainline-kernel.sh /usr/local/bin/ ``` ``` ## **Kiểm tra Kernel versions** Chạy lệnh sau: ``` ``` ubuntu-mainline-kernel.sh -c ``` ``` ![Alt text](https://wiki.kienletv.com/linux/image-10.png) Liêt kê tất cả Kernel versions ``` ``` ubuntu-mainline-kernel.sh -r ``` ``` ![Alt text](https://wiki.kienletv.com/linux/image-11.png) ## **Cài một Kernel versions** ``` ``` sudo ubuntu-mainline-kernel.sh -i ``` ``` Sau khi hoàn thành kiểm tra lại cài đặt ``` ``` sudo ubuntu-mainline-kernel.sh -l ``` ``` Reboot lại hệ thống ``` ``` sudo reboot ``` ``` Kiểm tra lại ``` ``` uname -r ``` ``` ## **Thay đổi hoặc set Default Kernel Version** ``` ``` sudo nano /etc/default/grub ``` ``` Thêm ``` ``` GRUB_SAVEDEFAULT=true GRUB_DEFAULT=saved ``` ``` ![Alt text](https://wiki.kienletv.com/linux/image-12.png) ``` ``` sudo update-grub sudo reboot ``` ``` Khi khởi động lại ấn **ESC** chọn **Advanced** ![Alt text](https://wiki.kienletv.com/linux/image-13.png) ![Alt text](https://wiki.kienletv.com/linux/image-14.png) ## **Xoá hoặc gỡ Kernel** Chạy lệnh sau chọn Kernel xoá ``` ``` sudo ubuntu-mainline-kernel.sh -u ``` ``` ## **Mời cà phê** Nếu cảm thấy blog mang đến những thông tin hữu ích cho công việc, cuộc sống, đam mê của bạn, đừng ngại ủng hộ một ly cà phê để mình có thêm động lực chia sẻ thêm nhiều kinh nghiệm, kiến thức nhé. Bạn có thể ủng hộ mình qua: ### **Ví MoMo** [![image.png](https://blog.kienletv.com/uploads/images/gallery/2024-03/scaled-1680-/1qtlfuWi59wt3C8i-image.png)](https://blog.kienletv.com/uploads/images/gallery/2024-03/1qtlfuWi59wt3C8i-image.png) [Ví MoMo](https://me.momo.vn/kienletv) ### **Paypal** [Hỗ trợ qua Paypal](https://paypal.me/kienletv?country.x=VN&local.x=en_US) Cám ơn mọi người! # Scipts cài đặt docker và docker-compose trên Ubuntu và Debian ## **Chuẩn bị** - Ubuntu / Debian - Docker - Docker Compose ## **Cài đặt** SSH vào server và tạo file sau: ```bash nano docker-install-ubuntu.sh ``` ```bash #!/bin/bash sudo apt update echo "Install needed" sudo apt-get install ca-certificates curl gnupg lsb-release -y echo "Add Docker’s official GPG key" curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update -y sudo apt-get install docker-ce docker-ce-cli containerd.io -y sudo usermod -aG docker $(whoami) newgrp docker sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose --version ``` Lưu lại và thoát. ```bash chmod 755 docker-install-ubuntu.sh sh docker-install-ubuntu.sh ``` ## **Mời cà phê** Nếu cảm thấy blog mang đến những thông tin hữu ích cho công việc, cuộc sống, đam mê của bạn, đừng ngại ủng hộ một ly cà phê để mình có thêm động lực chia sẻ thêm nhiều kinh nghiệm, kiến thức nhé. Bạn có thể ủng hộ mình qua: ### **Ví MoMo** [![image.png](https://blog.kienletv.com/uploads/images/gallery/2024-03/scaled-1680-/1qtlfuWi59wt3C8i-image.png)](https://blog.kienletv.com/uploads/images/gallery/2024-03/1qtlfuWi59wt3C8i-image.png) [Ví MoMo](https://me.momo.vn/kienletv) ### **Paypal** [Hỗ trợ qua Paypal](https://paypal.me/kienletv?country.x=VN&local.x=en_US) Cám ơn mọi người! # Extend LVM partition và disk trên Ubuntu ## **Bài toán** Bạn đang dùng server **Ubuntu 20.04 LTS** và Disk đang dùng **LVM Disk**. Không may `DATA` trên phân vùng này phình ra. Bạn cần mở rộng thêm. Mình ví dụ: - Disk ban đầu cài 400GB. - Mở rộng thêm mới 100GB Bạn kiểm tra dung lượng Disk như hình bên duới: ```bash df -h ``` ![Alt text](https://wiki.kienletv.com/linux/image.png) Mở rộng 100GB bnằng cách thêm vật lí trên server. Sau khi mở rộng bạn kiểm tra disk ```bash sudo fdisk -l ``` ![Alt text](https://wiki.kienletv.com/linux/image-1.png) Lúc này phân vùng `/dev/sda` đã tăng thêm 100GB (total 500GB). Nhưng trên phân vùng `/dev/sda` vẫn chưa mapping dung luợng mới. Bạn có thê kiểm tra ```bash sudo lsblk ``` ![Alt text](https://wiki.kienletv.com/linux/image-2.png) ## **Cấu hình để phân vùng nhận mapping dung luợng mới** ```bash sudo growpart /dev/sda 3 ``` ![Alt text](https://wiki.kienletv.com/linux/image-3.png) ```bash sudo lsblk ``` ![Alt text](https://wiki.kienletv.com/linux/image-4.png) ```bash sudo pvresize /dev/sda3 ``` ![Alt text](https://wiki.kienletv.com/linux/image-5.png) ```bash sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv ``` ![Alt text](https://wiki.kienletv.com/linux/image-6.png) ```bash sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv ``` ![Alt text](https://wiki.kienletv.com/linux/image-8.png) ## **Tham khảo** [Ubuntu – Extend LVM partition and disk](https://rdr-it.com/en/ubuntu-extend-lvm-partition-and-disk) ## **Mời cà phê** Nếu cảm thấy blog mang đến những thông tin hữu ích cho công việc, cuộc sống, đam mê của bạn, đừng ngại ủng hộ một ly cà phê để mình có thêm động lực chia sẻ thêm nhiều kinh nghiệm, kiến thức nhé. Bạn có thể ủng hộ mình qua: ### **Ví MoMo** [![image.png](https://blog.kienletv.com/uploads/images/gallery/2024-03/scaled-1680-/1qtlfuWi59wt3C8i-image.png)](https://blog.kienletv.com/uploads/images/gallery/2024-03/1qtlfuWi59wt3C8i-image.png) [Ví MoMo](https://me.momo.vn/kienletv) ### **Paypal** [Hỗ trợ qua Paypal](https://paypal.me/kienletv?country.x=VN&local.x=en_US) Cám ơn mọi người! # Backup Daily Weekly Monthly với tar rsync và cron Bài viết này mình chia sẻ mọi người cách tạo các bản sao lưu hàng ngày, hàng tuần và hàng tháng trên **Ubuntu/Debian** một cách tự động. Ở đây mình sử dụng các lệnh tar, find, rsync và cron để tự động hóa lịch sao lưu. ## **Daily Backup** Lệnh TAR sẽ tạo một kho lưu trữ nén của thư mục `/var/www/html trong` `/home/kien/backup/daily/data`. Lệnh find sẽ xóa tất cả các bản sao lưu hàng ngày cũ hơn 7 ngày. ```bash tar -zcf /home/kien/backup/daily/backup-$(date +%Y%m%d).tar.gz -C /var/www/ html find /home/tony/backup/daily/* -mtime +7 -delete ``` ## **Weekly Backup** Lệnh TAR sẽ tạo một kho lưu trữ nén của thư mục `/var/www/html trong /home/kien/backup/weekly`. Lệnh `find` sẽ xóa tất cả các bản sao lưu hàng tuần cũ hơn 31 ngày hoặc 1 tháng. ```bash tar -zcf /home/kien/backup/weekly/backup-$(date +%Y%m%d).tar.gz -C /var/www/ html find /home/kien/backup/weekly/* -mtime +31 -delete ``` ## **Monthly Backup** Lệnh TAR sẽ tạo một kho lưu trữ nén của thư mục **/var/www/html** trong `/home/kien/backup/monthly`. Lệnh find sẽ xóa tất cả các bản sao lưu hàng tháng cũ hơn 365 ngày hoặc 1 năm. ```bash tar -zcf /home/kien/backup/monthly/backup-$(date +%Y%m%d).tar.gz -C /var/www/ html find /home/kien/backup/monthly/* -mtime +365 -delete ``` Automate with Cron Bạn có thể tạo một cronjob để sao lưu hàng ngày, hàng tuần và hàng tháng. Mở lệnh `crontab -e` và thêm như sau: ```bash 15 0 * * * sh /home/tony/backup-daily.sh 30 0 * * 1 sh /home/tony/backup-weekly.sh 45 0 1 * * sh /home/tony/backup-monthly.sh ``` Thực hiện tập lệnh sao lưu hàng ngày hàng ngày vào lúc **12:15 AM** Thực hiện tập lệnh sao lưu hàng tuần vào mỗi thứ Hai lúc **12:30** sáng Thực hiện tập lệnh sao lưu hàng tháng ## **Backup Externally** Tiếp theo, bạn backup sao lưu vào nơi lưu trữ server khác tránh trường hợp bị server có sự cố ```bash rsync -a --delete /home/kien/backup/ root@161.35.143.122:/path/to/remote/backups/ ``` Tạo một cron backup auto ```bash 0 2 * * * rsync -a --delete /home/kien/backup/ root@161.35.143.122:/path/to/remote/backups/ ``` ## **Mời cà phê** Nếu cảm thấy blog mang đến những thông tin hữu ích cho công việc, cuộc sống, đam mê của bạn, đừng ngại ủng hộ một ly cà phê để mình có thêm động lực chia sẻ thêm nhiều kinh nghiệm, kiến thức nhé. Bạn có thể ủng hộ mình qua: ### **Ví MoMo** [![image.png](https://blog.kienletv.com/uploads/images/gallery/2024-03/scaled-1680-/1qtlfuWi59wt3C8i-image.png)](https://blog.kienletv.com/uploads/images/gallery/2024-03/1qtlfuWi59wt3C8i-image.png) [Ví MoMo](https://me.momo.vn/kienletv) ### **Paypal** [Hỗ trợ qua Paypal](https://paypal.me/kienletv?country.x=VN&local.x=en_US) Cám ơn mọi người! # Quản lý Linux Server qua giao diện web với Cockpit Khi quản lý các Server Linux mình thích dòng lệnh hơn nhưng có một số tình huống mà bạn cần quản lý Server Linux của mình bằng **[GUI](https://vi.wikipedia.org/wiki/Giao_di%E1%BB%87n_%C4%91%E1%BB%93_h%E1%BB%8Da_ng%C6%B0%E1%BB%9Di_d%C3%B9ng)**. ***Ví dụ:*** Bạn muốn xem nhanh các thống kê Server sử dụng như **CPU, RAM,HDD…** đôi khi nó cũng nhanh hơn và dễ dàng hơn nếu bạn không quen các lệnh. Trong hướng dẫn này, mình chia sẻ các bạn một GUI để quản lý Server Linux của mình có tên là **[Cockpit](https://cockpit-project.org/)**. ## **Làm thế nào để cài một web GUI trên Linux server** Khi tìm kiếm một GUI web tốt để quản lý Server Linux của mình, thường bạn sẽ tìm thấy các công cụ như **Webmin** hoặc **[Cpanel](https://cpanel.net/)**. Gần đây mình vừa tìm thấy một dự án mã nguồn mở có tên **Cockpit**. Ban đầu **Cockpit** được phát triển cho **RHEL** và **CentOS**, nhưng nó cũng chạy trên một loạt các bản phân phối **Linux** phổ biến như **Ubuntu,** **Debian**. **Cockpit** trông nhẹ, trực quan và dễ sử dụng. **Cockpit** có các tùy chỉnh nâng cao và mở rộng, do có các plugin tùy chỉnh. Trước khi cài đặt phần mềm này trên Server Linux của mình, bạn nên kiểm tra tài liệu cài đặt nếu bản phân phối Linux của bạn được hỗ trợ. ***Lưu ý***, phần mềm này có thể hơi khác trên một số bản phân phối vì chúng không phải lúc nào cũng có các tính năng giống nhau. Trong ví dụ này, mình cài đặt điều này trên Server **Ubuntu 20.04 LTS**. ```bash sudo apt install cockpit ``` Sau khi cài đặt xong vào trình duyệt gõ IP:9090 để login với user đã tạo trên Server ![](https://vietcalls.com/wp-content/uploads/2021/10/Screen-Shot-2021-10-21-at-11.30.42-300x252.png) ## **Các tính năng cơ bản cockpit** Đây là giao diện **Cockpit** khi bạn mở nó trên Ubuntu 20.04 LTS. Nó cung cấp các tính năng chính để quản lý toàn bộ máy chủ Linux của bạn. ![](https://vietcalls.com/wp-content/uploads/2021/10/Screen-Shot-2021-10-21-at-11.35.06-300x144.png) Với các tính năng cơ bản, bạn khắc phục sự cố bằng cách xem nhật ký hoặc start, stop dịch vụ. Bạn cũng có thể định cấu hình lưu trữ HDD, mạng và quản lý tài khoản người dùng Linux. Ngoài ra, các tác vụ khác có thể được thực hiện dễ dàng, như thực hiện cập nhật gói cài đặt hoặc mở một thiết bị đầu cuối dựa trên web khá trực quan. Các bạn tự vô vọc để xem nhé ![](https://vietcalls.com/wp-content/uploads/2021/10/Screen-Shot-2021-10-21-at-11.39.44-300x125.png) ![](https://vietcalls.com/wp-content/uploads/2021/10/Screen-Shot-2021-10-21-at-11.40.31-300x119.png) ## **Cài thêm Cockpit plugin** Bạn cũng có thể cài plugin tùy chỉnh từ cộng đồng. Ở đây mình cài plugin để quản lý các nhóm lưu trữ tên ZFS. Cài xong reload lại web GUI. ```bash git clone https://github.com/optimans/cockpit-zfs-manager.git sudo cp -r cockpit-zfs-manager/zfs /usr/share/cockpit ``` ![](https://vietcalls.com/wp-content/uploads/2021/10/Screen-Shot-2021-10-21-at-11.43.51-300x296.png) ## **Quản lý máy ảo thông qua GUI web Cockpit** Một tính năng khác là quản lý các máy ảo của bạn đang chạy trên KVM. Để kích hoạt tính năng này, bạn cần cài đặt thêm gói. Các bạn thử tính năng này nhé ```bash sudo apt install cockpit-machines ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update RUN apt-get -y install apache2 EXPOSE 80 CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"] # define application configration root@kltv:~# vi docker-compose.yml version: '3' services: db: image: mariadb volumes: - /var/lib/docker/disk01:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: password MYSQL_USER: kienletv MYSQL_PASSWORD: password MYSQL_DATABASE: my_db ports: - "3306:3306" web: build: . ports: - "80:80" volumes: - /var/lib/docker/disk02:/var/www/html ``` ### **Buid và run** ```bash docker-compose up -d ``` ```c Building web Step 1/7 : FROM ubuntu ---> 7e0aa2d69a15 Step 2/7 : MAINTAINER KienLeTV ---> Using cache ---> a2fa80a6247c Step 3/7 : ENV DEBIAN_FRONTEND=noninteractive ---> Running in cc43f41aa43d ..... ``` ```bash docker ps docker-compose ps ``` ```c CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7b0535cfaf92 mariadb "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:3306->3306/tcp root_db_1 73aa26c9ecd3 root_web "/usr/sbin/apachectl…" About a minute ago Up About a minute 0.0.0.0:80->80/tcp root_web_1 ``` ### **Một số lệnh khác** ```bash docker-compose logs docker-compose exec db /bin/bash docker-compose stop docker-compose up -d web docker-compose rm ``` ## **Mời cà phê** Nếu cảm thấy blog mang đến những thông tin hữu ích cho công việc, cuộc sống, đam mê của bạn, đừng ngại ủng hộ một ly cà phê để mình có thêm động lực chia sẻ thêm nhiều kinh nghiệm, kiến thức nhé. Bạn có thể ủng hộ mình qua: ### **Ví MoMo** [![image.png](https://blog.kienletv.com/uploads/images/gallery/2024-03/scaled-1680-/1qtlfuWi59wt3C8i-image.png)](https://blog.kienletv.com/uploads/images/gallery/2024-03/1qtlfuWi59wt3C8i-image.png) [Ví MoMo](https://me.momo.vn/kienletv) ### **Paypal** [Hỗ trợ qua Paypal](https://paypal.me/kienletv?country.x=VN&local.x=en_US) Cám ơn mọi người! # Tạo một SSH key cơ bản ## **Tạo một SSH key** ``` ssh-keygen -t ed25519 -C "Kiên Lê TV" ``` [![image.png](https://blog.kienletv.com/uploads/images/gallery/2024-04/scaled-1680-/WjXTkCOyRfSr1Cug-image.png)](https://blog.kienletv.com/uploads/images/gallery/2024-04/WjXTkCOyRfSr1Cug-image.png) ## **Kiểm tra file được tạo ra** ``` ls -l /root/.ssh ``` [![image.png](https://blog.kienletv.com/uploads/images/gallery/2024-04/scaled-1680-/5azN8NcCHHnVXQiu-image.png)](https://blog.kienletv.com/uploads/images/gallery/2024-04/5azN8NcCHHnVXQiu-image.png) ## **Hướng dẫn sử dụng SSH Key** Sau khi đã tạo xong SSH key ở các bước trên, để sử dụng bạn thực hiện tuần tự các bước sau. ### **Thêm Public key lên Server/VPS** Bạn hãy ssh vào **server/vps** với thông tin passwd root và thực hiện nhập tuần tự các lệnh sau. ``` mkdir ~/.ssh chmod 700 ~/.ssh touch ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys ``` Khi tạo xong file `authorized_keys` bạn hãy mở file này lên với lệnh sau `vi ~/.ssh/authorized_keys` và copy toàn bộ chuổi ký tự public key đã tạo vào nhé. [![image.png](https://blog.kienletv.com/uploads/images/gallery/2024-04/scaled-1680-/fce0385hUYqgldGF-image.png)](https://blog.kienletv.com/uploads/images/gallery/2024-04/fce0385hUYqgldGF-image.png) ### **Sử dụng SSH Key với Linux/MacOS** Với **Linux/MacOS** để sử dụng SSH key bạn mở **Terminal** lên và sử dụng lệnh sau để SSH. ``` ssh -i duong_dan_file_private_key root@ip_may_chu -p nhap_vao_port_ssh ``` ``` Ví dụ: ssh -i .ssh/kienletv root@123.123.123.123 -p 2222 ``` **Trong đó:** - ssh -i: cú pháp thực hiện - .ssh/kienletv: đường dẫn đến fike private key, và ở đây private key của mình tên là quan - root: tên user - @123.123.123.123: IP máy chủ - -p 2222: option và Port ssh, ở đây mình đổi port ssh mặc định là 22 thành 2222 ## **Mời cà phê** Nếu cảm thấy blog mang đến những thông tin hữu ích cho công việc, cuộc sống, đam mê của bạn, đừng ngại ủng hộ một ly cà phê để mình có thêm động lực chia sẻ thêm nhiều kinh nghiệm, kiến thức nhé. Bạn có thể ủng hộ mình qua: ### **Ví MoMo** [![image.png](https://blog.kienletv.com/uploads/images/gallery/2024-03/scaled-1680-/1qtlfuWi59wt3C8i-image.png)](https://blog.kienletv.com/uploads/images/gallery/2024-03/1qtlfuWi59wt3C8i-image.png) [Ví MoMo](https://me.momo.vn/kienletv) ### **Paypal** [Hỗ trợ qua Paypal](https://paypal.me/kienletv?country.x=VN&local.x=en_US) Cám ơn mọi người!