Свой сервер дома 2026
Приветствую вас друзья! Ровно 4 года назад, я перенес часть своих проектов с сервера арендованного, на тот момент, у немецкого провайдера Hezler, на свой собственный сервер, размещенный у себя дома(в офисе), о чем я рассказывал в статье: Установка, настройка и размещение сервера дома или в офисе. За эти годы, с ним произошло много интересных событий(с точки зрения полученного опыта), это: выход из строя ssd диска в Raid-1 массиве, выход из строя планки оперативной памяти, отключение и перебои электричества(спасал ИБП), обрыв интернет кабеля(за пределами помещения), DDOS с перегрузкой пропускной способности сети, отключение интернета за несвоевременную оплату и многое другое. Самый главный вопрос — стоило ли оно того?
Однозначный ответ — Да! Еще как стоило. Во первых, как бы это ни было странным, но практически со всем этим списком проблем я сталкивался и при аренде серверов у именитых хостинг-провайдеров, более того — по моей личной статистике, количество проблем у них было, даже, в несколько раз больше, а часть из них были фатальные, например: выход из строя NVME накопителя (на котором стояла система, при условии что Raid-1 не предусмотрено)! К счастью я делал своевременные бекапы. Так, что собственный сервер(на самом деле у меня их несколько, точнее 10) на деле показал даже лучший Uptime(по субъективным ощущениям, т.к. точные сравнительные замеры я конечно же не делал). Также такое решение дало множество плюсов: безграничные возможности апгрейда, изменение конфигурации(диски, сетевые карты, я даже ставил на него InfiniBand для локальной сети, объединение нескольких серверов в кластер и т.д.), прямой доступ в любое время, собственный IPMI(на серверах Supermicro), тесты, эксперименты и многое другое. Кстати, за эти годы я сэкономил порядка полумиллиона рублей на аренде(и это только на одном сервере, если считать по всей инфраструктуре, то это в 7-10 раз больше). В этом же посте, я собрал список заметок по настройке «нового»(на частично старом железе) сервера, уже на базе Ubuntu 24.04(26.04 пока не ставлю из-за менее развитого покрытия софтом) и панели управление HestiaCP. Как и прошлая моя статья, это список заметок для себя, к чему-то я буду возвращаться(подсматривать тут, чтобы не спрашивать у ИИ каждый раз, не читать его портянки и тем самым экономить пару лишних секунд времени), что-то буду дополнять. Может и вам он пригодится.
Содержание
1. Предустановка
2. Железо
3. Операционная система
4. Создание Raid 1
5. Проверка S.M.A.R.T
6. Расширить логический том
7. Монтируем диски
8. Базовые пакеты
9. Сеть
10. Fail2ban настроить игнор-лист для внутренних IP
11. Панель управления HestiaCP
12. Восстановление из бекапа HestiaCP
13. Доступ к PhpMyadmin по IP
14. Настройка Mytop
15. Включаем PHP
16. Пути к PHP
17. Индивидуальный конфиг PHP для пользователя
18. Устанавливаем Memcache и Memcached
19. Устанавливаем Redis
20. Устанавливаем Ioncube Loader
21. Настройка MariaDB
22. Меняем параметры подключения к БД
23. Абсолютные пути тут
24. Перенос задач в Cron
25. Установка PIP для Python 3
26. Установка Ngxtop
27. Разграничение доступа
28. Разрешаем доступ к директориям, названия с точки, в Nginx
29. Кастомный конфиг Nginx для некоторых сайтов
30. Редирект со старого сервера через Nginx
31. Перенос символических ссылок
32. Проброс NAT для HestiaCP
33. Настройка хостов на роутере
34. Настройка Apache2
35. Symlink на /backup
36. Установка драйверов для ATOL
37. Температура CPU
1. Предустановка
То, что у меня уже есть, о чем я писал ранее, что не изменилось и что я пропускаю в этой статье:
- Высокоскоростной интернет
- Cтатический IP адрес
- Роутеры, свичи и их настройка
- Сетевые кабеля, почкорды
- Настройка DNS
- Серверная стойка
- Источники бесперебойного питания
2. Железо
MSI H270-A Pro + i7 7700k + 32gb ram
1 NVME — 256gb / Размещение загрузчика Grub
2 SSD — 256gb / Программный Raid-1 с размещением копии загрузчика Grub на оба SSD
1 NVME — 2tb / Быстрое хранилище данных
1 HDD — 2tb / Периодический (2 раза в неделю) бекап
1 hdd — 4tb / Периодический (1 раз в неделю) бекап
Корпус Lian Li Lancool 216 (он реально крутой).
3. Операционная система
ubuntu 24.04
+ программный raid
4. Создание Raid 1
Перед тем как приступить, отключите все лишние жесткие диски! В момент установки Ubuntu, на шаге выбора жесткого диска, выбираем пункт Custom storage layout, далее удаляем с нужных дисков все разделы и создаем программный Raid-массив выбрав пункт Create Software RAID (md) — после добавив оба диска в массив. Далее выбираем пункт Format, указываем файловую систему по умолчанию ext4 и точку монтирования /. После, делаем созданный Raid-1 загрузочным выбрав пункт Use as Boot Device. Важное замечание — иногда пункт Use as Boot Device может быть недоступен, и для размещения Загрузичка может потребовать дополнительный диск который будет использоваться для его записи, в моем случае это NVMe диск. Чтобы система загружалась с RAID даже при отказе NVMe диска, установите загрузчик также и на оба SSD вручную после установки:
sudo grub-install /dev/sda sudo grub-install /dev/sdb sudo update-grub |
Нюанс, иногда Raid может не создаваться, а Ubuntu падать с ошибкой в момент применения настроек, это связано с тем, что на дисках могут оставаться старые разделы и данные, поэтому их нужно удалить, а все данные почистить утилитой dd. Диски должны быть полностью чистыми. Делаем это с помощью следующих команд (как альтернативу можно загрузиться с другой live-системы, например GParted Live, удалить все разделы, затем продолжить установку):
sudo swapoff -a sudo vgchange -a n sudo mdadm --stop /dev/md126 2>/dev/null sudo mdadm --stop /dev/md127 2>/dev/null sudo mdadm --zero-superblock /dev/sda sudo mdadm --zero-superblock /dev/sdb sudo wipefs -a /dev/sda sudo wipefs -a /dev/sdb sudo dd if=/dev/zero of=/dev/sda bs=1M count=10 sudo dd if=/dev/zero of=/dev/sdb bs=1M count=10 |
5. Проверка S.M.A.R.T
SSD/HDD
1. Установите пакет (если не установлен):
sudo apt update && sudo apt install smartmontools -y
2. Посмотрите S.M.A.R.T. информацию для конкретного диска:
sudo smartctl -a /dev/sda
NVME
1. Установите nvme-cli (если ещё не установлен):
sudo apt update && sudo apt install nvme-cli -y |
2. Посмотрите общую информацию о диске:
sudo nvme list |
3. Посмотрите S.M.A.R.T. логи (основная информация):
sudo nvme smart-log /dev/nvme0n1 |
6. Расширить логический том
После установки если будет занят не весь диск
# 1. Проверьте свободное место в группе томов sudo vgdisplay # 2. Расширить логический том до 100% свободного места sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv # 3. Расширить файловую систему (ext4) sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv # 4. Проверить результат df -h |
7. Монтируем диски
Создайте точки монтирования:
sudo mkdir -p /home_ssd445gb /home_hdd2tb /home_hdd4tb /home_nvme2tb /home_nvme256gb |
Смонтируйте диски временно:
Добавьте диски в /etc/fstab для автоматического монтирования.
Смотрим все UUID дисков:
sudo blkid |
Прописываем точки монтирования в /etc/fstab:
UUID=ваш-uuid-для-ssd /home_ssd445gb ext4 defaults 0 2 UUID=ваш-uuid-для-hdd2tb /home_hdd2tb ext4 defaults 0 2 UUID=ваш-uuid-для-hdd4tb /home_hdd4tb ext4 defaults 0 2 UUID=ваш-uuid-для-nvme2tb /home ext4 defaults 0 2 UUID=ваш-uuid-для-nvme256gb /home_nvme256gb ext4 defaults 0 2 |
8. Базовые пакеты
sudo apt update |
# Установка htop sudo apt-get install htop |
# Установка ping sudo apt install iputils-ping -y # Установка traceroute sudo apt install traceroute -y |
# Установка netstat sudo apt install net-tools -y |
# Установка parted sudo apt install parted -y |
9. Сеть
Отключаем IPv6 глобально:
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1 |
Чтобы сохранить настройки после перезагрузки:
echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf echo "net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf sudo sysctl -p |
По жалению устанавливаем AmneziaWS
sudo apt update sudo apt install -y software-properties-common python3-launchpadlib gnupg2 linux-headers-$(uname -r) sudo add-apt-repository ppa:amnezia/ppa sudo apt install -y amneziawg |
конфиг размещаем тут: /etc/amneziawg/cln109ger.conf (подготавливает конфиг — удаляя из него все пустые значения)
sudo awg-quick strict cln109ger// проверка (cln109ger- название конфига) sudo awg-quick up cln109ger sudo awg show |
Проверить свой IP:
curl ipinfo.io/ip |
10. Панель управления
HestiaCP
wget https://raw.githubusercontent.com/hestiacp/hestiacp/release/install/hst-install.sh sudo bash hst-install.sh |
Если в ходе установки возникнут проблемы, можно переустановить панель:
sudo apt install hestia --reinstall |
11. Восстановление из бекапа HestiaCP
Если переносим пользователей с другого сервера из HesatiaCP, скачиваем архив бекапа, перемещаем в директорию /backup и выполняем команду (где user — имя пользователя):
v-restore-user user user.2026-07-31_11-45-07.tar |
12. Fail2ban настроить игнор-лист для внутренних IP
В /etc/fail2ban/jail.local добавьте
[DEFAULT] ignoreip = 127.0.0.1/8 ::1 10.0.0.0/8 192.168.0.0/16 111.222.333.444 |
Перезапустите fail2ban:
sudo systemctl restart fail2ban |
13. Доступ к PhpMyadmin по IP
http://ip/phpmyadmin/
Для Apache2
nano /etc/apache2/conf.d/ip.conf
# Add the following code before both closing tags IncludeOptional /etc/apache2/conf.d/*.inc |
# Restart apache2
systemctl restart apache2 |
# You can also add the following in /etc/apache2.conf instead IncludeOptional /etc/apache2/conf.d/*.inc |
14. Настройка Mytop
Создаем файл конфигурации в рабочей директории пользователя:
nano ~/.mytop |
Содежимое:
user=root pass=ваш_пароль_базы_данных host=localhost port=3306 delay=5 |
Пароль root от Mysql можно найти тут:
sudo cat /usr/local/hestia/conf/mysql.conf |
15. Включаем PHP
Прописываем в конфигурации (для CLI и FPM версий)
short_open_tag=On |
/etc/php/8.3/fpm/php.ini
/etc/php/8.5/fpm/php.ini
/etc/php/7.3/fpm/php.ini
/etc/php/7.4/fpm/php.ini
/etc/php/5.6/fpm/php.ini
Также включаем нужные расширения PHP:
extension=curl extension=ftp extension=fileinfo extension=gd extension=gettext extension=imap extension=mbstring extension=exif ; Must be after mbstring as it depends on it extension=mysql extension=mysqli extension=openssl extension=pdo_mysql extension=sockets extension=zip |
Настройки:
memory_limit = 256M |
Остальное по умолчанию — предложенное HestiaCP.
16. Пути к PHP
php7.4 или /usr/bin/php8.2 или /usr/bin/php7.4
17. Индивидуальный конфиг PHP для пользователя
Для некоторых пользователей нужно создать индивидуальную конфигурацию PHP, например настроить значение open_basedir. Для этого:
Шаг 1. Создание шаблона
Создайте файл шаблона в каталоге /usr/local/hestia/data/templates/web/php-fpm/ .
Следуйте строгому формату имени: ВАШЕ_ИМЯ-PHP-X_Y.tpl, где X_Y — версия PHP (например, 7_4 или 8_1) .
Замените ВАШЕ_ИМЯ на что-то осмысленное, например PHP-8_1-OpenbaseDir_User.tpl.
Скопируйте в него содержимое стандартного шаблона. Обычно он находится в том же каталоге, например, default-PHP-8_1.tpl
Внесите нужные изменения в конфигурацию.
Шаг 2. Применение шаблона
В панели HestiaCP перейдите в раздел WEB -> выберите нужный домен.
Откройте его настройки (кнопка «Edit»).
В выпадающем списке «Backend Template» выберите только что созданный шаблон (например, my-PHP-8_1) .
Нажмите «Save». После этого PHP-FPM будет перезапущен с вашими настройками.
Мои конфиги для PHP 5.6 и 74:
/usr/local/hestia/data/templates/web/php-fpm/PHP-5_6-OpenbaseDir_User.tpl
/usr/local/hestia/data/templates/web/php-fpm/PHP-7_4-OpenbaseDir_User.tpl
[%domain%] php_admin_value[open_basedir] = /home/%user%:/home/%user%/.composer:/home/%user%/web/%domain%/public_html:/home/%user%/web/%domain%/private:/home/%user%/web/%domain%/public_shtml:/home/%user%/tmp:/tmp:/var/www/html:/bin:/usr/bin:/usr/local/bin:/usr/share:/opt |
Чтобы изменения вступили в силу после повторной правки конфига, нужно применить шаблон(Шаг 2), но перед этим переключить на другой шаблон(Сохранив), а затем выбрав снова этот.
18. Устанавливаем Memcache и Memcached
Для старой версии PHP 5.6
sudo add-apt-repository ppa:ondrej/php sudo apt update sudo apt install memcached libmemcached-tools -y sudo apt install php5.6-memcached -y sudo ln -s /etc/php/5.6/mods-available/memcached.ini /etc/php/5.6/fpm/conf.d/20-memcached.ini sudo ln -s /etc/php/5.6/mods-available/memcached.ini /etc/php/5.6/cli/conf.d/20-memcached.ini sudo systemctl restart apache2 sudo systemctl restart php5.6-fpm |
Для версии PHP 7.4 >
sudo apt install php7.4-memcached -y sudo ln -s /etc/php/7.4/mods-available/memcached.ini /etc/php/7.4/fpm/conf.d/20-memcached.ini sudo ln -s /etc/php/7.4/mods-available/memcached.ini /etc/php/7.4/cli/conf.d/20-memcached.ini sudo systemctl restart apache2 sudo systemctl restart php7.4-fpm |
Увеличивает доступную память для mamacached, для этого в файле конфигурации /etc/memcached.conf, устанавливаем параметр:
-m 10240 |
То есть выделяем 10 гигабайта ОЗУ.
Также отключаем IPv6, заменив
-l 127.0.0.1,::1 |
на
-l 127.0.0.1 |
Статистика
sudo apt install telnet -y telnet localhost 11211 stats |
- bytes: Текущий объем памяти (в байтах), который сервер фактически использует для хранения данных.
- limit_maxbytes: Максимальный объем памяти (в байтах), который сервер может использовать для хранения данных согласно настройке
Чтобы завершить сессию telnet, введите quit.
19. Устанавливаем Redis
sudo apt update sudo apt install redis-server -y |
Проверка:
sudo systemctl status redis-server |
20. Устанавливаем Ioncube Loader
Для установки возможно придется использовать другой IP
wget https://raw.githubusercontent.com/jaapmarcus/ioncube-hestia-installer/main/install_ioncube.sh chmod +x install_ioncube.sh ./install_ioncube.sh |
Скрипт скачает актуальные загрузчики, скопирует их в нужные директории для каждой версии PHP и создаст конфигурационные файлы 00-ioncube-loader.ini в папках /etc/php/*/fpm/conf.d/ и /etc/php/*/cli/conf.d/. В конце он автоматически перезапустит все PHP-FPM службы.
Обновление: Скрипт устанавливает последнюю версию IonCube (например, v15.5.0), но для ее обновления в будущем потребуется запустить скрипт заново
21. Настройка MariaDB
По умолчанию установлен строгий режим работы MySQL, это может негативно сказываться на работе старый PHP скриптов, где запросы SQL написаны в упрощенной форме, для того, чтобы они работали, установим лояльный режим работы, добавив в файл конфигурации(/etc/mysql/mariadb.conf.d/50-server.cnf или в настройках HestiaCP) строку:
sql_mode= |
Чтобы MariaDb слушала все IP, меняем bind-address на:
bind-address = 0.0.0.0 |
Перезагружаем:
sudo systemctl restart mariadb |
Открываем порт(для разрешения внешних подключений) в iptables:
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT |
Чтобы ваше правило в iptables сохранялось после перезагрузки сервера, нужно установить пакет iptables-persistent и сохранить текущие правила.
sudo apt install iptables-persistent -y sudo netfilter-persistent save |
Пути, куда будут сохранены правила:
/usr/share/netfilter-persistent/plugins.d/15-ip4tables
/usr/share/netfilter-persistent/plugins.d/25-ip6tables
22. Меняем параметры подключения к БД
Если в ходе переезда на новый сервер, были изменены параметры подключения к БД(логин, пароль, сервер и порт), их также стоит изменить во всех файлах перенесенного(CMS, CRM системы, боты и прочие скрипты) конфигурации ПО, которое работает с БД. Список моих скриптов, где нужно изменить параметры доступа:
23. Абсолютные пути тут
В некоторых скриптах прописаны абсолютные пути, их также надо поменять с учетом изменений путей на новом сервере, список скриптов, где нужно внести изменения:
24. Перенос задач в Cron
Перенос или настройка задач в планировщике Cron. У меня планировщик содержит множество задач по выполнению как локальных скриптов, так и вызову внешних URL. Ниже список всех задач, чтобы не забыть.
25. Установка PIP для Python 3
Установите Python и pip для Python 3 (рекомендуется):
sudo apt update sudo apt install python3 python3-pip -y |
Проверьте установку:
python3 -V # Увидите версию Python 3 pip3 -V # Увидите версию pip3 |
26. Установка Ngtop
Включаем Access Log для Nginx, для этого в файле конфигурации /etc/nginx/nginx.conf в секции http.
Заменяем:
access_log off; |
На:
access_log /var/log/nginx/access.log; |
И в формат логов добавляем домен ($host):
log_format main '$remote_addr - $host [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"'; |
Перезапускаем Nginx:
systemctl restart nginx |
Установка ngxtop:
sudo pip3 install ngxtop --break-system-packages |
запуск:
sudo ngxtop |
27. Разграничение доступа
Каждый сайт под своим аккаунтом.
28. Разрешаем доступ к директориям, названия с точки, в Nginx
В конфигурации домена, например: /etc/nginx/conf.d/domains/example.com.conf, ищем запрет на доступ к директориям начинающимся с точки и комментируем его:
# Глобальный запрет на все остальные скрытые папки и файлы
location ~ /\. {
deny all; return 404;
} |
Ванимания! Чтобы настройки несбивались после внесения изменений в конфигурацию домена в HeastiCP (которая перезаписывает конфиг nGinx), нужно создать собственный шаблон Nginx. Вы буквально берете за основу существующий шаблон, удаляете из него ненужный блок кода и назначаете этот измененный шаблон вашему домену:
/usr/local/hestia/data/templates/web/nginx/default.tpl
/usr/local/hestia/data/templates/web/nginx/default.stpl
создаете на их основе:
/usr/local/hestia/data/templates/web/nginx/allowdot.tpl
/usr/local/hestia/data/templates/web/nginx/allowdot.stpl
Примените шаблон — зайдите в панель управления, откройте настройки вашего домена (WEB -> ваш домен -> Edit) и в выпадающем списке «Proxy Template» выберите ваш новый шаблон allowdot, сохраните.
29. Кастомный конфиг Nginx для некоторых сайтов
Некоторые сайты требуют уникальной настройки конфигурации Nginx. Проблема в том, что файлы конфигурации Nginx в HestiaCP пересоздаются каждый раз, когда вы меняете настройки домена через панель или перестраиваете его . Чтобы ваши правки не терялись, нужно использовать механизм «пользовательских файлов включения» (include files). В пользовательском include-файле нельзя использовать директиву server. Она уже определена в основном конфиге домена. Включаемые файлы предназначены только для директив внутри блоков location или server. Ниже пример конфигурации для одного моего домена:
30. Редирект со старого сервера через Nginx
Важно! Убираем заголовок :path, т.к. HTTP/1.1 не позволяет использовать двоеточие в имени заголовка (можно получить ошибку 400).
server {
listen 10.0.0.107:80;
server_name kuxaro4ka.ru www.kuxaro4ka.ru;
location / {
proxy_pass http://10.0.0.109$request_uri;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header :path $request_uri;
proxy_pass_header Set-Cookie;
}
}
server {
listen 10.0.0.107:443;
server_name kuxaro4ka.ru www.kuxaro4ka.ru;
ssl_certificate /etc/letsencrypt/live/example.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.ru/privkey.pem;
# Дополнительные настройки SSL (опционально)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass $scheme://10.0.0.109$request_uri;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header :path $request_uri;
proxy_pass_header Set-Cookie;
}
} |
31. Перенос символических ссылок
/home/marup/sites -> /home4tb/_users/marup/sites/Documents
/home/hairloun/Document -> /home4tb/_users/hairloun/Document
32. Проброс NAT для HestiaCP
Если сервер находится за роутером, то пробрасываем порт 8083 для доступа к панели HestiaCP и интнернет.
33. Настройка хостов на роутере
В разделе Настрока соединений -> LAN -> Настроить хосты (список доменов и привязанных у ним IP адресов), для rjhhtrnyjuj Resolving внутри локальной сети.
34. Настройка Apache2
# Включить модули sudo a2enmod proxy sudo a2enmod proxy_http sudo a2enmod proxy_connect # Проверить загрузку apache2ctl -M | grep proxy # Должны быть: # proxy_module (shared) # proxy_http_module (shared) # proxy_connect_module (shared) |
35. Symlink на /backup
Чтобы создать символическую ссылку /backup, указывающую на /home_hdd4tb/backup, используйте команду ln -s.
sudo ln -s /home_hdd4tb/backup /backup |
Если вы хотите, чтобы /backup была отдельной точкой монтирования, можно смонтировать диск или папку напрямую:
sudo mount --bind /home_hdd4tb/backup /backup |
36. Установка драйверов для ATOL
Подробно описано в статье Установка драйвера АТОЛ-30ф на Ubuntu 24.04.
37. Температура CPU
Установите пакеты sensors :
sudo apt update && sudo apt install lm-sensors -y |
Чтобы отображать температуру CPU в реальном времени с помощью sensors, выполните:
sudo sensors-detect |
Похожие записи
Оставить комментарий
Full Stack
Senior, Architect
предложить оффер
- Главная (новая)
- jQuery: как получить значение атрибута?
- PHP работа с изображением, класс SimpleImage
- PHP date() — вывод русского месяца
- Комментарии на PHP, Ajax, mySQL
- Nginx редирект на другой сервис с сохранением URL спросил (а) Сергей
- Исполнитель пропал, почему такое случается и понять с кем работать? спросил (а) Артем
- Можно ли WordPress считать универсальным движком? спросил (а) Андрей
- Что такое самописный скрипт или CMS? спросил (а) Антон
- Как при поиске в linux используя grep, добавить исключения? спросил (а) Алексей
- к записи Обзор Insurance CMS — платформы для сайтов по страхованию
- к записи Консольный скрипт(JavaScript) для автоматических заказов на OZON
- к записи Консольный скрипт(JavaScript) для автоматических заказов на OZON
- к записи Как создать Telegram-бота с авторизацией через сайт
- к записи PHP скрипт: каталог закладок на сайты
- к записи Валидация на PHP
- к записи Сколько зарабатывают в бизнесе на совместных покупках
Archive
- +2026 (5)
- Август 2026 (1)
- Июль 2026 (1)
- Июнь 2026 (1)
- Февраль 2026 (1)
- Январь 2026 (1)
- +2025 (28)
- Июль 2025 (1)
- Май 2025 (1)
- Апрель 2025 (7)
- Март 2025 (4)
- Февраль 2025 (9)
- Январь 2025 (6)
- +2024 (35)
- Декабрь 2024 (7)
- Ноябрь 2024 (13)
- Октябрь 2024 (8)
- Сентябрь 2024 (1)
- Август 2024 (5)
- Май 2024 (1)
- +2023 (27)
- Ноябрь 2023 (1)
- Октябрь 2023 (13)
- Сентябрь 2023 (10)
- Апрель 2023 (1)
- Март 2023 (1)
- Февраль 2023 (1)
- +2022 (21)
- Декабрь 2022 (11)
- Ноябрь 2022 (1)
- Май 2022 (2)
- Апрель 2022 (2)
- Март 2022 (3)
- Февраль 2022 (1)
- Январь 2022 (1)
- +2021 (17)
- Декабрь 2021 (5)
- Ноябрь 2021 (2)
- Июль 2021 (1)
- Июнь 2021 (2)
- Май 2021 (5)
- Апрель 2021 (1)
- Март 2021 (1)
- +2020 (20)
- Декабрь 2020 (6)
- Сентябрь 2020 (2)
- Август 2020 (1)
- Июль 2020 (2)
- Май 2020 (2)
- Апрель 2020 (2)
- Март 2020 (2)
- Февраль 2020 (1)
- Январь 2020 (2)
- +2019 (18)
- Декабрь 2019 (3)
- Ноябрь 2019 (2)
- Октябрь 2019 (2)
- Сентябрь 2019 (1)
- Август 2019 (2)
- Июль 2019 (1)
- Июнь 2019 (1)
- Апрель 2019 (2)
- Март 2019 (1)
- Февраль 2019 (3)
- +2018 (44)
- Декабрь 2018 (4)
- Ноябрь 2018 (7)
- Октябрь 2018 (8)
- Сентябрь 2018 (1)
- Август 2018 (4)
- Июль 2018 (5)
- Май 2018 (3)
- Апрель 2018 (7)
- Март 2018 (1)
- Февраль 2018 (2)
- Январь 2018 (2)
- +2017 (19)
- Декабрь 2017 (2)
- Ноябрь 2017 (1)
- Октябрь 2017 (1)
- Сентябрь 2017 (2)
- Июль 2017 (1)
- Июнь 2017 (1)
- Май 2017 (2)
- Апрель 2017 (3)
- Март 2017 (2)
- Февраль 2017 (1)
- Январь 2017 (3)
- +2016 (36)
- Декабрь 2016 (3)
- Ноябрь 2016 (3)
- Октябрь 2016 (2)
- Сентябрь 2016 (3)
- Август 2016 (7)
- Июнь 2016 (3)
- Май 2016 (3)
- Апрель 2016 (3)
- Февраль 2016 (1)
- Январь 2016 (8)
- +2015 (36)
- Ноябрь 2015 (5)
- Октябрь 2015 (4)
- Сентябрь 2015 (1)
- Август 2015 (8)
- Июнь 2015 (1)
- Май 2015 (4)
- Апрель 2015 (8)
- Март 2015 (3)
- Февраль 2015 (2)
- +2014 (26)
- Ноябрь 2014 (2)
- Октябрь 2014 (5)
- Сентябрь 2014 (6)
- Июль 2014 (1)
- Июнь 2014 (2)
- Май 2014 (3)
- Апрель 2014 (6)
- Февраль 2014 (1)
- +2013 (27)
- Декабрь 2013 (2)
- Ноябрь 2013 (1)
- Октябрь 2013 (1)
- Август 2013 (1)
- Июль 2013 (3)
- Июнь 2013 (10)
- Май 2013 (1)
- Апрель 2013 (2)
- Февраль 2013 (3)
- Январь 2013 (3)
- +2012 (41)
- Декабрь 2012 (2)
- Ноябрь 2012 (3)
- Октябрь 2012 (7)
- Сентябрь 2012 (2)
- Август 2012 (1)
- Июль 2012 (3)
- Июнь 2012 (2)
- Май 2012 (6)
- Апрель 2012 (2)
- Март 2012 (7)
- Февраль 2012 (5)
- Январь 2012 (1)
- +2011 (57)
- Декабрь 2011 (6)
- Ноябрь 2011 (2)
- Октябрь 2011 (3)
- Сентябрь 2011 (5)
- Август 2011 (4)
- Июль 2011 (3)
- Июнь 2011 (3)
- Май 2011 (3)
- Апрель 2011 (4)
- Март 2011 (10)
- Февраль 2011 (5)
- Январь 2011 (9)
- +2010 (43)
- Декабрь 2010 (7)
- Ноябрь 2010 (21)
- Октябрь 2010 (14)
- Сентябрь 2010 (1)
Свежие записи
- Свой сервер дома 2026 05.08.2026
- Установка драйвера АТОЛ-30ф на Ubuntu 24.04 18.07.2026
- Распознавание QR-кодов 01.06.2026
- Подключение АТОЛ-30ф к серверу на Linux 14.02.2026
- Запрет пробуждения ПК от различных устройств в Windows 10/11 31.01.2026