🍄GuidesEusDendrite-Mautrix

Dendrite eta Mautrix zubia instalatzeko jarraibideak

Hemen goran duzue konfigurazioa jaisteko botoia.

Satanikoa ez den sistema batean zaudela suposatuko dut.

tar xf dendrite-mautrix

eta zauden karpetan konfigurazioak agertuko zaizkizu dendrite-mautrix direktorioaren barnean.

GOGORATU iortegam.com aldatzea eta pasahitz guztiak aldatzea
(POSTGRESPASAHITZA, MAUTRIXPOSTGRESPASAHITZA).

KONTUZ: Gogoratu dendrite oraindik Betan dagoela orduan ez dabil guztiz ondo. Hori edo ez dut ondo konfiguratzen jakin. Baina Whatsapp zubia badabil behintzat.

Laburpena/Baliabideak

  1. Matrix zerbitzaria, dendrite (docker gabe, dockerrekin). Synapse erabili daiteke, baina gida honetatik kanpo dago.

  2. Mautrix zubia (docker gabe, dockerrekin)

  3. Android bat behar duzu. Zuk ikusi nola. Makina birtual bidez, munduan ahaztuta dauden milioika mugikorretako bat edota raspberry pi batean android instalatuta. Ondoren dagokion autentikazioa eginda.

Osagaiak

  • Domeinu bat. Merkeenak .party uste dut direla.

  • Beti piztuta egongo den ordenagailu bat (1GB RAMekin soberan eta biltegiratzerako zenbait giga hartu, nik 20GB).

  • (Aukeran eta idealki) Beti piztuta eta konektatuta egongo den "mugikor" bat.

    • iPhone

    • Android duen edozein

      • Mugikorrak

      • Makina birtualak

      • Raspberry

Gauzak azalduta

Instalazioa docker bidez egingo da. Zergatik? Horrela zuentzako errazagoa delako instalatzen (berez nik hori gabe ez dudalako lortu, baina sekretu bat da).

Ezer baino lehen, konfigurazio hauetan server_network izeneko sare bat
erabiltzen da. Hori sortzeko erabili:

docker network create server_network

Nire amonarentzako Dockerren azalpena

Docker eta docker-compose erabiltzen badakizu, pasa hurrengo atalera (Azalpenak).

Irudiak eta Kontenedoreak

Dockerrek gauzak kontainerretan sartzen ditu. Barruan dagoena barruan dago eta kanpokoa kanpoan. Exekuzio isolatuak bezala egiteko aukera ematen du.

Exekuzio isolatu hauek ba containerretan daude, baina nolabait egiten den exekuzioa adierazi beharko da. Horretarako irudiak daude.

Irudiak lirateke containerrak bezala baina izoztuta bezala. Konprimituta edo.
Exekutatzeko prest. Bale, orduan nola sortzen dira irudiak?

Irudiak errezeta batzuen bidez sortzen dira. Hona hemen errezeta bat:

FROM debian
MAINTAINER Iñigo Ortega (zure jaikoa)

RUN apt-get update && apt-get -yy install curl
CMD curl wttr.in/Donostia
  1. Adierazi zer irudi erabili. Normalean debian, alpine edo ubuntu.

  2. Ondoren nork egin duen adierazi (aukerazkoa)

  3. Exekuzio batzuk, adibidez, paketeren bat instalatzeko.

  4. CMD edo ENTRYPOINT bidez ya erabilpen finalerako nahi dugun agindua.

Fitxategi hau Dockerfile izeneko formatu batean dago eta horrelaxe deitutako fitxategitan gordetzen dira. Hauetatik irudi bat sortzeko, ondorengo agindua erabiltzen da:

docker build -t proba .

Eta exekutatzeko:

docker run --rm proba

Beste edozer gauza egin daiteke honekin, terminalean exekutatu daitekeen bitartean:

  • Nginx zerbitzaria

  • Webgune bat

  • eta abar

Normalean saretik atzigarriak diren aplikazioak izaten dira.

Bolumenak

Kontenedoreak isolatuta daude. Baina baliteke hori ez izatea guztiz interesatzen dena. Batzuetan zure fitxategi sistemarekin karpeta edo fitxategiren bat partekatzea interesatzen zaizu. Kasu horietan bolumenak erabiltzen dira. Bolumenak adierazten direnean, askotan zure_ordenagailuko_kokapena:kontenedoreko_kokapena formatuarekin agertzen dira eta -v/volume gakoekin aurki ditzakezu.

Docker-compose

