Skip to content

Server Installation

Recommendations

It is highly recommended to run softwareAssistant in a virtual machine by itself (no other services running). SA will have management capabilities (admin access) to all connected clients, so keeping the server as secure as possible is critical.

Secure server setup is beyond the scope of this document. The admin should take all additional configuration steps needed to properly secure the server!

Currently there is no testing done with alternate versions of the below software. Please stick to the documented software until you are familiar with the SA setup process.

VM Configuration

Server configuration will vary depending on client concurrency and configured actions. You should adjust the storage based on how large you predict your package repo will be. Choose a size large enough to work for several years in the future, it is not as easy to add storage as it is to add RAM and CPU Cores.

You should be able to use any hypervisor, but I have only tested HyperV at this point. The settings below are specific to HyperV, but there is nothing specific to HyperV that is required to run SA.

I am currently managing ~250 client computers using a VM with the following specs:

  • RAM: 8192 MB
  • Processor: 4 Cores (Hyper-V host has a Xeon X5670 @ 2.93GHz)
  • Storage: 256 GB

HyperV Wizard settings:

  • VM Generation: Generation 2
  • Startup memory: 8192 MB
  • Networking: Select your public network connection
  • Create a virtual hard disk: 256GB
  • Install an operating from a bootable image: select the ubuntu ISO

Before beginning the install, open the VM and adjust:

  • Processor: increase to 4 (or 8) virtual processors
  • Security: Secure boot set to Microsoft UEFI Certificate Authority
  • Automatic start action: Always start
  • Automatic stop action: Shut down

Linux

This document was written using Ubuntu Server 26.04 LTS. The tutorial for getting started installing ubuntu server is worth a read.

Start the VM, and the Ubuntu Server installation will begin.

  • Try or Install Ubuntu Server
  • Choose your language and keyboard layout
  • Ubuntu Server
    • Enable 'Search for third-party drivers'
  • Configure the network
    • Configure an IP address if DHCP is not available
  • Add proxy if necessary
  • Mirror test should be successful at this point
  • Default storage layout is fine
    • may need to adjust the LVM partition to use all free space (defaults to only 100G)
      • Edit ubuntu-vg partition, leave space empty and it will deafult to maximum available.
    • keep LVM enabled in case a future resize is necessary
  • Begin installation
  • Enter name, username, hostname, and password
    • Be sure to use a very strong, unique password here, save it to your trusted password manager.
  • Install OpenSSH server
    • Remember to secure later
  • Dont bother with additional snaps
  • Installation will continue a few minutes
    • Reboot after installation is complete
    • You may need to manually eject the ISO and restart

Dont forget to configure unattended-upgrades and network firewall, backups, plus any additional configuration required to secure the server not covered here.

sudo dpkg-reconfigure unattended-upgrades
sudo apt update
sudo apt upgrade
sudo apt autoremove

Consider taking a snapshot of the VM now to simplify rollback if necessary.

Apache/MySQL/PHP

Background:

lamp-server^ is a meta-package which installs all lamp-server packages and dependencies packages at once. It should also maintain the lamp-server packages and dependencies going forward. SA also requires some additional PHP modules to function.

sudo apt install lamp-server^
sudo apt install bcmath

You should now get the Apache default page when visiting the IP address of the server with a web browser:

screenshot of apache default page

Configure MySQL account for Software Assistant

We need to create a username and password for use by SA to access the databases.

# start mysql as root, no password required when running as root
sudo mysql -u root

# substitute the [username] and [password] in the next lines
CREATE USER '[username]'@'localhost' IDENTIFIED BY '[password]';

Note the username and password, we will add this to the SA configuation later.

Optimize MySQL for faster access

Since this server will basically be a type of database server, configure MySQL to use half your system memory for caching.

add lines to /etc/mysql/mysql.conf.d/mysqld.cnf
# Buffer pool size must always be equal to or a multiple of innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
key_buffer_size = 2048M
innodb_buffer_pool_chunk_size = 128M
innodb-buffer-pool-instances = 16
innodb_buffer_pool_size = 2048M

Check the new config was accepted after restarting mysql:

# start mysql as root, no password required when running as root
sudo mysql -u root

SELECT @@innodb_buffer_pool_chunk_size/1024/1024;
SELECT @@innodb_buffer_pool_instances;
SELECT @@innodb_buffer_pool_size/1024/1024;
SELECT @@key_buffer_size/1024/1024;

Samba

Samba allows the admin to maintain the SA repository remotely over SMB. Only the admin needs access via SMB. A firewall should be used to restrict access to only the admin's workstation(s).

Install Samba

sudo apt update
sudo apt install samba

Configure Samba

Add the following to /etc/smb.conf

[global]
  server min protocol = SMB3
  client min protocol = SMB3
  smb encrypt = required

[software]
  comment = Software Assistant SMB Access
  path = /var/www/software
  force user = root
  force group = root
  read only = no
  browseable = yes
  writeable = yes
  valid users = [admin_username]
  hosts allow = [admin_ip_addresses]
  hosts deny = ALL

Create the admin password for Samba access

Create the admin's SMB password (be sure to use another very long and complex passphrase, store it in your trusted password manager)

smbpasswd -a [admin_username]

Restart the server to utilize new configuration:

service smbd restart