# Софт

# Guacamole

## Выключить TOTP для определённого пользователя

Внутри контейнера с postgres от guaca

```
su postgres
psql
\c guacamole_db
select * from guacamole_user_attribute;
update guacamole_user_attribute set attribute_value='totpdisabled' where user_id=<userid> and attribute_name='guac-totp-key-secret';
```

Решение взято [тут](https://issues.apache.org/jira/browse/GUACAMOLE-1164)

##### [Шпаргалка postgre](https://quaded.com/postgresql-%D1%88%D0%BF%D0%B0%D1%80%D0%B3%D0%B0%D0%BB%D0%BA%D0%B0-use-database-show-tables-show-users/)

# Proxmox + Grafana + Prometeus

## Начало

[https://www.dmosk.ru/miniinstruktions.php?mini=prometheus-stack-docker](https://www.dmosk.ru/miniinstruktions.php?mini=prometheus-stack-docker)  
[https://community.hetzner.com/tutorials/proxmox-prometheus-metrics](https://community.hetzner.com/tutorials/proxmox-prometheus-metrics)

# MSSQL



# Обслуживание 1С MSSQL

## Материалы по вопросу

[https://plast.com.kz/config-sql-server-1c-maintenance-plans/](https://plast.com.kz/config-sql-server-1c-maintenance-plans/)  
[https://its.1c.ru/db/metod8dev#content:5837:hdoc:p4](https://its.1c.ru/db/metod8dev#content:5837:hdoc:p4)  
[https://interface31.ru/tech\_it/2012/08/obsluzhivanie-baz-1s-v-ms-sql-server-chast-2.html](https://interface31.ru/tech_it/2012/08/obsluzhivanie-baz-1s-v-ms-sql-server-chast-2.html)  
[https://interface31.ru/tech\_it/2012/02/obsluzhivanie-baz-1s-v-ms-sql-server-chast-1.html](https://interface31.ru/tech_it/2012/02/obsluzhivanie-baz-1s-v-ms-sql-server-chast-1.html)  
[https://forum.infostart.ru/forum86/topic289736/](https://forum.infostart.ru/forum86/topic289736/)  
http://www.gilev.ru/forum/viewtopic.php?f=15&amp;t=1844

## Email уведомления  



[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-08/scaled-1680-/TtWimage.png)](https://wiki.accounter.org/uploads/images/gallery/2023-08/TtWimage.png)  
Нужно ввести параметры почты **от имени кого** будут отправлены уведомления.

Заведите оператора, укажите адрес **куда** надо направлять уведомления. В моём случае это один и тот же адрес.  
[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-08/scaled-1680-/01bimage.png)](https://wiki.accounter.org/uploads/images/gallery/2023-08/01bimage.png)[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-08/scaled-1680-/icSimage.png)](https://wiki.accounter.org/uploads/images/gallery/2023-08/icSimage.png)

Теперь уведомление можно включить при ошибке выполнения плана обслуживания:  
[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-08/scaled-1680-/pJmimage.png)](https://wiki.accounter.org/uploads/images/gallery/2023-08/pJmimage.png)

[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-08/scaled-1680-/W0Uimage.png)](https://wiki.accounter.org/uploads/images/gallery/2023-08/W0Uimage.png)

Или добавив действие "Уведомление оператора" сам план обслуживания:[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-08/scaled-1680-/aqpimage.png)](https://wiki.accounter.org/uploads/images/gallery/2023-08/aqpimage.png)

# MSSQL борщ

## Найти 1С документ по номеру в MSSQL

```mssql
USE be2_copy;

DECLARE @num NVARCHAR(50) = N'%ГБ00-004269%';
DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql = @sql + '
SELECT ''' + s.name + '.' + t.name + ''' AS TableName, _Number
FROM ' + QUOTENAME(s.name) + '.' + QUOTENAME(t.name) + '
WHERE _Number LIKE @num
UNION ALL'
FROM sys.columns c
JOIN sys.tables t ON t.object_id = c.object_id
JOIN sys.schemas s ON s.schema_id = t.schema_id
WHERE c.name = '_Number';

-- убрать последний UNION ALL
SET @sql = LEFT(@sql, LEN(@sql) - 10);

EXEC sp_executesql @sql, N'@num NVARCHAR(50)', @num;
```

## Включить индексирование таблиц 8.3.22

Реорганизация индексов вызывала ошибку по причине: **поскольку отключена блокировка на уровне страницы**

```mssql
USE [basename]
GO

DECLARE @object_schema VARCHAR(256);
DECLARE @object_name VARCHAR(256);
DECLARE @index_name VARCHAR(256);

DECLARE db_cursor CURSOR FOR 
SELECT OBJECT_SCHEMA_NAME(object_id) AS object_schema,
       OBJECT_NAME(object_id)        AS object_name,
       name                          AS index_name
FROM   sys.indexes
WHERE  allow_page_locks = 0 AND OBJECT_SCHEMA_NAME(object_id) != 'sys';

OPEN db_cursor;
FETCH NEXT FROM db_cursor INTO @object_schema, @object_name, @index_name;
WHILE @@FETCH_STATUS = 0  
BEGIN  

       EXEC ('ALTER   INDEX ' + @index_name + ' ON ' + @object_schema + '.'+ @object_name + ' SET (ALLOW_PAGE_LOCKS = ON)');
       FETCH NEXT FROM db_cursor INTO @object_schema, @object_name, @index_name;

END;
CLOSE db_cursor;
DEALLOCATE db_cursor;
```

Взято [отсюда](https://forum.infostart.ru/forum86/topic289736/)

## Проверить фрагментацию MSSQL

```mssql
DECLARE @db_id SMALLINT;

SET @db_id = DB_ID(N'MyBaseSQL');

IF @db_id IS NULL
BEGIN;
    PRINT N'Неправильное имя базы';
END;

ELSE
BEGIN;
	SELECT
		object_id AS [ID объекта],
		index_id AS [ID индекса],
		index_type_desc AS [Тип индекса],
		avg_fragmentation_in_percent AS [Фрагментация в %]
		
	FROM sys.dm_db_index_physical_stats(@db_id, NULL, NULL, NULL , 'LIMITED')
	 
	ORDER BY [avg_fragmentation_in_percent] DESC;
END;
GO
```

Взято [отсюда](https://plast.com.kz/config-sql-server-1c-maintenance-plans/)

## Остановить резервное копирование MSSQL

В SQL запроснике найти PID резерервного копирования:

```plaintext
SELECT session_id as SPID, command, a.text AS Query, start_time, percent_complete, dateadd(second,estimated_completion_time/1000, getdate()) as estimated_completion_time
FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) a
WHERE r.command in ('BACKUP DATABASE','RESTORE DATABASE')
```

И завершить процесс (тут же, в запроснике):

```plaintext
KILL НомерПроцесса
```

## Шифрованные копии MSSQL

### Зашифровать копии

**Создайте учетные данные SQL Server.** Для создания учетных данных SQL Server подключитесь к ядру СУБД, откройте новое окно запроса, скопируйте в него следующий пример и нажмите кнопку **Выполнить**. (Я этот шаг пропустил)

```plaintext
CREATE CREDENTIAL mycredential
WITH IDENTITY= 'mystorageaccount' - this is the name of the storage account you specified when creating a storage account
, SECRET = '<storage account access key>' - this should be either the Primary or Secondary Access Key for the storage account
```

**Создайте главный ключ базы данных.** Выберите пароль для шифрования копии главного ключа базы данных, которая будет храниться в базе данных. Подключитесь к ядру СУБД, откройте новое окно запроса, скопируйте в него следующий пример и нажмите кнопку **Выполнить**. (Устанавливаете мастер ключ шифрования)

```plaintext
-- Creates a database master key.
-- The key is encrypted using the password "<master key password>"
USE Master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master key password>';
GO
```

**Создайте сертификат резервной копии.** Создайте сертификат резервной копии в базе данных master. Вставьте следующий пример в окно запроса и нажмите **Выполнить**.

```plaintext
USE Master;
GO
CREATE CERTIFICATE MyTestDBBackupEncryptCert
   WITH SUBJECT = 'MyTestDBBackupEncryptCert ';
GO
```

**Выполните резервное копирование базы данных.** Укажите алгоритм шифрования и сертификат для использования. Скопируйте следующий пример в окно запроса и нажмите кнопку **Выполнить**.

```plaintext
BACKUP DATABASE [MyTestDB]
TO URL = N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\MyTestDB.bak'
WITH
  CREDENTIAL 'mycredential' - this is the name of the credential created in the first step.
  ,COMPRESSION
  ,ENCRYPTION
   (
   ALGORITHM = AES_256,
   SERVER CERTIFICATE = MyTestDBBackupEncryptCert
   ),
  STATS = 10
GO
```

### Расшифровать копии

Взято [отсюда](https://deibymarcos.wordpress.com/2017/11/15/how-to-restore-encrypted-databases-cannot-find-server-certificate-with-thumbprint/)  
При попытке прочитать содержимое зашифрованной копии будет выдана ошибка “Cannot find server certificate with thumbprint”

```plaintext
Msg 33111, Level 16, State 3, Line 1
Cannot find server certificate with thumbprint '0xE11A199C1059C6F1E0223B56581CDCF3F043DFE8'.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
```

Сертификаты хранятся тут:

<figure class="image image_resized" id="bkmrk-">![](https://deibymarcos.files.wordpress.com/2017/11/02.jpg?w=1200)</figure>**Выгрузите информацию со старого сервера вот таким запросом.**  
  
`USE Master`  
`go`  
`BACKUP CERTIFICATE DB_Encrypt_Cert`  
`TO FILE = 'Z:\Backup\DB_Encrypt_Cert.cer'`  
`WITH PRIVATE KEY(`  
`FILE = 'Z:\Backup\DB_Encrypt_Cert.prvk',`  
`ENCRYPTION BY PASSWORD = 'StrongPassword'`  
`)`  
  
**Загрузите в новый вот таким:**  
`CREATE CERTIFICATE DB_Encrypt_Cert`  
`FROM FILE = 'E:\MSSQL\DB_Encrypt_Cert.cer'`  
`WITH PRIVATE KEY(`  
`FILE = 'E:\MSSQL\DB_Encrypt_Cert.prvk',`  
`DECRYPTION BY PASSWORD = '7Hx81GbNaxHP65rsSfiKAaVvKvN5beUY'`  
`)`  
Теперь можно восстанавливать базу на новом сервере как обычно.

# Outlook

## Не синхронизируется Outlook

Происходит бесконечная отправка получение почты. Отправляемые письма складируются в исходящих и не уходят, пока не Outlook заново не будет открыт. Входящая почта приходит так же, в момент открытия, дальше в отправляет-получает постоянно, даже если уже выкачал весь ost файл заново, при синхронизации минимального периода (месяца). В текущем случае версия 2021.

### Использовать поведение определённое, ниже

Наиболее вероятно, помогла статья [Дмитрия Хлебалина](https://khlebalin.wordpress.com/2022/06/09/outlook-%D1%81%D0%B8%D0%BD%D1%85%D1%80%D0%BE%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D0%BF%D0%B0%D0%BF%D0%BE%D0%BA-%D1%81-%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%BA%D0%BE%D0%B9-%D0%BD%D0%B5-%D1%80/)  
Файл-&gt;Параметры-&gt;Дополнительно-&gt;Отправить и получить-&gt;Все записи-&gt;Изменить-&gt;Использовать поведение определённое, ниже:  
[![image.png](https://wiki.accounter.org/uploads/images/gallery/2025-02/scaled-1680-/image.png)](https://wiki.accounter.org/uploads/images/gallery/2025-02/image.png)  
[![image.png](https://wiki.accounter.org/uploads/images/gallery/2025-02/scaled-1680-/Fqximage.png)](https://wiki.accounter.org/uploads/images/gallery/2025-02/Fqximage.png)[![image.png](https://wiki.accounter.org/uploads/images/gallery/2025-02/scaled-1680-/xzVimage.png)](https://wiki.accounter.org/uploads/images/gallery/2025-02/xzVimage.png)[![image.png](https://wiki.accounter.org/uploads/images/gallery/2025-02/scaled-1680-/TyTimage.png)](https://wiki.accounter.org/uploads/images/gallery/2025-02/TyTimage.png)  
Перезапустить Outlook.

### Создать новый профиль Outlook

На [форуме MS попадалась ветка](https://answers.microsoft.com/ru-ru/outlook_com/forum/all/outlook-%D0%B4%D0%BE%D0%BB%D0%B3%D0%B0%D1%8F/4f54a3a7-c51a-4ffe-9a20-50dc5a8cff00), где были похожие симптомы.

  
**Этот совет не помог:**  
Файл -&gt; параметры -&gt; центр управления безопасностью -&gt; параметры центра управления безопасностью -&gt; защита эл. почты - поставить птицы(галочки) разрешить сценарии в общих и общедоступных папках  
  
По совету второго человека, был заведён новый профиль Outlook:  
[![image.png](https://wiki.accounter.org/uploads/images/gallery/2025-02/scaled-1680-/56Rimage.png)](https://wiki.accounter.org/uploads/images/gallery/2025-02/56Rimage.png)  
После перезапуска, при выборе профиля, нужно задать имя и "создать".  
Сначала был создан новый профиль, а потом попалась статья Дмитрия, поэтому что из них сработало наверняка неизвестно.

## Производительность поиска будет снижена, так как служба Windows Search отключена групповой политикой

Windows 11, Outlook 2021. При поиске в Outlook появляется это сообщение, информация о индексации недоступна (нет кнопок).

Была включена и запущена служба Windows Search. Сообщение не исчезло.   
**HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Search\\PreventIndexingOutlook** изменён с 1 на 0, после чего сообщение исчезло, появились кнопки работы с индексами, пошла индексация писем. Поиск по итогу работает.

## Размер вложения превышает допустимый сервером предел

[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-10/scaled-1680-/BK3image.png)](https://wiki.accounter.org/uploads/images/gallery/2023-10/BK3image.png)

```
+(DWORD32) HKEY_CURRENT_USER\Software\Microsoft\Office\x.0>\Outlook\Preferences\MaximumAttachmentSize = 0
```

  
[https://learn.microsoft.com/ru-ru/outlook/troubleshoot/message-body/attachment-size-exceeds-the-allowable-limit-error](https://learn.microsoft.com/ru-ru/outlook/troubleshoot/message-body/attachment-size-exceeds-the-allowable-limit-error)

## Достигнут предельный размер файла данных

[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-12/scaled-1680-/DLoimage.png)](https://wiki.accounter.org/uploads/images/gallery/2023-12/DLoimage.png)

[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-12/scaled-1680-/FJWimage.png)](https://wiki.accounter.org/uploads/images/gallery/2023-12/FJWimage.png)

Нужно увеличить:

- MaxLargeFileSize например до 100G 102400 dec
- WarnMaxLargeFileSize до 95G 97280 dec

[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-12/scaled-1680-/HvIimage.png)](https://wiki.accounter.org/uploads/images/gallery/2023-12/HvIimage.png)

[https://support.intermedia.com/app/articles/detail/a\_id/17301/~/how-to-increase-the-size-limit-of-your-pst-and-ost-files-in-outlook-for-windows%3F](https://support.intermedia.com/app/articles/detail/a_id/17301/~/how-to-increase-the-size-limit-of-your-pst-and-ost-files-in-outlook-for-windows%3F)

В одном случае, не удалось получить эффекта от изменения параметров PST файлов, для файла OST (он в 50 упирается).  
В другом (Win 11 + Ou 2021) сработало этим reg файлом (97-100 GB):

```
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\PST]
"MaxLargeFileSize"=dword:00019000
"WarnLargeFileSize"=dword:00017c00

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\15.0\Outlook\PST]
"MaxLargeFileSize"=dword:00019000
"WarnLargeFileSize"=dword:00017c00

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\14.0\Outlook\PST]
"MaxLargeFileSize"=dword:00019000
"WarnLargeFileSize"=dword:00017c00

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\12.0\Outlook\PST]
"MaxLargeFileSize"=dword:00019000
"WarnLargeFileSize"=dword:00017c00

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\11.0\Outlook\PST]
"MaxLargeFileSize"=dword:00019000
"WarnLargeFileSize"=dword:00017c00
```

# Windows

## Изменение размера кластера NTFS во время установки

Shift+F10 после создания разделов:

```
list vol
sel vol 3
format fs=ntfs unit=16K quick
exit
```

```
diskpart
list disk
select disk 0
clean
create partition primary
format fs=ntfs unit=64K quick
assign letter=C
exit
```

## Удалить антивирус с Windows Server

```powershell
Uninstall-WindowsFeature -Name Windows-Defender
```

## Ошибка установки MSI пакета Код ошибки 2755

Надо запускать через msiexec в cmd из под админа.

```
msiexec /package lala.msi
```

[Подсмотрено тут](https://forum.itstack.ru/viewtopic.php?id=186)

## Выключить рекламу Windows 11

Поставить, запустить [OFGB](https://github.com/xM4ddy/OFGB/releases/latest)

## Windows 11 установить без интернета

Чтобы появилась кнопочка "У меня нет интернета", надо нажать Shift + F10, ввести команду:

```
OOBE\BYPASSNRO
```

Дождаться перезагрузки. Взято [отсюда](https://www.comss.ru/page.php?id=10226)

## Подготовка терминальной Windows  


[Как переместить C:\\Users](http://www.oszone.net/27689/windows_10_relocate_users_folder)  
[Активация лицензий](https://tavalik.ru/ustanovka_servera_terminalov_windows_server_2012/)  
[Фризы RDP в Windows 2022](https://pyatilistnik.org/windows-server-2022-freezing-very-laggy-taskbar/)  
[Выключение DFSS](http://www.gilev.ru/dfss/)

## Включить samba v1 в winodows 10

Установка SMB v1:  
[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-08/scaled-1680-/Nl8image.png)](https://wiki.accounter.org/uploads/images/gallery/2023-08/Nl8image.png)  
Выключение v2

```powershell
Set-SmbServerConfiguration -EnableSMB2Protocol $false
```

Взято [отсюда](https://mywebpc.ru/windows/vklyuchit-otklyuchit-smbv2/)

## Очистка очереди печати Windows

```
net stop spooler
del %systemroot%\system32\spool\printers\*.shd /F /S /Q
del %systemroot%\system32\spool\printers\*.spl /F /S /Q
net start spooler
```

## Excel не сохраняет файл без прав на удаление любого файла в папке

```
HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Common\General\EnableSimpleCopyForSaveToUNC
DWORD (32-bit) -> 1
```

[https://support.microsoft.com/en-us/topic/-access-denied-error-message-when-you-save-a-workbook-to-a-unc-share-in-excel-2010-or-excel-2013-4df84394-0cca-a756-436b-9494331218e7](https://support.microsoft.com/en-us/topic/-access-denied-error-message-when-you-save-a-workbook-to-a-unc-share-in-excel-2010-or-excel-2013-4df84394-0cca-a756-436b-9494331218e7)

## Маршрут VPN

При выключении в VPN маршрута по умолчанию, приходилось запускать батник примерно такого содержания, чтобы проложить маршрут до целевой машины:

```
route add 172.96.0.4 172.93.0.249
```

Вместо этого в powershell:

<figure class="image" id="bkmrk-">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-cyed3ees.png)</figure>Выполняете команду:

```
Add-VpnConnectionRoute -ConnectionName "VPNConnection" -DestinationPrefix "176.16.0.4/32" -PassThru
```

Где вместо VPNConnection название вашего VPN подключения, а 176.16.0.4 это адрес целевой машины (например, RDP сервера)

Теперь маршрут будет добавляться автоматически при подключении.

## Кто открыл файл в Windows

```plaintext
Openfiles /Query /fo csv
```

или mmc

<figure class="image" id="bkmrk--1">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-xgptuwq9.png)</figure>## Зайти под USR1CV8

[![image.png](https://wiki.accounter.org/uploads/images/gallery/2025-01/scaled-1680-/x0Vimage.png)](https://wiki.accounter.org/uploads/images/gallery/2025-01/x0Vimage.png)

# RDP

# Windows 2022 фризы в RDP

Проблема полностью описана [тут](https://pyatilistnik.org/windows-server-2022-freezing-very-laggy-taskbar/)  
В свежеустановленном RDP сервере 2022 нужно переименовать файлы:

```
C:\Program Files (x86)\Common Files\Microsoft Shared\ink\TabTip32.exe в TabTip32.exe.orig (Оригинальный)

C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe в TabTip.exe.orig (Оригинальный)
```

Для этого нужно объявить себя владельцем файла:  
[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-08/scaled-1680-/48oimage.png)](https://wiki.accounter.org/uploads/images/gallery/2023-08/48oimage.png)  
И дать себе полные права на файл:  
[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-08/scaled-1680-/TYkimage.png)](https://wiki.accounter.org/uploads/images/gallery/2023-08/TYkimage.png)

# Не сохраняется пароль

Посвящаю эту статью половине потерянного сегодня мной дня. Моя проблема заключалась в том, что пароль не сохранялся только для шлюза удалённых рабочих столов. Проблема была в том, что URL шлюза в DNS был прописан CNAME, а не A. Клиент искал сохраненные учетки не для того URL, который был задан в поле шлюз, а для того, на на который ссылается CNAME. Узнал я это случайно набрав [https://my.domain.ru/rpc](https://my.domain.ru/rpc), там отразился DNS A узел.  
  
Вот варианты решения, которые я нагуглил за пол дня.  
[https://moonback.ru/page/windows-rdp-password](https://moonback.ru/page/windows-rdp-password)  
[https://superuser.com/questions/1136306/remember-me-feature-does-not-work-when-rd-getaway-is-used](https://superuser.com/questions/1136306/remember-me-feature-does-not-work-when-rd-getaway-is-used)  
Всё остальное является производным от них.

Отмечу софтину mRemoteNG тем, что она подсказывает какую KB нужно поставить, если в ответ на все попытки установить RDP свежее ось пишет, что эта KB ему не подходит.  
Если всё равно не ставится - попробуйте скачать английскую версию этого же KB.

---

# Невозможно установить желаемое масштабирование в RDP 8.1+

Отключаете проверку масштаба клиента со стороны сервера:

1. Run regedit and follow this registry key : **HKEY\_LOCAL\_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations**
2. In **WinStations** registry key, **create a DWORD (32-bit)** value **IgnoreClientDesktopScaleFactor**
3. Set this value to **1**

**И перелогиниваетесь пользователем. Перезапускать терминальный сервер - не нужно.**

---

## Зависает подключение к удаленному рабочему столу (RDP) при подключении через VPN

Помогло отключение UDP на стороне клиента:

Правка реестра. В ветке `HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client` необходимо создать параметр fClientDisableUDP и установить значение 1.

Взял [тут](https://kulmaks.by/%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B0%D0%B5%D1%82-%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BA-%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%BD%D0%BE%D0%BC%D1%83-%D1%80%D0%B0/#:~:text=%D0%9D%D0%B5%D0%BE%D0%B1%D1%85%D0%BE%D0%B4%D0%B8%D0%BC%D0%BE%20%D0%BF%D0%B5%D1%80%D0%B5%D0%B9%D1%82%D0%B8%20%D0%B2%20Computer%20Configuration,UDP%20On%20Client%C2%BB%20%D0%B2%20Enabled.)

## RDP MSI

msiexec.exe бывает виснет в RDP. Помогает шевеление [HKEY\_LOCAL\_MACHINE\\Software\\Policies\\Microsoft\\Windows NT\\Terminal Services\\TSAppSrv\\TSMSI\\Enable](https://admx.help/?Category=Windows_10_2016&Policy=Microsoft.Policies.TerminalServer-Server::TS_DISABLE_MSI&Language=ru-ru)  
https://community.flexera.com/t5/InstallShield-Forum/Problems-with-windows-server-2008-r2-and-terminalserver/m-p/18142

# LVM

## Удалить по UUID

```
vgremove -S uuid=XYZ
```

# Portainer.io

## Подготовка виртуальной машины

Установка производится на lxc машину, с установленным на неё Debian 12 и включенными keyctl, nesting и fuse в features:

<figure class="image" id="bkmrk-">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-vcosivmw.png)</figure>Чтобы попасть на неё без пароля с хостовой машины:

```
pct enter 181
```

Возможно вам понадобится включить ключи ssh-rsa в /etc/ssh/sshd\_config

```
PermitRootLogin prohibit-password
PubkeyAcceptedKeyTypes=+ssh-rsa
```

Устанавливаем yandex репозитории (выше скорость загрузки пакетов):

<mark class="pen-red">/etc/apt/sources.list</mark>

```plaintext
deb https://deb.debian.org/debian bookworm main
deb-src https://deb.debian.org/debian bookworm main

deb https://deb.debian.org/debian bookworm-updates main
deb-src https://deb.debian.org/debian bookworm-updates main

deb http://security.debian.org/ bookworm-security main
deb-src http://security.debian.org/ bookworm-security main
```

Обновляем систему, устанавливаем часовой пояс и локали, установим немного софта:

```plaintext
apt update && apt full-upgrade -y
dpkg-reconfigure tzdata
dpkg-reconfigure locales
apt install curl mc sudo curl wget
```

## Установка docker &amp; docker-compose

### Docker

```plaintext
apt -y install apt-transport-https ca-certificates gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
add-apt-repository \
  "deb [arch=amd64] https://download.docker.com/linux/debian \
  $(lsb_release -cs) \
  stable"
apt update
apt -y install docker-ce docker-ce-cli containerd.io fuse-overlayfs
systemctl enable --now docker
```

### Docker-compose

```plaintext
curl -s https://api.github.com/repos/docker/compose/releases/latest | grep browser_download_url | grep docker-compose-linux-x86_64 | cut -d '"' -f 4 | wget -qi -
chmod +x docker-compose-linux-x86_64
mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
```

## Не запускается lxc

Узнать причину:

```
lxc-start -n 181 -F -lDEBUG -o lxc-181.log
```

В моём случае потребовалось изменить максимальную версию debian тут: /usr/share/perl5/PVE/LXC/Setup/Debian.pm

[![image.png](https://wiki.accounter.org/uploads/images/gallery/2023-08/scaled-1680-/2gLimage.png)](https://wiki.accounter.org/uploads/images/gallery/2023-08/2gLimage.png)

## Portainer.io

```plaintext
docker volume create portainer_data
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:latest
```

Далее идём на https://your.machine.ip:9443/  
Устанавливаем пароль для admin и заходим в админку portainer  
Чтобы зайти в свой экземпляр (portainer может рулить множеством экземпляров) надо щёлкнуть сюда:

<figure class="image" id="bkmrk--2">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-ymcysmw6.png)</figure>## Nginx Proxy Manager

### Установка

Попробуем поставить сие программное средство в portainer:

<figure class="image" id="bkmrk--3">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-ssw3cy4j.png)</figure>ыНазовите его как-нибудь, вставьте содержимое docker-compose.yml в web форму:

<figure class="image" id="bkmrk--4">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-ba2hmrip.png)</figure>И жмём кнопку в самом низу:

<figure class="image" id="bkmrk--5">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-mzkhkd2w.png)</figure>Админка будет ожидать вас на 81-ом порту.

```plaintext
Email:    admin@example.com
Password: changeme
```

# Работа с жесткими дисками в Linux

# Ссылки

[Все управляшки HW RAID](http://hwraid.le-vert.net/wiki/DebianPackages)  
  
[Управление Adaptec](https://wiki.colobridge.net/%D0%BF%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B5/%D1%81%D0%BE%D0%B2%D0%B5%D1%82%D1%8B/%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_raid_adaptec_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_arcconf)

Создать Simple Volume можно так:

```
arcconf create 1 LOGICALDRIVE MAX volume 0,1
```

[Рескан scsi шины в linux](https://habr.com/ru/post/68036/)

[Замена загрузочного диска](http://my.admingroup.ua/index.php?/Knowledgebase/Article/View/74/15/proxmox-ve-on-zfs-raid---replace-disk-in-zpool-and-reinstalling-grub)

[Замена диска zfs](https://habr.com/ru/post/272249/)

# Загрузка zfs с SD 380 HBA

HP DL380 gen8 имеет на борту p420i raid контроллер. ZFS как вы знаете, любит работать с дисками напрямую. p420i на удивление, умеет переключаться в HBA режим, но грузиться с него у вас не получится.  
Вот человек предлагает решение: [https://www.reddit.com/r/homelab/comments/ap9usf/proxmoxzfs\_installed\_on\_hp\_dl360p/](https://www.reddit.com/r/homelab/comments/ap9usf/proxmoxzfs_installed_on_hp_dl360p/) Но с лёту у меня не получилось сделать так же как он. Рассказываю как сделал я.  
  
Для не умеющих читать по-английски.  
1\. Устанавливаем proxmox на жесткие диски как обычно в режиме zfs raid 1  
2\. Включаем флешку во внутренний SD  
3\. Загружаемся в live cd и указываем, что /boot теперь находится на SD  
4\. ставим граб на SD  
5 Перезагружаемся, редактируем граб прям из него самого  
6 Загружаемся в нашу систему, делаем grub-update grub-install  
  
Во-первых debian live-cd не смог примонтировать в режиме записи zfs. В дебиане используется 0.7, а тут уже 0.8. Короч… Вам не нужен ни дебиан, ни убунту, грузимся с proxmox iso и выбираем debug режим.  
Там пишем exit или Ctrl+D и оказываемся в консоли, в которой уже есть что нужно.  
Далее я пошёл другим путём (так как предложенным у меня не получилось), я примонтировал zfs

```plaintext
zpool import -f -R /mnt rpool
```

и чрутнулся в него

```plaintext
mount -t proc /proc/ /mnt/proc
mount –rbind /dev/ /mnt/dev
mount –rbind /sys/ /mnt/sys
chroot /mnt bash
```

Теперь я в своей системе и отсюда я уже готовлю флешку, как описано в статье, и делаю grub-install на SD.  
Далее при загрузке grub, через e, как указано в статье, меняю пути и название диска и загружаюсь в систему.  
Система не грузится, iniramfs предлагает ввести команду, говорит, что rpool уже был в другой системе и нужно его импортировать в эту.  
В самом его ругательстве написана строка, чинящая эту проблему. Вам надо её ввести «zpool import -f … rpool» и система загрузится.  
После загрузки сделайте grub-update, grub-install. Грузитесь на здоровье!

<figure class="image" id="bkmrk-">![](http://192.168.25.13/lib/exe/indexer.php?id=start%3Ait%3A%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_zfs_%D1%81_sd_380_hba&1653264895)</figure>

# Программирование C

## Запуск скриптов с рутовыми правами без доступа к скриптам

```plaintext
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

void RemoveSlash(char* source)
{
  char* i = source;
  char* j = source;
  while(*j != 0)
  {
    *i = *j++;
    if(*i != '/')
      i++;
  }
  *i = 0;
}

int main(int argc, char** argv) {
    if (argc <2) {
    printf("Usage: runme scriptname\n");
    exit(-1);
    }
    char myoutput_array[5000];

    strcat(myoutput_array, "bash /opt/scripts/");
    RemoveSlash(argv[1]);
    strcat(myoutput_array, argv[1]);
    strcat(myoutput_array, "\n");
    /printf("%s", myoutput_array);/
    setuid(0);
    system(myoutput_array);
    return 0;
}
```

gcc -o test test.c  
cp test /usr/bin/runme  
chmod 4775 /usr/bin/runme

# FFmpeg

## Объединение двух видео в Linux

cat output.txt

```
file '/path/to/file/1.mp4' file '/path/to/file/2.mp4'
```

```
ffmpeg -f concat -safe 0 -i ./file -c copy output.mp4
```

## Удалить звук

```
ffmpeg -i example.mkv -c copy -an example-nosound.mkv
```

## Наложить звук

```
ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental output.mp4
```

## Выдернуть звук из видео

```
ffmpeg -i filename.mp4 filename.mp3
```

## Разрезать видео

```
ffmpeg -i Plov.mov -ss 00:12:00 -to 00:21:54 -c copy Plov2.mov
```

# Zabbix

## Ссылки

[Мониторинг температуры процессора](https://kamaok.org.ua/?p=1637)

[Мониториг состояния пуллов zfs](http://dnaeon.github.io/monitoring-your-zfs-pools-in-zabbix/)

## Шифрованный клиент

### На стороне клиента

#### Клиент Windows

Для винды стандартный дистрибутив не включает TLS. Качать клиенты с подержкой TLS [тут](http://support.zabbix.com/browse/ZBXNEXT-3047).  
Качаем клиент, распаковываем в созданную самостоятельно папку «C:\\Program Files\\zabbix».  
Создаём файл «C:\\Program Files\\zabbix\\conf\\zabbix\_agentd.conf»

```plaintext
#ip address Zabbix server
Server=192.168.x.x
# Unique hostname. Required for active checks.
Hostname=host.local
# Listen port. Default is 10050
ListenPort=10050
# Name of log file.
LogFile=c:\program files\zabbix\zabbix_agentd.log
# Maximum size of log file in MB. Set to 0 to disable automatic log rotation.
LogFileSize=10

TLSConnect = psk
TLSAccept=psk
TLSPSKIdentity=PSK 001
TLSPSKFile=C:\Program Files\zabbix\conf\key.txt
```

<mark class="pen-red">**Внимание**!</mark> TLSPSKIdentity на разных клиентах должен быть разный. При двух одинаковых связь с обоими работать не будет!  
Номер порта желательно заменить на что-нибудь подальше, но не слишком. Zabbix клиент почему-то не запускается на портах свыше какого-то (точно не помню какого).  
В C:\\Program Files\\zabbix\\conf\\key.txt помещаем ключ. Я использую команду «openssl rand -hex 32» в каком-нибудь линуксе. По факту строка 64 рандомных символа.  
В консоли из под админа устанавливаю и запускаю службу:

```plaintext
"c:\program files\zabbix\win64\zabbix_agentd.exe" --config "c:\program files\zabbix\conf\zabbix_agentd.conf" --install
"c:\program files\zabbix\win64\zabbix_agentd.exe" --config "c:\program files\zabbix\conf\zabbix_agentd.conf" --start
```

Готово. Не забудьте открыть порт.

#### Клиент Linux

```plaintext
apt install zabbix-agent cd /etc/zabbix/ cp ./zabbix_agentd.conf ./zabbix_agentd.conf.bak
```

**zabbix\_agentd.conf**

```plaintext
apt install zabbix-agent
cd /etc/zabbix/
cp ./zabbix_agentd.conf ./zabbix_agentd.conf.bak
```

### На стороне сервера

<figure class="image" id="bkmrk-">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-fnsmxfza.png)</figure>

# Proxmox mail gateway

## Блокировка содержимого в rar архивах

Для того, чтобы pmg смотрел вовнутрь rar архивов, надо дописать в конец apt источников в /etc/apt/sources.list строки non-free примерно так:

```plaintext
deb http://ftp.debian.org/debian bullseye main contrib non-free
deb http://ftp.debian.org/debian bullseye-updates main contrib non-free
deb http://security.debian.org/debian-security bullseye-security main contrib non-free
```

И установите следующие пакеты:

```plaintext
apt update
apt install libclamunrar p7zip-rar
```

Возможно понадобится перезапуск служб pmg.

## Автоматическое обучение

https://www.crc.id.au/2020/05/06/training-spamassassins-bayes-filter-with-proxmox-mail-gateway/

# ProFTPd

## Настройка ProFTPd

Задача тупо поставить ftp. Пускать только в домашние папки пользователей. Поддерживать русские буквы.  
Берём стандартный proftpd.conf и дописываем в конец:

```plaintext
DefaultRoot            ~
PassivePorts                  50200 50201 # Этот диапазон надо будет прокинуть через NAT вместе с 21
MasqueradeAddress             XX.XX.XX.XX # Внешний IP

LangDefault                     ru_RU.UTF-8
LangEngine                      on
LangPath                        /usr/share/locale
UseEncoding                     UTF-8 WINDOWS-1251
```

Теперь любой пользователь, под своим паролем может заходить к себе в HOME.  
Под виндой русские буквы корректно отображаются. Чтобы тоже самое было в FileZilla надо указать кодировку cp1251:

# Postgres 1C ZFS

## **Рекомендуемые тесты `fio` для ZFS + PostgreSQL**

### **(1) Тест случайных операций 4K (OLTP-нагрузка)**

<div class="md-code-block md-code-block-dark" id="bkmrk-bash"><div class="md-code-block-banner-wrap"><div class="md-code-block-banner md-code-block-banner-lite"><div class="_121d384"><div class="d2a24f03"><span class="d813de27">bash</span></div></div></div></div></div>```
fio --name=randrw --filename=/postrass/testfile --rw=randrw --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60 --time_based --group_reporting --ioengine=libaio --direct=1
```

- **`numjobs=4`** – имитация многопоточной нагрузки (как в реальной работе PostgreSQL).
- **`iodepth=32`** – глубина очереди (важно для SSD/NVMe).

### **(2) Тест последовательной записи 128K (большие блоки)**

<div class="md-code-block md-code-block-dark" id="bkmrk-bash-1"><div class="md-code-block-banner-wrap"><div class="md-code-block-banner md-code-block-banner-lite"><div class="_121d384"><div class="d2a24f03"><span class="d813de27">bash</span></div><div class="d2a24f03"><div class="efa13877">  
</div></div></div></div></div></div>```
fio --name=seqwrite --filename=/postrass/testfile --rw=write --bs=128k --size=1G --numjobs=1 --iodepth=1 --runtime=60 --time_based --group_reporting --ioengine=posixaio
```

- Проверяет, как ZFS обрабатывает **большие блоки (например, при загрузке данных или бэкапах)**.

### **(3) Тест случайных операций 128K (соответствует `recordsize`)**

<div class="md-code-block md-code-block-dark" id="bkmrk-bash-2"><div class="md-code-block-banner-wrap"><div class="md-code-block-banner md-code-block-banner-lite"><div class="_121d384"><div class="d2a24f03"><span class="d813de27">bash</span></div><div class="d2a24f03"><div class="efa13877">  
</div></div></div></div></div></div>```
fio --name=randrw_128k --filename=/postrass/testfile --rw=randrw --bs=128k --size=1G --numjobs=4 --iodepth=32 --runtime=60 --time_based --group_reporting --ioengine=libaio --direct=1
```

- Покажет, насколько эффективно ZFS обрабатывает **блоки, близкие к `recordsize`**.

##   
Установка Postgres

[Великолепная сатья по установке 1С на linux от рарус](https://rarus.ru/publications/20210927-ot-ekspertov-ustanovka-1c-linux-496320/)  
  
В статье указана устаревшая ссылка на скрипт установки PGPro, вот новая:  
wget [https://repo.postgrespro.ru/pg1c-14/keys/pgpro-repo-add.sh](https://repo.postgrespro.ru/pg1c-14/keys/pgpro-repo-add.sh)

Получить PostgresPro бесплатно можно на сайте [1c.postgres.ru](https://1c.postgres.ru/)  
[Рекомендации от posgrespro для 1С](https://postgrespro.ru/docs/postgrespro/14/config-one-c)

[Полезное для linux+postgres](https://habr.com/ru/post/590599/)  
[Postgres + PGAF (Failover за Postgres)](https://habr.com/ru/post/664858/)  
[Советы от Гилёва по части PostgreSQL](http://www.gilev.ru/postgresql/)  
[Неплохая статья с примером обслуживания базы](https://angald.ru/postgres-pro-1c-na-debian-11/)  
[Настройка PostgreSQL для 1С](https://infostart.ru/1c/articles/325482/)

## Основные моменты ZFS

В postgres:

```plaintext
full_page_writes = off
```

<div class="code-toolbar" id="bkmrk-copy-1"><div class="toolbar">  
</div></div>По [ссылке](https://bun.uptrace.dev/postgres/tuning-zfs-aws-ebs.html#basic-zfs-setup) дано объяснение по каждому из пунктов. В частности почему размер блока стоит делать побольше, и почему не надо делать logbias=throughput

## Параметры ядра для postgres

```plaintext
vm.swappiness=1
kernel.sched_migration_cost_ns = 5000000
kernel.sched_autogroup_enabled = 0
vm.dirty_background_bytes = 67108864
vm.dirty_bytes = 536870912
vm.zone_reclaim_mode = 0
```

# IPTables

## Проброс портов с localhost на внешний адрес

### Системные переменные

```plaintext
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.route_localnet=1" >> /etc/sysctl.conf
sysctl -p
```

### /etc/rc.local

```plaintext
#!/bin/sh -e

YourIP=127.0.0.1
YourExternalIP=`ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'`
YourPort=20000:30000
TargetIP=xx.xx.xx.xx
TargetPort=80

iptables -t nat -F
iptables -t nat -A PREROUTING --dst $YourIP -p tcp --dport $YourPort -j DNAT --to-destination $TargetIP:$TargetPort
iptables -t nat -A POSTROUTING -p tcp --dst $TargetIP --dport $TargetPort -j SNAT --to-source $YourExternalIP
iptables -t nat -A OUTPUT --dst $YourIP -p tcp --dport $YourPort -j DNAT --to-destination $TargetIP:$TargetPort
```

# ZFS

## Посмотреть отстающие syncoid

```bash
#!/usr/bin/env bash

THRESHOLD_MINUTES="${1:-10}"
now=$(date +%s)

zfs list -t snap | grep syncoid | while read -r line; do
    # Извлекаем имя снапшота
    snap=$(echo "$line" | awk -F@ '{print $2}' | awk '{print $1}')

    # Извлекаем дату и время из имени снапшота
    # Формат: syncoid_xxxx_YYYY-MM-DD:HH:MM:SS или syncoid_xxxx_YYYY-MM-DD:HH:MM:SS-GMTXX:XX
    if [[ "$snap" =~ ([0-9]{4}-[0-9]{2}-[0-9]{2}):([0-9]{2}:[0-9]{2}:[0-9]{2}) ]]; then
        date_part="${BASH_REMATCH[1]}"
        time_part="${BASH_REMATCH[2]}"

        # Форматируем дату и время для команды date
        datetime="${date_part} ${time_part}"

        # Преобразуем в epoch time
        snap_epoch=$(date -d "$datetime" +%s 2>/dev/null)

        if [[ -n "$snap_epoch" ]]; then
            diff=$(( now - snap_epoch ))
            if (( diff > THRESHOLD_MINUTES * 60 )); then
                minutes=$(( diff / 60 ))
                hours=$(( minutes / 60 ))
                remaining_minutes=$(( minutes % 60 ))
                printf "%-80s <-- отставание %d часов %d минут\n" "$line" "$hours" "$remaining_minutes"
            fi
        else
            echo "Ошибка преобразования времени для: $datetime" >&2
        fi
    else
        echo "Не удалось извлечь дату из: $snap" >&2
    fi
done

```

```
./filter_snaps.sh 120
bank/Replica1/subvol-112-disk-0@syncoid_bigbank3_2025-09-12:08:30:30              0B      -  1.11G  - <-- отставание 7 часов 52 минут
bank/Replica1/vm-108-disk-0@syncoid_bigbank3_2025-09-12:12:31:22                  0B      -  30.0G  - <-- отставание 3 часов 51 минут
megabank/Replica1/subvol-181-disk-1@syncoid_r370_2025-09-12:13:52:01-GMT10:00     0B      -  6.45G  - <-- отставание 2 часов 30 минут
megabank/Replica3/vm-103-disk-1@syncoid_r370_2025-09-12:09:50:02-GMT10:00       773M      -  2.97T  - <-- отставание 6 часов 32 минут
megabank/Replica3/vm-103-disk-1@syncoid_r370_2025-09-12:10:50:02-GMT10:00      1.66G      -  2.97T  - <-- отставание 5 часов 32 минут
```

## Удалить снапшоты

```
zfs list -H -o name -t snapshot | xargs -n1 zfs destroy
```

# OpenVPN

## Адаптация старых OpenVPN конфигов к новым релизам OpenVPN

### 2.3 → 2.4

При переходе часто встречается ошибка. Текстового примера под рукой нет

Добавить

```plaintext
tls-cipher "DEFAULT:@SECLEVEL=0"
```

в начало .conf файла, вот так:

<figure class="image" id="bkmrk-">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-rn8nyxou.png)</figure>### tls-remote Unrecognized option

Options error: Unrecognized option or missing or extra parameter(s) in lala.ovpn:95: tls-remote (2.5.7)  
Use --help for more information.  
  
tls-remote упразднён:

```plaintext
tls-remote lala.my.com
```

Вместо него:

```plaintext
verify-x509-name lala.my.com name
```

Варианты синтаксиса:

```plaintext
verify-x509-name 'C=KY, ST=GrandCayman, L=GeorgeTown, O=GoldenFrog-Inc, CN=uk1.vpn.giganews.com'
```

### Add the server's cipher ('BF-CBC') to --data-ciphers

OPTIONS ERROR: failed to negotiate cipher with server. Add the server's cipher ('BF-CBC') to --data-ciphers (currently 'AES-256-GCM:AES-128-GCM') if you want to connect to this server.

Надо добавить в конфиг:

```plaintext
cipher BF-CBC
```

# Autostart OpenVPN systemd

In order to configure OpenVPN to autostart for systemd, complete the following steps:

Run the command:

```plaintext
# sudo nano /etc/default/openvpn
```

and uncomment, or remove, the “#” in front of

```plaintext
AUTOSTART="all"
```

then press ‘Ctrl X’ to save the changes and exit the text editor.

Move the .ovpn file with the desired server location to the ‘/etc/openvpn’ folder:

```plaintext
# sudo cp /location/whereYouDownloadedConfigfilesTo/Germany.ovpn /etc/openvpn/
```

Edit the .ovpn file you copied in the previous step and change the line ‘auth-user-pass’ to ‘auth-user-pass pass’:

```plaintext
# sudo nano /etc/openvpn/Germany.ovpn
```

then press ‘Ctrl X’ to save the changes and exit the text editor.

In the ‘/etc/openvpn’ folder, create a text file called pass:

```plaintext
# sudo nano /etc/openvpn/pass
```

and enter your IVPN Account ID (starts with ‘ivpn’) on the first line and any non-blank text on the 2nd line, then press ‘Ctrl X’ to save the changes and exit the text editor.

(Optional) Change the permissions on the pass file to protect the credentials:

```plaintext
# sudo chmod 400 /etc/openvpn/pass
```

Rename the .ovpn file to ‘client.conf’:

```plaintext
# sudo cp /etc/openvpn/Germany.ovpn /etc/openvpn/client.conf
```

On Ubuntu 16.04 LTS, OpenVPN installs and initiates a service by default. If you are using Ubuntu 16.04 LTS, skip to step 10.  
For Ubuntu 18.04 LTS and up, enable the OpenVPN service to run while booting:

```plaintext
# sudo systemctl enable openvpn@client.service
```

Reload the daemons:

```plaintext
# sudo systemctl daemon-reload
```

Start the OpenVPN service:

```plaintext
# sudo service openvpn@client start
```

Reboot and test if it is working by checking the external IP:

```plaintext
# curl ifconfig.co
```

If curl is not installed:

```plaintext
# sudo apt install curl
```

https://www.ivpn.net/knowledgebase/linux/linux-autostart-openvpn-in-systemd-ubuntu/

# Nextcloud

## Не отображаются файлы

```
sudo -u www-data php /var/www/nextcloud/occ files:scan --all
```

## Очистка корзины групповых папок

Из интерфейса нельзя очистить корзину, в консоли это сделала команда:

```plaintext
sudo -u <nextcloud_user> php /var/www/nextcloud/occ groupfolders:trashbin:cleanup
```

В моём случае nextcloud\_user - www-data  
Взял [тут](https://help.nextcloud.com/t/group-folders-delete-the-contents-of-the-recycle-bin/72340/10)

## Не загружаются большие файлы из наружного контура

### Настройка NGINX

```plaintext
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_max_temp_file_size 16384m;
client_max_body_size 0;
```

Этот код нужно вставить сюда:

<figure class="image" id="bkmrk-">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-if6eawxm.png)</figure>Выяснилось ещё, что при отправке на облако 6Gb файла, корневой раздел виртуальной машины с nginx proxy manager увеличивается на 6Gb. После закачки файла - уменьшается. Без увеличения раздела nginx файл закачать не удалось. Выключение Cache Assets в nginx не помогло.

## Ошибка удаления групповых файла/папки Nextcloud

### Симптом

В nextcloud, в моём случае в версиях от наверное 15-ой до 22-ой невозможно удалить файлы и папки, находящиеся в группе:

<figure class="image" id="bkmrk--1">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-sw5lrnja.png)</figure>Вот так настроеные логи

```plaintext
'log_type' => 'file',
  'logfile' => 'nextcloud.log',
  'loglevel' => 3,
  'logdateformat' => 'F d, Y H:i:s',
```

Выдали:

```plaintext
“Failed to move groupfolder item to trash”
```

### Решение

```plaintext
cd /var/www/nextcloud/data/__groupfolders
mkdir trash
cd trash
mkdir 1  10  2  3  4  5  6  7  8  9
cd ..
chown -R www-data:www-data trash
```

Взято [отсюда](https://help.nextcloud.com/t/nextcloud-19-0-1-problem-with-deleting-files-folders/89041/6?u=r0wi)

## Сопряжение OnlyOffice + NextCloud через JWT ключ

### Onlyoffice

```plaintext
docker run -i -t -d -p 80:80 --restart=always -e JWT_ENABLED=true -e JWT_SECRET=bla123BLA321BlA1 -e JWT_HEADER=BlaBlaJwt onlyoffice/documentserver
```

### Nextcloud

```plaintext
'onlyoffice' =>.
array (
  'verify_peer_off' => true,
  'jwt_header' => 'BlaBlaJwt',
  'jwt_secret' => 'bla123BLA321BlA1',
),
```

# Linux Server

## Увеличение диска конвертация в gpt  


```
umount /dev/sdb1
# Конвертация в gpt
sgdisk -g /dev/sdb
# увеличение партиции 1
parted /dev/sdb resizepart 1 100%
# resize2fs /dev/sdb1
```

## Добавить шифрованный том LVM

```bash
cryptsetup -v luksFormat /dev/sdx
cryptsetup -v open /dev/sdx cryptedvol
pvcreate --metadatasize 250k -y -ff /dev/mapper/cryptedvol
vgcreate cryptedlvm /dev/mapper/cryptedvol
```

## Добавить ssh-rsa в поддерживаемые

```
lxc-attach -n 100
PubkeyAcceptedKeyTypes +ssh-rsa
```

## Отдельный SSH сервер для отдельного пользователя

```
cp /etc/ssh/sshd_config /etc/ssh/sshd_config_custom
echo 'Port 666' >> /etc/ssh/sshd_config_custom
echo 'AllowUsers customuser' >> /etc/ssh/sshd_config_custom
cp /lib/systemd/system/ssh.service /lib/systemd/system/ssh_custom.service
```

Пример рабочего файла /lib/systemd/system/ssh\_custom.service:

```
[Unit]
Description=OpenBSD Secure Shell server
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Service]
EnvironmentFile=-/etc/default/ssh
ExecStartPre=/usr/sbin/sshd -t -f /etc/ssh/sshd_config_custom
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS -f /etc/ssh/sshd_config_custom
ExecReload=/usr/sbin/sshd -t -f /etc/ssh/sshd_config_custom
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify
RuntimeDirectory=sshd
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target
```

Обратите внимание на удалённую строку Alias=sshd.service относительно оригинального /lib/systemd/system/ssh.service

## Монтирование LVM not available 

```
lvchange -ay /dev/LVM/lala
mount /dev/LVM/lala /mnt
umount /dev/LVM/lala
lvchange -an /dev/LVM/lala
```

## NTP клиент

```
apt install systemd-timesyncd
```

# Linux Desktop

## Linux PPTP клиент

Отличные материалы:  
[https://adminim.by/sovetyi/nastroyka-vpn-pptp-na-linux-debian/](https://adminim.by/sovetyi/nastroyka-vpn-pptp-na-linux-debian/)  
[https://wiki.debian.org/ru/pptp-linux](https://wiki.debian.org/ru/pptp-linux)

## Wireguard add connection  


```
nmcli connection import type wireguard file
```

## Tap to click

```
sudo apt install xserver-xorg-input-synaptics 
```

## Мерцает экран после сна i915

```
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.enable_psr=0 i915.enable_rc6=0"
```

## Свободные IP в сети

```
nmap -v -sn -n 192.168.1.0/24 -oG - | awk '/Status: Down/{print $2}'
```

# PfSense

## **Настройка сети в случае базирования pfsense на KVM**

Pfsense отлично ведёт себя на kvm (гостевая система) если  
1\) поставить драйвер virtio:

<figure class="image" id="bkmrk-">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-zovqw1me.png)</figure>2\) Включить **Disable hardware checksum offload в System/Advanced/Networking в pfsense:**

<figure class="image" id="bkmrk--1">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-9n0dkpxx.png)</figure>  
Если этого не сделать, то периодически будут проблемы. С этими настройками проблем нет уже несколько лет.

## **Настройка внутренней и внешней зон DNS**

На PfSense работает обычный bind. Вы просто настраиваете его мышкой. Как сделать разные адреса для внутренней и внешней зон не очень понятно.

Для начала поставим BIND (DNS сервер)

<figure class="image" id="bkmrk--2">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-7r1szj3x.png)</figure><figure class="image" id="bkmrk--3">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-q8f8tt4c.png)</figure>Дожидаемся установки, настраиваем:

<figure class="image" id="bkmrk--4">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-8dxqwti6.png)</figure>Добавляем views, внутренний :

Сначала вкладку Settings:

<figure class="image" id="bkmrk--5">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-hajksvba.png)</figure>Включаем сервер, у меня нет IPv6 и да, я хочу, чтобы днс работал на всех интерфейсах.  
Спускаюсь ниже, включаю сервера, на dns сервер провайдера или публичный dns:

<figure class="image" id="bkmrk--6">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-i0jwhvza.png)</figure><figure class="image" id="bkmrk--7">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-zuikn2cr.png)</figure><figure class="image" id="bkmrk--8">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-nw3blskw.png)</figure>и внешний:

<figure class="image" id="bkmrk--9">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-rvukxblj.png)</figure>Далее, создаём зоны:

<figure class="image" id="bkmrk--10">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-eikyrhg9.png)</figure>Внутреннюю:

<figure class="image" id="bkmrk--11">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-vo5dxtbr.png)</figure><figure class="image" id="bkmrk--12">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-fbnjbjbh.png)</figure>И внешнюю:

<figure class="image" id="bkmrk--13">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-sbiphgyz.png)</figure><figure class="image" id="bkmrk--14">![](https://book.accounter.org/uploads/images/gallery/2023-07/embedded-image-2f8ojsdo.png)</figure>

# Ikev2 ipsec/wireguard/3proxy/clamav updater 4 in 1

В примере используется следующая конфигурация:

Внешний IP: **91.149.232.254**

Внешний интерфейс: **eth0**

ikev2 сеть: **10.10.30.0/24**

Подсеть с которой разрешен доступ к 3proxy: **94.229.240.0/20**

Доступ к админке WireGuard разрешен с ip: **94.229.246.136**

Далее по тексту меняем их на свои

#### **1) Обновляем дистр и ставим нужные пакеты**

Для Ubuntu

```bash
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
```

Для Debian

```bash
curl -fsSL https://download.docker.com/linux/debian/gpg |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/debian \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null
```

Для Ubuntu\\Debian

```
apt update
apt upgrade
reboot
apt install ufw fail2ban ca-certificates gnupg lsb-release build-essential docker-ce docker-ce-cli containerd.io mc zip strongswan libstrongswan-standard-plugins strongswan-pki nginx python3-pip mc
/etc/init.d/nginx start
```

Устанавливаем и настраиваем ClamAV:

```
pip3 install cvdupdate
cvd config set --dbdir /var/www/html
cvd update
crontab -e 
В крон добавляем задачу:
30 */4 * * * /bin/sh -c "/usr/local/bin/cvd update &> /dev/null"
```

#### **2) Ставим 3proxy для обхода блокировок**

```
wget https://github.com/z3APA3A/3proxy/archive/0.9.3.tar.gz && tar xzf 0.9.3.tar.gz && cd 3proxy-* && make -f Makefile.Linux 
adduser --system --disabled-login --no-create-home --group proxy3
mkdir -p /var/log/3proxy && mkdir /etc/3proxy
cp bin/3proxy /usr/bin/ 
chown proxy3:proxy3 -R /etc/3proxy      
chown proxy3:proxy3 /usr/bin/3proxy
chown proxy3:proxy3 /var/log/3proxy   
id proxy3     
nano /etc/3proxy/3proxy.cfg
```

Конфиг /etc/3proxy/3proxy.cfg заменить uid/gid полученные из id proxy3:

```
setgid 115
setuid 110

nserver 1.1.1.1
nserver 8.8.8.8

nscache 65536
timeouts 1 5 30 60 180 1800 15 60

external 91.149.232.254
internal 91.149.232.254

daemon

log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30
auth none
#auth strong
#users sega:CL:pass

allow * * * 80-88,8080-8088 HTTP
allow * * * 443,8443 HTTPS
socks -p8083
proxy -n
```

Добавляем в автозагрузку:

`nano /etc/systemd/system/3proxy.service`

```
[Unit]
Description=3proxy Proxy Server

[Service]
Type=simple
ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg
ExecStop=/bin/kill `/usr/bin/pgrep -u proxy3`
RemainAfterExit=yes
Restart=on-failure

[Install]
WantedBy=multi-user.targethj
```

Применяем юнит:

```
systemctl daemon-reload 
systemctl enable 3proxy
```

#### **3) Подготавливаем ufw**

##### **3.1) Для работы с докером:**

`nano /etc/ufw/after.rules`  
Добавить в конец файла

```
# BEGIN UFW AND DOCKER
*filter
:ufw-user-forward - [0:0]
:ufw-docker-logging-deny - [0:0]
:DOCKER-USER - [0:0]
-A DOCKER-USER -j ufw-user-forward

-A DOCKER-USER -j RETURN -s 10.0.0.0/8
-A DOCKER-USER -j RETURN -s 172.16.0.0/12
-A DOCKER-USER -j RETURN -s 192.168.0.0/16

-A DOCKER-USER -p udp -m udp --sport 53 --dport 1024:65535 -j RETURN

-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16
-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8
-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 192.168.0.0/16
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 10.0.0.0/8
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 172.16.0.0/12

-A DOCKER-USER -j RETURN

-A ufw-docker-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW DOCKER BLOCK] "
-A ufw-docker-logging-deny -j DROP

COMMIT
# END UFW AND DOCKER
```

##### **3.2) Для работы с ikev2:**

`nano /etc/ufw/before.rules`

В начало файла

```
*nat
-A POSTROUTING -s 10.10.30.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
-A POSTROUTING -s 10.10.30.0/24 -o eth0 -j MASQUERADE
COMMIT

*mangle
-A FORWARD --match policy --pol ipsec --dir in -s 10.10.30.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
COMMIT
```

##### **3.3) Разрешающие правила ufw:**

```
ufw allow 22 
#HTTP
ufw allow 80        
#IPSEC
ufw allow 500,4500/udp 
#Доступ к 3proxy и нужных ip/подсетей
ufw allow from 94.229.240.0/20 to any port 8083
ufw allow from 94.229.240.0/20 to any port 3128
#Админка WireGuard
ufw route allow from 94.229.246.136 to any port 51821
#WireGuard порт
ufw route allow from any to any port 51820
#доступ из сетей docker во внешний мир
ufw route allow from 172.16.0.0/12 to any
#Доступ из ipsec сети
ufw route allow from 10.10.30.0/24 to any
#Включаем фаервол
ufw enable 
```

#### **4) Настройка Ikev2**

`cd /etc/ipsec.d`

\#Генерируем ключи:  
\#CA

```
ipsec pki --gen --type rsa --size 4096 --outform pem > private/ca.pem
ipsec pki --self --ca --lifetime 3650 --in private/ca.pem --type rsa --digest sha256 --dn "CN=91.149.232.254" --outform pem > cacerts/ca.pem
```

Серверный

```
ipsec pki --gen --type rsa --size 4096 --outform pem > private/debian.pem 
ipsec pki --pub --in private/debian.pem --type rsa | ipsec pki --issue --lifetime 3650 --digest sha256 --cacert cacerts/ca.pem --cakey private/ca.pem --dn "CN=91.149.232.254" --san 91.149.232.254 --flag  serverAuth --outform pem > certs/debian.pem
```

Клиенты( client1,client2,client3 и т.д.):

```
ipsec pki --gen --type rsa --size 4096 --outform pem > private/client1.pem 
ipsec pki --pub --in private/client1.pem --type rsa | ipsec pki --issue --lifetime 3650 --digest sha256 --cacert cacerts/ca.pem --cakey private/ca.pem --dn "CN=client1" --san client1 --flag clientAuth --outform pem > certs/client1.pem
```

Генерируем pfx сертификат

```
openssl pkcs12 -export -out client1.pfx -inkey private/client1.pem -in certs/client1.pem -certfile cacerts/ca.pem
zip client1.zip client1.pfx && mv client1.zip /var/www/html
```

Правим конфиги:

`nano /etc/ipsec.conf`

```
config setup
        uniqueids=never
        charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2,  mgr 2"

conn %default
        keyexchange=ikev2
        ike=aes256-aes128-sha256-sha1-modp3072-modp2048-modp1024
        esp=aes256-aes128-sha256-sha1-modp3072-modp2048-modp1024
        #ike=aes128gcm16-sha2_256-prfsha256-ecp256!
        #esp=aes128gcm16-sha2_256-ecp256!
        fragmentation=yes
        rekey=no
        compress=yes
        dpdaction=clear
        left=%any
        leftauth=pubkey
        leftsourceip=91.149.232.254
        leftid=91.149.232.254
        leftcert=debian.pem
        leftsendcert=always
        leftsubnet=0.0.0.0/0
        right=%any
        rightauth=pubkey
        rightsourceip=10.10.30.0/24
        rightdns=8.8.8.8,8.8.4.4

conn ikev2-pubkey
        auto=add
```

`nano /etc/ipsec.secrets`

```
: RSA debian.pem
```

`ipsec restart`

# **WireGuard**

`mkdir /opt/wireguard/ && cd /opt/wireguard/ && nano docker-compose.yml`

```
version: "3.8"
services:
  wg-easy:
    environment:
      # ⚠️ Required:
      # Change this to your host's public address
      - WG_HOST=91.149.232.254

      # Optional:
      - PASSWORD=PASS
      # - WG_PORT=51820
      #- WG_DEFAULT_ADDRESS=10.99.99.1
      - WG_DEFAULT_DNS=1.1.1.1
      # - WG_MTU=1420
      # - WG_ALLOWED_IPS=192.168.15.0/24, 10.0.1.0/24
      # - WG_PRE_UP=echo "Pre Up" > /etc/wireguard/pre-up.txt
      # - WG_POST_UP=echo "Post Up" > /etc/wireguard/post-up.txt
      # - WG_PRE_DOWN=echo "Pre Down" > /etc/wireguard/pre-down.txt
      # - WG_POST_DOWN=echo "Post Down" > /etc/wireguard/post-down.txt

    image: weejewel/wg-easy
    container_name: wg-easy
    volumes:
      - .:/etc/wireguard
    ports:
      - "51820:51820/udp"
      - "51821:51821/tcp"
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1

```

`docker compose up -d`

Ну и на последок

`reboot`

Для ikev2 на андройде используем [strongSwan](https://play.google.com/store/apps/details?id=org.strongswan.android&hl=ru&gl=US)

1\) скачиваем созданный сертификат на телефон [http://91.149.232.254/client1.zip](http://91.149.232.254/client1.zip) и распаковываем его.

2\) Запускаем приложение и создаем новый профиль, указываем сервер и тип vpn: IKEv2 Сертификат и жмем install user sertificate и указываем на сертификат который мы скачали и распаковали в 1 пункте.

[![Screenshot_2023-10-23-17-11-47-35_868094c4ab76ce5b287e1f048a9082d8.jpg](https://wiki.accounter.org/uploads/images/gallery/2023-10/scaled-1680-/screenshot-2023-10-23-17-11-47-35-868094c4ab76ce5b287e1f048a9082d8.jpg)](https://wiki.accounter.org/uploads/images/gallery/2023-10/screenshot-2023-10-23-17-11-47-35-868094c4ab76ce5b287e1f048a9082d8.jpg)

2.1) Если нужно что бы через впн работали только определенные приложения то ставим галочку на Show advanced settings и листаем до Applications, Жмем по All applications use the vpn и выбираем only selected applications use the vpn. Ниже появится пункт Select applications, нажимаем его и выбираем нужные нам приложения

[![IMG_20231023_192113.jpg](https://wiki.accounter.org/uploads/images/gallery/2023-10/scaled-1680-/img-20231023-192113.jpg)](https://wiki.accounter.org/uploads/images/gallery/2023-10/img-20231023-192113.jpg)

3\) Сохраняем настройки и подключаемся к vpn

3proxy используется совместно с[ плагином для браузера ](https://chrome.google.com/webstore/detail/npgcnondjocldhldegnakemclmfkngch)

[1)](https://wiki.accounter.org/uploads/images/gallery/2023-10/antizapret.jpg) После установки плагина открываем его настройки

2\) Выбираем пункт "Сво прокси"

3\) Ставим галочку использовать СВОИ прокси

4\) Жмем плюсик и добавляем наш прокси ( протокол: SOCKS5, ip: ip\_servera, port:8083)

5\) жмем применить

[![antizapret.jpg](https://wiki.accounter.org/uploads/images/gallery/2023-10/scaled-1680-/antizapret.jpg)](https://wiki.accounter.org/uploads/images/gallery/2023-10/antizapret.jpg)

После этого идем на сайт который не доступен в россии, например [https://ark.intel.com ](https://ark.intel.com)и открываем настройки, переходим в исключения и добавляем \*.intel.com ( обычно плагин подставляет домен сам) Ставим переключатель на ДА и жмем готово. Снова открываем [https://ark.intel.com](https://ark.intel.com) и у нас открывается сайт без проблем( если он не заблокирован в стране где установлен наш сервер)

 [![antizapret2.jpg](https://wiki.accounter.org/uploads/images/gallery/2023-10/scaled-1680-/antizapret2.jpg)](https://wiki.accounter.org/uploads/images/gallery/2023-10/antizapret2.jpg)

# Proxmox Virtual Environment

## Указать FQDN hostname для lxc контейнера

```
touch /etc/.pve-ignore.hostname
nano /etc/hostname
reboot
```

## Не восстанавливается непривилегированный lxc

```
recovering backed-up configuration from 'dump:backup/vzdump-lxc-209-2025_09_27-07_42_39.tar.zst'
restoring 'dump:backup/vzdump-lxc-209-2025_09_27-07_42_39.tar.zst' now..
extracting archive '/dump/dump/vzdump-lxc-209-2025_09_27-07_42_39.tar.zst'
tar: ./var/spool/postfix/dev/random: Cannot mknod: Operation not permitted
tar: ./var/spool/postfix/dev/urandom: Cannot mknod: Operation not permitted
Total bytes read: 8524410880 (8.0GiB, 198MiB/s)
tar: Exiting with failure status due to previous errors
TASK ERROR: unable to restore CT 209 - command 'lxc-usernsexec -m u:0:100000:65536 -m g:0:100000:65536 -- tar xpf - --zstd --totals --one-file-system -p --sparse --numeric-owner --acls --xattrs '--xattrs-include=user.*' '--xattrs-include=security.capability' '--warning=no-file-ignored' '--warning=no-xattr-write' -C /var/lib/lxc/209/rootfs --skip-old-files --anchored --exclude './dev/*'' failed: exit code 2
```

```
pct restore 209 /dump/dump/vzdump-lxc-209-2025_09_27-07_42_39.tar.zst -ignore-unpack-errors 1 -unprivileged --storage SSD
```

## TASK ERROR: unsupported Debian version

Не удается запустить или развернуть lxc контейнер свежего дистрибутива, на устаревшем PVE:

```
extracting archive '/var/lib/vz/template/cache/ubuntu-23.10-standard_23.10-1_amd64.tar.gz'
Total bytes read: 546263040 (521MiB, 110MiB/s)
Detected container architecture: amd64
  Logical volume "vm-131-disk-0" successfully removed
TASK ERROR: unable to create CT 131 - unsupported Ubuntu version '23.10'
```

Надо поменять скрипт /usr/share/perl5/PVE/LXC/Setup/Ubuntu.pm так:

```perl
my $known_versions = {
    '23.10' => 1, # mantic <-----
    '20.04' => 1, # focal LTS
    '19.10' => 1, # eoan
```

или /usr/share/perl5/PVE/LXC/Setup/Debian.pm так:

```perl
 die "unsupported debian version '$version'\n"
    if !($version >= 4 && $version <= 13);
```

Как применить изменения не перезагружая PVE машину - не знаю.

Взял [тут](https://forum.proxmox.com/threads/task-error-unsupported-ubuntu-version-18-04.43362/post-372410)

# Перестала запускаться MariaDB

```
mv /var/lib/mysql/tc.log /root/
systemctl restart mariadb
```

# OpenConnect VPN Cisco

[https://struchkov.dev/blog/ru/openconect-vpn-server-cli/](https://struchkov.dev/blog/ru/openconect-vpn-server-cli/)  
Не пробовал, но выглядит круто  
[https://gist.github.com/alirezaomidi/9eeea3aa0a0a5a3404ea82f12741a475](https://gist.github.com/alirezaomidi/9eeea3aa0a0a5a3404ea82f12741a475)

# dig

## Онлайн проверка

[https://xseo.in/dig](https://xseo.in/dig)

## Проверка SRV записи

dig +short \_matrix.\_tcp.example.com SRV

# Sing-box

```json
{
  "log": {
    "level": "info"
  },
  "inbounds": [
    {
      "type": "http",
      "listen": "0.0.0.0",
      "listen_port": 10801
    }
  ],
  "outbounds": [
    {
      "type": "vless",
      "tag": "proxy",
      "server": "router.lala.org",
      "server_port": 18138,
      "uuid": "e2f6aa9e-0706-4485-853e-lallaxxxhui1",
      "tls": {
        "enabled": true,
        "server_name": "sovietunion.su",
        "utls": {
          "enabled": true,
          "fingerprint": "chrome"
        },
        "reality": {
          "enabled": true,
          "public_key": "boberKurWaJa-Perdo_leJebanoeWXVLO_lNKOrogxQ",
          "short_id": "423d37"
        }
      }
    }
  ]
}
```

# FoxyProxy

Позволяет задавать список сайтов, которые необходимо направить через VPN в Chrome   
[Ссылка](https://chromewebstore.google.com/detail/foxyproxy/gcknhkkoolaabfmlnjonogaaifnjlfnp?hl=ru "Ссылка")  
В настройках можно задать перечень узлов, в формате \*://\*example.com/\*[![image.png](https://wiki.accounter.org/uploads/images/gallery/2025-08/scaled-1680-/image.png)](https://wiki.accounter.org/uploads/images/gallery/2025-08/image.png)  
Чтобы прокси работали для указанных узлов, необходимо выбрать "Прокси из шаблона"(1):  
[![image.png](https://wiki.accounter.org/uploads/images/gallery/2025-08/scaled-1680-/lkfimage.png)](https://wiki.accounter.org/uploads/images/gallery/2025-08/lkfimage.png)  
При выборе варианта (2), все сайты будут идти через прокси.

# Mailcow

## postscreen whitelist

Один из серверов отправителя (аэрофлот) попал в чёрный список zen.spamhaus.org (только в него) и mailcow делает NOQUEUE: reject, и письмо не попадает ни в спам папку ни в карантин. Увидеть событие можно через docker logs:

```bash
docker compose logs postfix-mailcow --since 2026-02-24T00:00:00 --until 2026-02-24T23:59:59 | grep "NOQUEUE: reject" | grep mailbox@domain.org
```

Разрешить проблему можно через добавление правила для IP в [data/conf/postfix/custom\_postscreen\_whitelist.cidr](https://docs.mailcow.email/manual-guides/Postfix/u_e-postfix-postscreen_whitelist/)

## clamav whitelist

clamav нашёл вирус в справке 2 НДФЛ.

```bash
docker compose logs clamd-mailcow | grep "FOUND"
```

Попался **Sanesecurity.Malware.31265.XmlHeurGen.UNOFFICIAL(b6ada5f01f1c6879e52e68660df3c438:133548) FOUND**  
[Документация mailcow](https://docs.mailcow.email/manual-guides/ClamAV/u_e-clamav-whitelist/#whitelist-specific-clamav-signatures) велит добавить Sanesecurity.Malware.31265.XmlHeurGen.UNOFFICIAL в **data/conf/clamav/whitelist.ign2**  
[Оказывается, необходимо убирать .UNOFFICIAL](https://www.securiteinfo.com/clamav-antivirus/whitelisting-clamav-signatures.shtml)

Ещё есть плохой вариант добавить блок в конец **data/conf/rspamd/local.d/antivirus.conf**

```
whitelist = [
  "trusted@address.com",
  "@trusteddomain.com"
];
```

## Очередь растёт, письма уходят со второй попытки, с задержкой

В очереди записи с ошибкой:  
Host or domain name not found. Name service error for name=receivedomain.com type=MX: Host not found, try again

В конец файла **/opt/mailcow-dockerized nano data/conf/unbound/unbound.conf** добавить блок:

```
forward-zone:
  name: "."
  forward-addr: 77.88.8.8
  forward-addr: 77.88.8.1
```

```bash
docker compose restart unbound-mailcow
```

+Нужно выключить healthcheck **nano ./mailcow.conf**

```
SKIP_UNBOUND_HEALTHCHECK=y
```

Healthcheck у этого контейнера работает с адресами 8.8.8.8, 1.1.1.1, 9.9.9.9, с которыми есть проблемы в РФ в текущее время.

```
docker compose restart
```

[Выводы ИИ](https://wiki.accounter.org/books/sdelano-ii/page/securedns-mailcow)