A pre-configured server environment bundled with Docker Compose and configuration files, designed to simplify setup. They authenticate the owner, validate best practices, and enforce security, ensuring a reliable, secure, and standardized foundation for your local or cloud managed server.
As the platform evolves, more templates will be added for other tools and applications, expanding the range of use cases and ensuring a standardized, secure, and best-practice-based environment for any server setup.
This repository is meant to be used in combination with the Open WebUI starter. While the project initial was created to create an Open WebUI environment quickly, additional templates are available to build other environments.
- Connect
- Subscriptions & Donations
- Current Templates
- Learn About Templates
- Dependencies
- Contribution
- Star History
- License
Welcome! Join the Observable World Discord to connect with like-minded others and get real-time support. If you encounter any challenges, I'm here to help however I can!
Thank you for finding this useful! Your support means the world to me. If you’d like to help me continue sharing code freely, any subscripton or donation—no matter how small—would go a long way. Together, we can keep this community thriving!
- Open Webui Starter Template
- Open Webui Starter Template - No GPU
- Open Webui Starter Template - No GPU, Nginx, or Auth Validator
- N8N Basic Template
The locker.yaml defines configuration templates for Docker-based application stacks. It's a declarative specification that allows users to create customizable, multi-service environments with user inputs, dynamic variable assignment, and automated setup commands.
Core Structure:
id
: Unique UUID identifier for the templatetitle
: Human-readable template namedescription
: Template purpose explanationurl
: Repository URL for the templatefiles
: Array of template files to process (e.g.,compose.yaml.template
)inputs
: User-configurable variables and dynamic value generatorsassignments
: Mappings from inputs to configuration files with formattingcommands
: Executable shell commands for post-creation setup and management
Inputs define variables that customize the deployment and come in two types:
Human Inputs - User-prompted values with required fields:
key
: Variable name (required)title
: Question shown to user (required)default
: Default value (required)
- key: NGINX_HOST
title: "What ip or domain name should we use"
default: localhost
Dynamic Inputs - Automatically generated values with required fields:
key
: Variable name (required)type
: Generation method (required)
- key: SECRETKEY
type: dynamic:RandStr 16
Dynamic types include:
dynamic:RandStr N
- Random N-character string where N is any positive integer (e.g.,dynamic:RandStr 16
,dynamic:RandStr 32
)dynamic:Timezone
- System timezone
Assignments are used to set values in configuration files by mapping input variables to file content. They generate dynamically formatted values by substituting input variables into format templates using placeholders that conform to the Unix printf function specification.
assignments:
- service: auth # Service identifier
format: | # Multi-line content template
GIN_MODE="release"
JWT_SECRET="%s" # printf-style placeholders for variable substitution
inputs:
- SECRETKEY # Variables substituted in order
path: "env/auth.env" # Output file path
Assignments can be used with inputs to generate various file types: environment files, Docker Compose YAML, JSON configs, and Nginx templates. The format string supports complex multi-line content where variables are substituted using standard printf format specifiers (%s
, %d
, %f
, etc.) in the order they appear in the inputs array.
Commands define executable shell commands that can be executed after the project has been created. These are post-creation setup and management operations that automate common tasks like starting services, downloading models, or configuring components.
commands:
- name: "Download embedding model" # Human-readable description
command: "docker compose exec ollama ollama pull %s" # Shell command with placeholders
inputs:
- EMBEDDING_MODEL # Variables for substitution (optional)
Commands support variable substitution using printf-style placeholders and the inputs array. They are typically used for:
- Service management:
docker compose up service -d
- Model/asset downloads:
docker compose exec ollama ollama pull %s
- Configuration updates:
wget
commands for remote configs - Status reporting:
echo "View in browser at http://%s:%s/"
- Multi-step setup sequences: Ordered list of commands for complete environment initialization
The specification supports complex multi-service stacks like the Open WebUI example with 12+ services including authentication, databases, LLM serving, and reverse proxies.
- Starter: Tool for quickly creating docker compose environments based on predefine templates
I am deeply grateful for any contributions to the Observable World project! If you’d like to contribute, simply fork this repository and submit a pull request with any improvements, additions, or fixes you’d like to see. I will review and consider any suggestions — thank you for being part of this journey!
This project is licensed under the Apache 2 License. Find more in the LICENSE document.