Позднее Ctrl + ↑

как подружить synology с непроверенными дисками

Многие уже столкнулись с ошибкой совместимости дисков сторонних производителей с новыми моделями серверов synology. Да, это новая политика для продвижения OEM дисков, производимых под своим брендом.

Экономя до 30% стоимости на покупке и ставя диски не synology мы теряем возможность мониторинга smart.

Ежемесячных отчётов и т. д.

и критично это становится, когда мы используем не домашние решения, а большие серверы с дисками SAS, тут разница стоимости дисков может превышать и 500 тыс. руб.

Зато теперь, благодаря, Дейву Расселу у нас есть возможность «подружить» диски сторонних производителей с нашим сервером.

Для применения исправления, нужен доступ к серверу через SSH. Чтобы его включить перейдите в «Панель управления» -> «Терминал» и установите галочку напротив «Включить службу SSH», обязательно смените 22 порт на свой уникальный (49152-65535).

далее подключаемся по SSH (в linux и так понятно) в windows откройте терминал Win+X

подключитесь к серверу

где
  • адрес_сервера — это имя или ip адрес вашего сервера
  • пользователь — это логин администратора сервера (именно дефолтного администратора)
  • порт — порт, который назначили службе SSH (см. выше)

после подключения перейдите в режим администратора (укажите пароль пользователя)

sudo -i

теперь создаём папку opt и скачиваем скрипты

mkdir -m775 /opt
cd /opt
curl -O "https://raw.githubusercontent.com/007revad/Synology_HDD_db/refs/heads/main/syno_hdd_db.sh"
curl -O "https://raw.githubusercontent.com/007revad/Synology_HDD_db/refs/heads/main/syno_hdd_vendor_ids.txt"
chmod 750 /opt/syno_hdd_db.sh

выполните скрипт для обновления базы данных дисков

/opt/syno_hdd_db.sh

скрипт сам определит модель сервера, версию DSM, установленные диски и пропишет их в лист совместимости

и практически сразу диски станут «зелёными»

рекомендую запустить «исправление ошибок данных», чтобы всё было идеально

Скрипт для проверки валидности сертификата сервера

Обратились коллеги, скину скрин ошибки соединения с teamwork

надо проверить валидность сертификата

собственный тест сервера ошибки не выявил

как и собственный тест менеджера подключений

обратите внимание, все соединения защищены шифрованием ssl

давайте, напишем простой скрипт на bash для тестирования серификата на каждом подключении снаружи

#!/bin/bash

HOST="имя сервера" # Замените на ваш домен
#PORT="443"
PORT="27001"
DAYS_THRESHOLD=30 # За сколько дней предупреждать об истечении

# 1. Получаем даты окончания сертификата
# -connect: Подключаемся к хосту:порту
# -servername: Указываем SNI (Server Name Indication) для SNI-серверов
# x509 -noout -dates: Извлекаем даты из сертификата
END_DATE_STR=$(openssl s_client -connect $HOST:$PORT -servername $HOST 2>/dev/null | openssl x509 -noout -dates | grep "notAfter")

if [ -z "$END_DATE_STR" ]; then
    echo "Не удалось получить сертификат или ошибка соединения для $HOST"
    exit 1
fi

# Извлекаем дату в формате 'notAfter=...'
END_DATE=$(echo "$END_DATE_STR" | cut -d '=' -f 2)

# 2. Конвертируем дату в секунды с эпохи Unix
# date -d: Парсит дату
# +%s: Выводит в секундах
END_TIMESTAMP=$(date -d "$END_DATE" +%s)
CURRENT_TIMESTAMP=$(date +%s)

# 3. Вычисляем оставшиеся дни
DAYS_LEFT=$(( (END_TIMESTAMP - CURRENT_TIMESTAMP) / 86400 )) # 86400 секунд в дне

echo "Сертификат для $HOST действителен до: $END_DATE ($DAYS_LEFT дней осталось)"

# 4. Проверка на истечение срока
if [ "$DAYS_LEFT" -lt 0 ]; then
    echo "!!! ВНИМАНИЕ: Сертификат для $HOST истек $((-1 * DAYS_LEFT)) дней назад !!!"
elif [ "$DAYS_LEFT" -le "$DAYS_THRESHOLD" ]; then
    echo "!!! ВНИМАНИЕ: Сертификат для $HOST истекает через $DAYS_LEFT дней (менее $DAYS_THRESHOLD) !!!"
else
    echo "Сертификат для $HOST в порядке."
fi

ну и результат выполнения (проверял 443 и 27001 порты)

traccar на synology

развернём систему traccar в Docker Synology

для начала создадим базу данных
для простоты воспользуемся двумя пакетами MariaDB и phpMyAdmin

открываем phpMyAdmin и задаём нового пользователя

Заполните поля, имя пользователя лучше сделать уникальным, так будет сложнее взломать сервер. И обязательно поставьте галочку, чтобы создалась база с тем же именем

отлично, дальше создаём структуру для хранения изменяемых данных

основную папку
и подпапки

не забудьте на основной папке отключить наследование

и дать права на запись всем

скачайте с git файл конфигурации https://github.com/traccar/traccar/blob/master/setup/traccar.xml

и отредактируйте конфигурацию подключения к базе данных

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM 'http://java.sun.com/dtd/properties.dtd'>
<properties>

    <!-- Documentation: https://www.traccar.org/configuration-file/ -->

    <entry key='database.driver'>com.mysql.cj.jdbc.Driver</entry>
    <entry key='database.url'>jdbc:mysql://ip_of_synology:3306/traccar_db?serverTimezone=UTC&amp;useSSL=false&amp;allowMultiQueries=true&amp;autoReconnect=true&amp;useUnicode=yes&amp;characterEncoding=UTF-8&amp;sessionVariables=sql_mode=''</entry>
    <entry key='database.user'>traccar_db</entry>
    <entry key='database.password'>password</entry>

</properties>

файл загрузите на сервер synology в папку /docker/traccar/conf

дальше идём в Docker synology и жмём создать проект

заполняем поля

пишем следующий compose.yaml

version: '3'
services:
  traccar:
    container_name: traccar_latest
    image: traccar/traccar:debian
    volumes:
      - /volume1/docker/traccar/conf/traccar.xml:/opt/traccar/conf/traccar.xml:rw
      - /volume1/docker/traccar/logs:/opt/traccar/logs:rw
    network_mode: 'host'
    restart: always

жмём далее и тут можно было бы сразу создать свой web портал, но приложение использует в работе web интерфейса протокол websocket, а его можно настроить только в «Обратном прокси»

создаём и запускаем

в случае проблем запуска контейнера — смотрите логи docker/traccar/logs/tracker-server.log

дальше осталось настроить «Обратный прокси» и выпустить сертификат

я думаю, вы уже зарегистрировали домен для вашего сервиса

открываем «Панель управления» -> «Дополнительно» -> «Обратный прокси»

создаём правило для вашего домена

не забудем включить поддержку Websocket

так же опционально сделаем подключение через ssl

и Websocket не забываем

остался последний штрих — выпустить Let’s Ecnrypt сертификат

там же идём в настройки

и назначаем сертификат нашему домену

Ранее Ctrl + ↓