141 lines
No EOL
27 KiB
HTML
141 lines
No EOL
27 KiB
HTML
<!doctype html><html lang=it><head><meta charset=utf-8><meta name=robots content="all,follow"><meta name=googlebot content="index,follow,snippet,archive"><meta name=viewport content="width=device-width,initial-scale=1"><title>SpeedTech | Blog - Replicazione master-master MariaDB tramite Internet</title>
|
|
<meta name=author content><meta name=keywords content="Servizi di informatica,Sviluppo software,Sicurezza,VPN,Firewall,Servers con Linux,Email privata"><meta name=description content="SpeedTech - Servizi di informatica"><meta name=generator content="Hugo 0.123.7"><link href=/css/main.css rel=stylesheet><link rel="shortcut icon" href=/img/favicon.ico type=image/x-icon><link rel=apple-touch-icon href=/img/apple-touch-icon.png><meta property="og:title" content="Replicazione master-master MariaDB tramite Internet"><meta property="og:description" content="MariaDB (e MySQL) consentono di configurare la replica master-slave tra due servers.
|
|
Una replica di tipo master-master può esere implementata tramite Galera, ma richiede
|
|
almeno 3 servers. Se si dispone di 2 servers è possibile configurare una replica master-master
|
|
duplicando in maniera incrociata la replica master-slave."><meta property="og:type" content="article"><meta property="og:url" content="https://speedtech.it/blog/mariadb-replicazione-master-master-tramite-internet/"><meta property="og:image" content="https://speedtech.it/images/blog/mariadb-replication-master-master.jpg"><meta property="article:section" content="blog"><meta property="article:published_time" content="2022-07-19T00:00:00+00:00"><meta property="article:modified_time" content="2022-12-11T00:00:00+00:00"><meta property="og:site_name" content="SpeedTech"><script src=/js/htmx/htmx.min.js defer></script><script src=/js/main.js defer></script></head><body hx-boost=true lang=it><nav id=topnav><div class=container><a class=navbar-brand href=/><img class=img-fluid src=/img/logo.svg alt=SpeedTech></a><div id=topmenu><button id=responsive-button onclick='htmx.toggleClass(htmx.find("#topmenu"),"responsive")'><i class="icon icon-menu"></i></button><ul><li class=dropdown><a href=/#home-bottom role=button>Servizi</a><ul class=submenu><li><a href=/servizio/sviluppo-applicazioni/ title="Progettazione e sviluppo di applicazioni software"><i class="icon icon-desktop"></i>
|
|
Sviluppo applicazioni</a></li><li><a href=/servizio/soluzioni-e-commerce/ title="Sviluppo e integrazione di piattaforme per l'e-commerce"><i class="icon icon-cart"></i>
|
|
Soluzioni e-commerce</a></li><li><a href=/servizio/backend-siti-web-cms-personalizzati/ title="Sviluppo backend siti web e CMS personalizzati "><i class="icon icon-layers"></i>
|
|
Backend siti web e CMS</a></li><li><a href=/servizio/e-mail-privata/ title="E-mail privata: hosting, sicurezza ed archiviazione"><i class="icon icon-email"></i>
|
|
Servizio e-mail privato</a></li><li><a href=/servizio/servers-linux-gestiti/ title="Servers Linux gestiti"><i class="icon icon-server"></i>
|
|
Servers Linux gestiti</a></li><li><a href=/servizio/soluzioni-collaborazione-online-offline/ title="Soluzioni di condivisione e collaborazione online e offline"><i class="icon icon-cloud"></i>
|
|
Collaborazione online e offline</a></li><li><a href=/servizio/clients-con-linux/ title="Sistemi clients con Linux: installazione e configurazione"><i class="icon icon-computer"></i>
|
|
Clients con Linux</a></li><li><a href=/servizio/sicurezza-firewalls-vpn/ title="Strutture di sicurezza: firewalls, soluzioni di crifratura, backups"><i class="icon icon-security"></i>
|
|
Sicurezza</a></li><li><a href=/servizio/domotica-opensource/ title="Soluzioni di domotica open source"><i class="icon icon-robot"></i>
|
|
Domotica open source</a></li></ul></li><li><a href=https://brainminder.it>BrainMinder</a></li><li><a href=https://forgejo.speedtech.it/explore/repos>Git repository</a></li><li><a href=/#contact>Contatto</a></li><li class=active><a href=/blog>Blog</a></li><li><a href=https://speedtech.it/en/blog/mariadb-replicazione-master-master-tramite-internet/>EN</a></li></ul></div></div></nav><header class=blog-single><div class=container><div class=row><div class="col s12 m9 l9"><h2><a href=/blog/>Blog</a></h2><h3 class=title>Replicazione master-master MariaDB tramite Internet</h3></div></div></div></header><div id=page-content><div class=container><div class=row><div class="col s12 m9 l9 articlecontent"><p class=text-center><img class=img-fluid src=/images/blog/mariadb-replication-master-master.jpg width=400></p><div style=text-align:justify;margin-bottom:16px><p><a href=https://mariadb.org>MariaDB</a> (e MySQL) consentono di configurare la replica master-slave tra due servers.
|
|
Una replica di tipo master-master può esere implementata tramite Galera, ma richiede
|
|
almeno 3 servers. Se si dispone di 2 servers è possibile configurare una replica master-master
|
|
duplicando in maniera incrociata la replica master-slave.</p><p>Questa funzionalità può essere implementata anche tramite servers collegati tra di loro tramite Internet,
|
|
cifrando la connessione nativa di MariaDB tramite certificati SSL e controllando l’accesso al servizio
|
|
tramite firewall software (<a href=https://help.ubuntu.com/community/UFW>ufw</a> ad esempio).</p><p>Supponendo quindi di disporre di 2 servers <code>server1</code> e <code>server2</code> le procedure
|
|
da seguire sono le seguenti.</p><h4 id=1-predisposizione-delle-regole-dei-firewall>1. Predisposizione delle regole dei firewall</h4><p>Per far comunicare i due servers tra di loro, è necessario consentire la comunicazione sull porta TCP di
|
|
MariaDB (default 3306)</p><p>Su <code>server2</code></p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>ufw allow from server1-ip to server2-ip <span style=color:#ae81ff>3306</span> comment <span style=color:#e6db74>"Allow replication from server1"</span>
|
|
</span></span></code></pre></div><p>Su <code>server1</code></p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>ufw allow from server2-ip to server1-ip <span style=color:#ae81ff>3306</span> comment <span style=color:#e6db74>"Allow replication from server2"</span>
|
|
</span></span></code></pre></div><h5 id=2-generazione-dei-certificati-ssl>2. Generazione dei certificati SSL</h5><p>Per rendere sicura la connessione tra i due servers si può sfruttare la connettività SSL già presente in MariaDB
|
|
generando la propria CA (Certification Authority) ed i rispettivi certificati per i due servers.</p><p><a href=https://hohnstaedt.de/xca/>XCA</a> è un ottimo software visuale per generare e mantenere i certificati SSL.</p><p>Un’alternativa alla connessione diretta e cifrata tramite SSL è la creazione di un VPN che colleghi i due servers.</p><h5 id=3-allineamento-dati-servers>3. Allineamento dati servers</h5><p>Nel caso in cui i due servers contengano già dati, sarà necessario procedere con un allineamento
|
|
preventivo tramite esportazione ed importazione dei databases interessati, in modo che entrambi
|
|
i servers contengano gli stessi databases, tables e records.</p><h5 id=4-creare-gli-utenti-dedicati-su-ogni-server-per-consentire-la-replica>4. Creare gli utenti dedicati su ogni server per consentire la replica</h5><p>Su <code>server1</code> creare l’utente per la connessione da <code>server2</code> e dargli i permessi
|
|
per la replica verso <code>server1</code></p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-sql data-lang=sql><span style=display:flex><span><span style=color:#66d9ef>CREATE</span> <span style=color:#66d9ef>USER</span> <span style=color:#e6db74>'server2'</span><span style=color:#f92672>@</span><span style=color:#e6db74>'server2-ip'</span> IDENTIFIED <span style=color:#66d9ef>BY</span> <span style=color:#e6db74>'server2pwd'</span>;
|
|
</span></span><span style=display:flex><span><span style=color:#66d9ef>GRANT</span> REPLICATION SLAVE <span style=color:#66d9ef>ON</span> <span style=color:#f92672>*</span>.<span style=color:#f92672>*</span> <span style=color:#66d9ef>TO</span> <span style=color:#e6db74>'server2'</span><span style=color:#f92672>@</span><span style=color:#e6db74>'server2-ip'</span>;
|
|
</span></span><span style=display:flex><span>FLUSH <span style=color:#66d9ef>PRIVILEGES</span>;
|
|
</span></span></code></pre></div><p>Su <code>server2</code> creare l’utente per la connessione da <code>server1</code> e dargli i permessi
|
|
per la replica verso <code>server2</code></p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-sql data-lang=sql><span style=display:flex><span><span style=color:#66d9ef>CREATE</span> <span style=color:#66d9ef>USER</span> <span style=color:#e6db74>'server1'</span><span style=color:#f92672>@</span><span style=color:#e6db74>'server1-ip'</span> IDENTIFIED <span style=color:#66d9ef>BY</span> <span style=color:#e6db74>'server1pwd'</span>;
|
|
</span></span><span style=display:flex><span><span style=color:#66d9ef>GRANT</span> REPLICATION SLAVE <span style=color:#66d9ef>ON</span> <span style=color:#f92672>*</span>.<span style=color:#f92672>*</span> <span style=color:#66d9ef>TO</span> <span style=color:#e6db74>'server1'</span><span style=color:#f92672>@</span><span style=color:#e6db74>'server1-ip'</span>;
|
|
</span></span><span style=display:flex><span>FLUSH <span style=color:#66d9ef>PRIVILEGES</span>;
|
|
</span></span></code></pre></div><h5 id=5-configurare-server1>5. Configurare <code>server1</code></h5><p>In file server.conf :</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>key_buffer_size <span style=color:#f92672>=</span> 64M
|
|
</span></span><span style=display:flex><span>max_allowed_packet <span style=color:#f92672>=</span> 64M
|
|
</span></span><span style=display:flex><span>
|
|
</span></span><span style=display:flex><span>server-id <span style=color:#f92672>=</span> <span style=color:#ae81ff>1</span>
|
|
</span></span><span style=display:flex><span>report_host <span style=color:#f92672>=</span> server1
|
|
</span></span><span style=display:flex><span>log_bin <span style=color:#f92672>=</span> /var/log/mysql/mysql-bin.log
|
|
</span></span><span style=display:flex><span>expire_logs_days <span style=color:#f92672>=</span> <span style=color:#ae81ff>10</span>
|
|
</span></span><span style=display:flex><span>
|
|
</span></span><span style=display:flex><span>relay_log <span style=color:#f92672>=</span> /var/lib/mysql/relay-bin
|
|
</span></span><span style=display:flex><span>relay_log_index <span style=color:#f92672>=</span> /var/lib/mysql/relay-bin.index
|
|
</span></span><span style=display:flex><span>
|
|
</span></span><span style=display:flex><span>log-slave-updates
|
|
</span></span><span style=display:flex><span>auto_increment_increment<span style=color:#f92672>=</span><span style=color:#ae81ff>1</span>
|
|
</span></span><span style=display:flex><span>auto_increment_offset<span style=color:#f92672>=</span><span style=color:#ae81ff>1</span>
|
|
</span></span><span style=display:flex><span>slave-skip-errors<span style=color:#f92672>=</span>1062,1032,1007,1008,1050,1396
|
|
</span></span><span style=display:flex><span>skip-slave-start<span style=color:#f92672>=</span>FALSE
|
|
</span></span></code></pre></div><h5 id=6-configurare-server2>6. Configurare <code>server2</code></h5><p>In file server.conf :</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span>key_buffer_size <span style=color:#f92672>=</span> 64M
|
|
</span></span><span style=display:flex><span>max_allowed_packet <span style=color:#f92672>=</span> 64M
|
|
</span></span><span style=display:flex><span>
|
|
</span></span><span style=display:flex><span>server-id <span style=color:#f92672>=</span> <span style=color:#ae81ff>2</span>
|
|
</span></span><span style=display:flex><span>report_host <span style=color:#f92672>=</span> server2
|
|
</span></span><span style=display:flex><span>log_bin <span style=color:#f92672>=</span> /var/log/mysql/mysql-bin.log
|
|
</span></span><span style=display:flex><span>expire_logs_days <span style=color:#f92672>=</span> <span style=color:#ae81ff>10</span>
|
|
</span></span><span style=display:flex><span>
|
|
</span></span><span style=display:flex><span>relay_log <span style=color:#f92672>=</span> /var/lib/mysql/relay-bin
|
|
</span></span><span style=display:flex><span>relay_log_index <span style=color:#f92672>=</span> /var/lib/mysql/relay-bin.index
|
|
</span></span><span style=display:flex><span>
|
|
</span></span><span style=display:flex><span>log-slave-updates
|
|
</span></span><span style=display:flex><span>auto_increment_increment<span style=color:#f92672>=</span><span style=color:#ae81ff>2</span>
|
|
</span></span><span style=display:flex><span>auto_increment_offset<span style=color:#f92672>=</span><span style=color:#ae81ff>2</span>
|
|
</span></span><span style=display:flex><span>slave-skip-errors<span style=color:#f92672>=</span>1062,1032,1007,1008,1050,1396
|
|
</span></span><span style=display:flex><span>skip-slave-start<span style=color:#f92672>=</span>FALSE
|
|
</span></span></code></pre></div><h5 id=7-configurare-server1-come-slave-di-server2>7. Configurare <code>server1</code> come SLAVE di <code>server2</code></h5><p>Su <code>server2</code> eseguire il comando :</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-sql data-lang=sql><span style=display:flex><span><span style=color:#66d9ef>SHOW</span> MASTER STATUS <span style=color:#960050;background-color:#1e0010>\</span><span style=color:#66d9ef>G</span>;
|
|
</span></span></code></pre></div><p>e prendere nota dei valori : <code>File</code> e <code>Position</code> che andranno sostituiti nelle
|
|
variabili rispettivamente <code>MASTER_LOG_FILE</code> e <code>MASTER_LOG_POS</code> nel codice seguente
|
|
da eseguire su <code>server1</code> :</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-sql data-lang=sql><span style=display:flex><span>CHANGE MASTER <span style=color:#66d9ef>TO</span>
|
|
</span></span><span style=display:flex><span> MASTER_HOST<span style=color:#f92672>=</span><span style=color:#e6db74>'server2-ip'</span>,
|
|
</span></span><span style=display:flex><span> MASTER_USER<span style=color:#f92672>=</span><span style=color:#e6db74>'server1'</span>,
|
|
</span></span><span style=display:flex><span> MASTER_PASSWORD<span style=color:#f92672>=</span><span style=color:#e6db74>'server1pwd'</span>,
|
|
</span></span><span style=display:flex><span> MASTER_PORT<span style=color:#f92672>=</span><span style=color:#ae81ff>3306</span>,
|
|
</span></span><span style=display:flex><span> MASTER_LOG_FILE<span style=color:#f92672>=</span><span style=color:#e6db74>'mysql-bin.000004'</span>,
|
|
</span></span><span style=display:flex><span> MASTER_LOG_POS<span style=color:#f92672>=</span><span style=color:#ae81ff>17680369</span>,
|
|
</span></span><span style=display:flex><span> MASTER_CONNECT_RETRY<span style=color:#f92672>=</span><span style=color:#ae81ff>10</span>,
|
|
</span></span><span style=display:flex><span> MASTER_SSL<span style=color:#f92672>=</span><span style=color:#ae81ff>1</span>,
|
|
</span></span><span style=display:flex><span> MASTER_SSL_CA<span style=color:#f92672>=</span><span style=color:#e6db74>'/etc/mysql/ssl/ca.crt'</span>,
|
|
</span></span><span style=display:flex><span> MASTER_SSL_CERT<span style=color:#f92672>=</span><span style=color:#e6db74>'/etc/mysql/ssl/server1.crt'</span>,
|
|
</span></span><span style=display:flex><span> MASTER_SSL_KEY<span style=color:#f92672>=</span><span style=color:#e6db74>'/etc/mysql/ssl/server1.key'</span>;
|
|
</span></span><span style=display:flex><span>
|
|
</span></span><span style=display:flex><span><span style=color:#66d9ef>START</span> SLAVE;
|
|
</span></span></code></pre></div><p>Verificare lo stato della replica slave con il comando :</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-sql data-lang=sql><span style=display:flex><span><span style=color:#66d9ef>SHOW</span> SLAVE STATUS<span style=color:#960050;background-color:#1e0010>\</span><span style=color:#66d9ef>G</span>;
|
|
</span></span></code></pre></div><h5 id=8-configurare-server2-come-slave-di-server1>8. Configurare <code>server2</code> come SLAVE di <code>server1</code></h5><p>Su <code>server1</code> eseguire il comando :</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-sql data-lang=sql><span style=display:flex><span><span style=color:#66d9ef>SHOW</span> MASTER STATUS <span style=color:#960050;background-color:#1e0010>\</span><span style=color:#66d9ef>G</span>;
|
|
</span></span></code></pre></div><p>e prendere nota dei valori : <code>File</code> e <code>Position</code> che andranno sostituiti nelle
|
|
variabili rispettivamente <code>MASTER_LOG_FILE</code> e <code>MASTER_LOG_POS</code> nel codice seguente
|
|
da eseguire su <code>server2</code> :</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-sql data-lang=sql><span style=display:flex><span>CHANGE MASTER <span style=color:#66d9ef>TO</span>
|
|
</span></span><span style=display:flex><span> MASTER_HOST<span style=color:#f92672>=</span><span style=color:#e6db74>'server1-ip'</span>,
|
|
</span></span><span style=display:flex><span> MASTER_USER<span style=color:#f92672>=</span><span style=color:#e6db74>'server2'</span>,
|
|
</span></span><span style=display:flex><span> MASTER_PASSWORD<span style=color:#f92672>=</span><span style=color:#e6db74>'server2pwd'</span>,
|
|
</span></span><span style=display:flex><span> MASTER_PORT<span style=color:#f92672>=</span><span style=color:#ae81ff>3306</span>,
|
|
</span></span><span style=display:flex><span> MASTER_LOG_FILE<span style=color:#f92672>=</span><span style=color:#e6db74>'mysql-bin.000051'</span>,
|
|
</span></span><span style=display:flex><span> MASTER_LOG_POS<span style=color:#f92672>=</span><span style=color:#ae81ff>825490817</span>,
|
|
</span></span><span style=display:flex><span> MASTER_CONNECT_RETRY<span style=color:#f92672>=</span><span style=color:#ae81ff>10</span>,
|
|
</span></span><span style=display:flex><span> MASTER_SSL<span style=color:#f92672>=</span><span style=color:#ae81ff>1</span>,
|
|
</span></span><span style=display:flex><span> MASTER_SSL_CA<span style=color:#f92672>=</span><span style=color:#e6db74>'/etc/mysql/ssl/ca.crt'</span>,
|
|
</span></span><span style=display:flex><span> MASTER_SSL_CERT<span style=color:#f92672>=</span><span style=color:#e6db74>'/etc/mysql/ssl/server2.crt'</span>,
|
|
</span></span><span style=display:flex><span> MASTER_SSL_KEY<span style=color:#f92672>=</span><span style=color:#e6db74>'/etc/mysql/ssl/server2.key'</span>;
|
|
</span></span><span style=display:flex><span>
|
|
</span></span><span style=display:flex><span><span style=color:#66d9ef>START</span> SLAVE;
|
|
</span></span></code></pre></div><p>Verificare lo stato della replica slave con il comando :</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-sql data-lang=sql><span style=display:flex><span><span style=color:#66d9ef>SHOW</span> SLAVE STATUS<span style=color:#960050;background-color:#1e0010>\</span><span style=color:#66d9ef>G</span>;
|
|
</span></span></code></pre></div></div><small>Data pubblicazione : 2022-07-19</small> | <small>Ultima modifica : 2022-12-11</small><p><small><a href=/categories/soluzioni/>Soluzioni</a> |
|
|
<a href=/categories/technology/>Technology</a> |
|
|
<a href=/tags/server/>Server</a>
|
|
|
|
|
<a href=/tags/database/>Database</a>
|
|
|
|
|
<a href=/tags/firewall/>Firewall</a>
|
|
|
|
|
<a href=/tags/mariadb/>MariaDB</a>
|
|
|
|
|
<a href=/tags/openssl/>OpenSSL</a>
|
|
|
|
|
<a href=/tags/ufw/>UFW</a></small></p></div><section class="col s12 m3 l3 text-center blogsidebar"><div class=tags><h4 class=text-center>Tags</h4><small><a href=/tags/custom-cms/>Custom CMS</a>
|
|
<a href=/tags/database/>Database</a>
|
|
<a href=/tags/desktop-application/>Desktop Application</a>
|
|
<a href=/tags/dovecot/>Dovecot</a>
|
|
<a href=/tags/e-commerce/>E-Commerce</a>
|
|
<a href=/tags/file-server/>File Server</a>
|
|
<a href=/tags/firewall/>Firewall</a>
|
|
<a href=/tags/home-assistant/>Home Assistant</a>
|
|
<a href=/tags/home-automation/>Home Automation</a>
|
|
<a href=/tags/mariadb/>MariaDB</a>
|
|
<a href=/tags/nas/>NAS</a>
|
|
<a href=/tags/networking/>Networking</a>
|
|
<a href=/tags/office-server/>Office Server</a>
|
|
<a href=/tags/openssl/>OpenSSL</a>
|
|
<a href=/tags/opnsense/>OpnSense</a>
|
|
<a href=/tags/oracle-database/>Oracle Database</a>
|
|
<a href=/tags/pascal/>Pascal</a>
|
|
<a href=/tags/postgresql/>PostgreSQL</a>
|
|
<a href=/tags/privacy/>Privacy</a>
|
|
<a href=/tags/pwa/>PWA</a>
|
|
<a href=/tags/router/>Router</a>
|
|
<a href=/tags/security/>Security</a>
|
|
<a href=/tags/server/>Server</a>
|
|
<a href=/tags/software-development/>Software Development</a>
|
|
<a href=/tags/system-administration/>System Administration</a>
|
|
<a href=/tags/ufw/>UFW</a>
|
|
<a href=/tags/vpn/>VPN</a>
|
|
<a href=/tags/web-application/>Web Application</a></small></div><div class="row articles"><h4 class=text-center>Ultimi articoli</h4><div class="col s12 m12 l12 article" style=text-align:center><div class=article-wrapper><a href=https://speedtech.it/blog/automazione-casa-con-home-assistant/><img class=img-fluid src=/images/blog/home-assistant_hud8587ebef75f9af2ca0bbe5f5b19dc45_61256_200x0_resize_q75_box.jpg width=200 height=142 alt="Automazione casa con Home Assistant" class=img-fluid title="Automazione casa con Home Assistant"></a><div class=caption style=max-width:250px;margin:auto><div class=caption-text><a class=text-title style=font-weight:400;font-size:14px href=https://speedtech.it/blog/automazione-casa-con-home-assistant/>Automazione casa con Home Assistant</a></div><div class=caption-bg></div></div></div></div><div class="col s12 m12 l12 article" style=text-align:center><div class=article-wrapper><a href=https://speedtech.it/blog/brainminder-intro/><img class=img-fluid src=/images/blog/brainminder_hu1e83e6fcbe10acdd81c6d0d0e9901bac_73079_200x0_resize_box_3.png width=200 height=123 alt="BrainMinder - second brain web application" class=img-fluid title="BrainMinder - second brain web application"></a><div class=caption style=max-width:250px;margin:auto><div class=caption-text><a class=text-title style=font-weight:400;font-size:14px href=https://speedtech.it/blog/brainminder-intro/>BrainMinder - second brain web application</a></div><div class=caption-bg></div></div></div></div><div class="col s12 m12 l12 article" style=text-align:center><div class=article-wrapper><a href=https://speedtech.it/blog/wmtrento-spreadsheet-sync/><img class=img-fluid src=/images/project/wmtrento-jspreadsheet_hu80e88a9b53e97bd051be5a21f49c7525_29205_200x0_resize_q75_box.jpg width=200 height=123 alt="Applicazione web con funzionalità di foglio di calcolo e sincronizzazione" class=img-fluid title="Applicazione web con funzionalità di foglio di calcolo e sincronizzazione"></a><div class=caption style=max-width:250px;margin:auto><div class=caption-text><a class=text-title style=font-weight:400;font-size:14px href=https://speedtech.it/blog/wmtrento-spreadsheet-sync/>Applicazione web con funzionalità di foglio di calcolo e sincronizzazione</a></div><div class=caption-bg></div></div></div></div><div class="col s12 m12 l12 article" style=text-align:center><div class=article-wrapper><a href=https://speedtech.it/blog/postgresql-database-link/><img class=img-fluid src=/images/blog/postgresql_hu0d75c994c55fb1d165504c57f70131c4_34984_200x0_resize_q75_box.jpg width=200 height=142 alt="Database link con PostgreSQL" class=img-fluid title="Database link con PostgreSQL"></a><div class=caption style=max-width:250px;margin:auto><div class=caption-text><a class=text-title style=font-weight:400;font-size:14px href=https://speedtech.it/blog/postgresql-database-link/>Database link con PostgreSQL</a></div><div class=caption-bg></div></div></div></div></div></section></div></div></div><footer><div class="row container menu"><div class="col m3 l3"><h4>Sviluppo e integrazione software</h4><ul><li><a href=/servizio/sviluppo-applicazioni/>Applicazioni web</a></li><li><a href=/servizio/sviluppo-applicazioni/>Applicazioni desktop</a></li><li><a href=/servizio/sviluppo-applicazioni/>Applicazioni per mobile (PWA)</a></li><li><a href=/servizio/siti-web-cms-personalizzati/>Siti web multilingua statici e dinamici</a></li><li><a href=/servizio/siti-web-cms-personalizzati/>CMS personalizzati</a></li><li><a href=/servizio/soluzioni-e-commerce/>E-commerce</a></li></ul></div><div class="col m3 l3"><h4>Comunicazione e collaborazione</h4><ul><li><a href=/servizio/e-mail-privata/>Email privata</a></li><li><a href=/servizio/e-mail-privata/>GPG per email</a></li><li><a href=/servizio/soluzioni-collaborazione-online-offline/>Nextcloud</a></li><li><a href=/servizio/soluzioni-collaborazione-online-offline/>TrueNAS</a></li><li><a href=/servizio/soluzioni-collaborazione-online-offline/>Seafile</a></li><li><a href=/servizio/servers-linux-gestiti/>Servers con Linux</a></li></ul></div><div class="col m3 l3"><h4>Sicurezza</h4><ul><li><a href=/servizio/sicurezza-firewalls-vpn/>Firewall OpnSense</a></li><li><a href=/servizio/sicurezza-firewalls-vpn/>Password manager Vaultwarden</a></li><li><a href=/servizio/sicurezza-firewalls-vpn/>VPN con Wireguard</a></li><li><a href=/servizio/sicurezza-firewalls-vpn/>VPN con Fritz!Box</a></li><li><a href=/servizio/sicurezza-firewalls-vpn/>Cifratura dati</a></li><li><a href=/servizio/sicurezza-firewalls-vpn/>Backup in Cloud</a></li><li><a href=/servizio/sicurezza-firewalls-vpn/>Protezione da ransomware</a></li></ul></div><div class="col m3 l3"><h4>Domotica open source</h4><ul><li><a href=/servizio/domotica-opensource/>HomeAssistant</a></li><li><a href=/servizio/domotica-opensource/>Tasmota</a></li><li><a href=/servizio/domotica-opensource/>Integrazione con dispositivi Shelly</a></li><li><a href=/servizio/domotica-opensource/>Integrazione con dispositivi Sonoff</a></li></ul></div></div><div class="row container"><div class="col m4 l4 footer-contact-details"><p>SpeedTech di Gerola Ing. Roberto</p><p>VAT ID : IT02446960227</p><p>REA : TN - 225335</p><p class=copyright>2001-2024</p></div><div class="col m4 l4 footer-contact-details" id=contact><p><span class=footer-title><i class="icon icon-phone"></i>Telefono : </span><a href=tel:+390464414131 title="Telephone contact">+39 0464 414131</a></p><p><span class=footer-title><i class="icon icon-email"></i>Email : </span><a href=mailto:%72%6f%62%65%72%74%6f%40%73%70%65%65%64%74%65%63%68%2e%69%74>Invia una email</a></p><h4 style=margin-top:20px><i class="icon icon-location"></i>Indirizzo</h4><p>Viale Trento, 31<br>IT-38068 Rovereto (TN) ITALY</p></div><div class="col m4 l4 footer-contact-details"><h4 style=margin-top:20px><i class="icon icon-link"></i>Links</h4><p><i class="icon icon-git"></i> <a href=https://forgejo.speedtech.it/explore/repos>Git code repository</a></p><p><img alt=BrainMinder style=width:32px;vertical-align:middle src=https://brainminder.it/brainminder-icon.svg><a href=https://brainminder.it>BrainMinder</a></p></div></div></footer></body></html> |