[Solved] MySQL docker on Unraid does an unwanted upgrade

the logo of mysql, showing the name and the outline of a dolphin.

I usually do not fear updates, but when it comes to databases, I am getting really careful with updating them. It wouldn’t be the first time when a database goes plonk after this.

So what happened? My MySQL docker got updated becuase I simply misclicked and of course, the thing broke. The update script, which was set to “latest”, performed an upgrade to 9.x instead of sticking to the latest 8.x version.

After some research, I read that one can enter “mysql:8.2.0” in the repository field. After entering this and starting the docker, the software got reinstalled with the proper version and everything worked again. I must’ve been lucky that the database itself was not migrated to v9 already, I guess.

Loading

A working Apache2 server with PHP7.4

I was in need of a server solution that could be quickly deployed as a VM.

      1. Install Debian 11 as a VM with web- and SSH server
      2. Create a USER next to your root account during the installation
      3. Find the IP address of the new installation. The easiest is if you have NoVNC running. Log in as USER and type
        ip a
      4. Time to so the sudo thing
        su

        log in as root

        apt-get update && apt-get install -y sudo
        usermod -aG sudo USER
        exit
        exit

        log back in as USER

      5. Okay, let’s install some more stuff but first we do an update
        sudo apt-get update && sudo apt-get upgrade -y

        Now we want some essentials

        sudo apt-get install -y dirmngr gnupg2 nano wget gpg curl fail2ban ufw software-properties-common

        Preparing the PHP install

        wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
        echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
        sudo apt-get update
        sudo apt-get install -y php7.4 libapache2-mod-php7.4 php7.4-mysql php7.4-curl php7.4-gd php7.4-mbstring php7.4-xml php7.4-xmlrpc php7.4-zip

        And restart the Apache2 Webserver

        sudo systemctl restart apache2
      6. Alright, that’s done. Next step is to test things.
        sudo nano /var/www/html/test.php

        Enter this into the php file and press Control X and type Y to save and exit.

        <?php
        // Show all PHP information
        phpinfo();
        ?>
      7. Go to the IP address of the server you just created and type
        HTTP://IP ADDRESS/test.php
        

        If you see a PHP page with all sorts of data, you’re good. If not, go fix. Don’t ask me, I’m not there yet!

Loading

Adding and removing a user in PLIK

ADD A USER
Open the UNraid console and enter

./plikd --config ./plikd.cfg user create --login USERNAME --name Admin --admin

The result should be as follows:

Generated password for user controller is yH7ggwod473A3xM5BdI8wEz2FM7bcqF1

REMOVE A USER

Find the user:

./plikd user list

You should see:

local:USERNAME Admin

To remove user, enter:

./plikd --config ./plikd.cfg user delete --login USERNAME Admin

Loading

ArchiveBox root issue in UNraid [FIXED]

Short version of:

Archivebox Docker superuser root issues

[!] ArchiveBox should never be run as root!

The INIT line is in case you set up this docker for the first time. If you already have entered the INIT command, I don;t think you have to do it again.

  1. Open the UNraid Terminal
  2. Enter
    cd /data
  3. Enter (Optional, see previous note)
    archivebox init
  4. Enter
    docker exec -it --user archivebox archivebox bash
  5. Enter
    archivebox manage createsuperuser

Done!

Credits to “emiliobool” for their comment on April 25, 2021 @ https://github.com/ArchiveBox/ArchiveBox/issues/395

 

Loading

Keeping your data while restarting Joomla Docker in unRAID

Finally, there is an official Joomla (4.x) Docker made for unRAID. But it is not done well. As in, you will lose all your settings and data when you restart your docker. So you need to copy the data outside the docker into the appdata folder. (Or wherever you want it)

Inside the docker image, the Joomla folder resides here:

/var/www/html/

And this is the folder you need to make “external” by adding a path to the edit/install panel.

  1. Give it a name at “Name:”
  2. Enter the following line to “Container Path:”
    /var/www/html
  3. Enter the following line to “Host Path:”
    /mnt/user/appdata/joomla-data/

Done.

Loading

How to fix Docker update “not available” in unRAID 6.8.3

Because something went wrong probably and it takes unRAID literally ages to issue an update. So here’s the fix!

(until you restart the server)

SSH into unRAID and edit this file: /usr/local/emhttp/plugins/dynamix.docker.manager/include/DockerClient.php

replace this line:

preg_match('@Docker-Content-Digest:\s*(.*)@', $reply, $matches);

with this

preg_match('@Docker-Content-Digest:\s*(.*)@i', $reply, $matches);

Sauce: https://www.reddit.com/r/unRAID/comments/nk1sa2/how_to_fix_docker_update_not_available_in_unraid/

Loading

