Uploaded July 2023 | Updated September 2026, 2 weeks ago
#ProxMox #Hypervisor #Upgrade
Full steps can be found at i12bretro.github.io/tutorials/0596.html
💡 NOTE: These steps are for a single standalone Proxmox server. They have not been tested in a clustered environment
🚨 WARNING: Make sure to create external backups of all important VMs and CTs just in case something goes wrong. You've been warned.
01. Log into Proxmox VE, either at the console or the web UI and launch the web shell
02. Stop all running VMs and CTs
03. Run the following commands to make sure Proxmox VE is running the latest 7 updates
# disable proxmox commmercial repo
sed -i "s/^deb/\#deb/" /etc/apt/sources.list.d/pve-enterprise.list
# add the proxmox community repo
echo "deb download.proxmox.com/debian/pve $(grep "VERSION=" /etc/os-release | sed -n 's/.*(\(.*\)).*/\1/p') pve-no-subscription" ≫ /etc/apt/sources.list.d/pve-community.list
# update software repositories
apt update
# install software updates
apt dist-upgrade -y
# clean apt cache
apt clean
# run the upgrade checklist utility, resolve any issues reported before continuing
pve7to8 --full
# update apt repositories to bullseye
sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list && sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list.d/pve-community.list && sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list.d/pve-enterprise.list
# update software repositories
apt update
# install software updates
apt dist-upgrade -y
# clean apt cache
apt clean
# reboot
reboot now
04. That's it, Proxmox VE has now been updated to the latest v8.x
Source and Additional Info: pve.proxmox.com/wiki/Upgrade_from_7_to_8
### Connect with me and others ###
★ Discord: discord.com/invite/EzenvmSHW8
★ Reddit: reddit.com/r/i12bretro
★ Twitter: twitter.com/i12bretro
#ProxMox #Hypervisor #Upgrade
Full steps can be found at i12bretro.github.io/tutorials/0596.html
💡 NOTE: These steps are for a single standalone Proxmox server. They have not been tested in a clustered environment
🚨 WARNING: Make sure to create external backups of all important VMs and CTs just in case something goes wrong. You've been warned.
01. Log into Proxmox VE, either at the console or the web UI and launch the web shell
02. Stop all running VMs and CTs
03. Run the following commands to make sure Proxmox VE is running the latest 7 updates
# disable proxmox commmercial repo
sed -i "s/^deb/\#deb/" /etc/apt/sources.list.d/pve-enterprise.list
# add the proxmox community repo
echo "deb download.proxmox.com/debian/pve $(grep "VERSION=" /etc/os-release | sed -n 's/.*(\(.*\)).*/\1/p') pve-no-subscription" ≫ /etc/apt/sources.list.d/pve-community.list
# update software repositories
apt update
# install software updates
apt dist-upgrade -y
# clean apt cache
apt clean
# run the upgrade checklist utility, resolve any issues reported before continuing
pve7to8 --full
# update apt repositories to bullseye
sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list && sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list.d/pve-community.list && sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list.d/pve-enterprise.list
# update software repositories
apt update
# install software updates
apt dist-upgrade -y
# clean apt cache
apt clean
# reboot
reboot now
04. That's it, Proxmox VE has now been updated to the latest v8.x
Source and Additional Info: pve.proxmox.com/wiki/Upgrade_from_7_to_8
### Connect with me and others ###
★ Discord: discord.com/invite/EzenvmSHW8
★ Reddit: reddit.com/r/i12bretro
★ Twitter: twitter.com/i12bretro
![Create a Secure Web Based Password Vault with Keepass Web
#KeepassWeb #PasswardVault #Linux
Full steps can be found at https://i12bretro.github.io/tutorials/0233.html
01. Log into the Debian device
02. Run the following commands in a terminal:
# update repositories and install any available software updates
sudo apt update
sudo apt upgrade
# install apache2
sudo apt install apache2
# download and extract keepass web
wget https://github.com/keeweb/keeweb/archive/gh-pages.zip
sudo unzip gh-pages.zip -d /var/www/html/
sudo mv /var/www/html/keeweb-gh-pages /var/www/html/keepass
# create webdav directory and set permissions
sudo mkdir /var/www/html/webdav
sudo chown -R www-data:www-data /var/www/html/webdav
# change permissions on the newly setup application folder
sudo chown -R www-data:www-data /var/www/html/keepass
# create a new keepass.conf file to configure the site
sudo nano /etc/apache2/sites-available/keepass.conf
03. Paste the following directives into keepass.conf
DavLockDB /var/www/html/webdav/DavLock
≪Location /keepass ≫
RewriteEngine on
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ blank.html [R=200,L,E=HTTP_ORIGIN:%{HTTP:ORIGIN}]
# Dont require LDAP authentication for a healthcheck
SetEnvIf Request_URI ^/healhcheck accessgranted=1
Order deny,allow
Satisfy any
Deny from all
Allow from env=accessgranted
AuthType Basic
AuthBasicProvider ldap
AuthLDAPURL ldap://i12bretro.local:389/DC=i12bretro,DC=local?sAMAccountName?sub?(objectClass=user) NONE
AuthLDAPBindDN readonly_svc@i12bretro.local
AuthLDAPBindPassword Read0nly!!
AuthName Restricted Area [i12bretro.local]
# to authenticate a domain group, specify the full DN
AuthLDAPGroupAttributeIsDN on
require ldap-group CN=WebAuthAccess,CN=Users,DC=i12bretro,DC=local
≪/Location≫
≪Location /webdav≫
DAV On
AuthType Basic
AuthName webdav
Options Indexes
Header always set Access-Control-Allow-Origin *
Header always set Access-Control-Allow-Headers origin, content-type, cache-control, accept, authorization, if-match, destination, overwrite
Header always set Access-Control-Expose-Headers ETag
Header always set Access-Control-Allow-Methods GET, HEAD, POST, PUT, OPTIONS, MOVE, DELETE, COPY, LOCK, UNLOCK
Header always set Access-Control-Allow-Credentials true
≪/Location≫
04. Edit the index.html file and modify the kw-config meta tag, setting the value to config.json
#
sudo nano /var/www/html/keepass/index.html
05. Press CTRL+O, Enter, CTRL+X to write the changes to index.html
06. Create and edit config.json to by running the following command:
sudo nano /var/www/html/keepass/config.json
07. Paste the following in to config.json
{
settings: {
theme: fb,
autoSave: true,
autoSaveInterval: 1,
canOpenDemo: false,
dropbox: false,
gdrive: false,
onedrive: false,
canExportXml: true
},
files: [{
storage: webdav,
name: Database,
path: /webdav/database.kdbx
}]
}
08. Press CTRL+O, Enter, CTRL+X to write the changes to config.json
09. Continue by executing the following commands in terminal:
# enable the keepass site and required Apache modules
sudo a2ensite keepass
sudo a2enmod dav dav_fs ldap authnz_ldap rewrite headers
# restart apache2 service for the changes to take effect
sudo systemctl restart apache2
10. Open a web browser and navigate to http://DNSorIP/keepass
11. Authenticate with a valid LDAP user account
12. Click the New icon
13. Click the New link in the lower left hand corner
14. Enter a Master password and re-type it to confirm
15. Enter a Name for the keepass database
16. Click the Save to... button ≫ File
17. Save the database to ~/database.kdbx
18. Close the browser
19. Continue by executing the following commands in terminal:
# copy the keepass database to webdav directory
sudo mv ~/database.kdbx /var/www/html/webdav/
20. Open a web browser and navigate to http://DNSorIP/keepass
....Full steps can be found on GitHub [link at the top]
### Connect with me and others ###
★ Discord: https://discord.com/invite/EzenvmSHW8
★ Reddit: https://reddit.com/r/i12bretro
★ Twitter: https://twitter.com/i12bretro Create a Secure Web Based Password Vault with Keepass Web](https://i.ytimg.com/vi/fJkWzZS8KVA/mqdefault.jpg)
![Monitor Docker Container Resource Usage with cAdvisor
#cAdvisor #Docker #Monitoring
Full steps can be found at https://i12bretro.github.io/tutorials/0828.html
What is cAdvisor?
cAdvisor (Container Advisor) provides container users an understanding of the resource usage and performance characteristics of their running containers. It is a running daemon that collects, aggregates, processes, and exports information about running containers. - https://github.com/google/cadvisor
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 cAdvisor Container
01. Now that Docker is installed, run the following commands to setup the cAdvisor Docker container and run it
# run the cadvisor container
sudo docker run -d name=cadvisor -p 8080:8080 -v /:/rootfs:ro -v /var/run:/var/run:ro -v /sys:/sys:ro -v /var/lib/docker/:/var/lib/docker:ro -v /dev/disk/:/dev/disk:ro privileged device=/dev/kmsg restart=unless-stopped gcr.io/cadvisor/cadvisor
02. Open a web browser and navigate to http://DNSorIP:8080
03. Welcome to cAdvisor
Documentation: https://hub.docker.com/r/google/cadvisor
### Connect with me and others ###
★ Discord: https://discord.com/invite/EzenvmSHW8
★ Reddit: https://reddit.com/r/i12bretro
★ Twitter: https://twitter.com/i12bretro Monitor Docker Container Resource Usage with cAdvisor](https://i.ytimg.com/vi/fMcXUxJwcrU/mqdefault.jpg)
![Run HomeDash - Server MonitorDashboard - on Linux
#Homedash #Dashboard #Linux
Full steps can be found at https://i12bretro.github.io/tutorials/0904.html
What is Homedash?
HomeDash is a simple dashboard that allows to monitor and interact with many different services in order to have a single entry point for ones dedicated server via a set of Plugins. Its easy to install, setup and use. - https://lamarios.github.io/Homedash2/
Installing Java and Maven
01. Log into the Linux based device
02. Run the following commands in the terminal
# update software respositories
sudo apt update
# install available software updates
sudo apt upgrade -y
# install java and maven
sudo apt install default-jdk maven -y
# check java version
java version
# check maven version
mvn -version
Running HomeDash
01. Now that Java and Maven are installed, run the following commands to run HomeDash
# create working directories
sudo mkdir /opt/homedash2 -p
# set owner of working directories
sudo chown $USER:$USER /opt/homedash2 -R
# change directory to the new folder
cd /opt/homedash2
# lookup latest homedash jar URL
regex=browser_download_url: (https://github.com/lamarios/Homedash2/releases/download/[^/]*/Homedash-[^/]*.jar) && response=$(curl -H Accept: application/vnd.github.v3+json https://api.github.com/repos/lamarios/Homedash2/releases/latest) && [[ $response =~ $regex ]] && downloadURL=${BASH_REMATCH[1]}
# download the latest release
wget -O ./homedash.jar $downloadURL
# generate a config file
java -jar ./homedash.jar -create-config
# run homedash
java -Dconfig.file=/opt/homedash2/homedash.properties -jar homedash.jar
02. Open a web browser and navigate to http://DNSorIP:4567
03. Welcome to HomeDash
Documentation: https://github.com/lamarios/HomeDash2
### Connect with me and others ###
★ Discord: https://discord.com/invite/EzenvmSHW8
★ Reddit: https://reddit.com/r/i12bretro
★ Twitter: https://twitter.com/i12bretro Run HomeDash - Server MonitorDashboard - on Linux](https://i.ytimg.com/vi/fQdQs4mnczs/mqdefault.jpg)
![Install MeshCentral - Remote Management Site - on Linux
#MeshCentral #HomeLab #Linux
Full steps can be found at https://i12bretro.github.io/tutorials/0962.html
What is MeshCentral?
MeshCentral is a full computer management web site. With MeshCentral, you can run your own web server to remotely manage and control computers on a local network or anywhere on the internet. - https://github.com/Ylianst/MeshCentral
Installing NodeJS
01. Log into the Linux device
02. Run the following commands in a terminal window
# add nodejs software repository
curl -sL https://deb.nodesource.com/setup_20.x | sudo bash -
# install nodejs
sudo apt install nodejs -y
# test node is working
node -v
# test npm is working
npm -v
Installing MeshCentral
01. Continue with the following commands:
# create a meshcentral folder
sudo mkdir /usr/local/bin/meshcentral
# change to the new directory
cd /usr/local/bin/meshcentral
# install meshcentral
sudo npm install meshcentral
# create a service file
sudo nano /etc/systemd/system/meshcentral.service
02. Paste the following configuration
[Unit]
Description=MeshCentral Server
[Service]
Type=simple
LimitNOFILE=1000000
ExecStart=/usr/bin/node /usr/local/bin/meshcentral/node_modules/meshcentral
WorkingDirectory=/usr/local/bin/meshcentral
Environment=NODE_ENV=production
Restart=always
# Restart service after 10 seconds if node service crashes
RestartSec=10
# Set port permissions capability
AmbientCapabilities=cap_net_bind_service
[Install]
WantedBy=multi-user.target
03. Press CTRL+O, Enter, CTRL+X to write the changes
04. Continue with the following commands
# reload services
sudo systemctl daemon-reload
# start and enable meshcentral service
sudo systemctl enable meshcentral.service now
05. Open a web browser and navigate to https://DNSorIP
06. Accept the certificate warning
07. Click the link to create an account
08. Complete the form by entering an username, email and password ≫ Click Create Account
09. Welcome to MeshCentral
Source: https://meshcentral.com/docs/MeshCentral2InstallGuide.pdf
### Connect with me and others ###
★ Discord: https://discord.com/invite/EzenvmSHW8
★ Reddit: https://reddit.com/r/i12bretro
★ Twitter: https://twitter.com/i12bretro Install MeshCentral - Remote Management Site - on Linux](https://i.ytimg.com/vi/fd23f5-LgZc/mqdefault.jpg)



![Run Lychee - Photo Management System - in Docker
#Lychee #PhotoManagemer #Docker
Full steps can be found at https://i12bretro.github.io/tutorials/0938.html
What is Lychee?
Lychee is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely. - https://lycheeorg.github.io/
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 Lychee
01. Continue with the following commands in a terminal window
# list current uid and gid, note these for later
id $user
# create working directories
mkdir ~/docker/lychee/{conf,uploads,sim} -p && mkdir ~/docker/mariadb -p
# set ownership on the working directories
sudo chown $USER:$USER ~/docker -R
# 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=lychee_rw -e MYSQL_PASSWORD=Lych33! -e MYSQL_DATABASE=lychee -v ~/docker/mariadb:/var/lib/mysql -p 3306:3306 restart=unless-stopped mariadb:latest
# run the lychee docker image
# replace PUID, GUID with the output of the id $user command above
docker run -d name lychee network containers -e PUID=1000 -e PGID=1000 -e TZ=America/New_York -e PHP_TZ=America/New_York -e DB_CONNECTION=mysql -e DB_HOST=mariadb -e DB_PORT=3306 -e DB_USERNAME=lychee_rw -e DB_PASSWORD=Lych33! -e DB_DATABASE=lychee -p 8090:80 -v ~/docker/lychee/conf:/config -v ~/docker/lychee/uploads:/uploads -v ~/docker/lychee/sym:/sym restart=unless-stopped lycheeorg/lychee
02. Open a web browser and navigate to http://DNSorIP:8090
03. Click Next at the Lychee welcome screen
04. Click Next at the Requirements Check
05. Click Next at the Permissions Check
06. Update at least the following values in the
APP_URL=http://DNSorIP:8090
DB_CONNECTION=mysql
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=lychee
DB_USERNAME=lychee_rw
DB_PASSWORD=Lych33!
07. Click Save ≫ Click Install
08. Once the installation completes click Set up admin account
09. Enter a Username ≫ Enter and confirm a Password ≫ Click Create admin account
10. Click Open Lychee
11. Login using the username and password setup earlier
12. Welcome to Lychee
Documentation: https://lycheeorg.github.io/docs/#installation
### Connect with me and others ###
★ Discord: https://discord.com/invite/EzenvmSHW8
★ Reddit: https://reddit.com/r/i12bretro
★ Twitter: https://twitter.com/i12bretro Run Lychee - Photo Management System - in Docker](https://i.ytimg.com/vi/gpTK1ZdkA8Y/mqdefault.jpg)
![Run miniPaint - Browser Based Image Editor - in Docker
#miniPaint #ImageEditor #Docker
Full steps can be found at https://i12bretro.github.io/tutorials/0896.html
What is miniPaint?
[miniPaint is an] online image editor lets you create, edit images using HTML5 technologies. No need to buy, download, install or have obsolete flash. No ads. Key features: layers, filters, HTML5, open source, Photoshop alternative.
miniPaint operates directly in the browser. You can create images, paste from the clipboard (ctrl+v) or upload from the computer (using menu or drag & drop). Nothing will be sent to any server. Everything stays in your browser. - https://github.com/viliusle/miniPaint
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 git 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 miniPaint
01. Now that Docker is installed, run the following commands to setup the miniPaint Docker container and run it
# increase fs.inotify.max_user_watches
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
# reload and verify the change
sudo sysctl -p
# create working directory
mkdir ~/docker/miniPaint -p
# clone source code from github
git clone https://github.com/viliusle/miniPaint.git ~/docker/miniPaint
# change directory
cd ~/docker/miniPaint
# checkout the latest tagged release
git checkout $(git tag sort=v:refname | tail -n1)
# edit webpack.config.js
sudo nano webpack.config.js
02. Scroll to the bottom of the file and locate devServer, then add the following line inside the devServer block
allowedHosts: all,
03. Press CTRL+O, Enter, CTRL+X to write the changes and exit
04. Continue with the following commands in the terminal
# create a dockerfile
sudo nano ./Dockerfile
05. Paste the following into Dockerfile
FROM node:16-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm i
COPY . .
EXPOSE 8080
CMD [npm, run, server]
06. Press CTRL+O, Enter, CTRL+X to write the changes and exit
07. Continue with the following commands in the terminal
# build the minipaint image
docker build -t local/minipaint .
# run minipaint container
docker run -d name=minipaint -p 8080:8080 restart=unless-stopped local/minipaint
08. Open a web browser and navigate to http://DNSorIP:8080
09. Welcome to miniPaint running in Docker
Source: https://github.com/viliusle/miniPaint/wiki/Docker
### Connect with me and others ###
★ Discord: https://discord.com/invite/EzenvmSHW8
★ Reddit: https://reddit.com/r/i12bretro
★ Twitter: https://twitter.com/i12bretro Run miniPaint - Browser Based Image Editor - in Docker](https://i.ytimg.com/vi/hjjMTyJJz3c/mqdefault.jpg)

![Install LimeSurvey CE - Custom Survey Tool - on Windows
#LimeSurvey #Surveys #Windows
Full steps can be found at https://i12bretro.github.io/tutorials/1001.html
What is LimeSurvey?
[LimeSurvey is] a powerful, open-source survey platform. A free alternative to SurveyMonkey, Typeform, Qualtrics, and Google Forms, making it simple to create online surveys and forms with unmatched flexibility. - https://github.com/LimeSurvey/LimeSurvey
Installation
01. Download XAMPP https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/
02. Download LimeSurvey CE https://community.limesurvey.org/downloads/
03. Download Microsoft Visual C++ https://aka.ms/vs/16/release/vc_redist.x64.exe
04. Install Microsoft Visual C++
05. Right click the downloaded XAMPP .zip file ≫ Extract All...
06. Right click the downloaded LimeSurvey .zip file ≫ Extract All...
07. If necessary, rename the extracted directory to limesurvey
08. Cut the limesurvey folder inside the extracted XAMPP/htdocs directory
09. Copy the extracted XAMPP directory to a safe location to run from, C:apps for example
10. Run XAMPP/setup_xampp.bat to update the configuration files with the new server location
11. Navigate to XAMPP/php and edit php.ini in a text editor
12. Find the following lines and remove the ; to uncomment them
extension=ldap
extension=gd
extension=imap
extension=intl
extension=zip
13. Save the changes to php.ini and close the text editor
14. Navigate back to /XAMPP ≫ Run xampp-control.exe
15. Click the Start button next to Apache and MySQL
16. Navigate to XAMPP/mysql/bin
17. Hold the SHIFT key and right click in the white space ≫ Open PowerShell window here...
18. Type the following in the PowerShell window to setup the LimeSurvey database
.mysql -u root
CREATE DATABASE limesurvey;
GRANT ALL ON limesurvey.* TO limesurvey_rw@localhost IDENTIFIED BY L!m3Surv3Y;
FLUSH PRIVILEGES;
EXIT;
exit
LimeSurvey Web Installer
01. Open a web browser and navigate to http://DNSorIP/limesurvey
02. Select a Language ≫ Click Start installation at the Welcome screen
03. Click I accept at the License Agreement
04. Click Next at the Pre-Installation Check
05. Complete the Database Configuration as shown below
Database type: MySQL
MySQL database engine type: MyISAM
Database location: localhost
Database user: limesurvey_rw
Database Password: L!m3Surv3Y
Database name: limesurvey
Table Prefix:
06. Click Next ≫ Click Populate database
07. Complete the Administration settings form ≫ Click Next
08. Click Administration
09. Login using the admin credentials created earlier
10. Welcome to LimeSurvey
Source: https://manual.limesurvey.org/Installation LimeSurvey_CE
### Connect with me and others ###
★ Discord: https://discord.com/invite/EzenvmSHW8
★ Reddit: https://reddit.com/r/i12bretro
★ Twitter: https://twitter.com/i12bretro Install LimeSurvey CE - Custom Survey Tool - on Windows](https://i.ytimg.com/vi/iA0YOaLpDHI/mqdefault.jpg)