I was looking around over the last few days/weeks and couldn't find many resources on how to actually create a true single server farm in SharePoint 2016 which doesn't depend on active directory.

I am using Azure to provision the VM in this excersize so we are skipping the step of actually installing the SharePoint bits since they are available in an Azure VM template.

Before you begin - Gotchas

There are some catches when using this configuration.

  • UPDATE NOV 2018 You can promote the Azure VM hosting SharePoint and SQL into a domain controller and move forward. It will give you a few nasty prompts warning you not to do it, but for dev purposes it is acceptable. This is the recommended approach rather than using local accounts described below

  • If you need search, join your single server farm to a domain before creating the config database. Joining to a domain simplifies these steps some as you can skip the PowerShell portions. Without a proper domain controller, the search service application doesn't work/won't provision. This was actually a deal breaker for me and I ended up running through this exercise again, provisioning a separate & small domain controller VM.

Create the Virtual Server

As mentioned there are a few steps we're combining here since a SharePoint 2016 template is available in Azure.

Azure SharePoint 2016 VM TemplateAzure SharePoint 2016 Template

Select the template and run through the wizard. I'm not going to go through every step of the process here, but I recommend specs below. The Azure VM offerings change pretty frequently so just find the cheapest one that somewhat conforms to the specs.

  • Around 16 GB of RAM
  • 4 Cores
  • Premium Storage
  • 100 GB of storage

Here is what I came up with

VM Settings in Azure

Create the Farm Account

In Windows, create an additional account for the machine and convert it to an administrator account. A single server SharePoint 2016 environment does not require an Active Directory account (as is consistent with previous SharePoint versions).

Create a farm account and give it a password

Make sure to change the account to an administrator as it will need to perform all sorts of invasive and disturbing things to the server

Install SQL server

Download the SQL server ISO and run through the installation process. I typically recommend researching best practice prior to installing SQL server for a production environment. In this case, since we're prototyping just click through the defaults.

These should be all the features you need for the base install

Make sure to add yourself and the farm account as sysadmins

Hopefully after clicking through you've gotten here

Gotcha - In the past I've had issues installing SQL server directly from the mounted installation ISO. You may want to extract the ISO and run it from disk if you run into problems.

Install SQL Server Management Studio (SSMS)

You will probably need SSMS at some point during this server's lifespan so why not get it out of the way now.

SSMS will take a few minutes to install and require a reboot

Create a SQL Alias

Start > Run > cliconfg.exe. This is a simple step that may save a lot of headache down the road

My SQL Server Alias Configuration

Install SharePoint

Don't have do to this since we're using Azure and the bits should be installed for us in the template.

If you're not using Azure you will need to download the SharePoint binaries and run through the installation process

Create the SharePoint Configuration Database with PowerShell

UPDATE 07-16-2018 - You can now select "Single-Server Farm" from the SharePoint 2016 Configuration Wizard. You no longer need PowerShell to create a single-server farm minrole.

SharePoint 2016 will not let you select the Single Server minrole directly from the configuration wizard. You have to first create the confg DB with the SharePoint 2016 Management Shell (PowerShell). Run the terminal as administrator.

New-SPConfigurationDatabase -DatabaseName "single_server_farm" -DatabaseServer "DEMROSP2016" -Passphrase (ConvertTo-SecureString "farm_passphrase" -AsPlainText -force) -FarmCredentials (Get-Credential) -LocalServerRole SingleServerFarm  

Important - the PowerShell cmdlet New-SpConfigurationDatabase has two parameters related to minrole, "-LocalServerRole" and "-OptionalServerRole". Using -OptionalServerRole will reportedly provision the farm in Active Directory Account Creation Mode. If this happens you will not be able to create site collections and will see an error in ULS - The page cannot be displayed because your server's current configuration does not support it. To perform this task, use the command line operations in Stsadm.exe. TLDR; Double check you are using -LocalServerRole.

Important - Make sure to use the database server alias you created earlier instead of the actual server name

Important - when PowerShell prompts you for credentials, enter the farm account created above with the machine name in place of the domain. In my case this was demroSp2016-2\spfarm

If you don't enter the farm credentials correctly you're going to get a descriptive "object not set to an instance of an object" error in the logs. If this happens just delete the databases it creates and try the PowerShell command again

If you've done everything correctly, this command will take several minutes to complete.

A Note on New-SpConfigurationDatabase and MinRole

As of writing this article, there is still no SharePoint 2016 documentation on the new-spconfigurationdatabase cmdlet, which includes the MinRole commands (the SharePoint 2013 version is the closest we have).

Ben Stegink has a great writeup on the updates on his blog at https://www.benstegink.com/sharepoint-2016-new-spconfigurationdatabase-missing-documentation/

Run the SharePoint 2016 Products Configuration Wizard

The config wizard will detect that the config database exists and the server is already connected to the farm. After clicking through and letting the wizard do its thing, you should have Central Admin available and the farm is ready!

A much better picture than a screenshot of the configuration wizard Washington Wizards G-Man by Keith Allison / CC BY-SA 2.0)

Save a snapshot of the VM so you never have to do this again

Keep the base VM around, make copies, or do whatever you have to do to pump this out to your dev team without having to go through the motions again. Eventually it will need some service pack attention.

Central Admin, finally

If you're running into trouble, give a shout-out in the comments and I might be able to help. Good luck!

how to create a single server farm SharePoint 2016 on-premise Azure serverroleoptional