Skip to main content

Installation

From Prebuilt Binaries

Go to the latest release page and download the archive corresponding to your Operating System and architecture, then:

tar xvf flowg-${VERSION}-${OS}-${ARCH}.tar.gz
sudo install -m 755 ./bin/flowg-server /usr/local/bin/flowg-server
note

Adjust the VERSION, OS and ARCH variables to the archive you downloaded.

Then, start the server with:

flowg-server

For more informations about the command line interface, please consult this document.

For more informations about the configuration, please consult this document.

From Sources

Requirements:

  • Go 1.22+
  • C Toolchain
  • Rust and Cargo (edition 2021)
  • NodeJS
  • gettext (for msgcat)

First fetch the source code:

git clone https://github.com/link-society/flowg
cd flowg

Then run the build system:

go install github.com/go-task/task/v3/cmd/task@latest
task build:all
sudo install -m 755 ./bin/flowg-server /usr/local/bin/flowg-server

Then start the server like you would do with prebuilt binaries.

Using Docker

docker run \
-p 5080:5080/tcp \
-p 9113:9113/tcp \
-p 5514:5514/udp \
-v flowg-data:/data \
linksociety/flowg:latest

Or if you are on ARM:

docker run \
-p 5080:5080/tcp \
-p 9113:9113/tcp \
-p 5514:5514/udp \
-v flowg-data:/data \
linksociety/flowg:latest-linux-arm
Data volume ownership

The container runs as the non-root user 10001:10001. A named volume (-v flowg-data:/data, as shown above) inherits the image's ownership and works out of the box. If you instead bind-mount a host directory (-v /srv/flowg:/data), run the container as the user that owns that directory with --user, otherwise the server can't create its data directories on first boot:

docker run \
--user "$(id -u):$(id -g)" \
-p 5080:5080/tcp \
-p 9113:9113/tcp \
-p 5514:5514/udp \
-v /srv/flowg:/data \
linksociety/flowg:latest

On Kubernetes, the bundled Helm chart already sets fsGroup: 10001 on the pod, so a freshly provisioned PersistentVolumeClaim is made writable automatically.

Security considerations

By default, the Syslog endpoint is open to everyone. If that behavior is undesirable, you can:

Configure Client certificate authentication

By using the Syslog protocol tcp+tls instead of udp (the default), you can require Client certificate authentication:

1) Create a configuration file config.hcl:

services {
syslog {
protocol = "tcp"

tls {
cert = "/path/to/cert.pem"
key = "/path/to/cert.key"
auth = true
}
}
}

2) Start the server with the configuration file:

flowg-server --config config.hcl

Configure allowed origins

Otherwise, you can restrict which IP address (or range) will be allowed:

Go to Settings > System Configuration > Allowed Syslog Origins and add IPs

Allowed Syslog Origins Configuration

Next Steps

Once deployed, FlowG creates a default pipeline and a default account with the credentials root / root.

You now have access to: