Skip to content

Commit 239bf81

Browse files
committed
Init commit
0 parents  commit 239bf81

12 files changed

+432
-0
lines changed

.github/workflows/deploy.yaml

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: Deploy
2+
on:
3+
push:
4+
branches:
5+
- main
6+
7+
jobs:
8+
deploy:
9+
name: Deploy (${{ matrix.config.stack_name }}, ${{ matrix.config.host }})
10+
runs-on: self-hosted
11+
strategy:
12+
matrix:
13+
config:
14+
- { host: '10.10.0.102', stack_name: 'arr-stack' }
15+
- { host: '10.10.0.102', stack_name: 'portainer' }
16+
- { host: '10.10.0.102', stack_name: 'uptime-kuma' }
17+
- { host: '10.10.0.102', stack_name: 'n8n' }
18+
- { host: '10.10.0.102', stack_name: 'wallos' }
19+
- { host: '10.10.0.102', stack_name: 'homarr' }
20+
- { host: '10.10.0.102', stack_name: 'cadvisor' }
21+
- { host: '10.10.0.107', stack_name: 'cadvisor' }
22+
- { host: '10.10.0.108', stack_name: 'cadvisor' }
23+
- { host: '10.10.0.102', stack_name: 'watchtower', ntfy_title: 'Docker_102', ntfy_topic: 'ehcan-docker-PVBwxrR8Hm'}
24+
- { host: '10.10.0.107', stack_name: 'watchtower', ntfy_title: 'Traefik_107', ntfy_topic: 'ehcan-traefik-pVRanLAbLF'}
25+
- { host: '10.10.0.108', stack_name: 'watchtower', ntfy_title: 'Grafana_108', ntfy_topic: 'ehcan-grafana-vpSU2BdGnR'}
26+
27+
env:
28+
DOCKER_HOST: tcp://${{ matrix.config.host }}:2375
29+
DOCKER_CONTEXT_NAME: ${{ matrix.config.stack_name }}-ctx
30+
DOCKER_COMPOSE_FILE: ${{ matrix.config.stack_name }}.yml
31+
DOCKER_PROJECT_NAME: ${{ matrix.config.stack_name }}
32+
33+
steps:
34+
- name: Checkout code
35+
uses: actions/checkout@v4
36+
37+
- name: Set up Docker context
38+
run: |
39+
docker context \
40+
create ${{ env.DOCKER_CONTEXT_NAME }} \
41+
--docker host=${{ env.DOCKER_HOST }}
42+
43+
- name: Inject secrets (arr-stack)
44+
if: env.DOCKER_PROJECT_NAME == 'arr-stack'
45+
run: |
46+
echo "${{ secrets.ARR_CIFS }}" >> $GITHUB_ENV
47+
- name: Inject secrets (firefox-vpn)
48+
if: env.DOCKER_PROJECT_NAME == 'firefox-vpn'
49+
run: |
50+
echo "${{ secrets.GLUETUN_SECRETS }}" > gluetun_secrets.env
51+
- name: Inject Watchtower configs
52+
if: env.DOCKER_PROJECT_NAME == 'watchtower'
53+
run: |
54+
echo "NTFY_TITLE=${{ matrix.config.ntfy_title }}" >> $GITHUB_ENV
55+
echo "NTFY_TOPIC=${{ matrix.config.ntfy_topic }}" >> $GITHUB_ENV
56+
57+
- name: Deploy with Docker Compose
58+
run: |
59+
docker --context ${{ env.DOCKER_CONTEXT_NAME }} compose --file ${{ env.DOCKER_COMPOSE_FILE }} pull
60+
docker --context ${{ env.DOCKER_CONTEXT_NAME }} compose --file ${{ env.DOCKER_COMPOSE_FILE }} \
61+
--project-name ${{ env.DOCKER_PROJECT_NAME }} up -d --remove-orphans
62+
63+
- name: Cleanup Docker context
64+
if: always()
65+
run: |
66+
docker context rm ${{ env.DOCKER_CONTEXT_NAME }} --force

archived/firefox-vpn.yml

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: firefox-vpn
2+
services:
3+
firefox:
4+
image: lscr.io/linuxserver/firefox:latest
5+
container_name: firefox
6+
security_opt:
7+
- seccomp:unconfined #optional
8+
environment:
9+
- PUID=1000
10+
- PGID=1000
11+
- TZ=Europe/Berlin
12+
volumes:
13+
- /data/firefox/config:/config:rw
14+
shm_size: "1gb"
15+
restart: unless-stopped
16+
network_mode: service:gluetun
17+
depends_on:
18+
- gluetun
19+
gluetun:
20+
image: qmcgaw/gluetun
21+
container_name: gluetun
22+
env_file: "gluetun_secrets.env"
23+
restart: unless-stopped
24+
cap_add:
25+
- NET_ADMIN
26+
ports:
27+
- 3303:3001
28+
# environment: Update it in GitHub Action Secret
29+
# - VPN_SERVICE_PROVIDER=torguard
30+
# - OPENVPN_USER
31+
# - OPENVPN_PASSWORD
32+
# - SERVER_COUNTRIES=Netherlands
33+
# - TZ=Europe/Berlin

