Skip to main content

Overview

The Ghidra Server enables multi-user collaborative reverse engineering by providing centralized repository management, version control, and concurrent access to Ghidra projects. It utilizes the YAJSW Java service wrapper and provides OS-specific scripts for running as a system service.
Only a single server instance should run against any given repositories directory. Running concurrent instances may lead to data corruption.

Architecture

The Ghidra Server is incorporated into the standard Ghidra distribution:
  • Unpack Ghidra distribution
  • Configure server settings
  • Perform OS-specific installation
  • Start the service

Server Configuration

Editing server.conf

Before installation, modify server/server.conf to configure:
1

Repositories Directory

Specify an absolute path outside the Ghidra installation:
2

Authentication Mode

Choose your authentication method (see User Authentication)
3

Network Settings

Configure IP addresses and ports if needed
4

Memory Allocation

Adjust wrapper.java.maxmemory based on your repository size
Use a repositories directory on locally attached storage for best performance. The server requires filesystem watcher support which may not work on remotely-mounted filesystems.

Memory Considerations

The server maintains in-memory state for all repositories. Calculate memory requirements:
There are no safeguards when insufficient memory is available. Out of memory errors can cause severe server failure.

User Authentication

Ghidra Server supports multiple authentication modes:

Authentication Modes

Any added user can connect without password.

SSH Authentication

When using -a0 mode with -ssh option, headless analyzers can authenticate via SSH keys:
Ghidra Server does not support OpenSSH key format or ecdsa/ed25519 key types. Use RSA with PEM format.

Server Options

Networking Options

hostname
Remote access hostname or IPv4 address for client connections
IP address
Bind server to specific IPv4 interface
port
default:"13100"
Base TCP port (server uses 3 consecutive ports)
flag
Enable reverse DNS lookup for IP addresses when logging

Authentication Options

number
Authentication mode: 0 (password), 1 (AD), 2 (PKI), 4 (JAAS)
domain
Active Directory domain name (e.g., -dmydomain.com)
days
default:"1"
Password expiration days (0 = no expiration)
flag
Allow specifying user ID at login time
flag
Auto-create users on successful authentication (AD and JAAS only)
flag
Enable anonymous read-only access to designated repositories

Installation and Management

Windows Installation

1

Install Service

Run svrInstall.bat with Administrator privileges
2

Start Service

Use Service Control Panel or:
3

Verify Status

Linux/macOS Installation

1

Set Java Home (Recommended)

Edit ghidraSvr script before installation:
2

Install Service

3

Start Service

Use a major-version symbolic link for Java path to survive Java updates:

Service Commands

Server Administration

The svrAdmin script manages users and repositories:

User Management

Repository Access

Repository Migration

Migrate from Mangled to Indexed filesystem storage:
Migration to Indexed filesystem is one-way. Backup repositories before proceeding.

Server Logs

The server produces two log files:
In console mode, wrapper.log output is directed to the terminal.

Repository Backup

1

Stop Server

2

Backup Directory

3

Restart Server

While backups can be taken while the server is idle, it’s safest to stop the server during backup operations.

Clearing Obsolete Checkouts

Admins can clear checkouts via Ghidra client or command line:
Be extremely careful with the find command. Incorrect parameters can delete important files.

PKI Certificates

Server Certificate Configuration

Edit server.conf to specify server keystore:

Managing Certificate Authorities

The cacerts file can be in PEM or JKS format:
CA certificates in PEM format should have an extra blank line after each END CERTIFICATE line when concatenating.

Upgrading Server

1

Backup

Backup repositories and configuration files
2

Uninstall Old Service

3

Extract New Version

Unzip new Ghidra distribution to new directory
4

Migrate Configuration

Copy wrapper.app.parameter.* lines from old to new server.conf
Do NOT copy entire server.conf file
5

Copy Repositories

If not using external directory, copy repositories to new installation
6

Install New Service

Troubleshooting

Common Issues

Symptom: non-JRMP server at remote endpointCause: Incompatible Ghidra client versionSolution: Ensure client and server versions are compatible
Symptom: ERROR Incorrect function (WindowsWatchService)Cause: Repositories not on NTFS/ReFS filesystemSolution: Move repositories to locally-mounted NTFS or ReFS volume
Symptom: Server fails to start as serviceSolution: Add to server.conf:
Symptom: Server won’t start on LinuxSolution: Disable SELinux in /etc/selinux/config
Symptom: SSL/PKI operations hangSolution: Install haveged daemon:

DNS Configuration

Both server and clients make extensive use of forward and reverse DNS lookups. Improperly configured DNS can cause severe performance delays.
The server publishes a remote access address and listens on interfaces:
  • Published Address: What clients use to connect (configurable via -ip)
  • Listening Address: Which network interfaces accept connections (configurable via -i)

Source Code References

Next Steps

Version Tracking

Use server for collaborative version tracking sessions

BSim

Store BSim databases on server for team access