BridgeLink Quick Start Guide Linux
For New Installations of BridgeLink 26.9.0
About This Guide
BridgeLink is Innovar Healthcare's integration platform. It moves messages between the systems in your organization and lets you build, run and watch those connections, called channels, from a web browser.
The steps here take one Linux server from download to a running BridgeLink 26.9.0 server that you manage in WebAdmin.
If you would like a hand with any part of the install, Innovar Healthcare's professional services team can help with as much or as little of it as you want.
What You Install
| Piece | What it is | Runs as | Default port |
|---|---|---|---|
| BridgeLink server | The integration platform itself: your channels and the service that runs them | A systemd service under a dedicated, non-root account | 8443 (HTTPS) and 8080 (HTTP) |
| WebAdmin | The browser-based tool you use to manage the server | The systemd service bridgelink-webadmin, which runs as root | 8444 (HTTPS) |
| Database | Where BridgeLink keeps channels, messages, events, users and settings | Your own PostgreSQL, MySQL, SQL Server or Oracle database | Set by your database |
Open port 8443 on the BridgeLink server to other machines only if WebAdmin runs on another machine or other programs call the BridgeLink API. Channels that listen for connections, such as MLLP or HTTP listeners, need their own ports opened. Port 8080 is BridgeLink's plain-HTTP port; nothing in this guide uses it, so keep it closed to other machines.
systemd is the part of Linux that starts and watches background services. HTTPS is the encrypted form of a web connection.
Decide These First
- Which database BridgeLink uses. Use your own external database, not the default Derby database. See Choosing and Connecting the Database. Have an empty database and a login for BridgeLink ready before you install.
- Which account runs the BridgeLink service. Use a dedicated system account, for example
bridgelink, neverroot. See The Service Account. - Which package you install. See Choosing a Package.
Requirements
- A 64-bit Linux server with systemd
sudorights on the server- Java 21 (recommended) or Java 17, for every package, including the RPM package, which does not install it. See Before You Install in Installing BridgeLink for the builds you can use
- An external database server with an empty database for BridgeLink
- For WebAdmin: Node.js 22, which the WebAdmin installer can install for you on RHEL 8 or later, Amazon Linux 2023, Fedora, Ubuntu and Debian
- A current browser for WebAdmin: Chrome, Edge or Firefox 120 or later, or Safari 17 or later
Getting the Software
BridgeLink downloads are on the BridgeLink website. Customers with an Innovar Healthcare customer portal account can also download them from the portal.
- On any computer, open
https://www.bridgelink.net/downloadin a browser. - Select Linux.
- Find the BridgeLink Server card and confirm it shows version
26.9.0. - Choose the package you want from the table below.
- On the server, set the download address for 26.9.0:
BASE=https://bridgelink-downloads.s3.us-east-2.amazonaws.com
BASE=$BASE/bridgelink-server/26.9.0/linux- Download the package you chose, with one of these commands:
curl -fLO "$BASE/BridgeLink_linux_26_9_0.rpm"curl -fLO "$BASE/BridgeLink_unix_26_9_0.tar.gz"curl -fLO "$BASE/BridgeLink_unix_26_9_0.sh"These download the 26.9.0 packages directly. The download page shows only the latest version. For another version, click All versions on the page, copy the link of the package you want, and use it with curl -fLO instead.
- Check that the file arrived:
ls -lIf the server has a desktop, you can download the file in its browser instead. If you downloaded on another computer, copy the file to the server, for example into your home folder.
You do not need a separate WebAdmin download. All three packages put the WebAdmin installer, BridgeLink-WebAdmin-install.tar.gz, in /opt/BridgeLink. Its name differs from the website's WebAdmin download, BridgeLink-WebAdmin-26.9.0-install.tar.gz. You run it after BridgeLink is installed.
Choosing a Package
| Package | What you get | Use it when |
|---|---|---|
| RPM package (.rpm) | Installs to /opt/BridgeLink, creates the bridgelink system account, and installs a systemd service named blservice that runs as that account. Needs Java installed first (Java 21 recommended). | Red Hat Enterprise Linux 9, Rocky Linux 9 or AlmaLinux 9 on x86_64. Recommended there. |
| Archive (.tar.gz) | The BridgeLink files only. You add Java, the account and a systemd service yourself, with the steps below. | Any other distribution, or when you want full control of the layout |
| Installer (.sh) | A guided setup, run as root, that asks for the install folder, ports and service account, and registers a service that runs as that account | You prefer a guided setup |
Installing BridgeLink
Install Java first (Before You Install), then follow the section for the package you chose. Each one ends with BridgeLink installed in /opt/BridgeLink and owned by the bridgelink service account. A systemd service named blservice is set to run as that account. The archive and the installer leave it stopped; the RPM package starts it right away, so stop it before you connect the database (step 2 of RPM Package). You connect the database before the first start.
Before You Install
Install Java 21 on the server first, whichever package you chose. None of the packages installs it for you. Java 21 is recommended. Use one of these builds:
- Your distribution's OpenJDK 21 package
- Eclipse Temurin 21, from Adoptium
- Amazon Corretto 21
- Azul Zulu 21
Java 17 is also supported with an external database; the default Derby database needs Java 21. Do not install a Java newer than 21: BridgeLink 26.9 does not use one.
To install your distribution's OpenJDK 21 package, run the command for your system.
Red Hat Enterprise Linux, Rocky Linux and AlmaLinux:
sudo dnf install java-21-openjdk-headlessAmazon Linux 2023:
sudo dnf install java-21-amazon-corretto-headlessUbuntu 22.04, Ubuntu 24.04 and Debian 13:
sudo apt update && sudo apt install openjdk-21-jre-headlessDebian 12 has no OpenJDK 21 package. On Debian 12, install Eclipse Temurin 21 from Adoptium's apt repository, or use Java 17 with an external database.
RPM Package
- Install the package:
sudo dnf install ./BridgeLink_linux_26_9_0.rpm- The package starts BridgeLink right away. Stop it until the database is connected:
sudo systemctl stop blserviceThe package creates the bridgelink account, gives it the /opt/BridgeLink folder, and installs the systemd service blservice, set to run as bridgelink.
Stop the service within a few seconds. If BridgeLink runs longer, it completes a first start on the default Derby database before your database is connected: it creates its keystore and appdata/server.id, and writes the keystore passwords into conf/mirth.properties. That does no harm, and you carry on with the next chapter as written. Your own database is still empty, and BridgeLink creates its tables there on the start in Starting BridgeLink for the First Time.
Archive (.tar.gz)
- Create the service account:
sudo useradd -r -s /sbin/nologin bridgelink- Extract the archive into
/opt. It creates/opt/BridgeLink:
sudo tar -xzf BridgeLink_unix_26_9_0.tar.gz -C /opt- Give the service account the BridgeLink folder:
sudo chown -R bridgelink:bridgelink /opt/BridgeLink- Open a new service file in a text editor as root. This guide uses
vifor every file it has you edit; any editor you prefer works the same way:
sudo vi /etc/systemd/system/blservice.service- Press
ito start typing, then enter this content:
[Unit]
Description=BridgeLink
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=bridgelink
Group=bridgelink
NoNewPrivileges=true
WorkingDirectory=/opt/BridgeLink
ExecStart=/opt/BridgeLink/blserver
KillSignal=SIGTERM
KillMode=mixed
SuccessExitStatus=143
TimeoutStopSec=60
Restart=on-failure
RestartSec=10
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target- Press
Esc, type:wq, and pressEnterto save the file and quit. - Tell systemd about the new service:
sudo systemctl daemon-reloadSuccessExitStatus=143 tells systemd that the exit code BridgeLink gives when you stop it is a success. Without it, a normal sudo systemctl stop blservice is recorded as a failure.
The RPM package and the installer name their service blservice too, so the commands in this guide are the same for every package.
Installer (.sh)
On a server with no desktop, the installer runs in the terminal and asks each question there. Press Enter to keep the value it offers, except where a step below says to type something else.
- Make the installer runnable:
chmod +x BridgeLink_unix_26_9_0.sh- Run it as root:
sudo ./BridgeLink_unix_26_9_0.sh- Keep the install folder
/opt/BridgeLink. If the installer offers a different folder, change it to/opt/BridgeLinkso the paths in this guide match. - On Linux Service Account, keep Run the service as set to Dedicated service user, and keep User name set to
bridgelink. The installer creates that account if it does not exist, gives it the BridgeLink folder, and sets theblserviceservice to run as it. Do not choose root (not recommended): BridgeLink refuses to run asrootunlessserver.allowRootis set totrue, so a service set to root will not start. The Service Account explains why. - On BridgeLink Administrator Ports, keep Administrator Port at
8443and Web Start Port at8080. - On Install Plugins to BridgeLink, press
Enterwithout typing a list, to install no plugins. - At Run BridgeLink?, type
nand pressEnter. PressingEnteralone means Yes, which would start BridgeLink on the default Derby database before you connect yours.
The installer shows the command for installing WebAdmin above the Run BridgeLink? prompt (a line about the service account sits between them). Installing WebAdmin covers that step.
Choosing and Connecting the Database
Every BridgeLink server keeps its channels, messages, events, users and settings in one database. You choose which database in /opt/BridgeLink/conf/mirth.properties, and you make that choice before BridgeLink starts for the first time.
Use an External Database, Not Derby
BridgeLink ships set to the default Derby database. Derby needs no setup, which makes it handy for a short test. Do not use it for a server you plan to keep:
- Requires Java 21. BridgeLink 26.9 will not start a server on the default Derby database with any Java older than 21. It stops at once and writes this line to
logs/mirth.log:embedded Derby requires Java 21+ as of 26.9; upgrade Java or switch to an external database. No setting turns this check off. - Runs inside BridgeLink. Derby lives in the same process as the server, so no other tool can open the database while BridgeLink runs, and backing it up means copying its files.
- Lacks features. The default Derby database does not support the JSON value type in Lookup Manager or regex search in Message Browser. SQL Server does not support regex search either.
- Sized for evaluation. For production message volumes, use PostgreSQL, MySQL, Microsoft SQL Server or Oracle.
An external database also fits the backup, monitoring and security routines your team already runs.
Prepare the Database
- On your database server, create an empty database for BridgeLink, for example
bridgelinkdb. - Create a login for BridgeLink that owns that database and can create tables in it.
BridgeLink creates all of its tables the first time it starts. You do not run any scripts.
Point BridgeLink at the Database
Steps 2 and 3 use the values in this table:
| Database | database value | database.url pattern |
|---|---|---|
| PostgreSQL | postgres | jdbc:postgresql://dbhost:5432/bridgelinkdb |
| MySQL | mysql | jdbc:mysql://dbhost:3306/bridgelinkdb |
| Microsoft SQL Server | sqlserver | jdbc:sqlserver://dbhost:1433;databaseName=bridgelinkdb |
| Oracle | oracle | jdbc:oracle:thin:@//dbhost:1521/servicename for a service name (pluggable databases), or jdbc:oracle:thin:@dbhost:1521:SID for a SID |
Replace dbhost, the port and the database name (for Oracle, the service name or SID) with your own. A finished PostgreSQL example looks like this:
database = postgres
database.url = jdbc:postgresql://db01.example.org:5432/bridgelinkdb
database.username = bridgelink
database.password = your-password-here- Open the settings file in a text editor as root. This guide uses
vi; any editor you prefer works the same way:
sudo vi /opt/BridgeLink/conf/mirth.properties- Press
ito start editing. Find the linedatabase = derbyand changederbyto the value for your database from the table above. - Change the
database.urlline to your database's address, using the pattern in the table. - Set
database.usernameto the BridgeLink login. - Set
database.passwordto that login's password. - Press
Esc, type:wq, and pressEnterto save the file and quit. - Check that the file still belongs to the service account and that others cannot read it:
sudo chown bridgelink:bridgelink /opt/BridgeLink/conf/mirth.properties
sudo chmod 600 /opt/BridgeLink/conf/mirth.propertiesLeave the other lines as they are for now. The https.port and http.port lines hold your ports, and the keystore lines are managed by BridgeLink.
The Service Account
The BridgeLink service runs in the background under one Linux account. That account decides what BridgeLink can reach on the machine and on your network.
Why Not Root
Channels can run scripts. If the service runs as root, any script in any channel has full control of the machine. So BridgeLink refuses to start as root by default, and the log shows:
ERROR: BridgeLink is running as root/Administrator.
The setting behind this is server.allowRoot = false in conf/mirth.properties. Leave it set to false.
The service account needs:
- Ownership of the BridgeLink folder, because BridgeLink writes its logs, its
appdatafolder andconf/mirth.propertiesthere - Read and write access to any folders your channels read from or write to
- Network access to the database and to the systems your channels connect to
Every install path in this guide sets this up for the bridgelink account. The RPM package and the installer do it for you; the archive steps do it by hand.
How the Service Runs as the Account
The RPM package and the installer set the blservice service to run as bridgelink with a small settings file, /etc/systemd/system/blservice.service.d/10-bridgelink-user.conf. It sets User= and Group=, and also NoNewPrivileges=true, which stops channel scripts from gaining extra rights through sudo or similar tools.
They rewrite that file on every upgrade, so do not edit it. To change the account, or any other service setting, use sudo systemctl edit blservice as shown in Changing the Account After Install. Settings made that way take priority.
On the archive path, the service file you created sets User=, Group= and NoNewPrivileges=true directly.
Check Which Account BridgeLink Runs As
After the service starts, confirm which account it is running as:
pid="$(systemctl show -p MainPID --value blservice)"
[ "$pid" -gt 0 ] && ps -o user= -p "$pid" || echo "not running"The command prints the account, which should be bridgelink (or the account you chose), or not running if the service is stopped. The account prints even while BridgeLink is failing and restarting, so also confirm that it started. The newest line that contains Web server running at is the one to trust:
sudo journalctl -u blservice | grep 'Web server running at' | tail -1Changing the Account After Install
Suppose BridgeLink runs as one account and you switch it to another, for example from bridgelink to svc-integration. The files BridgeLink writes still belong to the old account. The new account cannot write its logs, its keystore or its settings, so the service fails at startup or soon after, and the log or the journal shows Permission denied errors.
To switch accounts and fix the permissions:
- Create the new account, if it does not exist yet:
sudo useradd -r -s /sbin/nologin svc-integration- Stop the service:
sudo systemctl stop blservice- Open an override for the service:
sudo systemctl edit blservice- Set the new account and group. The installer already sets
NoNewPrivileges=true, and your override keeps it; repeating the line in the override makes that explicit:
[Service]
User=svc-integration
Group=svc-integration
NoNewPrivileges=true- Save and close the editor.
- Give the new account the BridgeLink folder:
sudo chown -R svc-integration:svc-integration /opt/BridgeLink- Give the new account the same access to any folders your channels use.
- Start the service:
sudo systemctl start blservice- Check the account with the command in Check Which Account BridgeLink Runs As above.
Starting BridgeLink for the First Time
Start the service once the database is connected and the service account is set.
- Start BridgeLink and set it to start at boot:
sudo systemctl enable --now blservice- Wait about a minute.
- Look at the state of the service:
systemctl status blservice- Find the newest line that contains
Web server running at:
grep 'Web server running at' /opt/BridgeLink/logs/mirth.log | tail -1- Check that the time on that line is after the start you just made. That line is the sign that BridgeLink started.
- Find the newest line that contains
Running, to check the database name and Java version:
grep 'Running ' /opt/BridgeLink/logs/mirth.log | tail -1- Confirm the line names your database, not
derby. It also names the Java version and the operating system.
An active (running) state is not enough. If BridgeLink fails to start, systemctl status can show the service as failed, or, for a service set to restart after each failure, as active (running) most of the time even while startup keeps failing. The Web server running at line is the reliable sign that BridgeLink started. The Running line alone is not enough either: BridgeLink still prints it when it cannot read its keystore, and port 8443 then refuses connections.
If the Web server running at line is missing or old, look for the reason in the log, and see Troubleshooting:
grep ERROR /opt/BridgeLink/logs/mirth.log | tail -5The service's own console output is in the journal: journalctl -u blservice.
On this first start, BridgeLink:
- Creates its tables in your database
- Creates a keystore holding a new self-signed certificate for port
8443, and writes new keystore passwords intoconf/mirth.properties - Creates the
appdata/server.idfile that holds this server's unique ID
If an RPM install ran for more than a few seconds before you stopped it, the keystore and server.id already exist and BridgeLink keeps them.
Memory for the BridgeLink Server
BridgeLink starts with a 256 MB Java heap, which is enough for a personal or test install but small for production. To raise it:
- Find the memory settings file for your package:
- For the RPM package and the installer (.sh), whose service runs
blservice:/opt/BridgeLink/blservice.vmoptions - For the archive, whose service file in Installing BridgeLink runs
blserver:/opt/BridgeLink/blserver.vmoptions
- For the RPM package and the installer (.sh), whose service runs
- Open that file as root. For the RPM package and the installer (.sh):
sudo vi /opt/BridgeLink/blservice.vmoptionsFor the archive:
sudo vi /opt/BridgeLink/blserver.vmoptions- Press
ito start editing. Change the-Xmxline, for example to-Xmx1g. Leave memory free for the operating system and the database. - Press
Esc, type:wq, and pressEnterto save the file and quit. - Restart BridgeLink:
sudo systemctl restart blserviceInstalling WebAdmin
WebAdmin is the browser-based tool you use to manage BridgeLink. It runs as its own small service, next to BridgeLink, and nobody needs to install anything on their own computer to use it. WebAdmin is a small web application run by Node.js: it serves the pages you see in the browser and passes each request on to BridgeLink. It contains no Java.
On Linux, WebAdmin is a separate step with its own installer. You run it after BridgeLink is installed, from the BridgeLink-WebAdmin-install.tar.gz archive that every BridgeLink package puts in /opt/BridgeLink.
Run the WebAdmin Installer
WebAdmin needs Node.js 22, and the installer checks. If Node.js is missing or a different version, the installer shows a Choose an option: menu. What happens next depends on your server:
- If Node.js is missing, option 1 adds the NodeSource and N|Solid package repositories to the server and installs Node.js 22 system-wide. That changes Node.js for every program on the server.
- If you run Ubuntu or Debian and the distribution's Node.js is older than 22, option 1 replaces it for the whole server
- On Red Hat family systems, or when the Node.js at
/usr/bin/nodeis newer than 22, choosing option 1 stops the installer without changing anything and tells you what to do: remove that Node.js, or install Node.js 22 in a folder of its own. Option 2 still works once Node.js 22 is in a folder of its own. - If other software on the server uses Node.js, install Node.js 22 in its own folder. Then choose option 2 at the menu, or start the installer with
sudo NODEJS_HOME=<folder that holds Node.js 22's bin/node> bash bridgelink-webadmin/install.shinstead of the command in step 3.
- Go to the BridgeLink folder:
cd /opt/BridgeLink- Extract the WebAdmin archive there. It creates a
bridgelink-webadminfolder:
sudo tar -xzf BridgeLink-WebAdmin-install.tar.gz- Run the installer:
sudo bash bridgelink-webadmin/install.sh- Read the license terms it points to,
LICENSEandSUPPLEMENTAL-TERMS.txt. - At
Do you accept the license terms? [y/N]:, typey. - If the installer shows
Choose an option:for Node.js, pressEnterto choose1) Install Node.js 22 now. Read the list above first: this option changes Node.js for the whole server. - At
Enter the port for BridgeLink WebAdmin [default: 8444]:, pressEnter. - At
Select the BridgeLink deployment model:, type1forSame Host (Recommended). - At
Enter the BridgeLink engine HTTPS port [default: 8443]:, pressEnterunless you changed BridgeLink's HTTPS port. If you did, type that port.

While it creates the WebAdmin certificate, the installer prints a long run of .+...+++* characters. Expect it: it is not an error.
The installer:
- Copies WebAdmin to
/opt/bridgelink-webadminand writes/opt/bridgelink-webadmin/webadmin.conf - Creates a self-signed certificate for WebAdmin at
/opt/bridgelink-webadmin/cert.pemandkey.pem - Installs and starts the systemd service
bridgelink-webadmin - Installs the
blwebadmincommand in/usr/local/bin
The WebAdmin service runs as root, and everything the installer creates belongs to root, so stopping or restarting WebAdmin takes sudo. Control the service with systemctl, for example sudo systemctl restart bridgelink-webadmin; stop, start and status work the same way. On Red Hat family systems, sudo cannot find the blwebadmin command, so this guide does not use it. WebAdmin writes its output and errors to the systemd journal: sudo journalctl -u bridgelink-webadmin -n 50.
If a firewall runs on the server, allow port 8444 so users on other computers can reach WebAdmin. With firewalld, which Red Hat family systems use, run:
sudo firewall-cmd --add-port=8444/tcp --permanent
sudo firewall-cmd --reloadTo put WebAdmin on a different machine, run the same installer there and choose 2) Dedicated Host – Single Server with this server's address.
Sign In for the First Time
- Open
https://your-server-name:8444in a browser. - If the browser shows a certificate warning, click Advanced, then Proceed to ... (unsafe) in Chrome or Continue to ... (unsafe) in Edge. In Firefox, click Advanced, then Accept the Risk and Continue. Read the note after this step.
- In Username, type
admin. - In Password, type
admin. - Click Login.
- On Welcome to BridgeLink, leave Username as
admin. - In New Password, type a new password of at least 8 characters, with an uppercase letter, a lowercase letter, a number, and a special character such as
!,@,#,$,%or*. A hyphen, period or space does not count as a special character, and the password cannot beadmin. WebAdmin lists only the rules thatadminbreaks, so check your password against all of these. - Type it again in Confirm Password.
- The profile fields on Welcome to BridgeLink are optional; fill them in if you want to.
- Click Save & Continue.

