PHPMYADMIN Root reset

The latest version of PHPMYADMIN won’t allow root to login without a password, and you can only login to the phpmyadmin user.

Here’s how you work around it.

 

 

 

 

sudo mysql -u root

 

CREATE USER 'set-new-user'@'localhost' IDENTIFIED BY 'set-your-password';

GRANT ALL PRIVILEGES ON *.* TO 'your-suername'@'localhost';

FLUSH PRIVILEGES;

exit

sudo service service mysql restart

If that fails, try this:

 
sudo mysql -u root
use mysql;
update user set plugin='' where User='root';
flush privileges;
\q

Use 1GB of Raspberry Pi RAM as a SWAP drive

If you have little use for the 2GB of RAM in a Raspberry Pi, then you could always use 1GB of it for a SWAP drive, this should improve performance for anyone running their Pi on a SD card.

If you want to use a SSD or USB Drive then checkout my easy as Pi tutorials here: https://the-bionic-cyclist.co.uk/category/raspberry-pi-tutorials/

As usual this is a quick and easy setup:
install ZRAM

sudo wget -O /usr/bin/zram.sh https://raw.githubusercontent.com/ric96/zram_rpi3/master/zram.sh

Make it executable.

sudo chmod +x /usr/bin/zram.sh

Edit this file to run on startup

sudo nano /etc/rc.local add line before exit 0 /usr/bin/zram.sh &

Source: (always check before installing from any source) https://github.com/ric96/zram_rpi3

HTOP – Real time feedback from your Raspberry Pi

 

 

 

 

 

What is HTOP? Simply put, it’s a real-time feedback system to let you see what your Raspberry Pi is doing, what applications are running, and how much processing power is being used as well as where your RAM is being accessed and by what.

 

 

 

 

 

 

sudo apt-get install htop

It’s tiny and installs in seconds.

After that run htop by typing….

htop

 

Simples πŸ™‚

Install Plex Server on a Raspberry Pi

Combine this with an SSD and even SSL to reap even more benefits https://the-bionic-cyclist.co.uk/raspberry-pi-tutorials/

 

 

Another easy tutorial from yours truly.

First the update:

Code: Select all

sudo apt-get update

Code: Select all

sudo apt-get upgrade

Now make sure HTTPS is installed

Code: Select all

sudo apt-get install apt-transport-https

Add a crypto key for the day2dev repository

Code: Select all

wget -O - https://dev2day.de/pms/dev2day-pms.gpg.key  | sudo apt-key add -

Now add the repository

Code: Select all

sudo nano /etc/apt/sources.list

or if that fails:

Code: Select all

sudo nano /etc/apt/sources.list.d/pms.list

add this line:

Code: Select all

deb http://dev2day.de/pms/ jessie main

update the repository list

Code: Select all

sudo apt-get update

Finally install Plex

Code: Select all

sudo apt-get install -t jessie plexmediaserver

Total time around 3 minutes

Now visit your server your rapberry pi’s IP and port 32400

Example: https://192.168.1.2:32400

Install Nextcloud cloud server on a Raspberry Pi

Nextcloud is a personal cloud server, you’re not relying on Apple cloud or Google or Dropbox to hold and secure (laughable) your data. If you have a Raspberry Pi at home you can host your own cloud server. There are desktop apps for Windows and Macs and apps for almost ALL mobile operating systems too.

Nextcloud – a safe home for all your data

I’ve gone for the personal route because I find the free cloud server really don’t offer enough storage space, and security is a joke for most of them. Plus with the SSL guide you can make sure your is as secure as possible.

For easy reference:

Code:

sudo apt-get update

Code:

sudo apt-get install apache2

Code:

sudo apt-get install apache2 php7.0 php7.0-curl php7.0-gd php7.0-imap php7.0-json php7.0-mcrypt php7.0-mysql php7.0-opcache php7.0-xmlrpc libapache2-mod-php7.0

Code:

sudo service apache2 restart

Download link: https://nextcloud.com/install/#instructions-server

