LINUX.ORG.RU

Сообщения Entmatix

 

«Не удалось выполнить запрос» при попытке поставить реакцию

Какое-то ограничение?

http://0x0.st/HZF4.jpg

 , ,

Entmatix
()

Какой графический стек выбрать для легкого и долговечного приложения

Пытаюсь написать приложение. Пока все не зашло далеко, хочу начать прикручивать какие то гуи к нему. Вопрос в том, что использовать, если хочется: а) легкого и отзывчивого интерфейса, даже если он выглядит как из 90-х, б) кросс платформенности (нужно покрыть минимум луинуксы 2020+ и винду 8.1+), в) чтобы было максимально живуче, г) желательно, чтобы все это можно было реализовать на питоне, т. к. я других ЯП не знаю.

Какие есть варианты? Или я ищу то, чего не существует? Веб не предлагать, я его потыкал по советам (джанго и фласк), ужаснулся и ушел.

Чтобы был какой-то контекст, приложение для работы с БД (sqlite). По сути делает запросы, заполняет, делает аналитику на основе данных по кнопочке «Сделать анализ» и тому подобное. Все локально. Если совсем питон не пойдет тут, скажите, куда смотреть с учетом того, что осваивать это будет в свободное время непрограммист.

Перемещено hobbit из general

 , ,

Entmatix
()

latex отступ первой строки после заголовка

Пробую latex (надоело воевать с офисами…)

MWE

\documentclass[a4paper, 12pt]{article}
\usepackage[document]{ragged2e}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{indentfirst}
\setlength{\parindent}{20pt}
\usepackage[english, russian]{babel}
\usepackage{geometry}
\geometry{left=20mm, right=10mm, top=10mm, bottom=20mm}
\setcounter{secnumdepth}{0}

\begin{document}
\section{Введение}
\begin{justify}
Тут немного текста.

А тут еще немного.
\end{justify}
\end{document}

У первой строки «Тут немного текста» все равно нет отступа, хотя indentfirst подключен и явно задана величина отступа. В гугле похожие вопросы решались именно так. Костыль в виде \hspace работает, но зачем он нужен в каждом разделе…

 

Entmatix
()

Python скрипт отрабатывает в cron не так, как мне хотелось бы

Казалось бы.

Скрипт - https://privatebin.net/?7a925a1ae401d088#6XCisGp9xAX7viZZKuKzvGFJRbUWFgNsGKeo2oc4VHHP

Задача скрипта - бэкапнуть содержимое докер контейнеров. Сначала бэкапает на второй диск в NAS, потом бэкапает на внешний диск, потом бэкапает на удаленный сервер. Бэкапы на внешний диск и удаленный сервер делается не с основного, а со второго внутреннего, чтобы быстрее можно было заново запустить контейнеры (да, я тушу контейнеры на время бэкапа, а не использую дампы и прочие тулзы live бэкапов, потому что это домашний сервер и 2 минуты запланированного даунтайма для меня приемлемо).

Проблема в бэкапе на внешний диск, который маунтится в /mnt/mirror. Скрипт выполняется от рута. Как видно, в методе mount класса ExternalDrive есть -v. Так я хотел отдебажить проблему, которая заключается в том, что когда скрипт запускается из крона, по какой-то причине внешний диск после расшифровки не маунтится. Бэкап заливается просто в корень, где нет свободного места под такой объем информации. Скрипт умирает. При этом если запускать вручную, то монтирование всегда успешно.

Проблемное место, видимо, тут

    def mount(self):
        """Mount drive."""
        dev_path = Path(f'/dev/mapper/{self.decrypt_name}')
        subprocess.run([
            'mount',
            '-v',
            dev_path,
            self.mount_point
        ])

self.mount_point тут /mnt/mirror. Он существует, никаких ограничений на нем нет.

Как видно из логики в main, у меня есть дополнительная проверка на успешность монтирования:

    drive.mount()
    if drive.mount_point.is_mount():
        backup_to_external_drive()
        multisync()
        drive.umount()

Если к точке монтирования не промонтировал внешний диск, дальнейший бэкап не должен идти. Судя по документации:

subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, timeout=None, check=False) Run the command described by args. Wait for command to complete, then return a CompletedProcess instance.

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

При запуске вручную лог выглядит так:

2023-04-13 13:20:03 INFO Script backup_docker started
2023-04-13 13:21:09 INFO Finished in 00h 01m 06s

При запуске из крона так:

2023-04-14 02:00:01 INFO Script backup_docker started

Дальше пусто, т.к. все зависло (системный диск переполнен). В итоге получается так, что доходя до места, где задействуется функция бэкапа на внешний диск, он вроде как смонтирован, дополнительную проверку на наличие точки монтирования прошел, а на самом деле диск не смонтирован.

Почему при ручном выполнении скрипта внешний диск монтируется, а при выполнении из крона нет (или слишком быстро отмонтируется)?

 , ,

Entmatix
()

Docker Nextcloud Hub проблема с обновлением приложений

Сервер. Докер последней версии. iptables. Поднят Nextcloud Hub 24.0.5 (проблему наблюдаю и на более ранних версиях). Обновления контейнера пулятся нормально. curl из контейнера

curl eth0.me

*мой ip*

apt из контейнера

apt update                                                                                                                                   
Get:1 http://deb.debian.org/debian bullseye InRelease [116 kB]                                                                                                                
Err:1 http://deb.debian.org/debian bullseye InRelease                                                                                                                         
  Connection timed out [IP: 199.232.150.132 80]                                                                                                                               
Err:2 http://deb.debian.org/debian-security bullseye-security InRelease                                                                                                       
  Connection failed [IP: 146.75.118.132 80]                                                                                                                                   
Get:3 http://deb.debian.org/debian bullseye-updates InRelease [44.1 kB]                                                                                                       
Err:3 http://deb.debian.org/debian bullseye-updates InRelease                                                                                                                 
  Connection timed out [IP: 199.232.150.132 80]                                                                                                                               
