feat: add various Docker services and configurations for Minecraft, Plex, Sabnzbd, and more
This commit is contained in:
parent
a439ccc355
commit
e83ebe2d2c
@ -106,10 +106,10 @@ decrypt_folder() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
if [[ "$2" == "decrypt" ]]; then
|
if [[ "$1" == "decrypt" ]]; then
|
||||||
printfe "%s\n" "cyan" "Decrypting secrets..."
|
printfe "%s\n" "cyan" "Decrypting secrets..."
|
||||||
decrypt_folder ~/dotfiles/secrets
|
decrypt_folder ~/dotfiles/secrets
|
||||||
elif [[ "$2" == "encrypt" ]]; then
|
elif [[ "$1" == "encrypt" ]]; then
|
||||||
printfe "%s\n" "cyan" "Encrypting secrets..."
|
printfe "%s\n" "cyan" "Encrypting secrets..."
|
||||||
encrypt_folder ~/dotfiles/secrets
|
encrypt_folder ~/dotfiles/secrets
|
||||||
fi
|
fi
|
10
config/flatpaks/io.ente.auth.flatpakref
Normal file
10
config/flatpaks/io.ente.auth.flatpakref
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[Flatpak Ref]
|
||||||
|
Name=io.ente.auth
|
||||||
|
Branch=stable
|
||||||
|
Title=io.ente.auth from flathub
|
||||||
|
IsRuntime=false
|
||||||
|
Url=https://dl.flathub.org/repo/
|
||||||
|
SuggestRemoteName=flathub
|
||||||
|
GPGKey=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
|
||||||
|
RuntimeRepo=https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||||
|
|
@ -16,90 +16,97 @@
|
|||||||
else
|
else
|
||||||
[ ./hosts/fallback.nix ];
|
[ ./hosts/fallback.nix ];
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages =
|
||||||
# General packages
|
with pkgs;
|
||||||
git
|
[
|
||||||
gnupg
|
# General packages
|
||||||
gh
|
git
|
||||||
nixfmt-rfc-style
|
gnupg
|
||||||
wget
|
gh
|
||||||
fastfetch
|
nixfmt-rfc-style
|
||||||
|
wget
|
||||||
|
fastfetch
|
||||||
|
|
||||||
# Package management
|
# Package management
|
||||||
pipx
|
pipx
|
||||||
devbox
|
devbox
|
||||||
|
|
||||||
# Development SDKs/Toolkits
|
# Development SDKs/Toolkits
|
||||||
gcc
|
gcc
|
||||||
pkg-config
|
pkg-config
|
||||||
gnumake
|
gnumake
|
||||||
stdenv.cc
|
stdenv.cc
|
||||||
rustc
|
rustc
|
||||||
cargo
|
cargo
|
||||||
cargo-edit
|
cargo-edit
|
||||||
cargo-watch
|
cargo-watch
|
||||||
cargo-audit
|
cargo-audit
|
||||||
cargo-expand
|
cargo-expand
|
||||||
cargo-tarpaulin
|
cargo-tarpaulin
|
||||||
pyenv
|
pyenv
|
||||||
act # GitHub Actions CLI
|
act # GitHub Actions CLI
|
||||||
|
|
||||||
# File and directory operations
|
# File and directory operations
|
||||||
eza # Modern ls
|
eza # Modern ls
|
||||||
bat # Modern cat
|
bat # Modern cat
|
||||||
zoxide # Smarter cd command
|
zoxide # Smarter cd command
|
||||||
broot # Interactive directory navigator
|
broot # Interactive directory navigator
|
||||||
du-dust # Modern du
|
du-dust # Modern du
|
||||||
duf # Modern df
|
duf # Modern df
|
||||||
zip
|
zip
|
||||||
unzip
|
unzip
|
||||||
|
bottom # Modern top/htop
|
||||||
|
glances # Advanced system monitoring tool
|
||||||
|
procs # Modern ps
|
||||||
|
hyperfine # Benchmarking tool
|
||||||
|
|
||||||
# Search and text processing
|
# Search and text processing
|
||||||
ripgrep # Modern grep
|
ripgrep # Modern grep
|
||||||
sd # Modern sed
|
sd # Modern sed
|
||||||
choose # Modern cut
|
choose # Modern cut
|
||||||
jq # JSON processor
|
jq # JSON processor
|
||||||
yq # YAML processor
|
yq # YAML processor
|
||||||
xsv # CSV processor
|
xsv # CSV processor
|
||||||
|
|
||||||
# System monitoring and process management
|
# System monitoring and process management
|
||||||
procs # Modern ps
|
procs # Modern ps
|
||||||
bottom # Modern top/htop
|
bottom # Modern top/htop
|
||||||
hyperfine # Benchmarking tool
|
hyperfine # Benchmarking tool
|
||||||
bandwhich # Network utilization tool
|
bandwhich # Network utilization tool
|
||||||
doggo # Modern dig
|
doggo # Modern dig
|
||||||
gping # Ping with graph
|
gping # Ping with graph
|
||||||
htop # Interactive process viewer
|
htop # Interactive process viewer
|
||||||
|
|
||||||
# Development utilities
|
# Development utilities
|
||||||
delta # Better git diff
|
delta # Better git diff
|
||||||
difftastic # Structural diff tool
|
difftastic # Structural diff tool
|
||||||
fzf # Fuzzy finder
|
fzf # Fuzzy finder
|
||||||
tokei # Code statistics
|
tokei # Code statistics
|
||||||
tealdeer # Modern tldr client
|
tealdeer # Modern tldr client
|
||||||
lazygit # Terminal UI for git
|
lazygit # Terminal UI for git
|
||||||
|
|
||||||
# Shell and terminal
|
# Shell and terminal
|
||||||
starship # Cross-shell prompt
|
starship # Cross-shell prompt
|
||||||
blesh # Bash ble.sh
|
blesh # Bash ble.sh
|
||||||
zellij # Modern terminal multiplexer
|
zellij # Modern terminal multiplexer
|
||||||
screen # Terminal multiplexer
|
screen # Terminal multiplexer
|
||||||
|
|
||||||
# File viewers and processors
|
# File viewers and processors
|
||||||
hexyl # Modern hexdump
|
hexyl # Modern hexdump
|
||||||
chafa # Terminal image viewer
|
chafa # Terminal image viewer
|
||||||
glow # Markdown renderer
|
glow # Markdown renderer
|
||||||
|
|
||||||
# Editors
|
# Editors
|
||||||
neovim
|
neovim
|
||||||
nano
|
nano
|
||||||
micro
|
micro
|
||||||
|
|
||||||
# Lolz
|
# Lolz
|
||||||
fortune
|
fortune
|
||||||
cowsay
|
cowsay
|
||||||
cmatrix
|
cmatrix
|
||||||
figlet
|
figlet
|
||||||
lolcat
|
lolcat
|
||||||
];
|
]
|
||||||
|
++ (with pkgs-unstable; [ ]);
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
"code.desktop"
|
"code.desktop"
|
||||||
"org.telegram.desktop.desktop"
|
"org.telegram.desktop.desktop"
|
||||||
"spotify.desktop"
|
"spotify.desktop"
|
||||||
|
"com.plexamp.Plexamp.desktop"
|
||||||
"vesktop.desktop"
|
"vesktop.desktop"
|
||||||
"org.gnome.Geary.desktop"
|
"org.gnome.Geary.desktop"
|
||||||
"org.gnome.Nautilus.desktop"
|
"org.gnome.Nautilus.desktop"
|
||||||
|
19
config/nixos/docker/arr-stack.nix
Normal file
19
config/nixos/docker/arr-stack.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
environment.etc."docker/arr-stack/docker-compose.yml".source = ./arr-stack/docker-compose.yml;
|
||||||
|
|
||||||
|
systemd.services.arr-stack = {
|
||||||
|
description = "arr-stack Docker Compose Service";
|
||||||
|
after = [ "network-online.target" ];
|
||||||
|
wants = [ "network-online.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/arr-stack/docker-compose.yml up";
|
||||||
|
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/arr-stack/docker-compose.yml down";
|
||||||
|
WorkingDirectory = "/etc/docker/arr-stack";
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = 10;
|
||||||
|
};
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
}
|
97
config/nixos/docker/arr-stack/docker-compose.yml
Normal file
97
config/nixos/docker/arr-stack/docker-compose.yml
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
name: arr-stack
|
||||||
|
services:
|
||||||
|
radarr:
|
||||||
|
container_name: radarr
|
||||||
|
image: lscr.io/linuxserver/radarr:latest
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
ports:
|
||||||
|
- 7878:7878
|
||||||
|
extra_hosts:
|
||||||
|
- host.docker.internal:host-gateway
|
||||||
|
volumes:
|
||||||
|
- ./data/radarr-config:/config
|
||||||
|
- /mnt/20tb:/storage
|
||||||
|
restart: "unless-stopped"
|
||||||
|
|
||||||
|
sonarr:
|
||||||
|
image: linuxserver/sonarr:latest
|
||||||
|
container_name: sonarr
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
volumes:
|
||||||
|
- ./data/sonarr-config:/config
|
||||||
|
- /mnt/20tb:/storage
|
||||||
|
ports:
|
||||||
|
- 8989:8989
|
||||||
|
extra_hosts:
|
||||||
|
- host.docker.internal:host-gateway
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
lidarr:
|
||||||
|
image: linuxserver/lidarr:latest
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
ports:
|
||||||
|
- 8686:8686
|
||||||
|
extra_hosts:
|
||||||
|
- host.docker.internal:host-gateway
|
||||||
|
volumes:
|
||||||
|
- ./data/lidarr-config:/config
|
||||||
|
- /mnt/20tb:/storage
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
whisparr:
|
||||||
|
image: ghcr.io/hotio/whisparr:latest
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
ports:
|
||||||
|
- 8386:8686
|
||||||
|
extra_hosts:
|
||||||
|
- host.docker.internal:host-gateway
|
||||||
|
volumes:
|
||||||
|
- ./data/whisparr-config:/config
|
||||||
|
- /mnt/20tb:/storage
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
prowlarr:
|
||||||
|
container_name: prowlarr
|
||||||
|
image: linuxserver/prowlarr:latest
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
volumes:
|
||||||
|
- ./data/prowlarr-config:/config
|
||||||
|
extra_hosts:
|
||||||
|
- host.docker.internal:host-gateway
|
||||||
|
ports:
|
||||||
|
- 9696:9696
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
flaresolverr:
|
||||||
|
image: ghcr.io/flaresolverr/flaresolverr:latest
|
||||||
|
container_name: flaresolverr
|
||||||
|
environment:
|
||||||
|
- LOG_LEVEL=${LOG_LEVEL:-info}
|
||||||
|
- LOG_HTML=${LOG_HTML:-false}
|
||||||
|
- CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none}
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
ports:
|
||||||
|
- "8191:8191"
|
||||||
|
extra_hosts:
|
||||||
|
- host.docker.internal:host-gateway
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
overseerr:
|
||||||
|
image: lscr.io/linuxserver/overseerr:latest
|
||||||
|
container_name: overseerr
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
volumes:
|
||||||
|
- ./data/overseerr-config:/config
|
||||||
|
ports:
|
||||||
|
- 5555:5055
|
||||||
|
extra_hosts:
|
||||||
|
- host.docker.internal:host-gateway
|
||||||
|
restart: unless-stopped
|
@ -1,12 +1,18 @@
|
|||||||
{ ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./wireguard.nix
|
./arr-stack.nix
|
||||||
./duplicati.nix
|
./duplicati.nix
|
||||||
./factorio.nix
|
./factorio.nix
|
||||||
|
./gitea.nix
|
||||||
./golink.nix
|
./golink.nix
|
||||||
./immich.nix
|
./immich.nix
|
||||||
|
./minecraft.nix
|
||||||
|
./plex.nix
|
||||||
|
./sabnzbd.nix
|
||||||
./satisfactory.nix
|
./satisfactory.nix
|
||||||
./gitea.nix
|
./stash.nix
|
||||||
|
./torrent.nix
|
||||||
|
./wireguard.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -6,8 +6,8 @@ services:
|
|||||||
- TZ=Europe/Amsterdam
|
- TZ=Europe/Amsterdam
|
||||||
- CLI_ARGS=
|
- CLI_ARGS=
|
||||||
volumes:
|
volumes:
|
||||||
- ./config:/config
|
- ./data:/config
|
||||||
- /mnt:/source/mnt
|
- /mnt/20tb:/mnt
|
||||||
- /etc/docker:/source/etc/docker
|
- /etc/docker:/source/etc/docker
|
||||||
ports:
|
ports:
|
||||||
- 8200:8200
|
- 8200:8200
|
||||||
|
@ -17,12 +17,13 @@ services:
|
|||||||
restart: "unless-stopped"
|
restart: "unless-stopped"
|
||||||
environment:
|
environment:
|
||||||
- "FACTORIO_VERSION=stable"
|
- "FACTORIO_VERSION=stable"
|
||||||
|
- "RCON_PASS=458fc84534"
|
||||||
ports:
|
ports:
|
||||||
- "5080:80"
|
- "5080:80"
|
||||||
- "34197:34197/udp"
|
- "34197:34197/udp"
|
||||||
volumes:
|
volumes:
|
||||||
- "./fsm:/opt/fsm-data"
|
- "./data/fsm:/opt/fsm-data"
|
||||||
- "./saves:/opt/factorio/saves"
|
- "./data/saves:/opt/factorio/saves"
|
||||||
- "./mods:/opt/factorio/mods"
|
- "./data/mods:/opt/factorio/mods"
|
||||||
- "./config:/opt/factorio/config"
|
- "./data/config:/opt/factorio/config"
|
||||||
- "./mod_packs:/opt/fsm/mod_packs"
|
- "./data/mod_packs:/opt/fsm/mod_packs"
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
# The location where your uploaded files are stored
|
# The location where your uploaded files are stored
|
||||||
UPLOAD_LOCATION=/mnt/8tb/Photos/immich-library
|
UPLOAD_LOCATION=/mnt/8tb/Photos/immich-library
|
||||||
# The location where your database files are stored
|
# The location where your database files are stored
|
||||||
DB_DATA_LOCATION=./postgres
|
DB_DATA_LOCATION=./data/postgres
|
||||||
|
|
||||||
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
|
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
|
||||||
TZ=Europe/Amsterdam
|
TZ=Europe/Amsterdam
|
||||||
|
20
config/nixos/docker/minecraft.nix
Normal file
20
config/nixos/docker/minecraft.nix
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
environment.etc."docker/minecraft/docker-compose.yml".source = ./minecraft/docker-compose.yml;
|
||||||
|
environment.etc."docker/minecraft/shell.sh".source = ./minecraft/shell.sh;
|
||||||
|
|
||||||
|
systemd.services.minecraft = {
|
||||||
|
description = "minecraft Docker Compose Service";
|
||||||
|
after = [ "network-online.target" ];
|
||||||
|
wants = [ "network-online.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/minecraft/docker-compose.yml up";
|
||||||
|
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/minecraft/docker-compose.yml down";
|
||||||
|
WorkingDirectory = "/etc/docker/minecraft";
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = 10;
|
||||||
|
};
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
}
|
77
config/nixos/docker/minecraft/docker-compose.yml
Normal file
77
config/nixos/docker/minecraft/docker-compose.yml
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
name: minecraft
|
||||||
|
services:
|
||||||
|
upnp:
|
||||||
|
image: ghcr.io/vleeuwenmenno/auto-upnp:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
network_mode: host
|
||||||
|
environment:
|
||||||
|
UPNP_DURATION: 86400 # 24 hours in seconds
|
||||||
|
PORTS: |
|
||||||
|
[
|
||||||
|
{"port": 25565, "protocol": "tcp"},
|
||||||
|
{"port": 25565, "protocol": "udp"},
|
||||||
|
{"port": 24454, "protocol": "udp"},
|
||||||
|
{"port": 3456, "protocol": "tcp"},
|
||||||
|
{"port": 19132, "protocol": "udp"}
|
||||||
|
]
|
||||||
|
|
||||||
|
paper:
|
||||||
|
image: itzg/minecraft-server
|
||||||
|
tty: true
|
||||||
|
stdin_open: true
|
||||||
|
ports:
|
||||||
|
- "25565:25565/tcp"
|
||||||
|
- "24454:24454/udp"
|
||||||
|
- "19132:19132/udp"
|
||||||
|
- "3456:8100/tcp"
|
||||||
|
environment:
|
||||||
|
EULA: "TRUE"
|
||||||
|
TYPE: "paper"
|
||||||
|
VERSION: 1.21.1
|
||||||
|
DIFFICULTY: "hard"
|
||||||
|
SERVER_NAME: "Paper Mostly Vanilla Server"
|
||||||
|
MOTD: "Paper Server (Supports 1.20.x and newer!)"
|
||||||
|
MEMORY: "32G"
|
||||||
|
MAX_PLAYERS: 32
|
||||||
|
VIEW_DISTANCE: 32
|
||||||
|
SPAWN_MONSTERS: true
|
||||||
|
SPAWN_ANIMALS: true
|
||||||
|
ENFORCE_SECURE_PROFILE: false
|
||||||
|
|
||||||
|
PLUGINS: |
|
||||||
|
https://cdn.modrinth.com/data/Jrmoreqs/versions/Ch2Vh0XL/AdvancedBackups-spigot-1.21-3.6.3.jar
|
||||||
|
https://cdn.modrinth.com/data/9eGKb6K1/versions/tA5pALYl/voicechat-bukkit-2.5.25.jar
|
||||||
|
https://cdn.modrinth.com/data/eBqOQXoA/versions/ndMZChDv/RecoveryTotem-1.0.1.jar
|
||||||
|
https://cdn.modrinth.com/data/fALzjamp/versions/ytBhnGfO/Chunky-Bukkit-1.4.28.jar
|
||||||
|
https://cdn.modrinth.com/data/P1OZGk5p/versions/ffAFJrjN/ViaVersion-5.1.1.jar
|
||||||
|
https://cdn.modrinth.com/data/NpvuJQoq/versions/kwAAl5BS/ViaBackwards-5.1.1.jar
|
||||||
|
https://cdn.modrinth.com/data/wKkoqHrH/versions/ohEXB7mE/Geyser-Spigot.jar
|
||||||
|
https://cdn.modrinth.com/data/Vebnzrzj/versions/cfNN7sys/LuckPerms-Bukkit-5.4.145.jar
|
||||||
|
https://cdn.modrinth.com/data/swbUV1cr/versions/DB0OeC5p/bluemap-5.4-spigot.jar
|
||||||
|
|
||||||
|
OPS: |
|
||||||
|
StarDebris
|
||||||
|
|
||||||
|
WHITELIST: |
|
||||||
|
StarDebris
|
||||||
|
Audi358
|
||||||
|
TechnikTake
|
||||||
|
MsPremium
|
||||||
|
Barny_8874
|
||||||
|
Ricky_2405
|
||||||
|
KinderKiller3000
|
||||||
|
ScherzkeksMiner
|
||||||
|
PauBau
|
||||||
|
QuickWitPhil
|
||||||
|
Draxonix
|
||||||
|
Zakomi
|
||||||
|
skintsoldier122
|
||||||
|
Krank4ever
|
||||||
|
Benjilami
|
||||||
|
Barny_8847
|
||||||
|
Destination456
|
||||||
|
xKizu
|
||||||
|
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- ./data:/data
|
2
config/nixos/docker/minecraft/shell.sh
Executable file
2
config/nixos/docker/minecraft/shell.sh
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
docker compose exec paper rcon-cli $@
|
19
config/nixos/docker/plex.nix
Normal file
19
config/nixos/docker/plex.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
environment.etc."docker/plex/docker-compose.yml".source = ./plex/docker-compose.yml;
|
||||||
|
|
||||||
|
systemd.services.plex = {
|
||||||
|
description = "plex Docker Compose Service";
|
||||||
|
after = [ "network-online.target" ];
|
||||||
|
wants = [ "network-online.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/plex/docker-compose.yml up";
|
||||||
|
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/plex/docker-compose.yml down";
|
||||||
|
WorkingDirectory = "/etc/docker/plex";
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = 10;
|
||||||
|
};
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
}
|
35
config/nixos/docker/plex/docker-compose.yml
Normal file
35
config/nixos/docker/plex/docker-compose.yml
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
services:
|
||||||
|
plex:
|
||||||
|
image: lscr.io/linuxserver/plex:latest
|
||||||
|
container_name: plex
|
||||||
|
network_mode: host
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
reservations:
|
||||||
|
devices:
|
||||||
|
- driver: nvidia
|
||||||
|
count: 1
|
||||||
|
capabilities: [gpu]
|
||||||
|
|
||||||
|
environment:
|
||||||
|
- VERSION=docker
|
||||||
|
- PLEX_CLAIM=claim-sfTz4AWc_Uxhzfzz9fKS
|
||||||
|
- NVIDIA_VISIBLE_DEVICES=all
|
||||||
|
- NVIDIA_DRIVER_CAPABILITIES=compute,video,utility
|
||||||
|
volumes:
|
||||||
|
- ./data/plex:/config
|
||||||
|
- /mnt/20tb/Movies:/movies
|
||||||
|
- /mnt/20tb/TV_Shows:/tvshows
|
||||||
|
- /mnt/20tb/Music:/music
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
tautulli:
|
||||||
|
image: lscr.io/linuxserver/tautulli:latest
|
||||||
|
container_name: tautulli
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
volumes:
|
||||||
|
- ./data/tautulli:/config
|
||||||
|
ports:
|
||||||
|
- 8181:8181
|
||||||
|
restart: unless-stopped
|
19
config/nixos/docker/sabnzbd.nix
Normal file
19
config/nixos/docker/sabnzbd.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
environment.etc."docker/sabnzbd/docker-compose.yml".source = ./sabnzbd/docker-compose.yml;
|
||||||
|
|
||||||
|
systemd.services.sabnzbd = {
|
||||||
|
description = "sabnzbd Docker Compose Service";
|
||||||
|
after = [ "network-online.target" ];
|
||||||
|
wants = [ "network-online.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/sabnzbd/docker-compose.yml up";
|
||||||
|
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/sabnzbd/docker-compose.yml down";
|
||||||
|
WorkingDirectory = "/etc/docker/sabnzbd";
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = 10;
|
||||||
|
};
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
}
|
12
config/nixos/docker/sabnzbd/docker-compose.yml
Normal file
12
config/nixos/docker/sabnzbd/docker-compose.yml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
services:
|
||||||
|
sabnzbd:
|
||||||
|
image: lscr.io/linuxserver/sabnzbd:latest
|
||||||
|
container_name: sabnzbd
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Amsterdam
|
||||||
|
volumes:
|
||||||
|
- ./data:/config
|
||||||
|
- /mnt/20tb:/storage
|
||||||
|
ports:
|
||||||
|
- 7788:8080
|
||||||
|
restart: unless-stopped
|
@ -32,8 +32,6 @@ services:
|
|||||||
- './data/certs/live/satisfactory.mvl.sh/privkey.pem:/config/gamefiles/FactoryGame/Certificates/private_key.pem'
|
- './data/certs/live/satisfactory.mvl.sh/privkey.pem:/config/gamefiles/FactoryGame/Certificates/private_key.pem'
|
||||||
environment:
|
environment:
|
||||||
- MAXPLAYERS=4
|
- MAXPLAYERS=4
|
||||||
- PGID=1000
|
|
||||||
- PUID=1000
|
|
||||||
- ROOTLESS=false
|
- ROOTLESS=false
|
||||||
- STEAMBETA=false
|
- STEAMBETA=false
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
19
config/nixos/docker/stash.nix
Normal file
19
config/nixos/docker/stash.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
environment.etc."docker/stash/docker-compose.yml".source = ./stash/docker-compose.yml;
|
||||||
|
|
||||||
|
systemd.services.stash = {
|
||||||
|
description = "stash Docker Compose Service";
|
||||||
|
after = [ "network-online.target" ];
|
||||||
|
wants = [ "network-online.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/stash/docker-compose.yml up";
|
||||||
|
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/stash/docker-compose.yml down";
|
||||||
|
WorkingDirectory = "/etc/docker/stash";
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = 10;
|
||||||
|
};
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
}
|
28
config/nixos/docker/stash/docker-compose.yml
Normal file
28
config/nixos/docker/stash/docker-compose.yml
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
services:
|
||||||
|
stash:
|
||||||
|
image: stashapp/stash:latest
|
||||||
|
container_name: stash
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "9999:9999"
|
||||||
|
environment:
|
||||||
|
- STASH_STASH=/data/
|
||||||
|
- STASH_GENERATED=/generated/
|
||||||
|
- STASH_METADATA=/metadata/
|
||||||
|
- STASH_CACHE=/cache/
|
||||||
|
- STASH_PORT=9999
|
||||||
|
volumes:
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
|
||||||
|
## Keep configs, scrapers, and plugins here.
|
||||||
|
- ./data/config:/root/.stash
|
||||||
|
## Point this at your collection.
|
||||||
|
- /mnt/20tb/Stash:/data
|
||||||
|
## This is where your stash's metadata lives
|
||||||
|
- ./data/metadata:/metadata
|
||||||
|
## Any other cache content.
|
||||||
|
- ./data/cache:/cache
|
||||||
|
## Where to store binary blob data (scene covers, images)
|
||||||
|
- ./data/blobs:/blobs
|
||||||
|
## Where to store generated content (screenshots,previews,transcodes,sprites)
|
||||||
|
- ./data/generated:/generated
|
19
config/nixos/docker/torrent.nix
Normal file
19
config/nixos/docker/torrent.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
environment.etc."docker/torrent/docker-compose.yml".source = ./torrent/docker-compose.yml;
|
||||||
|
|
||||||
|
systemd.services.torrent = {
|
||||||
|
description = "Torrent Docker Compose Service";
|
||||||
|
after = [ "network-online.target" ];
|
||||||
|
wants = [ "network-online.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/torrent/docker-compose.yml up";
|
||||||
|
ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f /etc/docker/torrent/docker-compose.yml down";
|
||||||
|
WorkingDirectory = "/etc/docker/torrent";
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = 10;
|
||||||
|
};
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
}
|
0
config/nixos/docker/torrent/README.md
Normal file
0
config/nixos/docker/torrent/README.md
Normal file
35
config/nixos/docker/torrent/docker-compose.yml
Normal file
35
config/nixos/docker/torrent/docker-compose.yml
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
services:
|
||||||
|
gluetun:
|
||||||
|
image: qmcgaw/gluetun:latest
|
||||||
|
container_name: gluetun
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
network_mode: bridge
|
||||||
|
ports:
|
||||||
|
- 6881:6881
|
||||||
|
- 6881:6881/udp
|
||||||
|
- 8085:8085
|
||||||
|
volumes:
|
||||||
|
- ./data/gluetun:/gluetun
|
||||||
|
environment:
|
||||||
|
- VPN_SERVICE_PROVIDER=${VPN_SERVICE_PROVIDER}
|
||||||
|
- OPENVPN_USER=${OPENVPN_USER}
|
||||||
|
- OPENVPN_PASSWORD=${OPENVPN_PASSWORD}
|
||||||
|
- SERVER_COUNTRIES=${SERVER_COUNTRIES}
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
qbittorrent:
|
||||||
|
image: lscr.io/linuxserver/qbittorrent
|
||||||
|
container_name: qbittorrent
|
||||||
|
network_mode: "service:gluetun"
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- WEBUI_PORT=8085
|
||||||
|
volumes:
|
||||||
|
- "/etc/localtime:/etc/localtime:ro"
|
||||||
|
- ./data/qbit:/config
|
||||||
|
- /mnt/20tb:/storage
|
||||||
|
depends_on:
|
||||||
|
- gluetun
|
||||||
|
restart: always
|
@ -19,7 +19,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- PEERS=s24,pc,laptop
|
- PEERS=s24,pc,laptop
|
||||||
volumes:
|
volumes:
|
||||||
- ./config:/config
|
- ./data:/config
|
||||||
ports:
|
ports:
|
||||||
- 51820:51820/udp
|
- 51820:51820/udp
|
||||||
sysctls:
|
sysctls:
|
||||||
|
@ -6,5 +6,7 @@
|
|||||||
yubikey-manager
|
yubikey-manager
|
||||||
trash-cli
|
trash-cli
|
||||||
sqlite # Used for managing SQLite databases (Brave Settings etc.)
|
sqlite # Used for managing SQLite databases (Brave Settings etc.)
|
||||||
|
xcp # Rust implementation of cp/mv command
|
||||||
|
pandoc # Document converter (Markdown, HTML, PDF etc.) (Mostly used for static site generators)
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
1
config/nixos/packages/server/mennovanleeuwen.nl/.gitignore
vendored
Normal file
1
config/nixos/packages/server/mennovanleeuwen.nl/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
dist/
|
12
config/nixos/packages/server/mennovanleeuwen.nl/Makefile
Normal file
12
config/nixos/packages/server/mennovanleeuwen.nl/Makefile
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
build:
|
||||||
|
cd ../; docker compose down;
|
||||||
|
|
||||||
|
rm -rf dist/
|
||||||
|
mkdir dist
|
||||||
|
|
||||||
|
pandoc index.md --template=template.html --metadata title="Resume - Menno Cornelis van Leeuwen" -o dist/index.html
|
||||||
|
pandoc index.md -o dist/index.pdf
|
||||||
|
|
||||||
|
mkdir dist/css/
|
||||||
|
cp css/stylesheet.css dist/css/stylesheet.css
|
||||||
|
cd ../; docker compose up -d;
|
1662
config/nixos/packages/server/mennovanleeuwen.nl/css/stylesheet.css
Normal file
1662
config/nixos/packages/server/mennovanleeuwen.nl/css/stylesheet.css
Normal file
File diff suppressed because it is too large
Load Diff
84
config/nixos/packages/server/mennovanleeuwen.nl/index.md
Normal file
84
config/nixos/packages/server/mennovanleeuwen.nl/index.md
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
|
||||||
|
# Menno Cornelis van Leeuwen
|
||||||
|
|
||||||
|
## Contact Information
|
||||||
|
|
||||||
|
**Location:** Reguliersdwarsstraat 12A, 1947 GG, Beverwijk
|
||||||
|
|
||||||
|
**Phone:** +31 (06) 499-351-79
|
||||||
|
|
||||||
|
**Email:** menno@vleeuwen.me
|
||||||
|
|
||||||
|
**LinkedIn:** [linkedin.com/in/menno-v-44477b176/](https://www.linkedin.com/in/menno-v-44477b176/)
|
||||||
|
|
||||||
|
**GitHub:** [github.com/vleeuwenmenno](https://github.com/vleeuwenmenno)
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
An enthusiastic software engineer who likes to learn new things and discover new oppertunities. Experienced in programming in Flutter, Dart, PHP and C#.
|
||||||
|
|
||||||
|
Although my current language of choice is Dart with the Flutter framework but I am open to anything to see what is beyond my horizon.
|
||||||
|
|
||||||
|
Aside from that I am also experienced in building, maintaining and repairing computer systems and networks.
|
||||||
|
|
||||||
|
## Skills
|
||||||
|
|
||||||
|
- **Programming Languages:** C# .NET, Flutter, Dart, PHP, Laravel
|
||||||
|
- **Tools & Technologies:** Git, Docker, Provider (Flutter), VS Code, Rider, PHP Storm
|
||||||
|
- **Methodologies:** Agile/Scrum, Object-Oriented Programming
|
||||||
|
|
||||||
|
## Experience
|
||||||
|
|
||||||
|
### **Software Engineer | Sandwave / Your.Online (Formerly TWS) | Nov 2021 – Present**
|
||||||
|
|
||||||
|
- Worked in an agile/scrum environment, sparred with smaller teams.
|
||||||
|
- Implemented complex authentication flows with modern security practices.
|
||||||
|
- Guarded the dependencies
|
||||||
|
|
||||||
|
### **.NET / PHP Developer | Minty Media | Nov 2020 – Oct-2021**
|
||||||
|
|
||||||
|
- Implemented API bridges between Bol.com and WooCommerce
|
||||||
|
- Setup CI/CD pipelines to streamline testing and deployment of applications
|
||||||
|
- Started the development of a full hosting panel solution including DNS Editor, Domain purchasing, VPS Options etc.
|
||||||
|
|
||||||
|
### **Flutter Developer | Bots.io (Formerly RevenYOU) | Mar 2019 – Oct-2019**
|
||||||
|
|
||||||
|
- Spearheaded the development of the Bots.io App, with now more than 1M+ downloads.
|
||||||
|
- Implemented the skeleton of the app and sparred with UI designers to make it the best it can be.
|
||||||
|
|
||||||
|
### **All Round/Repair Technician/Sales | Com Today | Jan 2014 – Mar 2019**
|
||||||
|
|
||||||
|
- Developed an in-house cashier program in PHP to track sales, expenses, stock and ongoing tasks.
|
||||||
|
- Worked on repairing computers, laptops, phones, and anything in between.
|
||||||
|
- Maintained stock, sold new systems to customers, and assisted customers with technical support.
|
||||||
|
|
||||||
|
## Education
|
||||||
|
|
||||||
|
|
||||||
|
### **MBO 4 Application & Media developer | Nova College in Beverwijk | Aug 2015 – May 2019**
|
||||||
|
|
||||||
|
- Working with scrum/agile methodologies.
|
||||||
|
- Improved my existing self-thought knowledge in Object-oriented programming and design patterns.
|
||||||
|
- Using version control to manage code with Git and Subversion.
|
||||||
|
|
||||||
|
### **MBO 2 Occupation IT Employee | Nova College in Beverwijk | 2012 – 2014**
|
||||||
|
|
||||||
|
- Building, diagnosing and repairing computers.
|
||||||
|
- Completed multiple Cisco and Aries courses related to networking and computer technologies.
|
||||||
|
|
||||||
|
## Hobbies
|
||||||
|
|
||||||
|
- Astrophotography & image processing
|
||||||
|
- Beautiful photos of galaxies, nebula and star fields.
|
||||||
|
- Take a look at [astrobin.com/users/vleeuwenmenno](https://www.astrobin.com/users/vleeuwenmenno/) for my best work.
|
||||||
|
- Learning about cultures & languages while travelling
|
||||||
|
- Trying to go outside my comfort zone and speak another language while learning about their cultures.
|
||||||
|
- Creating endless programming test projects
|
||||||
|
- That sometimes evolve into something more
|
||||||
|
- FPV Freestyle Drones & Cinematic
|
||||||
|
- Building, flying and of course crashing drones, usually in the summer.
|
||||||
|
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
Available upon request.
|
@ -0,0 +1,13 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Resume - Menno Cornelis van Leeuwen</title>
|
||||||
|
<link rel="stylesheet" href="/css/stylesheet.css" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="stackedit">
|
||||||
|
<div class="stackedit__html">$body$</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
13
config/nixos/packages/server/nginx.nix
Normal file
13
config/nixos/packages/server/nginx.nix
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
# Resume/CV Website (Nginx)
|
||||||
|
services.nginx = {
|
||||||
|
enable = true;
|
||||||
|
virtualHosts."localhost:4203" = {
|
||||||
|
root = "/home/menno/dotfiles/config/nixos/packages/server/mennovanleeuwen.nl";
|
||||||
|
locations."/" = {
|
||||||
|
index = "index.html";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
119
config/nixos/packages/server/traefik.nix
Normal file
119
config/nixos/packages/server/traefik.nix
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
services.traefik = {
|
||||||
|
enable = true;
|
||||||
|
staticConfigOptions = {
|
||||||
|
entryPoints = {
|
||||||
|
web.address = ":80";
|
||||||
|
websecure.address = ":443";
|
||||||
|
};
|
||||||
|
certificatesResolvers.letsencrypt.acme = {
|
||||||
|
email = "menno@vleeuwen.me";
|
||||||
|
storage = "/var/lib/traefik/acme.json";
|
||||||
|
httpChallenge.entryPoint = "web";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
dynamicConfigOptions = {
|
||||||
|
http = {
|
||||||
|
# Plex Media Server
|
||||||
|
routers.plex = {
|
||||||
|
rule = "Host(`plex.vleeuwen.me`)";
|
||||||
|
service = "plex";
|
||||||
|
entryPoints = [ "websecure" ];
|
||||||
|
tls.certResolver = "letsencrypt";
|
||||||
|
};
|
||||||
|
services.plex.loadBalancer.servers = [ { url = "http://127.0.0.1:32400"; } ];
|
||||||
|
|
||||||
|
# Tautulli (Plex Stats)
|
||||||
|
routers.tautulli = {
|
||||||
|
rule = "Host(`tautulli.vleeuwen.me`)";
|
||||||
|
service = "tautulli";
|
||||||
|
entryPoints = [ "websecure" ];
|
||||||
|
tls.certResolver = "letsencrypt";
|
||||||
|
};
|
||||||
|
services.tautulli.loadBalancer.servers = [ { url = "http://127.0.0.1:8181"; } ];
|
||||||
|
|
||||||
|
# Jellyfin
|
||||||
|
routers.jellyfin = {
|
||||||
|
rule = "Host(`jellyfin.vleeuwen.me`)";
|
||||||
|
service = "jellyfin";
|
||||||
|
entryPoints = [ "websecure" ];
|
||||||
|
tls.certResolver = "letsencrypt";
|
||||||
|
};
|
||||||
|
services.jellyfin.loadBalancer.servers = [ { url = "http://127.0.0.1:8096"; } ];
|
||||||
|
|
||||||
|
# Overseerr
|
||||||
|
routers.overseerr = {
|
||||||
|
rule = "Host(`overseerr.vleeuwen.me`)";
|
||||||
|
service = "overseerr";
|
||||||
|
entryPoints = [ "websecure" ];
|
||||||
|
tls.certResolver = "letsencrypt";
|
||||||
|
};
|
||||||
|
services.overseerr.loadBalancer.servers = [ { url = "http://127.0.0.1:5555"; } ];
|
||||||
|
|
||||||
|
# Immich (Google Photos alternative)
|
||||||
|
routers.immich = {
|
||||||
|
rule = "Host(`photos.vleeuwen.me`)";
|
||||||
|
service = "immich";
|
||||||
|
entryPoints = [ "websecure" ];
|
||||||
|
tls.certResolver = "letsencrypt";
|
||||||
|
};
|
||||||
|
services.immich.loadBalancer.servers = [ { url = "http://127.0.0.1:2283"; } ];
|
||||||
|
|
||||||
|
# Gitea Git Server
|
||||||
|
routers.gitea = {
|
||||||
|
rule = "Host(`git.mvl.sh`)";
|
||||||
|
service = "gitea";
|
||||||
|
entryPoints = [ "websecure" ];
|
||||||
|
tls.certResolver = "letsencrypt";
|
||||||
|
};
|
||||||
|
services.gitea.loadBalancer.servers = [ { url = "http://127.0.0.1:3030"; } ];
|
||||||
|
|
||||||
|
# Home Assistant
|
||||||
|
routers.homeassistant = {
|
||||||
|
rule = "Host(`home.vleeuwen.me`)";
|
||||||
|
service = "homeassistant";
|
||||||
|
entryPoints = [ "websecure" ];
|
||||||
|
tls.certResolver = "letsencrypt";
|
||||||
|
};
|
||||||
|
services.homeassistant.loadBalancer.servers = [ { url = "http://192.168.86.254:8123"; } ];
|
||||||
|
|
||||||
|
# InfluxDB for Home Assistant
|
||||||
|
routers.influxdb = {
|
||||||
|
rule = "Host(`influxdb.vleeuwen.me`)";
|
||||||
|
service = "influxdb";
|
||||||
|
entryPoints = [ "websecure" ];
|
||||||
|
tls.certResolver = "letsencrypt";
|
||||||
|
};
|
||||||
|
services.influxdb.loadBalancer.servers = [ { url = "http://192.168.86.254:8086"; } ];
|
||||||
|
|
||||||
|
# Bluemap for Minecraft
|
||||||
|
routers.bluemap = {
|
||||||
|
rule = "Host(`map.mvl.sh`)";
|
||||||
|
service = "bluemap";
|
||||||
|
entryPoints = [ "websecure" ];
|
||||||
|
tls.certResolver = "letsencrypt";
|
||||||
|
};
|
||||||
|
services.bluemap.loadBalancer.servers = [ { url = "http://127.0.0.1:3456"; } ];
|
||||||
|
|
||||||
|
# Factorio Server Manager
|
||||||
|
routers.factorio = {
|
||||||
|
rule = "Host(`fsm.mvl.sh`)";
|
||||||
|
service = "factorio";
|
||||||
|
entryPoints = [ "websecure" ];
|
||||||
|
tls.certResolver = "letsencrypt";
|
||||||
|
};
|
||||||
|
services.factorio.loadBalancer.servers = [ { url = "http://127.0.0.1:5080"; } ];
|
||||||
|
|
||||||
|
# Resume/CV Website
|
||||||
|
routers.personal-site = {
|
||||||
|
rule = "Host(`mennovanleeuwen.nl`)";
|
||||||
|
service = "personal-site";
|
||||||
|
entryPoints = [ "websecure" ];
|
||||||
|
tls.certResolver = "letsencrypt";
|
||||||
|
};
|
||||||
|
services.personal-site.loadBalancer.servers = [ { url = "http://127.0.0.1:4203"; } ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user