Code:

sudo wget https://download.nextcloud.com/server/releases/nextcloud-11.0.2.zip

Code:

sudo mv nextcloud-11.0.2.zip /var/www/html

Code:

cd /var/www/html

Code:

sudo unzip -q nextcloud-11.0.2.zip

Make a folder for the data!!!

Code:

sudo mkdir -p /var/www/html/nextcloud/data

Code:

sudo chown www-data:www-data /var/www/html/nextcloud/data

Code:

sudo chmod 750 /var/www/html/nextcloud/data

Next, set the correct ownerships on Nextcloud β€œconfig” and β€œapps” directories:

Code:

cd /var/www/html/nextcloud

Code:

sudo chown www-data:www-data config apps

Create a Login for Nextcloud

In a browser, surf to your new Owncloud web page. Use the URL:
http://your Pis IP address/nextcloud

For example, the address of my Pi is 192.168.1.9. So I go the the URL: http://192.168.1.9/nextcloud

Increase upload size from 2mb

Code:

sudo nano /etc/php5/apache2/php.ini

Change these two lines:
post_max_size = 8M
upload_max_filesize = 2M
to:
post_max_size = 20M
upload_max_filesize = 20M

Code:

sudo service apache2 restart

Now setting up your own cloud isn’t good enough, you also need to secure all traffic and data, to encrypt the data on the drive use the plugin in the admin panel, for SSL use this tutorial.
Check domain and hostname

Code: Select all

domainname -b mysite.ddns.net

Code: Select all

sudo nano /etc/hostname

Make the domain name stick

Code: Select all

sudo nano /etc/sysctl.conf

Setup SSL on a Raspberry Pi in 2 minutes

UPDATE: Lets Encypt have an auto install bot and it’s a signed certificate, meaning no warning! https://letsencrypt.org/

 

Granted this is a self signed certificate and not one from an issuing authority, but for most domestic uses it’s fine.

Make a directory called ssl

Code: Select all

sudo mkdir /etc/apache2/ssl

Create the certificate

Code: Select all

sudo openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -out /etc/apache2/ssl/server.crt -keyout /etc/apache2/ssl/server.key

for the domain name I used my ddns.net domain, and that’s fine, but it has to be a domain name and not an IP.

Here’s my ouput

Generating a 2048 bit RSA private key
………………………+++
………………………………………………………………+++
writing new private key to ‘/etc/apache2/ssl/server1.key’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [AU]:UK
State or Province Name (full name) [Some-State]:Yorkshire!
Locality Name (eg, city) []:Home
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Dazbobaby inc.
Organizational Unit Name (eg, section) []:Admin
Common Name (e.g. server FQDN or YOUR name) []:mydomain.ddns.net
Email Address []:admin@mydomain.ddns.net

Install the SSL mod for Apache2

Code: Select all

sudo a2enmod ssl

Restart Apache:

Code: Select all

sudo service apache2 restart

Create a file and symbolic link to the sites-enabled and sites-default folders

Code: Select all

sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf

Edit the file.

Code: Select all

sudo nano /etc/apache2/sites-enabled/000-default-ssl.conf

Insert these two lines before </VirtualHost>

Code: Select all

SSLCertificateFile    /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key

Now browse to your site with HTTPS:// and accept the new security certificate

Source: https://hallard.me/enable-ssl-for-apach … 5-minutes/

Setup redirection from port 80 (insecure) to 443
Edit /etc/apache2/sites-enabled.conf
Add this:

Code: Select all

<VirtualHost *:80>
   ServerName http://mydomain.ddns.net
   Redirect permanent / https://mydomain.ddns.net/
</VirtualHost>

Restart apache

Raspberry Pi Ad Blocker

I remember seeing something about an advert blocker for the raspberry pi but I can’t find the original post, so some googling later and I found pi-hole.
https://pi-hole.net/
It took less than a minute and it kicks Ad Blocker Pro’s arse then beats it while it’s down. It’s amazing, not one single damn advert gets through, and those that do you can add to a black list.

