{"id":20834521,"url":"https://github.com/apriorit/docker-beegfs-demo","last_synced_at":"2026-04-29T23:32:37.884Z","repository":{"id":194102775,"uuid":"656744972","full_name":"apriorit/docker-beegfs-demo","owner":"apriorit","description":null,"archived":false,"fork":false,"pushed_at":"2024-07-24T12:59:27.000Z","size":29,"stargazers_count":0,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-12-27T09:25:31.556Z","etag":null,"topics":["beegfs","docker","docker-compose","docker-image"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apriorit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-21T14:48:52.000Z","updated_at":"2023-06-26T10:54:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"5c0e063b-e3bd-461e-92cb-cecc0ccd7127","html_url":"https://github.com/apriorit/docker-beegfs-demo","commit_stats":null,"previous_names":["apriorit/docker-beegfs-demo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/apriorit/docker-beegfs-demo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apriorit%2Fdocker-beegfs-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apriorit%2Fdocker-beegfs-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apriorit%2Fdocker-beegfs-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apriorit%2Fdocker-beegfs-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apriorit","download_url":"https://codeload.github.com/apriorit/docker-beegfs-demo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apriorit%2Fdocker-beegfs-demo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32448399,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"ssl_error","status_checked_at":"2026-04-29T22:10:49.234Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["beegfs","docker","docker-compose","docker-image"],"created_at":"2024-11-18T00:19:33.045Z","updated_at":"2026-04-29T23:32:37.869Z","avatar_url":"https://github.com/apriorit.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BeeGFS demo server [![Docker](https://github.com/apriorit/docker-beegfs-demo/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/apriorit/docker-beegfs-demo/actions/workflows/docker-publish.yml)\n\n## Introduction\n\nThis repository describes setup of the [BeeGFS](https://www.beegfs.io) server environment for testing purposes. It will create **management**, **metadata** and **storage** nodes with `macvlan` networking (they will have each own ip address accessible from outside). It's supposed to be used with a BeeGFS client running on another machine.\n\nDocker images are based on [RedCoolBeans/docker-beegfs](https://github.com/RedCoolBeans/docker-beegfs) but use Ubuntu 20.04 as the parent image instead of CentOS 7.\n\n\u003e **Note** The instructions are written for a Debian-based system (Debian, Ubuntu, Mint) but can be adopted and run on any other system.\n\n## Pre-requisites\n\nThe following packages are required for Ubuntu 20.04:\n* git\n* docker\n* docker-compose\n\n```sh\nsudo apt install docker docker-compose git\n```\n\nAdd a local user to the `docker` group:\n\n```sh\nsudo usermod -aG docker $USER\n```\n\n\u003e **Note** Make sure the group membership is applied correctly to the user, e.g. re-login to the session or reboot.\n\n## How to run\n\nClone the repository:\n\n```sh\ngit clone https://github.com/apriorit/docker-beegfs-demo.git\n```\n\nGo to `docker-beegfs-demo` and copy `docker-compose.template.yml` to `docker-compose.yml`:\n\n```sh\ncd docker-beegfs-demo\ncp docker-compose.template.yml docker-compose.yml\n```\n\nEdit `docker-compose.yml` to provide your network configuration:\n\n```yml\nnetworks:\n  beegfs:\n    driver: macvlan\n    driver_opts:\n      parent: # interface name, for example: ens33\n    ipam:\n      # macvlan can't use DHCP so we have provide network configuration manually\n      config:\n        - subnet: # interface subnet, for example: \"192.168.1.0/24\"\n          ip_range: # ip range assigned to the services, for example: \"192.168.1.64/30\"\n          gateway: # ip address of the gateway, for example: \"192.168.1.1\"\n```\n\nTo find the interface name and subnet run:\n\n```sh\nip -o -f inet a\n```\n\n```sh\n\u003e ip -o -f inet a\n1: lo    inet 127.0.0.1/8 scope host lo\\       valid_lft forever preferred_lft forever\n2: ens33    inet 192.168.136.129/24 brd 192.168.136.255 scope global dynamic noprefixroute ens33\\       valid_lft 1693sec preferred_lft 1693sec\n```\n\n`ens33` is the interface name, the subnet is `192.168.136.129/24`.\n\nTo find the gateway run:\n\n```sh\nip route\n```\n\n```sh\n\u003e ip route\ndefault via 192.168.136.2 dev ens33 proto dhcp metric 101 \n192.168.136.0/24 dev ens33 proto kernel scope link src 192.168.136.129 metric 101 \n```\n\nThe gateway is `192.168.136.2`.\n\nChoose an ip range in your subnet and set it. Docker will assign ip addresses from the range starting from the first value.\n\n\u003e **Note** Make sure the ip adresses in the range is not allocated already to someone else!\n\nSet the ip range to `192.168.136.64/30` for the case described here. It means the first ip address will be `192.168.136.64`, the second will be `192.168.136.65` and so on.\n\nThe resulting file should look like this:\n\n```yml\nnetworks:\n  beegfs:\n    driver: macvlan\n    driver_opts:\n      parent: ens33\n    ipam:\n      # macvlan can't use DHCP so we have provide network configuration manually\n      config:\n        - subnet: \"192.168.136.129/24\"\n          ip_range: \"192.168.136.64/30\"\n          gateway: \"192.168.136.2\"\n```\n\nRun the containers:\n\n```sh\ndocker-compose up\n```\n\nTo stop the containers press `Ctrl+C`.\n\nTo stop the containers and clean up resources:\n\n```sh\ndocker-compose down\n```\n\nTo find ip addresses allocated to each container run:\n\n```sh\ndocker inspect docker-beegfs-demo_beegfs\n```\n\n```sh\n\u003e docker inspect docker-beegfs-demo_beegfs\n[\n        ...\n        \"Containers\": {\n            \"aab157e1e08bf1774564df16d762f2c521b1854b3199a8277b58fdb847e1095a\": {\n                \"Name\": \"docker-beegfs-demo_management_1\",\n                \"EndpointID\": \"4e70f983f59c897dafedd59bb340b288589413f132f79037f6f16e7cd0e4badd\",\n                \"MacAddress\": \"02:42:c0:a8:88:40\",\n                \"IPv4Address\": \"192.168.136.64/24\",\n                \"IPv6Address\": \"\"\n            },\n            \"b7e84c57b34207e73d9a9f6ac48f327e2c822cc2c43ca7c3457bc224073a66ae\": {\n                \"Name\": \"docker-beegfs-demo_storage1_1\",\n                \"EndpointID\": \"c47c2b93c83c39a335fde8cf5e2bbf50f51b3f35552f48c9c3319a66580d5783\",\n                \"MacAddress\": \"02:42:c0:a8:88:41\",\n                \"IPv4Address\": \"192.168.136.65/24\",\n                \"IPv6Address\": \"\"\n            },\n            \"d40ec08ac0fc9a2226e4ec75269c3f72658d1c808aa8acc98f29e3d42d8396ce\": {\n                \"Name\": \"docker-beegfs-demo_metadata_1\",\n                \"EndpointID\": \"a0a802e44d19f59b41e84c376dc4c57d3df7a9c1ffc1b3fc588d8230cc6b88b8\",\n                \"MacAddress\": \"02:42:c0:a8:88:42\",\n                \"IPv4Address\": \"192.168.136.66/24\",\n                \"IPv6Address\": \"\"\n            },\n            \"948512a8fe83f093461d2398f240d1d7dc8d88ce29a536714ff860a8fbc9a5e4\": {\n                \"Name\": \"docker-beegfs-demo_storage2_1\",\n                \"EndpointID\": \"9ee3da2f1f28968177040d4f9228165632dcd4172e94e82d73ad980364eae81c\",\n                \"MacAddress\": \"02:42:c0:a8:88:43\",\n                \"IPv4Address\": \"192.168.136.67/24\",\n                \"IPv6Address\": \"\"\n            },\n\n        },\n        ...\n]\n```\n\nNow you can connect to the management node from another machine using its ip address.\n\n## How to add more storage nodes\nCurrently, `docker-compose.yml` provides 2 services that act as storage nodes: `storage1` and `storage2`.\n\nThe main idea behind adding additional storage nodes is to utilize BeeGFS's RAID feature.\n\nThe actual stored data is split between them and can be found by these paths:\n```\n/home/\u003cuser\u003e/beegfs_storage1/chunks/\n/home/\u003cuser\u003e/beegfs_storage2/chunks/\n```\n\nTo add additional nodes you should simply add an additional storage service into `docker-compose.yml`. However, there are several config parametes that should be modified:\n\n- the storage service name (i.e. storage3)\n- the hostname (i.e. node05)\n- the aliases\n- the path on the host for data to be stored in (i.e. ~/beegfs_storage3:/data)\n\n## How to use RAM disks (tmpfs) for storage\nReplace `volumes` to `tmpfs` in the `docker-compose.yml`:\n```yml\n    #volumes:\n    #  - ~/beegfs_storage1:/data\n    tmpfs:\n      - /data:rw,exec,size=500000k\n```\nSet the appropriate tmpfs size - there should be enough RAM on your server to accomodate it.\n\n## Links\n* [RedCoolBeans/docker-beegfs](https://github.com/RedCoolBeans/docker-beegfs)\n* [BeeGFS](https://www.beegfs.io)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapriorit%2Fdocker-beegfs-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapriorit%2Fdocker-beegfs-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapriorit%2Fdocker-beegfs-demo/lists"}