archived/nextcloud.yml

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
services:
2+
nextcloud-aio-mastercontainer:
3+
image: nextcloud/all-in-one:latest
4+
init: true
5+
restart: always
6+
container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed as otherwise AIO will not work correctly
7+
volumes:
8+
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config # This line is not allowed to be changed as otherwise the built-in backup solution will not work
9+
- /var/run/docker.sock:/var/run/docker.sock:ro # May be changed on macOS, Windows or docker rootless. See the applicable documentation. If adjusting, don't forget to also set 'WATCHTOWER_DOCKER_SOCKET_PATH'!
10+
ports:
11+
- 80:80 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
12+
- 8080:8080
13+
- 8443:8443 # Can be removed when running behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
14+
environment: # Is needed when using any of the options below
15+
# AIO_DISABLE_BACKUP_SECTION: false # Setting this to true allows to hide the backup section in the AIO interface. See https://github.com/nextcloud/all-in-one#how-to-disable-the-backup-section
16+
APACHE_PORT: 11000 # Is needed when running behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
17+
APACHE_IP_BINDING: 0.0.0.0 # Should be set when running behind a web server or reverse proxy (like Apache, Nginx, Cloudflare Tunnel and else) that is running on the same host. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
18+
# BORG_RETENTION_POLICY: --keep-within=7d --keep-weekly=4 --keep-monthly=6 # Allows to adjust borgs retention policy. See https://github.com/nextcloud/all-in-one#how-to-adjust-borgs-retention-policy
19+
# COLLABORA_SECCOMP_DISABLED: false # Setting this to true allows to disable Collabora's Seccomp feature. See https://github.com/nextcloud/all-in-one#how-to-disable-collaboras-seccomp-feature
20+
# NEXTCLOUD_DATADIR: /mnt/ncdata # Allows to set the host directory for Nextcloud's datadir. ⚠️⚠️⚠️ Warning: do not set or adjust this value after the initial Nextcloud installation is done! See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir
21+
# NEXTCLOUD_MOUNT: /mnt/ # Allows the Nextcloud container to access the chosen directory on the host. See https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host
22+
# NEXTCLOUD_UPLOAD_LIMIT: 10G # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud
23+
# NEXTCLOUD_MAX_TIME: 3600 # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-max-execution-time-for-nextcloud
24+
# NEXTCLOUD_MEMORY_LIMIT: 512M # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-php-memory-limit-for-nextcloud
25+
# NEXTCLOUD_TRUSTED_CACERTS_DIR: /path/to/my/cacerts # CA certificates in this directory will be trusted by the OS of the nexcloud container (Useful e.g. for LDAPS) See See https://github.com/nextcloud/all-in-one#how-to-trust-user-defined-certification-authorities-ca
26+
# NEXTCLOUD_STARTUP_APPS: deck twofactor_totp tasks calendar contacts notes # Allows to modify the Nextcloud apps that are installed on starting AIO the first time. See https://github.com/nextcloud/all-in-one#how-to-change-the-nextcloud-apps-that-are-installed-on-the-first-startup
27+
# NEXTCLOUD_ADDITIONAL_APKS: imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value. See https://github.com/nextcloud/all-in-one#how-to-add-os-packages-permanently-to-the-nextcloud-container
28+
# NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS: imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value. See https://github.com/nextcloud/all-in-one#how-to-add-php-extensions-permanently-to-the-nextcloud-container
29+
# NEXTCLOUD_ENABLE_DRI_DEVICE: true # This allows to enable the /dev/dri device in the Nextcloud container. ⚠️⚠️⚠️ Warning: this only works if the '/dev/dri' device is present on the host! If it should not exist on your host, don't set this to true as otherwise the Nextcloud container will fail to start! See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-transcoding-for-nextcloud
30+
# NEXTCLOUD_KEEP_DISABLED_APPS: false # Setting this to true will keep Nextcloud apps that are disabled in the AIO interface and not uninstall them if they should be installed. See https://github.com/nextcloud/all-in-one#how-to-keep-disabled-apps
31+
# TALK_PORT: 3478 # This allows to adjust the port that the talk container is using. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port
32+
# WATCHTOWER_DOCKER_SOCKET_PATH: /var/run/docker.sock # Needs to be specified if the docker socket on the host is not located in the default '/var/run/docker.sock'. Otherwise mastercontainer updates will fail. For macos it needs to be '/var/run/docker.sock'
33+
SKIP_DOMAIN_VALIDATION: true
34+
# networks: # Is needed when you want to create the nextcloud-aio network with ipv6-support using this file, see the network config at the bottom of the file
35+
# - nextcloud-aio # Is needed when you want to create the nextcloud-aio network with ipv6-support using this file, see the network config at the bottom of the file
36+
# security_opt: ["label:disable"] # Is needed when using SELinux
37+
38+
# # Optional: Caddy reverse proxy. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
39+
# # You can find further examples here: https://github.com/nextcloud/all-in-one/discussions/588
40+
# caddy:
41+
# image: caddy:alpine
42+
# restart: always
43+
# container_name: caddy
44+
# volumes:
45+
# - ./Caddyfile:/etc/caddy/Caddyfile
46+
# - ./certs:/certs
47+
# - ./config:/config
48+
# - ./data:/data
49+
# - ./sites:/srv
50+
# network_mode: "host"
51+
52+
volumes: # If you want to store the data on a different drive, see https://github.com/nextcloud/all-in-one#how-to-store-the-filesinstallation-on-a-separate-drive
53+
nextcloud_aio_mastercontainer:
54+
name: nextcloud_aio_mastercontainer # This line is not allowed to be changed as otherwise the built-in backup solution will not work
55+
56+
# # Optional: If you need ipv6, follow step 1 and 2 of https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md first and then uncomment the below config in order to activate ipv6 for the internal nextcloud-aio network.
57+
# # Please make sure to uncomment also the networking lines of the mastercontainer above in order to actually create the network with docker-compose
58+
# networks:
59+
# nextcloud-aio:
60+
# name: nextcloud-aio # This line is not allowed to be changed as otherwise the created network will not be used by the other containers of AIO
61+
# driver: bridge
62+
# enable_ipv6: true
63+
# ipam:
64+
# driver: default
65+
# config:
66+
# - subnet: fd12:3456:789a:2::/64 # IPv6 subnet to use