So if like me you’re sick to death of adverts and you don’t mind spending a few quid getting a raspberry pi then this is a must.

Once complete, change the DNS server of the client (PC, phone, laptop, tablet or just about anything that uses your internet connection) to your rasperry Pi’s IP address.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

curl -sSL https://install.pi-hole.net | bash

change the pi-hole password:

pihole -a -p newpasswordhere

 

 

Run a Raspberry Pi on a SSD or a USB Drive of any kind.

Well… technically it won’t boot from a hard drive, it has to be the boot partition on the SD card, but that’s actually just a small script setting up the root partition of the SD card.

The raspberry Pi is brilliant and every iteration has made it better and faster, all except one thing, the SD card. It still requires an SD card to boot up and run, but now you can run Linux from an SSD!

What I will show you is how to copy the contents of this root partition to an external drive, be it a USB memory stick, USB hard drive or like I have, an external USB Solid state drive.

This is actually a VERY VERY easy thing to do and aside from copying the contents from one drive to another, very quick too.

So the first thing to do is attach the USB drive to the Pi. For easy install I’ve already partitioned and formatted the drive to linux EXT4, all I need to do is discover where it is in the file system.

sudo fdisk -l

The result is /dev/sda1 – So now I know where the drive is, simples πŸ™‚
If you have more than one drive attached it could be another letter, eg. sda1 is mine, sdb1, sdc2 and so on. Make sure you have the correct one.

Next you need to copy the files from the SD card to the external drive.

sudo dd if=/dev/mmcblk0p2 of=/dev/sda1 bs=512

 

Now this will take about 30 minutes to complete, but when it’s done there are a few things we need to do to finish the preparation of the drive
1. sudo e2fsck -f /dev/sda1
2. sudo resize2fs /dev/sda1

The first line checks the filesystem the second resizes the new drive and makes it use the full amount of space, the copy just copied the SDCARD sector by sector, so the new drive size will also match the SD CARD, resize2fs opens the drive up

Just two edits now stand between you and a faster pi.

First edit:

sudo nano /boot/cmdline.txt

change the part that says root=/dev/mmcblk0p2 to root=/dev/sda1

Next we need to make a directory to mount the USB Drive for easier access, you don’t technically need to do this but I did.

sudo mkdir /home/60GB

you can call the folder what ever you want, I had a spare 60GB SSD so I called it 60GB

The final edit and job is to edit the fstab so it’ll be correctly mounted at boot.

sudo nano /dev/sda1/etc/fstab

edit the line that says /dev/mmcblk0p2 to /dev/sda1

At this point you can safely reboot the Pi and welcome to a way faster Raspberry Pi.

Raspberry Pi Custom MOTD

PiHoled

Nice custom MOTD for my Pi

Code: Select all

sudo nano /home/pi/.bash_profile

Add all this:

