├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── automated_deployment ├── create_folder_structure.sh ├── deploy_all_containers.sh └── install_docker.sh ├── code_server.yml ├── duplicati.yml ├── file_browser.yml ├── guacamole.yml ├── heimdall.yml ├── jellyfin.yml ├── jellyseer.yml ├── monitoring.yml ├── nginx.yml ├── portainer.yml ├── prowlarr.yml ├── qbittorrent.yml ├── radarr.yml ├── sonarr.yml ├── syncthing.yml ├── unmanic.yml ├── uptime_kuma.yml ├── vaultwarden.yml ├── watchtower.yml └── wireguard.yml /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | mail@rishavnandi.com. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributions 2 | 3 | ## General Contribution Guidelines 4 | 5 | A big welcome and thank you for considering contributing to this open source project! It’s people like you that make it a reality for users in our community. 6 | 7 | Reading and following these guidelines will help us make the contribution process easy and effective for everyone involved. It also communicates that you agree to respect the time of the developers managing and developing this open source project. In return, we will reciprocate that respect by addressing your issue, assessing changes, and helping you finalize your pull requests. 8 | 9 | ## Quicklinks 10 | 11 | - [Contributions](#contributions) 12 | - [General Contribution Guidelines](#general-contribution-guidelines) 13 | - [Quicklinks](#quicklinks) 14 | - [Getting Started](#getting-started) 15 | - [Code of Conduct](#code-of-conduct) 16 | - [Issues](#issues) 17 | - [Pull Requests](#pull-requests) 18 | - [Getting Help](#getting-help) 19 | 20 | ## Getting Started 21 | 22 | ## Code of Conduct 23 | 24 | We take our open source community seriously and hold ourselves and other contributors to high standards of communication. By participating and contributing to this project, you agree to uphold our [Code of Conduct](/CODE_OF_CONDUCT.md). 25 | 26 |
27 | 28 | Contributions are made to this repo via Issues and Pull Requests (PRs). A few general guidelines that cover both: 29 | 30 | - Search for existing Issues and PRs before creating your own. 31 | - We work hard to makes sure issues are handled in a timely manner but, depending on the impact, it could take a while to investigate the root cause. A friendly ping in the comment thread to the submitter or a contributor can help draw attention if your issue is blocking. 32 | - If you've never contributed before, check out [this awesome blog](https://auth0.com/blog/a-first-timers-guide-to-an-open-source-project/) for resources and tips on how to get started. 33 | 34 | ### Issues 35 | 36 | Issues should be used to report problems with the project, request a new feature, or to discuss potential changes before a PR is created. When you create a new Issue, a template will be loaded that will guide you through collecting and providing the information we need to investigate. 37 | 38 | If you find an Issue that addresses the problem you're having, please add your own reproduction information to the existing issue rather than creating a new one. Adding a [reaction](https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) can also help be indicating to our maintainers that a particular problem is affecting more than just the reporter. 39 | 40 | ### Pull Requests 41 | 42 | PRs to our libraries are always welcome and can be a quick way to get your fix or improvement slated for the next release. In general, PRs should: 43 | 44 | - Only fix/add the functionality in question **OR** address wide-spread whitespace/style issues, not both. 45 | - Add unit or integration tests for fixed or changed functionality (if a test suite already exists). 46 | - Address a single concern in the least number of changed lines as possible. 47 | - Include documentation in the repo. 48 | - Be accompanied by a complete Pull Request template (loaded automatically when a PR is created). 49 | 50 | For changes that address core functionality or would require breaking changes (e.g. a major release), it's best to open an Issue to discuss your proposal first. This is not required but can save time creating and reviewing changes. 51 | 52 | In general, we follow the ["fork-and-pull" Git workflow](https://github.com/susam/gitpr) 53 | 54 | 1. Fork the repository to your own Github account 55 | 2. Clone the project to your machine 56 | 3. Create a branch locally with a succinct but descriptive name 57 | 4. Commit changes to the branch 58 | 5. Following any formatting and testing guidelines specific to this repo 59 | 6. Push changes to your fork 60 | 7. Open a PR in our repository and follow the PR template so that we can efficiently review the changes. 61 | 62 | ## Getting Help 63 | 64 | You can always reach out to the community or one of the maintainers for help. Feel free to triage issues. Every bit of information helps ! 65 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 2 | Version 2, December 2004 3 | 4 | Copyright (C) 2004 Sam Hocevar 5 | 6 | Everyone is permitted to copy and distribute verbatim or modified 7 | copies of this license document, and changing it is allowed as long 8 | as the name is changed. 9 | 10 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 11 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 12 | 13 | 0. You just DO WHAT THE FUCK YOU WANT TO. 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Docker HomeLab Boilerplates 2 | 3 | Contains docker compose YAML configurations for some of the most popular docker containers, along with bash scripts created by me for easily deploying the containers. 4 | 5 | The boilerplates list is not exhaustive by any means, but for a beginner homelaber it covers mostly all the popular docker containers like Radarr and Sonarr to download movies and shows and Jellyfin to stream them from anywhere anytime. 6 | 7 | - ## [Usage](https://github.com/rishavnandi/Boiler_Plates#usage-1) 8 | - ## [Important Notes](https://github.com/rishavnandi/Boiler_Plates#important) 9 | 10 | ![Screenshot (6)](https://user-images.githubusercontent.com/101431112/193395772-fa724e23-c278-4231-921f-7e3fb333f708.png) 11 | ![Screenshot (1)](https://user-images.githubusercontent.com/92152818/195198940-3e5711de-f9b4-40ba-af87-ab1846f2038a.png) 12 | ![Screenshot (2)](https://user-images.githubusercontent.com/92152818/195198972-e8a78298-12da-4e42-97ed-c295f92e3547.png) 13 | 14 | 15 | ## Usage 16 | Make sure your server is updated 17 | ```bash 18 | sudo apt update && sudo apt upgrade -y && sudo reboot 19 | ``` 20 | 21 | Clone the repo 22 | ```bash 23 | git clone https://github.com/rishavnandi/boiler_plates && cd boiler_plates/Automated_Deployment 24 | ``` 25 | 26 | Make the scripts executable 27 | ```bash 28 | sudo chmod +x install_docker.sh create_folder_structure.sh deploy_all_containers.sh 29 | ``` 30 | 31 | Install Docker 32 | ```bash 33 | sudo ./install_docker.sh 34 | ``` 35 | 36 | Reboot or logout so user can be added to Docker group 37 | ```bash 38 | sudo reboot 39 | ``` 40 | 41 | Run the script to create all docker compose files 42 | ```bash 43 | cd boiler_plates/automated_deployment && sudo ./create_folder_structure.sh 44 | ``` 45 | 46 | Finally deploy all containers 47 | ```bash 48 | ./deploy_all_containers.sh 49 | ``` 50 | 51 | ## Important! 52 | 53 | Now you can navigate to ```:81``` to get to nginx proxy manager and you can start setting your domains up. 54 | 55 | To check the id values for your system simply type "id" without the quotation marks in your terminal and you will see the gid and uid values for your system. 56 | -------------------------------------------------------------------------------- /automated_deployment/create_folder_structure.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo " 3 | 4 | ██████╗ ██████╗ ██████╗██╗ ██╗███████╗██████╗ ██████╗ ██████╗ ██╗██╗ ███████╗██████╗ ██████╗ ██╗ █████╗ ████████╗███████╗███████╗ 5 | ██╔══██╗██╔═══██╗██╔════╝██║ ██╔╝██╔════╝██╔══██╗ ██╔══██╗██╔═══██╗██║██║ ██╔════╝██╔══██╗██╔══██╗██║ ██╔══██╗╚══██╔══╝██╔════╝██╔════╝ 6 | ██║ ██║██║ ██║██║ █████╔╝ █████╗ ██████╔╝ ██████╔╝██║ ██║██║██║ █████╗ ██████╔╝██████╔╝██║ ███████║ ██║ █████╗ ███████╗ 7 | ██║ ██║██║ ██║██║ ██╔═██╗ ██╔══╝ ██╔══██╗ ██╔══██╗██║ ██║██║██║ ██╔══╝ ██╔══██╗██╔═══╝ ██║ ██╔══██║ ██║ ██╔══╝ ╚════██║ 8 | ██████╔╝╚██████╔╝╚██████╗██║ ██╗███████╗██║ ██║ ██████╔╝╚██████╔╝██║███████╗███████╗██║ ██║██║ ███████╗██║ ██║ ██║ ███████╗███████║ 9 | ╚═════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝ 10 | 11 | https://github.com/rishavnandi/Boiler_Plates.git " 12 | 13 | echo "------------------------Enter Username------------------------" 14 | read name 15 | cd /home/$name/ 16 | 17 | echo "------------------------Enter Code Server Password------------------------" 18 | read codepass 19 | echo "------------------------Enter Wireguard Password------------------------" 20 | read wirepass 21 | 22 | echo "------------------------Enter Your PUID------------------------" 23 | read PUID 24 | echo "------------------------Enter Your PGID------------------------" 25 | read PGID 26 | echo "------------------------Enter Your Timezone------------------------" 27 | read TZ 28 | echo "------------------------Enter IP Address of your server------------------------" 29 | read IP 30 | 31 | echo "------------------------Creating Folder Structure------------------------" 32 | sleep 2 33 | mkdir data 34 | mkdir docker_apps 35 | mkdir data/torrents 36 | mkdir data/media 37 | mkdir data/torrents/movies 38 | mkdir data/torrents/tv 39 | mkdir data/media/movies 40 | mkdir data/media/tv 41 | 42 | 43 | APPS=( 44 | "file_browser" 45 | "heimdall" 46 | "jackett" 47 | "jellyfin" 48 | "monitoring" 49 | "nginx" 50 | "qbittorrent" 51 | "radarr" 52 | "sonarr" 53 | "unmanic" 54 | "uptime_kuma" 55 | "wireguard" 56 | "prowlarr" 57 | "guacamole" 58 | "portainer" 59 | "vaultwarden" 60 | "code_server" 61 | "duplicati" 62 | "jellyseerr" 63 | "watchtower" 64 | "syncthing" 65 | ) 66 | 67 | for app in ${APPS[@]}; 68 | do 69 | mkdir docker_apps/$app && touch docker_apps/$app/docker-compose.yml 70 | done 71 | 72 | mkdir /etc/prometheus/ 73 | 74 | apt install unzip 75 | cd docker_apps/qbittorrent && wget https://github.com/WDaan/VueTorrent/releases/download/v0.19.1/vuetorrent.zip && unzip vuetorrent.zip 76 | cd /home/$name/ 77 | 78 | echo "------------------------Folder Structure Created------------------------" 79 | echo "------------------------Creating Docker Compose Files------------------------" 80 | sleep 2 81 | touch docker_apps/file_browser/filebrowser.db 82 | touch /etc/prometheus/prometheus.yml 83 | 84 | echo "------------------------Docker Compose Files Created------------------------" 85 | echo "------------------------Creating Docker Network------------------------" 86 | docker network create homelab 87 | echo "------------------------Docker Network Created------------------------" 88 | sleep 2 89 | echo "------------------------Setting up Docker Compose Files------------------------" 90 | echo "global: 91 | scrape_interval: 15s 92 | 93 | scrape_configs: 94 | - job_name: 'prometheus' 95 | scrape_interval: 5s 96 | static_configs: 97 | - targets: ['localhost:9090'] 98 | 99 | - job_name: 'node_exporter' 100 | static_configs: 101 | - targets: ['node_exporter:9100'] 102 | 103 | - job_name: 'cadvisor' 104 | static_configs: 105 | - targets: ['cadvisor:8080']" >> /etc/prometheus/prometheus.yml 106 | 107 | echo "version: '3' 108 | services: 109 | file-browser: 110 | image: filebrowser/filebrowser 111 | container_name: file_browser 112 | user: $PUID:$PGID 113 | ports: 114 | - 8081:80 115 | volumes: 116 | - /home/$name/:/srv/ 117 | - /home/$name/docker_apps/file_browser/filebrowser.db:/database.db 118 | restart: unless-stopped 119 | security_opt: 120 | - no-new-privileges:true" >> docker_apps/file_browser/docker-compose.yml 121 | 122 | echo "version: '2.1' 123 | services: 124 | heimdall: 125 | image: lscr.io/linuxserver/heimdall 126 | container_name: heimdall 127 | environment: 128 | - PUID=$PUID 129 | - PGID=$PGID 130 | - TZ=$TZ 131 | volumes: 132 | - /home/$name/docker_apps/heimdall/config/:/config 133 | #ports: 134 | # - 80:80 135 | # - 443:443 136 | restart: unless-stopped 137 | 138 | networks: 139 | default: 140 | external: 141 | name: homelab" >> docker_apps/heimdall/docker-compose.yml 142 | 143 | echo "version: '2.1' 144 | services: 145 | jellyfin: 146 | image: lscr.io/linuxserver/jellyfin 147 | container_name: jellyfin 148 | environment: 149 | - PUID=$PUID 150 | - PGID=$PGID 151 | - TZ=$TZ 152 | - JELLYFIN_PublishedServerUrl=$IP #optional 153 | volumes: 154 | - /home/$name/docker_apps/jellyfin/config/:/config 155 | - /home/$name/data/media/:/data/media 156 | #ports: 157 | # - 8096:8096 158 | # - 8920:8920 #optional 159 | # - 7359:7359/udp #optional 160 | # - 1900:1900/udp #optional 161 | restart: unless-stopped 162 | 163 | networks: 164 | default: 165 | external: 166 | name: homelab" >> docker_apps/jellyfin/docker-compose.yml 167 | 168 | echo "version: '3' 169 | 170 | volumes: 171 | prometheus-data: 172 | driver: local 173 | grafana-data: 174 | driver: local 175 | 176 | services: 177 | prometheus: 178 | image: prom/prometheus:latest 179 | container_name: prometheus 180 | #ports: 181 | # - "9090:9090" 182 | volumes: 183 | - /etc/prometheus:/etc/prometheus 184 | - prometheus-data:/prometheus 185 | restart: unless-stopped 186 | command: 187 | - "--config.file=/etc/prometheus/prometheus.yml" 188 | 189 | node_exporter: 190 | image: quay.io/prometheus/node-exporter:latest 191 | container_name: node_exporter 192 | command: 193 | - '--path.rootfs=/host' 194 | pid: host 195 | restart: unless-stopped 196 | volumes: 197 | - '/:/host:ro,rslave' 198 | 199 | cadvisor: 200 | image: raymondmm/cadvisor 201 | container_name: cadvisor 202 | # ports: 203 | # - "8080:8080" 204 | volumes: 205 | - /:/rootfs:ro 206 | - /var/run:/var/run:ro 207 | - /sys:/sys:ro 208 | - /var/lib/docker/:/var/lib/docker:ro 209 | - /dev/disk/:/dev/disk:ro 210 | devices: 211 | - /dev/kmsg 212 | restart: unless-stopped 213 | 214 | grafana: 215 | image: grafana/grafana-oss:latest 216 | container_name: grafana 217 | #ports: 218 | # - "3000:3000" 219 | volumes: 220 | - grafana-data:/var/lib/grafana 221 | restart: unless-stopped 222 | 223 | networks: 224 | default: 225 | external: 226 | name: homelab" >> docker_apps/monitoring/docker-compose.yml 227 | 228 | echo "version: '3' 229 | services: 230 | app: 231 | image: 'jc21/nginx-proxy-manager:latest' 232 | restart: unless-stopped 233 | ports: 234 | # These ports are in format : 235 | - '80:80' # Public HTTP Port 236 | - '443:443' # Public HTTPS Port 237 | - '81:81' # Admin Web Port 238 | # Add any other Stream port you want to expose 239 | # - '21:21' # FTP 240 | 241 | # Uncomment the next line if you uncomment anything in the section 242 | # environment: 243 | # Uncomment this if you want to change the location of 244 | # the SQLite DB file within the container 245 | # DB_SQLITE_FILE: "/data/database.sqlite" 246 | 247 | # Uncomment this if IPv6 is not enabled on your host 248 | # DISABLE_IPV6: 'true' 249 | 250 | volumes: 251 | - ./data:/data 252 | - ./letsencrypt:/etc/letsencrypt 253 | 254 | networks: 255 | default: 256 | external: 257 | name: homelab" >> docker_apps/nginx/docker-compose.yml 258 | 259 | echo "version: '2.1' 260 | services: 261 | qbittorrent: 262 | image: lscr.io/linuxserver/qbittorrent 263 | container_name: qbittorrent 264 | environment: 265 | - PUID=$PUID 266 | - PGID=$PGID 267 | - TZ=$TZ 268 | - WEBUI_PORT=8080 269 | volumes: 270 | - /home/$name/docker_apps/qbittorrent/config:/config 271 | - /home/$name/data/torrents/:/data/torrents/ 272 | - /home/$name/docker_apps/qbittorrent/vuetorrent:/vuetorrent 273 | ports: 274 | - 8080:8080 275 | - 6881:6881 276 | - 6881:6881/udp 277 | restart: unless-stopped" >> docker_apps/qbittorrent/docker-compose.yml 278 | 279 | echo "version: '2.1' 280 | services: 281 | radarr: 282 | image: lscr.io/linuxserver/radarr 283 | container_name: radarr 284 | environment: 285 | - PUID=$PUID 286 | - PGID=$PGID 287 | - TZ=$TZ 288 | - DOCKER_MODS=ghcr.io/gilbn/theme.park:radarr 289 | volumes: 290 | - /home/$name/docker_apps/radarr/config/:/config 291 | - /home/$name/data/:/data #optional 292 | #ports: 293 | # - 7878:7878 294 | restart: unless-stopped 295 | 296 | networks: 297 | default: 298 | external: 299 | name: homelab" >> docker_apps/radarr/docker-compose.yml 300 | 301 | echo "version: '2.1' 302 | services: 303 | sonarr: 304 | image: lscr.io/linuxserver/sonarr 305 | container_name: sonarr 306 | environment: 307 | - PUID=$PUID 308 | - PGID=$PGID 309 | - TZ=$TZ 310 | - DOCKER_MODS=ghcr.io/gilbn/theme.park:sonarr 311 | volumes: 312 | - /home/$name/docker_apps/sonarr/config/:/config 313 | - /home/$name/data/:/data 314 | #ports: 315 | # - 8989:8989 316 | restart: unless-stopped 317 | 318 | networks: 319 | default: 320 | external: 321 | name: homelab" >> docker_apps/sonarr/docker-compose.yml 322 | 323 | echo "version: '2.4' 324 | services: 325 | unmanic: 326 | container_name: unmanic 327 | image: josh5/unmanic:latest 328 | #ports: 329 | # - 8888:8888 330 | environment: 331 | - PUID=$PUID 332 | - PGID=$PGID 333 | volumes: 334 | - /home/$name/docker_apps/unmanic/config/:/config 335 | - /home/$name/data/media/movies/:/library/movies 336 | - /home/$name/data/media/tv/:/library/tv 337 | - /tmp/:/tmp/unmanic 338 | restart: unless-stopped 339 | 340 | networks: 341 | default: 342 | external: 343 | name: homelab" >> docker_apps/unmanic/docker-compose.yml 344 | 345 | echo "version: '3.1' 346 | services: 347 | uptime-kuma: 348 | image: louislam/uptime-kuma:1 349 | container_name: uptime_kuma 350 | volumes: 351 | - /home/$name/docker_apps/uptime_kuma/data:/app/data 352 | #ports: 353 | # - 3001:3001 354 | restart: unless-stopped 355 | security_opt: 356 | - no-new-privileges:true 357 | 358 | networks: 359 | default: 360 | external: 361 | name: homelab" >> docker_apps/uptime_kuma/docker-compose.yml 362 | 363 | echo "version: '3.8' 364 | services: 365 | wg-easy: 366 | environment: 367 | - WG_HOST=$IP 368 | - PASSWORD=$wirepass 369 | image: weejewel/wg-easy 370 | container_name: wg-easy 371 | volumes: 372 | - /home/$name/docker_apps/wireguard/config/:/etc/wireguard 373 | ports: 374 | - 51820:51820/udp 375 | - 51821:51821/tcp 376 | restart: unless-stopped 377 | cap_add: 378 | - NET_ADMIN 379 | - SYS_MODULE 380 | sysctls: 381 | - net.ipv4.ip_forward=1 382 | - net.ipv4.conf.all.src_valid_mark=1" >> docker_apps/wireguard/docker-compose.yml 383 | 384 | echo "version: '2.1' 385 | services: 386 | prowlarr: 387 | image: lscr.io/linuxserver/prowlarr:develop 388 | container_name: prowlarr 389 | environment: 390 | - PUID=$PUID 391 | - PGID=$PGID 392 | - TZ=$TZ 393 | volumes: 394 | - /home/$name/docker_apps/prowlarr/config/:/config 395 | #ports: 396 | # - 9696:9696 397 | restart: unless-stopped 398 | 399 | networks: 400 | default: 401 | external: 402 | name: homelab" >> docker_apps/prowlarr/docker-compose.yml 403 | 404 | echo "version: '2' 405 | services: 406 | guacamole: 407 | image: oznu/guacamole:armhf 408 | container_name: guacamole 409 | volumes: 410 | - /home/$name/docker_apps/guacamole/config/:/config 411 | ports: 412 | - 9000:8080 413 | restart: unless-stopped" >> docker_apps/guacamole/docker-compose.yml 414 | 415 | echo "version: '3' 416 | services: 417 | portainer: 418 | image: portainer/portainer-ce:latest 419 | container_name: portainer 420 | restart: unless-stopped 421 | security_opt: 422 | - no-new-privileges:true 423 | volumes: 424 | - /etc/localtime:/etc/localtime:ro 425 | - /var/run/docker.sock:/var/run/docker.sock:ro 426 | - ./portainer-data:/data 427 | #ports: 428 | # - 9443:9443 429 | 430 | networks: 431 | default: 432 | external: 433 | name: homelab" >> docker_apps/portainer/docker-compose.yml 434 | 435 | echo "version: '3' 436 | services: 437 | vaultwarden: 438 | image: vaultwarden/server:latest 439 | container_name: vaultwarden 440 | restart: unless-stopped 441 | volumes: 442 | - ./vw-data:/data 443 | 444 | networks: 445 | default: 446 | external: 447 | name: homelab" >> docker_apps/vaultwarden/docker-compose.yml 448 | 449 | echo "version: '2.1' 450 | services: 451 | code-server: 452 | image: lscr.io/linuxserver/code-server:latest 453 | container_name: code-server 454 | environment: 455 | - PUID=$PUID 456 | - PGID=$PGID 457 | - TZ=$TZ 458 | - PASSWORD=$codepass #optional 459 | - SUDO_PASSWORD=$codepass #optional 460 | volumes: 461 | - /home/$name/:/home/$name 462 | - /home/$name/docker_apps/code_server/config:/config 463 | #ports: 464 | # - 8443:8443 465 | restart: unless-stopped 466 | 467 | networks: 468 | default: 469 | external: 470 | name: homelab" >> docker_apps/code_server/docker-compose.yml 471 | 472 | echo "version: '2.1' 473 | services: 474 | duplicati: 475 | image: lscr.io/linuxserver/duplicati:latest 476 | container_name: duplicati 477 | environment: 478 | - PUID=0 479 | - PGID=0 480 | - TZ=$TZ 481 | - CLI_ARGS= #optional 482 | volumes: 483 | - /home/$name/docker_apps/duplicati/config:/config 484 | - /home/$name/docker_apps/duplicati/backups:/backups 485 | - /home/$name/docker_apps/:/source 486 | ports: 487 | - 8200:8200 488 | restart: unless-stopped 489 | 490 | networks: 491 | default: 492 | external: 493 | name: homelab" >> docker_apps/duplicati/docker-compose.yml 494 | 495 | echo "version: '3' 496 | services: 497 | jellyseerr: 498 | image: fallenbagel/jellyseerr:latest 499 | container_name: jellyseerr 500 | environment: 501 | - LOG_LEVEL=debug 502 | - TZ=$TZ 503 | #ports: 504 | # - 5055:5055 505 | volumes: 506 | - /home/$name/docker_apps/jellyseerr/config:/app/config 507 | restart: unless-stopped 508 | 509 | networks: 510 | default: 511 | external: 512 | name: homelab" >> docker_apps/jellyseerr/docker-compose.yml 513 | 514 | echo "version: '3' 515 | services: 516 | watchtower: 517 | image: containrrr/watchtower 518 | volumes: 519 | - /var/run/docker.sock:/var/run/docker.sock 520 | environment: 521 | - WATCHTOWER_CLEANUP=true 522 | restart: unless-stopped" >> docker_apps/watchtower/docker-compose.yml 523 | 524 | echo "version: '2.1' 525 | services: 526 | syncthing: 527 | image: lscr.io/linuxserver/syncthing:latest 528 | container_name: syncthing 529 | hostname: syncthing #optional 530 | environment: 531 | - PUID=$PUID 532 | - PGID=$PGID 533 | - TZ=$TZ 534 | volumes: 535 | - /home/$name/docker_apps/syncthing/config/:/config 536 | - /home/$name/docker_apps/syncthing/:/data1 537 | ports: 538 | # - 8384:8384 539 | - 22000:22000/tcp 540 | - 22000:22000/udp 541 | - 21027:21027/udp 542 | restart: unless-stopped 543 | 544 | networks: 545 | default: 546 | external: 547 | name: homelab" >> docker_apps/syncthing/docker-compose.yml 548 | 549 | echo "------------------------Docker Compose Files Setup Complete------------------------" 550 | sleep 2 551 | echo "------------------------Adding Required Permissions to Folders------------------------" 552 | chown -R $name:$name data/ 553 | chmod -R 775 data/ 554 | chown -R $name:$name docker_apps/ 555 | chmod -R 775 docker_apps/ 556 | echo "------------------------Permissions Added------------------------" 557 | echo "------------------------Setup Complete Now Run Deploy.sh without sudo to Deploy the Containers------------------------" 558 | -------------------------------------------------------------------------------- /automated_deployment/deploy_all_containers.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo " 3 | 4 | ██████╗ ██████╗ ██████╗██╗ ██╗███████╗██████╗ ██████╗ ██████╗ ██╗██╗ ███████╗██████╗ ██████╗ ██╗ █████╗ ████████╗███████╗███████╗ 5 | ██╔══██╗██╔═══██╗██╔════╝██║ ██╔╝██╔════╝██╔══██╗ ██╔══██╗██╔═══██╗██║██║ ██╔════╝██╔══██╗██╔══██╗██║ ██╔══██╗╚══██╔══╝██╔════╝██╔════╝ 6 | ██║ ██║██║ ██║██║ █████╔╝ █████╗ ██████╔╝ ██████╔╝██║ ██║██║██║ █████╗ ██████╔╝██████╔╝██║ ███████║ ██║ █████╗ ███████╗ 7 | ██║ ██║██║ ██║██║ ██╔═██╗ ██╔══╝ ██╔══██╗ ██╔══██╗██║ ██║██║██║ ██╔══╝ ██╔══██╗██╔═══╝ ██║ ██╔══██║ ██║ ██╔══╝ ╚════██║ 8 | ██████╔╝╚██████╔╝╚██████╗██║ ██╗███████╗██║ ██║ ██████╔╝╚██████╔╝██║███████╗███████╗██║ ██║██║ ███████╗██║ ██║ ██║ ███████╗███████║ 9 | ╚═════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝ 10 | 11 | https://github.com/rishavnandi/Boiler_Plates.git " 12 | echo "------------------------Enter Username------------------------" 13 | read name 14 | cd /home/$name && cd docker_apps 15 | echo "------------------------Deploying Containers------------------------" 16 | 17 | docker_apps=( 18 | "file_browser" 19 | "heimdall" 20 | "jellyfin" 21 | "monitoring" 22 | "qbittorrent" 23 | "radarr" 24 | "sonarr" 25 | "unmanic" 26 | "uptime_kuma" 27 | "wireguard" 28 | "prowlarr" 29 | "guacamole" 30 | "nginx" 31 | "portainer" 32 | "vaultwarden" 33 | "code_server" 34 | "duplicati" 35 | "jellyseerr" 36 | "watchtower" 37 | "syncthing" 38 | ) 39 | 40 | for app in ${docker_apps[@]}; do 41 | cd $app 42 | docker compose up -d --force-recreate 43 | cd .. 44 | done 45 | -------------------------------------------------------------------------------- /automated_deployment/install_docker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo " 3 | 4 | ██████╗ ██████╗ ██████╗██╗ ██╗███████╗██████╗ ██████╗ ██████╗ ██╗██╗ ███████╗██████╗ ██████╗ ██╗ █████╗ ████████╗███████╗███████╗ 5 | ██╔══██╗██╔═══██╗██╔════╝██║ ██╔╝██╔════╝██╔══██╗ ██╔══██╗██╔═══██╗██║██║ ██╔════╝██╔══██╗██╔══██╗██║ ██╔══██╗╚══██╔══╝██╔════╝██╔════╝ 6 | ██║ ██║██║ ██║██║ █████╔╝ █████╗ ██████╔╝ ██████╔╝██║ ██║██║██║ █████╗ ██████╔╝██████╔╝██║ ███████║ ██║ █████╗ ███████╗ 7 | ██║ ██║██║ ██║██║ ██╔═██╗ ██╔══╝ ██╔══██╗ ██╔══██╗██║ ██║██║██║ ██╔══╝ ██╔══██╗██╔═══╝ ██║ ██╔══██║ ██║ ██╔══╝ ╚════██║ 8 | ██████╔╝╚██████╔╝╚██████╗██║ ██╗███████╗██║ ██║ ██████╔╝╚██████╔╝██║███████╗███████╗██║ ██║██║ ███████╗██║ ██║ ██║ ███████╗███████║ 9 | ╚═════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝ 10 | 11 | https://github.com/rishavnandi/Boiler_Plates.git " 12 | 13 | arch=$(arch) 14 | 15 | echo "------------------------Updating Cache------------------------" 16 | apt update 17 | sleep 2 18 | 19 | echo "------------------------Installing Docker------------------------" 20 | apt install \ 21 | ca-certificates \ 22 | curl \ 23 | gnupg \ 24 | lsb-release 25 | 26 | mkdir -p /etc/apt/keyrings 27 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 28 | sleep 2 29 | 30 | echo \ 31 | "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ 32 | $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 33 | 34 | apt update 35 | sleep 2 36 | apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin 37 | sleep 2 38 | service docker start 39 | 40 | echo "------------------------Docker Installed------------------------" 41 | sleep 2 42 | echo "------------------------Adding User to Docker Group------------------------" 43 | echo "------------------------Enter Username------------------------" 44 | read name 45 | usermod -aG docker $name 46 | 47 | echo "------------------------User Added to Docker Group------------------------" 48 | echo "------------------------Installing Docker Compose------------------------" 49 | sleep 2 50 | DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} 51 | mkdir -p $DOCKER_CONFIG/cli-plugins 52 | curl -SL https://github.com/docker/compose/releases/download/v2.11.2/docker-compose-linux-$arch -o $DOCKER_CONFIG/cli-plugins/docker-compose 53 | sleep 2 54 | chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose 55 | 56 | echo "------------------------Docker Compose Installed------------------------" 57 | echo "------------------------Logout And Log Back In Or Reboot The Server------------------------" 58 | echo "------------------------Then Run Create_Folder_Structure.sh with sudo To Create The Folder Structure------------------------" 59 | -------------------------------------------------------------------------------- /code_server.yml: -------------------------------------------------------------------------------- 1 | --- 2 | version: "2.1" 3 | services: 4 | code-server: 5 | image: lscr.io/linuxserver/code-server:latest 6 | container_name: code-server 7 | environment: 8 | - PUID=1000 9 | - PGID=1000 10 | - TZ=Europe/London 11 | - PASSWORD=password #optional 12 | - HASHED_PASSWORD= #optional 13 | - SUDO_PASSWORD=password #optional 14 | - SUDO_PASSWORD_HASH= #optional 15 | - PROXY_DOMAIN=code-server.my.domain #optional 16 | - DEFAULT_WORKSPACE=/config/workspace #optional 17 | volumes: 18 | - /path/to/appdata/config:/config 19 | #ports: 20 | # - 8443:8443 21 | restart: unless-stopped -------------------------------------------------------------------------------- /duplicati.yml: -------------------------------------------------------------------------------- 1 | --- 2 | version: "2.1" 3 | services: 4 | duplicati: 5 | image: lscr.io/linuxserver/duplicati:latest 6 | container_name: duplicati 7 | environment: 8 | - PUID=1000 9 | - PGID=1000 10 | - TZ=Europe/London 11 | - CLI_ARGS= #optional 12 | volumes: 13 | - :/config 14 | - :/backups 15 | - :/source 16 | #ports: 17 | # - 8200:8200 18 | restart: unless-stopped -------------------------------------------------------------------------------- /file_browser.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | file-browser: 4 | image: filebrowser/filebrowser 5 | container_name: file_browser 6 | user: : 7 | ports: 8 | - 8081:80 9 | volumes: 10 | - /home/ubuntu/:/srv/ 11 | - /home/ubuntu/docker_apps/file_browser/filebrowser.db:/database.db 12 | restart: unless-stopped 13 | security_opt: 14 | - no-new-privileges:true -------------------------------------------------------------------------------- /guacamole.yml: -------------------------------------------------------------------------------- 1 | version: "2" 2 | services: 3 | guacamole: 4 | image: oznu/guacamole:armhf 5 | container_name: guacamole 6 | volumes: 7 | - /home/docker_apps/guacamole/config/:/config 8 | ports: 9 | - 9000:8080 10 | restart: unless-stopped 11 | -------------------------------------------------------------------------------- /heimdall.yml: -------------------------------------------------------------------------------- 1 | version: "2.1" 2 | services: 3 | heimdall: 4 | image: lscr.io/linuxserver/heimdall 5 | container_name: heimdall 6 | environment: 7 | - PUID= 8 | - PGID= 9 | - TZ=Asia/Kolkata 10 | volumes: 11 | - /home/ubuntu/docker_apps/heimdall/config/:/config 12 | #ports: 13 | # - 80:80 14 | # - 443:443 15 | restart: unless-stopped -------------------------------------------------------------------------------- /jellyfin.yml: -------------------------------------------------------------------------------- 1 | version: "2.1" 2 | services: 3 | jellyfin: 4 | image: lscr.io/linuxserver/jellyfin 5 | container_name: jellyfin 6 | environment: 7 | - PUID= 8 | - PGID= 9 | - TZ=Asia/Kolkata 10 | - JELLYFIN_PublishedServerUrl= #optional 11 | volumes: 12 | - /home/ubuntu/docker_apps/jellyfin/config/:/config 13 | - /home/ubuntu/data/media/:/data/media 14 | #ports: 15 | # - 8096:8096 16 | # - 8920:8920 #optional 17 | # - 7359:7359/udp #optional 18 | # - 1900:1900/udp #optional 19 | restart: unless-stopped -------------------------------------------------------------------------------- /jellyseer.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | jellyseerr: 4 | image: fallenbagel/jellyseerr:latest 5 | container_name: jellyseerr 6 | environment: 7 | - LOG_LEVEL=debug 8 | - TZ=Asia/Tashkent 9 | #ports: 10 | # - 5055:5055 11 | volumes: 12 | - /path/to/appdata/config:/app/config 13 | restart: unless-stopped -------------------------------------------------------------------------------- /monitoring.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | volumes: 4 | prometheus-data: 5 | driver: local 6 | grafana-data: 7 | driver: local 8 | 9 | services: 10 | prometheus: 11 | image: prom/prometheus:latest 12 | container_name: prometheus 13 | #ports: 14 | # - "9090:9090" 15 | volumes: 16 | - /etc/prometheus:/etc/prometheus 17 | - prometheus-data:/prometheus 18 | restart: unless-stopped 19 | command: 20 | - "--config.file=/etc/prometheus/prometheus.yml" 21 | 22 | node_exporter: 23 | image: quay.io/prometheus/node-exporter:latest 24 | container_name: node_exporter 25 | command: 26 | - '--path.rootfs=/host' 27 | pid: host 28 | restart: unless-stopped 29 | volumes: 30 | - '/:/host:ro,rslave' 31 | 32 | cadvisor: 33 | image: budry/cadvisor-arm:latest 34 | container_name: cadvisor 35 | # ports: 36 | # - "8080:8080" 37 | volumes: 38 | - /:/rootfs:ro 39 | - /var/run:/var/run:ro 40 | - /sys:/sys:ro 41 | - /var/lib/docker/:/var/lib/docker:ro 42 | - /dev/disk/:/dev/disk:ro 43 | devices: 44 | - /dev/kmsg 45 | restart: unless-stopped 46 | 47 | grafana: 48 | image: grafana/grafana-oss:latest 49 | container_name: grafana 50 | #ports: 51 | # - "3000:3000" 52 | volumes: 53 | - grafana-data:/var/lib/grafana 54 | restart: unless-stopped -------------------------------------------------------------------------------- /nginx.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | app: 4 | image: 'jc21/nginx-proxy-manager:latest' 5 | restart: unless-stopped 6 | ports: 7 | # These ports are in format : 8 | - '80:80' # Public HTTP Port 9 | - '443:443' # Public HTTPS Port 10 | - '81:81' # Admin Web Port 11 | # Add any other Stream port you want to expose 12 | # - '21:21' # FTP 13 | 14 | # Uncomment the next line if you uncomment anything in the section 15 | # environment: 16 | # Uncomment this if you want to change the location of 17 | # the SQLite DB file within the container 18 | # DB_SQLITE_FILE: "/data/database.sqlite" 19 | 20 | # Uncomment this if IPv6 is not enabled on your host 21 | # DISABLE_IPV6: 'true' 22 | 23 | volumes: 24 | - ./data:/data 25 | - ./letsencrypt:/etc/letsencrypt -------------------------------------------------------------------------------- /portainer.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | portainer: 4 | image: portainer/portainer-ce:latest 5 | container_name: portainer 6 | restart: unless-stopped 7 | security_opt: 8 | - no-new-privileges:true 9 | volumes: 10 | - /etc/localtime:/etc/localtime:ro 11 | - /var/run/docker.sock:/var/run/docker.sock:ro 12 | - ./portainer-data:/data 13 | #ports: 14 | # - 9443:9443 -------------------------------------------------------------------------------- /prowlarr.yml: -------------------------------------------------------------------------------- 1 | version: "2.1" 2 | services: 3 | prowlarr: 4 | image: lscr.io/linuxserver/prowlarr:develop 5 | container_name: prowlarr 6 | environment: 7 | - PUID= 8 | - PGID= 9 | - TZ=Asia/Kolkata 10 | volumes: 11 | - /home/ubuntu/docker_apps/prowlarr/config/:/config 12 | #ports: 13 | # - 9696:9696 14 | restart: unless-stopped -------------------------------------------------------------------------------- /qbittorrent.yml: -------------------------------------------------------------------------------- 1 | version: "2.1" 2 | services: 3 | qbittorrent: 4 | image: lscr.io/linuxserver/qbittorrent 5 | container_name: qbittorrent 6 | environment: 7 | - PUID= 8 | - PGID= 9 | - TZ=Asia/Kolkata 10 | - WEBUI_PORT=8080 11 | volumes: 12 | - /home/ubuntu/docker_apps/qbittorrent/config:/config 13 | - /home/ubuntu/data/torrents/:/data/torrents/ 14 | - /home/ubuntu/docker_apps/qbittorrent/vuetorrent:/vuetorrent 15 | ports: 16 | - 8080:8080 17 | - 6881:6881 18 | - 6881:6881/udp 19 | restart: unless-stopped -------------------------------------------------------------------------------- /radarr.yml: -------------------------------------------------------------------------------- 1 | version: "2.1" 2 | services: 3 | radarr: 4 | image: lscr.io/linuxserver/radarr 5 | container_name: radarr 6 | environment: 7 | - PUID= 8 | - PGID= 9 | - TZ=Asia/Kolkata 10 | volumes: 11 | - /home/ubuntu/docker_apps/radarr/config/:/config 12 | - /home/ubuntu/data/:/data #optional 13 | #ports: 14 | # - 7878:7878 15 | restart: unless-stopped -------------------------------------------------------------------------------- /sonarr.yml: -------------------------------------------------------------------------------- 1 | version: "2.1" 2 | services: 3 | sonarr: 4 | image: lscr.io/linuxserver/sonarr 5 | container_name: sonarr 6 | environment: 7 | - PUID= 8 | - PGID= 9 | - TZ=Asia/Kolkata 10 | volumes: 11 | - /home/ubuntu/docker_apps/sonarr/config/:/config 12 | - /home/ubuntu/data/:/data 13 | #ports: 14 | # - 8989:8989 15 | restart: unless-stopped -------------------------------------------------------------------------------- /syncthing.yml: -------------------------------------------------------------------------------- 1 | --- 2 | version: "2.1" 3 | services: 4 | syncthing: 5 | image: lscr.io/linuxserver/syncthing:latest 6 | container_name: syncthing 7 | hostname: syncthing #optional 8 | environment: 9 | - PUID=1000 10 | - PGID=1000 11 | - TZ=Europe/London 12 | volumes: 13 | - /home/ubuntu/docker_apps/syncthing/config/:/config 14 | - /home/ubuntu/docker_apps/syncthing/:/data1 15 | ports: 16 | - 8384:8384 17 | - 22000:22000/tcp 18 | - 22000:22000/udp 19 | - 21027:21027/udp 20 | restart: unless-stopped -------------------------------------------------------------------------------- /unmanic.yml: -------------------------------------------------------------------------------- 1 | version: '2.4' 2 | services: 3 | unmanic: 4 | container_name: unmanic 5 | image: josh5/unmanic:latest 6 | #ports: 7 | # - 8888:8888 8 | environment: 9 | - PUID= 10 | - PGID= 11 | volumes: 12 | - /home/ubuntu/docker_apps/unmanic/config/:/config 13 | - /home/ubuntu/data/media/movies/:/library/movies 14 | - /home/ubuntu/data/media/tv/:/library/tv 15 | - /tmp/:/tmp/unmanic 16 | restart: unless-stopped -------------------------------------------------------------------------------- /uptime_kuma.yml: -------------------------------------------------------------------------------- 1 | version: '3.1' 2 | services: 3 | uptime-kuma: 4 | image: louislam/uptime-kuma:1 5 | container_name: uptime_kuma 6 | volumes: 7 | - /home/ubuntu/docker_apps/uptime_kuma/data:/app/data 8 | #ports: 9 | # - 3001:3001 10 | restart: unless-stopped 11 | security_opt: 12 | - no-new-privileges:true -------------------------------------------------------------------------------- /vaultwarden.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | vaultwarden: 4 | image: vaultwarden/server:latest 5 | container_name: vaultwarden 6 | restart: unless-stopped 7 | volumes: 8 | - ./vw-data:/data 9 | #ports: 10 | # - 80:80 -------------------------------------------------------------------------------- /watchtower.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | watchtower: 4 | image: containrrr/watchtower 5 | volumes: 6 | - /var/run/docker.sock:/var/run/docker.sock 7 | enviroment: 8 | - WATCHTOWER_CLEANUP=true 9 | restart: unless-stopped 10 | -------------------------------------------------------------------------------- /wireguard.yml: -------------------------------------------------------------------------------- 1 | version: "3.8" 2 | services: 3 | wg-easy: 4 | environment: 5 | - WG_HOST= 6 | image: weejewel/wg-easy 7 | container_name: wg-easy 8 | volumes: 9 | - .:/etc/wireguard 10 | ports: 11 | - "51820:51820/udp" 12 | - "51821:51821/tcp" 13 | restart: unless-stopped 14 | cap_add: 15 | - NET_ADMIN 16 | - SYS_MODULE 17 | sysctls: 18 | - net.ipv4.ip_forward=1 19 | - net.ipv4.conf.all.src_valid_mark=1 20 | --------------------------------------------------------------------------------