Compare commits
24 Commits
3727e6f7fc
...
server
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2a470dc869 | ||
|
|
ca0f0b0208 | ||
|
|
8727499cc4 | ||
|
|
764ebb400a | ||
|
|
ea4b32d2ce | ||
|
|
90821f7635 | ||
|
|
05107b8b6f | ||
|
|
8189dd70dd | ||
|
|
575675f9b3 | ||
|
|
472b0db3b3 | ||
|
|
837a7ec22d | ||
|
|
b590536512 | ||
|
|
2026160b19 | ||
|
|
6eca3d5041 | ||
|
|
4d04103ffe | ||
|
|
f3b465abee | ||
|
|
7dc64ba5fd | ||
|
|
f12f5face5 | ||
|
|
7049c23bb4 | ||
|
|
5b01ea6e2f | ||
|
|
a45308bcdb | ||
|
|
fae7b184e6 | ||
|
|
f79818bd3e | ||
|
|
75eb03d763 |
4
.env
4
.env
@@ -1,5 +1,5 @@
|
|||||||
AWS_ACCESS_KEY_ID=AKIAY4DUYEBSTECHF6RN
|
AWS_ACCESS_KEY_ID=AKIAY4DUYEBS7Q5V33PZ
|
||||||
AWS_SECRET_ACCESS_KEY=tdx5eWda19/E7T3cttxDyLR2DabArOh2jHzTFV+d
|
AWS_SECRET_ACCESS_KEY=xKNtPa4cWR9blAuMFUHgQdZsxnFHo0z7Y4Nhhpe0
|
||||||
|
|
||||||
SURFSHARK_USER=DezwAucfnHhCBAUgkQxysWNk
|
SURFSHARK_USER=DezwAucfnHhCBAUgkQxysWNk
|
||||||
SURFSHARK_PASSWORD=f8gXqZQQRfpBEMjvgS3H7mKd
|
SURFSHARK_PASSWORD=f8gXqZQQRfpBEMjvgS3H7mKd
|
||||||
|
|||||||
41
caddy/Caddyfile
Normal file
41
caddy/Caddyfile
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
(unprotected) {
|
||||||
|
{args[0]}.{$SUBDOMAIN}.{$DOMAIN} {
|
||||||
|
log {
|
||||||
|
output file /var/log/{args[0]}.log
|
||||||
|
}
|
||||||
|
reverse_proxy {args[1]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
(pathproxy) {
|
||||||
|
handle /{args[0]}* {
|
||||||
|
reverse_proxy http://{args[1]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
import unprotected seafile host:8082
|
||||||
|
import unprotected grafana host:3333
|
||||||
|
import unprotected photoprism host:2342
|
||||||
|
import unprotected dsmr host:8888
|
||||||
|
import unprotected esp host:6052
|
||||||
|
import unprotected ha host:8123
|
||||||
|
|
||||||
|
{$SUBDOMAIN}.{$DOMAIN} {
|
||||||
|
log {
|
||||||
|
output file /var/log/path.log
|
||||||
|
}
|
||||||
|
import pathproxy jellyfin host:8097
|
||||||
|
import pathproxy transmission host:9091
|
||||||
|
import pathproxy sonarr host:18989
|
||||||
|
import pathproxy radarr host:17878
|
||||||
|
import pathproxy readarr host:18787
|
||||||
|
import pathproxy lidarr host:18686
|
||||||
|
import pathproxy bazarr host:16767
|
||||||
|
import pathproxy facette host:12003
|
||||||
|
import pathproxy gitlab host:19080
|
||||||
|
import pathproxy filebrowser host:8001
|
||||||
|
import pathproxy plik host:8087
|
||||||
|
import pathproxy droppy host:19898
|
||||||
|
import pathproxy ghost host:2368
|
||||||
|
import pathproxy jackett host:9117
|
||||||
|
}
|
||||||
8
caddy/Dockerfile
Normal file
8
caddy/Dockerfile
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
FROM caddy:2.7-builder AS builder
|
||||||
|
|
||||||
|
RUN xcaddy build \
|
||||||
|
--with github.com/caddy-dns/route53
|
||||||
|
|
||||||
|
FROM caddy:2.7-alpine
|
||||||
|
|
||||||
|
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
|
||||||
@@ -29,6 +29,9 @@ ENV PATH="$PATH:/opt/pmt/bin"
|
|||||||
RUN apt -y remove make g++ python3-dev python3-pybind11 cmake
|
RUN apt -y remove make g++ python3-dev python3-pybind11 cmake
|
||||||
RUN apt autoremove -y
|
RUN apt autoremove -y
|
||||||
|
|
||||||
RUN useradd collectd
|
RUN apt -y install sudo
|
||||||
|
RUN adduser collectd
|
||||||
|
RUN usermod -aG sudo collectd
|
||||||
|
RUN echo 'collectd ALL=(ALL) NOPASSWD:ALL' | sudo tee /etc/sudoers.d/collectd
|
||||||
|
|
||||||
CMD ["/usr/sbin/collectd", "-f"]
|
CMD ["/usr/sbin/collectd", "-f"]
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ LoadPlugin smart
|
|||||||
<Plugin disk>
|
<Plugin disk>
|
||||||
Disk "sda"
|
Disk "sda"
|
||||||
Disk "sdb"
|
Disk "sdb"
|
||||||
Disk "nvme0"
|
Disk "nvme0n1"
|
||||||
IgnoreSelected false
|
IgnoreSelected false
|
||||||
</Plugin>
|
</Plugin>
|
||||||
|
|
||||||
@@ -123,7 +123,7 @@ LoadPlugin smart
|
|||||||
<Plugin "smart">
|
<Plugin "smart">
|
||||||
Disk "sda"
|
Disk "sda"
|
||||||
Disk "sdb"
|
Disk "sdb"
|
||||||
Disk "nvme0"
|
Disk "nvme0n1"
|
||||||
IgnoreSelected false
|
IgnoreSelected false
|
||||||
</Plugin>
|
</Plugin>
|
||||||
|
|
||||||
|
|||||||
@@ -1,77 +0,0 @@
|
|||||||
#!/usr/bin/python3
|
|
||||||
|
|
||||||
#
|
|
||||||
# Imports
|
|
||||||
#
|
|
||||||
import sys
|
|
||||||
import time
|
|
||||||
import argparse
|
|
||||||
import pylikwid
|
|
||||||
|
|
||||||
#
|
|
||||||
# Configuration
|
|
||||||
#
|
|
||||||
hostname = "server"
|
|
||||||
cpuid = 0
|
|
||||||
pinfo = pylikwid.getpowerinfo()
|
|
||||||
domainid = pinfo.get("domains").get("PKG").get("ID")
|
|
||||||
measurement_duration = 5
|
|
||||||
measurement_interval = 15
|
|
||||||
dinfo = pinfo.get("domains")
|
|
||||||
domain_names = list(dinfo.keys())
|
|
||||||
domain_ids = [domain["ID"] for domain in list(dinfo.values())]
|
|
||||||
|
|
||||||
#
|
|
||||||
# Command line arguments
|
|
||||||
#
|
|
||||||
parser = argparse.ArgumentParser(description="Get CPU power consumption")
|
|
||||||
parser.add_argument("-s", action="store_true", help="print in human readable format")
|
|
||||||
args = parser.parse_args()
|
|
||||||
human_readable = args.s
|
|
||||||
|
|
||||||
#
|
|
||||||
# Methods
|
|
||||||
#
|
|
||||||
def get_power():
|
|
||||||
start = list()
|
|
||||||
end = list()
|
|
||||||
power = list()
|
|
||||||
for domain_id in domain_ids:
|
|
||||||
e_start = pylikwid.startpower(cpuid, domain_id)
|
|
||||||
start.append(e_start)
|
|
||||||
time.sleep(measurement_duration)
|
|
||||||
for domain_id in domain_ids:
|
|
||||||
e_stop = pylikwid.stoppower(cpuid, domain_id)
|
|
||||||
end.append(e_stop)
|
|
||||||
for events in zip(start, end, domain_ids):
|
|
||||||
joules = pylikwid.getpower(events[0], events[1], events[2])
|
|
||||||
power.append(joules / measurement_duration)
|
|
||||||
|
|
||||||
return dict(list(zip(domain_names, power)))
|
|
||||||
|
|
||||||
|
|
||||||
def print_rrd(measurements):
|
|
||||||
timestamp = int(time.time())
|
|
||||||
for measurement in list(measurements.items()):
|
|
||||||
name = measurement[0].lower()
|
|
||||||
power = measurement[1]
|
|
||||||
print(
|
|
||||||
(
|
|
||||||
"PUTVAL {}/exec-power/gauge-{} {}:{:.1f}".format(
|
|
||||||
hostname, name, timestamp, power
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Main
|
|
||||||
#
|
|
||||||
if human_readable:
|
|
||||||
print(get_power())
|
|
||||||
else:
|
|
||||||
while True:
|
|
||||||
power = get_power()
|
|
||||||
print_rrd(power)
|
|
||||||
sys.stdout.flush()
|
|
||||||
time.sleep(measurement_interval)
|
|
||||||
@@ -4,7 +4,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- PUID=1000
|
- PUID=1000
|
||||||
- PGID=1000
|
- PGID=1000
|
||||||
- TZ=Etc/UTC
|
- TZ=Europe/Amsterdam
|
||||||
image: linuxserver/bazarr:v1.4.2-ls246
|
image: linuxserver/bazarr:v1.4.2-ls246
|
||||||
ports:
|
ports:
|
||||||
- 16767:6767
|
- 16767:6767
|
||||||
@@ -6,14 +6,19 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- nginx
|
- nginx
|
||||||
environment:
|
environment:
|
||||||
|
- DOMAIN=veenboer.xyz
|
||||||
|
- SUBDOMAIN=bram
|
||||||
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:?}
|
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:?}
|
||||||
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:?}
|
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:?}
|
||||||
image: caddy
|
image: caddy
|
||||||
links:
|
links:
|
||||||
- nginx
|
- nginx
|
||||||
ports:
|
ports:
|
||||||
- 444:443
|
- 443:443
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- /opt/caddy/Caddyfile:/etc/caddy/Caddyfile
|
- /opt/caddy/Caddyfile:/etc/caddy/Caddyfile
|
||||||
- /opt/caddy/data:/data
|
- /opt/caddy/data:/data
|
||||||
|
- /opt/caddy/logs:/var/log
|
||||||
|
extra_hosts:
|
||||||
|
- host:192.168.2.150
|
||||||
@@ -5,9 +5,9 @@ services:
|
|||||||
- AUTO_UPDATE=1
|
- AUTO_UPDATE=1
|
||||||
- BRANCH=master
|
- BRANCH=master
|
||||||
- DNSCRYPT=1
|
- DNSCRYPT=1
|
||||||
- DNSCRYPT_PROVIDER_NAME=2.dnscrypt-cert.ns0.dnscrypt.nl
|
- DNSCRYPT_PROVIDER_NAME=2.dnscrypt-cert.securedns.eu
|
||||||
- DNSCRYPT_RESOLVER_ADDR=45.76.35.212
|
- DNSCRYPT_RESOLVER_ADDR=146.185.167.43
|
||||||
- DNSCRYPT_PROVIDER_KEY=4C84:FB8C:0511:5DFA:5F97:C5ED:0329:1370:C78A:BCD6:4E15:DD53:AB08:DE72:FB84:4ACA
|
- DNSCRYPT_PROVIDER_KEY=F49F:2C73:4D62:B686:319E:D07E:6919:433B:2F13:85F4:1EFB:CA2F:176D:590B:2E45:3E86
|
||||||
image: oznu/dns-ad-blocker:latest
|
image: oznu/dns-ad-blocker:latest
|
||||||
ports:
|
ports:
|
||||||
- 192.168.2.151:53:53/udp
|
- 192.168.2.151:53:53/udp
|
||||||
@@ -9,6 +9,6 @@ services:
|
|||||||
- /opt/facette/etc:/etc/facette
|
- /opt/facette/etc:/etc/facette
|
||||||
- /opt/facette/var:/var/lib/facette
|
- /opt/facette/var:/var/lib/facette
|
||||||
- /opt/collectd/var:/var/lib/collectd
|
- /opt/collectd/var:/var/lib/collectd
|
||||||
- /media/scratch/collectd/shuttle/rrd/server:/var/lib/collectd/rrd/shuttle
|
- /media/scratch/collectd/shuttle/rrd/shuttle:/var/lib/collectd/rrd/shuttle
|
||||||
- /media/scratch/collectd/sepia/rrd/sepia:/var/lib/collectd/rrd/sepia
|
- /media/scratch/collectd/sepia/rrd/sepia:/var/lib/collectd/rrd/sepia
|
||||||
- /media/scratch/collectd/kratos/rrd/kratos:/var/lib/collectd/rrd/kratos
|
- /media/scratch/collectd/kratos/rrd/kratos:/var/lib/collectd/rrd/kratos
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
filebrowser:
|
filebrowser:
|
||||||
container_name: filebrowser
|
container_name: filebrowser
|
||||||
image: filebrowser/filebrowser:v2.28.0
|
image: filebrowser/filebrowser:v2.31.2
|
||||||
ports:
|
ports:
|
||||||
- 8001:80
|
- 8001:80
|
||||||
volumes:
|
volumes:
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
homeassistant:
|
homeassistant:
|
||||||
container_name: homeassistant
|
container_name: homeassistant
|
||||||
image: homeassistant/home-assistant:2024.4.3
|
image: homeassistant/home-assistant:2025.3
|
||||||
network_mode: host
|
network_mode: host
|
||||||
privileged: true
|
privileged: true
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -3,7 +3,7 @@ services:
|
|||||||
container_name: jellyfin
|
container_name: jellyfin
|
||||||
devices:
|
devices:
|
||||||
- /dev/dri/renderD128:/dev/dri/renderD128
|
- /dev/dri/renderD128:/dev/dri/renderD128
|
||||||
image: linuxserver/jellyfin:10.10.3
|
image: linuxserver/jellyfin:10.10.7
|
||||||
ports:
|
ports:
|
||||||
- 8097:8097
|
- 8097:8097
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -26,7 +26,7 @@ services:
|
|||||||
- PHOTOPRISM_DATABASE_DRIVER=sqlite
|
- PHOTOPRISM_DATABASE_DRIVER=sqlite
|
||||||
- PHOTOPRISM_UID=1000
|
- PHOTOPRISM_UID=1000
|
||||||
- PHOTOPRISM_GID=1000
|
- PHOTOPRISM_GID=1000
|
||||||
image: photoprism/photoprism:231128
|
image: photoprism/photoprism:250426
|
||||||
ports:
|
ports:
|
||||||
- 2342:2342
|
- 2342:2342
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
19
compose.readarr.yaml
Normal file
19
compose.readarr.yaml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
services:
|
||||||
|
readarr:
|
||||||
|
container_name: readarr
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
external_links:
|
||||||
|
- transmission
|
||||||
|
extra_hosts:
|
||||||
|
- transmission:192.168.2.150
|
||||||
|
image: linuxserver/readarr:develop-0.4.18.2805-ls156
|
||||||
|
ports:
|
||||||
|
- 18787:8787
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/readarr:/config
|
||||||
|
- /media/nubes/downloads:/downloads
|
||||||
|
- /media/neptune/Books/Epub:/books
|
||||||
11
compose.rsnapshot.yaml
Normal file
11
compose.rsnapshot.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
services:
|
||||||
|
rsnapshot:
|
||||||
|
container_name: rsnapshot
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
image: linuxserver/rsnapshot:1.4.5
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /opt/rsnapshot:/config
|
||||||
|
- /media/jupiter/rsnapshot:/host/scratch
|
||||||
|
- /root/.ssh:/root/.ssh:ro
|
||||||
47
compose.seafile.yaml
Normal file
47
compose.seafile.yaml
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
services:
|
||||||
|
seafile-mysql:
|
||||||
|
image: mariadb:10.11
|
||||||
|
container_name: seafile-mysql
|
||||||
|
ports:
|
||||||
|
- "13306:3306"
|
||||||
|
environment:
|
||||||
|
- MYSQL_ROOT_PASSWORD=ROOT_PASSWORD
|
||||||
|
- MYSQL_LOG_CONSOLE=true
|
||||||
|
- MARIADB_AUTO_UPGRADE=1
|
||||||
|
volumes:
|
||||||
|
- /opt/seafile/database:/var/lib/mysql
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
"CMD",
|
||||||
|
"/usr/local/bin/healthcheck.sh",
|
||||||
|
"--connect",
|
||||||
|
"--mariadbupgrade",
|
||||||
|
"--innodb_initialized",
|
||||||
|
]
|
||||||
|
interval: 20s
|
||||||
|
start_period: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
|
seafile-server:
|
||||||
|
image: seafileltd/seafile-mc:12.0-latest
|
||||||
|
container_name: seafile-server
|
||||||
|
ports:
|
||||||
|
- "8082:80"
|
||||||
|
volumes:
|
||||||
|
- /opt/seafile/server:/shared
|
||||||
|
- /media/seafile:/shared/seafile/seafile-data
|
||||||
|
environment:
|
||||||
|
- DB_HOST=seafile-mysql
|
||||||
|
- DB_PORT=3306
|
||||||
|
- DB_ROOT_PASSWD=ROOT_PASSWORD
|
||||||
|
- DB_PASSWORD=PASSWORD
|
||||||
|
- TIME_ZONE=Europe/Amsterdam
|
||||||
|
- INIT_SEAFILE_ADMIN_EMAIL=admin@veenboer.xyz
|
||||||
|
- INIT_SEAFILE_ADMIN_PASSWORD=asecret
|
||||||
|
- SEAFILE_SERVER_HOSTNAME=seafile.bram.veenboer.xyz
|
||||||
|
- SEAFILE_SERVER_PROTOCOL=https
|
||||||
|
- JWT_PRIVATE_KEY=8LzWzeuQ41z1i8fc1cr1L7Kw80VpTgmT
|
||||||
|
depends_on:
|
||||||
|
- seafile-mysql
|
||||||
@@ -9,7 +9,7 @@ services:
|
|||||||
- transmission
|
- transmission
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
- transmission:192.168.2.150
|
- transmission:192.168.2.150
|
||||||
image: linuxserver/sonarr:4.0.4.1491-ls236
|
image: linuxserver/sonarr:4.0.12
|
||||||
ports:
|
ports:
|
||||||
- 18989:8989
|
- 18989:8989
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
47
compose.yaml
Normal file
47
compose.yaml
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
include:
|
||||||
|
# Web
|
||||||
|
- compose.nginx.yaml
|
||||||
|
- compose.filebrowser.yaml
|
||||||
|
- compose.caddy.yaml
|
||||||
|
- compose.ghost.yaml
|
||||||
|
- compose.lighttpd.yaml
|
||||||
|
- compose.plik.yaml
|
||||||
|
|
||||||
|
# Authentication
|
||||||
|
- compose.surfshark.yaml
|
||||||
|
|
||||||
|
# Download
|
||||||
|
- compose.transmission.yaml
|
||||||
|
- compose.jackett.yaml
|
||||||
|
- compose.radarr.yaml
|
||||||
|
- compose.readarr.yaml
|
||||||
|
- compose.sonarr.yaml
|
||||||
|
- compose.bazarr.yaml
|
||||||
|
- compose.lidarr.yaml
|
||||||
|
|
||||||
|
# Media
|
||||||
|
- compose.jellyfin.yaml
|
||||||
|
- compose.photoprism.yaml
|
||||||
|
|
||||||
|
# Networking
|
||||||
|
- compose.dns-ad-blocker.yaml
|
||||||
|
|
||||||
|
# Backup
|
||||||
|
- compose.rsnapshot.yaml
|
||||||
|
- compose.borgmatic.yaml
|
||||||
|
|
||||||
|
# Sensors
|
||||||
|
- compose.homeassistant.yaml
|
||||||
|
- compose.esphome.yaml
|
||||||
|
- compose.collectd.yaml
|
||||||
|
|
||||||
|
# Storage
|
||||||
|
- compose.seafile.yaml
|
||||||
|
|
||||||
|
# Database
|
||||||
|
- compose.influxdb.yaml
|
||||||
|
- compose.timescaledb.yaml
|
||||||
|
- compose.grafana.yaml
|
||||||
|
- compose.dsmrdb.yaml
|
||||||
|
- compose.dsmr.yaml
|
||||||
|
- compose.facette.yaml
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
services:
|
|
||||||
openvpn-server:
|
|
||||||
cap_add:
|
|
||||||
- NET_ADMIN
|
|
||||||
container_name: openvpn-server
|
|
||||||
extra_hosts:
|
|
||||||
- host:192.168.2.150
|
|
||||||
image: kylemanna/openvpn:2.4
|
|
||||||
network_mode: bridge
|
|
||||||
ports:
|
|
||||||
- 443:443
|
|
||||||
privileged: true
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/openvpn-server:/etc/openvpn
|
|
||||||
- /opt/openvpn-server/logrotate.d/openvpn:/etc/logrotate.d/openvpn
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
services:
|
|
||||||
rsnapshot:
|
|
||||||
container_name: rsnapshot
|
|
||||||
image: linuxserver/rsnapshot:1.4.5
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/rsnapshot/etc:/etc/rsnapshot
|
|
||||||
- /opt/rsnapshot/var/log:/var/log
|
|
||||||
- /opt/rsnapshot/var/run:/var/run
|
|
||||||
- /opt/rsnapshot/var/spool:/var/spool
|
|
||||||
- /opt/rsnapshot/usr:/host/usr
|
|
||||||
- /media/jupiter/rsnapshot:/host/scratch
|
|
||||||
- /root/.ssh:/root/.ssh
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
services:
|
|
||||||
seafile:
|
|
||||||
container_name: seafile
|
|
||||||
environment:
|
|
||||||
- MODE=autorun
|
|
||||||
image: gronis/seafile:10.0.1
|
|
||||||
ports:
|
|
||||||
- 8100:8000
|
|
||||||
- 8180:8080
|
|
||||||
- 8182:8082
|
|
||||||
restart: unless-stopped
|
|
||||||
volumes:
|
|
||||||
- /opt/seafile:/seafile:rw
|
|
||||||
- /media/seafile:/seafile/seafile-data:rw
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
include:
|
|
||||||
# Web
|
|
||||||
- docker-compose.nginx.yml
|
|
||||||
- docker-compose.filebrowser.yml
|
|
||||||
- docker-compose.caddy.yml
|
|
||||||
- docker-compose.ghost.yml
|
|
||||||
- docker-compose.lighttpd.yml
|
|
||||||
- docker-compose.plik.yml
|
|
||||||
|
|
||||||
# Authentication
|
|
||||||
- docker-compose.openvpn-server.yml
|
|
||||||
- docker-compose.surfshark.yml
|
|
||||||
|
|
||||||
# Download
|
|
||||||
- docker-compose.transmission.yml
|
|
||||||
- docker-compose.jackett.yml
|
|
||||||
- docker-compose.radarr.yml
|
|
||||||
- docker-compose.sonarr.yml
|
|
||||||
- docker-compose.bazarr.yml
|
|
||||||
- docker-compose.lidarr.yml
|
|
||||||
|
|
||||||
# Media
|
|
||||||
- docker-compose.jellyfin.yml
|
|
||||||
- docker-compose.photoprism.yml
|
|
||||||
|
|
||||||
# Networking
|
|
||||||
- docker-compose.dns-ad-blocker.yml
|
|
||||||
|
|
||||||
# Backup
|
|
||||||
- docker-compose.rsnapshot.yml
|
|
||||||
- docker-compose.borgmatic.yml
|
|
||||||
|
|
||||||
# Sensors
|
|
||||||
- docker-compose.homeassistant.yml
|
|
||||||
- docker-compose.esphome.yml
|
|
||||||
- docker-compose.collectd.yml
|
|
||||||
|
|
||||||
# Storage
|
|
||||||
- docker-compose.seafile.yml
|
|
||||||
|
|
||||||
# Database
|
|
||||||
- docker-compose.influxdb.yml
|
|
||||||
- docker-compose.timescaledb.yml
|
|
||||||
- docker-compose.grafana.yml
|
|
||||||
- docker-compose.dsmrdb.yml
|
|
||||||
- docker-compose.dsmr.yml
|
|
||||||
- docker-compose.facette.yml
|
|
||||||
143
nginx/etc/nginx/conf.d/global.conf
Normal file
143
nginx/etc/nginx/conf.d/global.conf
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://host:80;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
location /transmission {
|
||||||
|
proxy_pass http://host:9091;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
location /sonarr {
|
||||||
|
proxy_pass http://host:18989;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
location /radarr {
|
||||||
|
proxy_pass http://host:17878;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
location /lidarr {
|
||||||
|
proxy_pass http://host:18686;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
location /bazarr {
|
||||||
|
proxy_pass http://host:16767;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
location /jellyfin {
|
||||||
|
proxy_pass http://host:8097;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
location /facette {
|
||||||
|
proxy_pass http://host:12003;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
location /gitlab {
|
||||||
|
proxy_pass http://host:19080;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
location /filebrowser {
|
||||||
|
proxy_pass http://host:8001;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
location /plik {
|
||||||
|
proxy_pass http://host:8087;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
location /droppy {
|
||||||
|
rewrite ^/droppy(.*)$ /$1 break;
|
||||||
|
proxy_pass http://host:19898;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
location /ghost {
|
||||||
|
proxy_pass http://host:2368;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
location /jackett {
|
||||||
|
proxy_pass http://host:9117;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
location /dss {
|
||||||
|
proxy_pass http://host:10001;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
location /pgsql {
|
||||||
|
proxy_pass http://host:5050;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
location /registry {
|
||||||
|
proxy_pass http://host:1080;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
server { # dsmr
|
||||||
|
listen 80;
|
||||||
|
server_name dsmr.bram.veenboer.xyz;
|
||||||
|
location / {
|
||||||
|
proxy_pass http://host:8888;
|
||||||
|
rewrite ^/dsmr(.*)$ $1 break;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
# homeassistant
|
||||||
|
listen 80;
|
||||||
|
server_name ha.bram.veenboer.xyz;
|
||||||
|
location / {
|
||||||
|
proxy_pass http://host:8123;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
server { # esphome
|
||||||
|
listen 80;
|
||||||
|
server_name esp.bram.veenboer.xyz;
|
||||||
|
location / {
|
||||||
|
proxy_pass http://host:6052;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
# seafile
|
||||||
|
listen 80;
|
||||||
|
server_name seafile.bram.veenboer.xyz;
|
||||||
|
location / {
|
||||||
|
proxy_pass http://host:8082;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
proxy_set_header X-Forwarded-Proto https;
|
||||||
|
}
|
||||||
|
#location /seafhttp {
|
||||||
|
# rewrite ^/seafhttp(.*)$ $1 break;
|
||||||
|
# proxy_pass http://host:8182;
|
||||||
|
# include /etc/nginx/conf/proxy.conf;
|
||||||
|
# proxy_set_header X-Forwarded-Proto https;
|
||||||
|
# client_max_body_size 0;
|
||||||
|
#}
|
||||||
|
#location /seafdav {
|
||||||
|
# proxy_pass http://host:8180;
|
||||||
|
# include /etc/nginx/conf/proxy.conf;
|
||||||
|
#}
|
||||||
|
}
|
||||||
|
|
||||||
|
server { # grafana
|
||||||
|
listen 80;
|
||||||
|
server_name grafana.bram.veenboer.xyz;
|
||||||
|
location / {
|
||||||
|
proxy_pass http://host:3333;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
server { # photoprism
|
||||||
|
listen 80;
|
||||||
|
server_name photoprism.bram.veenboer.xyz;
|
||||||
|
location / {
|
||||||
|
proxy_pass http://host:2342;
|
||||||
|
include /etc/nginx/conf/proxy.conf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
10
nginx/etc/nginx/conf/proxy.conf
Normal file
10
nginx/etc/nginx/conf/proxy.conf
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Proxy
|
||||||
|
proxy_redirect off;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Ssl on;
|
||||||
|
|
||||||
|
# Websocket
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection $http_connection;
|
||||||
21
nginx/etc/nginx/conf/ssl-sub.conf
Normal file
21
nginx/etc/nginx/conf/ssl-sub.conf
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
# Enable SSL
|
||||||
|
ssl_certificate /host/etc/certs/.bram.veenboer.online/certificate+intermediate.pem;
|
||||||
|
ssl_certificate_key /host/etc/certs/.bram.veenboer.online/key.pem;
|
||||||
|
ssl_dhparam /host/etc/certs/.bram.veenboer.online/dh.pem;
|
||||||
|
|
||||||
|
# Increased security, from https://cipherli.st/
|
||||||
|
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
||||||
|
ssl_prefer_server_ciphers on;
|
||||||
|
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
|
||||||
|
ssl_ecdh_curve secp384r1;
|
||||||
|
ssl_session_cache shared:SSL:10m;
|
||||||
|
ssl_session_tickets off;
|
||||||
|
ssl_stapling on;
|
||||||
|
ssl_stapling_verify on;
|
||||||
|
resolver_timeout 5s;
|
||||||
|
# add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
|
||||||
|
add_header X-Frame-Options DENY;
|
||||||
|
add_header X-Content-Type-Options nosniff;
|
||||||
|
|
||||||
|
# Redirect HTTP trafic
|
||||||
|
error_page 497 https://$host:$server_port$request_uri;
|
||||||
20
nginx/etc/nginx/conf/ssl.conf
Normal file
20
nginx/etc/nginx/conf/ssl.conf
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Enable SSL
|
||||||
|
ssl_certificate /host/etc/certs/certificate+intermediate.pem;
|
||||||
|
ssl_certificate_key /host/etc/certs/key.pem;
|
||||||
|
ssl_dhparam /host/etc/certs/dh.pem;
|
||||||
|
|
||||||
|
# Increased security, from https://cipherli.st/
|
||||||
|
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
||||||
|
ssl_prefer_server_ciphers on;
|
||||||
|
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
|
||||||
|
ssl_ecdh_curve secp384r1;
|
||||||
|
ssl_session_cache shared:SSL:10m;
|
||||||
|
ssl_session_tickets off;
|
||||||
|
ssl_stapling on;
|
||||||
|
ssl_stapling_verify on;
|
||||||
|
resolver_timeout 5s;
|
||||||
|
add_header X-Frame-Options DENY;
|
||||||
|
add_header X-Content-Type-Options nosniff;
|
||||||
|
|
||||||
|
# Redirect HTTP trafic
|
||||||
|
error_page 497 https://$host:$server_port$request_uri;
|
||||||
36
nginx/etc/nginx/nginx.conf
Normal file
36
nginx/etc/nginx/nginx.conf
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
user nginx;
|
||||||
|
worker_processes 1;
|
||||||
|
|
||||||
|
error_log /var/log/nginx/error.log warn;
|
||||||
|
pid /var/run/nginx.pid;
|
||||||
|
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
http {
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||||
|
'$status $body_bytes_sent "$http_referer" '
|
||||||
|
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||||
|
|
||||||
|
#access_log /var/log/nginx/access.log main;
|
||||||
|
|
||||||
|
sendfile on;
|
||||||
|
#tcp_nopush on;
|
||||||
|
|
||||||
|
keepalive_timeout 65;
|
||||||
|
|
||||||
|
#gzip on;
|
||||||
|
|
||||||
|
client_body_buffer_size 1000M;
|
||||||
|
client_max_body_size 5000M;
|
||||||
|
|
||||||
|
server_tokens off;
|
||||||
|
error_page 401 403 404 /404.html;
|
||||||
|
include /etc/nginx/conf.d/*.conf;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user