Irudiak errezeta batzuekin sortzen dira. Orain irudi multzoak errezeta batzuen bidez kudeatuko ditugu.

Horretarako docker-compose erabiltzen da. YAML formatua erabiltzen dute eta honelako egitura izaten dute:

version: "3.6"
services:
  zerbitzu_izena:
    image: hello-world
    ports:
      - '80:80'
      - '443:443'
    restart: unless-stopped
    environment:
      - KAIXO=aldagai_oso_erabilgarria
    volumes:
      - ./ssl-certs:/var/lib/certs
  beste_zerbitzu_izen_bat:
    image: hello-world
    ...

Normalean docker-compose.yml izena ematen zaie fitxategi hauei.

Zerbitzuak adierazi ditzakezu, bakoitzarentzat irudi bat aukeratuta (irudia momentuan bertan sortu daiteke build adierazita eta ondoren Dockerfile bat dagoen direktorio bat), kanpotik atzigarriak izango diren portuak adierazita, itzaltzen bada restart egin behar duen adierazita, zenbait ingurune aldagai adierazita eta bolumen batzuk jarrita (lehen azaldu diren zer egiten duten).

Docker-compose hauen erabilpen basikoena ondorengoa da:

Pizteko.

docker-compose up

Itzaltzeko.

docker-compose down

up aginduari askotan -d eta --build jartzen zaie atzeko planoan exekutatzeko eta irudiak berriro eraikitzeko, hurrenez hurren.
down aginduari askotan -t 0 momentuan itzaltzeko.

docker-compose.yml fitxategi bat dago egon beharra horretarako hala ere. Izen
hori zehazki ez badauka, -f bidez adierazi beharra dago, adibidez:

docker-compose -f docker-compose.httpsportal.yml up -d

Azalpenak

Matrixeko zerbitzariak (dendrite software honek) bi instalazio metodo onartzen
ditu:

  • Polylith: Zerbitzariko zati bakoitza zerbitzari desberdinetan egoten dira (edo nolabaiteko sistema independetetan).

  • Monolith: Software guztia puntu batean exekutatzen da (ordenagailu batean, exekutagarri berdinarekin...).

Monolitikoak polilitikoarekiko duen abantaila da konplexutasun gutxiago duela ez baita hain beste kezkatu behar sarearekin bidez bere zatien artean komunikatzen ibiltzeko. Alabaina, instalazio monolitikoak ez daude eginda trafiko handia jasateko, ez baitira ondo eskalatzen. Gero eta erabiltzaile eta trafiko handiagoa izanda, zure hardwarearen espezifikazioak handitu behar dituzulako. Ordea, merkeagoa da zenbait ordenagailu okerragotan sistema izatea. Eta zure instantzia handitu behar baduzu, ba sistema gutxi batzuk gehiago jarri eta listo garestia den handi bat handiagotu baino. Bueno, teoria pixkat.

Hemen monolitikoa erabiliko dut. Baina polilitikoa erabili zenezake erabiltzen hori egiteko gai bazina.

Dendrite Matrix zerbetzaria jartzeko software berria da. Baina ESKERRAK. Eskerrak berria dela eta ez hutsala. Synapse Python-en egindako zerbitzari ofiziala da eta oso gaizki usaintzen du. Bueno, nahi duzuena pentsatu hortik xD (RAM eta CPU gehiegi erabiltzen du. Seguruenik zuek ezin duzue horrelako zerbitzari bat ordaindu. Nik ere ez. Baina erabiltzaile oso gutxirekin suposatzen dut gutxi kontsumituko duela?).

ORDEA. Ordea, Dendritek zenbait mugapen dauzka berria izateagatik. Dena oraindik inplementatuta ez dagoelako. Orduan, ez baduzue dendrite erabili nahi eta Synapse nahiago baduzue, ba ados, ez dago arazorik, baina hemengo matrix zerbitzariaren instalazioak ez dizue balioko, beste bat bilatu beharko duzue. Nik synapse gorroto dut, orduan ezin dizuet lagundu, baina oso erraza du izan beharra. Zubiak berdin funtzionatzen du (edo hobeto).

Pausoak

Sortu dendriterentzako karpeta bat. Nire kasuan ~/dendrite izango da, baina uste dut, zuei ez dizuela eragiten.

Dendrite

Sartu karpetara eta sortu config eta postgres azpi-direktorioak (mkdir dendrite/config, mkdir dendrite/postgres). Bueno, ez du zentzurik hau esatea ze ya sortuta utzi dizkizuet.

