Skip to content

Tag: linux

Nginx subfolders

I wanted to publish another site on my server. Now I have Nginx and WordPress but how to publish another site lets say on address malaczynski.pl/test/?

We will use Nginx web server.

I put all new site files in /var/www/test folder,
now I open Nginx config:

 sudo nano /etc/nginx/sites-available/wordpress.conf

and add before last } :

location /test {
    root /var/www;
}

Migration to a new server

Ok, I migrated.

Services that I have transferred:

  1. Gmail forward
  2. Mysql base
  3. WordPress
  1. It was simple, deleted on one host and added on another. I didn’t have to change anything with my domain registrar. When I configured it, I added the appropriate DNS entries.
  2. I thought I didn’t need to do anything because it’s a shared database, but it turns out I need to copy all the data and restore it to the new account. I did this using Adminer. It has easy import and export options.
  3. WordPress eh, scared me at first. I went to my first post about installing WordPress and noticed that the linked page had changed xD Well, this post is already worthless anyway, but a lesson for the future to make screenshots of pages.

New site: https://websiteforstudents.com/how-to-install-wordpress-on-ubuntu-linux-with-nginx/

I did everything without a database (I already have one) and Let’s Encrypt (Cloudflare provides me with an SSL certificate). Speaking about Cloudflare, I changed the IPv6 address in their configuration for the new server.

The last thing I did was copy the entire WordPress directory and overlay the old one on the new installation. That was the hardest part, because I didn’t know how to copy data from one VPS to another.

rsync -avzhe 'ssh -p 10XXX' --progress /var/www [email protected]:/var/www

Performed on the old server fixed the issue.
I used the instructions from this webpage: https://www.tecmint.com/rsync-local-remote-file-synchronization-commands/

Edit. It wasn’t.

The last thing was to change wp-config.php file to change database name, username, password and host.

Restart MM form HA

From time to time the photo module in MagicMirror hangs. I used to restart it manually by logging into the Raspberry and using the command “pm2 restart mm”. Now I want to make it so that it automatically restarts when I scan the NFC tag stuck to the back of the monitor.

So I divided big problem to smaller ones:
1. Restart MM,
2. Connection HA to MM machine,
3. Automation when HA apk scan tag,
4. Stick the NFC tag to the monitor xD

  1. Restart MM – Easy
pm2 restart mm

2. Connection HA to MM mashine

HA needs to let MM know to shut down for a while, so I guess the easiest way to do this is with mqtt broker.
I have used before Mosquitto, so I will use it.

MM site:
I created 2 files in my home directory: restartmm.sh and restartmm.py

restartmm.sh:

#!/usr/bin/env python

sleep 20
python /home/pi/restartmm.py &
restartmm.py basen on mqtt-screen-power project:

mqtt_host = "192.168.xxx.xxx"
mqtt_port = 1883
mqtt_topic = "/screen/restart"
mqtt_username = "xxxxxxxx"
mqtt_password = "xxxxxxxx"
power_on_command = "pm2 restart mm"
power_off_command = " "


import paho.mqtt.client as mqtt
import subprocess


def on_connect(client, userdata, flags, rc):
    # The callback for when the client receives a CONNACK response from the server.
    print("Connected with result code "+str(rc))

    # Subscribing in on_connect() means that if we lose the connection and
    # reconnect then subscriptions will be renewed.
    client.subscribe(mqtt_topic)


def on_message(client, userdata, msg):
    # The callback for when a PUBLISH message is received from the server.
    print(msg.topic+" "+str(msg.payload))
    if str(msg.payload) == "ON":
        subprocess.Popen(power_on_command,
                         shell=True, stdout=subprocess.PIPE)
    else:
        subprocess.Popen(power_off_command,
                         shell=True, stdout=subprocess.PIPE)


client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.username_pw_set(mqtt_username, mqtt_password)
client.connect(mqtt_host, mqtt_port, 60)

# Blocking call that processes network traffic, dispatches callbacks and
# handles reconnecting.
# Other loop*() functions are available that give a threaded interface and a
# manual interface.
client.loop_forever()

Both files chown is 755. Autostart with command “crontab -e” – “@reboot sh /home/XXXXX/restartmm.sh”

HA site:

HA configuration.yaml

switch:
  - platform: mqtt
    name: "MM restart"
    command_topic: "/screen/restart"

automations.yaml:

- alias: turn_off_restart_mm
  trigger:
    platform: state
    entity_id: switch.mm_restart
    to: 'on'
    for:
      seconds: 1
  action:
    service: switch.turn_off
    entity_id: switch.mm_restart

3. Automation when HA apk scan tag,

HA automations.yaml:

- alias: mm_tag
  initial_state: true
  trigger:
  - platform: tag
    tag_id: 7275ecff-27a1-4c4d-a7fd-69647998dbf8
  action:
  - service: switch.turn_on
    entity_id: switch.mm_restart

4. Stick the NFC tag to the monitor. Formality.