├── 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 | 
11 | 
12 | 
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 |
--------------------------------------------------------------------------------