{"id":30592415,"url":"https://github.com/nfrastack/container-base","last_synced_at":"2026-02-23T05:06:58.618Z","repository":{"id":308383016,"uuid":"1028500345","full_name":"nfrastack/container-base","owner":"nfrastack","description":"Containerized Base Image for rapid development and deployment","archived":false,"fork":false,"pushed_at":"2026-02-20T06:58:44.000Z","size":325,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-20T11:24:22.866Z","etag":null,"topics":["alpine-linux","container","debian-linux"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nfrastack.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-29T16:10:08.000Z","updated_at":"2026-02-20T06:58:46.000Z","dependencies_parsed_at":"2025-08-05T17:41:20.625Z","dependency_job_id":"5d59afc4-9437-4412-b9e6-b2e5196dd7d2","html_url":"https://github.com/nfrastack/container-base","commit_stats":null,"previous_names":["nfrastack/container-base"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/nfrastack/container-base","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfrastack%2Fcontainer-base","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfrastack%2Fcontainer-base/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfrastack%2Fcontainer-base/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfrastack%2Fcontainer-base/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nfrastack","download_url":"https://codeload.github.com/nfrastack/container-base/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfrastack%2Fcontainer-base/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29738083,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T04:51:08.365Z","status":"ssl_error","status_checked_at":"2026-02-23T04:49:15.865Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["alpine-linux","container","debian-linux"],"created_at":"2025-08-29T18:00:57.873Z","updated_at":"2026-02-23T05:06:58.599Z","avatar_url":"https://github.com/nfrastack.png","language":"Dockerfile","readme":"# nfrastack/container-base\n\n## About\n\nThis repository provides a modular container base image designed to accelerate the creation of downstream application containers. It includes a suite of commonly required features and modules, enabling rapid development and customization for a wide range of use cases.\n\n* Supporting [Alpine Linux](https://www.alpinelinux.org) 3.5-3.23\n* Supporting [Debian Linux](https://www.debian.org) Trixie, Bookworm, Bullseye, Buster\n* Multi Processes - Utilize an initialization system to self contain entire application within the image.\n* User Management - Update User ID and Group ID permissions dynamically\n* Messaging - Send messages from within container\n* Monitoring - Track application and container metrics\n* Logging - Allow for logrotation, or shipping to centralized log collector\n* Scheduling - Execute tasks at specific times\n* Secrets Management - Inject secrets or grab from central repository during runtime\n* Firewalling - Block or allow remote hosts based on patterns\n* VPN - Run VPN clients within the container\n* and many customizable settings.\n\n## Maintainer\n\n- [Nfrastack](https://www.nfrastack.com)\n\n## Table of Contents\n\n- [About](#about)\n- [Maintainer](#maintainer)\n- [Installation](#installation)\n  - [Prebuilt Images](#prebuilt-images)\n  - [Multi-Architecture Support](#multi-architecture-support)\n  - [Build from Source](#build-from-source)\n- [Configuration](#configuration)\n  - [Persistent Storage](#persistent-storage)\n  - [Environment Variables](#environment-variables)\n    - [Container Options](#container-options)\n    - [Container Logging Options](#container-logging-options)\n    - [Container Process Watchdog Options](#container-process-watchdog-options)\n    - [Modules Options](#modules-options)\n    - [Networking Lookup Override Options](#networking-lookup-override-options)\n    - [Script Override Options](#script-override-options)\n    - [Permissions Options](#permissions-options)\n- [Developing / Overriding](#developing--overriding)\n- [Debug Mode](#debug-mode)\n- [Shell Access](#shell-access)\n- [Support \u0026 Maintenance](#support--maintenance)\n- [License](#license)\n\n## Installation\n\n### Prebuilt Images\nFeature limited builds of the image are available on the [Github Container Registry](https://github.com/nfrastack/container-base/pkgs/container/container-base).\n\nTo unlock advanced features, provide a code to be able to change specific environment variables from defaults. Support the development to gain access to a code.\n\n```\n(container platform) pull ghcr.io/nfrastack/container-base:(image_tag)\n```\n\nImage tag syntax is:\n\n`\u003cimage\u003e:\u003coptional tag\u003e-\u003cdistribution\u003e_\u003cdistribution_release\u003e_\u003coptional_features\u003e`\n\nExample:\n\n`ghcr.io/nfrastack-container-base:20261.0-alpine_3.23_core` or\n\n`ghcr.io/nfrastack-container-base:alpine_3.23` or\n\n`ghcr.io/nfrastack-container-base:debian_trixie`\n\n* An optional tag may exist that matches the [CHANGELOG](CHANGELOG.md)\n* Distribution can either be `alpine` or `debian`\n* Disribution release varies - see the registry for availability\n* Features\n  * `core` - Includes `age`, `cron`, `logrotate`, `s6overlay`, `msmtp`\n  * `faflopza` - Includes everything in core and `fail2ban`, `fluentbit`, `openbao`, `zabbix` - *This is the default image if no features requested*\n  * `faflopzaze` Includes everything in `faflopza` and `zerotier`.\n\n#### Multi-Architecture Support\n\nImages are built for `amd64` by default, with optional support for `arm64` and other architectures.\n\n### Build from Source\n\nClone this repository and build the image with your preferred container builder. Customize modules as needed - see the [MODULES documentation](/rootfs/container/base/modules) for details.\n\nBuilding the image from source enables all advanced functionality.\n\n## Configuration\n\n### Persistent Storage\n\nThe following directories are used for configuration and can be optionally mapped for persistent storage.\n\n| Directory  | Description                              |\n| ---------- | ---------------------------------------- |\n| `/var/log` | Container, Cron, Zabbix, other log files |\n\nTODO: Add overrides and custom-script info\n\n### Environment Variables\n\nBelow is the complete list of available options that can be used to customize your installation.\n\n* Variables showing an 'x' under the `_FILE` column can be used for storing the information inside of a file, useful for secrets.\n* Variables showing an 'x' under the `Advanced` column can only be set if the containers advanced functionality is enabled.\n\n#### Container Options\n\n| Parameter        | Description                                             | Default    | Advanced |\n| ---------------- | ------------------------------------------------------- | ---------- | -------- |\n| `CONTAINER_NAME` | Used for setting entries in Monitoring and Log Shipping | (hostname) |          |\n| `TIMEZONE`       | Set Timezone                                            | `Etc/GMT`  |          |\n\n#### Container Logging Options\n\n| Parameter                             | Description                                                               | Default                            | Advanced |\n| ------------------------------------- | ------------------------------------------------------------------------- | ---------------------------------- | -------- |\n| `CONTAINER_COLORIZE_OUTPUT`           | Enable/Disable colorized console output                                   | `TRUE`                             |          |\n| `CONTAINER_ENABLE_CUSTOM_BASH_PROMPT` | TODO Set a different bash prompt then '(imagename):(version) HH:MM:SS # ' |                                    | x        |\n| `CONTAINER_ENABLE_LOG_TIMESTAMP`      | Prefix this images container logs with timestamp                          | `TRUE`                             |          |\n| `CONTAINER_LOG_LEVEL`                 | Control level of output of container `INFO`, `WARN`, `NOTICE`, `DEBUG`    | `NOTICE`                           |          |\n| `CONTAINER_LOG_PREFIX_TIME_FMT`       | Timestamp Time Format                                                     | `%H:%M:%S`                         |          |\n| `CONTAINER_LOG_PREFIX_DATE_FMT`       | Timestamp Date Format                                                     | `%Y-%m-%d`                         |          |\n| `CONTAINER_LOG_PREFIX_SEPERATOR`      | Timestamp seperator                                                       | `-`                                |          |\n| `CONTAINER_LOG_FILE_LEVEL`            | Control level of output of container `INFO`, `WARN`, `NOTICE`, `DEBUG`    | `DEBUG`                            | x        |\n| `CONTAINER_LOG_FILE_NAME`             | Internal Container Logs filename                                          | `/var/log/container/container.log` | x        |\n| `CONTAINER_LOG_FILE_PATH`             | Path where to find the internal container logs                            | `/var/log/container/`              | x        |\n| `CONTAINER_LOG_FILE_PREFIX_TIME_FMT`  | Timestamp Time Format                                                     | `%H:%M:%S`                         | x        |\n| `CONTAINER_LOG_FILE_PREFIX_DATE_FMT`  | Timestamp Date Format                                                     | `%Y-%m-%d`                         | x        |\n| `CONTAINER_LOG_FILE_PREFIX_SEPERATOR` | Timestamp seperator                                                       | `-`                                | x        |\n\n#### Container Process Watchdog Options\n\nThis functionality is an attempt to avoid problems within the container that can \"run away\" from being executed too often.\n\nSample use cases:\n\n* Alert slack channel when process has executed more than once\n* Disable process from executing further if restarted 50 times\n* Write to an additional log file..\n* Change a file to display \"Under Maintenance\" on a webserver if this process isn't supposed to be run more than 1 time.\n\nIt will pass 5 arguments to a bash script titled the same name as the executing script or if not found, use the default `CONTAINER_PROCESS_HELPER_SCRIPT` below. Drop your files into the `CONTAINER_PROCESS_HELPER_PATH`.\n\nFor example, if `04-scheduling` was starting, it would look for `$CONTAINER_PROCESS_HELPER_PATH/04-scheduling` and if found execute it while passing the following arguments: DATE,TIME,SCRIPT_NAME,TIMES EXECUTED,HOSTNAME\n\ne.g: `2025-07-01 23:01:04 04-scheduling 2 container`\n\nUse the values in your own bash script using the `$1` `$2` `$3` `$4` `$5` syntax.\nChange time and date and settings with these environment variables\n\n| Parameter                                     | Description                                                     | Default                     | Advanced |\n| --------------------------------------------- | --------------------------------------------------------------- | --------------------------- | -------- |\n| `CONTAINER_ENABLE_PROCESS_COUNTER`            | Show how many times process has executed in console log         | `TRUE`                      | x        |\n| `CONTAINER_ENABLE_PROCESS_HELPER`             |                                                                 | `TRUE`                      | x        |\n| `CONTAINER_PROCESS_HELPER_PATH`               | Path to file external helper scripts                            | `/container/processhelper/` | x        |\n| `CONTAINER_PROCESS_HELPER_SCRIPT`             | Default helper script name                                      | `processhelper.sh`          | x        |\n| `CONTAINER_PROCESS_HELPER_DATE_FMT`           | Date format passed to external script                           | `%Y-%m-%d`                  | x        |\n| `CONTAINER_PROCESS_HELPER_TIME_FMT`           | Time format passed to external script                           | `%H:%M:%S`                  | x        |\n| `CONTAINER_PROCESS_RUNAWAY_PROTECTOR`         | Disables a service if executed more than (x) amount of times    | `TRUE`                      | x        |\n| `CONTAINER_PROCESS_RUNAWAY_DELAY`             | Delay in seconds to restart process                             | `1`                         | x        |\n| `CONTAINER_PROCESS_RUNAWAY_LIMIT`             | The amount of times it needs to restart before disabling        | `10`                        | x        |\n| `CONTAINER_PROCESS_RUNAWAY_SHOW_OUTPUT_FINAL` | Show the program Output on the final execution before disabling | `TRUE`                      | x        |\n\n#### Modules Options\n\nOnly valid if appropriate module has been installed within the image. See [MODULES documentation](/rootfs/container/base/modules) for more information to see other configurable options.\n\n| Parameter                       | Description                                  | Default     | Advanced |\n| ------------------------------- | -------------------------------------------- | ----------- | -------- |\n| `CONTAINER_ENABLE_METRICS`      | Enable Metrics                               | `TRUE`      | x        |\n| `CONTAINER_ENABLE_MONITORING`   | Enable Monitoring of applications or metrics | `TRUE`      |          |\n| `CONTAINR_MONITORING_BACKEND`   | What monitoring agent to use `zabbix`        | `zabbix`    |          |\n| `CONTAINER_ENABLE_MESSAGING`    | Enable Messaging services like SMTP          | `TRUE`      |          |\n| `CONTAINER_MESSAGING_BACKEND`   | Messaging Backend - presently only `msmtp`   | `msmtp`     |          |\n| `CONTAINER_ENABLE_SCHEDULING`   | Enable Scheduled Tasks                       | `TRUE`      |          |\n| `CONTAINR_SCHEDULING_BACKEND`   | What scheduling tool to use `cron`           | `cron`      |          |\n| `CONTAINER_ENABLE_LOGROTATE`    | Enable Logrotate (if scheduling enabled)     | `TRUE`      |          |\n| `CONTAINER_ENABLE_LOGSHIPPING`  | Enable Log Shipping                          | `FALSE`     |          |\n| `CONTAINER_LOGSHIPPING_BACKEND` | Log shipping backend `fluentbit`             | `fluentbit` |          |\n| `CONTAINER_ENABLE_FIREWALL`     | Enable Firewall Functionality                | `FALSE`     |          |\n| `CONTAINER_FIREWALL_BACKEND`    | What Firewall backend to use `iptables`      | `iptables`  |          |\n\n#### Networking Options\n##### Firewall Options\n\nIncluded when proper capabilities are set on image is the capability to set up detailed block / allow rules via a firewall on container start.\nPresently only `iptables` is supported.\nYou must use run your containers with the following capabilities added: `NET_ADMIN`, `NET_RAW`\n\n| Parameter                    | Description                             | Default    |\n| ---------------------------- | --------------------------------------- | ---------- |\n| `CONTAINER_ENABLE_FIREWALL`  | Enable Firewall Functionality           | `FALSE`    |\n| `CONTAINER_FIREWALL_BACKEND` | What Firewall backend to use `iptables` | `iptables` |\n| `FIREWALL_RULE_00`           | Firewall rule to execute                |            |\n| `FIREWALL_RULE_01`           | Next firewall rule to execute           |            |\n\nOne can use the `FIREWALL_RULE_XX` environment variables to pass rules to the firewall. In this example I am going to block someone from being able to access a port except if from a specific IP address:\n\n```bash\nFIREWALL_RULE_00=-I INPUT -p tcp -m tcp -s 101.69.69.101 --dport 389 -j ACCEPT\nFIREWALL_RULE_01=-I INPUT -p tcp -m tcp -s 0.0.0.0/0 --dport 389 -j DROP\n```\n\n###### IPTables Options\n\nInstead of relying on environment variables one can put a `iptables-restore` compatible ruleset below and it will be imported on container start.\n\n| Parameter             | Description                                                 | Default                |\n| --------------------- | ----------------------------------------------------------- | ---------------------- |\n| `IPTABLES_RULES_PATH` | Path for IPTables Rules                                     | `/contianer/iptables/` |\n| `IPTABLES_RULES_FILE` | IPTables Rules File to restore if exists on container start | `iptables.rules`       |\n\n##### Networking Lookup Override Options\n\nSometimes you may need to add aliases or change the response of DNS lookups.. This will add an entry to the containers hosts file.\n\n| Parameter                    | Description               |\n| ---------------------------- | ------------------------- |\n| `CONTAINER_HOST_OVERRIDE_01` | Create manual hosts entry |\n\nMake the value `\u003cdestination\u003e override1 override2` eg `1.2.3.4 example.org example.com`.\nIf you omit an IP Address and instead use a domain name it will attempt to look it up to an IP eg `proxy example.com example.org`\n\n#### Script Override Options\n\nThis image can execute commands or scripts after the container initializes so that you can perform commands without having to rebuild the entire image or maintain a new codebase. Simply pass the command you wish to execute, or execute a script from the location from a mapped volume.\n\n| Parameter                                      | Description                                                                                     | Default                    | Advanced |\n| ---------------------------------------------- | ----------------------------------------------------------------------------------------------- | -------------------------- | -------- |\n| `CONTAINER_CUSTOM_PATH`                        | Used for adding custom files into the image upon startup                                        | `/override/custom`         | x        |\n| `CONTAINER_CUSTOM_SCRIPTS_PATH`                | Used for adding custom scripts to execute upon startup                                          | `/override/custom-scripts` | x        |\n| `CONTAINER_INIT_PRE_COMMAND_\u003cSCRIPTNAME\u003e`      | If you wish to execute a command in the container before the service has initialized            |                            |          |\n|                                                | enter it here, eg `CONTAINER_INIT_PRE_COMMAND_NGINX=echo 'pre nfrastack'`. If you pass a        |                            |          |\n|                                                | filename as value , it will execute the file                                                    |                            |          |\n| `CONTAINER_INIT_POST_COMMAND_\u003cSCRIPTNAME\u003e`     | If you wish to execute a command in the container after the service has initialized             |                            |          |\n|                                                | enter it here, eg `CONTAINER_INIT_POST_COMMAND_NGINX=echo 'post nfrastack'`. If you pass a      |                            |          |\n|                                                | filename as value , it will execute the file                                                    |                            |          |\n| `CONTAINER_INIT_PRE_COMMAND`                   | If you wish to execute a command in the container before all services have initialized          |                            |          |\n|                                                | enter it here.                                                                                  |                            |          |\n| `CONTAINER_INIT_POST_COMMAND`                  | If you wish to execute a command in the container after all services have initialized           |                            |          |\n|                                                | enter it here.                                                                                  |                            |          |\n| `CONTAINER_SHUTDOWN_PRE_COMMAND`               | If you wish to execute a command in the container before the shutdown sequence starts           |                            |          |\n|                                                | enter it here.                                                                                  |                            |          |\n| `CONTAINER_SHUTDOWN_POST_COMMAND`              | If you wish to execute a command in the container after the shutdown sequence has completed     |                            |          |\n|                                                | enter it here.                                                                                  |                            |          |\n| `CONTAINER_SHUTDOWN_PRE_COMMAND_\u003cSCRIPTNAME\u003e`  | If you wish to execute a command in the container before the shutdown routines have initialized |                            |          |\n|                                                | enter it here, eg `CONTAINER_SHUTDOWN_PRE_COMMAND_NGINX=echo 'pre nfrastack'`. If you pass a    |                            |          |\n|                                                | filename as value , it will execute the file                                                    |                            |          |\n| `CONTAINER_SHUTDOWN_POST_COMMAND_\u003cSCRIPTNAME\u003e` | If you wish to execute a command in the container after the shutdown routines have completed    |                            |          |\n|                                                | enter it here, eg `CONTAINER_SHUTDOWN_POST_COMMAND_NGINX=echo 'post nfrastack'`. If you pass a  |                            |          |\n|                                                | filename as value , it will execute the file                                                    |                            |          |\n\n\n#### Permissions Options\n\nIf you wish to change the internal id for users and groups you can set environment variables to do so.\ne.g. If you add `USER_NGINX=1000` it will reset the containers `nginx` user id from `82` to `1000` -\n\nIf you enable `DEBUG_PERMISSIONS=TRUE` all the users and groups have been modified in accordance with\nenvironment variables will be displayed in output.\n\nHint, also change the Group ID to your local development users UID \u0026 GID and avoid Docker permission issues when developing.\n\n| Parameter                         | Description                                                                 |\n| --------------------------------- | --------------------------------------------------------------------------- |\n| `CONTAINER_USER_\u003cUSERNAME\u003e`       | The user's UID in /etc/passwd will be modified with new UID                 |\n| `CONTAINER_GROUP_\u003cGROUPNAME\u003e`     | The group's GID in /etc/group and /etc/passwd will be modified with new GID |\n| `CONTAINER_GROUP_ADD_\u003cGROUPNAME\u003e` | The username will be added in /etc/group after the group name defined       |\n\n## Developing / Overriding\n\nThis base image has been used over a hundred times to successfully build secondary images. My methodology is admittedly straying from the \"one process per container\" rule, however this methodology allows me to put together images at a rapid pace, and if more complex scalability is required, the work is split into their own individual images. Since you are reading this here's a crash course at how the image works - (WIP):\n\nSee `/container/base/functions/` for more detailed documentation for the various commands and functions/shortcuts\n\n- Put defaults in `/container/defaults/(script name)`\n- Put functions in `/container/functions/(script name)`\n- Put Initialization script in `container/init/init.d/(script name)`\n-\n  Put at the top:\n\n````bash\n#!/command/with-contenv bash                            # Pull in Container Environment Variables from Containerfile/Container Runtime\n\nsource /container/base/functions/container/init         # Pull in all custom container functions from this image\nprepare_service single                                  # Read functions and defaults only from files matching this script filename - see detailed docs for more\nSERVICE_NAME=\"nginx\"                                    # set the prefix for any logging\n\n.. your scripting ..\nprint_info \"This an INFO log\"\nprint_warn \"This a WARN log\"\nprint_error \"This is a ERROR log\"\n\nliftoff                                                 # this writes to the state files at /container/state/.container/ to prove the script executed properly\n````\n\nOnce initialization has completed, it will then execute a service script.\n\n- Put the services script in `/container/run/available/(script_name)/run`\n\n  Put at the top:\n\n````bash\n#!/command/with-contenv bash                            # Pull in Container Environment Variables from Containerfile/Container Runtime\n\nsource /container/base/functions/container/init         # Pull in all custom container functions from this image\nSERVICE_NAME=\"nginx\"                                    # set the prefix for any logging\n\ncheck_container_initialized                             # Check to make sure that the container properly initialized before proceeding\ncheck_service_initialized init                          # Check to see if the init/(script name) executed correctly, otherwise wait until it has done\nliftoff                                                 # Prove script was able to execute properly\n\nprint_start \"Starting processname\"                      # Show STARTING log prefix, and also show if enabled a counter, and execute process watchdog script\nfakeprocess (args)                                      # whatever your process you want to start is\n````\n\n| Parameter                     | Description                                                                          | Default     |\n| ----------------------------- | ------------------------------------------------------------------------------------ | ----------- |\n| `CONTAINER_SKIP_SANITY_CHECK` | Skip the checking to see if all scripts in /container/init/init.d executed correctly | `FALSE`     |\n| `DEBUG_MODE`                  | Show all script output (set -x)                                                      | `FALSE`     |\n| `SERVICE_NAME`                | Used for prefixing the script that is running                                        | `container` |\n\n## Debug Mode\n\nWhen using this as a base image, create statements in your startup scripts to check for existence of `DEBUG_MODE=TRUE`\nand set various parameters in your applications to output more detail, enable debugging modes, and so on.\nIn this base image it does the following:\n\n* Shows all script output (equivalent to set -x)\n\n### Shell Access\n\nFor debugging and maintenance, `bash` and `sh` are available in the container.\n\n## Support \u0026 Maintenance\n\n- For community help, tips, and community discussions, visit the [Discussions board](../../discussions).\n- For personalized support or a support agreement, see [Nfrastack Support](https://nfrastack.com/).\n- To report bugs, submit a [Bug Report](issues/new). Usage questions may be closed as not-a-bug.\n- Feature requests are welcome, but not guaranteed. For prioritized development, consider a support agreement.\n- Updates are best-effort, with priority given to active production use and support agreements.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnfrastack%2Fcontainer-base","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnfrastack%2Fcontainer-base","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnfrastack%2Fcontainer-base/lists"}