With Same Host (Recommended), the Server field is filled in and cannot be changed: WebAdmin talks only to the BridgeLink server on the same machine. To point it somewhere else, change BRIDGELINK_SERVER_URL in /opt/bridgelink-webadmin/webadmin.conf and run sudo systemctl restart bridgelink-webadmin.
More WebAdmin Setups
For WebAdmin on another machine, one WebAdmin for several servers, your own certificate, and every setting, see the BridgeLink WebAdmin Setup Guide on the BridgeLink download page, https://www.bridgelink.net/download.
Finding the Server ID
Every BridgeLink server has a unique server ID, created the first time it starts. Plugin licenses are issued against this ID, so Innovar Healthcare asks for it when you license a plugin.
In WebAdmin
- Sign in to WebAdmin.
- In the left sidebar, scroll to the bottom and, under Help, click About BridgeLink.
If Update Available opens instead, click Got it, then click About BridgeLink again.
- Click the copy icon beside Server ID.

On Disk
The same ID is in /opt/BridgeLink/appdata/server.id, on a line that reads server.id = followed by the ID:
sudo cat /opt/BridgeLink/appdata/server.idBack up /opt/BridgeLink/appdata/server.id, /opt/BridgeLink/appdata/keystore.jks and /opt/BridgeLink/conf/mirth.properties together. The keystore holds the key BridgeLink uses to encrypt data, and mirth.properties holds the keystore's passwords. If you rebuild the server and put server.id back, the server keeps its ID and its plugin licenses. Without the file, BridgeLink creates a new ID. The RPM package starts BridgeLink as soon as it installs, so put server.id back with BridgeLink stopped:
- Stop BridgeLink:
sudo systemctl stop blservice- Copy your saved file to
/opt/BridgeLink/appdata/server.id. - Give the file to the service account:
sudo chown bridgelink:bridgelink /opt/BridgeLink/appdata/server.id- Start BridgeLink:
sudo systemctl start blserviceReplacing the Certificates
A new install uses two self-signed certificates (certificates the server creates for itself, which browsers do not trust), which is why browsers warn the first time. Before you use BridgeLink in production, replace them with certificates from your organization's certificate authority (CA).
| Certificate | Port | Who sees it | Where it lives |
|---|---|---|---|
| WebAdmin | 8444 | Every browser that opens WebAdmin | /opt/bridgelink-webadmin/cert.pem and key.pem |
| BridgeLink server | 8443 | WebAdmin and any program that calls the BridgeLink API | The mirthconnect entry in /opt/BridgeLink/appdata/keystore.jks |
Most organizations replace the WebAdmin certificate first, since that is the one users see in their browsers.
Replace the WebAdmin Certificate
Before you replace WebAdmin's certificate, read When a browser stops letting you click through under Sign In for the First Time in Installing WebAdmin.
You need the certificate and its private key as PEM files (text files that begin with -----BEGIN). Put any intermediate certificates in the certificate file after the server certificate. The private key file must not have a password.
- Stop WebAdmin:
sudo systemctl stop bridgelink-webadmin- Keep copies of the current files:
sudo cp /opt/bridgelink-webadmin/cert.pem /opt/bridgelink-webadmin/cert.pem.bak
sudo cp /opt/bridgelink-webadmin/key.pem /opt/bridgelink-webadmin/key.pem.bak- Copy your certificate over
cert.pem:
sudo cp your-certificate.pem /opt/bridgelink-webadmin/cert.pem- Copy your private key over
key.pem:
sudo cp your-private-key.pem /opt/bridgelink-webadmin/key.pem- Start WebAdmin:
sudo systemctl start bridgelink-webadmin- Open WebAdmin in a browser and confirm there is no certificate warning.
To Undo the Swap
If browsers cannot open WebAdmin after the swap, put the old certificate back:
- Stop WebAdmin:
sudo systemctl stop bridgelink-webadmin- Copy the two backup files back:
sudo cp /opt/bridgelink-webadmin/cert.pem.bak /opt/bridgelink-webadmin/cert.pem
sudo cp /opt/bridgelink-webadmin/key.pem.bak /opt/bridgelink-webadmin/key.pem- Start WebAdmin:
sudo systemctl start bridgelink-webadminPort 8444 serves the original certificate again.
Browsers that opened WebAdmin by its server name with the new certificate refuse the old self-signed one. Fix the new certificate instead, or clear the browser's HSTS entry for the server name: open chrome://net-internals/#hsts in Chrome or edge://net-internals/#hsts in Edge, and use Delete domain security policies. In other browsers, clear the browsing data for that server name.
Replace the BridgeLink Server Certificate
BridgeLink keeps its certificate in a keystore file under the name mirthconnect. The same keystore also holds the key BridgeLink uses to encrypt data, so replace only the mirthconnect entry. Never swap in a different keystore file.
You need the certificate and private key as a PKCS12 file (a single file, ending in .p12 or .pfx, that bundles a certificate with its private key) and its password. The commands use keytool, which comes with Java. Each command below has placeholders in angle brackets, such as <your keystore.storepass value>. Replace each one, including the angle brackets, with the value described under the command. If a value contains characters the shell treats specially, put it in single quotes.
- Stop BridgeLink:
sudo systemctl stop blservice- Back up the keystore:
sudo cp /opt/BridgeLink/appdata/keystore.jks /root/keystore.jks.bak- Note the values of
keystore.storepassandkeystore.keypass. You use them in steps 5 and 6:
sudo grep '^keystore\.' /opt/BridgeLink/conf/mirth.properties- List the entry name inside your PKCS12 file. Type the file's password when keytool asks; nothing shows as you type:
keytool -list -keystore server.p12 -storetype PKCS12- Remove the old certificate entry. Do this before step 6: otherwise keytool asks whether to overwrite the existing entry, and pressing
Enterkeeps the old certificate:
sudo keytool -delete -alias mirthconnect \
-keystore /opt/BridgeLink/appdata/keystore.jks -storetype JCEKS \
-storepass <your keystore.storepass value>Replace <your keystore.storepass value> with the keystore.storepass value that step 3 showed.
- Import yours as
mirthconnect:
sudo keytool -importkeystore \
-srckeystore server.p12 -srcstoretype PKCS12 \
-srcstorepass <your .p12 file password> \
-srcalias <the entry name from step 4> \
-destkeystore /opt/BridgeLink/appdata/keystore.jks -deststoretype JCEKS \
-deststorepass <your keystore.storepass value> \
-destalias mirthconnect \
-destkeypass <your keystore.keypass value>Replace the placeholders as follows:
<your .p12 file password>: the password of your PKCS12 file<the entry name from step 4>: the entry name that step 4 listed<your keystore.storepass value>: thekeystore.storepassvalue that step 3 showed<your keystore.keypass value>: thekeystore.keypassvalue that step 3 showed
Steps 5 and 6 print a warning that recommends migrating the keystore to PKCS12. Ignore it: BridgeLink reads the keystore as JCEKS, so do not convert it.
- Give the keystore back to the service account:
sudo chown bridgelink:bridgelink /opt/BridgeLink/appdata/keystore.jks- Start BridgeLink:
sudo systemctl start blservice- Open
https://your-server-name:8443in a browser and confirm the browser shows your certificate.
If BridgeLink does not start, or port 8443 does not answer: stop BridgeLink, run sudo cp /root/keystore.jks.bak /opt/BridgeLink/appdata/keystore.jks, repeat the chown from step 7, and start BridgeLink.
WebAdmin keeps working through the change, with no change to its own settings.
The Data Pruner
BridgeLink keeps the messages each channel processes until the Data Pruner removes them. The Data Pruner is off on a new server, so turn it on before you send real traffic through BridgeLink; otherwise the database grows with every message.
It has two parts, and both have to be set:
- The schedule, for the whole server: in WebAdmin, in the left sidebar under Administration, click Settings, then the Data Pruner tab
- How long each channel keeps messages: on each channel's Summary tab, under Message Pruning. A channel whose pruning fields are blank is never pruned, even when the schedule is on.
Choose ages that match your organization's record-keeping rules.
Turn On the Schedule
- In WebAdmin, in the left sidebar under Administration, click Settings.
- Click the Data Pruner tab.
- Under Schedule, set Enable to Yes.
- Choose a Schedule Type and set when it runs: Interval runs every set number of hours or minutes, Time runs once a day, and Cron takes cron expressions. Once a day at a quiet hour suits most servers.
- Click Save.

