Format all files

This commit is contained in:
Manuel Thalmann 2024-11-29 01:13:58 +01:00
commit 6abc2240be
55 changed files with 733 additions and 660 deletions
scripts/Common/Software/docker/services
anki-sync
drone
forgejo
jellyfin
minecraft
nextcloud
ryot
teamspeak
trackmania
vaultwarden
wekan
woodpecker

View file

@ -12,7 +12,7 @@ begin
initializeServiceInstallation $argv
sudo cp "$dir/docker-compose.base.yml" (getServiceRoot $argv)
USER=$user yq "$userKey = env(USER)" "$source" | \
USER=$user yq "$userKey = env(USER)" "$source" |
sudo tee (getServiceOverrides $argv) >/dev/null
installDockerService $argv

View file

@ -52,8 +52,8 @@ begin
end
CI_NAME=$ciName \
SECRET_ENV="$name.secret.env" \
RUNNER_ENV="$name.runner.env" begin
SECRET_ENV="$name.secret.env" \
RUNNER_ENV="$name.runner.env" begin
begin
printf "%s\n" \
DRONE_RPC_PROTO=http \
@ -62,28 +62,28 @@ begin
echo "DRONE_RPC_SECRET=$secret" | sudo tee "$root/$SECRET_ENV" >/dev/null
yq "$ciKey = $ciTemplate" "$tmpConfig" | \
ENTRY="./data/$name:/data" yq "$ciKey.volumes = [ env(ENTRY) ]" | \
yq "$ciKey.env_file |= . + [ env(SECRET_ENV) ]" | \
PROTO=https yq "$ciEnv.DRONE_SERVER_PROTO = env(PROTO)" | \
HOST=(getServiceDomain "$subdomain" "$domain") yq "$ciEnv.DRONE_SERVER_HOST = env(HOST)" | \
yq "$dockerKey = $dockerTemplate" | \
yq "$sshKey = $sshTemplate" | \
yq "$dockerKey.depends_on = [ env(CI_NAME) ]" | \
yq "$ciKey = $ciTemplate" "$tmpConfig" |
ENTRY="./data/$name:/data" yq "$ciKey.volumes = [ env(ENTRY) ]" |
yq "$ciKey.env_file |= . + [ env(SECRET_ENV) ]" |
PROTO=https yq "$ciEnv.DRONE_SERVER_PROTO = env(PROTO)" |
HOST=(getServiceDomain "$subdomain" "$domain") yq "$ciEnv.DRONE_SERVER_HOST = env(HOST)" |
yq "$dockerKey = $dockerTemplate" |
yq "$sshKey = $sshTemplate" |
yq "$dockerKey.depends_on = [ env(CI_NAME) ]" |
sudo tee "$config" >/dev/null
for key in $dockerKey $sshKey
set -l file (mktemp)
yq "$key.depends_on = [ env(CI_NAME) ]" "$config" | \
yq "$key.env_file |= . + [ env(RUNNER_ENV), env(SECRET_ENV) ]" | \
yq "$key.depends_on = [ env(CI_NAME) ]" "$config" |
yq "$key.env_file |= . + [ env(RUNNER_ENV), env(SECRET_ENV) ]" |
tee "$file" >/dev/null
sudo cp "$file" "$config"
rm "$file"
end
PORT="127.0.0.1:1337:80" yq "$ciKey.ports = [ env(PORT) ]" "$tmpOverrides" | \
PORT="127.0.0.1:1337:80" yq "$ciKey.ports = [ env(PORT) ]" "$tmpOverrides" |
sudo tee "$overrides" >/dev/null
end
end
@ -101,7 +101,7 @@ begin
for i in (seq 1 3 (count $environments))
set -l domain $environments[(math $i + 2)]
set -l subdomain $environments[(math $i + 1)]
set -l subdomain $environments[(math $i + 1)]
printf "%s\0" "$subdomain" "$domain"
end
end

View file

