lexa500

lexa500

pushing buttons
Пикабушник
855 рейтинг 17 подписчиков 30 подписок 25 постов 3 в горячем
Награды:
10 лет на Пикабу

А мы сделали телеграм бота с ChatGPT

Привет! мы тут с товарищем обкурились питоном и sql запросами и сделали бота в телеграме для ChatGPT. Из фишек - можно запрашивать картинки из DALL-E, делиться балансом токенов, ну и спрашивать текстом всякое-разное. поскольку доступ до chatgpt все таки платный, то свой баланс можно пополнять через крипту. Бот будет полезен тем, у кого нет нормального доступа до чатгпт, да и просто это забавная штука. Пока что это все может немного странно работать, но мы доделываем по мере способностей.

Сам бот живет здесь

вот пример картинки которую сеть нам сгенерила

А мы сделали телеграм бота с ChatGPT Программирование, Бот, Нейронные сети

команды для бота

генерировать картинки - рисуй ...

/lang перевести текст,

/code писать программы,

поддерживать беседу - цитируйте ответы,

отвечать на обращение "бот" в группах,

если ответ оборвался - процитируйте и скажите "дальше",

Условия использования и безопасность /terms

при запросах на рисунки лучше писать подробно: "рисуй рассвет в горах весной с хорошей погодой фотореалистично". чем больше подробностей в запросе, тем больше шансов что сеть сделает нужное.

возможно наше творчество кому-то будет полезно. всем спасибо, приходите.

Показать полностью 1

Поиск эксперта для покупки дома в ЛО

Привет! мне нужна строительная экспертиза в Ленобласти для покупки загородного дома, можете кого то посоветовать? ну или хотя бы направьте  в нужном направлении. Нужно будет со мной посетить 2-3 загородных дома и посмотреть что с ними может быть не так. Естественно за деньги. Верю в силу Пикабу, спасибо!

59

Мой способ слушать музыку на linux

Итак, я снова выхожу на связь со своим красноглазием.

Как нормальный человек слушает музыку? Ну включит bluetooth уши и откроет любой музыкальный стрим-сервис на телефоне.

Это здорово, но вот что делать если у тебя 400гб DSD/Hi-Rez файлов?

Мой способ слушать музыку на linux Linux, Dsd, Музыка, Длиннопост

Поэтому я решил собрать небольшой сетап для прослушивания, ну и опять же мне бухать немного надоело сидя в изоляции.


нам понадобятся такие ингридиенты:

1.ЦАП (по сути юсб звуковая карта), свою (S.M.S.L IQ) я купил пару лет назад на али, она оказалась весьма годным примером china hi-fi

2.Odroid C2 (ну или RPI 3/4 любой линуксовый пк на арм/х86)

3.проводки, наушники, резиночка, наушники в моем случае Tinaudio T2 с балансным проводом и цап имеет балансный выход.

4.руки и немного мозга


Для проигрывания музыки я буду использовать связку MPD+alsa, задача избежать DoP и прочего транскодинга, т.е. отдать DSD напрямую в устройство

что такое DSD  здесь-

https://www.whathifi.com/us/advice/what-dsd-audio-how-it-wor...


Ок, погнали.

Берем ваш ПК с линуксом (желательно какой то свежий дистрибутив, убунта, армбиан, хотя тут сами выбирайте, оно не настолько принципиально),

все соединяем, и смотрим что бы наш цап виделся в выводе lsusb

в моем случае это вот:

lsusb

===========================

Bus 001 Device 004: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter

Bus 001 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

вот это >>>>> Bus 001 Device 005: ID 152a:85dd Thesycon Systemsoftware & Consulting GmbH

Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

===========================

запоминаем ID 152a:85dd, он нам пригодится.

идем настраивать модуль альсы.


смотрим какие аудиокарты видит альса

aplay -l

==========================

**** List of PLAYBACK Hardware Devices ****

card 0: OdroidC2 [Odroid-C2], device 0: fe.dai-link-0 (*) []

Subdevices: 1/1

