Templates: 133 (counted with count_templates.py)
Templates for Docker/Compose containers. Some are completely custom, but most are an example compose.yml
/docker-compose.yml
file and example .env
file.
Check the template categories section for a list of template types.
- Clone this whole repository:
git clone [email protected]:redjax/docker_templates
. cd
to the directory of the container(s) you want to run- Read the instructions in the
README.md
, if there is one - Copy
.env.example
->.env
, if it exists- Edit the
.env
file to your liking
- Edit the
- Run
docker compose up -d
(or another command, if listed in theREADME.md
)
If you want to create a link to a template, i.e. if you are running a Palworld server and want a link to the template directory in your $HOME
, you can use ln -s
on Linux:
ln -s /path/to/docker_templates/templates/games/docker_palworld_server /path/to/link
With ln -s
, avoid using variables like $HOME
or ~
. These symbolic links are brittle, they work best with absolute paths and will break if you move the source path.
- Navigate to the container(s) you want
- Copy/paste the files, or create the files in your desired path and copy the contents of each file from this repository
- Follow any instructions listed for the container(s)
You can use a sparse checkout to clone parts of this repository. This retains the git structure, while allowing you to "scope" your clone to a specific pathh in the repository.
For example, if you are running a Minecraft server, any time you switch branches to a branch that does not have the code for the currently running server(s), you will corrupt the server if the container is currently running. This leads to either data corruption, or repeatedly cloning the entire repository whenever you want to modify parts of the repository tree.
Instead, you can do a git sparse-checkout
and select only certain path(s) to clone. You can still switch branches, modify code, push/pull changes, etc, but only the path you have checked out will be affected.
For this example, we will checkout only the Minecraft BigChadGuys server. You can change the steps below to fit your needs, i.e. selecting a different file path than the Docker Minecraft BigChadGuys server, or a different branch than main
.
- Clone the repository with minimal history using
git clone --no-checkout [email protected]/redjax/docker_templates.git
- You can choose a different directory name than
docker_templates
by adding a filepath onto the end. For example, to clone into a directory nameddocker_minecraft_bcg
:git clone --no-checkout [email protected]/redjax/docker_templates.git docker_minecraft_bcg
cd
into your newly cloned path
- You can choose a different directory name than
- Enable sparse checkout with
git sparse-checkout set templates/games/docker_mineceraft_server/servers/production/mc-bigchadguys <optional other paths>
- You can add multiple paths after
set
to checkout more than 1 path. Add them where you see<optional other paths>
- You can add multiple paths after
- Checkout the repository
git checkout <branch-name>
After doing a sparse checkout, you can work on this single path of the repository the way you would if you had cloned the whole repository. You can create/switch branches, do git push
/git pull
operations, etc.
All templates are stored in the ./templates
path in one of the categories below.
Template Type | Description |
---|---|
automation | Automations like CI/CD, web agents, no/low-code, etc. |
backup | Containers for setting up backup infrastructure. |
bookmarking | Containers for cataloguing/sharing bookmarks. |
bots | Containers for bot infrastructure, i.e. Discord and Telegram bots. |
code forges | Code forges like Gitea for a self-hosted, Github-like experience. |
database | Containers for database servers, like PostgreSQL and MariaDB. |
documents | Document management, OCR, & more. |
games | Dockerized game servers, like Palworld, Valheim, and Satisfactory. |
llm | Containers for LLMs like ollama. |
media | Containers for media management/streaming. |
messaging | Messaging services & event queues like MQTT, RabbitMQ, etc. |
misc | Miscellaneous templates for specific environments. |
monitoring & alerting | Monitoring & alerting infrastructure. |
networking | Containers for setting up networking infrastructure like reverse proxies & VPNs. |
rss | Containers for managing & reading RSS feeds. |
storage | Storage containers like SeaFile and Minio S3 storage. |
unsorted | Containers that have not been sorted or do not fit neatly into another category. |
web scraping | Containers for facilitating web scraping, like Selenium. |