@ -1,8 +1,8 @@
#!/bin/env fish
begin
set -l dir (status dirname)
set -l user "forgejo"
set -l domain "git"
set -l user forgejo
set -l domain git
set -l server "$domain" ""
set -l service $user
source "$dir/../service.fish"
@ -23,21 +23,21 @@ begin
set port (yq (getSSHPortKey) "$source" | mutatePort "$port")
DOMAIN=(getServiceDomain $server) PW=$pw DB=Git USER=forgejo PW=$pw begin
set -l gitEnv "$(getServiceKey "$service").environment"
set -l actEnv "$(getServiceKey "runner").environment"
set -l dbEnv "$(getServiceKey "db").environment"
set -l gitEnv "$(getServiceKey "$service").environment"
set -l actEnv "$(getServiceKey "runner").environment"
set -l dbEnv "$(getServiceKey "db").environment"
PORT=$port yq "$(getSSHPortKey) = env(PORT)" "$source" | \
yq "$gitEnv.FORGEJO__server__DOMAIN = env(DOMAIN)" | \
yq "$gitEnv.FORGEJO__database__NAME = env(DB)" | \
yq "$gitEnv.FORGEJO__database__USER = env(USER)" | \
yq "$gitEnv.FORGEJO__database__PASSWD = env(PW)" | \
yq "$dbEnv.MARIADB_DATABASE = env(DB)" | \
yq "$dbEnv.MARIADB_USER = env(USER)" | \
yq "$dbEnv.MARIADB_PASSWORD = env(PW)" | \
URL="https://$DOMAIN/" yq "$actEnv.GITEA_INSTANCE_URL = env(URL)" | \
sudo tee "$overrides" >/dev/null
end
PORT=$port yq "$(getSSHPortKey) = env(PORT)" "$source" |
yq "$gitEnv.FORGEJO__server__DOMAIN = env(DOMAIN)" |
yq "$gitEnv.FORGEJO__database__NAME = env(DB)" |
yq "$gitEnv.FORGEJO__database__USER = env(USER)" |
yq "$gitEnv.FORGEJO__database__PASSWD = env(PW)" |
yq "$dbEnv.MARIADB_DATABASE = env(DB)" |
yq "$dbEnv.MARIADB_USER = env(USER)" |
yq "$dbEnv.MARIADB_PASSWORD = env(PW)" |
URL="https://$DOMAIN/" yq "$actEnv.GITEA_INSTANCE_URL = env(URL)" |
sudo tee "$overrides" >/dev/null
end
installDockerService $argv
end
@ -49,7 +49,7 @@ begin
set -l file (mktemp)
set -l root (getServiceRoot $argv)
set -l dir "$root/data"
set -l bin "/usr/local/bin/forgejo"
set -l bin /usr/local/bin/forgejo
set -l config "$root/docker-compose.base.yml"
set -l overrides (getServiceOverrides $argv)
set -l envKey "$(getServiceKey "$service").environment"
@ -66,8 +66,8 @@ begin
set uid (id -u $user)
set gid (id -g $user)
and yq "$envKey.USER_UID = $uid" "$file" | \
yq "$envKey.USER_GID = $gid" | \
and yq "$envKey.USER_UID = $uid" "$file" |
yq "$envKey.USER_GID = $gid" |
sudo tee "$config" >/dev/null
mkdir -p "$dir"

View file

