Uploaded August 2023 | Updated September 2026, 2 weeks ago
#QEMU #LibVirt #VirtMan
Full steps can be found at i12bretro.github.io/tutorials/0470.html
01. Log into the Linux device
02. Run the following commands in a terminal window
# update software repositories
sudo apt update
# install available software updates
sudo apt upgrade -y
# install qemu
sudo apt install qemu qemu-kvm qemu-system qemu-utils -y
# install libvirt
sudo apt install libvirt-clients libvirt-daemon-system virtinst -y
# install virt-manager UI
sudo apt install virt-manager -y
03. Launch Virt-Manager from the applications menu
04. When prompted, enter the sudo password
05. Click the Create VM button
06. Select an installation method, Local install media in the example
07. Click the Forward button
08. Browse to the installation media
09. If the operating system is not found automatically, uncheck the Automatically detect checkbox and use the search box to manually set the OS
10. Click the Forward button
11. Set the amount of memory and number of CPUs for the VM
12. Click the Forward button
13. Enter the size of the virtual disk to be created for the VM
14. Click the Forward button
15. Enter a name for the VM
16. Click the Finish button
17. If prompted, select Yes to start the virtual network interface
### Connect with me and others ###
★ Discord: discord.com/invite/EzenvmSHW8
★ Reddit: reddit.com/r/i12bretro
★ Twitter: twitter.com/i12bretro
#QEMU #LibVirt #VirtMan
Full steps can be found at i12bretro.github.io/tutorials/0470.html
01. Log into the Linux device
02. Run the following commands in a terminal window
# update software repositories
sudo apt update
# install available software updates
sudo apt upgrade -y
# install qemu
sudo apt install qemu qemu-kvm qemu-system qemu-utils -y
# install libvirt
sudo apt install libvirt-clients libvirt-daemon-system virtinst -y
# install virt-manager UI
sudo apt install virt-manager -y
03. Launch Virt-Manager from the applications menu
04. When prompted, enter the sudo password
05. Click the Create VM button
06. Select an installation method, Local install media in the example
07. Click the Forward button
08. Browse to the installation media
09. If the operating system is not found automatically, uncheck the Automatically detect checkbox and use the search box to manually set the OS
10. Click the Forward button
11. Set the amount of memory and number of CPUs for the VM
12. Click the Forward button
13. Enter the size of the virtual disk to be created for the VM
14. Click the Forward button
15. Enter a name for the VM
16. Click the Finish button
17. If prompted, select Yes to start the virtual network interface
### Connect with me and others ###
★ Discord: discord.com/invite/EzenvmSHW8
★ Reddit: reddit.com/r/i12bretro
★ Twitter: twitter.com/i12bretro