Code: Select all

    let upSeconds="$(/usr/bin/cut -d. -f1 /proc/uptime)"
    let secs=$((${upSeconds}%60))
    let mins=$((${upSeconds}/60%60))
    let hours=$((${upSeconds}/3600%24))
    let days=$((${upSeconds}/86400))
    UPTIME=`printf "%d days, %02dh%02dm%02ds" "$days" "$hours" "$mins" "$secs"`

    # get the load averages
    read one five fifteen rest < /proc/loadavg

    echo "$(tput setaf 2)
		    


       .~~.   .~~.
      '. \ ' ' / .'   $(tput setaf 1)
       .~ .~~~..~.    $(tput sgr0)                   _                          _ $(tput setaf 1)
      : .~.'~'.~. :   $(tput sgr0)   ___ ___ ___ ___| |_ ___ ___ ___ _ _    ___|_|$(tput setaf 1)
     ~ (   ) (   ) ~  $(tput sgr0)  |  _| .'|_ -| . | . | -_|  _|  _| | |  | . | |$(tput setaf 1)
    ( : '~'.~.'~' : ) $(tput sgr0)  |_| |__,|___|  _|___|___|_| |_| |_  |  |  _|_|$(tput setaf 1)
     ~ .~ (   ) ~. ~  $(tput sgr0)              |_|                 |___|  |_|    $(tput setaf 1)
      (  : '~' :  )
       '~ .~~~. ~'
           '~'
                    $(tput sgr0)
		    `date +"%A, %e %B %Y, %r"`		   
		    `uname -srmo`$
		    Uptime.............: ${UPTIME}
		    Memory.............: `cat /proc/meminfo | grep MemFree | awk {'print $2'}`kB (Free) / `cat /proc/meminfo | grep MemTotal | awk {'print $2'}`kB (Total)
		    Load Averages......: ${one}, ${five}, ${fifteen} (1, 5, 15 min)
		    Running Processes..: `ps ax | wc -l | tr -d " "`
		    IP Addresses.......: `/sbin/ifconfig eth0 | /bin/grep "inet addr" | /usr/bin/cut -d ":" -f 2 | /usr/bin/cut -d " " -f 1` and `wget -q -O - http://icanhazip.com/ | tail`
		    Weather............: `curl -s "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|UK|UK001|HALIFAX|" | sed -n '/Currently:/ s/.*: \(.*\): \([0-9]*\)\([CF]\).*/\2Β°\3, \1/p'`
		    Free Disk Space....: `df -Pk | grep -E '^/dev/root' | awk '{ print $4 }' | awk -F '.' '{ print $1 }'`k on /dev/ROOT
			
			    $(tput sgr0)"
			              ./my-pi-temp.sh
df -h /
df -h /dev/sdb1

Code: Select all

sudo nano ./my-pi-temp.sh

Code: Select all

#!/bin/bash
# Script: my-pi-temp.sh
# Purpose: Display the ARM CPU and GPU  temperature of Raspberry Pi 2/3
# Author: Vivek Gite <www.cyberciti.biz> under GPL v2.x+
# -------------------------------------------------------
cpu=$(</sys/class/thermal/thermal_zone0/temp)
echo "$(date) @ $(hostname)"
echo "-------------------------------------------"
echo "GPU => $(/opt/vc/bin/vcgencmd measure_temp)"
echo "CPU => $((cpu/1000))'C"

Code: Select all

sudo chmod +x my-pi-temp.sh

 

    let upSeconds="$(/usr/bin/cut -d. -f1 /proc/uptime)"
    let secs=$((${upSeconds}%60))
    let mins=$((${upSeconds}/60%60))
    let hours=$((${upSeconds}/3600%24))
    let days=$((${upSeconds}/86400))
    UPTIME=`printf "%d days, %02dh%02dm%02ds" "$days" "$hours" "$mins" "$secs"`

    # get the load averages
    read one five fifteen rest < /proc/loadavg

    echo "$(tput setaf 2)
		    


       .~~.   .~~.
      '. \ ' ' / .'   $(tput setaf 1)
       .~ .~~~..~.    $(tput sgr0)_|_|_|    _|              _|    _|            _|                  _|  $(tput setaf 1)
      : .~.'~'.~. :   $(tput sgr0)_|    _|                  _|    _|    _|_|    _|    _|_|      _|_|_|  $(tput setaf 1)
     ~ (   ) (   ) ~  $(tput sgr0)_|_|_|    _|  _|_|_|_|_|  _|_|_|_|  _|    _|  _|  _|_|_|_|  _|    _|  $(tput setaf 1)
    ( : '~'.~.'~' : ) $(tput sgr0)_|        _|              _|    _|  _|    _|  _|  _|        _|    _|  $(tput setaf 1)
     ~ .~ (   ) ~. ~  $(tput sgr0)_|        _|              _|    _|    _|_|    _|    _|_|_|    _|_|_|  $(tput setaf 1)
      (  : '~' :  )   $(tput sgr0)$(tput setaf 1)
       '~ .~~~. ~'    $(tput sgr0)$(tput setaf 1)
           '~'	      $(tput sgr0)$(tput setaf 1)
                      $(tput sgr0)$(tput setaf 1)
					$(tput sgr0)
		    `date +"%A, %e %B %Y, %r"`		   
		    `uname -srmo`$
		    Uptime.............: ${UPTIME}
		    Memory.............: `cat /proc/meminfo | grep MemFree | awk {'print $2'}`kB (Free) / `cat /proc/meminfo | grep MemTotal | awk {'print $2'}`kB (Total)
		    Load Averages......: ${one}, ${five}, ${fifteen} (1, 5, 15 min)
		    Running Processes..: `ps ax | wc -l | tr -d " "`
		    IP Addresses.......: `/sbin/ifconfig eth0 | /bin/grep "inet addr" | /usr/bin/cut -d ":" -f 2 | /usr/bin/cut -d " " -f 1` and `wget -q -O - http://icanhazip.com/ | tail`
		    Weather............: `curl -s "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|UK|UK001|HALIFAX|" | sed -n '/Currently:/ s/.*: \(.*\): \([0-9]*\)\([CF]\).*/\2Β°\3, \1/p'`
		    Free Disk Space....: `df -Pk | grep -E '^/dev/root' | awk '{ print $4 }' | awk -F '.' '{ print $1 }'`k on /dev/ROOT
			
			    $(tput sgr0)"
			              ./my-pi-temp.sh