Sartu bertan (cd dendrite/config)

Sortu giltzak. Kontuz, ez galdu hauek inoiz. Egin backup bat edo.

docker run --rm --entrypoint="" \
  -v $(pwd):/mnt \
  matrixdotorg/dendrite-monolith:latest \
  /usr/bin/generate-keys \
  -private-key /mnt/matrix_key.pem \
  -tls-cert /mnt/server.crt \
  -tls-key /mnt/server.key

Hau izanda, hurrengo pausoa dendriteren konfigurazio fitxategia sortu eta aldatzea da. Nik dagoeneko pixkat aldatuta dagoen bat pasatzen dizuet. Honetan oinarritu naiz: github.com/matrix-org/dendrite/blob/master/build/docker/config/dendrite-config.yaml. Egin behar duzuena da, POSTGRESPASAHITZA jartzen duen toki guztietan ondoren jarriko dugun postgres datubaseko zerbitzaria jarri eta iortegam.com zuen domeinuarengatik aldatu. Domeinu hau zuen helbidearen eskuinean agertuko dena izango da (nirea: @inigo:iortegam.com). Niri hau egiteak arazo txiki bat eman dit. Uste dut eraginik gabe, baina bueno. Errazagoa dela matrix.DOMEINUA jartzea DOMEINUA bakarrik baino (hau da, matrix.iortegam.com vs iortegam.com).

Orain pixkat azalduko dut konfigurazioan egindako aldaketa garrantzitsuenak:
- Naffka nago erabiltzen Kafka ordez. Monolitikoa nagoelako erabiltzen. Horregatik kafka helbidearena ezabatu eta use_naffka: true.
- Postgres erabiliko dut orduan postgresql://dendrite:POSTGRESPASAHITZA@dendrite-postgres/dendrite_appservice?sslmode=disable konexio karaktere katea erabiltzen dut. dendrite-postgres postgres izango duen docker-compose zerbitzua izanik dendrite_appservice erabiliko den datubasea, orain sortuko duguna. Ssl gabe (ez dakit nola egin bestela, ez dudalako begiratu).
- Mautrix erabiltzeko konfigurazioa jartzen da:

config_files: ["/etc/dendrite/mautrix-registration.yaml"]

gero berriro ikusko duguna.
- Erregistrazioak gaituta utzi dizkizuet (registration_disabled: false). Zuen kontua sortu ondoren, desgaitu nahi ezazue, friki arraroak sartu ez daitezen. Berez desgaituta utzi nezakeen create-account izeneko exekutagarri bat dagoelako hori egiteko, baina ez dakit.
- Nik registration_shared_secret erabili dut, baina badirudi oraindik ez dela erabilgarri. Jarri nahi baduzue bat. Suposatzen da erregistroak desgaituta daudenean erabili daitekeela, baina kontu handiz. Admin erabiltzaileak sortzeko ahalmena ematen du eta (oraindik admin erabiltzaileak sortu ezin daitezkeen arren). Jarri nahi baduzue, jarri pasahitz super txetatu bat. Nik 50 karaktereko super txungo bat jarri det.
- Oso pertsona gaiztoak bazarete, recaptcha ere jarri dezakezue. jeje

Beste zerbait begiratu nahi baduzue, ia dena komentatuta dago, ulergarri nere ustez.

Hau bukatu eta gero, utziko dizuedan postgreseko konfigurazio tontoa (create_db.sh):

for db in userapi_accounts userapi_devices mediaapi syncapi roomserver signingkeyserver keyserver federationsender appservice naffka; do
    createdb -U dendrite -O dendrite dendrite_$db
done

Konfigurazioan ikusten ziren datubaseak sortuko dira postgres hasten den lehen aldian.

Goazen orain docker-compose fitxategiarekin (docker-compose.monolith.yml).
Hemen hiru gauza.
1. - ./storage:/var/lib/postgresql/data volumena du postgresek (11). Orduan persistentzia dauka. Hasieran probak egin nahi badituzue eta postgreseko datubasea ezabatu edo, komentatu edo ezabatu lerro hau eta up.
2. Hemen baita POSTGRESPASAHITZA jarri dizuet (13). Aldatu eta jarri nahi duzuena. Ez jarri karaktere oso txungok.
3. dendriteren zerbitzuan (31) mautrix lerro bat dago. Kendu zazue zubia gabe probatzeko.
4. Element web-ren zerbitzu bat dago (44-50). Ez baduzue nahi kendu dezakezue, baina bueno, ondo dago edukitzea supongo, baina friki arraroak erabili dezakete, behintzat irekita utzita.