![Install Zammad on Linux [Opensource Helpdesk Ticketing System]
#Zammad #Helpdesk #Linux
Full steps can be found at https://i12bretro.github.io/tutorials/0907.html
What is Zammad?
Zammad is a web based open source helpdesk/customer support system with many features to manage customer communication via several channels like telephone, facebook, twitter, chat and emails. - https://github.com/zammad/zammad
Installation
01. Log into the Linux device
02. Run the following commands in terminal
# update software repositories
sudo apt update
# install available software updates
sudo apt upgrade
# install prerequisite packages
sudo apt install curl wget apt-transport-https gnupg -y
# add elasticsearch gpg key
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
# add zammad gpg key
curl -fsSL https://dl.packager.io/srv/zammad/zammad/key | gpg dearmor | sudo tee /etc/apt/keyrings/zammad.gpg≫ /dev/null
# add elasticsearch apt repository
echo deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
# add zammad apt repository
echo deb [signed-by=/etc/apt/keyrings/zammad.gpg] https://dl.packager.io/srv/deb/zammad/zammad/stable/debian 12 main| sudo tee /etc/apt/sources.list.d/zammad.list
# update software repositories
sudo apt update
# list installed languages
locale | grep LANG=
# if not listed in the above output
# install en_US.UTF-8 and set as default locale
sudo apt install locales -y && sudo locale-gen en_US.UTF-8 && echo LANG=en_US.UTF-8 ≫ sudo /etc/default/locale
# install supporting packages
sudo apt install libimlib2 elasticsearch postgresql postgresql-common redis-server nginx nodejs -y
# start and enable services
sudo systemctl enable postgresql now && sudo systemctl enable redis-server now && sudo systemctl enable nginx now && sudo systemctl enable elasticsearch now
# update postgres max connections to 2000
sudo sed -i s/max_connections = 100/max_connections = 2000/ /etc/postgresql/*/main/postgresql.conf
# restart postgres service
sudo systemctl restart postgresql
# install ingest-attachment for elasticsearch
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment
# restart elasticsearch service
sudo systemctl restart elasticsearch
# install zammad
sudo apt install zammad -y
# configure elasticsearch url
sudo zammad run rails r Setting.set(es_url, http://localhost:9200)
# rebuild elasticsearch search index
sudo zammad run rake zammad:searchindex:rebuild
# update server name in nginx config
# replace ≪% SERVER DNS NAME %≫ before executing
sudo sed -i s/server_name localhost;/server_name ≪% SERVER DNS NAME %≫;/ /etc/nginx/sites-available/zammad.conf
# restart nginx service
sudo systemctl restart nginx
03. Open a web browser and navigate to http://DNSorIP
04. Click the Set up a new system button
05. Enter a login, first name, last name, email address, password and check full permissions ≫ Click Create
06. Complete the Organization details form ≫ Click Next
07. Click Skip on the Email Notification screen
08. Click Skip on the Connect Channels screen
09. Welcome to Zammad
Source: https://docs.zammad.org/en/latest/install/package.html
### Connect with me and others ###
★ Discord: https://discord.com/invite/EzenvmSHW8
★ Reddit: https://reddit.com/r/i12bretro
★ Twitter: https://twitter.com/i12bretro Install Zammad on Linux [Opensource Helpdesk Ticketing System]](https://i.ytimg.com/vi/wVpvKu0T4Co/mqdefault.jpg)
![Run Mealie - Recipe Tracker and Meal Planner - in Docker
#Mealie #Docker #MeanPlanner
Full steps can be found at https://i12bretro.github.io/tutorials/0398.html
What is Mealie?
Mealie is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the url and mealie will automatically import the relevant data or add a family recipe with the UI editor. - https://github.com/hay-kot/mealie/
Installing Docker
01. Log into the Linux based device
02. Run the following commands in the terminal
# install prerequisites
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg-agent -y
# add docker gpg key
curl -fsSL https://download.docker.com/linux/$(awk -F= /^ID=/{ print $NF } /etc/os-release)/gpg | sudo apt-key add -
# add docker software repository
sudo add-apt-repository deb [arch=$(dpkg print-architecture)] https://download.docker.com/linux/$(awk -F= /^ID=/{ print $NF } /etc/os-release) $(lsb_release -cs) stable
# install docker
sudo apt install docker-ce docker-compose containerd.io -y
# enable and start docker service
sudo systemctl enable docker && sudo systemctl start docker
# add the current user to the docker group
sudo usermod -aG docker $USER
# reauthenticate for the new group membership to take effect
su - $USER
Running Mealie
01. Continue following commands in a terminal window
# create working directories
mkdir ~/docker/mealie -p
# set owner of docker directory
sudo chown $USER:$USER ~/docker -R
# run mealie container
docker run -d name=mealie -v ~/docker/mealie:/app/data/ -p 9925:80 restart=unless-stopped hkotel/mealie
02. Open a web browser and navigate to http://DNSorIP:9925
03. Login with the username changeme@email.com and password MyPassword
04. Click the admin username in the left navigation menu
05. Update the Username, Full Name and Email as needed ≫ Click Update
06. Click the Change Password button
07. Enter the Current Password (MyPassword), enter and confirm a new password ≫ Click Change Password
08. Log out and log back in using the updated username and password
09. Welcome to Mealie
Documentation: https://hay-kot.github.io/mealie/documentation/getting-started/install/
### Connect with me and others ###
★ Discord: https://discord.com/invite/EzenvmSHW8
★ Reddit: https://reddit.com/r/i12bretro
★ Twitter: https://twitter.com/i12bretro Run Mealie - Recipe Tracker and Meal Planner - in Docker](https://i.ytimg.com/vi/wf7peKkCa88/mqdefault.jpg)
![Install Organizr - A Homelab Services Organizer/Dashboard - on Linux
#Organizr #Dashboard #Linux
Full steps can be found at https://i12bretro.github.io/tutorials/0795.html
What is Organizr?
ORGANIZR aims to be your one stop shop for your Servers Frontend. Do you have quite a bit of services running on your computer or server? Do you have a lot of bookmarks or have to memorize a bunch of ip’s and ports? Well, Organizr is here to help with that... - https://organizr.app/
Installation
01. Log into the Linux device
02. Run the following commands in a terminal window:
# update software repositories
sudo apt update
# install available software updates
sudo apt upgrade -y
# install prerequisites
sudo apt install curl wget zip git openssl -y
# install Apache HTTPD and SQLite
sudo apt install apache2 sqlite3 -y
# install PHP components
sudo apt install php7.4 libapache2-mod-php php7.4-common php7.4-mysql php7.4-sqlite3 php7.4-xml php7.4-zip php7.4-curl php7.4-fpm -y
# download the latest organizr release
wget -O ./organizr.zip https://github.com/causefx/Organizr/archive/v2-master.zip
# extract the downloaded zip to /var/www/html
sudo unzip ./organizr.zip -d /var/www/html
# rename the extracted folder organizr
sudo mv /var/www/html/Organizr* /var/www/html/organizr
# set the owner of the organizr directory
sudo chown -R www-data:www-data /var/www/html/organizr
# create organizr apache configuration
sudo nano /etc/apache2/sites-available/organizr.conf
03. Paste the following configuration into organizr.conf
≪Directory /var/www/html/organizr≫
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ /organizr/api/v2/index.php [QSA,L]
≪/Directory≫
04. Press CTRL+O, Enter, CTRL+X to write the changes
05. Run the following command to enable the Organizr site
# enable rewrite module
sudo a2enmod rewrite
# enable the organizr site
sudo a2ensite organizr
# restart the apache2 service
sudo systemctl restart apache2
# generate a random string
head /dev/urandom | LC_ALL=C tr -dc A-Za-z0-9 | head -c 30
Organizr Web Installer
01. Open a web browser and navigate to http://DNSorIP/organizr
02. Set the Installation Type to Personal ≫ Click Next
03. Complete the registration form by entering a username, email address and password ≫ Click Next
04. Copy the randomly generated string from the open terminal and paste it in the Hash Key field
05. Enter a Registration Password ≫ Click Next
06. Enter organizr.db as the Database Name and /var/www/html/organizr/data/ as the Database Path ≫ Click Test / Create Path ≫ Click Next
07. Review the summary ≫ Click Finish
08. Welcome to Organizr
Source: https://docs.organizr.app/installation/prerequisites/installing-php
### Connect with me and others ###
★ Discord: https://discord.com/invite/EzenvmSHW8
★ Reddit: https://reddit.com/r/i12bretro
★ Twitter: https://twitter.com/i12bretro Install Organizr - A Homelab Services Organizer/Dashboard - on Linux](https://i.ytimg.com/vi/wfy3BsZAhmY/mqdefault.jpg)

![Host Your Own GitHub Alternative with Gitea
#Gitea #Git #Linux
Full steps can be found at https://i12bretro.github.io/tutorials/0521.html
What is Gitea
Gitea is a community managed lightweight code hosting solution written in Go. - https://gitea.io/
Installing Gitea
01. Log into the Linux device
02. Run the following commands in a terminal:
# update software repositories
sudo apt update
# install software updates
sudo apt upgrade -y
# install preprequisites
sudo apt install git mariadb-server -y
# create gitea user
sudo adduser system shell /bin/bash gecos Git Version Control group disabled-password home /home/gitea gitea
# configure the MySQL database
sudo su
mysql_secure_installation
03. Press Enter to login as root
04. Type Y and press Enter to set a root password, type the password twice to confirm
05. Type Y and press Enter to remove anonymous users
06. Type Y and press Enter to disallow root login remotely
07. Type Y and press Enter to remove the test database
08. Type Y and press Enter to reload privilege tables
09. Run the following command to login into MySQL:
mysql -u root -p
10. Authenticate with the root password set earlier
11. Run the following commands to create the Gitea database and database user
CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER gitea_rw@localhost IDENTIFIED BY G1te@!;
GRANT ALL PRIVILEGES ON gitea.* TO gitea_rw@localhost;
FLUSH PRIVILEGES;
EXIT;
exit
12. Continue with the following commands:
# download the Gitea binary
wget -O ./gitea https://github.com/go-gitea/gitea/releases/download/v1.14.2/gitea-1.14.2-linux-amd64
# make gitea executable
sudo chmod +x gitea
# move gitea to /usr/local/bin
sudo mv ./gitea /usr/local/bin/
# verify gitea can be found
gitea version
# create required directory structures
sudo mkdir -p /etc/gitea /var/lib/gitea/{custom,data,indexers,public,log}
sudo chown gitea:gitea /var/lib/gitea/{data,indexers,log}
sudo chmod 750 /var/lib/gitea/{data,indexers,log}
sudo chown root:gitea /etc/gitea
sudo chmod 770 /etc/gitea
# create gitea service
sudo nano /etc/systemd/system/gitea.service
13. Paste the following into gitea.service
[Unit]
Description=Gitea
After=syslog.target
After=network.target
After=mysql.service
[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
RestartSec=2s
Type=simple
User=gitea
Group=gitea
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/gitea GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target
14. Press CTRL+O, Enter, CTRL+X to write the changes to gitea.service
15. Continue with the following commands:
# reload services
sudo systemctl daemon-reload
# enable gitea to run on boot and start now
sudo systemctl enable now gitea
16. Open a web browser and navigate to http://DNSorIP:3000
17. Complete the database settings on the Initial Configuration screen ≫ Click the Install Gitea button
18. Click the Register Now link
19. Enter a username, email and password ≫ Click the Register Account button
20. Welcome to Gitea
Source: https://about.gitlab.com/
### Connect with me and others ###
★ Discord: https://discord.com/invite/EzenvmSHW8
★ Reddit: https://reddit.com/r/i12bretro
★ Twitter: https://twitter.com/i12bretro Host Your Own GitHub Alternative with Gitea](https://i.ytimg.com/vi/xzfGv6NWXgw/mqdefault.jpg)


![Running Organizr - A Homelab Services Organizer/Dashboard - in Docker
#Organizr #Dashboard #Docker
Full steps can be found at https://i12bretro.github.io/tutorials/0794.html
What is Organizr?
ORGANIZR aims to be your one stop shop for your Servers Frontend. Do you have quite a bit of services running on your computer or server? Do you have a lot of bookmarks or have to memorize a bunch of ip’s and ports? Well, Organizr is here to help with that... - https://organizr.app/
Installing Docker
01. Log into the Linux based device
02. Run the following commands in the terminal
# install prerequisites
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg-agent -y
# add docker gpg key
curl -fsSL https://download.docker.com/linux/$(awk -F= /^ID=/{ print $NF } /etc/os-release)/gpg | sudo apt-key add -
# add docker software repository
sudo add-apt-repository deb [arch=$(dpkg print-architecture)] https://download.docker.com/linux/$(awk -F= /^ID=/{ print $NF } /etc/os-release) $(lsb_release -cs) stable
# install docker
sudo apt install docker-ce docker-compose containerd.io -y
# enable and start docker service
sudo systemctl enable docker && sudo systemctl start docker
# add the current user to the docker group
sudo usermod -aG docker $USER
# reauthenticate for the new group membership to take effect
su - $USER
Running the Organizr Container
01. Now that Docker is installed, run the following commands to setup the Organizr Docker container and run it
# create working directory
mkdir ~/docker/organizr -p
# set ownership on the working directories
sudo chown $USER:$USER ~/docker -R
# list current uid and gid, note these for later
id $user
# run the organizr container
docker run -d name=organizr -p 8880:80 -v ~/docker/organizr:/config -e PGID=1000 -e PUID=1000 restart unless-stopped organizr/organizr
02. Open a web browser and navigate to http://DNSorIP:8880
03. Select Personal from the Install Type dropdown ≫ Click Next
04. Enter an Admin Username, Email and Password ≫ Click Next
05. Open a new browser tab and navigate to https://www.random.org/passwords/?num=1&len=24&format=plain&rnd=new
06. Copy the generated random string ≫ Paste the string in the Hash Key field
07. Go back to the random.org tab and refresh the page to generate a new string
08. Copy the generated random string ≫ Paste the string in the Registration Password
09. Click Next
10. On the Database settings page enter the Database Name organizr and set the Database Location to /config/www/organizr/data/ ≫ Click the Test/Create Path button ≫ Click Next
11. Review the Summary ≫ Click Finish
12. Welcome to Organizr
Documentation: https://hub.docker.com/r/organizr/organizr
Source: https://docs.organizr.app/installation/installing-organizr
### Connect with me and others ###
★ Discord: https://discord.com/invite/EzenvmSHW8
★ Reddit: https://reddit.com/r/i12bretro
★ Twitter: https://twitter.com/i12bretro Running Organizr - A Homelab Services Organizer/Dashboard - in Docker](https://i.ytimg.com/vi/zFdAQoph1aQ/mqdefault.jpg)
![Run Group-Office Collaboration Suite in Docker
#GroupOffice #CRM #Docker
Full steps can be found at https://i12bretro.github.io/tutorials/0940.html
What is Group Office?
Group-Office is an enterprise CRM and groupware tool. Collaborate, Share projects, calendars, files and e-mail online with co-workers and clients. Easy to use and fully customizable. - https://www.group-office.com/
Installing Docker
01. Log into the Linux based device
02. Run the following commands in the terminal
# install prerequisites
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg-agent -y
# add docker gpg key
curl -fsSL https://download.docker.com/linux/$(awk -F= /^ID=/{ print $NF } /etc/os-release)/gpg | sudo apt-key add -
# add docker software repository
sudo add-apt-repository deb [arch=$(dpkg print-architecture)] https://download.docker.com/linux/$(awk -F= /^ID=/{ print $NF } /etc/os-release) $(lsb_release -cs) stable
# install docker
sudo apt install docker-ce docker-compose containerd.io -y
# enable and start docker service
sudo systemctl enable docker && sudo systemctl start docker
# add the current user to the docker group
sudo usermod -aG docker $USER
# reauthenticate for the new group membership to take effect
su - $USER
Running Group Office
01. Continue with the following commands in a terminal window
# create working directories
mkdir ~/docker/group-office/{data,conf,share,tmp} -p && mkdir ~/docker/mariadb -p
# create a config.php file
sudo touch ~/docker/group-office/conf/config.php
# set ownership on the working directories
sudo chown $USER:$USER ~/docker -R
# allow the container to write to working directories
sudo chmod a+rwx -R ~/docker/group-office
# create containers network
docker network create containers
# run the mariadb docker container
docker run -d name mariadb network containers -e MYSQL_ROOT_PASSWORD=r00tp@$$ -e MYSQL_USER=groupoffice_rw -e MYSQL_PASSWORD=Grou40ff1c3 -e MYSQL_DATABASE=group_office -v ~/docker/mariadb:/var/lib/mysql -p 3306:3306 restart=unless-stopped mariadb:latest
# run the group-office docker image
docker run -d name group-office network containers -e MYSQL_USER=groupoffice_rw -e MYSQL_PASSWORD=Grou40ff1c3 -e MYSQL_DATABASE=group_office -e MYSQL_HOST=mariadb -p 9000:80 -v ~/docker/group-office/conf:/etc/groupoffice -v ~/docker/group-office/data:/var/lib/groupoffice -v ~/docker/group-office/tmp:/tmp/groupoffice restart=unless-stopped intermesh/groupoffice
02. Open a web browser and navigate to http://DNSorIP:9000
03. Click Continue at the welcome screen
04. Click Continue at the system requirements check
05. Complete the database configuration using the values below
Database user=groupoffice_rw
Database password=Grou40ff1c3
Database name=group_office
Database hostname=mariadb
Database port=3306
06. Click Continue
07. Create an administrator account by entering an Email, Username and password ≫ Select a Language ≫ Click Install
08. Once the installation completes, click Continue
09. Login using the username and password setup earlier
10. If prompted, enter and confirm a new password
11. Welcome to Group Office
Documentation: https://github.com/Intermesh/docker-groupoffice/
### Connect with me and others ###
★ Discord: https://discord.com/invite/EzenvmSHW8
★ Reddit: https://reddit.com/r/i12bretro
★ Twitter: https://twitter.com/i12bretro Run Group-Office Collaboration Suite in Docker](https://i.ytimg.com/vi/zJJ-CoiG2vM/mqdefault.jpg)