Chiar dacă nu a fost conceput pentru Debian, micuțul Dell Wyse 3040 devine polivalent datorită acestuia, transformându-se cu ajutorul său, dintr-un dispozitiv care inițial doar îți permitea să te conectezi la alt PC, într-un PC ca oricare altul. E drept, unul destul de limitat, însă nu pentru asta mai puțin util.

Dell Wyse 3040 - conexiuni9

Luat la bani mărunți, înțelegi că nu poți avea mari așteptări de la el din cauza SSD-ului și a memoriei RAM, de 8 și respectiv 2GB, ambele sudate pe placa de bază, așadar imposibil de îmbunătățit fără a dispune de aparatura adecvată, dar asta nu înseamnă că nu te poți baza pe el pentru a-ți curăța site-urile de reclame cu AdGuard Home ori Pi-hole, printre multe altele.

În ceea ce mă privește, am nevoie de un server VPN pe care să mă pot baza și cu care să am acces la o serie de servicii disponibile doar într-o rețea anume. Pe lângă asta, de dragul redundanței, mi-ar prinde bine un al doilea blocant de reclame, precum și un instrument de monitorizare a serverului pe care găzduiesc blogul.

Leneș din fire, am ales varianta cea mai simplă: executarea acestora în Docker. În opinia mea, cea mai simplă modalitate de a le implementa, configura, actualiza și elimina cu ușurință atunci când nu vor mai fi necesare.

Resursele disponibile

După partiționarea SSD-ului și instalarea sistemului de operare Debian, acesta arată astfel:

NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
mmcblk0      179:0    0  7.3G  0 disk
├─mmcblk0p1  179:1    0  512M  0 part /boot/efi
├─mmcblk0p2  179:2    0  5.8G  0 part /
└─mmcblk0p3  179:3    0  976M  0 part [SWAP]
mmcblk0boot0 179:256  0    4M  1 disk
mmcblk0boot1 179:512  0    4M  1 disk

Iar dacă sunteți curioși de cât spațiu disponibil a mai rămas pentru altele:

Filesystem      Size  Used Avail Use% Mounted on
udev            978M     0  978M   0% /dev
tmpfs           198M  914k  197M   1% /run
/dev/mmcblk0p2  6.1G  2.1G  3.8G 36% /
tmpfs           986M     0  986M   0% /dev/shm
tmpfs           5.3M     0  5.3M   0% /run/lock
/dev/mmcblk0p1  536M   13M  524M   3% /boot/efi
tmpfs           198M     0  198M   0% /run/user/1000

Aproape jumătate, ceea ce nu e deloc rău, dar nici de memoria RAM disponibilă nu mă pot plânge:

               total        used        free      shared  buff/cache   available
Mem:            1879         356        1359           1         304        1523
Swap:

Cineva mai chibzuit n-ar instala Docker Engine, cu atât mai puțin cu cât inclusiv pe site-ul oficial se recomandă un sistem cu cel puțin 4GB de memorie RAM, însă nu memoria RAM ar trebui să mă îngrijoreze, ci cei 3,8GB de spațiul liber pe SSD. Merită „sacrificați” cei 500MB de care are nevoie Docker? Eu consider că da…

The following additional packages will be installed:
  docker-ce-rootless-extras git git-man iptables liberror-perl libip6tc2 libnetfilter-conntrack3 libnfnetlink0 libslirp0 patch pigz slirp4netns
Suggested packages:
  aufs-tools cgroupfs-mount | cgroup-lite git-daemon-run | git-daemon-sysvinit git-doc git-email git-gui gitk gitweb git-cvs git-mediawiki git-svn
  firewalld ed diffutils-doc
The following NEW packages will be installed:
  containerd.io docker-buildx-plugin docker-ce docker-ce-cli docker-ce-rootless-extras docker-compose-plugin git git-man iptables liberror-perl libip6tc2
  libnetfilter-conntrack3 libnfnetlink0 libslirp0 patch pigz slirp4netns