df -h /

Cloud Server:


    let upSeconds="$(/usr/bin/cut -d. -f1 /proc/uptime)"
    let secs=$((${upSeconds}%60))
    let mins=$((${upSeconds}/60%60))
    let hours=$((${upSeconds}/3600%24))
    let days=$((${upSeconds}/86400))
    UPTIME=`printf "%d days, %02dh%02dm%02ds" "$days" "$hours" "$mins" "$secs"`

    # get the load averages
    read one five fifteen rest < /proc/loadavg

    echo "$(tput setaf 2)
		    


       .~~.   .~~.
      '. \ ' ' / .'   $(tput setaf 1)
       .~ .~~~..~.    $(tput sgr0) β–„β–ˆβ–ˆβ–ˆβ–ˆβ–„  β–ˆβ–ˆβ–“     β–’β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ   β–ˆ    β–ˆβ–ˆβ–“β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–„ $(tput setaf 1)
      : .~.'~'.~. :   $(tput sgr0)β–’β–ˆβ–ˆβ–€ β–€β–ˆ β–“β–ˆβ–ˆβ–’    β–’β–ˆβ–ˆβ–’  β–ˆβ–ˆβ–’ β–ˆβ–ˆ  β–“β–ˆβ–ˆβ–’β–ˆβ–ˆβ–€ β–ˆβ–ˆβ–Œ$(tput setaf 1)
     ~ (   ) (   ) ~  $(tput sgr0)β–’β–“β–ˆ    β–„β–’β–ˆβ–ˆβ–‘    β–’β–ˆβ–ˆβ–‘  β–ˆβ–ˆβ–’β–“β–ˆβ–ˆ  β–’β–ˆβ–ˆβ–‘β–ˆβ–ˆ   β–ˆβ–Œ$(tput setaf 1)
    ( : '~'.~.'~' : ) $(tput sgr0)β–’β–“β–“β–„ β–„β–ˆβ–ˆβ–’β–ˆβ–ˆβ–‘    β–’β–ˆβ–ˆ   β–ˆβ–ˆβ–‘β–“β–“β–ˆ  β–‘β–ˆβ–ˆβ–‘β–“β–ˆβ–„   β–Œ$(tput setaf 1)
     ~ .~ (   ) ~. ~  $(tput sgr0)β–’ β–“β–ˆβ–ˆβ–ˆβ–€ β–‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–’β–‘ β–ˆβ–ˆβ–ˆβ–ˆβ–“β–’β–‘β–’β–’β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–“β–‘β–’β–ˆβ–ˆβ–ˆβ–ˆβ–“ $(tput setaf 1)
      (  : '~' :  )   $(tput sgr0)β–‘ β–‘β–’ β–’  β–‘ β–’β–‘β–“  β–‘β–‘ β–’β–‘β–’β–‘β–’β–‘ β–‘β–’β–“β–’ β–’ β–’ β–’β–’β–“  β–’ $(tput setaf 1)
       '~ .~~~. ~'    $(tput sgr0)  β–‘  β–’  β–‘ β–‘ β–’  β–‘  β–‘ β–’ β–’β–‘ β–‘β–‘β–’β–‘ β–‘ β–‘ β–‘ β–’  β–’ $(tput setaf 1)
           '~'        $(tput sgr0)β–‘         β–‘ β–‘   β–‘ β–‘ β–‘ β–’   β–‘β–‘β–‘ β–‘ β–‘ β–‘ β–‘  β–‘ $(tput setaf 1)
                    $(tput sgr0)
		    `date +"%A, %e %B %Y, %r"`		   
		    `uname -srmo`$
		    Uptime.............: ${UPTIME}
		    Memory.............: `cat /proc/meminfo | grep MemFree | awk {'print $2'}`kB (Free) / `cat /proc/meminfo | grep MemTotal | awk {'print $2'}`kB (Total)
		    Load Averages......: ${one}, ${five}, ${fifteen} (1, 5, 15 min)
		    Running Processes..: `ps ax | wc -l | tr -d " "`
		    IP Addresses.......: `/sbin/ifconfig eth0 | /bin/grep "inet addr" | /usr/bin/cut -d ":" -f 2 | /usr/bin/cut -d " " -f 1` and `wget -q -O - http://icanhazip.com/ | tail`
		    Weather............: `curl -s "http://rss.accuweather.com/rss/liveweather_rss.asp?metric=1&locCode=EUR|UK|UK001|HALIFAX|" | sed -n '/Currently:/ s/.*: \(.*\): \([0-9]*\)\([CF]\).*/\2Β°\3, \1/p'`
		    Free Disk Space....: `df -Pk | grep -E '^/dev/root' | awk '{ print $4 }' | awk -F '.' '{ print $1 }'`k on /dev/ROOT
			
			    $(tput sgr0)"
			              ./my-pi-temp.sh