archived/nginx-proxy-manager.yml

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
name: nginx-proxy-manager
2+
services:
3+
nginx-proxy-manager:
4+
container_name: nginx-proxy-manager
5+
network_mode: host
6+
image: 'jc21/nginx-proxy-manager:latest'
7+
restart: unless-stopped
8+
environment:
9+
DB_SQLITE_FILE: '/data/database.sqlite'
10+
DISABLE_IPV6: 'true'
11+
volumes:
12+
- /data/nginx-proxy-manager/data:/data
13+
- /data/nginx-proxy-manager/letsencrypt:/etc/letsencrypt

arr-stack.yml

+135
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
name: "arr_stack"
2+
3+
networks:
4+
arr-network:
5+
name: arr-network
6+
7+
x-arr-service: &x-arr-service
8+
environment:
9+
- PUID=1000
10+
- PGID=1000
11+
- TZ=Europe/Berlin
12+
networks:
13+
- arr-network
14+
restart: unless-stopped
15+
extra_hosts:
16+
- "host.jellyfin.server:10.10.0.101"
17+
18+
services:
19+
sonarr:
20+
<<: *x-arr-service
21+
image: lscr.io/linuxserver/sonarr:latest
22+
container_name: sonarr
23+
volumes:
24+
- /data/sonarr/data:/config
25+
- media-server:/media-server
26+
ports:
27+
- 8989:8989
28+
29+
radarr:
30+
<<: *x-arr-service
31+
image: lscr.io/linuxserver/radarr:latest
32+
container_name: radarr
33+
volumes:
34+
- /data/radarr/data:/config
35+
- media-server:/media-server
36+
ports:
37+
- 7878:7878
38+
39+
readarr:
40+
<<: *x-arr-service
41+
image: lscr.io/linuxserver/readarr:develop
42+
container_name: readarr
43+
volumes:
44+
- /data/readarr/data:/config
45+
- media-server:/media-server
46+
ports:
47+
- 8787:8787
48+
49+
lidarr:
50+
<<: *x-arr-service
51+
image: lscr.io/linuxserver/lidarr:latest
52+
container_name: lidarr
53+
volumes:
54+
- /data/lidarr/data:/config
55+
- media-server:/media-server
56+
ports:
57+
- 8686:8686
58+
59+
prowlarr:
60+
<<: *x-arr-service
61+
image: lscr.io/linuxserver/prowlarr:latest
62+
container_name: prowlarr
63+
volumes:
64+
- /data/prowlarr/data:/config
65+
ports:
66+
- 9696:9696
67+
68+
bazarr:
69+
<<: *x-arr-service
70+
image: lscr.io/linuxserver/bazarr:latest
71+
container_name: bazarr
72+
volumes:
73+
- /data/bazarr/data:/config
74+
- media-server:/media-server
75+
ports:
76+
- 6767:6767
77+
78+
jellyseerr:
79+
<<: *x-arr-service
80+
image: fallenbagel/jellyseerr:latest
81+
container_name: jellyseerr
82+
ports:
83+
- 5055:5055
84+
volumes:
85+
- /data/jellyseerr/data:/app/config
86+
87+
ariang:
88+
<<: *x-arr-service
89+
container_name: ariang
90+
image: hurlenko/aria2-ariang
91+
ports:
92+
- 8077:8080
93+
volumes:
94+
- /data/ariang/data:/aria2/conf
95+
- media-server:/media-server
96+
environment:
97+
- RPC_SECRET=Kvih8VMr6SMxgaainUoQkjANMKUUTO
98+
- ARIA2RPCPORT=443
99+
- TZ=Europe/Berlin
100+
- PUID=1000
101+
- PGID=1000
102+
103+
audiobookshelf:
104+
<<: *x-arr-service
105+
container_name: audiobookshelf
106+
image: ghcr.io/advplyr/audiobookshelf:latest
107+
ports:
108+
- 13378:80
109+
volumes:
110+
- media-server:/media-server
111+
- /data/audiobookshelf/config:/config
112+
- /data/audiobookshelf/metadata:/metadata
113+
114+
metube:
115+
<<: *x-arr-service
116+
image: ghcr.io/alexta69/metube
117+
container_name: metube
118+
ports:
119+
- "8081:8081"
120+
volumes:
121+
- media-server:/media-server
122+
environment:
123+
- DOWNLOAD_DIR=/media-server/Youtube
124+
deploy:
125+
resources:
126+
limits:
127+
cpus: '0.7'
128+
129+
volumes:
130+
media-server:
131+
driver: local
132+
driver_opts:
133+
type: cifs
134+
device: //10.10.0.148/media-server
135+
o: username=${CIFS_USERNAME},password=${CIFS_PASSWORD},uid=1000,gid=1000,file_mode=0755,dir_mode=0755