Set How Long Each Channel Keeps Messages
- In the left sidebar under Build, click Channels.
- Double-click the channel to open it in the channel editor.
- On the Summary tab, under Message Pruning, enter the number of days in Prune metadata after and Prune content after. Content cannot be kept longer than metadata.
- Click Save.
- Repeat for each channel.

Incomplete and queued messages are never pruned. Errored messages are kept too, unless you check Prune errored messages.
Troubleshooting
| Symptom | Likely cause | What to do |
|---|---|---|
The service stops at once, and logs/mirth.log or journalctl -u blservice shows ERROR: BridgeLink is running as root/Administrator. | The service runs as root | Set User= and Group= to the service account. See The Service Account. |
The service stops at once, and the log shows embedded Derby requires Java 21+ as of 26.9; upgrade Java or switch to an external database | The server is still on the default Derby database, running on Java older than 21 | Connect an external database. See Point BridgeLink at the Database. |
The service fails, and the log or journal shows Permission denied | The service account does not own the files BridgeLink writes, often after an account change | Give the account the BridgeLink folder. See Changing the Account After Install. |
Browsers cannot reach port 8443, and the log has Could not initialize security settings | BridgeLink could not save its keystore passwords to conf/mirth.properties on first start | Give the service account ownership of conf/mirth.properties and restart the service. |
The log shows aborting startup, there is no Web server running at line, and systemctl status blservice shows failed, or active (running) while it keeps restarting | The database connection is failing: the database.url, login or password is wrong, or a firewall blocks the database port. SQL Server only: its certificate is self-signed, comes from an internal certificate authority, or does not match the host name in the URL, which BridgeLink 26.9 does not accept by default. | Check the four database lines in conf/mirth.properties and test the login from the BridgeLink server. See SQL Server and certificates in Choosing and Connecting the Database. BridgeLink retries twice, 10 seconds apart, before it gives up. Once you fix the cause, run sudo systemctl restart blservice. |
| WebAdmin sign-in shows "Could not reach the BridgeLink server. Verify the server address is correct and the server is running." | BridgeLink is not running, or WebAdmin points at the wrong BridgeLink port | Start BridgeLink. Compare the port in BRIDGELINK_SERVER_URL in /opt/bridgelink-webadmin/webadmin.conf with BridgeLink's HTTPS port. If they differ, correct it and run sudo systemctl restart bridgelink-webadmin. |
WebAdmin sign-in fails while BridgeLink is running, and sudo journalctl -u bridgelink-webadmin shows Upstream fetch failed for users/_login: TypeError: fetch failed | WebAdmin is running on a Node.js version other than 22 | Run the WebAdmin installer again (sudo bash bridgelink-webadmin/install.sh from /opt/BridgeLink), let it set up Node.js 22, and answer the prompts as before. |
| The browser warns about the certificate | WebAdmin still uses its self-signed certificate | Click through the warning, or replace the certificate. See Replace the WebAdmin Certificate. If the browser offers no way to continue, it is enforcing HSTS for that name. See When a browser stops letting you click through under Sign In for the First Time, and To Undo the Swap in Replacing the Certificates to clear it. |
sudo: blwebadmin: command not found | On Red Hat family systems, sudo does not search /usr/local/bin, where the installer puts blwebadmin | Use systemctl instead, for example sudo systemctl restart bridgelink-webadmin. If systemctl says the unit bridgelink-webadmin is not found, the WebAdmin installer did not finish: run it again. |
For more WebAdmin problems, see Troubleshooting in the BridgeLink WebAdmin Setup Guide.
Support
Customers with an active Innovar Healthcare support plan can contact support at support@innovarhealthcare.com. Include the BridgeLink version, the package you installed, your Linux distribution, what you were doing, and the most recent part of logs/mirth.log. mirth.log can contain message content, which may include patient data. Remove patient data before you send a log, or ask support for a secure way to send it.