@ -1,8 +1,8 @@
#!/bin/env fish
begin
set -l dir (status dirname)
set -l user "jellyfin"
set -l domain "media"
set -l user jellyfin
set -l domain media
set -l server "$domain" ""
set -l servarr radarr sonarr lidarr prowlarr
set -l flood flood
@ -31,7 +31,7 @@ begin
set -l port
set -l file (mktemp)
set -l root (getServiceRoot $argv)
set -l bin "/usr/local/bin/forgejo"
set -l bin /usr/local/bin/forgejo
set -l config "$root/docker-compose.base.yml"
set -l overrides (getServiceOverrides $argv)
set -l envKey "$(getServiceKey "$service").environment"
@ -57,13 +57,13 @@ begin
set -l envKey "$(getServiceKey "$name").environment"
sudo cp "$config" "$file"
and yq "$envKey.PUID = $uid" "$file" | \
yq "$envKey.PGID = $gid" | \
and yq "$envKey.PUID = $uid" "$file" |
yq "$envKey.PGID = $gid" |
sudo tee "$config" >/dev/null
end
cp "$overrides" "$file"
URL="https://$(getServiceDomain "$domain" "")/" yq "$(getServiceKey "$service").environment.JELLYFIN_PublishedServerUrl = env(URL)" "$file" | \
URL="https://$(getServiceDomain "$domain" "")/" yq "$(getServiceKey "$service").environment.JELLYFIN_PublishedServerUrl = env(URL)" "$file" |
sudo tee "$overrides" >/dev/null
for dir in "$root"/{downloads,config/{,jellyfin,flood,rtorrent,radarr,sonarr,lidarr,prowlarr},media/{,movies,series,music}}
@ -99,7 +99,7 @@ begin
function getServiceLocationConfig -a domain s location -V service -V flood
if [ "$s" = "$service" ]
set -l argv $argv[4..]
printf "%s\n" \
"location = / {" \
'return 302 $scheme://$host/web/;' \
@ -107,13 +107,13 @@ begin
getServiceDefaultProxy $domain $s "$location" --comment "Proxy main Jellyfin traffic" $argv
getServiceDefaultProxy $domain $s "= /web/" --path "/web/index.html" --comment "Proxy main Jellyfin traffic" $argv
getServiceDefaultProxy $domain $s "/socket" --comment "Proxy Jellyfin Websockets traffic" $argv
getServiceDefaultProxy $domain $s /socket --comment "Proxy Jellyfin Websockets traffic" $argv
else if [ "$s" = "$flood" ]
getServiceDefaultProxy $argv
printf "%s\n" \
"location = /flood {" \
'return 302 $scheme://$host$uri/$is_args$args;' \
'return 302 $scheme://$host$uri/$is_args$args;' \
"}"
else
getServiceDefaultProxy $argv --path "$location"
@ -126,7 +126,7 @@ begin
printf "%s\n" \
"# Disable buffering when the nginx proxy gets very resource heavy upon streaming" \
"proxy_buffering off;"
else if [ "$location" = "/socket" ]
else if [ "$location" = /socket ]
printf "%s\n" \
'# Websocket' \
"proxy_http_version 1.1;" \

View file

@ -7,6 +7,7 @@ import subprocess
import sys
from protonvpn_cli.cli import FeatureEnum, protonvpn
def run_proton(args):
exit(
subprocess.run(
@ -17,6 +18,7 @@ def run_proton(args):
PIPENV_VENV_IN_PROJECT=f"{1}",
PVPN_CMD_ARGS=" ".join(args))).returncode)
protonvpn.ensure_connectivity()
args = sys.argv[1:]
@ -56,9 +58,11 @@ else:
try:
session.ensure_valid()
except:
raise Exception("Your current session is invalid. Please initialize the session using the `init` subcommand.")
raise Exception(
"Your current session is invalid. Please initialize the session using the `init` subcommand.")
environ["PVPN_USERNAME"] = session.vpn_username + (environ.get("PVPN_TAGS") or "")
environ["PVPN_USERNAME"] = session.vpn_username + \
(environ.get("PVPN_TAGS") or "")
environ["PVPN_PASSWORD"] = session.vpn_password
environ["PVPN_TIER"] = f"{session.vpn_tier}"
@ -95,6 +99,7 @@ else:
run_proton(["connect", server.name])
else:
raise Exception(f"Unable to find a server matching the specified criteria {args[1:]}!")
raise Exception(
f"Unable to find a server matching the specified criteria {args[1:]}!")
else:
run_proton(args)

View file

@ -1,7 +1,7 @@
#!/bin/env fish
begin
set -l dir (status dirname)
set -l user "minecraft"
set -l user minecraft
source "$dir/../service.fish"
function installSW -V dir -V domain -V server -V service
@ -34,8 +34,8 @@ begin
set -l envKey "$(getServiceKey "$service").environment"
cp "$config" "$file"
and yq "$envKey.UID = $uid" "$file" | \
yq "$envKey.GID = $gid" | \
and yq "$envKey.UID = $uid" "$file" |
yq "$envKey.GID = $gid" |
sudo tee "$config" >/dev/null
end

View file

