Creation of repo

main
capntack 2 years ago
commit d838f6f2bb

@ -0,0 +1,24 @@
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to <https://unlicense.org>

@ -0,0 +1,11 @@
# Biulerplates
> **Thank you for visiting!** If you are viewing this repo on GitHub or GitLab, please note that this is just a mirror. Please visit the [originating repo](https://tacksupport.net/git/capntack/Boilerplates) for any comments, issues, pull requests, etc. You can sign in with your GitHub or GitLab account via Oauth2.
<br>
This repository is my personal collection of templates and configurations for various services and tools.
<br>
> **Disclaimer:** While I will try my best to keep these updated to both what I run in production as well as with the services themselves as they update, I cannot garauntee that they will be. As always, perform your own due dilligence. And never run code that you don't understand.

@ -0,0 +1,4 @@
# Roadmap
- Flesh out READMEs for each image
- Remove variables to an .env file

@ -0,0 +1,34 @@
# README
### Style Guide
I like consistency and readability/understandability. As such, I've defined myself a Boilerplate Style Guide for when creating new docker compose files. On a case by case basis, I may go against this template if it makes sense.
The official documentation for how the Docker Compose specification works can be found [here](https://docs.docker.com/compose/compose-file/).
Note that, [starting with Docker Compose 1.27.0+](https://docs.docker.com/compose/compose-file/compose-versioning/), it is no longer necessary to specify the Docker Compose version (i.e. `version: "3.1`) as this option has been deprecated.
The order of operations for how the `cap_add` and `cap_drop` options can be found [here](https://stackoverflow.com/questions/63162665/docker-compose-order-of-cap-drop-and-cap-add/63219871#63219871) or reference the image below:
![cap_add and cap_drop matrix](https://i.imgur.com/rDhRS4U.jpg)
You can name Docker Compose files hower you like as long as it has a .yml or .yaml extension. However, if you name it anything other than `docker-compose.yml` or `docker-compose.yaml`, you must pass the filename in the docker compose command. i.e. `docker compose <DOCKER_COMPOSE_FILE> up -d`
I've left the default host side ports in these boilerplates. Which means several of them would conflict with each other. Please update accordingly to your setup.
I use [custom networks](https://docs.docker.com/compose/networking/#specify-custom-networks) for all of my containers that are able to utilize them. Feel free to adjust to your own setup.
```yaml
# <FILE_NAME>.yml
# Docker Hub: <LINK_TO_IMAGE(S)_HUB_PAGE(S)>
# Documentation: <LINK_TO_DOCUMENTATION_IF_NEEDED>
# <ANY_EXTRA_NOTES>
volumes:
networks:
services:
<LIST_SERVICES_AS_MAKES_SENSE>:
<LIST_RUNTIME_ARGUEMENTS_ALPHABETICALLY>
```

@ -0,0 +1,26 @@
# docker-compose.yml
# Docker Hub: https://hub.docker.com/r/checkmk/check-mk-raw
# Documentation: https://docs.checkmk.com/latest/en/
# The WebUI can be found at http://<HOST_IP>:<WEBUI_PORT>
networks:
<NETWORK_NAME>:
external: true
services:
checkmk:
container_name: checkmk
image: checkmk/check-mk-raw:<VERSION_TAG>
networks:
- <NETWORK_NAME>
ports:
- "5000:5000" # WebUI Port
- "8000:8000" # Checkmk Agent Port
restart: unless-stopped
tmpfs:
- /opt/omd/sites/cmk/tmp:uid=1000,gid=1000
ulimits:
nofile: 1024
volumes:
- /etc/localtime:/etc/localtime:ro
- ./sites:/omd/sites

@ -0,0 +1,24 @@
# docker-compose.yml
# Docker Hub: https://hub.docker.com/r/freshrss/freshrss
# The WebUI can be found at http://<HOST_IP>:<WEBUI_PORT>
networks:
<NETWORK_NAME>:
external: true
services:
freshrss:
container_name: freshrss
environment:
- PUID=1000
- PGID=1000
image: lscr.io/linuxserver/freshrss:<VERSION_TAG>
networks:
- <NETWORK_NAME>
ports:
- "80:80" # WebUI Port
restart: unless-stopped
security_opt:
- no-new-privileges:true
volumes:
- ./config:/config

@ -0,0 +1,39 @@
# docker-compose.yml
# Docker Hub: https://hub.docker.com/_/ghost
# The WebUI can be found at http://<HOST_IP>:<WEBUI_PORT>
# Ghost is very particular about it's variables, hence the odd format
networks:
<NETWORK_NAME>:
external: true
services:
ghost:
container_name: ghost
depends_on:
- ghost-db
environment:
database__client: mysql
database__connection__host: ghost-db
database__connection__user: root
database__connection__database: ghost
database__connection__password: <PASSWORD>
url: <URL>
image: ghost:<VERSION_TAG>
networks:
- <NETWORK_NAME>
ports:
- "2368:2368"
restart: unless-stopped
volumes:
- ./ghost:/var/lib/ghost/content
ghost-db:
container_name: ghost-db
environment:
- MYSQL_ROOT_PASSWORD=<PASSWORD>
image: mysql:<VERSION_TAG>
networks:
- <NETWORK_NAME>
restart: unless-stopped
volumes:
- ./ghost-db:/var/lib/mysql

@ -0,0 +1,26 @@
# docker-compose.yml
# Docker Hub: https://hub.docker.com/r/gitea/gitea
# Documentation: https://docs.gitea.io/en-us/
# The WebUI can be found at http://<HOST_IP>:<WEBUI_PORT>
networks:
<NETWORK_NAME>:
external: true
services:
gitea:
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
image: gitea/gitea:<VERSION_TAG>
networks:
- <NETWORK_NAME>
ports:
- "3000:3000" # WebUI Port
- "22:22" # SSH Port
restart: unless-stopped
volumes:
- ./data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro

@ -0,0 +1,17 @@
# docker-compose.yml
# Docker Hub: https://hub.docker.com/r/corentinth/it-tools
# The WebUI can be found at http://<HOST_IP>:<WEBUI_PORT>
networks:
<NETWORK_NAME>:
external: true
services:
it-tools:
container_name: it-tools
image: corentinth/it-tools:<VERSION_TAG>
networks:
- <NETWORK_NAME>
ports:
- "80:80" # WebUI PORT
restart: unless-stopped

@ -0,0 +1,42 @@
# docker-compose.yml
# linkding Docker Hub: https://hub.docker.com/r/sissbruecker/linkding
# The linkding WebUI can be found at http://<HOST_IP>:<LINKDING_WEBUI_PORT>
# postgres Docker Hub: https://hub.docker.com/_/postgres
networks:
<NETWORK_NAME>:
external: yes
services:
linkding:
container_name: linkding
depends_on:
- linkding-db
environment:
- LD_DB_ENGINE=postgres
- LD_DB_DATABASE=linkding
- LD_DB_USER=linkding
- LD_DB_PASSWORD=<PASSWORD>
- LD_DB_HOST=linkding-db
image: sissbruecker/linkding:<VERSION_TAG>
networks:
- <NETWORK_NAME>
ports:
- "9090:9090" # linkding WebUI Port
restart: unless-stopped
volumes:
- ./linkding/data:/etc/linkding/data
linkding-db:
container_name: linkding-db
environment:
- POSTGRES_DB=linkding
- POSTGRES_USER=linkding
- POSTGRES_PASSWORD=<PASSWORD>
image: postgres:<VERISON_TAG>
logging:
driver: "none"
networks:
- <NETWORK_NAME>
restart: unless-stopped
volumes:
- ./linkding-db/data:/var/lib/postgresql/data

@ -0,0 +1,22 @@
# docker-compose.yml
# Docker Hub: https://hub.docker.com/r/timothystewart6/littlelink-server
# Documentation: https://github.com/techno-tim/littlelink-server
# The WebUI can be found at http://<HOST_IP>:<WEBUI_PORT>
networks:
<NETWORK_NAME>:
external: true
services:
littlelink-server:
container_name: littleLink-server
environment:
- <SEE_DOCUMENTATION>
image: timothystewart6/littlelink-server:<VERSION_TAG>
networks:
- <NETWORK_NAME>
ports:
- "3000:3000" # WebUI Port
restart: unless-stopped
security_opt:
- no-new-privileges:true

@ -0,0 +1,23 @@
# docker-compose.yml
# Docker Hub: https://hub.docker.com/r/jlesage/nginx-proxy-manager
# The WebUI can be found at http://<HOST_IP>:<WEBUI_PORT>
# Default credentials are admin@example.com \ changeme
networks:
<NETWORK_NAME>:
external: true
services:
nginx-proxy-manager:
container_name: nginx-proxy-manager
image: jc21/nginx-proxy-manager:<VERSION_TAG>
networks:
- <NETWORK_NAME>
ports:
- "80:80" # HTTP Port
- "81:81" # WebUI Port
- "443:443" # HTTPS Port
restart: unless-stopped
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt

@ -0,0 +1,17 @@
# docker-compose.yml
# Docker Hub: https://hub.docker.com/r/openspeedtest/latest
# The WebUI can be found at http://<HOST_IP>:<WEBUI_PORT>
networks:
<NETWORK_NAME>:
external: true
services:
openspeedtest:
container_name: openspeedtest
image: openspeedtest/latest:<VERSION_TAG>
networks:
- <NETWORK_NAME>
ports:
- "3000:3000" # WebUI Port
restart: unless-stopped

@ -0,0 +1,22 @@
# docker-compose.yml
# Docker Hub: https://hub.docker.com/r/organizr/organizr/
# The WebUI can be found at http://<HOST_IP>:<WEBUI_PORT>
networks:
<NETWORK_NAME>:
external: true
services:
organizr:
container_name: organizr
environment:
- PUID=1000
- PGID=1000
image: organizr/organizr:<VERSION_TAG>
networks:
- <NETWORK_NAME>
ports:
- "80:80" # WebUI Port
restart: unless-stopped
volumes:
- ./config:/config

@ -0,0 +1,16 @@
# docker-compose.yml
# Docker Hub: https://hub.docker.com/r/pihole/pihole
# The WebUI can be found at http://<HOST_IP>/admin
services:
pi-hole:
container_name: pi-hole
environment:
- TZ=<TZ>
- WEBPASSWORD=<PASSWORD>
image: pihole/pihole:<VERSION_TAG>
network_mode: host
restart: unless-stopped
volumes:
- ./pihole:/etc/pihole
- ./dnsmasq.d:/etc/dnsmasq.d

@ -0,0 +1,20 @@
# docker-compose.yml
# Docker Hub: https://hub.docker.com/r/portainer/agent
# Documentation: https://docs.portainer.io/admin/environments/add/docker#connecting-via-the-portainer-agent
networks:
<NETWORK_NAME>:
external: true
services:
portainer-agent:
container_name: portainer-agent
image: portainer/agent:<VERSION_TAG>
networks:
- <NETWORK_NAME>
ports:
- "9001:9001" # Portainer Agent Port
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes

@ -0,0 +1,26 @@
# docker-compose.yml
# Docker Hub: https://hub.docker.com/r/portainer/portainer-ce
# The WebUI can be found at http://<HOST_IP>:<WEBUI_PORT>
# I would suggest unchecking the data checkbox during setup
# Then navigating to the Users tab, selecting the admin user, and renaming
# Then navigating to the Settins tab, check Force HTTPS only, then Apply Changes
networks:
<NETWORK_NAME>:
external: true
services:
portainer-ce:
container_name: portainer-ce
image: portainer/portainer-ce:<VERSION_TAG>
networks:
- <NETWORK_NAME>
ports:
- "9443:9443" # WebUI Port
restart: unless-stopped
security_opt:
- no-new-privileges:true
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data:/data

@ -0,0 +1,19 @@
# docker-compose.yml
# Docker Hub: https://hub.docker.com/r/louislam/uptime-kuma
# The WebUI can be found at http://<HOST_IP>:<WEBUI_PORT>
networks:
<NETWORK_NAME>:
external: true
services:
uptime-kuma:
container_name: uptime-kuma
image: louislam/uptime-kuma:<VERSION_TAG>
networks:
- <NETWORK_NAME>
ports:
- "3001:3001" # WebUI Port
restart: unless-stopped
volumes:
- ./data:/app/data

@ -0,0 +1,21 @@
# docker-compose.yml
# Docker Hub: https://hub.docker.com/r/containrrr/watchtower
# Documentation: https://containrrr.dev/watchtower/
# Watchtower is very particular about it's variables, hence the odd format
networks:
<NETWORK_NAME>:
external: true
services:
watchtower:
container_name: watchtower
environment:
TZ: <TZ>
<SEE_DOCUMENTATION>: <FOR_VARIABLES>
image: containrrr/watchtower:<VERSION>
networks:
- <NETWORK_NAME>
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock

@ -0,0 +1,44 @@
# docker-compose.yml
# Wiki.js Docker Hub: https://hub.docker.com/r/requarks/wiki
# The Wiki.js WebUI can be found at http://<HOST_IP>:<WIKIJS_WEBUI_PORT>
# postgres Docker Hub: https://hub.docker.com/_/postgres
volumes:
db:
networks:
<NETWORK_NAME>:
external: true
services:
wikijs:
container_name: wikijs
depends_on:
- wikijs-db
environment:
- DB_TYPE=postgres
- DB_HOST=Wikijs-db
- DB_PORT=5432
- DB_USER=wikijs
- DB_NAME=wiki
- DB_PASS=<PASSWORD>
image: requarks/wiki:<VERSION_TAG>
networks:
- <NETWORK_NAME>
ports:
- "3000:3000" # Wiki.js WebUI Port
restart: unless-stopped
wikijs-db:
container_name: wikijs-db
environment:
- POSTGRES_USER=wikijs
- POSTGRES_DB=wiki
- POSTGRES_PASSWORD=<PASSWORD>
image: postgres:<VERSION_TAG>
logging:
driver: "none"
networks:
- <NETWORK_NAME>
restart: unless-stopped
volumes:
- db:/var/lib/postgresql/data
Loading…
Cancel
Save