Repository files navigation

beegfs-rust

Contents

The purpose of this repository is twofold:

  • Provide Rust packages for interacting with BeeGFS.
  • Provide BeeGFS-related software written in Rust, such as the BeeGFS management service.

Getting Started

Prerequisites

  • If you just want to build/run the project without OS packages download and install Rust from rustup.
  • If you want to build packages you also need to run make install-tools.
    • Note this only installs the tooling needed for a local, native build and is insufficient for cross-compilation.

If you are interested in contributing to the project please refer to Getting Started with Rust in the project wiki.

Building (With or Without Packaging)

There are a few ways to build/run the BeeGFS management service:

  • The management can be built and run through cargo in one step:

    cargo run -p mgmtd -- --help

    Note the -- to separate management arguments from cargo arguments.

    Or build it and then run it:

    cargo build -p mgmtd
    ./target/debug/mgmtd --help

    Both ways are valid, in the below examples the first variant is used as it is quicker.

  • Build and install using OS packages: make package

    • Packages will be created under target/package/ that can be installed using dpkg -i <package> or similar.

Setting the binaries version output

One can define the output of the --version command at compile time by passing the VERSION environment to cargo. This can be set to a BeeGFS release version during a release build. Gets set to "unknown" if not given.

Run the management

The management server binary runs by itself, no additional installation needed. Some setup is necessary though as described below.

Provide a config file

The management can optionally read in a configuration file in TOML format. The default location is /etc/beegfs/beegfs-mgmtd.toml, can be set by --config-file.

The config file is ignored if not present - most configuration options can also be given by command line flags. The exceptions is quota.

Provide TLS certificates

Management requires a TLS certificate and its private key for encrypted gRPC communication:

  • A X.509 certificate file at /etc/beegfs/cert.pem. The default path be overridden by --tls-cert-file.
  • A private key file at /etc/beegfs/key.pem. The default path can be overridden by --tls-key-file.

The following can be used to setup a self signed certificate:

(1) Create a file san.cnf updating the alt_names to include all DNS names and/or IPs where the management is accessible:

[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_ca # The extensions to add to the self signed cert
[ req_distinguished_name ]
commonName = Common Name (eg, fully qualified host name)
commonName_default = localhost
[ req_ext ]
subjectAltName = @alt_names
[ v3_ca ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = localhost
IP.1 = 127.0.0.1

(2) Run the following command to generate the certificate and key:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pem -config san.cnf

(3) On the mgmtd install the key and cert at /etc/beegfs. On nodes with the CTL install the certificate to /etc/beegfs.

Alternatively, disable TLS using --tls-disable.

Provide BeeMsg authentication file

To use BeeMsg authentication, you have to provide the same BeeMsg authentication file used for the other nodes (formerly known as "connAuthFile"). The default location is /etc/beegfs/conn.auth, but can be overridden using --auth-file.

Alternatively, disable BeeMsg authentication using --auth-disable.

Set up the database

The management requires explicit initialization and database creation, which can be achieved by running it with the --init flag. The default database location at /var/lib/beegfs/mgmtd.sqlite is only writable by root, for playing around you might want to run management as user and provide an alternative path:

cargo run -p mgmtd -- --init --db-file=/tmp/mgmtd.sqlite

Run the server

Run the binary according to the preparations above. For example, for disabling BeeMsg authentication and using the generated TLS certificate for gRPC:

cargo run -p mgmtd -- --db-file=/tmp/mgmtd.sqlite --auth-disable --tls-cert-file=./mgmtd-cert.pem --tls-key-file=./mgmtd-key.pem

This logs to systemd. For playing around and debugging, it is advisable to log to stdout instead. To do that, provide the --log-target=std flag. For that purpose, the management uses env_logger. It can be configured by setting the RUST_LOG environment variable. For example, to log everything down to debug level:

RUST_LOG=debug cargo run -p mgmtd -- --db-file=/tmp/mgmtd.sqlite --auth-disable --tls-cert-file=./mgmtd-cert.pem --tls-key-file=./mgmtd-key.pem --log-target=std

env_logger can be configured relatively fine grained using RUST_LOG, look up its documentation for more details.

Remember that you can also provide these arguments (except for the RUST_LOG variable, of course) using a config file by specifying --config-file.

About

BeeGFS πŸ› οΈ software written in Rust such as the πŸ†• BeeGFS management service.

Resources

Contributing

Security policy

Stars

9 stars

Watchers

6 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

beegfs-rust

Contents

The purpose of this repository is twofold:

  • Provide Rust packages for interacting with BeeGFS.
  • Provide BeeGFS-related software written in Rust, such as the BeeGFS management service.

Getting Started

Prerequisites

  • If you just want to build/run the project without OS packages download and install Rust from rustup.
  • If you want to build packages you also need to run make install-tools.
    • Note this only installs the tooling needed for a local, native build and is insufficient for cross-compilation.

If you are interested in contributing to the project please refer to Getting Started with Rust in the project wiki.

Building (With or Without Packaging)

There are a few ways to build/run the BeeGFS management service:

  • The management can be built and run through cargo in one step:

    cargo run -p mgmtd -- --help

    Note the -- to separate management arguments from cargo arguments.

    Or build it and then run it:

    cargo build -p mgmtd
    ./target/debug/mgmtd --help

    Both ways are valid, in the below examples the first variant is used as it is quicker.

  • Build and install using OS packages: make package

    • Packages will be created under target/package/ that can be installed using dpkg -i <package> or similar.

Setting the binaries version output

One can define the output of the --version command at compile time by passing the VERSION environment to cargo. This can be set to a BeeGFS release version during a release build. Gets set to "unknown" if not given.

Run the management

The management server binary runs by itself, no additional installation needed. Some setup is necessary though as described below.

Provide a config file

The management can optionally read in a configuration file in TOML format. The default location is /etc/beegfs/beegfs-mgmtd.toml, can be set by --config-file.

The config file is ignored if not present - most configuration options can also be given by command line flags. The exceptions is quota.

Provide TLS certificates

Management requires a TLS certificate and its private key for encrypted gRPC communication:

  • A X.509 certificate file at /etc/beegfs/cert.pem. The default path be overridden by --tls-cert-file.
  • A private key file at /etc/beegfs/key.pem. The default path can be overridden by --tls-key-file.

The following can be used to setup a self signed certificate:

(1) Create a file san.cnf updating the alt_names to include all DNS names and/or IPs where the management is accessible:

[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_ca # The extensions to add to the self signed cert
[ req_distinguished_name ]
commonName = Common Name (eg, fully qualified host name)
commonName_default = localhost
[ req_ext ]
subjectAltName = @alt_names
[ v3_ca ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = localhost
IP.1 = 127.0.0.1

(2) Run the following command to generate the certificate and key:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pem -config san.cnf

(3) On the mgmtd install the key and cert at /etc/beegfs. On nodes with the CTL install the certificate to /etc/beegfs.

Alternatively, disable TLS using --tls-disable.

Provide BeeMsg authentication file

To use BeeMsg authentication, you have to provide the same BeeMsg authentication file used for the other nodes (formerly known as "connAuthFile"). The default location is /etc/beegfs/conn.auth, but can be overridden using --auth-file.

Alternatively, disable BeeMsg authentication using --auth-disable.

Set up the database

The management requires explicit initialization and database creation, which can be achieved by running it with the --init flag. The default database location at /var/lib/beegfs/mgmtd.sqlite is only writable by root, for playing around you might want to run management as user and provide an alternative path:

cargo run -p mgmtd -- --init --db-file=/tmp/mgmtd.sqlite

Run the server

Run the binary according to the preparations above. For example, for disabling BeeMsg authentication and using the generated TLS certificate for gRPC:

cargo run -p mgmtd -- --db-file=/tmp/mgmtd.sqlite --auth-disable --tls-cert-file=./mgmtd-cert.pem --tls-key-file=./mgmtd-key.pem

This logs to systemd. For playing around and debugging, it is advisable to log to stdout instead. To do that, provide the --log-target=std flag. For that purpose, the management uses env_logger. It can be configured by setting the RUST_LOG environment variable. For example, to log everything down to debug level:

RUST_LOG=debug cargo run -p mgmtd -- --db-file=/tmp/mgmtd.sqlite --auth-disable --tls-cert-file=./mgmtd-cert.pem --tls-key-file=./mgmtd-key.pem --log-target=std

env_logger can be configured relatively fine grained using RUST_LOG, look up its documentation for more details.

Remember that you can also provide these arguments (except for the RUST_LOG variable, of course) using a config file by specifying --config-file.

About

BeeGFS πŸ› οΈ software written in Rust such as the πŸ†• BeeGFS management service.

Resources

Contributing

Security policy

Stars

9 stars

Watchers

6 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

beegfs-rust

Contents

The purpose of this repository is twofold:

  • Provide Rust packages for interacting with BeeGFS.
  • Provide BeeGFS-related software written in Rust, such as the BeeGFS management service.

Getting Started

Prerequisites

  • If you just want to build/run the project without OS packages download and install Rust from rustup.
  • If you want to build packages you also need to run make install-tools.
    • Note this only installs the tooling needed for a local, native build and is insufficient for cross-compilation.

If you are interested in contributing to the project please refer to Getting Started with Rust in the project wiki.

Building (With or Without Packaging)

There are a few ways to build/run the BeeGFS management service:

  • The management can be built and run through cargo in one step:

    cargo run -p mgmtd -- --help

    Note the -- to separate management arguments from cargo arguments.

    Or build it and then run it:

    cargo build -p mgmtd
    ./target/debug/mgmtd --help

    Both ways are valid, in the below examples the first variant is used as it is quicker.

  • Build and install using OS packages: make package

    • Packages will be created under target/package/ that can be installed using dpkg -i <package> or similar.

Setting the binaries version output

One can define the output of the --version command at compile time by passing the VERSION environment to cargo. This can be set to a BeeGFS release version during a release build. Gets set to "unknown" if not given.

Run the management

The management server binary runs by itself, no additional installation needed. Some setup is necessary though as described below.

Provide a config file

The management can optionally read in a configuration file in TOML format. The default location is /etc/beegfs/beegfs-mgmtd.toml, can be set by --config-file.

The config file is ignored if not present - most configuration options can also be given by command line flags. The exceptions is quota.

Provide TLS certificates

Management requires a TLS certificate and its private key for encrypted gRPC communication:

  • A X.509 certificate file at /etc/beegfs/cert.pem. The default path be overridden by --tls-cert-file.
  • A private key file at /etc/beegfs/key.pem. The default path can be overridden by --tls-key-file.

The following can be used to setup a self signed certificate:

(1) Create a file san.cnf updating the alt_names to include all DNS names and/or IPs where the management is accessible:

[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_ca # The extensions to add to the self signed cert
[ req_distinguished_name ]
commonName = Common Name (eg, fully qualified host name)
commonName_default = localhost
[ req_ext ]
subjectAltName = @alt_names
[ v3_ca ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = localhost
IP.1 = 127.0.0.1

(2) Run the following command to generate the certificate and key:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pem -config san.cnf

(3) On the mgmtd install the key and cert at /etc/beegfs. On nodes with the CTL install the certificate to /etc/beegfs.

Alternatively, disable TLS using --tls-disable.

Provide BeeMsg authentication file

To use BeeMsg authentication, you have to provide the same BeeMsg authentication file used for the other nodes (formerly known as "connAuthFile"). The default location is /etc/beegfs/conn.auth, but can be overridden using --auth-file.

Alternatively, disable BeeMsg authentication using --auth-disable.

Set up the database

The management requires explicit initialization and database creation, which can be achieved by running it with the --init flag. The default database location at /var/lib/beegfs/mgmtd.sqlite is only writable by root, for playing around you might want to run management as user and provide an alternative path:

cargo run -p mgmtd -- --init --db-file=/tmp/mgmtd.sqlite

Run the server

Run the binary according to the preparations above. For example, for disabling BeeMsg authentication and using the generated TLS certificate for gRPC:

cargo run -p mgmtd -- --db-file=/tmp/mgmtd.sqlite --auth-disable --tls-cert-file=./mgmtd-cert.pem --tls-key-file=./mgmtd-key.pem

This logs to systemd. For playing around and debugging, it is advisable to log to stdout instead. To do that, provide the --log-target=std flag. For that purpose, the management uses env_logger. It can be configured by setting the RUST_LOG environment variable. For example, to log everything down to debug level:

RUST_LOG=debug cargo run -p mgmtd -- --db-file=/tmp/mgmtd.sqlite --auth-disable --tls-cert-file=./mgmtd-cert.pem --tls-key-file=./mgmtd-key.pem --log-target=std

env_logger can be configured relatively fine grained using RUST_LOG, look up its documentation for more details.

Remember that you can also provide these arguments (except for the RUST_LOG variable, of course) using a config file by specifying --config-file.

About

BeeGFS πŸ› οΈ software written in Rust such as the πŸ†• BeeGFS management service.

Resources

Contributing

Security policy

Stars

9 stars

Watchers

6 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

beegfs-rust

Contents

The purpose of this repository is twofold:

  • Provide Rust packages for interacting with BeeGFS.
  • Provide BeeGFS-related software written in Rust, such as the BeeGFS management service.

Getting Started

Prerequisites

  • If you just want to build/run the project without OS packages download and install Rust from rustup.
  • If you want to build packages you also need to run make install-tools.
    • Note this only installs the tooling needed for a local, native build and is insufficient for cross-compilation.

If you are interested in contributing to the project please refer to Getting Started with Rust in the project wiki.

Building (With or Without Packaging)

There are a few ways to build/run the BeeGFS management service:

  • The management can be built and run through cargo in one step:

    cargo run -p mgmtd -- --help

    Note the -- to separate management arguments from cargo arguments.

    Or build it and then run it:

    cargo build -p mgmtd
    ./target/debug/mgmtd --help

    Both ways are valid, in the below examples the first variant is used as it is quicker.

  • Build and install using OS packages: make package

    • Packages will be created under target/package/ that can be installed using dpkg -i <package> or similar.

Setting the binaries version output

One can define the output of the --version command at compile time by passing the VERSION environment to cargo. This can be set to a BeeGFS release version during a release build. Gets set to "unknown" if not given.

Run the management

The management server binary runs by itself, no additional installation needed. Some setup is necessary though as described below.

Provide a config file

The management can optionally read in a configuration file in TOML format. The default location is /etc/beegfs/beegfs-mgmtd.toml, can be set by --config-file.

The config file is ignored if not present - most configuration options can also be given by command line flags. The exceptions is quota.

Provide TLS certificates

Management requires a TLS certificate and its private key for encrypted gRPC communication:

  • A X.509 certificate file at /etc/beegfs/cert.pem. The default path be overridden by --tls-cert-file.
  • A private key file at /etc/beegfs/key.pem. The default path can be overridden by --tls-key-file.

The following can be used to setup a self signed certificate:

(1) Create a file san.cnf updating the alt_names to include all DNS names and/or IPs where the management is accessible:

[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_ca # The extensions to add to the self signed cert
[ req_distinguished_name ]
commonName = Common Name (eg, fully qualified host name)
commonName_default = localhost
[ req_ext ]
subjectAltName = @alt_names
[ v3_ca ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = localhost
IP.1 = 127.0.0.1

(2) Run the following command to generate the certificate and key:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pem -config san.cnf

(3) On the mgmtd install the key and cert at /etc/beegfs. On nodes with the CTL install the certificate to /etc/beegfs.

Alternatively, disable TLS using --tls-disable.

Provide BeeMsg authentication file

To use BeeMsg authentication, you have to provide the same BeeMsg authentication file used for the other nodes (formerly known as "connAuthFile"). The default location is /etc/beegfs/conn.auth, but can be overridden using --auth-file.

Alternatively, disable BeeMsg authentication using --auth-disable.

Set up the database

The management requires explicit initialization and database creation, which can be achieved by running it with the --init flag. The default database location at /var/lib/beegfs/mgmtd.sqlite is only writable by root, for playing around you might want to run management as user and provide an alternative path:

cargo run -p mgmtd -- --init --db-file=/tmp/mgmtd.sqlite

Run the server

Run the binary according to the preparations above. For example, for disabling BeeMsg authentication and using the generated TLS certificate for gRPC:

cargo run -p mgmtd -- --db-file=/tmp/mgmtd.sqlite --auth-disable --tls-cert-file=./mgmtd-cert.pem --tls-key-file=./mgmtd-key.pem

This logs to systemd. For playing around and debugging, it is advisable to log to stdout instead. To do that, provide the --log-target=std flag. For that purpose, the management uses env_logger. It can be configured by setting the RUST_LOG environment variable. For example, to log everything down to debug level:

RUST_LOG=debug cargo run -p mgmtd -- --db-file=/tmp/mgmtd.sqlite --auth-disable --tls-cert-file=./mgmtd-cert.pem --tls-key-file=./mgmtd-key.pem --log-target=std

env_logger can be configured relatively fine grained using RUST_LOG, look up its documentation for more details.

Remember that you can also provide these arguments (except for the RUST_LOG variable, of course) using a config file by specifying --config-file.

About

BeeGFS πŸ› οΈ software written in Rust such as the πŸ†• BeeGFS management service.

Resources

Contributing

Security policy

Stars

9 stars

Watchers

6 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

beegfs-rust

Contents

The purpose of this repository is twofold:

  • Provide Rust packages for interacting with BeeGFS.
  • Provide BeeGFS-related software written in Rust, such as the BeeGFS management service.

Getting Started

Prerequisites

  • If you just want to build/run the project without OS packages download and install Rust from rustup.
  • If you want to build packages you also need to run make install-tools.
    • Note this only installs the tooling needed for a local, native build and is insufficient for cross-compilation.

If you are interested in contributing to the project please refer to Getting Started with Rust in the project wiki.

Building (With or Without Packaging)

There are a few ways to build/run the BeeGFS management service:

  • The management can be built and run through cargo in one step:

    cargo run -p mgmtd -- --help

    Note the -- to separate management arguments from cargo arguments.

    Or build it and then run it:

    cargo build -p mgmtd
    ./target/debug/mgmtd --help

    Both ways are valid, in the below examples the first variant is used as it is quicker.

  • Build and install using OS packages: make package

    • Packages will be created under target/package/ that can be installed using dpkg -i <package> or similar.

Setting the binaries version output

One can define the output of the --version command at compile time by passing the VERSION environment to cargo. This can be set to a BeeGFS release version during a release build. Gets set to "unknown" if not given.

Run the management

The management server binary runs by itself, no additional installation needed. Some setup is necessary though as described below.

Provide a config file

The management can optionally read in a configuration file in TOML format. The default location is /etc/beegfs/beegfs-mgmtd.toml, can be set by --config-file.

The config file is ignored if not present - most configuration options can also be given by command line flags. The exceptions is quota.

Provide TLS certificates

Management requires a TLS certificate and its private key for encrypted gRPC communication:

  • A X.509 certificate file at /etc/beegfs/cert.pem. The default path be overridden by --tls-cert-file.
  • A private key file at /etc/beegfs/key.pem. The default path can be overridden by --tls-key-file.

The following can be used to setup a self signed certificate:

(1) Create a file san.cnf updating the alt_names to include all DNS names and/or IPs where the management is accessible:

[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_ca # The extensions to add to the self signed cert
[ req_distinguished_name ]
commonName = Common Name (eg, fully qualified host name)
commonName_default = localhost
[ req_ext ]
subjectAltName = @alt_names
[ v3_ca ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = localhost
IP.1 = 127.0.0.1

(2) Run the following command to generate the certificate and key:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pem -config san.cnf

(3) On the mgmtd install the key and cert at /etc/beegfs. On nodes with the CTL install the certificate to /etc/beegfs.

Alternatively, disable TLS using --tls-disable.

Provide BeeMsg authentication file

To use BeeMsg authentication, you have to provide the same BeeMsg authentication file used for the other nodes (formerly known as "connAuthFile"). The default location is /etc/beegfs/conn.auth, but can be overridden using --auth-file.

Alternatively, disable BeeMsg authentication using --auth-disable.

Set up the database

The management requires explicit initialization and database creation, which can be achieved by running it with the --init flag. The default database location at /var/lib/beegfs/mgmtd.sqlite is only writable by root, for playing around you might want to run management as user and provide an alternative path:

cargo run -p mgmtd -- --init --db-file=/tmp/mgmtd.sqlite

Run the server

Run the binary according to the preparations above. For example, for disabling BeeMsg authentication and using the generated TLS certificate for gRPC:

cargo run -p mgmtd -- --db-file=/tmp/mgmtd.sqlite --auth-disable --tls-cert-file=./mgmtd-cert.pem --tls-key-file=./mgmtd-key.pem

This logs to systemd. For playing around and debugging, it is advisable to log to stdout instead. To do that, provide the --log-target=std flag. For that purpose, the management uses env_logger. It can be configured by setting the RUST_LOG environment variable. For example, to log everything down to debug level:

RUST_LOG=debug cargo run -p mgmtd -- --db-file=/tmp/mgmtd.sqlite --auth-disable --tls-cert-file=./mgmtd-cert.pem --tls-key-file=./mgmtd-key.pem --log-target=std

env_logger can be configured relatively fine grained using RUST_LOG, look up its documentation for more details.

Remember that you can also provide these arguments (except for the RUST_LOG variable, of course) using a config file by specifying --config-file.

About

BeeGFS πŸ› οΈ software written in Rust such as the πŸ†• BeeGFS management service.

Resources

Contributing

Security policy

Stars

9 stars

Watchers

6 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

beegfs-rust

Contents

The purpose of this repository is twofold:

  • Provide Rust packages for interacting with BeeGFS.
  • Provide BeeGFS-related software written in Rust, such as the BeeGFS management service.

Getting Started

Prerequisites

  • If you just want to build/run the project without OS packages download and install Rust from rustup.
  • If you want to build packages you also need to run make install-tools.
    • Note this only installs the tooling needed for a local, native build and is insufficient for cross-compilation.

If you are interested in contributing to the project please refer to Getting Started with Rust in the project wiki.

Building (With or Without Packaging)

There are a few ways to build/run the BeeGFS management service:

  • The management can be built and run through cargo in one step:

    cargo run -p mgmtd -- --help

    Note the -- to separate management arguments from cargo arguments.

    Or build it and then run it:

    cargo build -p mgmtd
    ./target/debug/mgmtd --help

    Both ways are valid, in the below examples the first variant is used as it is quicker.

  • Build and install using OS packages: make package

    • Packages will be created under target/package/ that can be installed using dpkg -i <package> or similar.

Setting the binaries version output

One can define the output of the --version command at compile time by passing the VERSION environment to cargo. This can be set to a BeeGFS release version during a release build. Gets set to "unknown" if not given.

Run the management

The management server binary runs by itself, no additional installation needed. Some setup is necessary though as described below.

Provide a config file

The management can optionally read in a configuration file in TOML format. The default location is /etc/beegfs/beegfs-mgmtd.toml, can be set by --config-file.

The config file is ignored if not present - most configuration options can also be given by command line flags. The exceptions is quota.

Provide TLS certificates

Management requires a TLS certificate and its private key for encrypted gRPC communication:

  • A X.509 certificate file at /etc/beegfs/cert.pem. The default path be overridden by --tls-cert-file.
  • A private key file at /etc/beegfs/key.pem. The default path can be overridden by --tls-key-file.

The following can be used to setup a self signed certificate:

(1) Create a file san.cnf updating the alt_names to include all DNS names and/or IPs where the management is accessible:

[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_ca # The extensions to add to the self signed cert
[ req_distinguished_name ]
commonName = Common Name (eg, fully qualified host name)
commonName_default = localhost
[ req_ext ]
subjectAltName = @alt_names
[ v3_ca ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = localhost
IP.1 = 127.0.0.1

(2) Run the following command to generate the certificate and key:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pem -config san.cnf

(3) On the mgmtd install the key and cert at /etc/beegfs. On nodes with the CTL install the certificate to /etc/beegfs.

Alternatively, disable TLS using --tls-disable.

Provide BeeMsg authentication file

To use BeeMsg authentication, you have to provide the same BeeMsg authentication file used for the other nodes (formerly known as "connAuthFile"). The default location is /etc/beegfs/conn.auth, but can be overridden using --auth-file.

Alternatively, disable BeeMsg authentication using --auth-disable.

Set up the database

The management requires explicit initialization and database creation, which can be achieved by running it with the --init flag. The default database location at /var/lib/beegfs/mgmtd.sqlite is only writable by root, for playing around you might want to run management as user and provide an alternative path:

cargo run -p mgmtd -- --init --db-file=/tmp/mgmtd.sqlite

Run the server

Run the binary according to the preparations above. For example, for disabling BeeMsg authentication and using the generated TLS certificate for gRPC:

cargo run -p mgmtd -- --db-file=/tmp/mgmtd.sqlite --auth-disable --tls-cert-file=./mgmtd-cert.pem --tls-key-file=./mgmtd-key.pem

This logs to systemd. For playing around and debugging, it is advisable to log to stdout instead. To do that, provide the --log-target=std flag. For that purpose, the management uses env_logger. It can be configured by setting the RUST_LOG environment variable. For example, to log everything down to debug level:

RUST_LOG=debug cargo run -p mgmtd -- --db-file=/tmp/mgmtd.sqlite --auth-disable --tls-cert-file=./mgmtd-cert.pem --tls-key-file=./mgmtd-key.pem --log-target=std

env_logger can be configured relatively fine grained using RUST_LOG, look up its documentation for more details.

Remember that you can also provide these arguments (except for the RUST_LOG variable, of course) using a config file by specifying --config-file.

About

BeeGFS πŸ› οΈ software written in Rust such as the πŸ†• BeeGFS management service.

Resources

Contributing

Security policy

Stars

9 stars

Watchers

6 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

beegfs-rust

Contents

The purpose of this repository is twofold:

  • Provide Rust packages for interacting with BeeGFS.
  • Provide BeeGFS-related software written in Rust, such as the BeeGFS management service.

Getting Started

Prerequisites

  • If you just want to build/run the project without OS packages download and install Rust from rustup.
  • If you want to build packages you also need to run make install-tools.
    • Note this only installs the tooling needed for a local, native build and is insufficient for cross-compilation.

If you are interested in contributing to the project please refer to Getting Started with Rust in the project wiki.

Building (With or Without Packaging)

There are a few ways to build/run the BeeGFS management service:

  • The management can be built and run through cargo in one step:

    cargo run -p mgmtd -- --help

    Note the -- to separate management arguments from cargo arguments.

    Or build it and then run it:

    cargo build -p mgmtd
    ./target/debug/mgmtd --help

    Both ways are valid, in the below examples the first variant is used as it is quicker.

  • Build and install using OS packages: make package

    • Packages will be created under target/package/ that can be installed using dpkg -i <package> or similar.

Setting the binaries version output

One can define the output of the --version command at compile time by passing the VERSION environment to cargo. This can be set to a BeeGFS release version during a release build. Gets set to "unknown" if not given.

Run the management

The management server binary runs by itself, no additional installation needed. Some setup is necessary though as described below.

Provide a config file

The management can optionally read in a configuration file in TOML format. The default location is /etc/beegfs/beegfs-mgmtd.toml, can be set by --config-file.

The config file is ignored if not present - most configuration options can also be given by command line flags. The exceptions is quota.

Provide TLS certificates

Management requires a TLS certificate and its private key for encrypted gRPC communication:

  • A X.509 certificate file at /etc/beegfs/cert.pem. The default path be overridden by --tls-cert-file.
  • A private key file at /etc/beegfs/key.pem. The default path can be overridden by --tls-key-file.

The following can be used to setup a self signed certificate:

(1) Create a file san.cnf updating the alt_names to include all DNS names and/or IPs where the management is accessible:

[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_ca # The extensions to add to the self signed cert
[ req_distinguished_name ]
commonName = Common Name (eg, fully qualified host name)
commonName_default = localhost
[ req_ext ]
subjectAltName = @alt_names
[ v3_ca ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = localhost
IP.1 = 127.0.0.1

(2) Run the following command to generate the certificate and key:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pem -config san.cnf

(3) On the mgmtd install the key and cert at /etc/beegfs. On nodes with the CTL install the certificate to /etc/beegfs.

Alternatively, disable TLS using --tls-disable.

Provide BeeMsg authentication file

To use BeeMsg authentication, you have to provide the same BeeMsg authentication file used for the other nodes (formerly known as "connAuthFile"). The default location is /etc/beegfs/conn.auth, but can be overridden using --auth-file.

Alternatively, disable BeeMsg authentication using --auth-disable.

Set up the database

The management requires explicit initialization and database creation, which can be achieved by running it with the --init flag. The default database location at /var/lib/beegfs/mgmtd.sqlite is only writable by root, for playing around you might want to run management as user and provide an alternative path:

cargo run -p mgmtd -- --init --db-file=/tmp/mgmtd.sqlite

Run the server

Run the binary according to the preparations above. For example, for disabling BeeMsg authentication and using the generated TLS certificate for gRPC:

cargo run -p mgmtd -- --db-file=/tmp/mgmtd.sqlite --auth-disable --tls-cert-file=./mgmtd-cert.pem --tls-key-file=./mgmtd-key.pem

This logs to systemd. For playing around and debugging, it is advisable to log to stdout instead. To do that, provide the --log-target=std flag. For that purpose, the management uses env_logger. It can be configured by setting the RUST_LOG environment variable. For example, to log everything down to debug level:

RUST_LOG=debug cargo run -p mgmtd -- --db-file=/tmp/mgmtd.sqlite --auth-disable --tls-cert-file=./mgmtd-cert.pem --tls-key-file=./mgmtd-key.pem --log-target=std

env_logger can be configured relatively fine grained using RUST_LOG, look up its documentation for more details.

Remember that you can also provide these arguments (except for the RUST_LOG variable, of course) using a config file by specifying --config-file.

About

BeeGFS πŸ› οΈ software written in Rust such as the πŸ†• BeeGFS management service.

Resources

Contributing

Security policy

Stars

9 stars

Watchers

6 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

beegfs-rust

Contents

The purpose of this repository is twofold:

  • Provide Rust packages for interacting with BeeGFS.
  • Provide BeeGFS-related software written in Rust, such as the BeeGFS management service.

Getting Started

Prerequisites

  • If you just want to build/run the project without OS packages download and install Rust from rustup.
  • If you want to build packages you also need to run make install-tools.
    • Note this only installs the tooling needed for a local, native build and is insufficient for cross-compilation.

If you are interested in contributing to the project please refer to Getting Started with Rust in the project wiki.

Building (With or Without Packaging)

There are a few ways to build/run the BeeGFS management service:

  • The management can be built and run through cargo in one step:

    cargo run -p mgmtd -- --help

    Note the -- to separate management arguments from cargo arguments.

    Or build it and then run it:

    cargo build -p mgmtd
    ./target/debug/mgmtd --help

    Both ways are valid, in the below examples the first variant is used as it is quicker.

  • Build and install using OS packages: make package

    • Packages will be created under target/package/ that can be installed using dpkg -i <package> or similar.

Setting the binaries version output

One can define the output of the --version command at compile time by passing the VERSION environment to cargo. This can be set to a BeeGFS release version during a release build. Gets set to "unknown" if not given.

Run the management

The management server binary runs by itself, no additional installation needed. Some setup is necessary though as described below.

Provide a config file

The management can optionally read in a configuration file in TOML format. The default location is /etc/beegfs/beegfs-mgmtd.toml, can be set by --config-file.

The config file is ignored if not present - most configuration options can also be given by command line flags. The exceptions is quota.

Provide TLS certificates

Management requires a TLS certificate and its private key for encrypted gRPC communication:

  • A X.509 certificate file at /etc/beegfs/cert.pem. The default path be overridden by --tls-cert-file.
  • A private key file at /etc/beegfs/key.pem. The default path can be overridden by --tls-key-file.

The following can be used to setup a self signed certificate:

(1) Create a file san.cnf updating the alt_names to include all DNS names and/or IPs where the management is accessible:

[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_ca # The extensions to add to the self signed cert
[ req_distinguished_name ]
commonName = Common Name (eg, fully qualified host name)
commonName_default = localhost
[ req_ext ]
subjectAltName = @alt_names
[ v3_ca ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = localhost
IP.1 = 127.0.0.1

(2) Run the following command to generate the certificate and key:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pem -config san.cnf

(3) On the mgmtd install the key and cert at /etc/beegfs. On nodes with the CTL install the certificate to /etc/beegfs.

Alternatively, disable TLS using --tls-disable.

Provide BeeMsg authentication file

To use BeeMsg authentication, you have to provide the same BeeMsg authentication file used for the other nodes (formerly known as "connAuthFile"). The default location is /etc/beegfs/conn.auth, but can be overridden using --auth-file.

Alternatively, disable BeeMsg authentication using --auth-disable.

Set up the database

The management requires explicit initialization and database creation, which can be achieved by running it with the --init flag. The default database location at /var/lib/beegfs/mgmtd.sqlite is only writable by root, for playing around you might want to run management as user and provide an alternative path:

cargo run -p mgmtd -- --init --db-file=/tmp/mgmtd.sqlite

Run the server

Run the binary according to the preparations above. For example, for disabling BeeMsg authentication and using the generated TLS certificate for gRPC:

cargo run -p mgmtd -- --db-file=/tmp/mgmtd.sqlite --auth-disable --tls-cert-file=./mgmtd-cert.pem --tls-key-file=./mgmtd-key.pem

This logs to systemd. For playing around and debugging, it is advisable to log to stdout instead. To do that, provide the --log-target=std flag. For that purpose, the management uses env_logger. It can be configured by setting the RUST_LOG environment variable. For example, to log everything down to debug level:

RUST_LOG=debug cargo run -p mgmtd -- --db-file=/tmp/mgmtd.sqlite --auth-disable --tls-cert-file=./mgmtd-cert.pem --tls-key-file=./mgmtd-key.pem --log-target=std

env_logger can be configured relatively fine grained using RUST_LOG, look up its documentation for more details.

Remember that you can also provide these arguments (except for the RUST_LOG variable, of course) using a config file by specifying --config-file.

About

BeeGFS πŸ› οΈ software written in Rust such as the πŸ†• BeeGFS management service.

Resources

Contributing

Security policy

Stars

9 stars

Watchers

6 watching

Forks

Releases

Used by

Contributors

Languages