0 upgraded, 17 newly installed, 0 to remove and 4 not upgraded.
Need to get 133 MB of archives.
After this operation, 493 MB of additional disk space will be used.
Do you want to continue? [Y/n]

Instalate ca atare, aplicațiile ar ocupa mai puțin spațiu pe unitatea de stocare, e drept, însă nu o singură dată am avut de-a face cu conflicte între dependențele fiecăreia, una necesitând o versiune mai nouă al unei biblioteci, alta una mai veche, ceea ce ducea automat la renunțarea la cea mai puțin necesară. Cu containerele Docker sau LXC scăpăm de problema asta, iar cele din primul tip menționat fiind cele mai răspândite la momentul de față. Cu alte cuvinte, Docker merită fără îndoială chiar și 1GB.

Instalare Docker

N-am făcut nimic special în acest scop, ci doar am urmat instrucțiunile oficiale și recomandările post-instalare, în special partea cu înregistrarea utilizatorului curent în grupul celor care pot invoca docker, evitând astfel necesitatea de a recurge la sudo în acest scop.

Actualizăm și adăugăm cheia GPG a depozitului oficial:

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Adăugăm depozitul în lista surselor Apt:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Instalăm Docker și instrumentele necesare utilizării sale:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Toată operația asta durează câteva secunde pe Wyse 3040, dovadă că cele patru nuclee ale procesorului Intel Atom x5-Z8350-ului nu-s acolo doar de formă. Pentru a ne asigura că totul a decurs conform planului, verificăm dacă serviciul Docker e activ:

$ sudo systemctl status docker
[sudo] password for cls:
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; preset: enabled)
     Active: active (running) since Sun 2024-11-17 02:14:58 CET; 2min 54s ago
TriggeredBy: ● docker.socket

Pentru ca treaba să fie bună, adăugăm contul personal la grupul select al utilizatorilor cu acces la docker:

$ sudo usermod -aG docker ${USER}
$ newgrp docker
$ groups
docker cdrom floppy sudo audio dip video plugdev users netdev cls

Cum stăm cu spațiul? Ei bine, n-am pierdut doar 500MB:

$ df -H
Filesystem      Size  Used Avail Use% Mounted on
udev            978M     0  978M   0% /dev
tmpfs           198M  930k  197M   1% /run
/dev/mmcblk0p2  6.1G  2.7G  3.1G  47% /
tmpfs           986M     0  986M   0% /dev/shm
tmpfs           5.3M     0  5.3M   0% /run/lock
/dev/mmcblk0p1  536M   13M  524M   3% /boot/efi
tmpfs           198M     0  198M   0% /run/user/1000

500, 700, ce mai contează atât timp cât dorm liniștit știind că nu voi întâmpina dificultăți pentru a implementa și actualiza un serviciu sau altul?!?

Portainer și AdGuard

Îmi place să țin sub control locul în care containerele își salvează propriile fișiere, creând în acest scop foldere specifice, dedicate fiecărui viitor container pe care-l voi instala.

Singurul pentru care nu fac asta e Portainer, un container Docker a cărui unic scop este acela de a ne ajuta să creăm și gestionăm alte containere prin intermediul unei interfețe grafice. Instalarea acestuia e cât se poate de simplă și constă în doi pași: crearea volumului ce-i va găzdui baza de date:

docker volume create portainer_data

și instalarea propriu-zisă.

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.21.4

Dacă n-au fost probleme, n-ar trebui să fie dacă instalarea Docker s-a realizat conform indicațiilor de pe site-ul oficial, vom vedea asta:

Instalare Portainer în Docker - Dell Wyse 3040

Iar Portainer ar trebui să poată fi accesat la https://adresa_ip_pc:9443:

portainer

După înregistrarea contului de utilizator și configurarea unei parole vom avea acces la interfața Portainer, locul din care vom putea crea și administra containerele Docker.