Element Web

Element web aukerazkoa da, baina hemen bere konfigurazioa azalduko dut:

default_server_config > m.homeserver: Hemen zure zerbitzaria nun aurkitzen den
adierazten da.

Uste dut identitity server nahiko erraza dela zerbitzarian jartzea baina bueno. Hauek ya egin egiten digute asique bueno. Vector enpresari guazen metadata eta informazio guztia bidaltzera. BAI BAI BAI!!! bueno

defaultCountryCode jarri dezakezue. Suposatzen dut ES. Nik GB utzi dut. Oraindik ez dago EH (edo Nafarroaren baliokidea).

Ondorengoarekin tipiko kanalak edo gelak edo aurkitzeko egoten den zerrenda horretan agertuko diren zerbitzariak jartzen dira. Aldatu zuen gustura. Egokiena nire domeinua kentzea litzateke, zuen jartzea eta librezale.eus bezalakoren bat jartzea:

"roomDirectory": {
    "servers": [
        "matrix.org",
        "iortegam.com",
        "librezale.eus"
    ]
},

Nahiago duzuen jitsi zerbitzaria ere ezarri dezakezue jitsi bidez (bukaeran).

Nginx

Hau oso politta da baina zerbait behar dugu hau dena ondo jartzeko. Nik nginx erabili dut https-portal izeneko zerbitzu baten bitartez.

Ideia ondorengo blokeak jartzea da bere konfigurazioan:

location /.well-known/matrix/server {
    return 200 '{ "m.server": "iortegam.com:443" }';
}
location /.well-known/matrix/client {
    add_header Access-Control-Allow-Origin '*';
    return 200 '{ "m.homeserver": { "base_url": "https://iortegam.com" } }';
}
location /_matrix {
    proxy_pass http://dendrite-monolith:8008;
}

/.well-known/matrix/server, /.well-known/matrix/client eta /_matrix helbideak ba gauza batzuk erantzutea. Azkenekoaren kasuan dendritera. Ondoren DOMAINS aldagaia erabilita matrix.iortegam.com -> http://element-web:80 jartzen diot element-era berbiderako matrix.iortegam.com helbidea. Hemen nire webgunean, www.iortegam.com => https://iortegam.com, iortegam.com -> http://app:5000 daukat jarrita webgune bat dudalako / helbidean.

iortegam.com -> http://dendrite-monolith:8008 ere jarri diot. Hau berez ez litzateke beharko, baina ez dakit badabilen hau gabe goran adierazitako location-en blokea.

Hau dena CUSTOM_NGINX_IORTEGAM_COM_CONFIG_BLOCK (CUSTOM_NGINX_domeinua_CONFIG_BLOCK) izeneko aldagai batean jartzen dut iortegam.com domeinura iristean egiteko. Dena matrix.DOMEINUA estiloarekin egin baduzue (hau da, @erabiltzailea:matrix.DOMEINUA izateko), CUSTOM_NGINX_MATRIX_IORTEGAM_COM_CONFIG_BLOCK izango litzateke erabili beharreko aldagaia (ikusi nola gehitu dudan hor erdian MATRIX). Informazio gehiago hemen Other server block level configurations bilatuta.

GOGORATU. STAGE=production iruzkinduta utzi dizuet. Hasieran, hori gabe probatu ea element edo ondo dabilen, gero STAGE=staging jarri probatzeko nahi baduzue eta ya dena ondo dabilenean STAGE=production. Kontuz honekin, ssl ziurtagiriak eskatzen zaudetela. Ez eskatu gehiegitan blokeatu egingo zaituztela.

Probatzeko, docker-compose erabili behar dugu. Horretarako, mugitu docker-compose.https-portal.yml dagoen tokiera eta docker-compose -f docker-compose.https-portal.yml up -d egin dezakezue. Hau gelditzeko docker-compose -f docker-compose.https-portal.yml down

CLIENT_MAX_BODY_SIZE=1G aldatu nahieran.

Benetako nginx zerbitzari bat erabili liteke. Horregatik utzi dizuet hemen beste location bloke hori.

Uste dut ya dena badabilela, zubia izan ezik.

Egin docker-compose -f docker-compose.monolith.yml up -d probatzeko.

Mautrix Whatsapp zubia

Oraingoa oso erraza da. Hemen sartu zaitezkete eta bertako pausoak jarraitu: docs.mau.fi/bridges/go/whatsapp/setup/docker.html.