Subdevice #0: subdevice #0

card 1: USB20 [SMSL IQ USB2.0], device 0: USB Audio [USB Audio]

Subdevices: 1/1

Subdevice #0: subdevice #0

==========================

нужная идет под номером 1.


ставим перманентный индекс для аудиокарты в модуле

nano /etc/modprobe.d/alsa-base.conf

========================

options snd-usb-audio index=1 vid=0x125a pid=0x85dd

========================

т.е. мы указали ID устройства, для того что бы при переключении в другой разъем номер с точки зрения альсы не менялся.

Если вы успешный и богатый и звуковых карт у вас несколько, то конфиг модуля примерно такой надо

============================

options snd-usb-audio index=1,2 vid=0x25c4,0x21b4 pid=0x0008,0x0083

============================


осталось только подергать модуль (ну или перезагрузится, если не лень)

=============================

sudo modprobe -r snd-usb-audio

sudo modprobe snd-usb-audio

=============================


теперь поставим MPD, можно из оф реп, можно из сорцов

==========

sudo apt-get update

sudo apt-get install mpd

==========


смотрим статус

=============

sudo systemctl status mpd.service

=============

mpd.service - Music Player Daemon

Loaded: loaded (/lib/systemd/system/mpd.service; enabled; vendor preset: enabled)

Active: active (running) since Fri 2019-10-04 00:45:52 MSK; 14s ago

Docs: man:mpd(1)

man:mpd.conf(5)

file:///usr/share/doc/mpd/user-manual.html

Main PID: 11181 (mpd)

Tasks: 3 (limit: 4915)

Memory: 12.6M

CPU: 511ms

CGroup: /system.slice/mpd.service

└─11181 /usr/bin/mpd --no-daemon

Oct 04 00:45:52 nuc systemd[1]: Starting Music Player Daemon...

Oct 04 00:45:52 nuc mpd[11181]: hybrid_dsd: The Hybrid DSD decoder is disabled because it was not explicitly enabled

Oct 04 00:45:52 nuc systemd[1]: Started Music Player Daemon.

============


теперь сконфигурячим mpd

nano /etc/mpd.conf

===============================

# See: /usr/share/doc/mpd/mpdconf.example

pid_file "/run/mpd/mpd.pid"

db_file "/var/lib/mpd/mpd.db"

state_file "/var/lib/mpd/mpdstate"

playlist_directory "/var/lib/mpd/playlists"

music_directory "/mnt/samba-share/+muz/"

database {

plugin "simple"

path "/var/lib/mpd/db"

}

resampler {

plugin "libsamplerate"

type "0"

}

replaygain "off"

input {

plugin "tidal"

enabled "no"

}

input {

plugin "qobuz"

enabled "no"

}

audio_output {

type "alsa"

device "hw:1,0"

name "SMSL IQ"

auto_resample "no"

auto_channels "no"

auto_format "no"

replay_gain_handler "none"

dop "no"

mixer_type "none"

}

===============================

немного про опции конфига:

music_directory - место где лежит музыка (в моем случае примонтированная самба шара, самбу можно напрямую через плагин)

database - нужна для сохранения мета инфы о треках,

resampler - выключаем,он может быть нужен если цап не поддерживает параметры потока

replaygain - тоже отключаем, громкость я буду крутить на самой звуковухе

input plugin - я не использую, но можно цеплять всякие внешние сервисы

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

опций очень много, у меня так достаточно минимальный конфиг, основные смотрите на офсайте MPD https://www.musicpd.org/doc/html/user.html#configuration


после кручения опций рестаруем мпд

=======

sudo systemctl restart mpd.service

======

Все, если все ок, можно взять телефон и поставить приложение для управления нашей музыкальной шкатулкой(например, M.A.L.P. под андроид) указать ip и порт коробочки и наслаждаться музыкой. В планах сделать управление через bluetooth, но пока не понял, можно или нет.

Вариантов кастомизации много- приделать аккумулятор и перенести на флешку музыку и сделать портативную AP - куда то кататься или например приделать экран для отображения трека и хардверные кнопки для переключения.

Мой способ слушать музыку на linux Linux, Dsd, Музыка, Длиннопост

Всем спасибо, надеюсь, это скрасит вашу изоляцию.

Показать полностью 2
157

Автономный криптороутер своими руками

Привет, я опять выхожу на связь.

В прошлом своем посте я писал про решение для впн на Wireguard.

Вот дошли руки рассказать про практическое применение вот этого всего.


Поскольку ваергард не очень в телефонах поддерживается было решено сделать автономный криптороутер на аккумуляторе.

Я не бухал тут пару недель, сдал бутылки и в результате накопил на RPi3 c raspbian, tp-link tl-wn772n, huawei e8372, аккум на 10000 от xiaomi, немного велкро ленты. получилось вот такое:

Автономный криптороутер своими руками Wireguard, Raspberry pi, VPN, Linux, Длиннопост

Модем был перешит на нормальный ttl и imei номер, отвязан от оператора(и можно ставить норм тарифы).


На распбиан были поставлены модули для rtl8188(при обновлении через apt-update может отваливаться, под каждую версию ядра свой нужен), навернут hostapd, dnsmasq. поставлен сам ваергард с клиентским конфигом и написан мелкий systemd модуль который через 100 секунд после старта поднимает сессию впн, iptables с натом через wg0.

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


по автономности получилось примерно сутки, в модеме было 2 разъема на ts9, туда воткнул доп антенки, правда толку от них не очень было. вайфая хватает на участок 6 соток.


По итогу вся конструкция осела на даче у мамы, там успешно тянет Shinobi (zoneminder слишком тупорылый) для видеонаблюдения + поставил антенку побольше, поскольку в той местности плохой прием.

Автономный криптороутер своими руками Wireguard, Raspberry pi, VPN, Linux, Длиннопост

Всем спасибо, надеюсь, кому-то будет полезным

Показать полностью 2
73

Сам себе vpn

Привет! На волне общей борьбы со здравым смыслом расскажу как настроить свой очень шустрый впн за минимальные деньги. это не будет 100500й гайд про openvpn или strongswan.

Речь пойдет про новомодное решение WireGuard

https://www.wireguard.com/

ребята вообще молодцы и используют крутую криптографию (Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF), еще очень круто что это все живет в кернеле и работает очень шустро на минимальных инстансах любых хостеров.

Вообще гайд как настроить(а там не сложно) есть на офсайте , но я поясню некоторые не совсем очевидные моменты, так что гайд не совсем для новичков

оригинал инструкции взят вот тут

https://www.ckn.io/blog/2017/11/14/wireguard-vpn-typical-set...


Из минусов - нормально работает на linux, и роутерах ddwrt(на каких-то чипах - не очень),  роутерах ubiquty/vyatta. на вин10 и макос работает в юзерленде, но стабильно. на устройствах андроид -скорее не работает.

Итак по настройке

Предположу, что виртуальную мащину у хостера вы уже купили (aruba, scaleway, digitalocean, aws - да тысячи их) и там стоит что-то из семейства debian

1. ставим по инструкции отсюда https://www.wireguard.com/install/ там под разные дистры, так что все более менее понятно, на клиент и на сервер


2. генерим по 2 ключа на клиент и сервер

####

Umask 077

wg genkey | tee server_private_key | wg pubkey > server_public_key

wg genkey | tee client_private_key | wg pubkey > client_public_key

####


3. делаем конфиг сервера /etc/wireguard/wg0.conf

####

[Interface]

Address = 10.200.200.1/24

SaveConfig = true

PrivateKey = <insert server_private_key>

ListenPort = 51820

[Peer]

PublicKey = <insert client_public_key>

AllowedIPs = 10.200.200.2/32

####

Моменты такие wg0 -будет название интерфейса, ключи какие куда-тоже понятно, вставлять, похоже, что сам ключ а не путь до файла.AllowedIPs - виртальный адрес клиента


4. делаем конфиг клиента /etc/wireguard/wg0-client.conf