Înainte de a instala AdGuard Home voi crea directoarele despre care vă vorbeam mai devreme după ce mă voi asigura că mă aflu în directorul utilizatorului:

$ pwd
/home/cls
$ mkdir -p docker/containers/adguard/config
$ mkdir -p docker/containers/adguard/workdir

Pentru crearea containerului urmăm indicațiile de pe docker hub, care adaptate la structura folderelor create de mine devin:

docker run --name adguardhome\
--restart unless-stopped\
-v /home/cls/docker/containers/adguard/workdir:/opt/adguardhome/work\
-v /home/cls/docker/containers/adguard/config:/opt/adguardhome/conf\
-p 53:53/tcp -p 53:53/udp\
-p 67:67/udp -p 68:68/udp\
-p 80:80/tcp -p 443:443/tcp -p 443:443/udp -p 3000:3000/tcp\
-p 853:853/tcp\
-p 784:784/udp -p 853:853/udp -p 8853:8853/udp\
-p 5443:5443/tcp -p 5443:5443/udp\
-d adguard/adguardhome

Fie facem același lucru din Portainer » Stacks » Add stack, lipind în editor următoarele:

version: '3'

services:
  adguardhome:
    image: adguard/adguardhome
    container_name: adguardhome
    restart: unless-stopped
    ports:
      # Expose port 53 on TCP and UDP for DNS queries
      - "53:53/tcp"
      - "53:53/udp"

      # Expose port 67 on UDP for DHCP server
      - "67:67/udp"

      # Expose port 68 on UDP for DHCP client
      # - "68:68/udp"

      # Expose port 80 on TCP for HTTP web interface
      - "80:80/tcp"

      # Expose port 443 on TCP and UDP for HTTPS web interface
      - "443:443/tcp"
      - "443:443/udp"

      # Expose port 3000 on TCP for AdGuard Home's API
      - "3000:3000/tcp"

      # Expose port 853 on TCP for DNS-over-TLS (DoT)
      - "853:853/tcp"

      # Expose port 784 on UDP for DNS-over-QUIC (DoQ)
      - "784:784/udp"

      # Expose port 853 on UDP for DNS-over-DTLS (DoT)
      - "853:853/udp"

      # Expose port 8853 on UDP for DNS-over-TLS (DoT)
      - "8853:8853/udp"

      # Expose port 5443 on TCP and UDP for DNSCrypt
      - "5443:5443/tcp"
      - "5443:5443/udp"
    volumes:  # Mount host directories as volumes inside the container
      - /home/cls/docker/containers/adguard/workdir:/opt/adguardhome/work
      - /home/cls/docker/containers/adguard/config:/opt/adguardhome/conf

Rezultatul va fi același indiferent de metoda de instalare aleasă: accesând http://adresa_ip_pc:3000 ar trebui să fim întâmpinați de asistentul de configurare al AdGuard Home.

AdGuard Home - Asistent configurare

Cum stăm cu spațiul de stocare după instalarea Portainer și AdGuard Home? Destul de bine!

Filesystem      Size  Used Avail Use% Mounted on
udev            978M     0  978M   0% /dev
tmpfs           198M  1.1M  197M   1% /run
/dev/mmcblk0p2  6.1G  3.1G  2.8G  53% /
tmpfs           986M     0  986M   0% /dev/shm
tmpfs           5.3M     0  5.3M   0% /run/lock
/dev/mmcblk0p1  536M   13M  524M   3% /boot/efi
tmpfs           198M     0  198M   0% /run/user/1000

Nici consumul de memorie n-a crescut exagerat de mult:

               total        used        free      shared  buff/cache   available
Mem:            1879         650          62           1        1330        1228
Swap:            975           0         975

Iar asta ar trebui să le confirme celor care aveau îndoieli cu privire la utilitatea Wyse-ului în astfel de scopuri că acesta este o gazdă numai bună pentru AdGuard și alte servicii similare.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.