This is a docker–compose file to get Jamf Pro running in a container. I have been using this to easily test jctl against many different versions of Jamf Pro, which I run locally on my M1 laptop. I wanted to run my production server this way but alas, I never setup a production Docker server so I only use this for testing.
FYI: Jamf Pro is not free and is not included in this repository. You must purchase it first. And even if you purchase Jamf, you will want to request a development license. Request the development license from your Jamf Account Team (login required).
This docker-compose file mounts the Jamf Pro ROOT.war file. It also mounts the mysql data folder. Each of these is stored in a folder named after the version. Specify the version in the .env file. This allows you to keep around old versions and easily switch.
Download and install Docker.
Login to https://account.jamf.com and then go to the Solutions page. If you don't have "Jamf Pro" there, well, you'll have to buy it. Click on "View details" then the "Download" tab. Click the "Download" button for the "Manual" version. It will ask you to save something like, "jamf-pro-installation-11.30.1.zip".
Under the "Instances" tab, copy your "Activation Code" and save it in a note. You'll need to enter it once the server starts up.
git clone github.com/magnusviri/docker-jamfpro.git
cd docker-jamfpro
cp .env_example .env
Make a data directory named after the version of Jamf you downloaded.
mkdir data/11.30.1
In the Finder, find the jamf-pro-installation-11.30.1.zip file you downloaded and unzip it. After unzipping you should have a file named ROOT.war. Move it in to ata/11.30.1.
Edit the .env so that JAMF_PRO_VERSION is the correct version.
JAMF_PRO_VERSION=11.30.1
Also, check the Jamf Docker Hub page to see if they've updated their jamfpro tag. The latest version as of 2024-02-26 is 0.0.22. If they've updated it since then and you want to update your image, change this value to reflect the new tag.
JAMF_IMAGE_VERSION=0.0.29
If you want to change the MySQL values, do so as well. This repo specifies "latest."
Note, Jamf is using features that prevent it from working with MariaDB.
By default, this docker-compose will open up port 80 on your computer. If you want it on a different port, change the following line to something else.
JAMF_PRO_PORT=80
docker compose up -d
Open http://localhost/ and wait for it to startup. It can take several minutes. Follow the setup procedures (here's the documentation in case you need help). Accept the license agreement, enter your activation code, and create an account. For the Jamf Pro URL use "http://localhost" (for local testing only) or whatever your IP is.
As long as I am working on jctl I will keep this repo updated and working.
I am not planning on adding new features. If anyone would like to contribute or get this production ready, I would certainly update my repo with those changes. Here's what it would take.
- SSL support w/ signed certificates
- Custom server.xml
- jamf-cli support
- Support Let's Encrypt
- Support Distribution Points
This depends completely on the image provided by Jamf. I had nothing to do with developing that image.
I used Bryson Tyrrell's file as a starting point for this project.
I am also using wait-for-it.sh to pause Jamf until MySQL starts.
MIT License