Initial commit

This commit is contained in:
roberto 2024-10-04 11:58:15 +02:00
parent ea8b83546b
commit f563ed8d79
282 changed files with 5570 additions and 0 deletions

6
archetypes/default.md Normal file
View File

@ -0,0 +1,6 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

143
config.toml Normal file
View File

@ -0,0 +1,143 @@
baseurl = "https://speedtech.it"
title = "Information Technology Services"
languageCode = "it"
defaultContentLanguage = "it"
# Define the number of posts per page
paginate = 5
[taxonomies]
categoriesspot = "categoriesspot"
categoriesibis = "categoriesibis"
tagsspot = "tagsspot"
tagsibis = "tagsibis"
[[related.indices]]
name = "services"
weight = 100
[menu]
[[menu.main]]
identifier="about"
name = "About"
url = "/en/#about"
weight = 1
[[menu.main]]
identifier="services"
name = "Services"
url = "/en/#services"
weight = 2
[[menu.main]]
identifier="services-introduction"
name = "Introduction"
url = "/en/#services"
weight = 1
parent = "services"
[[menu.main]]
identifier = "contact"
name = "Contact"
url = "/en/#contact"
weight = 6
[[menu.main]]
identifier = "blog"
name = "Blog"
url = "#"
weight = 7
[[menu.main]]
identifier="blogspot"
name = "Solutions Projects Technology"
url = "/en/blog/spot"
weight = 1
parent = "blog"
[[menu.main]]
identifier="blogibis"
name = "Ideas Books Science"
url = "/en/blog/ibis"
weight = 2
parent = "blog"
[permalinks]
[permalinks.page]
blogspot = "/blog/spot/:slug/"
blogibis = "/blog/ibis/:slug/"
[permalinks.section]
blogspot = "/blog/spot/"
blogibis = "/blog/ibis/"
[permalinks.term]
categoriesspot = "/categories/spot/:slug/"
tagsspot = "/tags/spot/:slug/"
categoriesibis = "/categories/ibis/:slug/"
tagsibis = "/tags/ibis/:slug/"
[params.carousel]
enable = true
[languages]
[languages.it]
weight = 1
contentDir = "content/it"
languageName = "Italiano"
[[languages.it.menu.main]]
identifier="about"
name = "Presentazione"
url = "/#about"
weight = 1
[[languages.it.menu.main]]
identifier="services"
name = "Servizi"
url = "/#services"
weight = 2
[[languages.it.menu.main]]
identifier="services-introduction"
name = "Introduzione"
url = "/#services"
weight = 1
parent = "services"
[[languages.it.menu.main]]
identifier = "contact"
name = "Contatto"
url = "/#contact"
weight = 6
[[languages.it.menu.main]]
identifier = "blog"
name = "Blog"
url = "#"
weight = 7
[[languages.it.menu.main]]
identifier = "blogspot"
name = "Soluzioni Progetti Tecnologia"
url = "/blog/spot"
weight = 1
parent = "blog"
[[languages.it.menu.main]]
identifier = "blogibis"
name = "Idee Libri Scienza"
url = "/blog/ibis"
weight = 2
parent = "blog"
[languages.en]
weight = 2
contentDir = "content/en"
languageName = "English"
[languages.en.params]
defaultMetaDescription = "SpeedTech - Information technology services"
defaultMetaKeywords = ["IT Services", "Software development", "Security", "VPN", "Firewall", "Servers with Linux", "Private email"]
[params]
date_format = "2006-01-02"
defaultMetaDescription = "SpeedTech - Servizi di informatica"
defaultMetaKeywords = ["Servizi di informatica", "Sviluppo software", "Sicurezza", "VPN", "Firewall", "Servers con Linux", "Email privata"]

View File

@ -0,0 +1,3 @@
+++
title = "IBIS Blog"
+++

View File

