Skip to content
NETMETRİKDocumentation

DocumentationLinux installation (NETMETRİK Server)

Linux installation (NETMETRİK Server)

NETMETRİK Server is a lightweight measurement server consisting of a single executable and one configuration file. Installation is end-to-end automatic with a single-line command: system checks, registration, DNS verification, TLS certificate (Let's Encrypt), capacity tuning, the systemd service and health checks — all handled by the script.

Last updated: 14 July 2026
Apply first
The install command is generated for an application that has not yet entered reviewin the portal. If you have not applied yet, first follow the application and approval process.

Supported platforms: Linux (x86_64, aarch64), macOS and FreeBSD. For installation, curl or wget together with sha256sum/shasum is enough.

Installation

  1. Get the install command from your application row

    In the portal, open your application's row in the Servers list and click Get install command. The command contains a single-use install key valid for 24 hours.

  2. Run the command on your server

    As a root (or sudo-privileged) user:

    Terminal
    curl -fsSL https://install.netmetrik.com/netmetrikserver.sh | sh -s -- \
      install --lang tr --token <ANAHTAR>

    If curl is not installed on your server (minimal Debian installs and Alpine usually ship without it), run the same install with wget:

    Terminal
    wget -q -O - https://install.netmetrik.com/netmetrikserver.sh | sh -s -- \
      install --lang tr --token <ANAHTAR>

    On Alpine, HTTPS needs a certificate store: apk add ca-certificates. Once the script is downloaded it uses whichever downloader the system has (curl, wget or fetch) for the remaining downloads, and stops with a clear message at the first step if none is present.

    The script runs 7 steps end to end and shows each one on screen:

    • System checks — tools, clock synchronization, ports 443/80, firewall (adding rules with your approval), disk, Let's Encrypt reachability,
    • downloads the package and verifies its SHA-256 digest (install directory defaults to /opt/netmetrik),
    • registers your application; writes the server identity to the NetmetrikServer.properties file,
    • verifies DNS — if the A record does not point to the server it stops with clear instructions, nothing is broken,
    • proposes a capacity/core tuning based on your line (applies it with your approval; a separate approval for BBR),
    • installs the systemd service (dedicated user, auto-start at boot) and starts it,
    • obtains the TLS certificate automatically from Let's Encrypt and finishes with a health check: "✅ YOUR SERVER IS LIVE".

    At the end, a summary of what was done is written to the screen and to the kurulum-raporu.txt file, and the raw log to the kurulum.log file. For a fully automatic install with no prompts, add --force --accept-terms to the command (silent installs require explicitly accepting the terms of service).

  3. Verify the result

    After installation you can re-run the health check at any time:

    Terminal
    /opt/netmetrik/netmetrikserver.sh selftest

    When you open https://alanadiniz/ in a browser you should see the NetmetrikServer welcome page with a valid (green padlock) certificate.

Registering an already-installed server (re-adding)

If NetmetrikServer is already installed on the machine — for example you removed a server from the platform and are re-adding it with a new application — do not reinstall. Registration alone is enough; it binds the existing installation to your new application with the new key:

Terminal
curl -fsSL https://install.netmetrik.com/netmetrikserver.sh | sh -s -- \
  register --lang tr --token <KEY>

If the management script from the previous installation is still on the machine, you can run it directly instead: /opt/netmetrik/netmetrikserver.sh register --token <KEY>. After a successful registration the script also offers to install and start the systemd service if it is not present. Note: a re-added server is a new recordon the platform — until this registration runs, the panel shows "no installation linked to this application yet" even though the software is installed, because the existing installation still belongs to the retired record.

TLS is fully automatic
The certificate is obtained from Let's Encrypt during installation and is renewed automatically before it expires — no certbot or manual certificate is needed. Exceptions: if you want to use your own certificate, enter the server.tls.cert/server.tls.key paths (they take precedence); if nginx/Caddy/Cloudflare terminates TLS, the script detects this itself and, with your approval, switches to server.plainHTTP = true mode.

Configuration keys

The most commonly used keys in NetmetrikServer.properties. Other keys (rate limiting, trusted proxies, origin list) are documented with comments in the file; the defaults are suitable for production.

KeyDescription
server.hostnameRegistered domain name — the script writes it automatically; do not change it by hand.
server.controlPlaneTokenHeartbeat key unique to this server — the script writes it automatically; do not share it.
server.listenListen address — the install sets it automatically (:443 for production TLS, :8080 behind a reverse proxy).
server.autoTLSAutomatic certificate (Let's Encrypt) — default enabled; disabled if manual certificate paths are entered.
server.acmeEmailEmail for certificate notifications (recommended, not required).
server.socketBufferTCP buffer setting: auto (computed from your line, default) / off / a byte value. The concurrency ceiling is also derived automatically from the hardware.
server.heartbeatIntervalStatus signal interval, in seconds (default 30).
server.logFileLog file and its rotation frequency (server.logRotation).
Protect the identity key
server.controlPlaneToken identifies this server only. Do not copy it to another machine; each server must obtain its own key from its own install command.

Management commands

The install script is also the management tool. The commands locate the install directory themselves from the systemd registration; still, running them from within cd /opt/netmetrik is the cleanest approach:

CommandFunction
/opt/netmetrik/netmetrikserver.sh statusRunning status and version
/opt/netmetrik/netmetrikserver.sh selftestHealth check: process + public HTTPS + certificate
/opt/netmetrik/netmetrikserver.sh checkdnsVerifies the domain's A/AAAA record
/opt/netmetrik/netmetrikserver.sh preflightRe-runs the system checks
/opt/netmetrik/netmetrikserver.sh tuneCapacity check + core tuning (re-runnable)
/opt/netmetrik/netmetrikserver.sh restartRestart (via systemd on a systemd install)
/opt/netmetrik/netmetrikserver.sh updateUpdate to the latest version (automatic rollback if it fails)
/opt/netmetrik/netmetrikserver.sh autoupdate-offDisable automatic updates (on by default at install; re-enable: autoupdate-on)
/opt/netmetrik/netmetrikserver.sh installReinstall (settings preserved; also brings the binary up to date)
/opt/netmetrik/netmetrikserver.sh service-removeRemove the systemd service (files stay in place)
/opt/netmetrik/netmetrikserver.sh uninstallStop and fully remove (core tuning is reverted)

Updating

Updates are automatic by default: installation enables a daily check at a random time, and if an update fails the previous version is restored automatically. You normally don't need to do anything. To check and update manually:

Terminal
/opt/netmetrik/netmetrikserver.sh update

To opt out, use --no-autoupdate during installation or run /opt/netmetrik/netmetrikserver.sh autoupdate-off afterwards (re-enable with autoupdate-on). Re-running the install command also updates the binary while preserving your settings.

Verification and logs

  • /opt/netmetrik/netmetrikserver.sh selftest — tests the process, public HTTPS reachability and the certificate in a single command.
  • In the portal Servers list, the Health column shows Running on the first signal.
  • Logs: summary kurulum-raporu.txt, raw install log kurulum.log, service logs journalctl -u netmetrikserver.
Did the install stop at a step?
The script writes the reason and the fix command on screen at the step where it stopped (most common: the DNS record has not propagated yet — the script gives the full A-record instruction and resumes from where it left off with the same command). For detail, see kurulum.log and the troubleshooting section in the FAQ.