Bestela ere, honela egin dut nik:
1. dendrite karpetan mkdir -p mautrix-whatsapp/data && cd mautrix-whatsapp
2. Jaitsi irudia: docker pull dock.mau.dev/mautrix/whatsapp:latest
3. Sartu data karpetara: cd mautrix-whatsapp/data
4. Sortu konfigurazio fitxategia

docker run --rm -v `pwd`:/data:z dock.mau.dev/mautrix/whatsapp:latest

5. Aldatu address, domain, datubasearen kontua eta permissions.

homeserver:
  address: https://iortegam.com
  domain: iortegam.com
  ..
appservice:
  address: http://mautrix-whatsapp:29318
  ..
  ..
    type: postgres
    uri: postgresql://mautrix:MAUTRIXPOSTGRESPASAHITZA@mautrix-postgres/mautrix_database?sslmode=disable

Botaren izena aldatu nahi baduzue. Bilatu bot.

Aldatu MAUTRIXPOSTGRESPASAHITZA.

Bai, beste postgres zerbitzu bat jarri dut dudanaz gain. Por que yo lo valgo. Bueno, aurreko erabili nahi baduzue, jarri pasahitz berdina eta mautrix-postgres ordez, dendrite-postgres eta aurreko ataleko create_db.sh horretan (postgres hasieratzean exekutatzen dena) gehitu mautrix_database.

Gero permissions dagoen tokian jarri user zuen instantziaren domeinua adibidez eta admin ba zuen buruz edo besteren bat, adibidez @admin:iortegam.com.

Gero relaybot. Bi aukera daude. Erabili edo ez erabili. WOW. Nik ez dut gaitu taldeetarako daulako pentsauta. Hau software libre zalantzen telegrameko beste bot horren antzekoa da (txerri bat duena argazki bezala). Bot berdinak zenbait erabiltzaileren mezuak bidaltzen ditu hasieran matrixeko erabiltzailearen izena jarrita. Hau egiteko gauza batzuk dare egin beharra eta gainera, talde berri bat dago sortu beharra bota bertan funtzionatzeko. Oraindik ez dago inplementatuta dagoeneko sortuta dauden whatsappeko taldeetan bota sartzea. Gertatzen dena da, bot honekin, whatsapp kontu bakarra behar dela, baina talde bakarrarentzat.

Relaybot gabe eginda, zure whatsappeko kontuko azken elkarrizketak automatikoki sinkronizatzen zaizkizu ezer egin gabe eta whatsappen mezuak zuk zeuk bidali dituzula bezala agertzen da.

Zuek ikusi, dokumentazio hemen: docs.mau.fi/bridges/go/whatsapp/relaybot.html

6. Konfigurazioa bukatzean, exekutatu berriro

docker run --rm -v `pwd`:/data:z dock.mau.dev/mautrix/whatsapp:latest

7. Orain gida ofizialean, agertuko den registration.yaml bat app_service_config_files delako batean jartzeko eskatzen dute, baina hori dagoeneko eginda utzi dut (dendrite.yml 117 eta volumen bezala jarrita).
8. Orain dendrite exekutatzen bazegoen itzali eta berriro piztu: mugitu
dendriteren karpetara eta egin

docker-compose -f docker-compose.monolith.yml down

eta

docker-compose -f docker-compose.monolith.yml up -d

hala bada. Kontuz, hau egitean https-portal ere joditu iten da, orduan berdina egin horrekin (bere karpetara mugitu eta tirori tiroro... down... up...).
9. Exekutatu mautrix-whatsapp: data karpetatik atera eta

docker-compose -f docker-compose.mautrix.yml up -d

Whatsapp ai ama: Autentikazioa

Gida ofiziala

Hartu mugikor bat. Ireki Whatsapp web egitearena. Goran eskuinean ta remote desktops edo ezdakize ze funtzionalitate satanikon sartu eta QR sataniko bat eskaneatzeko jarriko dizue.

Orain, zuen matrix zerbitzarian bot bat eongo da whatsappen ikonoarekin. Bere konfigurazioan izena alda diezaiokezue. Idatzi login eta egin enter eta QR satanikoa emango dizue. Hori mugikorrarekin kapturatu eta listo. Sinkronizatzen hasiko da.

Orain bi aukera dituzue, mugikorra betirako piztuta (eta konektatuta) utzi edo behar duzuenean QRarena egin. Nik beti piztuta daukat eta gainera, matrixeko bezeroan mezuak ikusi ditudalarena kendu dut horrela whatsappek ez dakit noiz ikusten ditudan mezuak.