@ -0,0 +1,25 @@
+++
tagsibis = ['Economy', 'USA']
categoriesibis= ['Books']
images = ['images/blog/amadeo_peter_giannini.jpg']
title = "Amadeo Peter Giannini - The banker who invested in the future"
date = '2023-10-19'
lastmod = '2023-10-19'
+++
This book tells the story of the founder of Bank of Italy which later became Bank of America : Amadeo Peter Giannini.
Amadeo was the son of Italian migrants to the United States of America in the mid-1800s who from simple
peasants became landowners.
<!--more-->
The book tells the story of the Giannini family beginning with the emigration and childhood of Amadeo, who was orphaned
of his father at a young age had to grow up quickly.
The book not only exposes the historical context in which Amadeo spent his life, but also describes the values, principles
and ethics of Amadeo, who through his bank enabled the lives of so many people to be improved.
An important lesson in what should be the role of banks in our society.
[Article on Wikipedia](https://wikipedia.org/wiki/Amadeo_Giannini)

View File

@ -0,0 +1,15 @@
+++
tagsibis = ['Electricity', 'Electrotechnics']
categoriesibis= ['Science']
images = ['images/blog/tester.jpg']
title = "Online course of electricity and electrotechnics"
date = '2023-10-21'
lastmod = '2023-10-21'
+++
On the Youtube channel [Corrado Lai - The Electrical Prof](https://www.youtube.com/@laicorrado-theelectricalprof), rofessor Lai explains
in clear and simple language the fundamentals of electricity and electrical engineering, accessible even to the uninitiated.
On the other hand, to delve into purely practical aspects and follow step-by-step guides for installing electrical systems in a
a proper and professional manner, the Youtube channel [Stefano Lai Elettrica PLC](https://www.youtube.com/@ElettricaPLC) offers video guides
very detailed.

View File

@ -0,0 +1,37 @@
+++
tagsibis = ['Car', 'Security']
categoriesibis= ['Ideas']
images = ['images/blog/dashcam_car.jpg']
title = "Installing a dash cam on your own car"
date = '2023-10-29'
lastmod = '2023-10-29'
+++
In view of the dangers one may encounter on the road, both to oneself and to others,
I believe it is appropriate to install a pair of dash cams in one's car, one on the front windshield and one
on the rear window.
Many models of different features and prices exist, and after a research, looking for the right balance between functionality provided and my own needs,
I decided to purchase one of these : [Viofo Dashcams](https://viofo.com/)
For my needs, I chose this one : [Viofo A229](https://viofo.com/content/73-viofo-a229-duo-dual-channel-dash-cam/).
This dash cam is a dual type, that is, it shoots from two cameras (front and back) and also offers parking mode via this [parking kit](https://viofo.com/accessories/323-viofo-type-c-hk4-hardwire-kit-with-8pcs-full-set-circuit-fuse-tap-for-a119-mini2a229t130wm1a139a139pro.html)
It is basically a small 12V->5V transformer that connects to the fuse box in the passenger compartment via 2 adapters : one connection should be made to an outlet that receives voltage only when the car is on and the other (for parking mode) that always receives voltage, even when the car is off.
The transformer has a selector switch that allows you to set the threshold of voltage received below which it automatically turns off the dash cam to avoid
deplete the car battery charge.
Another important feature of this dash cam is the presence of a capacitor, which, when power is cut off to the dash cam, is able to provide the necessary current to the dash cam for a clean shutdown, allowing it to save the recording properly, without the risk of losing data or corrupting the file system of the sd card.
In my installation, I added 3 small switches that allow me to completely cut off the power to the dash cam transformer, when, for example, the car is in a safe parking lot.
{{<figure src="/img/blog/dashcam-switch.jpg" class="img-content text-center" alt="Dashcam kill switch">}}
Based on my experience, I believe that it would be very useful to have the following provisions on the cars to allow for simplified installation
of the dash cam of your choice and also a possible replacement :
1. a conduit for cable passage from the rear window under the top of the car to the rearview mirror
2. a conduit for cable passage from the top center of the windshield to the passenger compartment fuse box
3. provision in the fuse box of two power outlets : one always powered and one only when the engine is running
Wanting to further improve the safety of the installation, it would be very useful to have the provision for a small battery, separate
from the main one in the car, that recharges when the engine is running and dedicated only to dash cams or to other additional devices that you would want to
install on your car, such as some SBCs like Raspberry or a tablet.

View File

@ -0,0 +1,21 @@
+++
tagsibis = ['Economy', 'Italy']
categoriesibis= ['Books']
images = ['images/blog/economia-spiegata-facile-costantino-rover.jpg']
title = "Economics easy explained by Costantino Rover"
date = '2023-10-19'
lastmod = '2023-10-19'
+++
This book, in simple and direct language, and with documented analysis of facts and figures,
summarizes the most important and significant economic events in the Italian economy,
analyzing in detail the wrong decisions and causes that led to a general impoverishment
of the country.
He also explains in a very understandable way, even to the uninitiated, the main indicators
economy and what solutions could be adopted to bring the real economy back to the center
of attention, depowering speculative finance and predatory capitalism.
Sito web : [Economia Spiegata Facile](https://economiaspiegatafacile.it/)

View File

@ -0,0 +1,3 @@
+++
title = "SPOT Blog"
+++

View File

@ -0,0 +1,20 @@
+++
tagsspot = ['Software development', 'Web application']
categoriesspot= ['Projects']
images = ['images/project/agiati-web-application-development.png']
services = ['web-application-development', 'custom-cms']
title = 'Accounting, members and custom CMS applications'
date = '2019-05-04'
lastmod = '2019-05-04'
+++
Client : Accademia degli Agiati (Rovereto - IT)
Technologies used : PHP, Yii Framework, MariaDB, Bootstrap
- Database design
- Logic and structure study
- Applications implementation and development
- Support and maintenance
- CMS for the istitutional website

View File

@ -0,0 +1,19 @@
+++
images = ['images/project/altevie-web-application-geolocation.png']
tagsspot= ['Software development', 'Web application']
categoriesspot = ['Projects']
services = ['web-application-development']
title = 'Skibus GPS map tracking application'
date = '2015-01-31'
lastmod = '2015-01-31'
+++
Client : Altevie (Trento - IT)
Responsive web application with responsive map to track the position of gps equipped skibus
- Application design and development
- Server and database installation and configuration
- Integration with external SOAP services to collect the bus positions and time schedule
- Development of the map features with bus stop positions, realtime buses position and direction detection

View File

@ -0,0 +1,17 @@
+++
images = ['images/project/amor-cosmetics-ecommerce.png']
services = ['web-application-development', 'e-commerce']
tagsspot = ['Software development', 'Web application', 'E-commerce']
categoriesspot= ['Projects']
title = 'E-commerce website setup and customization for beauty products'
date = '2021-05-27'
lastmod = '2021-05-27'
+++
Client : Amor Cosmetics (Trento - IT)
E-commerce website integrated with credit card payments
- Website migration and upgrade
- Configuration and graphic review and redesign
- Hosting

View File

@ -0,0 +1,20 @@
+++
images = ['images/project/amore-ecommerce.png']
services = ['web-application-development', 'e-commerce']
tagsspot = ['Software development', 'Web application', 'E-commerce']
categoriesspot= ['Projects']
title = 'E-commerce website setup and customization '
date = '2012-08-02'
lastmod = '2012-08-02'
+++
Cliente : Ditta Amore (Rovereto - IT)
E-commerce website integrated with credit card payments and shipping fees computation
- E-commerce OpenCart platform setup and configuration
- Modules selection, installation and customization
- Credit card Stripe payment system integration
- Custom shipment fees calculation module development
- Development of custom features

View File

@ -0,0 +1,19 @@
+++
images = ['images/project/botta-online-museum.png']
services = ['web-application-development', 'e-commerce']
tagsspot = ['Software development', 'Web application', 'E-commerce', 'Custom CMS']
categoriesspot= ['Projects']
title = 'Online museum and e-commerce'
date = '2017-04-15'
lastmod = '2017-04-15'
+++
Client : Museo Botta (Rovereto - IT)
Car models and advertising objects virtual museum with custom e-commerce
- Yii framework structure
- Implementation of client design
- Bootstrap 3 theming framework
- Online shop and ordering and payment system
- Server installation and configuration

View File

@ -0,0 +1,21 @@
+++
images = ['images/project/cspolsa-renting-software.jpg']
mainclass = 'app-development'
services = ['desktop-applications']
tagsspot = ['Software development', 'Desktop application']
categoriesspot = ['Projects']
title = 'Ski rental service software application'
date = '2017-12-12'
lastmod = '2017-12-12'
+++
Client : Centro Snowboard Polsa (Rovereto - IT)
Design and development of a cross platform desktop application for MS Windows and Linux operating systems using :
- ObjectPascal language
- Lazaurs IDE
- MariaDB database
- Onsite Linux server
for skies and accessories renting.

View File

@ -0,0 +1,19 @@
+++
images = ['images/project/daxtor-firewall-vpn-server-farm.jpg']
services = ['security-firewalls-vpn', 'managed-linux-servers']
tagsspot = ['VPN', 'Firewall', 'System Administration']
categoriesspot= ['Projects']
title = 'Firewall, VPN and server farm network'
date = '2002-06-07'
lastmod = '2002-06-07'
+++
Client : Daxtor (Bolzano - IT)
Network and security design and implementation for SAS service in a server farm
- Hardware selection
- Network design
- Linux application server installation and configuration
- Oracle database server installation
- Redundant firewalls configuration and maintenance
- VPN based on IPSec and OpenVPN configuration and maintenance for access control

View File

@ -0,0 +1,19 @@
+++
images = ['images/project/deflorian-server.png']
services = ['online-offline-collaboration', 'managed-linux-servers']
tagsspot = ['NAS', 'Office server']
categoriesspot= ['Projects']
subTitle = 'Linux server to serve many users with different privileges in a MS Windows environment'
title = 'Linux file and backup server'
date = '2011-03-12'
lastmod = '2011-03-12'
+++
Client : Deflorian Law Firm (Rovereto - IT)
Linux server to serve many users with different privileges in a MS Windows environment
- Linux Debian server base installation and configuration
- Software RAID support configuration
- File server configuration and privileges assignment
- External and redundant backup with versioning files support

View File

@ -0,0 +1,92 @@
+++
images = ['images/blog/encrypt-compress-emails-on-server.jpg']
tagsspot = ['Security','Server','Privacy', 'Dovecot']
categoriesspot= ['Solutions']
date = '2022-07-08'
lastmod = '2022-07-08'
title = 'Encrypt and compress emails server side'
slug = 'encrypt-compress-email-server'
+++
To improve the security and privacy of users and save disk space, the mail server
[Dovecot](https://www.dovecot.org/) allows encrypting the files containing the e-mail messages.
<!--more-->
Compression is done through the ```zlib``` plugin while encryption is done through the ```mail_crypt``` plugin.
```bash
mail_plugins = $mail_plugins zlib mail_crypt
```
The plugins can be configured with several options
```bash
plugin {
mail_crypt_global_private_key = </etc/dovecot/crypt/master.key
mail_crypt_global_public_key = </etc/dovecot/crypt/master.pub
mail_crypt_curve = prime256v1
mail_crypt_save_version = 2
zlib_save_level = 6
zlib_save = lz4
}
```
To encrypt is necessary to create the key pair: private (```master.key```) to encrypt and public (```master.pub```) to decrypt.
In this way, in case of a server breach, and the e-mail files are stolen, they would be unreadable without the private key necessary to decrypt them.
From the moment the encryption and compression are active, all the new messages will be automatically encrypted and compressed in a transparent way for the final user.
To encrypt and compress pre-existing e-mails, simply move messages from one folder to another using an IMAP client.
Alternatively, the following bash script can be used to initiate encryption of all mail files in the example directory ```/var/vmail/domain/user/Maildir``` (compression is not possible AFAIK).
```bash
find /var/vmail/domain/user/Maildir -type f -regextype egrep -regex '.*S=.*W=.*' | while read -r file; do
if [[ $(head -c7 "$file") != "CRYPTED" ]]; then
echo $file
doveadm fs put crypt private_key_path=/etc/dovecot/crypt/master.key:public_key_path=/etc/dovecot/crypt/master.pub:posix:prefix=/ \
"$file" "$file"
chmod 600 "$file"
chown vmail:vmail "$file"
fi
done
```
In case, on the other hand, it is necessary to access one or more unencrypted email files, the following scripts can be used :
To decrypt only (in case the files have not been compressed)
```bash
find /var/vmail/domain/user/Maildir -type f -regextype egrep -regex '.*S=.*W=.*' | while read -r file; do
if [[ $(head -c7 "$file") == "CRYPTED" ]]; then
echo $file
doveadm fs get crypt private_key_path=/etc/dovecot/crypt/master.key:public_key_path=/etc/dovecot/crypt/master.pub:posix:prefix=/ \
"$file" > "/tmp/$(basename "$file")"
if [[ -s "/tmp/$(basename "$file")" ]]; then
chmod 600 "/tmp/$(basename "$file")"
chown vmail:vmail "/tmp/$(basename "$file")"
mv "/tmp/$(basename "$file")" "$file"
else
rm "/tmp/$(basename "$file")"
fi
fi
done
```
To decrypt and decompress :
```bash
find /var/vmail/domain/user/Maildir -type f -regextype egrep -regex '.*S=.*W=.*' | while read -r file; do
if [[ $(head -c7 "$file") == "CRYPTED" ]]; then
echo $file
doveadm fs get compress lz4:0:crypt:private_key_path=/etc/dovecot/crypt/master.key:public_key_path=/etc/dovecot/crypt/master.pub:posix:prefix=/ \
"$file" > "/tmp/$(basename "$file")"
if [[ -s "/tmp/$(basename "$file")" ]]; then
chmod 600 "/tmp/$(basename "$file")"
chown vmail:vmail "/tmp/$(basename "$file")"
mv "/tmp/$(basename "$file")" "$file"
else
rm "/tmp/$(basename "$file")"
fi
fi
done
```

View File

@ -0,0 +1,18 @@
+++
images = ['images/project/finova-vps-servers-firewall-vpn.jpg']
services = ['security-firewalls-vpn']
tagsspot = ['Firewall', 'VPN', 'Networking', 'OpnSense', 'System Administration']
categoriesspot= ['Projects']
title = 'VPS servers, Firewall and VPN'
date = '2019-09-14'
lastmod = '2019-09-14'
+++
Client : Finova (Bolzano - IT)
Network and security design and implementation for SAS services
- Hardware selection
- Network design
- Linux application server installation and configuration
- VPN based on OpenVPN configuration and maintenance for access control
- VPS management

View File

@ -0,0 +1,17 @@
+++
images = ['images/project/finova-oracle-apex.png']
services = ['managed-linux-servers']
tagsspot = ['System administration', 'Database', 'Server', 'Linux']
categoriesspot= ['Projects']
title = 'Oracle database and APEX'
date = '2019-11-09'
lastmod = '2019-11-09'
+++
Client : Finova (Bolzano - IT)
Oracle database and APEX configuration and installation
- Linux CentOS server base installation and configuration
- Oracle XE database installation and configuration
- APEX installation and configuration
- Apache and Tomcat configuration

View File

@ -0,0 +1,40 @@
+++
images = ['images/blog/fritzbox.jpg']
categories = ['Security', 'VPN']
tagsspot = ['VPN', 'Router', 'Networking']
categoriesspot = ['Solutions', 'Technology']
date = '2022-07-08'
lastmod = '2022-07-08'
title = 'VPN with Fritz!Box router'
published = true
translationKey ='blog-frizbox-vpn'
+++
AVM\'s [Fritz!Box](https://it.avm.de/prodotti/fritzbox/) routers already provide built-in two important services that enable
remote connectivity :
- **Dynamic DNS**
- **VPN based on ipsec protocol**.
<!--more-->
> [New firmware version under development](https://en.avm.de/fritz-lab/fresh-from-development/fresh-from-development/), will also allow the creation of VPNs based on [Wireguard](https://www.wireguard.com/).
Dynamic DNS associates the router's public IP with a host name on the myfritz.net domain, allowing thus making it possible to reach the router over the Internet even if you do not have a connection with a static IP.
This functionality is preparatory to the implementation of the VPNs that Fritz!Box supports.
VPNs can be of 2 types :
1. **site to site** : to connect 2 or more Fritz!Box devices (or even compatible devices that support the same type of VPN) to each other in order to connect their respective private networks.
This feature can be very useful for connecting two remote locations, such as 2 geographically distant offices or
home with the office.
2. **client** : to connect a client (smartphone, tablet, computer) via VPN to the router and thus reach its internal network
This allows individual external employees to access internal company resources via a secure channel.
{{< figure src="/img/blog/fritzbox-vpn.png" alt="Fritz!Box VPN creation" class="img-fluid">}}
Advanced networking features also allow you to select which internal resources can access the VPN, thus making
only essential services and devices reachable, improving security.

View File

@ -0,0 +1,17 @@
+++
images = ['images/project/guiet-web-application-development.jpg']
tagsspot = ['Software development', 'Web application', 'Custom CMS']
categoriesspot= ['Projects']
title = 'Web application development'
date = '2015-08-03'
lastmod = '2015-08-03'
+++
Client : GUIET.com (Fribourg - CH)
Drupal, CodeIgniter, Yii dev, custom CMS development
- Database design
- Application logic study and backend implementation
- Custom features development
- Support and maintenance
- Custom multilingual CMS design and implementation

View File

@ -0,0 +1,45 @@
+++
images = ['images/blog/home-assistant.jpg']
tagsspot = ['Home Assistant', 'Home automation']
categoriesspot= ['Technology']
PublishDate = '2022-08-30'
LastmodDate = '2022-08-30'
title = 'Home automation with Home Assistant'
published = true
translationKey ='home-automation-with-home-assistant'
slug = 'home-automation-with-home-assistant'
+++
[Home Assistant](https://home-assistant.io) is an entirely open source tool for home automation of both residential and business environments.
<!--more-->
It consists of a server that can also be installed on an SBC (Single Board Computer) such as [RaspberryPi](https://www.raspberrypi.org/)
capable of communicating with many different types of devices of different brands and a variety of network protocols : [Tasmota](https://tasmota.github.io/docs/), [Shelly](https://shelly.cloud), [Sonoff](https://sonoff.tech/products/), [MQTT](https://mqtt.org/), [Zigbee](https://en.wikipedia.org/wiki/Zigbee).
The possibilities are virtually endless for automating the behavior of different devices by combining them with each other via scripts
that can take into account all kinds of conditions and interface with all kinds of sensors : humidity, temperature, presence, wind speed, etc ...
{{< figure src="/img/blog/home-assistant.png" alt="Home Assistant" class="img-fluid" >}}
Some possibilities are :
- control opening and closing motorized roller shutters and awnings
- access control : gates, doors
- indoor and outdoor lighting
- irrigation of gardens and vegetable gardens
- integration with existing burglar alarm systems or creation of a system from scratch
- integration with gas and flood sensors
All programmable in automatic mode and configurable and manually controllable via web interface and app for smartphones and tablets,
also remotely or via NFC tags.
The user interface is highly customizable and configurable according to specific needs, and graphics can also be changed via themes
customized.
{{< rawhtml >}}
<div class="row">
<div class="col-md-6">{{< figure src="/img/blog/home-assistant-minimalist.png" alt="Home Assistant Minimalist Theme" class="img-fluid">}}</div>
<div class="col-md-6">{{< figure src="/img/blog/home-assistant-swakes.jpg" alt="Home Assistant Swakes Theme" class="img-fluid">}}</div>
</div>
{{< /rawhtml >}}

View File

@ -0,0 +1,13 @@
+++
images = ['images/project/lrm-drupal.png']
services = ['web-application-development']
tagsspot = ['Software development', 'Web application', 'Custom CMS']
categoriesspot= ['Projects']
title = 'Drupal software development'
date = '2010-06-13'
lastmod = '2010-06-13'
+++
Client : LeftRightMinds (Vancouver - CA)
Drupal custom modules development (Drupal, PHP, MySQL)

View File

@ -0,0 +1,179 @@
+++
images = ['images/blog/mariadb-replication-master-master.jpg']
categoriesspot = ['Solutions', 'Technology']
tagsspot = ['Server', 'Database', 'Firewall', 'MariaDB', 'OpenSSL', 'UFW']
date = '2022-07-19'
lastmod = '2022-12-11'
title = 'MariaDB replication master-master via Internet'
published = true
translationKey ='mariadb-replication-master-master-internet'
slug = 'mariadb-replicazione-master-master-tramite-internet'
+++
[MariaDB](https://mariadb.org) (and MySQL) allow master-slave replication to be configured between two servers.
A master-master type of replication can be implemented via [Galera](https://galeracluster.com/), but it requires
at least 3 servers. If you have 2 servers, you can configure master-master replication by
by cross-duplicating the master-slave replication.
<!--more-->
This functionality can also be implemented through servers connected to each other via the Internet,
by encrypting MariaDB's native connection via SSL certificates and controlling access to the service
via software firewalls ([ufw](https://help.ubuntu.com/community/UFW) for example).
Assuming then that we have 2 servers ``server1`` and ``server2`` the procedures
to follow are as follows.
#### 1. Setting up firewall rules
In order for the two servers to communicate with each other, it is necessary to allow communication on the TCP port of
MariaDB (default 3306)
On ```server2```
```bash
ufw allow from server1-ip to server2-ip 3306 comment "Allow replication from server1"
```
On ```server1```
```bash
ufw allow from server2-ip to server1-ip 3306 comment "Allow replication from server2"
```
##### 2. SSL certificates generation
To secure the connection between the two servers, one can take advantage of the SSL connectivity already present in MariaDB by
by generating your own CA (Certification Authority) and respective certificates for the two servers.
[XCA](https://hohnstaedt.de/xca/) is an excellent visual software for generating and maintaining SSL certificates.
An alternative to a direct, encrypted connection via SSL is to create a VPN linking the two servers.
##### 3. Data servers alignment
In case the two servers already contain data, it will be necessary to proceed with an alignment
beforehand by exporting and importing the affected databases, so that both
servers contain the same databases, tables, and records.
##### 4. Create the dedicated users on each server to enable replication
On ```server1``` create the user for the connection from ```server2``` and give it permissions
for replication to ```server1```
```sql
CREATE USER 'server2'@'server2-ip' IDENTIFIED BY 'server2pwd';
GRANT REPLICATION SLAVE ON *.* TO 'server2'@'server2-ip';
FLUSH PRIVILEGES;
```
On ```server2``` create the user for the connection from ```server1``` and give it permissions
for replication to ```server2```
```sql
CREATE USER 'server1'@'server1-ip' IDENTIFIED BY 'server1pwd';
GRANT REPLICATION SLAVE ON *.* TO 'server1'@'server1-ip';
FLUSH PRIVILEGES;
```
##### 5. Configure ```server1```
In file server.conf :
```bash
key_buffer_size = 64M
max_allowed_packet = 64M
server-id = 1
report_host = server1
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
relay_log = /var/lib/mysql/relay-bin
relay_log_index = /var/lib/mysql/relay-bin.index
log-slave-updates
auto_increment_increment=1
auto_increment_offset=1
slave-skip-errors=1062,1032,1007,1008,1050,1396
skip-slave-start=FALSE
```
##### 6. Configure ```server2```
In file server.conf :
```bash
key_buffer_size = 64M
max_allowed_packet = 64M
server-id = 2
report_host = server2
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
relay_log = /var/lib/mysql/relay-bin
relay_log_index = /var/lib/mysql/relay-bin.index
log-slave-updates
auto_increment_increment=2
auto_increment_offset=2
slave-skip-errors=1062,1032,1007,1008,1050,1396
skip-slave-start=FALSE
```
##### 7. Configure ```server1``` as ```server2``` slave
On ```server2``` execute the command :
```sql
SHOW MASTER STATUS \G;
```
and take note of the values : ```File``` and ```Position``` which are to be replaced in the
variables ```MASTER_LOG_FILE``` and ```MASTER_LOG_POS``` respectively in the following code
to be executed on ```server1``` :
```sql
CHANGE MASTER TO
MASTER_HOST='server2-ip',
MASTER_USER='server1',
MASTER_PASSWORD='server1pwd',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=17680369,
MASTER_CONNECT_RETRY=10,
MASTER_SSL=1,
MASTER_SSL_CA='/etc/mysql/ssl/ca.crt',
MASTER_SSL_CERT='/etc/mysql/ssl/server1.crt',
MASTER_SSL_KEY='/etc/mysql/ssl/server1.key';
START SLAVE;
```
Check the status of slave replication with the command :
```sql
SHOW SLAVE STATUS\G;
```
##### 8. Configure ```server2``` as ```server1``` slave
On ```server1``` execute the command :
```sql
SHOW MASTER STATUS \G;
```
and take note of the values : ```File``` and ```Position``` which are to be replaced in the
variables ```MASTER_LOG_FILE``` and ```MASTER_LOG_POS``` respectively in the following code
to be executed on ```server2``` :
```sql
CHANGE MASTER TO
MASTER_HOST='server1-ip',
MASTER_USER='server2',
MASTER_PASSWORD='server2pwd',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000051',
MASTER_LOG_POS=825490817,
MASTER_CONNECT_RETRY=10,
MASTER_SSL=1,
MASTER_SSL_CA='/etc/mysql/ssl/ca.crt',
MASTER_SSL_CERT='/etc/mysql/ssl/server2.crt',
MASTER_SSL_KEY='/etc/mysql/ssl/server2.key';
START SLAVE;
```
Check the status of slave replication with the command :
```sql
SHOW SLAVE STATUS\G;
```

View File

@ -0,0 +1,54 @@
+++
images = ['images/blog/postgresql.jpg']
categoriesspot = ['Solutions', 'Technology']
tagsspot = ['Server', 'Database', 'PostgreSQL']
date = '2022-12-11'
lastmod = '2022-12-11'
title = 'Database link with PostgreSQL'
published = true
translationKey ='blog-postgresql-database-link'
slug = 'postgresql-database-link'
+++
In PostgreSQL, it is possible to create database links and connect two separate databases, whether they
reside on the same server or on separate servers, as long as they are accessible over a network.
<!--more-->
The used nomenclature is :
- ```serverorig``` : the source main server
- ```databaseorig``` : the database name on the source main server
- ```serverdest``` : the secondary destination server where the database link will be created pointing to ```serverorig```
- ```schemaorig``` : the schema on the main source server
- ```schemadest``` : the schema on the secondary destination server
#### 1. Extension installation
The first step is to install the extension ```postgres_fdw``` on ```serverdest``` as user ```postgres``` :
```sql
CREATE EXTENSION IF NOT EXISTS postgres_fdw;
```
#### 2. User creation to access through the database link
On ```serverorig``` create the user that permits the connection from ```serverdest``` and has access
to the schema ```schemaorig``` and to the necessary tables. For simplicity we call the user ```userdest``` with
password ```passworddest``` and it should be able to access the table ```tableorig``` with the desired privileges :
(```SELECT, INSERT, UPDATE, DELETE```)
#### 3. Database link creation
On ```serverdest``` :
```sql
CREATE serverorig FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host 'serverorig', port 'portorig', dbname 'databaseorig');
```
On ```serverdest``` create the mapping for the user (```myuser```) that should be able to use the database link
```sql
CREATE USER MAPPING FOR myuser SERVER serverorig OPTIONS ( user 'userdest' , password 'passworddest');
```
#### 5. Import the tables structure from the main schema ad assign the privileges
On ```serverdest``` :
```sql
IMPORT FOREIGN SCHEMA schemaorig LIMIT TO (tableorig) FROM SERVER serverorig INTO schemadest;
GRANT ALL ON TABLE schemadest.tableorig TO myuser;
```

View File

@ -0,0 +1,18 @@
+++
client = 'SINT (Torino - IT)'
images = ['images/project/sint-crm.jpg']
services = ['desktop-applications']
tagsspot = ['Software development', 'Desktop application', 'Oracle Database', 'Pascal']
categoriesspot= ['Projects']
title = 'CRM applications, Oracle and PCI certification'
date = '2000-06-05'
lastmod = '2000-06-15'
+++
Client : SINT (Torino - IT)
Suite of applications for CRM management, integrated with Oracle database and PCI compliant
- Oracle Dabase design and implementation
- Desktop applications development with unique features : auto updates, self contained Oracle client, integrated reports
- Applications for CRM backend and frontend
- Applications and database infrastructure PCI compliant to store securely sensible information : design and development of an innovative and extremely secure system to save encrypted data in the Oracle database

View File

@ -0,0 +1,13 @@
+++
images = ['images/project/synology-nas.jpg']
categoriesspot = ['Solutions', 'Technology', 'Projects']
tagsspot = ['NAS', 'File server']
services = ['office-servers']
title = 'Synology NAS installation and configuration'
date = '2021-07-03'
lastmod = '2021-07-03'
+++
Client : several ones
- Synology installation and configuration : users, sharing privileges and backup
- MS Windows clients configuration

View File

@ -0,0 +1,13 @@
+++
images = ['images/project/versantus-drupal.jpg']
tagsspot = ['Software development', 'Web application', 'Custom CMS']
categoriesspot= ['Projects']
services = ['web-application-development', 'e-commerce']
title = 'Drupal software development'
date = '2016-02-03'
lastmod = '2016-02-03'
+++
Client : Versantus (Oxford - UK)
Drupal CMS custom modules development (Drupal, PHP, MySQL)

View File

@ -0,0 +1,21 @@
+++
client = 'Cooperativa VillaMaria (Rovereto - IT)'
images = ['images/project/coopvillamaria-opnsense-firewalls.jpg']
services = ['security-firewalls-vpn']
categoriespot = ['Projects', 'Solutions']
tagsspot = ['Firewall', 'VPN', 'Networking', 'OpnSense']
title = 'Firewalls, VPN and content filtering'
date = '2016-01-14'
lastmod = '2016-01-14'
+++
Client : Cooperativa VillaMaria (Rovereto - IT)
Firewalls, VPN site-to-site and client-to-site, web and content access control
- Hardware configuration
- Firewall system installation and configuration with RAID support
- Setup of VPN site-to-site based on OpenVPN to connect two remote sites
- Setup of single VPN clients to allow remote working
- Transparent content filtering to control the access to web resources

View File

@ -0,0 +1,15 @@
+++
images = ['images/project/wmtrento-data-sync.jpg']
services = ['web-application-development', 'e-commerce']
tagsspot = ['Software development', 'Web application', 'Custom CMS']
categoriesspot= ['Projects']
subTitle = 'PHP, MySQL, Joomla, Virtuemart'
title = 'Data synchronization procedures'
date = '2022-11-07'
lastmod = '2022-11-07'
+++
Client : Web Marketing Trento (Trento - IT)
Design and development of data synchronization procedures between different applications and databases
with PHP, CodeIgniter, MySQL, Joomla, Virtuemart

View File

@ -0,0 +1,19 @@
+++
images = ['images/project/wmtrento-jspreadsheet.jpg']
tagsspot = ['Software development', 'Web application']
categoriesspot= ['Projects']
services = ['web-application-development', 'e-commerce']
title = 'Web spreadsheet application with sync capabilities'
date = '2023-05-07'
lastmod = '2023-05-07'
+++
Client : Web Marketing Trento (Trento - IT)
Design and development of data synchronization procedures between different applications and databases
with a spreadsheet interface with : PHP, MariaDB, Joomla, Virtuemart, CodeIgniter, VueJS.
<!--more-->
I designed and developed a web application based on CodeIgniter framework and integrating [JSpreadsheet](https://jspreadsheet.com/)
which allows interaction with the Virtuemart ecommerce database to be able to edit product data in spreadsheet mode.
The frontend integrates [VueJS](https://vuejs.org) for a more efficient user interface, and all the calls to the backend are ajax and return the data in JSON format.

View File

@ -0,0 +1,41 @@
+++
linkTitle = 'Application development'
images = ['images/service/application-development.jpg']
position = 2
services = ['application-development']
shortDescription = 'Software applications accessible from anywhere and from any device'
slug = 'applications-development'
title = 'Software applications design and development'
metaDescription='Software applications design and development for the web, desktop and mobile (WA)'
metaKeywords = ["Web application", "Project management", "Inventory", "Custom application"]
translationKey = 'service-applications-development'
type = 'service'
[menu]
[menu.main]
parent = 'services'
weight = 2
[menu.main.params]
iconclass = 'bi bi-window-desktop'
title = 'Software applications design and development'
+++
Software applications (project management, time tracking, inventory, accounting, and billing) that can run on every modern web browser, accessible from anywhere from any device, and that use the most efficient development frameworks connected with the best open source databases: MariaDB, PostgreSQL, SQLite.
The applications are accessible from everywhere (only an Internet connection is necessary), dont require an installation and can be used simultaneously by many users and support every operating system (MS Windows, Linux, Apple) and every mobile device (smartphone and tablet).
###### Tecnology used
Language and development framework : [PHP](https://www.php.net/), [CodeIgniter](https://codeigniter.org), [HTMX](https://htmx.org), [Ionic Framework](https://ionicframework.com/), [FreePascal](https://www.freepascal.org/) and [Lazarus IDE](https://www.lazarus-ide.org/)
Database : [MariaDB](https://www.mariadb.org/), [PostgreSQL](https://postgresql.org), [SQLite](https://sqlite.org)
###### Applications
- Project management
- Time tracking
- Inventory
- Accounting and billing
- Custom applications
- Inventory management
- Accounting and bookkeeping
- Domotic system control
- Renting shops
The developed applications can be cross-platform and work in the same way on any computer and operating system

View File

@ -0,0 +1,44 @@
+++
description = 'Design and development of websites and custom CMS backend and frontend'
keywords = ['Custom CMS', 'PHP', 'MySQL', 'CMS', 'Web site backend', 'CodeIgniter', 'Yii']
linkTitle = 'Websites backends and CMS'
images = ['images/service/custom-cms.jpg']
position = 4
services = ['websites-custom-cms']
shortDescription = 'Design, development and integration of websites backends and custom CMS backend and frontend engines'
slug = 'custom-cms'
title = 'Websites backends and custom CMS development and integration'
translationKey = 'service-backend-websites-custom-cms'
type = 'service'
[menu]
[menu.main]
parent = 'services'
weight = 4
[menu.main.params]
iconclass = 'bi bi-stack'
title = 'Websites and custom CMS development and integration'
+++
Design and development of custom CMS backend and frontend engines with modern frameworks. Integration of the CMS with external services.
There are many advantages to choosing a custom CMS in the place of a pre-built solution :
- the website and its features are a lot faster
- efficient use of the hardware and software resources
- customized backend for an efficient and straightforward workflow
- more features can be added quickly and easily
- more freedom both for the client and the developer: every type of customization is possible
- security: the frontend and backend have separate access because they are two distinct applications. The access to the backend can be blocked during the night, the weekends, or during periods of inactivity
#### Technologies used
Language and development framework: [PHP](https://www.php.net/), [CodeIgniter](https://codeigniter.org), [HTMX](https://htmx.org)
Database : [MariaDB](https://www.mariadb.org/), [PostgreSQL](https://postgresql.org), [SQLite](https://sqlite.org)
#### Applications
- Public websites
- Intranet
- Internal documentation

View File

@ -0,0 +1,34 @@
+++
linkTitle = 'On/off-line collaboration'
images = ['images/service/offline-online-collaboration.webp']
position = 7
services = ['online-offline-collaboration']
shortDescription = 'Online and offline collaboration solutions with NextCloud, OpenMediaVault, TrueNAS e Synology'
slug = 'online-offline-collaboration-solutions'
title = 'Online and offline collaboration solutions'
translationKey = 'service-online-offline-collaboration'
type = 'service'
[menu]
[menu.main]
parent = 'services'
weight = 7
[menu.main.params]
iconclass = 'bi bi-cloud-check-fill'
title = 'Online and offline collaboration solutions'
+++
A Network Attached Storage (NAS) solution, allows you to centralize your business' important documents and share them with your
collaborators. It also allows you to centralize the backup of your most important data.
A NAS can be built either with dedicated hardware such as Synology, or on generic hardware and selected according to the customer's specific needs.
###### Tecnology used
[NextCloud](https://nextcloud.org), [OpenMediaVault](https://www.openmediavault.org/), [TrueNAS](https://www.truenas.com/truenas-community-editions/), [Synology](https://www.synology.com/), [Seafile](https://www.seafile.com)
###### Applications
- Internal and external file and document sharing
- Centralized access to activity documents with diversified privileges
- Centralized and shared collaboration platform
- Centralized backup

View File

@ -0,0 +1,34 @@
+++
linkTitle = 'E-commerce solutions'
images = ['images/service/e-commerce.jpg']
position = 6
services = ['e-commerce']
shortDescription = 'Design and development of backend and frontend solutions'
slug = 'e-commerce'
title = 'E-commerce platforms design, development and integration'
translationKey = 'service-e-commerce'
type = 'service'
[menu]
[menu.main]
parent = 'services'
weight = 3
[menu.main.params]
iconclass = 'bi bi-cart-check-fill'
title = 'E-commerce platforms design, development and integration'
+++
Design and development of custom solutions tailored to the specific client need both for physical and virtual products integrated with the shipping cost calculation and tracking.
Installation, configuration and maintenance of open-source e-commerce platforms ([Woocommerce](https://woo.com), [OpenCart](https://opencart.com)), as well as engineering and implementation of customised solutions.
Integration with different payment gateways : ([Stripe](https://stripe.com), [Paypal](https://paypal.com), [Satispay](https://www.satispay.com)).
#### Technologies used
Language and development framework: [PHP](https://www.php.net/), [CodeIgniter](https://codeigniter.org), [HTMX](https://htmx.org)
Database : [MariaDB](https://www.mariadb.org/), [PostgreSQL](https://postgresql.org)
#### Applications
Every type of business that can sell its products and services on the Internet.

View File

@ -0,0 +1,44 @@
+++
linkTitle = 'Linux clients'
images = ['images/service/linux-clients.png']
position = 7
services = ['linux-clients']
shortDescription = "Study, evaluation of needs and selection of appropriate, specific Linux distribution for client's particular needs. Configuration of basic system and peripheral, control and display device drivers, implementation, testing and client long-term support"
slug = 'linux-clients'
title = 'Linux clients: installation and configuration'
translationKey = 'service-linux-clients'
type = 'service'
[menu]
[menu.main]
parent = 'services'
weight = 8
[menu.main.params]
iconclass = 'bi bi-display'
title = 'Linux clients: installation and configuration'
+++
There are many advantages of using the Linux operating system as a client on the desktop and laptop, both at home and at an office
##### SECURITY
Linux is immune to viruses and malware, so no protection software, like antivirus or anti-malware, is necessary.
##### EFFICIENCY
Linux works well also on older hardware because it can use the machine resources more efficiently.
##### PRIVACY
Linux provides many free and open source solutions to protect user privacy allowing encryption of the entire disk or only the user data.
##### CUSTOMIZATION
Many user interfaces are available and every interface can be easily customized.
##### SOFTWARE AVAILABILITY
A lot of high-quality, free, and open-source software is available to satisfy every need.
##### MAINTENANCE
Linux is easy to maintain, use and backup. In case an installation from scratch is necessary it is easy to migrate the user data and preferences.
##### COST SAVINGS
Most Linux distributions are completely free and there are no license costs.
The suggested Linux distributions for a desktop are [Linux Mint](https://linuxmint.com/) and [Zorin OS](https://zorin.com/os/)

View File

@ -0,0 +1,54 @@
+++
linkTitle = 'Managed Linux servers'
images = ['images/service/linux-servers.jpg']
position = 6
services = ['managed-linux-servers']
shortDescription = 'Installation, configuration and maintenance of Linux servers on both physical and virtual (VPS) hardware'
slug = 'managed-linux-servers'
title = 'Managed Linux servers'
translationKey = 'service-managed-linux-servers'
type = 'service'
[menu]
[menu.main]
parent = 'services'
weight = 6
[menu.main.params]
iconclass = 'bi bi-hdd-rack-fill'
title = 'Installation, configuration and maintenance of Linux servers on both physical and virtual (VPS) hardware'
+++
Complete management of physical or virtual multifunction servers equipped with open source Linux distributions.
- Sizing
- Installation
- Configuration
- Maintenance
- Upgrade
- Migration
Linux servers can offer a wide range of services : mail, web, backup, cloud, source code repository ...
Access to services from the outside can be made secure using a VPN with OpenVPN or Wireguard or via SSH tunnels, and the server can be protected by its software firewall and security can be increased by integrating Security Enhanced Linux support.
Connections to the web server can be encrypted using SSL certificates from Let's Encrypt (free) or using commercial certificates.
#### Tecnology used
- Operating systems basd on Linux : [Debian](https://debian.org), [RockyLinux](https://rockylinux.org/)
- Backup : Borg, Kopia, restic
- Cloud : Nextcloud
- Database : PostgreSQL, MariaDB
- Mail : Postfix, Dovecot, Roundcube, Rspamd
- Password management : [Vaultwarden](https://github.com/dani-garcia/vaultwarden)
#### Applications
- Mail private server
- Database server
- Backup server
- Private cloud and file server
- Private server for password storage
- Private source code repository for developers
A full range of installation, support, and maintenance services, particularly suitable for small businesses, with on-call or annual support contracts.
Support is provided remotely via control software.

View File

@ -0,0 +1,31 @@
+++
linkTitle = 'Open source domotic'
images = ['images/service/domotic-open-source.webp']
position = 10
services = ['open-source-domotic']
shortDescription = 'Software and hardware solutions for open source home automation based on Home Assistant'
slug = 'domotic-opensource'
title = 'Open source home automation solutions'
translationKey = 'service-open-source-domotic'
type = 'service'
[menu]
[menu.main]
parent = 'services'
weight = 10
[menu.main.params]
iconclass = 'bi bi-robot'
title = 'Open source home automation solutions'
+++
Remote control with private access also via Wireguard VPN.
Ability to receive real-time notifications through different channels.
#### Tecnology used
[Home Assistant](https://www.home-assistant.io/), [Tasmota](https://tasmota.github.io/docs/), [Shelly](https://www.shelly.com/en-it), [Sonoff](https://sonoff.tech/), [Athom](https://www.athom.tech/tasmota)
#### Applications
- Automazione illuminazione interna ed esterna
- Automazione irrigazione
- Automazione tapparelle
- Apertura / chiusura cancelli e basculanti

View File

@ -0,0 +1,47 @@
+++
linkTitle = 'Private E-mail'
images = ['images/service/e-mail-service.png']
position = 10
services = ['e-mail']
shortDescription = 'Intelligently-managed, high-performance mail server solutions that fully preserve your privacy'
slug = 'private-e-mail'
title = 'Private E-mail: hosting, security, privacy and archiving'
translationKey = 'service-private-mail'
type = 'service'
[menu]
[menu.main]
parent = 'services'
weight = 5
[menu.main.params]
iconclass = 'bi bi-envelope'
title = 'Private E-mail: hosting, security, privacy and archiving'
+++
Our mail servers are located in Germany and are based only on open source software: [Linux Debian](https://debian.org), [Postfix](https://postfix.org), [Dovecot](https://www.dovecot.org/), [Rspamd](https://rspamd.com/), [Roundcube](https://roundcube.net/).
The servers are hosted in the [Contabo](https://contabo.com) data centers and all the communications between the servers and the clients are encrypted with OpenSSL valid certificates signed by LetsEncrypt.
#### Features
- Reduntant servers
- Antispam
- Inbound antispam filter implemented through rspamd software
- Deliverability
- Deliverability guaranteed through DKIM and DMARC technologies
- Webmail with a responsive interface that can be used with every type of device (computer, smartphone, tablet).
- Each user can :
- - change his password
- - set a vacation message
- - change the desired spam level protection
- - encrypt his emails with GPG
- Server-side email encryption and compression for complete privacy protection
- Crypted and versioned backup of the emails on an external cloud service
#### Additional available features
- Dedicated server
- The service can be implemented on a dedicated and private server
- Collaboration platform
- Automatic and scheduled backup
- A copy of the emails can be copied to client storage for backup

View File

@ -0,0 +1,44 @@
+++
linkTitle = 'Security'
images = ['images/service/security.jpg']
mainclass = 'security'
position = 9
services = ['security-firewalls-vpn']
shortDescription = 'Software and hardware solutions to protect your network, your servers and your sensible data'
slug = 'security-firewalls-vpn'
title = 'Security structures: firewalls, VPN, encryption, backups'
translationKey = 'service-security'
type = 'service'
[menu]
[menu.main]
parent = 'services'
weight = 9
[menu.main.params]
iconclass = 'bi bi-shield-fill-check'
title = 'Security structures: firewalls, VPN, encryption, backups'
+++
#### Firewalls
Software and hardware solutions to protect networks and servers for every need :
- homes and small offices
- large offices
- branch offices
- servers
#### VPN
Virtual Private Network solutions to access a remote network in a secure mode or to connect two or more remote locations with an encrypted connection.
A VPN can be implmented using IPSec, OpenVPN and WireGuard software and allows individual computers, tablets or smartphones to connect to a secure network through an encrypted channel and use remote resources as transparently as if they were physically connected to the same network.
A VPN also allows two or more branch offices to be connected, enabling them to colalborate on the same servers transparently.
#### Cifratura dati
Open source solutions to encrypt and protect sensitive data on servers, computers, tablets and smartphones.
Data encryption ensures privacy protection even in case of system intrusion or when a device is lost or compromised.
Email privacy and authenticity can be guaranteed by using GPG and integrating it with email software: only the owner of the private key and password can read emails that have previously been encrypted with his or her public key.
#### Backup
Having an automatic, efficient and easily accessible backup of your data is essential. Different software and hardware solutions are available to cover every need.
To ensure maximum reliability several physical locations of backups should be implemented. And to preserve privacy, backups should always be encrypted.
A backup to S3 storage that supports versioning and object locking also guards against ransomware attacks.

View File

@ -0,0 +1,3 @@
+++
title = "IBIS Blog"
+++

View File

@ -0,0 +1,28 @@
+++
tagsibis = ['Economy', 'USA']
categoriesibis= ['Books']
images = ['images/blog/amadeo_peter_giannini.jpg']
title = "Amadeo Peter Giannini - Il banchiere che investiva nel futuro"
date = '2023-10-19'
lastmod = '2023-10-19'
+++
Questo libro racconta la storia del fondatore di Bank of Italy divenuta in seguito Bank of America :
Amadeo Peter Giannini.
Amadeo era figlio di migranti italiani negli Stati Uniti d'America a metà del 1800 che da semplici
contadini divennero proprietari terrieri.
<!--more-->
Il libro racconta la storia della famiglia Giannini a partire dall'emigrazione e dell'infanzia di Amadeo, che rimasto orfano
di padre in giovane età dovette crescere in fretta.
Il libro non espone solo il contesto storico in cui Amadeo trascorse la sua vita, ma descrive anche i valori, i principi
e l'etica di Amadeo, che tramite la sua banca consentì di migliorare le vite di moltissime persone.
Una importante lezione su quello che dovrebbe essere il ruolo delle banche nella nostra società.
[Articolo su Wikipedia](https://it.wikipedia.org/wiki/Amadeo_Giannini)

View File

@ -0,0 +1,15 @@
+++
tagsibis = ['Electricity', 'Electrotechnics']
categoriesibis= ['Science']
images = ['images/blog/tester.jpg']
title = "Corso online di elettricità ed elettrotecnica"
date = '2023-10-21'
lastmod = '2023-10-21'
+++
Sul canale Youtube [Corrado Lai - Il prof elettrico](https://www.youtube.com/@laicorrado-ilprofelettrico), il professor Lai spiega
con un linguaggio semplice e chiaro i fondamenti di elettricità e di elettrotecnica, accessibili anche ai non adetti ai lavori.
Per approfondire invece gli aspetti puramente pratici e seguire delle guide passo-passo per l'installazione di impianti eletrici in
maniera corretta e professionale il canale Youtube [Stefano Lai Elettrica PLC](https://www.youtube.com/@ElettricaPLC) offre delle videoguide
molto dettagliate.

View File

@ -0,0 +1,37 @@
+++
tagsibis = ['Car', 'Security']
categoriesibis= ['Ideas']
images = ['images/blog/dashcam_car.jpg']
title = "Montare una dashcam sulla propria auto"
date = '2023-10-29'
lastmod = '2023-10-29'
+++
In considerazione dei pericoli che si possono incontrare sulla strada, sia per se stessi che per gli altri,
credo che sia opportuno installare sulla propria auto una coppia di dash cam, una sul parabrezza anteriore ed una
sul lunotto posteriore.
Ne esistono di diversi caratteristiche e prezzi, e dopo una serie di ricerche, cercando un giusto equilibrio tra funzionalità offerte e necessità,
ho deciso di acquistare una di queste : [Viofo Dashcams](https://viofo.com/)
Per le mi esigenze ho scelto questa : [Viofo A229](https://viofo.com/content/73-viofo-a229-duo-dual-channel-dash-cam/).
Questa dash cam è di tipo duale, ossia riprende da due obiettivi (fronte e retro) ed inoltre offre la modalità parcheggio tramite questo [parking kit](https://viofo.com/accessories/323-viofo-type-c-hk4-hardwire-kit-with-8pcs-full-set-circuit-fuse-tap-for-a119-mini2a229t130wm1a139a139pro.html)
Si tratta sostanzialmente di un piccolo trasformatore 12V->5V che si collega alla scatola dei fusibili nell'abitacolo tramite 2 adattatori : un collegamento va fatto ad una presa di corrente che riceve tensione solo quando l'auto è accesa e l'altro (per la modalità parcheggio) che riceve sempre tensione, anche con l'auto spenta.
Il trasformatore dispone di un selettore che consente di impostare la soglia di tensione ricevuta sotto la quale automaticamente spegne la dash cam per evitare di
esaurire la carica della batteria dell'auto.
Un'altra caratteristica importante di questa dash cam è la presenza di un capacitore, il quale, quando viene interrotta l'alimentazione alla dash cam, è in grado di fornire la corrente necessaria alla dash cam per uno spegnimento pulito, permettendole di salvare la registrazione correttamente, senza il rischio di perdere dati o di corrompere il file system dalla sd card.
Nella mia installazione ho aggiunto 3 piccoli pulsanti che mi consentono di escludere completamente la corrente al trasformatore della dash cam, quando ad esempio l'auto si trova in un parcheggio sicuro.
{{<figure src="/img/blog/dashcam-switch.jpg" class="img-content text-center" alt="Dashcam kill switch">}}
In base alla mia esperienza, credo che sarebbe molto utile avere sulle auto le seguenti predisposizioni, in modo da consentire un'installazione semplificata
della dash cam di propria scelta ed anche un eventuale sostituzione :
1. una canalina per passaggio cavo dal lunotto posteriore sotto il cielo dell'auto fino allo specchietto retrovisore
2. una canalina per passaggio cavo dalla parte alta centrale del parabrezza fino alla scatola fusibili abitacolo
3. predisposizione in scatola fusibili di due prese corrente : una sempre alimentata ed una solo a motore acceso
Volendo ulteriormente migliorare la sicurezza dell'installazione sarebbe molto utile avere la predisposizione per una piccola batteria separata
da quella dell'autovettura che si ricarica quando il motore è acceso e dedicata solo alle dash cam od altri devices aggiuntivi che si volessero
installare sulla propria auto, come ad esempio qualche SBC come Raspberry o un tablet.

View File

@ -0,0 +1,19 @@
+++
tagsibis = ['Economy', 'Italy']
categoriesibis= ['Books']
images = ['images/blog/economia-spiegata-facile-costantino-rover.jpg']
title = "Economia spiegata facile di Costantino Rover"
date = '2023-10-19'
lastmod = '2023-10-19'
+++
Questo libro, con un linguaggio semplice e diretto, e con documentata analisi di fatti e numeri,
riassume gli eventi economici più importanti e significativi dell'economia italiana,
analizzando nel dettaglio le decisioni sbagliate e le cause che hanno portato ad un generale impoverimento
del paese.
Spega anche in maniera molto comprensibile, anche ai non addetti ai lavori, i principali indicatori
economici e quali soluzioni potrebbero essere adottate per riportare l'economia reale al centro
dell'attenzione, depotenziando la finanza speculativa ed il capitalismo predatorio.
Sito web : [Economia Spiegata Facile](https://economiaspiegatafacile.it/)

View File

@ -0,0 +1,3 @@
+++
title = "SPOT Blog"
+++

View File

@ -0,0 +1,20 @@
+++
tagsspot = ['Software development', 'Web application']
categoriesspot= ['Projects']
images = ['images/project/agiati-web-application-development.png']
services = ['application-development', 'websites-custom-cms']
title = 'Applicazioni web per contabilità, gestione soci e CMS personalizzato'
date = '2019-05-04'
lastmod = '2019-05-04'
+++
Cliente : Accademia degli Agiati (Rovereto - IT)
Tecnologie utilizzate : PHP, Yii Framework, MariaDB, Bootstrap
- Database design
- Logic and structure study
- Applications implementation and development
- Support and maintenance
- CMS for the institutional website

View File

@ -0,0 +1,20 @@
+++
images = ['images/project/altevie-web-application-geolocation.png']
tagsspot= ['Software development', 'Web application']
categoriesspot = ['Projects']
services = ['application-development']
title = 'Applicazione per il tracciamento di Skibus con GPS'
date = '2015-01-31'
lastmod = '2015-01-31'
+++
Cliente : Altevie (Trento - IT)
Applicazione web responsive con mappa responsive per il tracciamento della posizione di skibus dotati di gps
- Progettazione e sviluppo dell'applicazione
- Installazione e configurazione del database e del server Linux
- Integrazione con servizi esterni SOAP per la determinazione delle posizioni degli autobus e degli orari
- Sviluppo delle funzionalità della mappa con le posizioni delle fermate, posizione e direzione in tempo reale degli autobus

View File

@ -0,0 +1,19 @@
+++
images = ['images/project/amor-cosmetics-ecommerce.png']
tagsspot = ['Software development', 'Web application', 'E-commerce']
categoriesspot= ['Projects']
services = ['application-development', 'e-commerce']
title = 'Configurazione e personalizzazione del sito di e-commerce per prodotti di bellezza'
date = '2021-05-27'
lastmod = '2021-05-27'
+++
Cliente : Amor Cosmetics (Trento - IT)
Sito e-commerce website integrato con pagamenti tramite carta di credito
<!--more-->
- Migrazione sito web e aggiornamento
- Riconfigurazione e revisione grafica
- Servizio di hosting

View File

@ -0,0 +1,19 @@
+++
images = ['images/project/amore-ecommerce.png']
tagsspot = ['Software development', 'Web application', 'E-commerce']
categoriesspot= ['Projects']
services = ['application-development', 'e-commerce']
title = 'Installazione e personalizzazione sito e-commerce'
date = '2012-08-02'
lastmod = '2012-08-02'
+++
Cliente : Ditta Amore (Rovereto - IT)
Sito di e-commerce integrato con pagamenti tramite carta di credito e calcolo spese di spedizione
- Installazione e configurazione della piattaforma di e-commerce OpenCart
- Selezione, installazione e personalizzazione dei moduli
- Integrazione del sistema di pagamento tramite carta di credito Stripe
- Sviluppo del modulo di calcolo personalizzato delle spese di spedizione
- Sviluppo di funzionalità personalizzate

View File

@ -0,0 +1,19 @@
+++
images = ['images/project/botta-online-museum.png']
services = ['application-development', 'e-commerce', 'websites-custom-cms']
tagsspot = ['Software development', 'Web application', 'E-commerce', 'Custom CMS']
categoriesspot= ['Projects']
title = 'Museo e shop online'
date = '2017-04-15'
lastmod = '2017-04-15'
+++
Cliente : Museo Botta (Rovereto - IT)
Museo virtuale per modelli d'auto ed oggetti pubblicitari con e-commerce personalizzato
- Impostazione del framework PHP Yii2
- Implementazione del design del cliente
- Integrazione del framework Bootstrap 3
- Negozio online con sistema d'ordine e di pagamenti
- Installazione e configurazione del server

View File

@ -0,0 +1,21 @@
+++
images = ['images/project/cspolsa-renting-software.jpg']
services = ['application-development']
tagsspot = ['Software development', 'Desktop application']
categoriesspot = ['Projects']
subTitle = 'Applicazione desktop multipiattaforma per Linux, Mac and Windows'
title = 'Software per noleggio attrezzature per lo sci'
date = '2017-12-12'
lastmod = '2017-12-12'
+++
Cliente: Centro Snowboard Polsa (Rovereto - IT)
Progettazione e sviluppo di un applicativo multi piattaforma per sistemi operativi MS Windows e Linux utilizzando :
- Linguaggio ObjectPascal
- Lazaurs IDE
- MariaDB database
- Server Linux locale
per il noleggio di sci ed accessori.

View File

@ -0,0 +1,19 @@
+++
images = ['images/project/daxtor-firewall-vpn-server-farm.jpg']
services = ['security-firewalls-vpn']
tagsspot = ['VPN', 'Firewall', 'System Administration']
categoriesspot= ['Projects']
title = 'Firewall, VPN e rete in server farm'
date = '2002-06-07'
lastmod = '2002-06-07'
+++
Cliente : Daxtor (Bolzano - IT)
Progettazione ed implementazione della rete e della sicurezza per un servizio SAS in server farm
- Selezione dell' hardware
- Disegno della rete
- Installazione e configurazione degli application server Linux
- Installazione del database server Oracle
- Configurazione e manutenzione dei firewalls ridondati
- Configurazione e manutenzione delle VPN IPSenc e OpenVPN per controllo degli accessi

View File

@ -0,0 +1,18 @@
+++
images = ['images/project/deflorian-server.png']
services = ['online-offline-collaboration']
tagsspot = ['NAS', 'Office server']
categoriesspot= ['Projects']
title = 'Server Linux come file e backup server'
date = '2011-03-12'
lastmod = '2011-03-12'
+++
Cliente : Deflorian Law Firm (Rovereto - IT)
Server Linux in un ambiente MS Windows per molti utenti con differenti privilegi
- Server Debian Linux installazione e configurazione di base
- Configurazione del supporto software RAID
- Configurazione del file server ed assegnazione dei privilegi agli utenti
- Backup ridondato esterno con supporto per versioni dei files

Some files were not shown because too many files have changed in this diff Show More