cadvisor.yml

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: cadvisor
2+
services:
3+
cadvisor:
4+
image: gcr.io/cadvisor/cadvisor
5+
privileged: true
6+
container_name: cadvisor
7+
restart: unless-stopped
8+
ports:
9+
- 9323:8080
10+
volumes:
11+
- /:/rootfs:ro
12+
- /var/run:/var/run:rw
13+
- /sys:/sys:ro
14+
- /var/lib/docker/:/var/lib/docker:ro
15+
- /var/lib/docker/:/var/lib/docker:ro
16+
- /cgroup/cpu:/cgroup/cpu
17+
- /cgroup/cpuacct:/cgroup/cpuacct
18+
- /cgroup/cpuset:/cgroup/cpuset
19+
- /cgroup/memory:/cgroup/memory
20+
- /cgroup/blkio:/cgroup/blkio

homarr.yml

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
name: "homarr"
2+
3+
services:
4+
homarr:
5+
container_name: homarr
6+
image: ghcr.io/ajnart/homarr:latest
7+
restart: unless-stopped
8+
volumes:
9+
- /data/homarr/configs:/app/data/configs
10+
- /data/homarr/icons:/app/public/icons
11+
- /data/homarr/data:/data
12+
environment:
13+
DISABLE_ANALYTICS: true
14+
ports:
15+
- '7575:7575'

n8n.yml

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
volumes:
2+
n8n_data:
3+
4+
services:
5+
n8n:
6+
image: docker.n8n.io/n8nio/n8n
7+
container_name: n8n
8+
restart: unless-stopped
9+
ports:
10+
- "5678:5678"
11+
environment:
12+
- N8N_HOST=n8n.ehcan.io
13+
- N8N_PORT=5678
14+
- N8N_PROTOCOL=https
15+
- NODE_ENV=production
16+
- WEBHOOK_URL=https://n8n.ehcan.io
17+
- GENERIC_TIMEZONE=Europe/Berlin
18+
- N8N_DIAGNOSTICS_ENABLED=false
19+
volumes:
20+
- n8n_data:/home/node/.n8n

portainer.yml

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: "portainer"
2+
3+
services:
4+
portainer:
5+
image: portainer/portainer-ce:latest
6+
container_name: portainer
7+
restart: unless-stopped
8+
network_mode: host
9+
volumes:
10+
- /var/run/docker.sock:/var/run/docker.sock
11+
- portainer_data:/data
12+
environment:
13+
TZ: Europe/Berlin
14+
15+
volumes:
16+
portainer_data:

0 commit comments

Comments
 (0)