Standalone Deployment (Systemd)

We will use Ubuntu 22.04.1 as a base system. Of course, in general, you can use any Linux distribution.

Run the following commands:

apt-get update
apt-get install -y unzip openjdk-21-jdk
cd /opt
curl -o membrane.zip -L https://github.com/membrane/api-gateway/releases/download/v7.0.6/membrane-api-gateway-7.0.6.zip
unzip membrane.zip
rm membrane.zip
ln -sf membrane-api-gateway-7.0.6 membrane-api-gateway
addgroup --system membrane
adduser --system --group membrane
apt-get update
apt-get install -y unzip openjdk-21-jdk
cd /opt
curl -o membrane.zip -L https://github.com/membrane/api-gateway/releases/download/v7.0.6/membrane-api-gateway-7.0.6.zip
unzip membrane.zip
rm membrane.zip
ln -sf membrane-api-gateway-7.0.6 membrane-api-gateway
addgroup --system membrane
adduser --system --group membrane

Configure the Systemd-integration

Create a file called /etc/systemd/system/membrane.service with the following contents:

[Unit]
Description=Membrane
After=network-online.target
Requires=network-online.target

[Service]
ExecStart=/usr/bin/bash -c /opt/membrane-api-gateway/membrane.sh
WorkingDirectory=/opt/membrane-api-gateway
Restart=always
RestartSec=10s
TimeoutSec=60
User=membrane
Group=membrane

[Install]
WantedBy=multi-user.target
[Unit]
Description=Membrane
After=network-online.target
Requires=network-online.target

[Service]
ExecStart=/usr/bin/bash -c /opt/membrane-api-gateway/membrane.sh
WorkingDirectory=/opt/membrane-api-gateway
Restart=always
RestartSec=10s
TimeoutSec=60
User=membrane
Group=membrane

[Install]
WantedBy=multi-user.target

Configure Logging

For example, to log everything to stdout (which gets collected by Systemd and which can be monitored using journalctl -u membrane.service), replace /opt/membrane-api-gateway/conf/log4j2.xml by

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d{ABSOLUTE} %5p %tid %tn %c{1}:%L - %m%n" />
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="STDOUT" />
</Root>
</Loggers>
</Configuration>
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{ABSOLUTE} %5p %tid %tn %c{1}:%L - %m%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="STDOUT" />
        </Root>
    </Loggers>
</Configuration>

Configure Membrane

To customize your installation, you would change /opt/membrane-api-gateway/conf/apis.yaml. In this demo, we use the default configuration.

Start Membrane

systemctl daemon-reload
systemctl start membrane

Check, whether Membrane started correctly

You might want to monitor the system log, or run

curl -v http://localhost:2000

Activate auto-start for Membrane

systemctl enable membrane

Ongoing tasks

  • It is advised to keep Membrane up to date.
  • It is advised to keep Java up to date.
  • It is advised to keep your base system up to date.