Reading package lists... Done                                                                                                                                                 
Building dependency tree... Done                                                                                                                                              
Reading state information... Done                                                                                                                                             
All packages are up to date.                                                                                                                                                  
W: Failed to fetch http://deb.debian.org/debian/dists/bullseye/InRelease  Connection timed out [IP: 199.232.150.132 80]                                                       
W: Failed to fetch http://deb.debian.org/debian-security/dists/bullseye-security/InRelease  Connection failed [IP: 146.75.118.132 80]                                         
W: Failed to fetch http://deb.debian.org/debian/dists/bullseye-updates/InRelease  Connection timed out [IP: 199.232.150.132 80]                                               
W: Some index files failed to download. They have been ignored, or old ones used instead.

iptables сервера (полностью автоматические, формируются докером)

Chain INPUT (policy ACCEPT 567K packets, 586M bytes)                                                                                                                          
 pkts bytes target     prot opt in     out     source               destination                              
                                                                                                                                                                              
Chain FORWARD (policy DROP 2286 packets, 174K bytes)                                                                                                                          
 pkts bytes target     prot opt in     out     source               destination                               
7949K 4078M DOCKER-USER  all  --  any    any     anywhere             anywhere                                
7949K 4078M DOCKER-ISOLATION-STAGE-1  all  --  any    any     anywhere             anywhere            
  476 72644 ACCEPT     all  --  any    docker0  anywhere             anywhere             ctstate RELATED,ESTABLISHED
    8   512 DOCKER     all  --  any    docker0  anywhere             anywhere            
  338  962K ACCEPT     all  --  docker0 !docker0  anywhere             anywhere                           
    0     0 ACCEPT     all  --  docker0 docker0  anywhere             anywhere                                  
  63M   35G ACCEPT     all  --  any    dockerpub0  anywhere             anywhere             ctstate RELATED,ESTABLISHED
1228K   74M DOCKER     all  --  any    dockerpub0  anywhere             anywhere             
 861K  119M ACCEPT     all  --  dockerpub0 !dockerpub0  anywhere             anywhere             
1151K   69M ACCEPT     all  --  dockerpub0 dockerpub0  anywhere             anywhere            
    0     0 ACCEPT     all  --  wg0    dockerpub0  anywhere             anywhere            
    0     0 ACCEPT     all  --  dockerpub0 wg0     anywhere             anywhere             
                                                                                                                                                                              
Chain OUTPUT (policy ACCEPT 394K packets, 46M bytes)
 pkts bytes target     prot opt in     out     source               destination          
   
