All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Please take a look at Ideas
and Todo
sections on the project page.
This update adds a visual installation wizard, based on whiptail dialog boxes!
To use it, pass -i (or --interactive) parameter, like this: ./uset -i
To use old installation wizard, you can use -f (or --fallback) option, like this: ./uset -f
In fallback mode, you can combine another options with installation wizard, like this: ./uset -f --hostname example.com
If you use it like this, you would not be prompted to enter options that are already set by using command line parameters. This is currently not supported in interactive (visual) mode, but it can be in the future.
- Installation Wizard based on whiptail dialog boxes; to run wizard, the -i (--interactive) flag should be passed
- Old installation wizard based on
read
input prompts has been moved as a fallback option; to run installation wizard in fallback mode, the -f (--fallback) option should be passed - confirmation prompt has been moved right before the beginning of installation process, and turned on by default. To disable confirmation prompt, the
--confirm no
option should be passed.
- output colors can be turned off with
--colors no
option; the initial option was--disable-colors
, so after it has been renamed to--colors
, the value remainedyes
, which was incorrect.
This is the biggest update from the beginning of this project, and I'm happy to share details with you.
In the previous release, the project started to become cluttered, and every new feature was making more mess.
The main goal in this release was to make project source code easier to maintain, so new features can be easily added without adding complexity.
This is the reason, why the project has been split up in few different directories, which holds parts of the "main script".
Detailed explanation of the project structure, and the concept overall, will soon be described in the wiki, which would serve as place for official documentation.
Apart from this, there are many new features which were added, so the user can easily adapt behavior of the script to its specific needs.
Here is the complete list of features that were added and are now officially available:
-
full support for command line arguments
The script can now be fully customized by passing appropriate options, or by editingconfig/default.conf
file.
Please, note that command line options have greater priority upon options defined inside the configuration file. In other words, command line options would overwrite settings inside configuration file, if they are defined. -
existing installation detection
The approach here it rather simple but effective. While configuring the server first time, theuset.lock
file will be created inside/etc/
directory, so if the user accidentally run the script again (after the initial configuration was finished), the installation will simply check if file exist, and abort if file is present. This behavior can be disabled by passing--lock-ignore yes
option.
If you would like to disable creation of lock file, you can do so by using--lock-create no
option. -
package lists
There is a separate configuration fileconfig/pkg-list.conf
which holds lists of packages to be installed. You can edit it, to customize list of packages to be installed, or you can specify full list of packages by using option--packages
and--php-extensions
. -
custom user scripts
Installation process can now be customized for any specific environment, by using custom scripts. Any additional code that has to be executed, can be added in one of two files insideuser/
directory,pre-install.sh
andpost-install.sh
. As the names suggest, one is executed before installation process, and another is executed after installation has finished. Code inside these two files should be written inbash
, and is automatically executed by default. Those two files can be excluded by using--preinstall-disable yes
and--postinstall-disable yes
options. -
debug option
There is also an option to show all the arguments passed to a script with their values and corresponding variables. It can be set to one of three states:- args - Show only command line arguments with their values
- vars - Show only variables with their values
- full - Show both arguments and variables with their values
Note that this options show both default values defined inside configuration file, and values that were set by using command line options, so, some arguments will have value no matter if you were not set them.
-
conditional interactive input
If all the variables necessary for installation are set, you wouldn't see any interactive input. If some of they are missing (for example, server host name), you will see an interactive prompt asking you to enter the target value. -
provisioning profiles
This feature is prepared for one of the next minor releases, but is not available at a time. It will provide an option to configure the server by using predefined default values located in configuration files underprofiles/
directory. -
full multi-language support
Any part of the script can now be translated. Translations are split in three different groups of files insidelanguages/
directory.- The translation files inside
help/
subdirectory are reserved for help message displayed with--help
option. - Files inside
welcome/
subdirectory holds welcome message in different languages. - The text files located in main translation directory (
languages/
) are translation strings used for everything else.
Translations can be set by using
--language
option. The translations should be saved under two-letter code, which can be passed as value for language option, for example-language eo
. If a translation file for the language you select does not exist, the script will fall back toen
. The same stands for welcome and help message. If you make translation of only welcome message and select your language, then the welcome message would show up in your language, but all other messages would show in English. - The translation files inside
-
additional tools
Thetools/
directory holds some useful tools that were used while developing this project, and will also be used in the future. Currently, there are three scripts insides:- uninstall script (
uninstall.sh
), that was used for testing purposes arglist.sh
, which will generate a list of available arguments defined insideincludes/arglist.inc.sh
file, andvarlist.sh
, which will make list of available configuration variables, defined insidearglist.inc.sh
, or list of variables with default values defined inside main configuration file (config/default.conf
).
- uninstall script (
- WordPress
WordPress has been removed from installation process. This is not a WordPress install script. It might be added as a plugin. - nG Firewall
6g and 7g firewall are removed for now. They still can be easily added manually. mksite
script has been removed
You can expect something better in the future.
- Project directory structure
- There are no prompts interrupting installation process, like before
- Welcome screen is using
whiptail
utility, as it is more convenient for long messages
Welcome message can be skipped by using option--welcome no
- There are no "mandatory" things like before
Anything can be disabled or enabled, to tailor specific needs of any user.
- Added option to configure if you want to create index.html and info.php file.
- main script
USet
config.txt
: added optionsconf_create_index
andconf_create_phpinfo
- language files - added folowing translation strings:
- lang_index_html_configured
- lang_skipping_creation_of_index_html
- lang_info_php_configured
- lang_skipping_creation_of_info_php
- added path to
7g.conf
inapache.conf
- added option to install
Adminer
- updated configuration variables
- update language translations
- apache firewall installation is now conditional, depending on web server type installed. Nginx support will be added in next release.
- added option to install 7G firewall. Support for 6G still remains.
- added translation variable
lang_choose_apache_firewall_version
to translation files
- variable
lang_do_you_want_to_enable_6g_firewall
is renamed tolang_do_you_want_to_enable_apache_firewall
config.txt
- you can now configure additional options using config file- automatically set mysql root password
- added language files and welcome screen screenshot
.editorconfig
for better portability between editors- Downloaded Wordpress archive filename
wp_wget_filename
is now automatically calculated usingbasename
- removed
conf_wp_wget_filename
fromconfig.txt
- database creation string in Wordpress section - mysql "CREATE DATABASE" directive is the same for mysql version 5 and 8, so it is moved outside the condition
- renamed
conf_wp_wget_filename
->wp_wget_filename
- this file - Change log will be regulary updated fron now on
- Serbian and English translation files
languages/sr.txt
andlanguages/en.txt
- translation file check - if translation file is not present English translation will be loaded
- configuration options - added
config.txt
- a brand-new logo
- old welcome message
- Webmin installation is now optional
- Webmin port can be changed
- file names can be changed via configuration options
- output text coloring can be turned on and off
- if you are configurating multiple servers at once you can choose to disable welcome screen
- you can choose what packages you want to install by changing
$conf_php_extension_list
and$conf_helper_program_list
inconfig.txt
Wordpress download url can be changes. This is useful for localised Wordpress installations. For example, if you download wordpress from this link:
https://de.wordpress.org/latest-de_DE.zip
, wordpress comments in the code will be on German, and if you download from this link:https://fr.wordpress.org/latest-fr_FR.zip
, comments in the code will be on French
If $conf_wp_wget_locale
value is changed, downloaded file name must match the name in the configuration file. If you change download url to German, $conf_wp_wget_filename
should be latest-de_DE.zip
, if you change it to French, filename should be latest-fr_FR.zip
.