df -h /

Install Apache2 PHP and Mysql on a Raspberry Pi

How to install a webserver on Raspberry Pi 2 running Raspbian (wheezy)

Full list of edits and installs to get my webserver up and running without mySQL.

Make sure everything is up to date, this takes about 60 seconds:

Code: Select all

sudo apt-get update

Code: Select all

sudo apt-get upgrade

Now I’m going to need apache webserver

Code: Select all

sudo apt-get install apache2 apache2-doc apache2-utils

Code: Select all

sudo apt-get install libapache2-mod-php5 php5 php-pear php5-xcache php5-mysql php5-curl php5-gd

And that’s apache webserver and PHP installed.
Test it with:

Code: Select all

<?php

// Show all information, defaults to INFO_ALL
phpinfo();

// Show just the module information.
// phpinfo(8) yields identical results.
phpinfo(INFO_MODULES);

?>

Now I’ll need to install php_curl

Code: Select all

sudo apt-get install php-curl

then reboot apache:

Code: Select all

sudo service apache2 restart

Now make sure mod_rewrite is enabled:

Code: Select all

sudo a2enmod rewrite

Finally: Getting the .htaccess files working.

Code: Select all

sudo nano /etc/apache2/sites-available/default

Change None to all:

Code: Select all

 <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
 </Directory>

I don’t think I’ve missed any steps, but I will come back and edit later if need be.

Install MySQL

Start with:

Code: Select all

sudo bash

Code: Select all

sudo apt-get install php-mysql

– AND:

Code: Select all

sudo apt-get install mysql-server mysql-client

Install PHPMyAdmin

Code: Select all

sudo apt-get install phpmyadmin

Install Webmin:
http://www.webmin.com/deb.html