diff --git a/conf/README.md b/conf/README.md index 4a821a3..889863c 100644 --- a/conf/README.md +++ b/conf/README.md @@ -1 +1,239 @@ -# USE THIS FOLDER TO STORE YOUR OWN ZMB CONFIGS \ No newline at end of file +# USE THIS FOLDER TO STORE YOUR OWN ZMB CONFIGS +# `zamba.conf` options reference +This is the reference of all config options you can set in `zamba.conf` +
+ +## Linux Container Section +In this section all settings relevant for the LXC container. +
+ +### LXC_TEMPLATE_STORAGE +Defines the Proxmox storage where your LXC container template are stored (default: local) +```bash +LXC_TEMPLATE_STORAGE="local" +``` +### LXC_ROOTFS_SIZE +Defines the size in GB of the LXC container's root filesystem (default: 32) +```bash +LXC_ROOTFS_SIZE="32" +``` +Depending on your environment, you should consider increasing the size for use of `mailpiler` or `matrix`. +### LXC_ROOTFS_STORAGE +Defines the Proxmox storage where your LXC container's root filesystem will be generated (default: local-zfs) +```bash +LXC_ROOTFS_STORAGE="local-zfs" +``` +### LXC_SHAREFS_SIZE +Defines the size in GB your LXC container's filesystem shared by Zamba (AD member & standalone) (default: 100) +```bash +LXC_SHAREFS_SIZE="100" +``` +### LXC_SHAREFS_STORAGE +Defines the Proxmox storage where your LXC container's filesystem shared by Zamba will be generated (default: local-zfs) +```bash +LXC_SHAREFS_STORAGE="local-zfs" +``` +### LXC_SHAREFS_MOUNTPOINT +Defines the mountpoint of the filesystem shared by Zamba inside your LXC container (default: tank) +```bash +LXC_SHAREFS_MOUNTPOINT="tank" +``` +### LXC_MEM +Defines the amount of RAM in MB your LXC container is allowed to use (default: 1024) +```bash +LXC_MEM="1024" +``` +### LXC_SWAP +Defines the amount of swap space in MB your LXC container is allowed to use (default: 1024) +```bash +LXC_SWAP="1024" +``` +### LXC_HOSTNAME +Defines the hostname of your LXC container +```bash +LXC_HOSTNAME="${service}.zmbrocks" +``` +### LXC_DOMAIN +Defines the domain name / search domain of your LXC container +```bash +LXC_DOMAIN="zmb.rocks" +``` +### LXC_DHCP +Enable DHCP on LAN (eth0) - (Obtain an IP address automatically) [true/false] +```bash +LXC_DHCP=false +``` +### LXC_IP +Defines the local IP address and subnet of your LXC container in CIDR format +```bash +LXC_IP="10.10.80.20/24" +``` +### LXC_GW +Defines the default gateway IP address of your LXC container +```bash +LXC_GW="10.10.80.254" +``` +### LXC_DNS +Defines the DNS server ip address of your LXC container +```bash +LXC_DNS="10.10.80.254" +``` +`zmb-ad` used this DNS server for installation, after installation and domain provisioning it will be used as forwarding DNS +For other services this should be your active directory domain controller (if present, else a DNS server of your choice) +### LXC_BRIDGE +Defines the network bridge to bind the network adapter of your LXC container +```bash +LXC_BRIDGE="vmbr0" +``` +### LXC_VLAN +Defines the vlan id of the LXC container's network interface, if the network adapter should be connected untagged, just leave the value empty. +```bash +LXC_VLAN="80" +``` +### LXC_PWD +Defines the `root` password of your LXC container. Please use 'single quotation marks' to avoid unexpected behaviour. +```bash +LXC_PWD="S3cr3tp@ssw0rd" +``` +### LXC_AUTHORIZED_KEY +Defines an authorized_keys file to push into the LXC container. +By default the authorized_keys will be inherited from your proxmox host. +```bash +LXC_AUTHORIZED_KEY="/root/.ssh/authorized_keys" +``` +### LXC_TOOLSET +Define your (administrative) tools, you always want to have installed into your LXC container +```bash +LXC_TOOLSET="vim htop net-tools dnsutils sysstat mc" +``` +### LXC_TIMEZONE +Define the local timezone of your LXC container (default: Euroe/Berlin) +```bash +LXC_TIMEZONE="Europe/Berlin" +``` +### LXC_LOCALE +Define system language on LXC container (locales) +With this paramater you can generate additional locales, the default language will be inherited from proxmox host. +```bash +LXC_LOCALE="en_US.UTF-8"" +``` +### Set dark background for vim syntax highlighting (0 or 1) +```bash +LXC_VIM_BG_DARK=1 +``` + +## Zamba Server Section +This section configures the Zamba server (AD DC, AD member and standalone) +
+ +### ZMB_REALM +Defines the REALM for the Active Directory (AD DC, AD member) +```bash +ZMB_REALM="ZMB.ROCKS" +``` +### ZMB_DOMAIN +Defines the domain name in your Active Directory or Workgroup (AD DC, AD member, standalone) +```bash +ZMB_DOMAIN="ZMB" +``` +### ZMB_ADMIN_USER +Defines the name of your domain administrator account (AD DC, AD member, standalone) +```bash +ZMB_ADMIN_USER="Administrator" +``` +### ZMB_ADMIN_PASS +Defines the domain administrator's password (AD DC, AD member). +```bash +ZMB_ADMIN_PASS='1c@nd0@nyth1n9' +``` +Please use 'single quotation marks' to avoid unexpected behaviour. +`zmb-ad` domain administrator has to meet the password complexity policy, if password is too weak, domain provisioning will fail. +### ZMB_SHARE +Defines the name of your Zamba share +```bash +ZMB_SHARE="share" +``` +
+ +## Mailpiler section +This section configures the mailpiler email archive +
+ +### PILER_FQDN +Defines the (public) FQDN of your piler mail archive +```bash +PILER_FQDN="piler.zmb.rocks" +``` +### PILER_SMARTHOST +Defines the smarthost for piler mail archive +```bash +PILER_SMARTHOST="10.10.80.20" +``` +
+ +## Matrix section +This section configures the matrix chat server +
+ +### MATRIX_FQDN +Define the FQDN of your Matrix server +```bash +MATRIX_FQDN="matrix.zmb.rocks" +``` + +### MATRIX_ELEMENT_FQDN +Define the FQDN for the Element Web virtual host +```bash +MATRIX_ELEMENT_FQDN="element.zmb.rocks" +``` +### MATRIX_ELEMENT_VERSION +Define the version of Element Web +```bash +MATRIX_ELEMENT_VERSION="v1.7.24" +``` + +## Nextcloud Section +This section configures the nextcloud server +
+ +### Define the FQDN of your Nextcloud server +```bash +NEXTCLOUD_FQDN="nc1.zmb.rocks" +``` + +### The initial admin-user which will be configured +```bash +NEXTCLOUD_ADMIN_USR="zmb-admin" +``` + +### Build a strong password for this user. Username and password will shown at the end of the instalation. +```bash +NEXTCLOUD_ADMIN_PWD="$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)" +``` +### Defines the data directory, which will be createt under LXC_SHAREFS_MOUNTPOINT +```bash +NEXTCLOUD_DATA="nc_data" +``` +### Defines the trusted reverse proxy, which will enable the detection of source ip to fail2ban +```bash +NEXTCLOUD_REVPROX="192.168.100.254" +``` +## Check_MK Section +This section configures the checkmk server +
+ +### Define the name of your checkmk instance +```bash +CMK_INSTANCE=zmbrocks +``` + +### Define the password of user 'cmkadmin' +```bash +CMK_ADMIN_PW='Ju5t@n0thers3cur3p@ssw0rd' +``` +### checkmk edition (raw or free) +#### raw = completely free +#### free = limited version of the enterprise edition (25 hosts, 1 instance) +```bash +CMK_EDITION=raw +``` diff --git a/conf/zamba.conf.example b/conf/zamba.conf.example index 9bd2691..2885a7e 100644 --- a/conf/zamba.conf.example +++ b/conf/zamba.conf.example @@ -34,7 +34,7 @@ LXC_MEM="1024" LXC_SWAP="1024" # Defines the hostname of your LXC container -LXC_HOSTNAME="zamba" +LXC_HOSTNAME="${service}" # Defines the domain name / search domain of your LXC container LXC_DOMAIN="zmb.rocks" @@ -73,8 +73,10 @@ LXC_TOOLSET="vim htop net-tools dnsutils sysstat mc" LXC_TIMEZONE="Europe/Berlin" # Define system language on LXC container (locales) -# With thi paramater you can generate additional locales, the default language will be inherited from proxmox host. -LXC_LOCALE="en_US.UTF-8" +# With this paramater you can generate additional locales, the default language will be inherited from proxmox host. +# en_US.UTF-8 english +# de_DE.UTF-8 german (default) +LXC_LOCALE="de_DE.UTF-8" # Set dark background for vim syntax highlighting (0 or 1) LXC_VIM_BG_DARK=1 @@ -112,7 +114,7 @@ MATRIX_ELEMENT_FQDN="element.zmb.rocks" ############### Nextcloud-Section ############### -# Define the FQDN of your Matrix server +# Define the FQDN of your Nextcloud server NEXTCLOUD_FQDN="nc1.zmb.rocks" # The initial admin-user which will be configured diff --git a/install.sh b/install.sh index a903d14..b0b58e6 100644 --- a/install.sh +++ b/install.sh @@ -53,6 +53,27 @@ shift $((OPTIND-1)) echo "Loading config file '$config'..." source $config +# Check config Settings +echo "Check Setting 'Timezone'" +if [[ $LXC_TIMEZONE != $(timedatectl list-timezones | grep $LXC_TIMEZONE) ]]; then + echo "Unknown LXC_TIMEZONE setting (list available Timezones 'timedatectl list-timezones')"; exit 0 +fi +echo "Check Setting 'Template Storage'" +pvstorage=$(pvesh get storage --noborder --noheader); +if [[ $LXC_TEMPLATE_STORAGE != $(echo "$pvstorage" | grep $LXC_TEMPLATE_STORAGE$) ]]; then + echo "Unknown LXC_TEMPLATE_STORAGE, please check your storage name"; exit 0 +fi +echo "Check Setting 'Rootfs Storage'" +if [[ $LXC_ROOTFS_STORAGE != $(echo "$pvstorage" | grep $LXC_ROOTFS_STORAGE$) ]]; then + echo "Unknown LXC_ROOTFS_STORAGE, please check your storage name"; exit 0 +fi +echo "Check Setting 'Sharefs Storage'" +if [[ $LXC_SHAREFS_STORAGE != $(echo "$pvstorage" | grep $LXC_SHAREFS_STORAGE$) ]]; then + echo "Unknown LXC_SHAREFS_STORAGE, please check your storage name"; exit 0 +fi +echo -e "Settings \e[0;92mOK\e[0m" + + OPTS=$(ls -d $PWD/src/*/ | grep -v __ | xargs basename -a) valid=0 @@ -90,9 +111,11 @@ if [[ "$valid" != "1" ]]; then usage 1 fi +source $config source $PWD/src/$service/constants-service.conf +LXC_HOSTNAME="${LXC_HOSTNAME/-/}" -# CHeck is the newest template available, else download it. +# Check is the newest template available, else download it. DEB_LOC=$(pveam list $LXC_TEMPLATE_STORAGE | grep debian-10-standard | cut -d'_' -f2) DEB_REP=$(pveam available --section system | grep debian-10-standard | cut -d'_' -f2) @@ -126,7 +149,10 @@ sleep 2; # Check vlan configuration if [[ $LXC_VLAN != "" ]];then VLAN=",tag=$LXC_VLAN"; else VLAN=""; fi # Reconfigure conatiner -pct set $LXC_NBR -memory $LXC_MEM -swap $LXC_SWAP -hostname $LXC_HOSTNAME -onboot 1 -timezone $LXC_TIMEZONE -features nesting=$LXC_NESTING; +PVE_VER=$(pveversion | grep 'pve-manager' | cut -d'/' -f2 | sed 's/[^0-9]//g') +pct set $LXC_NBR -memory $LXC_MEM -swap $LXC_SWAP -hostname $LXC_HOSTNAME -onboot 1 -features nesting=$LXC_NESTING; +# timezone switch added in Version 6.3 +if [ $PVE_VER -ge 630 ];then pct set $LXC_NBR -timezone $LXC_TIMEZONE;fi if [ $LXC_DHCP == true ]; then pct set $LXC_NBR -net0 name=eth0,bridge=$LXC_BRIDGE,ip=dhcp,type=veth$VLAN; else @@ -159,8 +185,14 @@ lxc-attach -n$LXC_NBR bash /root/lxc-base.sh echo "Install '$service'!" lxc-attach -n$LXC_NBR bash /root/install-service.sh +summary=$(pct exec $LXC_NBR -- bash -c '[ -f /root/summary ] && cat /root/summary') +if [[ $summary != "" ]];then pct set $LXC_NBR --description="$(echo -e "$summary")"; fi + if [[ $service == "zmb-ad" ]]; then pct stop $LXC_NBR pct set $LXC_NBR \-nameserver $(echo $LXC_IP | cut -d'/' -f 1) pct start $LXC_NBR fi + +# timezone switch added in Version 6.3 +if [ $PVE_VER -lt 630 ]; then echo "echo "$LXC_TIMEZONE" > /etc/timezone" | pct enter $LXC_NBR; fi \ No newline at end of file diff --git a/src/matrix/constants-service.conf b/src/matrix/constants-service.conf index a8136ea..57a6fe2 100644 --- a/src/matrix/constants-service.conf +++ b/src/matrix/constants-service.conf @@ -17,4 +17,4 @@ LXC_UNPRIVILEGED="1" LXC_NESTING="0" # Define the version of Element Web -MATRIX_ELEMENT_VERSION="v1.7.25" +MATRIX_ELEMENT_VERSION="v1.7.34" diff --git a/src/nextcloud/install-service.sh b/src/nextcloud/install-service.sh index 870263c..fd9ab14 100644 --- a/src/nextcloud/install-service.sh +++ b/src/nextcloud/install-service.sh @@ -410,7 +410,10 @@ bash /$LXC_SHAREFS_MOUNTPOINT/$NEXTCLOUD_DATA/config_nextcloud.sh EOF echo "*/5 * * * * www-data /usr/bin/php -f /var/www/nextcloud/cron.php > /dev/null 2>&1" > /etc/cron.d/nextcloud -echo -e "\n######################################################################\n\n Please note this user and password for the nextcloud login:\n '$NEXTCLOUD_ADMIN_USR' / '$NEXTCLOUD_ADMIN_PWD'\n Enjoy your Nextcloud intallation.\n\n######################################################################" +echo "\n\n" +echo "######################################################################\n\n Please note this user and password for the nextcloud login:\n '$NEXTCLOUD_ADMIN_USR' / '$NEXTCLOUD_ADMIN_PWD'\n Enjoy your Nextcloud intallation.\n\n######################################################################" > /root/summary +echo -e "$(cat /root/summary)" + systemctl stop nginx php$NEXTCLOUD_PHP_VERSION-fpm systemctl restart postgresql php$NEXTCLOUD_PHP_VERSION-fpm redis-server nginx diff --git a/src/open3a/install-service.sh b/src/open3a/install-service.sh index 00c5cc8..39bced0 100644 --- a/src/open3a/install-service.sh +++ b/src/open3a/install-service.sh @@ -52,4 +52,7 @@ chmod +x /etc/cron.daily/open3a-backup systemctl enable --now php7.3-fpm systemctl restart nginx -echo -e "Your open3a installation is now complete. Please continue with setup in your Browser:\nURL:\t\thttp://$LXC_IP\nLogin:\t\tAdmin\nPassword:\tAdmin\n\nMysql-Settings:\nServer:\t\tlocalhost\nUser:\t\topen3a\nPassword:\t$MYSQL_PASSWORD\nDatabase:\topen3a" \ No newline at end of file +echo "Your open3a installation is now complete. Please continue with setup in your Browser:\nURL:\t\thttp://$LXC_IP\nLogin:\t\tAdmin\nPassword:\tAdmin\n\nMysql-Settings:\nServer:\t\tlocalhost\nUser:\t\topen3a\nPassword:\t$MYSQL_PASSWORD\nDatabase:\topen3a" > /root/summary +echo -e "$(cat /root/summary)" + +exit 0 \ No newline at end of file diff --git a/zamba.conf.md b/zamba.conf.md deleted file mode 100644 index a4c3114..0000000 --- a/zamba.conf.md +++ /dev/null @@ -1,214 +0,0 @@ -# `zamba.conf` options reference -This is the reference of all config options you can set in `zamba.conf` -
- -## Linux Container Section -In this section all settings relevant for the LXC container. -
- -### LXC_TEMPLATE_STORAGE -Defines the Proxmox storage where your LXC container template are stored (default: local) -```bash -LXC_TEMPLATE_STORAGE="local" -``` -### LXC_ROOTFS_SIZE -Defines the size in GB of the LXC container's root filesystem (default: 32) -```bash -LXC_ROOTFS_SIZE="32" -``` -Depending on your environment, you should consider increasing the size for use of `mailpiler` or `matrix`. -### LXC_ROOTFS_STORAGE -Defines the Proxmox storage where your LXC container's root filesystem will be generated (default: local-zfs) -```bash -LXC_ROOTFS_STORAGE="local-zfs" -``` -### LXC_SHAREFS_SIZE -Defines the size in GB your LXC container's filesystem shared by Zamba (AD member & standalone) (default: 100) -```bash -LXC_SHAREFS_SIZE="100" -``` -### LXC_SHAREFS_STORAGE -Defines the Proxmox storage where your LXC container's filesystem shared by Zamba will be generated (default: local-zfs) -```bash -LXC_SHAREFS_STORAGE="local-zfs" -``` -### LXC_SHAREFS_MOUNTPOINT -Defines the mountpoint of the filesystem shared by Zamba inside your LXC container (default: tank) -```bash -LXC_SHAREFS_MOUNTPOINT="tank" -``` -### LXC_MEM -Defines the amount of RAM in MB your LXC container is allowed to use (default: 1024) -```bash -LXC_MEM="1024" -``` -### LXC_SWAP -Defines the amount of swap space in MB your LXC container is allowed to use (default: 1024) -```bash -LXC_SWAP="1024" -``` -### LXC_HOSTNAME -Defines the hostname of your LXC container -```bash -LXC_SWAP="zamba" -``` -### LXC_DOMAIN -Defines the domain name / search domain of your LXC container -```bash -LXC_DOMAIN="zmb.rocks" -``` -### LXC_DHCP -Enable DHCP on LAN (eth0) - (Obtain an IP address automatically) [true/false] -```bash -LXC_DHCP=false -``` -### LXC_IP -Defines the local IP address and subnet of your LXC container in CIDR format -```bash -LXC_IP="10.10.80.20/24" -``` -### LXC_GW -Defines the default gateway IP address of your LXC container -```bash -LXC_GW="10.10.80.254" -``` -### LXC_DNS -Defines the DNS server ip address of your LXC container -```bash -LXC_DNS="10.10.80.254" -``` -`zmb-ad` used this DNS server for installation, after installation and domain provisioning it will be used as forwarding DNS -For other services this should be your active directory domain controller (if present, else a DNS server of your choice) -### LXC_BRIDGE -Defines the network bridge to bind the network adapter of your LXC container -```bash -LXC_BRIDGE="vmbr0" -``` -### LXC_VLAN -Defines the vlan id of the LXC container's network interface, if the network adapter should be connected untagged, just leave the value empty. -```bash -LXC_VLAN="80" -``` -### LXC_PWD -Defines the `root` password of your LXC container. Please use 'single quotation marks' to avoid unexpected behaviour. -```bash -LXC_PWD="S3cr3tp@ssw0rd" -``` -### LXC_AUTHORIZED_KEY -Defines an authorized_keys file to push into the LXC container. -By default the authorized_keys will be inherited from your proxmox host. -```bash -LXC_AUTHORIZED_KEY="/root/.ssh/authorized_keys" -``` -### LXC_TOOLSET -Define your (administrative) tools, you always want to have installed into your LXC container -```bash -LXC_TOOLSET="vim htop net-tools dnsutils mc sysstat lsb-release curl git gnupg2 apt-transport-https" -``` -### LXC_TIMEZONE -Define the local timezone of your LXC container (default: Euroe/Berlin) -```bash -LXC_TIMEZONE="Europe/Berlin" -``` -### LXC_LOCALE -Define system language on LXC container (locales) -```bash -LXC_LOCALE="de_DE.utf8" -``` -This parameter is not used yet, but will be integrated in future releases. -
- -## Zamba Server Section -This section configures the Zamba server (AD DC, AD member and standalone) -
- -### ZMB_REALM -Defines the REALM for the Active Directory (AD DC, AD member) -```bash -ZMB_REALM="ZMB.ROCKS" -``` -### ZMB_DOMAIN -Defines the domain name in your Active Directory or Workgroup (AD DC, AD member, standalone) -```bash -ZMB_DOMAIN="ZMB" -``` -### ZMB_DNS_BACKEND -Defines the desired DNS server backend, supported are `SAMBA_INTERNAL` and `BIND9_DLZ` for more advanced usage -```bash -ZMB_DNS_BACKEND="SAMBA_INTERNAL" -``` -### ZMB_ADMIN_USER -Defines the name of your domain administrator account (AD DC, AD member, standalone) -```bash -ZMB_ADMIN_USER="Administrator" -``` -### ZMB_ADMIN_PASS -Defines the domain administrator's password (AD DC, AD member). -```bash -ZMB_ADMIN_PASS='1c@nd0@nyth1n9' -``` -Please use 'single quotation marks' to avoid unexpected behaviour. -`zmb-ad` domain administrator has to meet the password complexity policy, if password is too weak, domain provisioning will fail. -### ZMB_SHARE -Defines the name of your Zamba share -```bash -ZMB_SHARE="share" -``` -
- -## Mailpiler section -This section configures the mailpiler email archive -
- -### PILER_FQDN -Defines the (public) FQDN of your piler mail archive -```bash -PILER_FQDN="piler.zmb.rocks" -``` -### PILER_SMARTHOST -Defines the smarthost for piler mail archive -```bash -PILER_SMARTHOST="10.10.80.20" -``` -### PILER_VERSION -Defines the version number of piler mail archive to install -```bash -PILER_VERSION="1.3.10" -``` -### PILER_SPHINX_VERSION -Defines the version of sphinx to install -```bash -PILER_SPHINX_VERSION="3.3.1" -``` -### PILER_PHP_VERSION -Defines the php version to install -```bash -PILER_PHP_VERSION="7.4" -``` -
- -## Matrix section -This section configures the matrix chat server -
- -### MATRIX_FQDN -Define the FQDN of your Matrix server -```bash -MATRIX_FQDN="matrix.zmb.rocks" -``` - -### MATRIX_ELEMENT_FQDN -Define the FQDN for the Element Web virtual host -```bash -MATRIX_ELEMENT_FQDN="element.zmb.rocks" -``` -### MATRIX_ELEMENT_VERSION -Define the version of Element Web -```bash -MATRIX_ELEMENT_VERSION="v1.7.24" -``` -### MATRIX_JITSI_FQDN -Define the FQDN for the Jitsi Meet virtual host -```bash -MATRIX_JITSI_FQDN="meet.zmb.rocks" -``` \ No newline at end of file