####

[Interface]

Address = 10.200.200.2/32

PrivateKey = <insert client_private_key>

DNS = 10.200.200.1

[Peer]

PublicKey = <insert server_public_key>

Endpoint = <insert vpn_server_address>:51820

AllowedIPs = 0.0.0.0/0

PersistentKeepalive = 21

####

тут allowedips = 0.0.0.0/0 -завернет весь траффик клиента в тунель, dns - это на сервере стоит unbound dns для пущей секурности. endpoint - внешний адрес сервера


5. поднимаем интерфейс на сервере

####

chown -v root:root /etc/wireguard/wg0.conf

chmod -v 600 /etc/wireguard/wg0.conf

wg-quick up wg0

systemctl enable wg-quick@wg0.service

####


6.включаем ротуинг на сервере в /etc/sysctl.conf добавляем  net.ipv4.ip_forward=1

и что бы не перезагружать

####

sysctl -p

echo 1 > /proc/sys/net/ipv4/ip_forward

####


7.пилим iptables на сервере

####

iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

iptables -A INPUT -p udp -m udp --dport 51820 -m conntrack --ctstate NEW -j ACCEPT

iptables -A INPUT -s 10.200.200.0/24 -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW -j ACCEPT

iptables -A INPUT -s 10.200.200.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT

iptables -A FORWARD -i wg0 -o wg0 -m conntrack --ctstate NEW -j ACCEPT

iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -o eth0 -j MASQUERADE

######

в последней строчке eth0 - название вашего сетевого интерфейса на сервере

настроим сохранение правил

####

apt-get install iptables-persistent

systemctl enable netfilter-persistent

netfilter-persistent save

####


8. стаивим unbound для dns на сервер


####

apt-get install unbound unbound-host curl

curl -o /var/lib/unbound/root.hints https://www.internic.net/domain/named.cache

####


конфиг днс сервера такой /etc/unbound/unbound.conf

#####

server:

num-threads: 4

#Enable logs

verbosity: 1

#list of Root DNS Server

root-hints: "/var/lib/unbound/root.hints"

#Use the root servers key for DNSSEC

auto-trust-anchor-file: "/var/lib/unbound/root.key"

#Respond to DNS requests on all interfaces

interface: 0.0.0.0

max-udp-size: 3072

#Authorized IPs to access the DNS Server

access-control: 0.0.0.0/0 refuse

access-control: 127.0.0.1 allow

access-control: 10.200.200.0/24 allow

#not allowed to be returned for public internet names

private-address: 10.200.200.0/24

# Hide DNS Server info

hide-identity: yes

hide-version: yes

#Limit DNS Fraud and use DNSSEC

harden-glue: yes

harden-dnssec-stripped: yes

harden-referral-path: yes

#Add an unwanted reply threshold to clean the cache and avoid when possible a DNS Poisoning

unwanted-reply-threshold: 10000000

#Have the validator print validation failures to the log.

val-log-level: 1

#Minimum lifetime of cache entries in seconds

cache-min-ttl: 1800

#Maximum lifetime of cached entries

cache-max-ttl: 14400

prefetch: yes

prefetch-key: yes

####


запускаем днс

####

chown -R unbound:unbound /var/lib/unbound

systemctl enable unbound

####


можно проверить как работает днс таким образом

####

nslookup www.google.com. 10.200.200.1

####


9. поднимаем интерфейс клиента

####

sudo wg-quick up wg0-client

####

проверить моджно командой sudo wg show

должно выдать что то типа

interface: wg0-client

public key: FwdTNMXqL46jNhZwkkzWsyR1AIlGX66vRWe1HFSemHw=

private key: (hidden)

listening port: 39451

fwmark: 0xca6c

peer: +lb7/6Nn8uhlA/6fjT3ivfM5fWKKQ2L+stX+dSq18CI=

endpoint: 165.227.120.177:51820

allowed ips: 0.0.0.0/0

latest handshake: 49 seconds ago

transfer: 11.41 MiB received, 862.25 KiB sent