Chain DOCKER (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  !dockerpub0 dockerpub0  anywhere             172.32.0.11          tcp dpt:http
    0     0 ACCEPT     tcp  --  !dockerpub0 dockerpub0  anywhere             172.32.0.12          tcp dpt:8080
    2   128 ACCEPT     tcp  --  !dockerpub0 dockerpub0  anywhere             172.32.0.14          tcp dpt:3000
    0     0 ACCEPT     udp  --  !dockerpub0 dockerpub0  anywhere             172.32.0.14          udp dpt:3000
    0     0 ACCEPT     tcp  --  !dockerpub0 dockerpub0  anywhere             172.32.0.14          tcp dpt:https
  106  6584 ACCEPT     tcp  --  !dockerpub0 dockerpub0  anywhere             172.32.0.14          tcp dpt:http
    0     0 ACCEPT     tcp  --  !dockerpub0 dockerpub0  anywhere             172.32.0.14          tcp dpt:domain
76951 5208K ACCEPT     udp  --  !dockerpub0 dockerpub0  anywhere             172.32.0.14          udp dpt:domain
    0     0 ACCEPT     tcp  --  !dockerpub0 dockerpub0  anywhere             172.32.0.2           tcp dpt:8080
    0     0 ACCEPT     tcp  --  !dockerpub0 dockerpub0  anywhere             172.32.0.2           tcp dpt:3012
    0     0 ACCEPT     tcp  --  !dockerpub0 dockerpub0  anywhere             172.32.0.13          tcp dpt:3000
    0     0 ACCEPT     tcp  --  !dockerpub0 dockerpub0  anywhere             172.32.0.13          tcp dpt:ssh
    0     0 ACCEPT     tcp  --  !dockerpub0 dockerpub0  anywhere             172.32.0.3           tcp dpt:postgresql
    0     0 ACCEPT     tcp  --  !dockerpub0 dockerpub0  anywhere             172.32.0.4           tcp dpt:22300
    0     0 ACCEPT     tcp  --  !dockerpub0 dockerpub0  anywhere             172.32.0.10          tcp dpt:8080
    0     0 ACCEPT     tcp  --  !dockerpub0 dockerpub0  anywhere             172.32.0.8           tcp dpt:http

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
 pkts bytes target     prot opt in     out     source               destination         
  338  962K DOCKER-ISOLATION-STAGE-2  all  --  docker0 !docker0  anywhere             anywhere            
 566K   94M DOCKER-ISOLATION-STAGE-2  all  --  dockerpub0 !dockerpub0  anywhere             anywhere            
  25M   14G RETURN     all  --  any    any     anywhere             anywhere            

Chain DOCKER-ISOLATION-STAGE-2 (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  any    docker0  anywhere             anywhere            
    0     0 DROP       all  --  any    dockerpub0  anywhere             anywhere            
 567K   95M RETURN     all  --  any    any     anywhere             anywhere            

Chain DOCKER-USER (1 references)
 pkts bytes target     prot opt in     out     source               destination         
  69M   35G RETURN     all  --  any    any     anywhere             anywhere  

NAT

Chain PREROUTING (policy ACCEPT 4066 packets, 334K bytes)                                                                                                                     
 pkts bytes target     prot opt in     out     source               destination          
 158K   13M DOCKER     all  --  any    any     anywhere             anywhere             ADDRTYPE match dst-type LOCAL
27998 2643K DOCKER     all  --  any    any     anywhere             anywhere             ADDRTYPE match dst-type LOCAL
27998 2643K DOCKER     all  --  any    any     anywhere            !127.0.0.0/8          ADDRTYPE match dst-type LOCAL
                                                                                                                                                                              
Chain INPUT (policy ACCEPT 187 packets, 45050 bytes)                                                                                                                          
 pkts bytes target     prot opt in     out     source               destination                                                
                                                                                                                                                                              
Chain OUTPUT (policy ACCEPT 1534 packets, 191K bytes)                                                                                                                         
 pkts bytes target     prot opt in     out     source               destination                                               
 155K 9322K DOCKER     all  --  any    any     anywhere            !127.0.0.0/8          ADDRTYPE match dst-type LOCAL       
                                                                                                                                                                              
Chain POSTROUTING (policy ACCEPT 2108 packets, 197K bytes)                                                                                                                    
 pkts bytes target     prot opt in     out     source               destination                                               
   15  1875 MASQUERADE  all  --  any    !docker0  172.17.0.0/16        anywhere                                               
88676 5816K MASQUERADE  all  --  any    !dockerpub0  172.32.0.0/24        anywhere                                             
1259K  116M MASQUERADE  all  --  any    wg0     anywhere             anywhere                                                
    0     0 MASQUERADE  tcp  --  any    any     172.32.0.11          172.32.0.11          tcp dpt:http                        
    0     0 MASQUERADE  tcp  --  any    any     172.32.0.12          172.32.0.12          tcp dpt:8080                         
    0     0 MASQUERADE  tcp  --  any    any     172.32.0.14          172.32.0.14          tcp dpt:3000                         
    0     0 MASQUERADE  udp  --  any    any     172.32.0.14          172.32.0.14          udp dpt:3000                      
    0     0 MASQUERADE  tcp  --  any    any     172.32.0.14          172.32.0.14          tcp dpt:https
    0     0 MASQUERADE  tcp  --  any    any     172.32.0.14          172.32.0.14          tcp dpt:http
    0     0 MASQUERADE  tcp  --  any    any     172.32.0.14          172.32.0.14          tcp dpt:domain
    0     0 MASQUERADE  udp  --  any    any     172.32.0.14          172.32.0.14          udp dpt:domain
    0     0 MASQUERADE  tcp  --  any    any     172.32.0.2           172.32.0.2           tcp dpt:8080
    0     0 MASQUERADE  tcp  --  any    any     172.32.0.2           172.32.0.2           tcp dpt:3012
    0     0 MASQUERADE  tcp  --  any    any     172.32.0.13          172.32.0.13          tcp dpt:3000
    0     0 MASQUERADE  tcp  --  any    any     172.32.0.13          172.32.0.13          tcp dpt:ssh
    0     0 MASQUERADE  tcp  --  any    any     172.32.0.3           172.32.0.3           tcp dpt:postgresql
    0     0 MASQUERADE  tcp  --  any    any     172.32.0.4           172.32.0.4           tcp dpt:22300
    0     0 MASQUERADE  tcp  --  any    any     172.32.0.10          172.32.0.10          tcp dpt:8080
    0     0 MASQUERADE  tcp  --  any    any     172.32.0.8           172.32.0.8           tcp dpt:http


Chain DOCKER (4 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 RETURN     all  --  docker0 any     anywhere             anywhere            
    6   360 RETURN     all  --  dockerpub0 any     anywhere             anywhere            
   62  3720 DNAT       tcp  --  !dockerpub0 any     anywhere             anywhere             tcp dpt:51006 to:172.32.0.11:80
    0     0 DNAT       tcp  --  !dockerpub0 any     anywhere             anywhere             tcp dpt:51010 to:172.32.0.12:8080
    2   128 DNAT       tcp  --  !dockerpub0 any     anywhere             anywhere             tcp dpt:51013 to:172.32.0.14:3000
    0     0 DNAT       udp  --  !dockerpub0 any     anywhere             anywhere             udp dpt:3000 to:172.32.0.14:3000
    0     0 DNAT       tcp  --  !dockerpub0 any     anywhere             anywhere             tcp dpt:51011 to:172.32.0.14:443
  106  6584 DNAT       tcp  --  !dockerpub0 any     anywhere             anywhere             tcp dpt:51012 to:172.32.0.14:80
    0     0 DNAT       tcp  --  !dockerpub0 any     anywhere             anywhere             tcp dpt:domain to:172.32.0.14:53
59676 4058K DNAT       udp  --  !dockerpub0 any     anywhere             anywhere             udp dpt:domain to:172.32.0.14:53
   21  1260 DNAT       tcp  --  !dockerpub0 any     anywhere             anywhere             tcp dpt:51001 to:172.32.0.2:8080
    2   120 DNAT       tcp  --  !dockerpub0 any     anywhere             anywhere             tcp dpt:51002 to:172.32.0.2:3012
    0     0 DNAT       tcp  --  !dockerpub0 any     anywhere             anywhere             tcp dpt:51003 to:172.32.0.13:3000
    0     0 DNAT       tcp  --  !dockerpub0 any     anywhere             anywhere             tcp dpt:51004 to:172.32.0.13:22
    0     0 DNAT       tcp  --  !dockerpub0 any     anywhere             anywhere             tcp dpt:51009 to:172.32.0.3:5432
   24  1440 DNAT       tcp  --  !dockerpub0 any     anywhere             anywhere             tcp dpt:51008 to:172.32.0.4:22300
    0     0 DNAT       tcp  --  !dockerpub0 any     anywhere             anywhere             tcp dpt:51007 to:172.32.0.10:8080
  526 31560 DNAT       tcp  --  !dockerpub0 any     anywhere             anywhere             tcp dpt:51005 to:172.32.0.8:80

Маршруты сервера

default via 192.168.77.1 dev eth0 
10.70.71.0/24 dev wg0 proto kernel scope link src 10.70.71.4 
127.0.0.0/8 dev lo scope link 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
172.32.0.0/24 dev dockerpub0 proto kernel scope link src 172.32.0.1 
192.168.7.0/24 via 192.168.77.1 dev eth0 src 192.168.77.30 
192.168.66.0/24 via 192.168.77.1 dev eth0 src 192.168.77.30 
192.168.77.0/24 dev eth0 proto kernel scope link src 192.168.77.30

Обновление любых приложений Nextcloud не работает. Ошибка

[no app in context] Error: GuzzleHttp\Exception\ConnectException: cURL error 28: Operation timed out after 120001 milliseconds with 0 out of 0 bytes received (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://objects.githubusercontent.com/github-production-release-asset-2e65be/377448625/940ffb54-81cc-4bdf-a3a3-28fd393682ae?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20230309%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230309T120745Z&X-Amz-Expires=300&X-Amz-Signature=38412c03a2489c3f732986dad99a2acb3781ab35b9877cf2d3b9e2a0d9b699b5&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=377448625&response-content-disposition=attachment%3B%20filename%3Dspreed-v15.0.4.tar.gz&response-content-type=application%2Foctet-stream at <<closure>>

 0. /var/www/html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php line 158
    GuzzleHttp\Handler\CurlFactory::createRejection(["GuzzleHttp\\Ha ... l], [28,"Operation t ... "])
 1. /var/www/html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php line 110
    GuzzleHttp\Handler\CurlFactory::finishError(["GuzzleHttp\\Handler\\CurlHandler"], ["GuzzleHttp\\Ha ... l], ["GuzzleHttp\\Handler\\CurlFactory"])
 2. /var/www/html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlHandler.php line 47
    GuzzleHttp\Handler\CurlFactory::finish(["GuzzleHttp\\Handler\\CurlHandler"], ["GuzzleHttp\\Ha ... l], ["GuzzleHttp\\Handler\\CurlFactory"])
 3. /var/www/html/lib/private/Http/Client/DnsPinMiddleware.php line 146
    GuzzleHttp\Handler\CurlHandler->__invoke("*** sensitive parameters replaced ***", "*** sensitive parameters replaced ***")
 4. /var/www/html/3rdparty/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php line 35
    OC\Http\Client\DnsPinMiddleware->OC\Http\Client\{closure}("*** sensitive parameters replaced ***")
 5. /var/www/html/3rdparty/guzzlehttp/guzzle/src/Middleware.php line 31
    GuzzleHttp\PrepareBodyMiddleware->__invoke("*** sensitive parameters replaced ***", "*** sensitive parameters replaced ***")
 6. /var/www/html/3rdparty/guzzlehttp/guzzle/src/RedirectMiddleware.php line 71
    GuzzleHttp\Middleware::GuzzleHttp\{closure}("*** sensitive parameters replaced ***")
 7. /var/www/html/3rdparty/guzzlehttp/guzzle/src/RedirectMiddleware.php line 107
    GuzzleHttp\RedirectMiddleware->__invoke("*** sensitive parameters replaced ***", "*** sensitive parameters replaced ***")
 8. /var/www/html/3rdparty/guzzlehttp/guzzle/src/RedirectMiddleware.php line 73
    GuzzleHttp\RedirectMiddleware->checkRedirect("*** sensitive parameters replaced ***", "*** sensitive parameters replaced ***", "*** sensitive parameters replaced ***")
 9. /var/www/html/3rdparty/guzzlehttp/promises/src/FulfilledPromise.php line 41
    GuzzleHttp\RedirectMiddleware->GuzzleHttp\{closure}("*** sensitive parameters replaced ***")
10. /var/www/html/3rdparty/guzzlehttp/promises/src/TaskQueue.php line 48
    GuzzleHttp\Promise\FulfilledPromise::GuzzleHttp\Promise\{closure}("*** sensitive parameters replaced ***")
11. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php line 248
    GuzzleHttp\Promise\TaskQueue->run(true)
12. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php line 224
    GuzzleHttp\Promise\Promise->invokeWaitFn()
13. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php line 269
    GuzzleHttp\Promise\Promise->waitIfPending()
14. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php line 226
    GuzzleHttp\Promise\Promise->invokeWaitList()
15. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php line 62
    GuzzleHttp\Promise\Promise->waitIfPending()
16. /var/www/html/3rdparty/guzzlehttp/guzzle/src/Client.php line 187
    GuzzleHttp\Promise\Promise->wait()
17. /var/www/html/lib/private/Http/Client/Client.php line 218
    GuzzleHttp\Client->request("get", "https://github. ... z", ["/var/www/html/ ... "])
18. /var/www/html/lib/private/Installer.php line 295
    OC\Http\Client\Client->get("https://github. ... z", ["/tmp/oc_tmp_Fhxhxs-.tar.gz",120])
19. /var/www/html/lib/private/Installer.php line 193
    OC\Installer->downloadApp("*** sensitive parameters replaced ***", false)
20. /var/www/html/apps/settings/lib/Controller/AppSettingsController.php line 535
    OC\Installer->updateAppstoreApp("*** sensitive parameters replaced ***")
21. /var/www/html/lib/private/AppFramework/Http/Dispatcher.php line 225
    OCA\Settings\Controller\AppSettingsController->updateApp("*** sensitive parameters replaced ***")
22. /var/www/html/lib/private/AppFramework/Http/Dispatcher.php line 133
    OC\AppFramework\Http\Dispatcher->executeController(["OCA\\Settings\ ... "], "updateApp")
23. /var/www/html/lib/private/AppFramework/App.php line 172
    OC\AppFramework\Http\Dispatcher->dispatch(["OCA\\Settings\ ... "], "updateApp")
24. /var/www/html/lib/private/Route/Router.php line 298
    OC\AppFramework\App::main("OCA\\Settings\\ ... r", "updateApp", ["OC\\AppFramewo ... "], ["*** sensitive  ... "])
25. /var/www/html/lib/base.php line 1047
    OC\Route\Router->match("/settings/apps/update/spreed")
26. /var/www/html/index.php line 36
    OC::handleRequest()

GET /settings/apps/update/spreed
from 192.168.77.30 by admin at 2023-03-09T12:11:50+00:00

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

В чем может быть проблема? Судя по всему она не распространенная, иначе бы все уже подняли бы шум.

Работает НК после реверс прокси (nginx-proxy-manager в отдельном контейнере). В логах нжинкса я никаких ошибок или блоков не вижу. Все как у других контейнеров. На хосте поднят wg до vps она же шлюз. Весь трафик идет через wg. Внутри wg все клиенты nextcloud. Снаружи их нет. Все клиенты успешно взаимодействуют друг с другом, с НК и с другими сервисами в докере.

Где-то мисконфиг у меня в настройках сети или НК, не знаю… docker-compose.yml если что:

services:
  db:  
    image: mariadb:10.5    
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:                                                                           
      - /opt/docker/persistent/nextcloud-db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=secret
      - MARIADB_AUTO_UPGRADE=0
      - MARIADB_DISABLE_UPGRADE_BACKUP=1
    env_file:
      - db.env
          
  redis:
    image: redis:alpine
    restart: always

  app:
    image: nextcloud:apache
    restart: always
    ports:
      - "51005:80"
    volumes:
      - /mnt/media/docker/containers/nextcloud:/var/www/html
    environment:
      - MYSQL_HOST=db
      - REDIS_HOST=redis
    env_file:
      - db.env
    depends_on:
      - db
      - redis

  cron:
    image: nextcloud:apache
    restart: always
    volumes:
      - /mnt/media/docker/containers/nextcloud:/var/www/html
    entrypoint: /cron.sh
    depends_on:
      - db
      - redis

networks:
  default:
    name: dockerpub0
    external: true

 , , ,

Entmatix
()

Выбора ноутбука тред в 2023

Очередной. Я много подобных тут прочитал за последние полтора года. У меня немного другие требования. Рынок ноутов считай не знаю, особенно с нынешними китайцами. Нужно:

  • 13,3-15,6
  • Максимально хороший экран от 1080р IPS SRGB 100%
  • Тачпад по качеству близкий к макбукам (не хочу таскать мышку)
  • Максимально хорошая клава, желательно без нампада
  • Встройка
  • Аптайм 10+ часов плотной офисной работы + видео
  • 16-32 Гб рамы
  • До 150 тыр.
  • Продается в РФ
  • !Внезапно! Полная совместимость с линуксом

В поисках выдает только макбуки и всякие трансорфмеры с тачскринами. Такого не нужно. Нужна классика. По поводу поколения процессоров и вот этого всего - мне хватит 5700U и выше, но лучше иметь небольшой запас по производительности.

Юзкейс: офисная работы, много браузера, любительская разработка на питоне, пара виртуалок (не постоянных).

Уже отсеял: современные синкпады (щупал в местном мвидео) - просто ужасный экран. Остальное у них даже смотреть не стал.

P.S. Пользуясь случаем продам свой macbook air m1 16/512 год в пользовании. Состояние отличное+++. Лоровцам со скидкой.

 , ,

Entmatix
()

Корреляция между счастьем и используемой системой

https://lunduke.substack.com/p/the-least-happy-computer-users-those

Опрос среди более 6000 респондентов.

Самые довольные среди ОС для ПК/мобильных устройств - пользователи macOS, а также тандема macOS + iOS.

Среди пользователей дистрибутивов линукса самые довольные - пользователи slackware, самые недовольные - пользователи arch linux.

Немного пятницы для вас.

 , , ,

Entmatix
()

Часть инклюдов в rsync не работают

Скрипт

#!/bin/sh

alienbob_repo_url='rsync://bear.alienbase.nl/mirrors/people/alien/slackbuilds'
local_repo_path='/home/user/slackware/alienbob'

mkdir -p "$local_repo_path" || exit 1
pkg_arch="pkg64"
distro_ver="15.0"

# Not syncing - p7zip, cabextract, chromium-ungoogled. ???
rsync -ahv --delete --prune-empty-dirs --progress \
      --include="*/" \
      --include='CHECKSUMS.md5' \
      --include='CHECKSUMS.md5.asc' \
      --include="calibre/${pkg_arch}/${distro_ver}/*" \
      --include="cabextract/${pkg_arch}/${distro_ver}/*" \
      --include="chromium-ungoogled/${pkg_arch}/${distro_ver}/*" \
      --include="docker/${pkg_arch}/${distro_ver}/*" \
      --include="containerd/${pkg_arch}/${distro_ver}/*" \
      --include="ffmpeg/${pkg_arch}/${distro_ver}/*" \
      --include="jq/${pkg_arch}/${distro_ver}/*" \
      --include="libtorrent-rasterbar/${pkg_arch}/${distro_ver}/*" \
      --include="keepassxc/${pkg_arch}/${distro_ver}/*" \
      --include="pcsc-lite/${pkg_arch}/${distro_ver}/*" \
      --include="botan/${pkg_arch}/${distro_ver}/*" \
      --include="minizip/${pkg_arch}/${distro_ver}/*" \
      --include="qbittorrent/${pkg_arch}/${distro_ver}/*" \
      --include="nextcloud-client/${pkg_arch}/${distro_ver}/*" \
      --include="obs-studio/${pkg_arch}/${distro_ver}/*" \
      --include="p7zip/${pkg_arch}/${distro_ver}/*" \
      --include="openjdk11/${pkg_arch}/${distro_ver}/*" \
      --include="obs-studio/${pkg_arch}/${distro_ver}/*" \
      --include="runc/${pkg_arch}/${distro_ver}/*" \
      --include="x264/${pkg_arch}/${distro_ver}/*" \
      --include="x265/${pkg_arch}/${distro_ver}/*" \
      --include="wine/${pkg_arch}/${distro_ver}/*" \
      --exclude="*" \
      "${alienbob_repo_url}/" \
      "${local_repo_path}/" \
      && echo Update: OK

Синкает все, кроме p7zip, cabextract, chromium-ungoogled. Дошло до того, что я копировал из адресной строки пути. Ну не синкает эти директории и их содержимое и все тут. Где тут ошибка? Глаза замылились видимо.

Думал, пока пост пишу и объясняю, что не так, до меня снизойдет озарение, но что-то его пока нет…

 

Entmatix
()

Забавный баг? с обгоном в time trial в supertuxkart

Давно не играл, тут решил перепройти, тем более новые карты появились. И тут нашел забавный то ли баг, то ли фичу. Есть испытания time trial (я только на Garden трассе его обнаружил). Нужно просто финишировать первым, при этом на карте нет сюрпризов, зато куча поворотов и бананов. Если обогнать всех и на последнем кругу прийти первым, но при этом, допустим, обогнав шестого из шести игроков, то игра почему-то засчитывает, что ты пришел пятым! Я сейчас три раза обогнал всех на эксперте на этой карте и все три раза оказался на 4 или 5 месте, потому что успел второй раз обогнать последнего/предпоследнего.

Это фича или баг? У кого нибудь воспроизводится? Версия 1.4.

 ,

Entmatix
()

Совет по разработке веб фронта для неразработчика

Хочу сделать несколько простых веб сервисов (или как это правильно называется, когда есть веб фронт с заполнением чего-то, вычислением и представлением каких-то результатов?). Хочу именно сам, потому что и полезно, как вспомогательная деятельность, и интересно.

Более подробно: под мои задачи сделать веб страницу с полями, куда я ввожу какие-либо данные, которые заносятся в БД (sqlite, наверное, данных не так много, может на пару десятков тысяч строк), потом производятся некоторые расчеты, которые выводятся на страницу. Динамического обновления не надо, просто статика. Нажал - обновилась страница - результат показался. Ввел данные - нажал кнопку - данные отправились в БД. Красивостей особых не надо. По сути - заполнение бд, расчет, предоставление результата. Одна из крайне желательных фич, которую хочу внедрить, - выпадающий список с авто дополнением некоторых полей. Например, вводишь «карт», а тебе предлагают для дополнения из базы (это для связанных полей many-to-many), варианты «карта», «картошка», «картина» и т.д.

Что я немного умею: баш, питон (пара скриптов с простыми классами на пару тысяч строк).

Вопрос: что взять в качестве инструмента (вроде у питона есть фреймворки (джанго, фласк и т.п.)), но мне не хватает знаний/опыта понять, подходят ли они)? Оставить питон или взять какое-нибудь php? Может БД тоже другую? Мне не нужно перспектив разработчика, нужно чисто для себя и решить свои задачи при этом.

Насоветуйте. Для опытных объяснение может быть слишком поверхностным, поэтому задавайте уточняющие вопросы.

Если получиться что-то более-менее вменяемое - выложу в открытый доступ, чтобы пользовались все нуждающиеся. По заветам FOSS. Хотя кому это надо…

P.S. Всякие airtables и аналоги не подходят. Много лишнего, формат работы с базой неудобный, нет нужных выводов информации, нельзя при желании расширить самому как мне нужно не влезая в их код, а чтобы мне туда влезть намного больше сил и времени уйдет, чем самому сделать точно как мне надо.

Перемещено hobbit из general

 , , , ,

Entmatix
()

Как в emacs экспортировать агенду в pdf с русским языком

Проблема, судя по всему, в кодировке, но какую точно переменную нужно поменять - не знаю. Экспорт делаю через org-agenda-write. Настройки экспорта такие:

((org-agenda-span 'week)
 (org-agenda-add-entry-text-maxlines 100)
 (ps-print-color-p 'black-white)
 (ps-font-size 16)
 (ps-font-family 'Courier)
 (ps-number-of-columns 1)
 (ps-landscape-mode t))

По кодировке

(prefer-coding-system 'utf-8)
(modify-coding-system-alist 'file "\\.pdf\\'" 'utf-8)

Пробовал windows-1252, iso-8859-1.

Любой pdf получается таким. Что поправить, чтобы родной язык увидеть?

Увидел, что еще может font-family влиять на это. Какой рекомендуется для русского?

 ,

Entmatix
()

Логика работы gpg при подписании файлов

gpg 2.2.40
libgcrypt 1.8.9

Спойлер: здесь будет много вопросов «это как?».

Для меня тема подписания (не шифрования, а именно подписания) файлов с gpg новая, может я, конечно, чего-то не понял. Вот три ситуации:

  1. Файл А. Подписываю его подписью 1. Подписываю подпись 1 подписью 2. При верификации подписи я вижу обе подписи как подпись 2. Если удалить/переместить подпись 2 в другое место или переименовать, то опять вижу подпись 1. Это как?

  2. Та же ситуация с двумя подписями. Подписал файл А подписью 1, а потом подпись 1 подписал подписью 2. Изменил файл. Верифицирую файл и получаю ОК, подпись файла валидна, файл в порядке. Это как? Убираю/удаляю подпись 2 и вижу, что файл не бьется. Это как?

  3. Подписываю файл А подписью 1. Меняю файл А. Проверяю - подпись не бьется. Подписываю уже измененный файл А подписью 2, проверяю подпись 2 - не бьется. Это как?

 , ,

Entmatix
()

Ansible для своих серверов

Вопрос, стоит ли использовать ансибл исходя их:

  • универсальности (единообразного описания процедур),
  • удобной поддержки (язык описания плейбуков ансибла один и тот же, даже если то, чем он управляет, меняется),
  • переносимости,

если речь идет о нескольких своих серверах или проще не заморачиваться и использовать самописные скрипты? Речь о серверах, где 10-15 сервисов типо nextcloud, gitea, miniflux, wireguard, transmission, netdata, plex, samba и т.д.

Настройки всего там вполне себе хватает, даже с переносом конфигов. Стоит оно того или оверкил и проще заскриптовать? Как самоцель ансибл меня не интересует, я не в этой сфере занят. Рассматриваю только с точки зрения бытового удобства и рационального вложения времени в настройку и поддержку своего зоопарка.

 , ,

Entmatix
()

Не срабатывает systemd сервис nftables, если конфиг по симлинку

Может кто-то подтвердить?

root@vps-test:~# uname -a
Linux vps-test 5.10.0-18-amd64 #1 SMP Debian 5.10.140-1 (2022-09-02) x86_64 GNU/Linux

root@vps-test:~# /usr/sbin/nft -f /etc/nftables.conf ; echo $?
0

root@vps-test:~# systemctl start nftables.service
Job for nftables.service failed because the control process exited with error code.
See "systemctl status nftables.service" and "journalctl -xe" for details.
root@vps-test:~# systemctl status nftables.service
● nftables.service - nftables
     Loaded: loaded (/lib/systemd/system/nftables.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Mon 2022-09-19 18:22:24 CEST; 4s ago
       Docs: man:nft(8)
             http://wiki.nftables.org
    Process: 836 ExecStart=/usr/sbin/nft -f /etc/nftables.conf (code=exited, status=1/FAILURE)
   Main PID: 836 (code=exited, status=1/FAILURE)
        CPU: 5ms

Sep 19 18:22:24 vps-test systemd[1]: Starting nftables...
Sep 19 18:22:24 vps-test nft[836]: internal:0:0-0: Error: Could not open file "/etc/nftables.conf": No such file or directory
Sep 19 18:22:24 vps-test systemd[1]: nftables.service: Main process exited, code=exited, status=1/FAILURE
Sep 19 18:22:24 vps-test systemd[1]: nftables.service: Failed with result 'exit-code'.
Sep 19 18:22:24 vps-test systemd[1]: Failed to start nftables.

lrwxrwxrwx 1 root root 44 Sep 19 07:48 /etc/nftables.conf -> ../root/.dotfiles-vps/nftables/nftables.conf

Сервис, насколько я понимаю, рутовый.

root@vps-test:~# systemctl show nftables.service | grep ^User
User=root

Поэтому проблем с доступом быть не должно. Что ему не нравится? Это gnu stow, если что.

Перемещено hobbit из general

 , ,

Entmatix
()

Как на апаче зареверсить все урлы, включая поддомены

Конфигурация:

  1. VPS с апачем для реверспрокси и ВПН (10.0.0.1).

  2. Сервер с вебней, на который надо проксировать, с адресом 10.0.0.2. Допустим, на этом сервере есть веб-приложение miniflux, к которому я хочу получать доступ извне.

Конфиг апача дефолтный для дебиана. Включены модули:

Loaded Modules:
 core_module (static)
 so_module (static)
 watchdog_module (static)
 http_module (static)
 log_config_module (static)
 logio_module (static)
 version_module (static)
 unixd_module (static)
 access_compat_module (shared)
 alias_module (shared)
 auth_basic_module (shared)
 authn_core_module (shared)
 authn_file_module (shared)
 authz_core_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 filter_module (shared)
 headers_module (shared)
 http2_module (shared)
 mime_module (shared)
 mpm_event_module (shared)
 negotiation_module (shared)
 proxy_module (shared)
 proxy_html_module (shared)
 proxy_http_module (shared)
 proxy_http2_module (shared)
 reqtimeout_module (shared)
 setenvif_module (shared)
 status_module (shared)
 xml2enc_module (shared)

Конфиг:

<VirtualHost *:80>
        ServerAdmin root@server
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        <Location /miniflux>
                ProxyPass  http://10.0.0.2:39001/
                ProxyPassReverse  http://10.0.0.2:39001/
                ProxyPreserveHost On
        </Location>
</VirtualHost>

Домен - supersite.xyz (для примера). По адресу supersite.xyz/miniflux работает прокси на сервер с miniflux на порту 39001. Браузеру отдает страницу. Но тут у меня две проблемы:

  1. Страница поломана полностью. Как будто css вообще нет или что-то вроде того.

  2. Переход по ссылкам, который подразумевает получение информации с поддоменов сервера с вебней, отдает 404. Допустим, я логинюсь в минифлюкс, что должно меня вести к supersite.xyz/miniflux/login, а вместо этого браузеру отдается supersite.xyz/login.

Если включить ProxyHTML для виртуального хоста, который НЯП для решения таких задачи и предназначен,

    ProxyHTMLEnable On
    ProxyHTMLExtended On # или без расширения

то по адресу supersite.xyz/miniflux я получаю кучу статичных нечитаемых кракозябр без урлов и прочего.

Возможно, корень у обеих проблем общий. Как починить? Мапать вручную через ProxyHTMLURLMap все поддомены? Как-то делать видимым все содержимое /var/www/html на сервере для VPS? Решение нужно такое, чтобы апач мог проксировать к разным бэкэндам (серверам), т.е. кроме url/miniflux могут быть url/gitea, url/plex и т.д., причем по разным адресам.

 ,

Entmatix
()

В чем удобно составить схему небольшой сети с подробностями

Решил задокументировать, что как дома устроено, чтобы не забыть, когда настроил, работает и ты не вмешиваешься. Внести все сетевые устройства (роутеры, свичи), серверы, малинки, клиенты и прочее с описанием ролей, кто что делает, какие специфичные настройки использованы, где какие маршруты вручную внесены, что с чем соединяется, vpn, какие бекапы куда идут и вот это все. На бумаге вроде проще всего, но как только какие-то изменения, что тоже бывает, все это надо перерисовывать, оцифровывать. Неудобно в общем. Есть какой-то софт, где это быстро и с комфортом делать, и чтобы была возможность экспорта в какой-нибудь универсальный читаемый формат типо pdf/jpg/png/bmp? Софт для описания промышленных сетей, конечно, не надо, что-то попроще, типо soho, где 3-4 сегмента сети, 2-3 роутера, несколько серверов, failoverы, пара десятков клиентов. Желательно foss. Пробовал в libreoffice draw все это рисовать, как-то не пошло. Костыльно и неудобно добавлять пояснения. В cisco трейсере попробовал, там слишком перемудрено и нельзя нормально пояснения расписывать, чтобы их было видно в экспортированном документе.

 , , ,

Entmatix
()

Как отловить приложение и заблокировать изменение группы для директории

Не могу отловить приложение, котрое меняет группу на директории на примонтированном хдд. Стабильно 5-6 раз в день получаю другую группу. Натравил в цикле lsof с минимальным таймаутом, за 3 с половиной дня никого не поймал. Уже пробовал g+s выдавать, но это не спасает, потому что что-то меняет целенаправленно только одну директорию, а созданные в ней файлы не трогает. Гугл меня оставил без идей. Мне надо чтобы в директорию могли писать, с нее могли читать, но группа должна быть строго определенная. В chattr вроде полезных опций для моего случая нет. SELinux/apparmor ставить не хотелось бы (не стоит оно того).

Из полезного, что выяснил, меняющее приложение или из под рута работает, или из под моего юзера, потому что у других прав менять директорию нет. Читаю сейчас доки про acl, пока не понятно, есть там что-то полезное или нет.

Как запретить менять группу и отловить джо?

P.S. В ro отправить не вариант, туда нужно писать.

 , ,

Entmatix
()

PleX сервера взломали или вроде того. Сбросьте пароли

Если кто использует plex и еще не видел рассылку, то коротко

Yesterday, we discovered suspicious activity on one of our databases. We immediately began an investigation and it does appear that a third-party was able to access a limited subset of data that includes emails, usernames, and encrypted passwords.

Rest assured that credit card and other payment data are not stored on our servers at all and were not vulnerable in this incident.

Long story short, we kindly request that you reset your Plex account password immediately. When doing so, there’s a checkbox to «Sign out connected devices after password change.»

Сходил, сбросил - https://app.plex.tv/auth/#?resetPassword

P.S. В блоге новость у них не увидел. Мб не успели написать. Пруф - https://0x0.st/o9Ii.57.png

P.P.S. Это plex слоупоки, получается. Новость была еще вчера - https://9to5mac.com/2022/08/24/plex-data-breach/ , а они только сегодня вечером начали рассылать предупреждения. Мда.

 , , ,

Entmatix
()

Получить вывод ffprobe в python3

Команда

ffprobe -show_streams -show_entries "format:stream" -of flat -v quiet path_to_file

в терминале отрабатывает на 5. В питоне опять что-то не могу завести это все (уже хапнул горя с этим питоном и его странными вызовами внешних команд… надо было перл что-ли брать..?).

    cmd = ["ffprobe",
           "-show_streams",
           "-show_entries",
           "\"format:stream\"",
           "-of",
           "flat",
           "-v",
           "quiet",
           "/path/to/file"]
    ffprobe = subprocess.run(cmd, capture_output=True)
    print(ffprobe)

Всегда пустой вывод. Если добавить shell=True, то показывает

You have to specify one input file.
Use -h to get full help or, even better, run 'man ffprobe'

Я уже и напрямую путь указывал, и PosixPath давал через pathlib, не кушает. Что не так? На том же СО куча примеров с ffmpeg и ffprobe в питоне, везде такое прокатывало. Глаз, наверное, замылился у меня, не вижу очевидное.

https://gist.github.com/hiwonjoon/035a1ead72a767add4b87afe03d0dd7b так тоже пробовал (функция get_video_info). Так же ошибка.

 , ,

Entmatix
()

Как избежать оверхеда при использовании недоверенного сервера для организации частной сети

Почитал о современных стандартах и протоколах, но ответа для себя не нашел. Думаю, что не они эту задачу решают, но тем не менее… Допустим мы организуем частную сеть для доступа к какой-то инфраструктуре через $VPN_PROTOCOL. Допустим нет возможности организовать прямое подключение к серверу, который находится непосредственно внутри этой инфраструктуры, поэтому используем какой-то сторонний арендованный сервер/ставим стойку и т.д., которая не может находиться 24/7 под нашим контролем, и уже на нем организуем сервер с $VPN_PROTOCOL. Однако в таком случае сервер является точкой, где весь трафик может быть легко просмотрен. Можно использовать VPN over VPN и, например, в качестве верхнего слоя использовать быстрый и легкий wireguard, а внутри него пускать или тот же wireguard, или другой впн, при этом в качестве адреса пира/сервера использовать адрес доверенного сервера в верхнем слое впн. При этом конечно появляется оверхед, который приводит к падению скорости, отзывчивости, не говоря уже о том, что нужно держать всегда два поднятых соединения одновременно и разбираться с маршрутами.

Какие есть инструменты для решения такой задачи, как организация сети через недоверенный сервер, если другие способы (организация расположения доверенного сервера вне инфраструктуры) недоступна? То есть главный вопрос - как не дать недоверенному серверу возможность смотреть трафик между клиентами частной сети?

UPD. Клиент и сервер находятся за NAT. Клиент должен иметь возможность доступа не только к самому доверенному серверу, но и подсети за этим сервером (сам сервер является шлюзом в локалке).

 ,

Entmatix
()

RSS подписка на новые темы