@ -5,7 +5,7 @@ begin
set -l domain cloud ""
set -l service web
set -l office collabora
set -l officeDomain "office" ""
set -l officeDomain office ""
set -l server $service $domain
set -l services \
@ -68,13 +68,13 @@ begin
set -l key "$turnKey.command"
PW="--static-auth-secret=$turnPW" \
DOMAIN="--realm=$domain" \
yq "$key |= . + [env(PW), env(DOMAIN)]" "$overridesSource" | \
DOMAIN=(getServiceDomain $officeDomain) yq "$officeEnv.server_name = env(DOMAIN)" | \
URL="https://$(string escape --style regex "$DOMAIN"):443" yq "$officeEnv.aliasgroup1 = env(URL)" | \
DOMAIN="--realm=$domain" \
yq "$key |= . + [env(PW), env(DOMAIN)]" "$overridesSource" |
DOMAIN=(getServiceDomain $officeDomain) yq "$officeEnv.server_name = env(DOMAIN)" |
URL="https://$(string escape --style regex "$DOMAIN"):443" yq "$officeEnv.aliasgroup1 = env(URL)" |
sudo tee "$overrides" >/dev/null
end
installDockerService $argv
set turnPort (yq (getServicePortKey "$turn") "$overrides" | extractPort)
set turnPort (yq "$portKey" "$overrides" | mutatePort "$turnPort")

View file

@ -1,8 +1,8 @@
#!/bin/env fish
begin
set -l dir (status dirname)
set -l domain "tracker" ""
set -l service "ryot"
set -l domain tracker ""
set -l service ryot
set -l source "$dir/docker-compose.overrides.yml"
source "$dir/../service.fish"
@ -17,8 +17,8 @@ begin
initializeServiceInstallation $argv
sudo cp "$file" "$root"
URL=$dbUrl yq "$dbKey = env(URL)" "$source" | \
PW=$pw yq ".services.db.environment.POSTGRES_PASSWORD = env(PW)" | \
URL=$dbUrl yq "$dbKey = env(URL)" "$source" |
PW=$pw yq ".services.db.environment.POSTGRES_PASSWORD = env(PW)" |
sudo tee (getServiceOverrides $argv) >/dev/null
installDockerService $argv

View file

@ -5,26 +5,26 @@ begin
source "$dir/../service.fish"
function installSW -V dir -V domain -V source
set -l service "teamspeak"
set -l service teamspeak
set -l pw (nix-shell -p keepassxc --run "keepassxc-cli generate --length 32")
set -l db "TeamSpeak"
set -l db TeamSpeak
set -l tsEnv "$(getServiceKey "$service").environment"
set -l dbEnv "$(getServiceKey db).environment"
initializeServiceInstallation $argv
cp "$dir/docker-compose.base.yml" (getServiceRoot $argv)
USER="$service" begin
yq "$tsEnv.TS3SERVER_DB_USER = env(USER)" "$source" | \
yq "$dbEnv.MARIADB_USER = env(USER)"
yq "$tsEnv.TS3SERVER_DB_USER = env(USER)" "$source" |
yq "$dbEnv.MARIADB_USER = env(USER)"
end | \
PW="$pw" begin
yq "$tsEnv.TS3SERVER_DB_PASSWORD = env(PW)" | \
yq "$dbEnv.MARIADB_PASSWORD = env(PW)"
end | \
DB="$db" begin
yq "$tsEnv.TS3SERVER_DB_NAME = env(DB)" | \
yq "$dbEnv.MARIADB_DATABASE = env(DB)"
PW="$pw" begin
yq "$tsEnv.TS3SERVER_DB_PASSWORD = env(PW)" |
yq "$dbEnv.MARIADB_PASSWORD = env(PW)"
end | \
DB="$db" begin
yq "$tsEnv.TS3SERVER_DB_NAME = env(DB)" |
yq "$dbEnv.MARIADB_DATABASE = env(DB)"
end |
sudo tee (getServiceOverrides $argv) >/dev/null
installDockerService $argv

View file

@ -12,8 +12,8 @@ begin
cp -rf "$dir"/{.dockerignore,docker-compose{.base,.overrides,.core{,.overrides}}.yml,parser.patch,tmforever-entrypoint.sh,trackmania.Dockerfile,xaseco-entrypoint.sh,xaseco.Dockerfile} "$root"
PW="$tmPW" yq "$(getServiceKey "tm").environment.TM_SUPERADMIN_PASSWORD = env(PW)" "$source" | \
PW="$sqlPW" yq "$(getServiceKey "db").environment.MYSQL_PASSWORD = env(PW)" | \
PW="$tmPW" yq "$(getServiceKey "tm").environment.TM_SUPERADMIN_PASSWORD = env(PW)" "$source" |
PW="$sqlPW" yq "$(getServiceKey "db").environment.MYSQL_PASSWORD = env(PW)" |
sudo tee "$root/$(basename "$source")" >/dev/null
installDockerService $argv
@ -33,5 +33,5 @@ begin
echo "^docker-compose\.core\.overrides\.yml\$"
end
runInstaller --force $argv --name "tm-forever"
runInstaller --force $argv --name tm-forever
end