persistent keepalive: every 21 seconds


10. Фух, вроде все! проверяем изменился или нет наш ип адрес например вот тут

https://whoer.net/ а днс можно проверить вот здесь http://dnsleak.com/. остановить интерфейс можно вот так

####

sudo wg-quick down wg0-client

####


По тестам - мой провайдер дает 250мбит, оно успешно было завернуто в WG,т.е. все 250 мбит пролезли, инстанс -2core, 1Gb ram, при тесте нагрузка составила 10% от CPU. на такой же машине openvpn смог 80мбит, ipsec/l2tp -130мбит.

Всем спасибо, удачи!

Показать полностью

Странный способ смотреть кино

Привет! Я снова выхожу на связь! Если этот пост наберет какое-то количество плюсов, то я расскажу как решить проблему просмотра кинофильмов дома. Заодно, при чем тут линукс и как нескучно потратить ~100$

73

Как я запилил виртуализацию

Всем привет! Вот обещанный пост по KVM+pci-e passthrough + steamlink.

Итак, начнем. Дома у меня уже лет так 10 живет сервер, живет себе, раздает интернет, качает торрнеты, файлопомойка на нем, еще по мелочи что-то. Сделано все было на Gentoo, ну и так до сих пор на ней. Менялось железо (основной упор на mini-itx + тихие кулеры).


Остальное железо дома - это айпад, рабочий ноутбук на дебиане, айфон, андроид телефон,  андроид(minix neo +KODI) для телевизора, пара одноплатных пк (pi3 + odroid c2) и достаточно приличный ПК с виндой(честно приобретенной, если что) для игор. В какой то момент я с семьей переехал и стало понятно, что придется пожертвовать размерами моего рабочего стола и места для нормального пк не будет, увы. и я стал посматривать на всякие вещи для ускоренной графики на тонких клиентах.

Сразуже мне попался вариант на VirtualGL+ tigerVNC, но не проканало, поскольку пришлось бы использовать решения на wine и прочий playonlinux, который работает не очень, во всяком случае у меня на не запустился Origin.

Следущее решение которое я нашел - Steamlink, если кратко -то это вроде бы решение с ARM камнем и ffmpeg с короткими буферами. для моих задач подошел отлично, но куда же девать сам ПК? так я и пришел к идее запихнуть винду в KVM виртуалку и дать ей видеокарту. Стимлинк я притащил с ибея, через посредников, обошелся он мне в 5500р, в том году еще не продавался официально, сейчас уже да, но цены в наших магазинах -неадекват.

Сразу скажу, что такое требует некоего специфичного железа, т.е. мать и проц должны быть интел и уметь vt-d/vt-x и желательно NVIDIA. Про АМД - вроде как тоже можно, но все неоднозначно, ну и был изначально набор именно Intel+Nvidia.

Как я запилил виртуализацию Proxmox, Pci-e passthrough, Steamlink, Длиннопост

Сейчас конфиг такой:

mobo: asus P8Q77–M2

i7 3770

16gb ram

2x2tb wd

intel 240ssd+bestbuy 240ssd

seagate 500gb

3tb wd green,

Корпус termaltake core v21(влезает 3 диска по 3.5 и 3 диска по 2.5 и он mATX, есть крепеж для СВО)

видюха gigabyte 650ti(тоже поменяю, когда-нибудь на 1060, эхх)

Охлаждение - смесь из noctua +scythe

сетевушка вторая на пси–е. апц упс, точка доступа для вайфая RT–N66U.

Железо - собирал несколько месяцев по авито, постепенно набрал нужный набор.

Как все устроено:

гипервизор proxmox 4.4+ пара патчей с их форума (девелоперская репа)

стартует с 500 гигового винта (потом будет поменян на что то, вернее весь этот зоопарк из ссд поменяю на большой ссд), грузится проксмокс, внутри 2 машины:

1. гента(та самая, которая была), 2физ ядра, 4 гигапамяти, 240 ссд, виртио, mdraid1–2x2tb+luks, 3tb wd backup, машина ничего не делает там особо такого, ну пара проектов по работе, коммунигейт, заббикс, овпн, самба, трансмишшн, seafile, plex, бекапится через bareos, еще пара вещей по мелочи типа раздавания инторнетов. работает в kvm (пока поленился все это перетаскивать в lxc)

2. вин10, 5 ядер, 10 гб оперативки, ссд на 240, kvm, vfio pcie–passhrough, tianocore ovmf uefi bios (без него не заводился проброс видюхи, ну и вин10 же).

ну вин10 стартует, по ац вайфаю стимлинк к ней целяется и можно погонять, например, в stellaris. но по вайфаю есть лаг, так что гораздо лучше проводом. Внутри Стимлинка есть VirtualHere и всякие юсб девайсы типа моего старинного razer imperator и прочих вебкамер успешно попадают в вин машину. Так же мать умеет в AMT+ tty на физ порту, если я совсем что то упорю(АМТ работает с процами БЕЗ литеры К, обратите внимание)

3. Еще есть LXC контейнер для всякого баловства.

Почему не сделал гипервизор из генты?

Ну затеял я все собирать в 2015 году, тогда для маскировки виртуализации от драйвера нвидии требовалось патчить либвирт,а мне было лень и на форуме проксмокс достаточно оперативно ответили девелоперы, так что я остановлся на проксмоксе.

Как собирать и что почитать

1. Вики проксмокса

2. Архиполезный ресурс по vfio  -http://vfio.блогспот__ru

3. Ошибка 43 и как с этим жить

4. Как победить отвал звука по HDMI в госте (это если вы хотите например телевизор физически подрубить) - -http://vfio.блогспот__ru/2014/09/vfio-interrupts-and-how-to-coax-windows.html

(блогспот нелья, увы)

Собирать ставить просто:

берем проксмокс свежий (там скорее всего поправлен тот косяк что вызывал ошибку 43, если нет - курим форумы.

Читаем вики, там подробно все как настраивать.

Обязательно tianocore uefi,

конфиг для виртуалки вот тут мой

bios: ovmf

boot: c

bootdisk: virtio0

cores: 2

hostpci0: 01:00,pcie=1,x-vga=on

ide0: iso1:iso/virtio-win-0.1.112.iso,media=cdrom,size=55592K

machine: q35

memory: 4096

name: win1

net0: e1000=32:33:62:38:63:35,bridge=vmbr0

numa: 0

ostype: win8

scsihw: virtio-scsi-pci

smbios1: uuid=6b380506-55b3-4c7e-a4cb-caacded045fe

sockets: 1

usb0: host=3-1

usb1: host=1-4

virtio0: /dev/disk/by-id/my-ssd-serial


Внимание на то, что нельзя вставлять QXL видеокарту (это приведет к ошибке 43), и пробросу целиком диска через /dev/disk/by-id , без нее - плохо почему-то перезагружается гость, уж не знаю почему, Все остальное - бриджи, проброс юсб -стандартное.

Немного про ошибку 43 - если кратко фирма нвидия -жмоты, на консьюмер сериях видеокарт драйвер определяет что он запущен в вирт машине и принудительно выключается(не устраивает - покупайте GRID), суть манипуляций - прячем hv-vendor-id и шерсть становится густой и шелковистой (не навсех версиях либвирта оно норм работает, читайте маны и ченджлоги).

Еще косяк со стимлинком - отваливается трансляция если выскакивает виндовый UAC и пользователь должен быть залогинен, иначе естственно, не стартует серверная часть Steam (т.е. сам энкодер это не демон)

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

Была идея еще заюзать intel HD для Коди - но увы, нет. vGPU (т.е. разделение ресурсов гпу для гостей) только на свежих поколениях. вроде как QEMU 2.7 уже можно.


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

В планах таки перейти на moonlight+odroid c2, может к весне.

Надеюсь, это будет кому-то полезным. Спрашивайте вопросы.

Показать полностью 1
Отличная работа, все прочитано!