 
                    
        Setting Up a Local Power BI Report Server Demo Environment
Disclaimer
This article was created based on my personal notes with support from Microsoft Copilot. While Copilot assisted in structuring and refining the content, all technical details have been carefully reviewed and developed by me.
So, I’ve got a talk coming up about Power BI Report Server, and naturally, I needed a local test environment to play around with. I figured I’d document the setup here—not just for my own future reference, but maybe it’ll help someone else out there trying to do the same.
Thanks for the feature photoi to Kari Shea and Unsplash.
⚙️ Licensing & Legal Stuff
Good news: as far as I know, all components of the Power BI Report Server stack can be used for free for dev and test purposes. Just don’t use production data unless you want to tango with licensing issues. You’ve been warned.
🧱 Architecture Decisions
I had an old laptop with Windows 11 Pro lying around, so I went full native and installed everything directly on Windows. If you’re not into that, you’ll need a Windows VM. SQL Server runs fine in Docker and even on Linux—but Power BI Report Server? Nope. Windows only.
🗄️ SQL Server Setup
I took the opportunity to test-drive SQL Server 2025 RC0 (because why not), but any currently supported version should do the trick.
- Edition: Enterprise Developer (don’t bother with Express—no SQL Server Agent, and DB size limits are a pain)
- Features Installed:
- Database Engine Services
- Analysis Services
- Full-Text and Semantic Extractions for Search (not strictly needed, but I was curious)
 
- Instance: Default
- Service Account: Default
- Collation: Switched from Latin1_General_CI_AS to Latin1_General_CI_AI—I’ve been using accent-insensitive collation forever. Makes ä equal to ae, which is handy in German contexts.
🔧 Database Engine Configuration
- Auth Mode: Windows Authentication
- Admin: Added myself (obviously)
- TempDB Log File: Bumped initial size to 512 MB (default is 8 MB, which grows way too fast)
- MaxDOP & Memory: Left untouched
📊 Analysis Services
- Mode: Tabular
- Collation: Same switch to Latin1_General_CI_AI
- Everything else: Defaults
🖥️ Power BI Desktop (Report Server Edition)
- Here’s the catch: Power BI Report Server gets updated three times a year, while Power BI Desktop is on a monthly release cycle. That means you’ll need the special Report Server edition of Power BI Desktop to stay compatible.
- You can open newer reports with the Report Server, but you’ll get a warning—and it only works if you’re not using any unsupported features (like preview stuff).
- So you are best off with installing Power BI Desktop Report Server Edition from https://aka.ms/pbireportserverexe
📈 Power BI Report Server
You’ll need to grab the installer separately: https://aka.ms/pbireportserverexe
Setup itself is a no-brainer:
- Edition: Developer
- Install Path: Default
- Config: Done via Report Server Configuration Manager (link pops up at the end of setup)
⚙️ Configuring Power BI Report Server
This is the quick checklist for setting up a vanilla install which will do perfectly for a one-box-only deployment for test purposes:
- Launch Report Server Configuration Manager
- Connect to your local instance
- Go to Web Service URL → click Apply
- Creates virtual folder and reserves URL
 
- Go to Web Portal URL → click Apply
- Go to Database → click Change Database → follow the wizard (default settings good for local demo)
- Email settings & execution account: left unchanged
- Go to Encryption Keys → click Backup → save with password (don’t lose it!)
Now you can connect to your shiny new Report Server at:
Code
http://localhost/Reports 

Upload a sample PBIX file and test away.
👥 Setting Up Local Users and Groups for Access Testing
To simulate different user roles and access scenarios, I created local Windows users and groups. It’s a quick and dirty way to test permissions without needing a full-blown Active Directory setup.
Here’s how I did it:
- Open the Local Users and Groups management console by typing lusrmgr.msc into the Run dialog.
- Create your demo users and groups manually—or, if you’re lazy like me, use a PowerShell script:
# Script generated by Copilot
# Define roles and users
$roles = @{
    "Controlling" = @(
        @{FirstName="Chris"; LastName="Controller"},
        @{FirstName="Clara"; LastName="Controller"}
    )
    "Sales" = @(
        @{FirstName="Sam"; LastName="Sales"},
        @{FirstName="Sophie"; LastName="Sales"}
    )
    "Management" = @(
        @{FirstName="Max"; LastName="Manager"},
        @{FirstName="Mia"; LastName="Manager"}
    )
    "Admin" = @(
        @{FirstName="Alex"; LastName="Admin"},
        @{FirstName="Anna"; LastName="Admin"}
    )
}
# Step 1: Remove existing users and groups
foreach ($groupName in $roles.Keys) {
    foreach ($user in $roles[$groupName]) {
        $username = "$($user.LastName.ToLower()).$($user.FirstName.ToLower())"
        if (Get-LocalUser -Name $username -ErrorAction SilentlyContinue) {
            Remove-LocalUser -Name $username
            Write-Host "Deleted existing user: $username"
        }
    }
    if (Get-LocalGroup -Name $groupName -ErrorAction SilentlyContinue) {
        Remove-LocalGroup -Name $groupName
        Write-Host "Deleted existing group: $groupName"
    }
}
# Step 2: Create new groups and users
foreach ($groupName in $roles.Keys) {
    New-LocalGroup -Name $groupName
    Write-Host "Created group: $groupName"
    foreach ($user in $roles[$groupName]) {
        $username = "$($user.LastName.ToLower()).$($user.FirstName.ToLower())"
        $fullname = "$($user.LastName), $($user.FirstName)"
        $password = ConvertTo-SecureString $groupName -AsPlainText -Force
        New-LocalUser -Name $username `
                      -FullName $fullname `
                      -Password $password `
                      -AccountNeverExpires:$true
        Write-Host "Created user: $username ($fullname)"
        Set-LocalUser -Name $username -PasswordNeverExpires:$true
        Add-LocalGroupMember -Group $groupName -Member $username
        Write-Host "Added user '$username' to group '$groupName'"
    }
}
This script sets up everything in one go. You can always double-check or tweak things later via lusrmgr.msc.


It’s not fancy, but it gets the job done—and it’s perfect for testing how Power BI Report Server handles role-based access.
That’s it! A local Power BI Report Server setup that’s demo-ready and surprisingly painless. If you’ve got questions or want to share your own setup quirks, drop me a line.
Happy reporting! 📊