Linux
  • << DEBIAN >>

  •   Сървър на отделни хостове
  •     DNS Сървър
  •     SQL Сървър
  •     WEB Сървър
  •     Пощенски Сървър
  •   PXE Server
  •   PXE UEFI Server - TFTP
  •   Debian 9
  •     Инсталиране на Debian 9
  •     Първоначални настройки (мрежа, VIM, Кирилизация)
  •     Инсталиране и настройка на SSH
  •     Инсталиране и настройка на DNS
  •     Инсталиране и настройка на NTP
  •     Инсталиране и настройка на Apache
  •     Инсталиране и настройка на MySQL (MariaDB)
  •     Инсталиране и настройка на PHPMyAdmin
  •     Инсталиране и настройка на собствен облак
  •     Инсталиране и настройка на SAMBA
  •     Инсталиране и настройка на FTP сървър
  •     Инсталиране и настройка на OSCAM
  •     Инсталиране и настройка на Mail server
  •       Първоначално конфигуриране на базата данни
  •       Инсталиране и конфигуриране на PostFix
  •       Инсталиране и конфигуриране на Dovecot
  •       PostFix дефинира Dovecot да удостоверява
  •       RoundCube
  •       Тестване доставката на поща
  •       Създаване на TLS криптиран ключ и сертификат
  •       WEB администриране
  •       Антиспам със SpamAssassin
  •       Антиспам с RSpmad
  •   Debian 11
  •     Как зарежда Linux
  •     Разпределение на диска при BIOS и UEFI
  •     Debian 11 на BIOS върху LVM и RAID
  •     Инсталиране на Debian 11 на BIOS и ZFS
  •     Инсталиране на Debian 11 на BIOS и ZFS-1
  •     Инсталиране на Debian 11 на UEFI и ZFS
  •     ZFS Замяна на развален огледален диск
  •     Ремонт на GRUB и INITRAMFS
  •   Debian 12
  •     Първоначални настройки
  •     DNS Сървър
  •     Добавяне на втори диск
  •     Файлов сървър + WEBMIN
  •     SAMBA
  •     Инсталиране и настройка на Apache
  •     Инсталиране и настройка на Nginx
  •     MySQL и PHPMyAdmin
  •     Елементарен MAIL сървър
  •       Подобрение SSL/TLS, Maildir, LMTP
  •       Подобрение ВИРТУАЛИЗАЦИЯ без MySQL
  •       Подобрение ВИРТУАЛИЗАЦИЯ и MySQL
  •       Подобрение Антиспам - SpamAssasin
  •       Подобрение Антиспам - RSpamd
  •       Защита - SPF, DKIM и DMARK
  •       Подобрение Антивирус
  •     Пълноценен MAIL сървър
  •     Пощенски сървър с iRedMail и PHPMyAdmin
  •       DKIM, SPF и DMARK
  •     MAIL сървър за вътрешна мрежа
  •     NextCloud
  •     Сървър за отдалечен достъп - RustDESK
  • << UBUNTU >>
  •   Ubuntu SERVER 22.04
  •     Инсталиране на Ubuntu 22.04 Server
  •     Първоначални настройки на Ubuntu 22.04 Server
  •     DNS в Ubuntu 22.04 Server
  •     MySQL Apache PHPMyAdmin
  •     Пощенски сървър
  •       Пощенски сървър в опростен вариант
  •       PostFix, Dovecot по-подробно
  •   Ubuntu mini
  • << RAID >>
  •     BIOS RAID1+MSDOS
  •     BIOS RAID1+MSDOS+LVM
  •     UEFI RAID1
  • << BTRFS >>
  •     BTRFS - създаване монтиране fstab размер
  •     BTRFS - RAID
  •     BTRFS - subvolume и snapshot
  • << КОНТЕЙНЕРИ >>
  •     Инсталиране на LXC/LXD
  •     Образи (image) в LXC/LXD
  •     Контейнери в LXC/LXD
  •     Команди в LXC/LXD
  • << ОТСТРАНЯВАНЕ НА ГРЕШКИ >>
  •     SWAP
  •     InitRAMFs
  • Инсталация на LXC и LXD

    LXC (Linux Containers) е лек контейнер за една уеб услуга или сайт, включително всички услуги, които са необходими за функционирането му. Представлява затворена среда за работа ползваща ядрото на самата ОС. Има набор от прости инструменти за работа. LXD (Linux Daemon) това е разширение, което се използва главно за управление на LXC. Използва се за предоставяне на нови атрибути и възможности на LXC, така че LXC да може да се използва по-ефективно. Комуникацията между LXD и LXC се осъществява с помощта на вградени библиотеки, една от тях е liblxc. LXCFS - малка файлова архитектура в потребителската среда, която оптимизира работата на Linux ядрото. В какви случаи е удобно да използвате LXC ("контейнери"): ● Наследство: вече имате уеб услуга/сайт, хостван на специален сървър и трябва да го пакетирате под формата на контейнер, който може да бъде предоставен на разработчиците или прехвърлен на друг сървър (резервен или етап); ● Обичате да работите в среда, в която всички услуги са събрани в един контейнер; ● Нуждаем се от изолация на сървъра, така че всяка уеб услуга да е в свой собствен контейнер, но без да губи производителност, какъвто е случаят с виртуалните машини; ● Ако знаете как да конфигурирате основни услуги в Linux, тогава можете да създадете LXC контейнер за вашия проект. LXC е много подобен на обикновена виртуална машина. Благодарение на LXD можем да създаваме не само контейнери но и виртуални машини заедно с QEMU. Има още и LXFS. Това е особена файлова система осигуряващ по-голяма независимост на контейнера.

    Преди самата инсталация

    Дълго се колебаех тази секция дали да е първа но накрая реших, че това е много важно и първостепенно. Ако започнете инсталацията преди да сте направили тези нща ще много трудно да се поправят. Когато тръгнете да инициализирате lxd за да можете да създавате пулове с файлови системи различни от dir, ще трябва да инсталирате Debian примерно на btrfs за да можете да ползвате пулове във вид btrfs. Ако пък ще ползвате LVM то също ще трябва да инсталирате Debian така. Отделна тема е ползването на zfs. Debian има проблеми с лицензионните споразумения и zfs го няма в стандартните репозитори за да го инсталирате. Та идеята е, ако ще се ползва примерно btrfs то Debian трябва да е инсталиран на btrfs файлова система, а не на ext4 както се инсталира стандартно. Ползването на zfs не изисква да сте инсталирали системата на zfs, просто допълнително се снсталира. Ако ползвате snap пакети то всичките тези проблеми ги нямате. Проблема е, че освен дмона качва и куп други неща които товарят системата. Освен това ще трябва да оправяте и пътищата до изпълнимите файлове. По-надолу ще покажа и двата варианта, но лично аз предпочитам първия. Все пак си имам някаква представа преди да почна какво искам да постигна в крайна сметка. И знаейки какво искам да направя предварително ще се подготвя.

    Инсталация върху Debian от репозитори

    За начало да проверим версията на Linux с която работим.

    uname -a Linux lxc-lxd 6.1.0-21-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.90-1 (2024-05-03) x86_64 GNU/Linux cat /etc/*release PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" VERSION_ID="12" VERSION="12 (bookworm)" VERSION_CODENAME=bookworm ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/"

    И самата инсталация.

    apt update -y apt upgrade -y apt install lxd -y

    Самата инсталация протича сравнително бързо. Има обаче един момент. Ако инсталирате върху Debian s ext4, системата може да работи само с файлова система dir. По-добрия вариант е ползването на btrfs, zfs, lvm даже ceph когато ползвате клъстери. Няма да обяснявам кое какво представлява, надявам се щом четете това упътване значи сте запознати. Ако ще се ползва някоя от горе посочените ще трябва да инсталирате допълнителни пакети. Казахме, ако пуловете ще ползват btrfs то трябва Debian 12 да се инсталира върху btrfs. Ако ще се ползва LVM то трябва да се инсталира върху LVM структура. Ако ще се ползва ZFS то тогава той допълнително трябва да се инсталира zfs.

    codename=$(lsb_release -cs) echo "deb http://deb.debian.org/debian $codename-backports main contrib non-free" >> /etc/apt/sources.list cat /etc/apt/sources.list apt update -y apt install linux-headers-amd64 -y apt install -t bullseye-backports zfsutils-linux

    Добавихме non-free репозитор и от него инсталирахме zfs. apt install -t bullseye-backports zfsutils-linux - инталираме zfsutils-linux от bullseye-backports. Понякога не може да се инсталира от bullseye-backports, затова ползваме: sudo apt install zfsutils-linux -y ПРЕПОРЪКА. Инсталирайте Debian на btrfs и когато дефинирате на по-късен етап пула ползвайте btrfs. Той има почти всички възможности на zfs и не "яде" толкова много ресурс. Особено памет. Стремете се когато правите сървъри винаги да сте оптимални. Всичко излишно инсталирано допълнително товари системата.

    Инсталация върху Debian от snap пакети

    ВНИМАНИЕ !!! Инсталирането на SNAP товари с много допълнителни програми системата. Обърнете внимание с какъв ресурс разполагате.

    Инсталация на SNAPD

    sudo apt update -y apt upgrade -y apt install snapd -y snap install core

    Snap core е основната система за snap, наред с други неща, тя съдържа същия snapd демон, който сте инсталирали по-рано . Тази команда ще актуализира hello snap, ако има налични актуализации за него. Това е много удобно - актуализирате не само приложенията, но и всички библиотеки, необходими за работата му..

    Инсталация на LXD

    snap install lxd export PATH=$PATH:/snap/bin

    Инициализация на LXD

    По време на първия старт трябва да инициализираме самия процес на LXD

    lxd init Would you like to use LXD clustering? (yes/no) [default=no]: no ### Ще ползваме ли няколко услуги LXD в клъстер. За сега не. Do you want to configure a new storage pool? (yes/no) [default=yes]: yes ### Ще ползваме ли пул за данни (ДА) Name of the new storage pool [default=default]: mypool ### Име на пула. Даваме му име (mypool) Would you like to connect to a MAAS server? (yes/no) [default=no]: no ### Metal As A Server - софтуер, който кара сървъра да изглежда и действа като виртуална машина. Казваме, че няма да ползваме. Would you like to create a new local network bridge? (yes/no) [default=yes]: ### Ще създаваме ли бридж с мрежовия интерфейс. По подразбиране е да, просто натискаме Enter. What should the new bridge be called? [default=lxdbr0]: ### Даваме име на бридж интерфейса. Името по подразбиране ни устройва, просто натискаме Enter. What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: ### Ще ползваме динамично IPv4. Просто натискаме Enter. What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: ### Ще ползваме динамично IPv6. Просто натискаме Enter. Would you like the LXD server to be available over the network? (yes/no) [default=no]: yes ### Искаме ли нашите контейнери да са достъпни от външни мрежи. В случая искаме. Address to bind LXD to (not including port) [default=all]: ### Адрес на който да се прилепи контейнера. Просто натискаме Enter. Port to bind LXD to [default=8443]: ### Порт по подразбиране на контейнера. Просто натискаме Enter. Trust password for new clients: pass ### Парола за достъп до контейнера на нови клиенти. В случая е "pass". Again: ### Повтаряме паролата Would you like stale cached images to be updated automatically? (yes/no) [default=yes]: ### Автоматично да се обновява образа на контейнера. Съгласяваме се и натискаме Enter. Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: yes ### Предлага да погледнем конфигурацията която създадохме във формат YAML. Съгласяваме се с "yes". config: core.https_address: '[::]:8443' core.trust_password: pass networks: - config: ipv4.address: auto ipv6.address: auto description: "" name: lxdbr0 type: "" project: default storage_pools: - config: {} description: "" name: mypool driver: dir profiles: - config: {} description: "" devices: eth0: name: eth0 network: lxdbr0 type: nic root: path: / pool: mypool type: disk name: default projects: [] cluster: null ### Това е пълната конфигурация.

    По конфигурационния файл няколко неща. driver: dir - формат за съхранение на контейнера. В случая е dir. Това означава, че снапшота който ще направите на контейнера ще заема същото място колкото е контейнера. По-добрия вариант е ползването на btrfs, zfs, lvm, които динамично могат да променят размера си. Даже да ползвате ceph (разпределена файлова система, особено важна за клъстеризация). Всичко това на по-късен етап можете да променяте. Проверяваме дали демона е стартиран.

    service lxd status lxd.service - LXD Container Hypervisor Loaded: loaded (/lib/systemd/system/lxd.service; indirect; preset: enabled) Active: active (running) since Thu 2024-06-20 12:06:29 EDT; 43min ago TriggeredBy: lxd.socket Docs: man:lxd(1) Process: 1702 ExecStartPre=/usr/libexec/lxd/lxd-apparmor-load (code=exited, status=0/SUCCESS) Process: 1711 ExecStartPost=/usr/bin/lxd waitready --timeout=600 (code=exited, status=0/SUCCESS) Main PID: 1710 (lxd) Tasks: 18 Memory: 52.0M CPU: 965ms CGroup: /system.slice/lxd.service ├─1710 /usr/bin/lxd --group lxd --logfile=/var/log/lxd/lxd.log └─1801 dnsmasq --keep-in-foreground --strict-order --bind-interfaces --except-interface=lo --pid-file= --no-ping --interface=lxdbr0> Jun 20 12:36:51 lxc-lxd dnsmasq-dhcp[1801]: DHCPv4-derived IPv6 names on fd42:f020:5d49:8e26::, constructed for lxdbr0 Jun 20 12:36:51 lxc-lxd dnsmasq-dhcp[1801]: router advertisement on fd42:f020:5d49:8e26::, constructed for lxdbr0 Jun 20 12:36:51 lxc-lxd dnsmasq-dhcp[1801]: IPv6 router advertisement enabled Jun 20 12:36:51 lxc-lxd dnsmasq-dhcp[1801]: DHCP, sockets bound exclusively to interface lxdbr0 Jun 20 12:36:51 lxc-lxd dnsmasq[1801]: using only locally-known addresses for lxd Jun 20 12:36:51 lxc-lxd dnsmasq[1801]: reading /etc/resolv.conf Jun 20 12:36:51 lxc-lxd dnsmasq[1801]: using nameserver 8.8.8.8#53 Jun 20 12:36:51 lxc-lxd dnsmasq[1801]: using nameserver 1.1.1.1#53 Jun 20 12:36:51 lxc-lxd dnsmasq[1801]: using only locally-known addresses for lxd Jun 20 12:36:51 lxc-lxd dnsmasq[1801]: read /etc/hosts - 7 names