mirror of
https://github.com/mr-vercetti/homeserver.git
synced 2025-07-01 17:45:32 +02:00
Compare commits
16 Commits
6448921ea3
...
main
Author | SHA1 | Date | |
---|---|---|---|
1cb9b55d2c | |||
37d1b55a5d | |||
627b23466f | |||
7f249f593b | |||
e1c25b02d3 | |||
ae6e105534 | |||
14dc5d79ac | |||
d7c059145e | |||
b6d21c2c22 | |||
5fcb61e4c9 | |||
94994a678f | |||
24f4ec532f | |||
369f7b7dc8 | |||
4009ee8ca4 | |||
eb056980fa | |||
4e2eee792a |
Binary file not shown.
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 131 KiB |
30
README.md
30
README.md
@ -1,37 +1,43 @@
|
|||||||
# mr-vercetti/homeserver
|
# mr-vercetti/homeserver
|
||||||

|

|
||||||
|
|
||||||
This is my home server project that I started because I value the privacy of my data, I don't like paying subscriptions and because self-hosting is really fucking cool.
|
This is my home server project that I started because I value the privacy of my data, I don't like paying subscriptions and because self-hosting is really cool.
|
||||||
|
|
||||||
## Services
|
## Services
|
||||||
All services are deployed using Docker compose and are run as a non-root user.
|
All services are deployed using Docker Compose stacks.
|
||||||
|
|
||||||
### Maintenance
|
### Maintenance
|
||||||
* [ddclient](https://github.com/linuxserver/docker-ddclient) - DDNS
|
* [ddclient](https://github.com/linuxserver/docker-ddclient) - DDNS
|
||||||
* [SWAG](https://github.com/linuxserver/docker-swag) - reverse proxy with SSL certbot and fail2ban
|
* [SWAG](https://github.com/linuxserver/docker-swag) - reverse proxy with SSL certbot and fail2ban
|
||||||
* [watchtower](https://github.com/containrrr/watchtower) - notifications about docker image updates
|
* [watchtower](https://github.com/containrrr/watchtower) - notifications about docker image updates
|
||||||
* [Duplicati](https://github.com/linuxserver/docker-duplicati) - cool backup
|
* [Backrest](https://github.com/garethgeorge/backrest) - backup solution, restic frontend
|
||||||
software
|
|
||||||
* [Uptime Kuma](https://github.com/louislam/uptime-kuma) - fancy uptime monitoring tool
|
* [Uptime Kuma](https://github.com/louislam/uptime-kuma) - fancy uptime monitoring tool
|
||||||
* [Scrutiny](https://github.com/AnalogJ/scrutiny) - S.M.A.R.T monitoring
|
* [Scrutiny](https://github.com/AnalogJ/scrutiny) - S.M.A.R.T monitoring
|
||||||
|
* [Beszel](https://github.com/henrygd/beszel) - monitoring dashboard
|
||||||
|
* [Dozzle](https://github.com/amir20/dozzle) - Docker logs viewer
|
||||||
|
* [gluetun](https://github.com/qdm12/gluetun) - VPN client
|
||||||
|
|
||||||
### Media
|
### Media
|
||||||
* [Jellyfin](https://github.com/linuxserver/docker-jellyfin) - media server
|
* [Jellyfin](https://github.com/linuxserver/docker-jellyfin) - media server
|
||||||
|
* [Jellyseer](https://github.com/fallenbagel/jellyseerr) - media request manager
|
||||||
* [Radarr](https://github.com/linuxserver/docker-radarr) - movie collection manager
|
* [Radarr](https://github.com/linuxserver/docker-radarr) - movie collection manager
|
||||||
* [Sonarr](https://github.com/linuxserver/docker-sonarr) - TV show collection manager
|
* [Sonarr](https://github.com/linuxserver/docker-sonarr) - TV show collection manager
|
||||||
* [Bazarr](https://github.com/linuxserver/docker-bazarr) - subtitle manager
|
* [Bazarr](https://github.com/linuxserver/docker-bazarr) - subtitle manager
|
||||||
* [delugevpn](https://github.com/binhex/arch-delugevpn) - torrent client with VPN and Privoxy
|
* [qBittorrent](https://github.com/linuxserver/docker-qbittorrent) - qBittorrent + [VueTorrent](https://github.com/VueTorrent/VueTorrent) - cute WebUI
|
||||||
* [YoutubeDL](https://github.com/Tzahi12345/YoutubeDL-Material) - Youtube media downloader
|
for qBittorrent
|
||||||
|
* [YoutubeDL](https://github.com/Tzahi12345/YoutubeDL-Material) - YouTube media downloader
|
||||||
* [Prowlarr](https://github.com/Prowlarr/Prowlarr) - indexer
|
* [Prowlarr](https://github.com/Prowlarr/Prowlarr) - indexer
|
||||||
* [Lidarr](https://github.com/Lidarr/Lidarr) - music library manager
|
* [Lidarr](https://github.com/Lidarr/Lidarr) - music library manager
|
||||||
* [miniDLNA](https://github.com/vladgh/docker_base_images/tree/main/minidlna) - DLNA server
|
* [slskd](https://github.com/slskd/slskd) - soulseek client
|
||||||
|
* [Calibre](https://github.com/crocodilestick/Calibre-Web-Automated) - ebook
|
||||||
|
manager
|
||||||
|
* [Calibre-downloader](https://github.com/calibrain/calibre-web-automated-book-downloader) - ebook downloader
|
||||||
|
|
||||||
### Personal cloud
|
### Personal cloud
|
||||||
* [Nextcloud](https://github.com/linuxserver/docker-nextcloud) - filesync/cloud solution
|
* [Nextcloud](https://github.com/linuxserver/docker-nextcloud) - filesync/cloud solution
|
||||||
* [Redis](https://github.com/docker-library/redis) - cache service
|
* [Redis](https://github.com/docker-library/redis) - cache service
|
||||||
* [MariaDB](https://github.com/linuxserver/docker-mariadb) - database
|
* [MariaDB](https://github.com/linuxserver/docker-mariadb) - database
|
||||||
* [Collabora](https://github.com/CollaboraOnline/online) - office suite
|
* [Collabora](https://github.com/CollaboraOnline/online) - office suite
|
||||||
* [static-file-server](https://github.com/halverneus/static-file-server) - static file server
|
|
||||||
|
|
||||||
### Software development
|
### Software development
|
||||||
* [Gitea](https://github.com/go-gitea/gitea) - git web service
|
* [Gitea](https://github.com/go-gitea/gitea) - git web service
|
||||||
@ -42,9 +48,9 @@ All services are deployed using Docker compose and are run as a non-root user.
|
|||||||
* [Wireguard](https://github.com/linuxserver/docker-wireguard) - VPN server
|
* [Wireguard](https://github.com/linuxserver/docker-wireguard) - VPN server
|
||||||
* [Homer](https://github.com/bastienwirtz/homer) - simple dashboard to keep services on hand
|
* [Homer](https://github.com/bastienwirtz/homer) - simple dashboard to keep services on hand
|
||||||
* [mr.vercetti.cc](https://git.vercetti.cc/mr-vercetti/mr.vercetti.cc) - my personal blog
|
* [mr.vercetti.cc](https://git.vercetti.cc/mr-vercetti/mr.vercetti.cc) - my personal blog
|
||||||
|
* [widmo.cc](https://git.vercetti.cc/mr-vercetti/widmo.cc) - my film photo
|
||||||
|
project
|
||||||
|
* [listmonk](https://github.com/knadh/listmonk) - mail sending/newsletter service
|
||||||
|
|
||||||
## Storage solution
|
## Storage solution
|
||||||
I went with [MergerFS](https://github.com/trapexit/mergerfs) and [SnapRAID](https://github.com/amadvance/snapraid), which allows me a great deal of flexibility and still keeps my data safe. Array is synchronized and scrubbed automatically via [snapraid-runner](https://github.com/Chronial/snapraid-runner) running from crontab.
|
I went with [MergerFS](https://github.com/trapexit/mergerfs) and [SnapRAID](https://github.com/amadvance/snapraid), which allows me a great deal of flexibility and still keeps my data safe. Array is synchronized and scrubbed automatically using [snapraid-runner](https://github.com/Chronial/snapraid-runner) running from crontab.
|
||||||
|
|
||||||
## Setup
|
|
||||||
To be completed.
|
|
||||||
|
6
crontab
Normal file
6
crontab
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# SnapRAID
|
||||||
|
30 4 * * * python3 /opt/snapraid-runner/snapraid-runner.py --conf /etc/snapraid-runner.conf --ignore-deletethreshold
|
||||||
|
# LG TV renew dev mode (https://github.com/webosbrew/dev-manager-desktop)
|
||||||
|
0 * * * * /etc/tv-renew-devmode.sh >> /var/log/tv-renew-devmode.log 2>&1
|
||||||
|
# DNS issues fix with Torguard
|
||||||
|
0 1 * * * /apps/homeserver/docker/torguard-fix.sh
|
@ -72,3 +72,27 @@ DRONE_USER_CREATE=username:<--USERNAME-->,machine:false,admin:true,token:${DRONE
|
|||||||
COLLABORA_USERNAME=
|
COLLABORA_USERNAME=
|
||||||
COLLABORA_PASSWORD=
|
COLLABORA_PASSWORD=
|
||||||
COLLABORA_DOMAIN=
|
COLLABORA_DOMAIN=
|
||||||
|
|
||||||
|
# listmonk
|
||||||
|
LISTMONK_POSTGRES_USER=
|
||||||
|
LISTMONK_POSTGRES_PASSWORD=
|
||||||
|
LISTMONK_POSTGRES_DB=
|
||||||
|
|
||||||
|
# ghostfolio
|
||||||
|
GHOSTFOLIO_ACCESS_TOKEN_SALT=
|
||||||
|
GHOSTFOLIO_JWT_SECRET_KEY=
|
||||||
|
GHOSTFOLIO_DB=
|
||||||
|
GHOSTFOLIO_DB_USER=
|
||||||
|
GHOSTFOLIO_DB_PASSWORD=
|
||||||
|
GHOSTFOLIO_DB_URL=postgresql://${GHOSTFOLIO_DB_USER}:${GHOSTFOLIO_DB_PASSWORD}@ghostfolio-db:5432/${GHOSTFOLIO_DB}?connect_timeout=300&sslmode=prefer
|
||||||
|
GHOSTFOLIO_REDIS_PASSWORD=
|
||||||
|
|
||||||
|
# joplin
|
||||||
|
JOPLIN_POSTGRES_USER=
|
||||||
|
JOPLIN_POSTGRES_PASSWORD=
|
||||||
|
JOPLIN_POSTGRES_DB=
|
||||||
|
JOPLIN_BASE_URL=
|
||||||
|
|
||||||
|
# slskd
|
||||||
|
SLSKD_SLSK_USERNAME=
|
||||||
|
SLSKD_SLSK_PASSWORD=
|
||||||
|
18
docker/additional-stacks/blackmesa/blackmesa.yml
Executable file
18
docker/additional-stacks/blackmesa/blackmesa.yml
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
services:
|
||||||
|
blackmesa:
|
||||||
|
image: mrvercetti/blackmesa-coop-server
|
||||||
|
container_name: blackmesa
|
||||||
|
environment:
|
||||||
|
- GAME_PARAMS=-port 27015 +maxplayers 2 +map bm_c1a1d -debug
|
||||||
|
- GAME_NAME=${BLACKMESA_SERVER_NAME}
|
||||||
|
- GAME_PASSWORD=${BLACKMESA_SERVER_PASSWORD}
|
||||||
|
networks:
|
||||||
|
- blackmesa
|
||||||
|
ports:
|
||||||
|
- ${BLACKMESA_SERVER_PORT}:27015
|
||||||
|
- ${BLACKMESA_SERVER_PORT}:27015/udp
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
networks:
|
||||||
|
blackmesa:
|
||||||
|
name: blackmesa
|
0
docker/stacks/duplicati/duplicati.yml → docker/additional-stacks/duplicati/duplicati.yml
Normal file → Executable file
0
docker/stacks/duplicati/duplicati.yml → docker/additional-stacks/duplicati/duplicati.yml
Normal file → Executable file
46
docker/additional-stacks/ghostfolio/ghostfolio.yml
Executable file
46
docker/additional-stacks/ghostfolio/ghostfolio.yml
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
services:
|
||||||
|
ghostfolio:
|
||||||
|
image: ghostfolio/ghostfolio
|
||||||
|
container_name: ghostfolio
|
||||||
|
environment:
|
||||||
|
DATABASE_URL: ${GHOSTFOLIO_DB_URL}
|
||||||
|
NODE_ENV: production
|
||||||
|
REDIS_HOST: ghostfolio-cache
|
||||||
|
REDIS_PASSWORD: ${GHOSTFOLIO_REDIS_PASSWORD}
|
||||||
|
REDIS_PORT: 6379
|
||||||
|
JWT_SECRET_KEY: ${GHOSTFOLIO_JWT_SECRET_KEY}
|
||||||
|
ACCESS_TOKEN_SALT: ${GHOSTFOLIO_ACCESS_TOKEN_SALT}
|
||||||
|
ports:
|
||||||
|
- 3333:3333
|
||||||
|
networks:
|
||||||
|
- ghostfolio
|
||||||
|
- proxy
|
||||||
|
depends_on:
|
||||||
|
- ghostfolio-db
|
||||||
|
- ghostfolio-cache
|
||||||
|
|
||||||
|
ghostfolio-db:
|
||||||
|
image: postgres:15
|
||||||
|
container_name: ghostfolio-db
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/ghostfolio/postgres:/var/lib/postgresql/data
|
||||||
|
networks:
|
||||||
|
- ghostfolio
|
||||||
|
environment:
|
||||||
|
- POSTRES_DB=${GHOSTFOLIO_DB}
|
||||||
|
- POSTGRES_USER=${GHOSTFOLIO_DB_USER}
|
||||||
|
- POSTGRES_PASSWORD=${GHOSTFOLIO_DB_PASSWORD}
|
||||||
|
|
||||||
|
ghostfolio-cache:
|
||||||
|
image: redis:alpine
|
||||||
|
container_name: ghostfolio-cache
|
||||||
|
networks:
|
||||||
|
- ghostfolio
|
||||||
|
command: ['redis-server', '--requirepass', $GHOSTFOLIO_REDIS_PASSWORD]
|
||||||
|
|
||||||
|
networks:
|
||||||
|
ghostfolio:
|
||||||
|
name: ghostfolio
|
||||||
|
proxy:
|
||||||
|
external:
|
||||||
|
name: proxy
|
18
docker/additional-stacks/homarr/homarr.yml
Executable file
18
docker/additional-stacks/homarr/homarr.yml
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
services:
|
||||||
|
homarr:
|
||||||
|
container_name: homarr
|
||||||
|
image: ghcr.io/ajnart/homarr
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- ${APPS_DIR}/homarr/configs:/app/data/configs
|
||||||
|
- ${APPS_DIR}/homarr/icons:/app/public/icons
|
||||||
|
- ${APPS_DIR}/homarr/data:/data
|
||||||
|
networks:
|
||||||
|
- homarr
|
||||||
|
ports:
|
||||||
|
- '7575:7575'
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
networks:
|
||||||
|
homarr:
|
||||||
|
name: homarr
|
43
docker/additional-stacks/joplin/joplin.yml
Executable file
43
docker/additional-stacks/joplin/joplin.yml
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
services:
|
||||||
|
joplin-db:
|
||||||
|
image: postgres:16
|
||||||
|
container_name: joplin-db
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/joplin/postgres:/var/lib/postgresql/data
|
||||||
|
networks:
|
||||||
|
- joplin
|
||||||
|
ports:
|
||||||
|
- "5432:5432"
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- POSTGRES_PASSWORD=${JOPLIN_POSTGRES_PASSWORD}
|
||||||
|
- POSTGRES_USER=${JOPLIN_POSTGRES_USER}
|
||||||
|
- POSTGRES_DB=${JOPLIN_POSTGRES_DB}
|
||||||
|
|
||||||
|
joplin:
|
||||||
|
image: joplin/server
|
||||||
|
container_name: joplin
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
- joplin
|
||||||
|
ports:
|
||||||
|
- "22300:22300"
|
||||||
|
environment:
|
||||||
|
- APP_PORT=22300
|
||||||
|
- APP_BASE_URL=${JOPLIN_BASE_URL}
|
||||||
|
- DB_CLIENT=pg
|
||||||
|
- POSTGRES_PASSWORD=${JOPLIN_POSTGRES_PASSWORD}
|
||||||
|
- POSTGRES_DATABASE=${JOPLIN_POSTGRES_DB}
|
||||||
|
- POSTGRES_USER=${JOPLIN_POSTGRES_USER}
|
||||||
|
- POSTGRES_PORT=5432
|
||||||
|
- POSTGRES_HOST=joplin-db
|
||||||
|
depends_on:
|
||||||
|
- joplin-db
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
external:
|
||||||
|
name: proxy
|
||||||
|
joplin:
|
||||||
|
name: joplin
|
28
docker/additional-stacks/localai/localai.yml
Executable file
28
docker/additional-stacks/localai/localai.yml
Executable file
@ -0,0 +1,28 @@
|
|||||||
|
services:
|
||||||
|
api:
|
||||||
|
image: localai/localai:v2.10.1-ffmpeg-core
|
||||||
|
container_name: localai-api
|
||||||
|
ports:
|
||||||
|
- 8877:8080
|
||||||
|
networks:
|
||||||
|
- localai
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/localai/models:/models:cached
|
||||||
|
command: ["tinyllama-chat"]
|
||||||
|
|
||||||
|
chatgpt:
|
||||||
|
depends_on:
|
||||||
|
api:
|
||||||
|
condition: service_healthy
|
||||||
|
image: ghcr.io/mckaywrigley/chatbot-ui:main
|
||||||
|
ports:
|
||||||
|
- 3003:3000
|
||||||
|
networks:
|
||||||
|
- localai
|
||||||
|
environment:
|
||||||
|
- OPENAI_API_KEY=${OPENAI_API_KEY}
|
||||||
|
- OPENAI_API_HOST=http://api:8080
|
||||||
|
|
||||||
|
networks:
|
||||||
|
localai:
|
||||||
|
name: localai
|
28
docker/additional-stacks/minecraft/minecraft.yml
Executable file
28
docker/additional-stacks/minecraft/minecraft.yml
Executable file
@ -0,0 +1,28 @@
|
|||||||
|
services:
|
||||||
|
minecraft:
|
||||||
|
image: itzg/minecraft-server
|
||||||
|
container_name: minecraft
|
||||||
|
networks:
|
||||||
|
- minecraft
|
||||||
|
ports:
|
||||||
|
- ${MINECRAFT_SERVER_PORT}:25565
|
||||||
|
environment:
|
||||||
|
- VERSION=1.20.4
|
||||||
|
- OVERRIDE_SERVER_PROPERTIES=true
|
||||||
|
- EULA=TRUE
|
||||||
|
- MAX_PLAYERS=4
|
||||||
|
- MOTD=${MINECRAFT_SERVER_MOTD}
|
||||||
|
- DIFFICULTY=easy
|
||||||
|
- ALLOW_NETHER=true
|
||||||
|
- ONLINE_MODE=FALSE
|
||||||
|
- ENABLE_RCON=true
|
||||||
|
- SERVER_NAME=${MINECRAFT_SERVER_NAME}
|
||||||
|
volumes:
|
||||||
|
- ${DATA_DIR}/minecraft-data:/data
|
||||||
|
tty: true
|
||||||
|
stdin_open: true
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
networks:
|
||||||
|
minecraft:
|
||||||
|
name: minecraft
|
66
docker/additional-stacks/monitoring/monitoring.yml
Executable file
66
docker/additional-stacks/monitoring/monitoring.yml
Executable file
@ -0,0 +1,66 @@
|
|||||||
|
services:
|
||||||
|
grafana:
|
||||||
|
image: grafana/grafana
|
||||||
|
container_name: grafana
|
||||||
|
user: "0"
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/monitoring/grafana:/var/lib/grafana
|
||||||
|
ports:
|
||||||
|
- "3005:3000"
|
||||||
|
networks:
|
||||||
|
- monitoring
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
loki:
|
||||||
|
image: grafana/loki
|
||||||
|
container_name: loki
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/monitoring/loki:/etc/loki
|
||||||
|
ports:
|
||||||
|
- "3100:3100"
|
||||||
|
command: -config.file=/etc/loki/loki-config.yml -config.expand-env=true
|
||||||
|
networks:
|
||||||
|
- monitoring
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
promtail:
|
||||||
|
image: grafana/promtail
|
||||||
|
container_name: promtail
|
||||||
|
volumes:
|
||||||
|
- /var/log:/var/log #map the log folder.
|
||||||
|
- ${APPS_DIR}/monitoring/promtail:/etc/promtail
|
||||||
|
command: -config.file=/etc/promtail/promtail-config.yml
|
||||||
|
networks:
|
||||||
|
- monitoring
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
prometheus:
|
||||||
|
image: prom/prometheus
|
||||||
|
container_name: prometheus
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/monitoring/prometheus:/etc/prometheus
|
||||||
|
ports:
|
||||||
|
- "9090:9090"
|
||||||
|
networks:
|
||||||
|
- monitoring
|
||||||
|
command:
|
||||||
|
- '--config.file=/etc/prometheus/prometheus.yml'
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
node-exporter:
|
||||||
|
image: prom/node-exporter
|
||||||
|
container_name: node-exporter
|
||||||
|
network_mode: host # Not compatible with ports declaration. This service will expose port 9100.
|
||||||
|
volumes:
|
||||||
|
- /proc:/host/proc:ro
|
||||||
|
- /sys:/host/sys:ro
|
||||||
|
- /:/rootfs:ro
|
||||||
|
command:
|
||||||
|
- '--path.procfs=/host/proc'
|
||||||
|
- '--path.sysfs=/host/sys'
|
||||||
|
- '--path.rootfs=/rootfs'
|
||||||
|
- '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
networks:
|
||||||
|
monitoring:
|
12
docker/stacks/file-server/file-server.yml → docker/additional-stacks/ogt-fs/ogt-fs.yml
Normal file → Executable file
12
docker/stacks/file-server/file-server.yml → docker/additional-stacks/ogt-fs/ogt-fs.yml
Normal file → Executable file
@ -1,12 +1,12 @@
|
|||||||
services:
|
services:
|
||||||
homer:
|
ogt-fs:
|
||||||
image: halverneus/static-file-server
|
image: halverneus/static-file-server
|
||||||
container_name: file-server
|
container_name: ogt-fs
|
||||||
networks:
|
networks:
|
||||||
- file-server
|
- ogt-fs
|
||||||
- proxy
|
- proxy
|
||||||
volumes:
|
volumes:
|
||||||
- ${DATA_DIR}/file-server:/content/files
|
- ${DATA_DIR}/ogt-fs:/content/files
|
||||||
environment:
|
environment:
|
||||||
- FOLDER=/content/files
|
- FOLDER=/content/files
|
||||||
ports:
|
ports:
|
||||||
@ -17,5 +17,5 @@ networks:
|
|||||||
proxy:
|
proxy:
|
||||||
external:
|
external:
|
||||||
name: proxy
|
name: proxy
|
||||||
file-server:
|
ogt-fs:
|
||||||
name: file-server
|
name: ogt-fs
|
16
docker/additional-stacks/qbittorrent/qbittorrent.yml
Executable file
16
docker/additional-stacks/qbittorrent/qbittorrent.yml
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
services:
|
||||||
|
qbittorrent:
|
||||||
|
image: linuxserver/qbittorrent
|
||||||
|
container_name: qbittorrent
|
||||||
|
environment:
|
||||||
|
- PUID=${PUID}
|
||||||
|
- PGID=${PGID}
|
||||||
|
- TZ=${TIMEZONE}
|
||||||
|
- UMASK_SET=022
|
||||||
|
- WEBUI_PORT=8183
|
||||||
|
network_mode: "container:gluetun"
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/qbittorrent/config:/config
|
||||||
|
- ${DATA_DIR}/downloads:/downloads
|
||||||
|
- ${APPS_DIR}/qbittorrent/vuetorrent:/vuetorrent
|
||||||
|
restart: unless-stopped
|
33
docker/additional-stacks/qbittorrentvpn/qbittorrentvpn.yml
Executable file
33
docker/additional-stacks/qbittorrentvpn/qbittorrentvpn.yml
Executable file
@ -0,0 +1,33 @@
|
|||||||
|
qbittorrentvpn:
|
||||||
|
image: binhex/arch-qbittorrentvpn
|
||||||
|
container_name: qbittorrentvpn
|
||||||
|
networks:
|
||||||
|
- media
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
environment:
|
||||||
|
- PUID=${PUID}
|
||||||
|
- PGID=${PGID}
|
||||||
|
- TZ=${TIMEZONE}
|
||||||
|
- VPN_ENABLED=yes
|
||||||
|
- VPN_PROV=custom
|
||||||
|
- VPN_CLIENT=wireguard
|
||||||
|
- ENABLE_PRIVOXY=no
|
||||||
|
- LAN_NETWORK=${LAN_NETWORK}
|
||||||
|
- NAME_SERVERS=1.1.1.1, 1.0.0.1
|
||||||
|
- WEBUI_PORT=8183
|
||||||
|
- DEBUG=true
|
||||||
|
- UMASK=000
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/qbittorrentvpn:/config
|
||||||
|
- ${DATA_DIR}/downloads:/data
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
ports:
|
||||||
|
- 8183:8183
|
||||||
|
- 8118:8118
|
||||||
|
- 6881:6881
|
||||||
|
- 6881:6881/udp
|
||||||
|
sysctls:
|
||||||
|
- "net.ipv4.conf.all.src_valid_mark=1"
|
||||||
|
privileged: true
|
||||||
|
restart: unless-stopped
|
16
docker/additional-stacks/quakejs-server/docker-compose.yml
Executable file
16
docker/additional-stacks/quakejs-server/docker-compose.yml
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
services:
|
||||||
|
quakejs:
|
||||||
|
image: treyyoder/quakejs
|
||||||
|
container_name: quakejs
|
||||||
|
networks:
|
||||||
|
- quakejs
|
||||||
|
environment:
|
||||||
|
- HTTP_PORT=9011
|
||||||
|
- SERVER=192.168.0.100
|
||||||
|
ports:
|
||||||
|
- "9011:80"
|
||||||
|
- "27960:27960"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
quakejs:
|
||||||
|
name: quakejs
|
25
docker/additional-stacks/stable-diffusion/stable-diffusion.yml
Executable file
25
docker/additional-stacks/stable-diffusion/stable-diffusion.yml
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
services:
|
||||||
|
stable-diffusion:
|
||||||
|
image: ghcr.io/ai-dock/stable-diffusion-webui:latest-cpu
|
||||||
|
container_name: stable-diffusion-webui
|
||||||
|
devices:
|
||||||
|
- "/dev/dri:/dev/dri"
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/stable-diffusion/workspace:${WORKSPACE:-/workspace/}:rshared
|
||||||
|
- ${APPS_DIR}/stable-diffusion/config/provisioning/default.sh:/opt/ai-dock/bin/provisioning.sh
|
||||||
|
ports:
|
||||||
|
- ${WEBUI_PORT_HOST:-7860}:${WEBUI_PORT_HOST:-7860}
|
||||||
|
networks:
|
||||||
|
- stable-diffusion
|
||||||
|
environment:
|
||||||
|
- DIRECT_ADDRESS=${DIRECT_ADDRESS:-127.0.0.1}
|
||||||
|
- WORKSPACE=/workspace
|
||||||
|
- WORKSPACE_SYNC=false
|
||||||
|
- WEB_ENABLE_AUTH=false
|
||||||
|
- WEBUI_PORT_HOST=${WEBUI_PORT_HOST:-7860}
|
||||||
|
- WEBUI_PORT_LOCAL=${WEBUI_PORT_LOCAL:-17860}
|
||||||
|
- WEBUI_METRICS_PORT=${WEBUI_METRICS_PORT:-27860}
|
||||||
|
|
||||||
|
networks:
|
||||||
|
stable-diffusion:
|
||||||
|
name: stable-diffusion
|
18
docker/additional-stacks/svencoop/svencoop.yml
Executable file
18
docker/additional-stacks/svencoop/svencoop.yml
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
services:
|
||||||
|
svencoop:
|
||||||
|
image: mrvercetti/svencoop-server
|
||||||
|
container_name: svencoop
|
||||||
|
environment:
|
||||||
|
- GAME_NAME=${SVENCOOP_SERVER_NAME}
|
||||||
|
- GAME_PASSWORD=${SVENCOOP_SERVER_PASSWORD}
|
||||||
|
- GAME_PARAMS="-num_edicts 3072 +sv_lan 0 +map hl_c16_a1 -port 27015 -console -debug;"
|
||||||
|
networks:
|
||||||
|
- svencoop
|
||||||
|
ports:
|
||||||
|
- ${SVENCOOP_SERVER_PORT}:27015
|
||||||
|
- ${SVENCOOP_SERVER_PORT}:27015/udp
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
networks:
|
||||||
|
svencoop:
|
||||||
|
name: svencoop
|
@ -1,27 +1,53 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
if [ $# -ne 1 ]; then
|
BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
echo "Please provide command to execute: 'up', 'stop' or 'restart'"
|
|
||||||
|
if [ $# -lt 1 ]; then
|
||||||
|
echo "Please provide command to execute: 'up', 'stop', 'restart', or 'recreate'"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
command="$1"
|
command="$1"
|
||||||
|
|
||||||
for stack in stacks/*/*
|
|
||||||
do
|
|
||||||
case "$command" in
|
case "$command" in
|
||||||
"up")
|
"up")
|
||||||
docker-compose -f "${stack}" --env-file .env up -d
|
for stack in "$BASE_DIR"/stacks/*/*
|
||||||
|
do
|
||||||
|
docker compose -f "${stack}" --env-file "$BASE_DIR/.env" up -d
|
||||||
|
done
|
||||||
;;
|
;;
|
||||||
"stop")
|
"stop" | "restart")
|
||||||
docker-compose -f "${stack}" --env-file .env stop
|
for stack in "$BASE_DIR"/stacks/*/*
|
||||||
|
do
|
||||||
|
docker compose -f "${stack}" --env-file "$BASE_DIR/.env" $command
|
||||||
|
done
|
||||||
;;
|
;;
|
||||||
"restart")
|
"recreate")
|
||||||
docker-compose -f "${stack}" --env-file .env restart
|
if [ $# -eq 2 ]; then
|
||||||
|
stack_name="$2"
|
||||||
|
service_name="$2"
|
||||||
|
elif [ $# -eq 3 ]; then
|
||||||
|
stack_name="$2"
|
||||||
|
service_name="$3"
|
||||||
|
else
|
||||||
|
echo "Usage: $0 recreate <stack_name> <service_name>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
stack_file="$BASE_DIR/stacks/${stack_name}/${stack_name}.yml"
|
||||||
|
|
||||||
|
if [ ! -f "$stack_file" ]; then
|
||||||
|
echo "Stack file '$stack_file' does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker compose -f ${stack_file} --env-file "$BASE_DIR/.env" stop ${service_name}
|
||||||
|
docker compose -f ${stack_file} --env-file "$BASE_DIR/.env" rm -f ${service_name}
|
||||||
|
docker compose -f ${stack_file} --env-file "$BASE_DIR/.env" up -d ${service_name}
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Wrong command. Please use 'up', 'stop' or 'restart'"
|
echo "Wrong command. Please use 'up', 'stop', 'restart', or 'recreate'"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
|
||||||
|
26
docker/stacks/backrest/backrest.yml
Normal file
26
docker/stacks/backrest/backrest.yml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
services:
|
||||||
|
backrest:
|
||||||
|
image: garethgeorge/backrest
|
||||||
|
container_name: backrest
|
||||||
|
networks:
|
||||||
|
- backrest
|
||||||
|
ports:
|
||||||
|
- 9898:9898
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/backrest/data:/data
|
||||||
|
- ${APPS_DIR}/backrest/config:/config
|
||||||
|
- ${APPS_DIR}/backrest/cache:/cache
|
||||||
|
- /apps:/userdata/docker # [optional] mount local paths to backup here.
|
||||||
|
- ${DATA_DIR}/nextcloud-data:/userdata/nextcloud
|
||||||
|
- ${DATA_DIR}/backup/hustler:/repos/hustler # [optional] mount repos if using local storage, not necessary for remotes e.g. B2, S3, etc.
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro # [optional] if you want to manage containers before/after backup
|
||||||
|
environment:
|
||||||
|
- BACKREST_DATA=/data # path for backrest data. restic binary and the database are placed here.
|
||||||
|
- BACKREST_CONFIG=/config/config.json # path for the backrest config file.
|
||||||
|
- XDG_CACHE_HOME=/cache # path for the restic cache which greatly improves performance.
|
||||||
|
- TZ=${TIMEZONE} # set the timezone for the container, used as the timezone for cron jobs.
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
networks:
|
||||||
|
backrest:
|
||||||
|
name: backrest
|
2
docker/stacks/bitwarden/bitwarden.yml
Normal file → Executable file
2
docker/stacks/bitwarden/bitwarden.yml
Normal file → Executable file
@ -22,7 +22,7 @@ services:
|
|||||||
|
|
||||||
networks:
|
networks:
|
||||||
proxy:
|
proxy:
|
||||||
external:
|
|
||||||
name: proxy
|
name: proxy
|
||||||
|
external: true
|
||||||
bitwarden:
|
bitwarden:
|
||||||
name: bitwarden
|
name: bitwarden
|
||||||
|
5
docker/stacks/collabora/collabora.yml
Normal file → Executable file
5
docker/stacks/collabora/collabora.yml
Normal file → Executable file
@ -1,8 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
collabora:
|
collabora:
|
||||||
image: collabora/code
|
image: collabora/code:24.04.6.1.1
|
||||||
container_name: collabora
|
container_name: collabora
|
||||||
privileged: true
|
|
||||||
environment:
|
environment:
|
||||||
- password=${COLLABORA_PASSWORD}
|
- password=${COLLABORA_PASSWORD}
|
||||||
- username=${COLLABORA_USERNAME}
|
- username=${COLLABORA_USERNAME}
|
||||||
@ -17,7 +16,7 @@ services:
|
|||||||
|
|
||||||
networks:
|
networks:
|
||||||
proxy:
|
proxy:
|
||||||
external:
|
|
||||||
name: proxy
|
name: proxy
|
||||||
|
external: true
|
||||||
collabora:
|
collabora:
|
||||||
name: collabora
|
name: collabora
|
||||||
|
0
docker/stacks/ddclient/ddclient.yml
Normal file → Executable file
0
docker/stacks/ddclient/ddclient.yml
Normal file → Executable file
22
docker/stacks/gluetun/gluetun.yml
Executable file
22
docker/stacks/gluetun/gluetun.yml
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
services:
|
||||||
|
gluetun:
|
||||||
|
image: qmcgaw/gluetun:v3.38
|
||||||
|
container_name: gluetun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
environment:
|
||||||
|
- VPN_SERVICE_PROVIDER=custom
|
||||||
|
- VPN_TYPE=wireguard
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/gluetun:/gluetun
|
||||||
|
networks:
|
||||||
|
- gluetun
|
||||||
|
ports:
|
||||||
|
# qbittorrent
|
||||||
|
- "8183:8183"
|
||||||
|
# slskd
|
||||||
|
- "5030:5030"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
gluetun:
|
||||||
|
name: gluetun
|
0
docker/stacks/homer/homer.yml
Normal file → Executable file
0
docker/stacks/homer/homer.yml
Normal file → Executable file
39
docker/stacks/listmonk/listmonk.yml
Executable file
39
docker/stacks/listmonk/listmonk.yml
Executable file
@ -0,0 +1,39 @@
|
|||||||
|
services:
|
||||||
|
listmonk-db:
|
||||||
|
image: postgres:13-alpine
|
||||||
|
container_name: listmonk-db
|
||||||
|
environment:
|
||||||
|
- POSTGRES_PASSWORD=${LISTMONK_POSTGRES_PASSWORD}
|
||||||
|
- POSTGRES_USER=${LISTMONK_POSTGRES_USER}
|
||||||
|
- POSTGRES_DB=${LISTMONK_POSTGRES_DB}
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/listmonk/postgresql:/var/lib/postgresql/data
|
||||||
|
ports:
|
||||||
|
- "9432:5432"
|
||||||
|
networks:
|
||||||
|
- listmonk
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U listmonk"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 6
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
listmonk:
|
||||||
|
image: listmonk/listmonk
|
||||||
|
container_name: listmonk
|
||||||
|
environment:
|
||||||
|
- TZ=${TIMEZONE}
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/listmonk/config.toml:/listmonk/config.toml
|
||||||
|
ports:
|
||||||
|
- "9000:9000"
|
||||||
|
networks:
|
||||||
|
- listmonk
|
||||||
|
depends_on:
|
||||||
|
- listmonk-db
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
networks:
|
||||||
|
listmonk:
|
||||||
|
name: listmonk
|
134
docker/stacks/media/media.yml
Normal file → Executable file
134
docker/stacks/media/media.yml
Normal file → Executable file
@ -16,6 +16,7 @@ services:
|
|||||||
- ${APPS_DIR}/jellyfin:/config
|
- ${APPS_DIR}/jellyfin:/config
|
||||||
- ${DATA_DIR}/media/movies:/data/movies:ro
|
- ${DATA_DIR}/media/movies:/data/movies:ro
|
||||||
- ${DATA_DIR}/media/tvshows:/data/tvshows:ro
|
- ${DATA_DIR}/media/tvshows:/data/tvshows:ro
|
||||||
|
- ${DATA_DIR}/media/music:/data/music:ro
|
||||||
ports:
|
ports:
|
||||||
- 8096:8096
|
- 8096:8096
|
||||||
devices:
|
devices:
|
||||||
@ -23,6 +24,22 @@ services:
|
|||||||
- /dev/dri/card0:/dev/dri/card0
|
- /dev/dri/card0:/dev/dri/card0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
|
jellyseerr:
|
||||||
|
image: fallenbagel/jellyseerr
|
||||||
|
container_name: jellyseerr
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
- media
|
||||||
|
environment:
|
||||||
|
- LOG_LEVEL=debug
|
||||||
|
- TZ=${TIMEZONE}
|
||||||
|
- PORT=5055
|
||||||
|
ports:
|
||||||
|
- 5055:5055
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/jellyserr:/app/config
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
minidlna:
|
minidlna:
|
||||||
image: vladgh/minidlna
|
image: vladgh/minidlna
|
||||||
container_name: minidlna
|
container_name: minidlna
|
||||||
@ -36,7 +53,7 @@ services:
|
|||||||
- ${DATA_DIR}/media/music:/media
|
- ${DATA_DIR}/media/music:/media
|
||||||
|
|
||||||
radarr:
|
radarr:
|
||||||
image: lscr.io/linuxserver/radarr:4.3.2
|
image: lscr.io/linuxserver/radarr
|
||||||
container_name: radarr
|
container_name: radarr
|
||||||
networks:
|
networks:
|
||||||
- media
|
- media
|
||||||
@ -84,6 +101,17 @@ services:
|
|||||||
- 9696:9696
|
- 9696:9696
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
|
flaresolverr:
|
||||||
|
image: ghcr.io/flaresolverr/flaresolverr
|
||||||
|
container_name: flaresolverr
|
||||||
|
networks:
|
||||||
|
- media
|
||||||
|
environment:
|
||||||
|
- TZ=${TIMEZONE}
|
||||||
|
ports:
|
||||||
|
- 8191:8191
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
bazarr:
|
bazarr:
|
||||||
image: lscr.io/linuxserver/bazarr
|
image: lscr.io/linuxserver/bazarr
|
||||||
container_name: bazarr
|
container_name: bazarr
|
||||||
@ -118,43 +146,95 @@ services:
|
|||||||
- 8686:8686
|
- 8686:8686
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
delugevpn:
|
qbittorrent:
|
||||||
image: binhex/arch-delugevpn
|
image: linuxserver/qbittorrent
|
||||||
container_name: delugevpn
|
container_name: qbittorrent
|
||||||
networks:
|
|
||||||
- media
|
|
||||||
cap_add:
|
|
||||||
- NET_ADMIN
|
|
||||||
environment:
|
environment:
|
||||||
- PUID=${PUID}
|
- PUID=${PUID}
|
||||||
- PGID=${PGID}
|
- PGID=${PGID}
|
||||||
- TZ=${TIMEZONE}
|
- TZ=${TIMEZONE}
|
||||||
- VPN_ENABLED=yes
|
- UMASK_SET=022
|
||||||
- VPN_PROV=custom
|
- WEBUI_PORT=8183
|
||||||
- VPN_CLIENT=wireguard
|
network_mode: "container:gluetun"
|
||||||
- ENABLE_PRIVOXY=yes
|
|
||||||
- LAN_NETWORK=${LAN_NETWORK}
|
|
||||||
- NAME_SERVERS=1.1.1.1, 1.0.0.1
|
|
||||||
- DELUGE_DAEMON_LOG_LEVEL=info
|
|
||||||
- DELUGE_WEB_LOG_LEVEL=info
|
|
||||||
- DEBUG=true
|
|
||||||
- UMASK=000
|
|
||||||
volumes:
|
volumes:
|
||||||
- ${APPS_DIR}/delugevpn:/config
|
- ${APPS_DIR}/qbittorrent/config:/config
|
||||||
- ${DATA_DIR}/downloads:/downloads
|
- ${DATA_DIR}/downloads:/downloads
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- ${APPS_DIR}/qbittorrent/vuetorrent:/vuetorrent
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
ytdl-material:
|
||||||
|
image: tzahi12345/youtubedl-material:sha-208cd83
|
||||||
|
container_name: ytdl-material
|
||||||
|
networks:
|
||||||
|
- media
|
||||||
|
environment:
|
||||||
|
- UID=${PUID}
|
||||||
|
- GID=${PGID}
|
||||||
|
- ALLOW_CONFIG_MUTATIONS=true
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/ytdl-material:/app/appdata
|
||||||
|
- ${DATA_DIR}/ytdl/audio:/app/audio
|
||||||
|
- ${DATA_DIR}/ytdl/video:/app/video
|
||||||
|
- ${DATA_DIR}/ytdl/subscriptions:/app/subscriptions
|
||||||
|
- ${DATA_DIR}/ytdl/users:/app/users
|
||||||
ports:
|
ports:
|
||||||
- 8112:8112
|
- "8998:17442"
|
||||||
- 58846:58846
|
restart: unless-stopped
|
||||||
- 8118:8118
|
|
||||||
sysctls:
|
slskd:
|
||||||
- "net.ipv4.conf.all.src_valid_mark=1"
|
image: slskd/slskd
|
||||||
privileged: true
|
container_name: slskd
|
||||||
|
user: ${PUID}:${PGID}
|
||||||
|
environment:
|
||||||
|
- TZ=${TIMEZONE}
|
||||||
|
- SLSKD_REMOTE_FILE_MANAGEMENT=true
|
||||||
|
- SLSKD_SLSK_USERNAME=${SLSKD_SLSK_USERNAME}
|
||||||
|
- SLSKD_SLSK_PASSWORD=${SLSKD_SLSK_PASSWORD}
|
||||||
|
- SLSKD_SHARED_DIR=/app/downloads
|
||||||
|
network_mode: "container:gluetun"
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/slskd:/app/data
|
||||||
|
- ${DATA_DIR}/downloads/slskd/incomplete:/app/incomplete
|
||||||
|
- ${DATA_DIR}/media/music:/app/downloads
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
calibre:
|
||||||
|
image: crocodilestick/calibre-web-automated
|
||||||
|
container_name: calibre
|
||||||
|
environment:
|
||||||
|
- PUID=${PUID}
|
||||||
|
- PGID=${PGID}
|
||||||
|
- TZ=${TIMEZONE}
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/calibre:/config
|
||||||
|
- ${DATA_DIR}/calibre/ingest:/cwa-book-ingest
|
||||||
|
- ${DATA_DIR}/calibre/library:/calibre-library
|
||||||
|
networks:
|
||||||
|
- media
|
||||||
|
ports:
|
||||||
|
- 8083:8083
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
calibre-downloader:
|
||||||
|
image: ghcr.io/calibrain/calibre-web-automated-book-downloader
|
||||||
|
container_name: calibre-downloader
|
||||||
|
environment:
|
||||||
|
- FLASK_PORT=8084
|
||||||
|
- FLASK_DEBUG=false
|
||||||
|
- CLOUDFLARE_PROXY_URL=http://flaresolverr:8191
|
||||||
|
- INGEST_DIR=/cwa-book-ingest
|
||||||
|
- BOOK_LANGUAGE=pl
|
||||||
|
volumes:
|
||||||
|
- ${DATA_DIR}/calibre/ingest:/cwa-book-ingest
|
||||||
|
networks:
|
||||||
|
- media
|
||||||
|
ports:
|
||||||
|
- 8084:8084
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
proxy:
|
proxy:
|
||||||
external:
|
|
||||||
name: proxy
|
name: proxy
|
||||||
|
external: true
|
||||||
media:
|
media:
|
||||||
name: media
|
name: media
|
||||||
|
@ -34,9 +34,47 @@ services:
|
|||||||
- "/dev/nvme0"
|
- "/dev/nvme0"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
|
beszel:
|
||||||
|
image: henrygd/beszel
|
||||||
|
container_name: beszel
|
||||||
|
networks:
|
||||||
|
- monitoring
|
||||||
|
ports:
|
||||||
|
- 8091:8090
|
||||||
|
volumes:
|
||||||
|
- ${APPS_DIR}/beszel:/beszel_data
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
beszel-agent:
|
||||||
|
image: henrygd/beszel-agent
|
||||||
|
container_name: beszel-agent
|
||||||
|
network_mode: host
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
- /mnt/parity1/.beszel:/extra-filesystems/sdd1:ro
|
||||||
|
- /mnt/disk1/.beszel:/extra-filesystems/sdb1:ro
|
||||||
|
- /mnt/disk2/.beszel:/extra-filesystems/sda1:ro
|
||||||
|
- /mnt/disk3/.beszel:/extra-filesystems/sdc1:ro
|
||||||
|
environment:
|
||||||
|
- PORT=45876
|
||||||
|
# Do not remove quotes around the key
|
||||||
|
- KEY=${BESZEL_SSH_KEY}
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
dozzle:
|
||||||
|
image: amir20/dozzle
|
||||||
|
container_name: dozzle
|
||||||
|
networks:
|
||||||
|
- monitoring
|
||||||
|
ports:
|
||||||
|
- 8081:8080
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
proxy:
|
proxy:
|
||||||
external:
|
|
||||||
name: proxy
|
name: proxy
|
||||||
|
external: true
|
||||||
monitoring:
|
monitoring:
|
||||||
name: monitoring
|
name: monitoring
|
||||||
|
2
docker/stacks/mrvercetticc/mrvercetticc.yml
Normal file → Executable file
2
docker/stacks/mrvercetticc/mrvercetticc.yml
Normal file → Executable file
@ -9,7 +9,7 @@ services:
|
|||||||
|
|
||||||
networks:
|
networks:
|
||||||
proxy:
|
proxy:
|
||||||
external:
|
|
||||||
name: proxy
|
name: proxy
|
||||||
|
external: true
|
||||||
mrvercetticc:
|
mrvercetticc:
|
||||||
name: mrvercetticc
|
name: mrvercetticc
|
||||||
|
2
docker/stacks/nextcloud/nextcloud.yml
Normal file → Executable file
2
docker/stacks/nextcloud/nextcloud.yml
Normal file → Executable file
@ -52,7 +52,7 @@ services:
|
|||||||
|
|
||||||
networks:
|
networks:
|
||||||
proxy:
|
proxy:
|
||||||
external:
|
|
||||||
name: proxy
|
name: proxy
|
||||||
|
external: true
|
||||||
nextcloud:
|
nextcloud:
|
||||||
name: nextcloud
|
name: nextcloud
|
||||||
|
2
docker/stacks/softdev/softdev.yml
Normal file → Executable file
2
docker/stacks/softdev/softdev.yml
Normal file → Executable file
@ -87,7 +87,7 @@ services:
|
|||||||
|
|
||||||
networks:
|
networks:
|
||||||
proxy:
|
proxy:
|
||||||
external:
|
|
||||||
name: proxy
|
name: proxy
|
||||||
|
external: true
|
||||||
softdev:
|
softdev:
|
||||||
name: softdev
|
name: softdev
|
||||||
|
0
docker/stacks/swag/swag.yml
Normal file → Executable file
0
docker/stacks/swag/swag.yml
Normal file → Executable file
0
docker/stacks/watchtower/watchtower.yml
Normal file → Executable file
0
docker/stacks/watchtower/watchtower.yml
Normal file → Executable file
17
docker/stacks/widmocc/widmocc.yml
Executable file
17
docker/stacks/widmocc/widmocc.yml
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
services:
|
||||||
|
widmocc:
|
||||||
|
image: mrvercetti/widmocc
|
||||||
|
container_name: widmocc
|
||||||
|
networks:
|
||||||
|
- widmocc
|
||||||
|
- proxy
|
||||||
|
ports:
|
||||||
|
- 1313:80
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
networks:
|
||||||
|
proxy:
|
||||||
|
name: proxy
|
||||||
|
external: true
|
||||||
|
widmocc:
|
||||||
|
name: widmocc
|
0
docker/stacks/wireguard/wireguard.yml
Normal file → Executable file
0
docker/stacks/wireguard/wireguard.yml
Normal file → Executable file
@ -1,23 +0,0 @@
|
|||||||
services:
|
|
||||||
ytdl-material:
|
|
||||||
image: tzahi12345/youtubedl-material
|
|
||||||
container_name: ytdl-material
|
|
||||||
networks:
|
|
||||||
- ytdl-material
|
|
||||||
environment:
|
|
||||||
- UID=${PUID}
|
|
||||||
- GID=${PGID}
|
|
||||||
- ALLOW_CONFIG_MUTATIONS=true
|
|
||||||
volumes:
|
|
||||||
- ${APPS_DIR}/ytdl-material:/app/appdata
|
|
||||||
- ${DATA_DIR}/ytdl/audio:/app/audio
|
|
||||||
- ${DATA_DIR}/ytdl/video:/app/video
|
|
||||||
- ${DATA_DIR}/ytdl/subscriptions:/app/subscriptions
|
|
||||||
- ${DATA_DIR}/ytdl/users:/app/users
|
|
||||||
ports:
|
|
||||||
- "8998:17442"
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
networks:
|
|
||||||
ytdl-material:
|
|
||||||
name: ytdl-material
|
|
12
docker/torguard-fix.sh
Executable file
12
docker/torguard-fix.sh
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
dir="/apps/homeserver/docker/appdata/gluetun/wireguard"
|
||||||
|
file="$dir/wg0.conf"
|
||||||
|
file_old="$dir/wg0.conf.old"
|
||||||
|
file_tmp="$dir/wg0.conf.tmp"
|
||||||
|
|
||||||
|
mv $file $file_tmp
|
||||||
|
mv $file_old $file
|
||||||
|
mv $file_tmp $file_old
|
||||||
|
|
||||||
|
bash /apps/homeserver/docker/mgmt.sh recreate media qbittorrentvpn
|
Reference in New Issue
Block a user