New FTP user for unRAID

  1. Install ProFTPd by SirG
  2. Create folder where the FTP user should have FULL access to
  3. Go to USERS tab
  4. Click ADD USER
  5. Create username
  6. Create password
  7. In the DESCRIPTION field enterftpuser [PATH WITH LEADING SLASH]
    So for example:
    ftpuser /mnt/usr/myfolder
  8. Click ADD
  9. Go to SETTINGS tab
  10. Click ProFTPd
  11. At “Enable ProFTPd:” select YES (*)
  12. Click APPLY
  13. Service should be running. If not, start service
  14. DONE

(*) In case you already have the service running, click RESTART to activate the new user.

The server can now be accessed by SFTP and port 22.

Loading

unRAID Docker image corrupted solution

Warning: This method worked for me and I used this source for it. Proceed at your own risk. Also I need to note that I do not use Cache in any form.

The problem:
You have rebooted your unRAID server and your docker service is refusing to start. What you may see is the following:

and

Apr 2 02:25:30 Tower emhttpd: shcmd (264): /etc/rc.d/rc.docker start
Apr 2 02:25:30 Tower root: starting dockerd ...
Apr 2 02:25:36 Tower kernel: BTRFS error (device loop2): parent transid verify failed on 23757324288 wanted 2572174 found 2572201
Apr 2 02:25:36 Tower kernel: BTRFS error (device loop2): parent transid verify failed on 23757324288 wanted 2572174 found 2572201
Apr 2 02:25:46 Tower kernel: BTRFS error (device loop2): parent transid verify failed on 23729225728 wanted 2572162 found 2572190
Apr 2 02:25:46 Tower kernel: BTRFS error (device loop2): parent transid verify failed on 23729225728 wanted 2572162 found 2572190
Apr 2 02:25:46 Tower kernel: BTRFS: error (device loop2) in __btrfs_free_extent:6805: errno=-5 IO failure
Apr 2 02:25:46 Tower kernel: BTRFS info (device loop2): forced readonly
Apr 2 02:25:46 Tower kernel: BTRFS: error (device loop2) in btrfs_run_delayed_refs:2935: errno=-5 IO failure
Apr 2 02:25:46 Tower kernel: BTRFS warning (device loop2): btrfs_uuid_scan_kthread failed -30
Apr 2 02:25:51 Tower emhttpd: shcmd (266): umount /var/lib/docker
Apr 2 02:25:51 Tower root: umount: /var/lib/docker: target is busy.

This of course, made me extremely nervous. Luckily this only meant that my docker file got corrupted. It happened most likely while I was moving it while the docker service was still active. Yeah, it happens.

Solution:
It’s fairly simple, but it takes a little bit of time.

  1. Go to Settings -> Docker -> Enable Docker, and set to No, then click the Apply button (this disables Docker support)
  2. Go to the location of your docker image and rename the file to docker.img.bak – The file may be in
    /mnt/user/system/docker

    I’m asking you to make a backup, because in all cases, safety first. “Why didn’t you have a backup in the first place?”, I hear you say. Yeah yeah, we all make mistakes every so often! D:

  3. Go to Settings -> Docker -> Enable Docker, and set to Yes and this creates a fresh and empty Docker image. The docker service should now be started. You can see this as this on the docker settings page:

    and on the dashboard you should now see an empty docker field.

  4. Now go to the Apps Tab, Previous Apps Section. Then check off all of your previous applications and hit “Install”

I recommend to do it one by one so you can double-check the settings and clean up the unused templates after you’re done. If you want to make a copy of the templates, FTP into your server and go to

/boot/config/plugins/dockerMan

After you have restored your docker apps, you’re done. Check all the things and make a backup 😉

 

 

Loading

Downgrade unRAID 6.7.2 to 6.6.7

Due to CONTINUOUS database corruptions I was forced to downgrade my unRAID back to 6.6.7 to see if that fixes the corruption issue. It’s really terrible and apparently hard to fix because LimeTech has not fixed the issue yet, not is is acknowledged as an issue.

1. download the following file

https://s3.amazonaws.com/dnld.lime-technology.com/stable/unRAIDServer-6.6.7-x86_64.zip

2. Extract the files on your drive

3. Ditch all extracted files except these:

./bzfirmware  
./bzimage  
./bzmodules  
./bzroot  
./bzroot-gui

4. Start an FTP program like Filezilla and go to the /boot/ folder

5. MAKE A BACKUP OF THE FILES MENTIONED AT STEP 3

6. Remove the files from the server and upload the extracted files mentioned in step 3 onto the server.

7. Check the date of the files on the server and make sure it’s 777 and root:root

8. Restart the server and you’re back at 6.6.7

Good luck.

Loading