View file

@ -29,30 +29,30 @@ serverOptions=(
TM_TITLE name
TM_COMMENT comment
TM_HIDDEN hide_server
\
TM_MAX_PLAYERS max_players
TM_PLAYER_PASSWORD password
\
TM_MAX_SPECTATORS max_spectators
TM_SPECTATOR_PASSWORD password_spectator
\
TM_LADDER_MODE ladder_mode
TM_LADDER_LIMIT_MIN ladder_serverlimit_min
TM_LADDER_LIMIT_MAX ladder_serverlimit_max
\
TM_ENABLE_P2P_UPLOAD enable_p2p_upload
TM_ENABLE_P2P_DOWNLOAD enable_p2p_download
\
TM_CALLVOTE_TIMEOUT callvote_timeout
TM_CALLVOTE_RATIO callvote_ratio
\
TM_ALLOW_CHALLENGE_DOWNLOAD allow_challenge_download
TM_AUTOSAVE_REPLAYS autosave_replays
TM_AUTOSAVE_VALIDATION_REPLAYS autosave_validation_replays
\
TM_REFEREE_PASSWORD referee_password
TM_REFEREE_VALIDATION_MODE referee_validation_mode
\
TM_USE_CHANGING_VALIDATION_SEED use_changing_validation_seed
)
@ -62,23 +62,23 @@ systemOptions=(
TM_P2P_PORT server_p2p_port
TM_CLIENT_PORT client_port
TM_USE_NAT_UPNP use_nat_upnp
\
TM_XMLRPC_PORT xmlrpc_port
TM_XMLRPC_ALLOWED_REMOTE xmlrpc_allowremote
\
TM_PACKMASK packmask
\
TM_CONNECTION_UPLOADRATE connection_uploadrate
TM_CONNECTION_DOWNLOADRATE connection_downloadrate
\
TM_P2P_CACHE_SIZE p2p_cache_size
\
TM_BLACKLIST_URL blacklist_url
TM_GUESTLIST_FILENAME guestlist_filename
TM_BLACKLIST_FILENAME blacklist_filename
\
TM_ALLOW_SPECTATOR_RELAYS allow_spectator_relays
\
TM_USE_PROXY use_proxy
TM_PROXY_LOGIN proxy_login
TM_PROXY_PASSWORD proxy_password

View file

@ -1,7 +1,7 @@
#!/bin/env fish
begin
set -l dir (status dirname)
set -l domain "passwords"
set -l domain passwords
set -l source "$dir/docker-compose.overrides.yml"
source "$dir/../service.fish"
@ -14,10 +14,10 @@ begin
initializeServiceInstallation $argv
cp "$dir/docker-compose.base.yml" (getServiceRoot $argv)
URL="https://$domain.$(getMachineFQDN)" yq "$envKey.DOMAIN = env(URL)" "$source" | \
ADDRESS="no-reply@$(getMachineFQDN)" yq "$envKey.SMTP_FROM = env(ADDRESS)" | \
URL=$dbUrl yq "$dbKey = env(URL)" | \
PW=$pw yq ".services.db.environment.MARIADB_PASSWORD = env(PW)" | \
URL="https://$domain.$(getMachineFQDN)" yq "$envKey.DOMAIN = env(URL)" "$source" |
ADDRESS="no-reply@$(getMachineFQDN)" yq "$envKey.SMTP_FROM = env(ADDRESS)" |
URL=$dbUrl yq "$dbKey = env(URL)" |
PW=$pw yq ".services.db.environment.MARIADB_PASSWORD = env(PW)" |
sudo tee (getServiceOverrides $argv) >/dev/null
installDockerService $argv

View file

@ -12,7 +12,7 @@ begin
sudo cp "$dir/docker-compose.base.yml" (getServiceRoot $argv)
URL="https://$domain" yq "$(getServiceKey "$service").environment.ROOT_URL = env(URL)" "$dir/$(basename "$overrides")" | \
URL="https://$domain" yq "$(getServiceKey "$service").environment.ROOT_URL = env(URL)" "$dir/$(basename "$overrides")" |
sudo tee "$overrides" >/dev/null
installDockerService $argv

View file

@ -57,29 +57,29 @@ begin
end
CI_NAME=$ciName \
SECRET_ENV="$name.secret.env" begin
SECRET_ENV="$name.secret.env" begin
begin
echo "WOODPECKER_AGENT_SECRET=$secret"
end | sudo tee "$root/$SECRET_ENV" >/dev/null
yq "$ciKey = $ciTemplate" "$tmpConfig" | \
DB="$dbName" yq "$ciKey.depends_on |= . + [ env(DB) ]" | \
ENTRY="./data/$name/ci:/var/lib/woodpecker" yq "$ciKey.volumes = [ env(ENTRY) ]" | \
yq "$ciKey.env_file |= . + [ env(SECRET_ENV) ]" | \
yq "$agentKey = $agentTemplate" | \
yq "$agentKey.depends_on |= . + [ env(CI_NAME) ]" | \
yq "$agentKey.env_file |= . + [ env(SECRET_ENV) ]" | \
SERVER="$ciName:9000" yq "$agentEnv.WOODPECKER_SERVER = env(SERVER)" | \
yq "$dbKey = $dbTemplate" | \
ENTRY="./data/$name/db:/var/lib/mysql" yq "$dbKey.volumes |= . + [ env(ENTRY) ]" | \
yq "$ciKey = $ciTemplate" "$tmpConfig" |
DB="$dbName" yq "$ciKey.depends_on |= . + [ env(DB) ]" |
ENTRY="./data/$name/ci:/var/lib/woodpecker" yq "$ciKey.volumes = [ env(ENTRY) ]" |
yq "$ciKey.env_file |= . + [ env(SECRET_ENV) ]" |
yq "$agentKey = $agentTemplate" |
yq "$agentKey.depends_on |= . + [ env(CI_NAME) ]" |
yq "$agentKey.env_file |= . + [ env(SECRET_ENV) ]" |
SERVER="$ciName:9000" yq "$agentEnv.WOODPECKER_SERVER = env(SERVER)" |
yq "$dbKey = $dbTemplate" |
ENTRY="./data/$name/db:/var/lib/mysql" yq "$dbKey.volumes |= . + [ env(ENTRY) ]" |
sudo tee "$config" >/dev/null
HOST="https://$domain" yq "$ciEnv.WOODPECKER_HOST = env(HOST)" "$tmpOverrides" | \
PORT="127.0.0.1:1337:8000" yq "$ciKey.ports = [ env(PORT) ]" | \
DB="$dbUser:$pw@tcp($dbName:3306)/$db?parseTime=true" yq "$ciEnv.WOODPECKER_DATABASE_DATASOURCE = env(DB)" | \
USER="$dbUser" yq "$dbEnv.MARIADB_USER = env(USER)" | \
PW="$pw" yq "$dbEnv.MARIADB_PASSWORD = env(PW)" | \
DB="$db" yq "$dbEnv.MARIADB_DATABASE = env(DB)" | \
HOST="https://$domain" yq "$ciEnv.WOODPECKER_HOST = env(HOST)" "$tmpOverrides" |
PORT="127.0.0.1:1337:8000" yq "$ciKey.ports = [ env(PORT) ]" |
DB="$dbUser:$pw@tcp($dbName:3306)/$db?parseTime=true" yq "$ciEnv.WOODPECKER_DATABASE_DATASOURCE = env(DB)" |
USER="$dbUser" yq "$dbEnv.MARIADB_USER = env(USER)" |
PW="$pw" yq "$dbEnv.MARIADB_PASSWORD = env(PW)" |
DB="$db" yq "$dbEnv.MARIADB_DATABASE = env(DB)" |
sudo tee "$overrides" >/dev/null
end
end
@ -97,7 +97,7 @@ begin
for i in (seq 1 3 (count $environments))
set -l domain $environments[(math $i + 2)]
set -l subdomain $environments[(math $i + 1)]
set -l subdomain $environments[(math $i + 1)]
printf "%s\0" "$subdomain" "$domain"
end
end