Merge branch 'refactor'
27
.gitignore
vendored
@@ -1,19 +1,18 @@
|
||||
*.mp3
|
||||
root/secrets
|
||||
root/foundry_secrets.json
|
||||
home/certbot/conf/*
|
||||
!home/certbot/conf/.gitkeep
|
||||
home/dir2cast/getID3
|
||||
home/dir2cast/temp
|
||||
home/foundry/Data/modules/*
|
||||
!home/foundry/Data/modules/asc
|
||||
home/foundry/Data/systems/*
|
||||
home/foundry/Data/worlds/*
|
||||
home/foundry/container_cache
|
||||
home/yacht/data.sqlite
|
||||
home/filebrowser/database.db
|
||||
apps/certbot/conf/*
|
||||
!apps/certbot/conf/.gitkeep
|
||||
apps/dir2cast/getID3
|
||||
apps/dir2cast/temp
|
||||
apps/foundry/Data/modules/*
|
||||
!apps/foundry/Data/modules/asc
|
||||
apps/foundry/Data/systems/*
|
||||
apps/foundry/Data/worlds/*
|
||||
apps/foundry/foundry_secrets.json
|
||||
apps/foundry/container_cache
|
||||
apps/yacht/data.sqlite
|
||||
apps/filebrowser/database.db
|
||||
**/.idea/**
|
||||
home/vouch/config.yml
|
||||
apps/vouch/config.yml
|
||||
design/
|
||||
|
||||
# General
|
||||
|
||||
12
.gitmodules
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
[submodule "apps/dir2cast"]
|
||||
path = apps/dir2cast
|
||||
url = https://github.com/ben-xo/dir2cast
|
||||
[submodule "apps/rolladvantage"]
|
||||
path = apps/rolladvantage
|
||||
url = https://gitea.ascorrea.com/asc/rolladvantage.git
|
||||
[submodule "scripts/docker-install"]
|
||||
path = scripts/docker-install
|
||||
url = https://github.com/docker/docker-install
|
||||
[submodule "scripts/localhost-ssl"]
|
||||
path = scripts/localhost-ssl
|
||||
url = https://gist.github.com/jonsamp/587b78b7698be7c7fd570164a586e6b7
|
||||
10
Dockerfile
Normal file
@@ -0,0 +1,10 @@
|
||||
FROM nginx
|
||||
RUN echo $UID
|
||||
|
||||
RUN mkdir -p /var/www/dir2cast
|
||||
RUN chown -R www-data:www-data /var/www/dir2cast
|
||||
|
||||
COPY apps/dir2cast/dir2cast.php /var/www/dir2cast
|
||||
COPY apps/dir2cast/getID3 /var/www/dir2cast/getID3
|
||||
RUN ln -s /var/www/podcast/dir2cast.ini /var/www/dir2cast
|
||||
RUN ln -s /var/www/podcast/ /var/www/dir2cast
|
||||
1
apps/dir2cast
Submodule
4
apps/filebrowser/Dockerfile
Normal file
@@ -0,0 +1,4 @@
|
||||
FROM filebrowser/filebrowser
|
||||
COPY docker-entrypoint.sh /usr/local/bin
|
||||
RUN ln -s /usr/local/bin/docker-entrypoint.sh /docker-entrypoint.sh
|
||||
ENTRYPOINT ["/docker-entrypoint.sh"]
|
||||
39
apps/filebrowser/docker-entrypoint.sh
Executable file
@@ -0,0 +1,39 @@
|
||||
#!/bin/sh
|
||||
USERS_DIR=/srv/filebrowser/files/users/
|
||||
|
||||
echo "Initializing container"
|
||||
/filebrowser config init
|
||||
/filebrowser config set --auth.method=$AUTH_METHOD --auth.header=$AUTH_HEADER
|
||||
|
||||
mkdir -p $USERS_DIR
|
||||
|
||||
|
||||
USER=anthonyscorrea@gmail.com
|
||||
/filebrowser users add $USER "" --perm.admin
|
||||
/filebrowser users update $USER --scope "users/$USER"
|
||||
mkdir -p $USERS_DIR$USER
|
||||
ln -s /srv/foundry/Data/modules $USERS_DIR$USER/foundry-modules
|
||||
ln -s /srv/foundry/Data/worlds $USERS_DIR$USER/foundry-worlds
|
||||
ln -s /srv/foundry/Data/systems $USERS_DIR$USER/foundry-systems
|
||||
ln -s /srv/metube $USERS_DIR$USER/metube
|
||||
ln -s /srv/foundry/ $USERS_DIR$USER/foundry
|
||||
|
||||
USER=bcrase@gmail.com
|
||||
/filebrowser users add $USER ""
|
||||
/filebrowser users update $USER --scope "users/$USER"
|
||||
mkdir -p $USERS_DIR$USER
|
||||
ln -s /srv/foundry/Data/worlds $USERS_DIR$USER/foundry-worlds
|
||||
ln -s /srv/metube $USERS_DIR$USER/metube
|
||||
|
||||
USER=acorre20@gmail.com
|
||||
/filebrowser users add $USER ""
|
||||
/filebrowser users update $USER --scope "users/$USER"
|
||||
mkdir -p $USERS_DIR$USER
|
||||
ln -s /srv/foundry/Data/worlds $USERS_DIR$USER/foundry-worlds
|
||||
|
||||
/filebrowser users add $USER ""
|
||||
/filebrowser users update $USER --scope "users/$USER"
|
||||
mkdir -p $USERS_DIR$USER
|
||||
|
||||
|
||||
exec "/filebrowser"
|
||||
8
apps/filebrowser/filebrowser.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"port": 80,
|
||||
"baseURL": "/filebrowser",
|
||||
"address": "",
|
||||
"log": "stdout",
|
||||
"database": "/srv/filebrowser/database.db",
|
||||
"root": "/srv/filebrowser/files"
|
||||
}
|
||||
20
apps/filebrowser/filebrowser.nginx.conf
Normal file
@@ -0,0 +1,20 @@
|
||||
location /filebrowser/ {
|
||||
auth_request /vouch/validate;
|
||||
auth_request_set $auth_resp_x_vouch_user $upstream_http_x_vouch_user;
|
||||
proxy_set_header X-Vouch-User $auth_resp_x_vouch_user;
|
||||
add_header X-Vouch-User $auth_resp_x_vouch_user;
|
||||
client_max_body_size 2048m;
|
||||
proxy_read_timeout 86400s;
|
||||
proxy_send_timeout 86400s;
|
||||
proxy_set_header X-Forwarded-Host $host;
|
||||
proxy_set_header X-Forwarded-Server $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_http_version 1.1;
|
||||
proxy_redirect off;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
|
||||
proxy_pass http://filebrowser:80/filebrowser/;
|
||||
}
|
||||
1
apps/foundry/Dockerfile
Normal file
@@ -0,0 +1 @@
|
||||
FROM felddy/foundryvtt:release
|
||||
24
apps/foundry/foundry.nginx.conf
Normal file
@@ -0,0 +1,24 @@
|
||||
location ~ ^/foundry/$ {
|
||||
return 301 /foundry/game/;
|
||||
}
|
||||
|
||||
|
||||
location /foundry/ {
|
||||
auth_request /vouch/validate;
|
||||
auth_request_set $auth_resp_x_vouch_user $upstream_http_x_vouch_user;
|
||||
proxy_set_header X-Vouch-User $auth_resp_x_vouch_user;
|
||||
# Set proxy headers
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
# These are important to support WebSockets
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
# may need to set
|
||||
# auth_request_set $auth_resp_x_vouch_user $upstream_http_x_vouch_user;
|
||||
# in this bock as per https://github.com/vouch/vouch-proxy/issues/26#issuecomment-425215810
|
||||
# set user header (usually an email)
|
||||
proxy_pass http://foundry:30000/foundry/;
|
||||
}
|
||||
|
||||
3
apps/foundry/foundry_secrets_sample.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"foundry_admin_key": ""
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"awsConfig": null,
|
||||
"compressStatic": false,
|
||||
"dataPath": "/data",
|
||||
"dataPath": "/srv/foundry",
|
||||
"fullscreen": false,
|
||||
"hostname": null,
|
||||
"language": "en.core",
|
||||
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
147
apps/html/assets/img/filebrowser-logo.svg
Normal file
@@ -0,0 +1,147 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xml:space="preserve"
|
||||
width="560"
|
||||
height="560"
|
||||
version="1.1"
|
||||
style="clip-rule:evenodd;fill-rule:evenodd;image-rendering:optimizeQuality;shape-rendering:geometricPrecision;text-rendering:geometricPrecision"
|
||||
viewBox="0 0 560 560"
|
||||
id="svg44"
|
||||
sodipodi:docname="icon_raw.svg"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
inkscape:export-filename="/home/umarcor/filebrowser/logo/icon_raw.svg.png"
|
||||
inkscape:export-xdpi="96"
|
||||
inkscape:export-ydpi="96"><metadata
|
||||
id="metadata48"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="711"
|
||||
id="namedview46"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.33714286"
|
||||
inkscape:cx="-172.33051"
|
||||
inkscape:cy="280"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="20"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg44" />
|
||||
<defs
|
||||
id="defs4">
|
||||
<style
|
||||
type="text/css"
|
||||
id="style2">
|
||||
<![CDATA[
|
||||
.fil1 {fill:#FEFEFE}
|
||||
.fil6 {fill:#006498}
|
||||
.fil7 {fill:#0EA5EB}
|
||||
.fil8 {fill:#2979FF}
|
||||
.fil3 {fill:#2BBCFF}
|
||||
.fil0 {fill:#455A64}
|
||||
.fil4 {fill:#53C6FC}
|
||||
.fil5 {fill:#BDEAFF}
|
||||
.fil2 {fill:#332C2B;fill-opacity:0.149020}
|
||||
]]>
|
||||
</style>
|
||||
</defs>
|
||||
<g
|
||||
id="g85"
|
||||
transform="translate(-70,-70)"><path
|
||||
class="fil1"
|
||||
d="M 350,71 C 504,71 629,196 629,350 629,504 504,629 350,629 196,629 71,504 71,350 71,196 196,71 350,71 Z"
|
||||
id="path9"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#fefefe" /><path
|
||||
class="fil2"
|
||||
d="M 475,236 593,387 C 596,503 444,639 301,585 L 225,486 339,330 c 0,0 138,-95 136,-94 z"
|
||||
id="path11"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#332c2b;fill-opacity:0.14902003" /><path
|
||||
class="fil3"
|
||||
d="m 231,211 h 208 l 38,24 v 246 c 0,5 -3,8 -8,8 H 231 c -5,0 -8,-3 -8,-8 V 219 c 0,-5 3,-8 8,-8 z"
|
||||
id="path13"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#2bbcff" /><path
|
||||
class="fil4"
|
||||
d="m 231,211 h 208 l 38,24 v 2 L 440,214 H 231 c -4,0 -7,3 -7,7 v 263 c -1,-1 -1,-2 -1,-3 V 219 c 0,-5 3,-8 8,-8 z"
|
||||
id="path15"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#53c6fc" /><polygon
|
||||
class="fil5"
|
||||
points="305,212 418,212 418,310 305,310 "
|
||||
id="polygon17"
|
||||
style="fill:#bdeaff" /><path
|
||||
class="fil5"
|
||||
d="m 255,363 h 189 c 3,0 5,2 5,4 V 483 H 250 V 367 c 0,-2 2,-4 5,-4 z"
|
||||
id="path19"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#bdeaff" /><polygon
|
||||
class="fil6"
|
||||
points="250,470 449,470 449,483 250,483 "
|
||||
id="polygon21"
|
||||
style="fill:#006498" /><path
|
||||
class="fil6"
|
||||
d="m 380,226 h 10 c 3,0 6,2 6,5 v 40 c 0,3 -3,6 -6,6 h -10 c -3,0 -6,-3 -6,-6 v -40 c 0,-3 3,-5 6,-5 z"
|
||||
id="path23"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#006498" /><path
|
||||
class="fil1"
|
||||
d="m 254,226 c 10,0 17,7 17,17 0,9 -7,16 -17,16 -9,0 -17,-7 -17,-16 0,-10 8,-17 17,-17 z"
|
||||
id="path25"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#fefefe" /><path
|
||||
class="fil6"
|
||||
d="m 267,448 h 165 c 2,0 3,1 3,3 v 0 c 0,1 -1,3 -3,3 H 267 c -2,0 -3,-2 -3,-3 v 0 c 0,-2 1,-3 3,-3 z"
|
||||
id="path27"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#006498" /><path
|
||||
class="fil6"
|
||||
d="m 267,415 h 165 c 2,0 3,1 3,3 v 0 c 0,1 -1,2 -3,2 H 267 c -2,0 -3,-1 -3,-2 v 0 c 0,-2 1,-3 3,-3 z"
|
||||
id="path29"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#006498" /><path
|
||||
class="fil6"
|
||||
d="m 267,381 h 165 c 2,0 3,2 3,3 v 0 c 0,2 -1,3 -3,3 H 267 c -2,0 -3,-1 -3,-3 v 0 c 0,-1 1,-3 3,-3 z"
|
||||
id="path31"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#006498" /><path
|
||||
class="fil1"
|
||||
d="m 236,472 c 3,0 5,2 5,5 0,2 -2,4 -5,4 -3,0 -5,-2 -5,-4 0,-3 2,-5 5,-5 z"
|
||||
id="path33"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#fefefe" /><path
|
||||
class="fil1"
|
||||
d="m 463,472 c 3,0 5,2 5,5 0,2 -2,4 -5,4 -3,0 -5,-2 -5,-4 0,-3 2,-5 5,-5 z"
|
||||
id="path35"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#fefefe" /><polygon
|
||||
class="fil6"
|
||||
points="305,212 284,212 284,310 305,310 "
|
||||
id="polygon37"
|
||||
style="fill:#006498" /><path
|
||||
class="fil7"
|
||||
d="m 477,479 v 2 c 0,5 -3,8 -8,8 H 231 c -5,0 -8,-3 -8,-8 v -2 c 0,4 3,8 8,8 h 238 c 5,0 8,-4 8,-8 z"
|
||||
id="path39"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#0ea5eb" /><path
|
||||
class="fil8"
|
||||
d="M 350,70 C 505,70 630,195 630,350 630,505 505,630 350,630 195,630 70,505 70,350 70,195 195,70 350,70 Z m 0,46 C 479,116 584,221 584,350 584,479 479,584 350,584 221,584 116,479 116,350 116,221 221,116 350,116 Z"
|
||||
id="path41"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#2979ff" /></g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 296 KiB After Width: | Height: | Size: 296 KiB |
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 290 KiB After Width: | Height: | Size: 290 KiB |
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
BIN
apps/html/assets/img/metube.png
Normal file
|
After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 228 KiB After Width: | Height: | Size: 228 KiB |
40
apps/html/gm-tools/index.html
Normal file
@@ -0,0 +1,40 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<title>Crew of the Kahuna</title>
|
||||
<link rel="stylesheet" href="../assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,500,500i,600,600i,700,700i,800,800i&display=swap">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Oswald:200,300,400,500,600,700&display=swap">
|
||||
<link rel="stylesheet" href="../assets/css/Articles-Cards-images.css">
|
||||
<link rel="stylesheet" href="../assets/css/Features-Cards-icons.css">
|
||||
<link rel="stylesheet" href="../assets/css/Navigation-Clean.css">
|
||||
<link rel="shortcut icon" type="image/jpg" href="favicon.png"/>
|
||||
</head>
|
||||
|
||||
<body style="background: #b3a48d;">
|
||||
<nav class="navbar navbar-light navbar-expand bg-light">
|
||||
<div class="container"><img src="../assets/img/crew-of-the-kahuna-horiz.svg" width="400"></div>
|
||||
</nav>
|
||||
<div class="container-sm">
|
||||
<div class="row">
|
||||
<div class="col p-3">
|
||||
<div class="card">
|
||||
<div class="card-header d-lg-flex align-items-lg-center">
|
||||
<h5 class="text-uppercase" style="font-family: Oswald, sans-serif;">GM Tools</h5>
|
||||
</div>
|
||||
<div class="card-body p-0">
|
||||
<div class="list-group list-group-flush"><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/filebrowser"><img src="../assets/img/filebrowser-logo.svg" width="32" height="32"><span class="mx-2">Filebrowser</span></a><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/metube"><img src="../assets/img/metube.png" width="32" height="32"><span class="mx-2">Metube</span></a><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/rolladvantage/tokenstamp"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-file-person-fill" style="width: 32px;height: 32px;">
|
||||
<path d="M12 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zm-1 7a3 3 0 1 1-6 0 3 3 0 0 1 6 0zm-3 4c2.623 0 4.146.826 5 1.755V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-1.245C3.854 11.825 5.377 11 8 11z"></path>
|
||||
</svg><span class="mx-2">Token Stamp</span></a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="../assets/bootstrap/js/bootstrap.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -26,7 +26,11 @@
|
||||
<h5 class="text-uppercase" style="font-family: Oswald, sans-serif;">Links</h5>
|
||||
</div>
|
||||
<div class="card-body p-0">
|
||||
<div class="list-group list-group-flush"><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/foundry"><img src="assets/img/fvtt-solid-512.png" width="32" height="32"><span class="mx-2">Foundry</span></a><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="https://discord.com/channels/793158154871111681/1090411116003336212"><img src="assets/img/discord-512.webp" width="32" height="32"><span class="mx-2">Discord</span></a></div>
|
||||
<div class="list-group list-group-flush"><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/foundry"><img src="assets/img/fvtt-solid-512.png" width="32" height="32"><span class="mx-2">Foundry</span></a><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="https://discord.gg/tbU7G54D"><img src="assets/img/discord-512.webp" width="32" height="32"><span class="mx-2">Discord</span></a><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/gm-tools"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-journal-bookmark" style="width: 32px;height: 32px;">
|
||||
<path fill-rule="evenodd" d="M6 8V1h1v6.117L8.743 6.07a.5.5 0 0 1 .514 0L11 7.117V1h1v7a.5.5 0 0 1-.757.429L9 7.083 6.757 8.43A.5.5 0 0 1 6 8z"></path>
|
||||
<path d="M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2v-1h1v1a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v1H1V2a2 2 0 0 1 2-2z"></path>
|
||||
<path d="M1 5v-.5a.5.5 0 0 1 1 0V5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0V8h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1zm0 3v-.5a.5.5 0 0 1 1 0v.5h.5a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1H1z"></path>
|
||||
</svg><span class="mx-2">GM Tools</span></a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -71,7 +75,7 @@
|
||||
<div class="list-group list-group-flush">
|
||||
<div class="accordion accordion-flush" role="tablist" id="accordion-2">
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" role="tab"><button class="accordion-button collapsed p-2" type="button" data-bs-toggle="collapse" data-bs-target="#accordion-2 .item-1" aria-expanded="false" aria-controls="accordion-2 .item-1"><a class="d-flex align-items-center text-decoration-none" href="/podcast/">
|
||||
<h2 class="accordion-header" role="tab"><button class="accordion-button collapsed p-2" type="button" data-bs-toggle="collapse" data-bs-target="#accordion-2 .item-1" aria-expanded="false" aria-controls="accordion-2 .item-1"><a class="d-flex align-items-center text-decoration-none" href="#">
|
||||
<div class="d-inline-block rounded-3" style="background: url("assets/img/itunes_image.jpg") center / cover;height: 128px;width: 128px;"></div><span class="text-dark mx-3" style="font-family: 'Open Sans', sans-serif;">D&D vs. Rick and Morty</span>
|
||||
</a></button></h2>
|
||||
<div class="accordion-collapse collapse item-1" role="tabpanel" data-bs-parent="#accordion-2">
|
||||
7
apps/metube/metube.nginx.conf
Normal file
@@ -0,0 +1,7 @@
|
||||
location /metube/ {
|
||||
proxy_pass http://metube:8081;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_set_header Host $host;
|
||||
}
|
||||
42
apps/nginx/conf.d/default.conf
Normal file
@@ -0,0 +1,42 @@
|
||||
server {
|
||||
server_name _;
|
||||
# you can serve any number of redirects from here...
|
||||
listen 80;
|
||||
return 301 https://$host$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name rpg.ascorrea.com;
|
||||
ssl_certificate /etc/nginx/ssl/live/rpg.ascorrea.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/nginx/ssl/live/rpg.ascorrea.com/privkey.pem;
|
||||
|
||||
ssl_stapling on;
|
||||
ssl_stapling_verify on;
|
||||
ssl_trusted_certificate /etc/nginx/ssl/live/rpg.ascorrea.com/fullchain.pem;
|
||||
|
||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
|
||||
ssl_ciphers HIGH:!aNULL:!MD5;
|
||||
|
||||
# include applications/vouch.conf;
|
||||
|
||||
root /var/www/html/;
|
||||
|
||||
error_page 401 = @error401;
|
||||
|
||||
location / {
|
||||
# This application is simply proxy-passed without any authentication
|
||||
index index.html index.htm;
|
||||
|
||||
}
|
||||
location /gm-tools {
|
||||
auth_request /vouch/validate;
|
||||
auth_request_set $auth_resp_x_vouch_user $upstream_http_x_vouch_user;
|
||||
# This application is simply proxy-passed without any authentication
|
||||
index index.html index.htm;
|
||||
|
||||
}
|
||||
|
||||
include /etc/nginx/conf.d/apps-enabled/*.conf;
|
||||
|
||||
}
|
||||
|
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 290 KiB After Width: | Height: | Size: 290 KiB |
|
Before Width: | Height: | Size: 654 KiB After Width: | Height: | Size: 654 KiB |
@@ -15,43 +15,43 @@ location ~* /podcast/media/(?:.*)-(?<season_2>s02)?(?<episode_label>ep\d+)(\.mp3
|
||||
# rewrite /podcast/(dir2cast.php) /dir2cast/$1;
|
||||
#}
|
||||
|
||||
location /podcast {
|
||||
return 301 /podcast/;
|
||||
}
|
||||
|
||||
|
||||
location /podcast/ {
|
||||
alias /var/www/dir2cast/;
|
||||
alias /var/www/podcast/;
|
||||
autoindex on;
|
||||
|
||||
if ( $arg_name) {
|
||||
return 301 /podcast/media/$arg_name;
|
||||
}
|
||||
|
||||
location ~* /podcast/(?<dir>.*)/feed {
|
||||
# return 501;
|
||||
rewrite /podcast/ /dir2cast/dir2cast.php?dir=$dir;
|
||||
location ~* (/podcast/)(?<dir>.*)/feed {
|
||||
|
||||
rewrite /podcast/ /dir2cast/dir2cast.php?dir=podcast/$dir;
|
||||
}
|
||||
|
||||
location ~ (\.php|\.ini)$ {
|
||||
location ~ (\.php|\.ini|\.conf)$ {
|
||||
return 403;
|
||||
}
|
||||
}
|
||||
|
||||
location /dir2cast/ {
|
||||
root /var/www;
|
||||
|
||||
|
||||
alias /var/www/dir2cast/;
|
||||
|
||||
location ~ ^/dir2cast/dir2cast.php {
|
||||
# return 501;
|
||||
# return 501;
|
||||
include fastcgi_params;
|
||||
fastcgi_pass php:9000;
|
||||
add_header x-test "$args" always;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_param SCRIPT_FILENAME $request_filename;
|
||||
}
|
||||
|
||||
|
||||
location ~ (\.php|\.ini)$ {
|
||||
return 403;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
1
apps/rolladvantage
Submodule
@@ -1,7 +1,7 @@
|
||||
# https://github.com/vouch/vouch-proxy#vouch-proxy-in-a-path
|
||||
|
||||
location /vouch {
|
||||
proxy_pass http://vouch; # must not! have a slash at the end
|
||||
proxy_pass http://vouch:9090/vouch; # must not! have a slash at the end
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_pass_request_body off;
|
||||
proxy_set_header Content-Length "";
|
||||
140
docker-compose.yml
Normal file
@@ -0,0 +1,140 @@
|
||||
version: "3"
|
||||
name: rpg-ascorrea-com
|
||||
services:
|
||||
webserver:
|
||||
container_name: web
|
||||
build:
|
||||
context: .
|
||||
hostname: webserver
|
||||
volumes:
|
||||
- ./apps/podcast:/var/www/podcast
|
||||
- ./apps/html:/var/www/html
|
||||
- ./apps/rolladvantage/:/var/www/rolladvantage
|
||||
- dir2cast:/var/www/dir2cast
|
||||
- type: bind
|
||||
source: ./apps/certbot/www
|
||||
target: /var/www/certbot
|
||||
read_only: true
|
||||
- type: bind
|
||||
source: ./apps/certbot/conf
|
||||
target: /etc/nginx/ssl
|
||||
read_only: true
|
||||
- ./apps/rolladvantage/rolladvantage.nginx.conf:/etc/nginx/conf.d/apps-enabled/rolladvantage.conf
|
||||
|
||||
- ./apps/podcast/podcast.nginx.conf:/etc/nginx/conf.d/apps-enabled/podcast.conf
|
||||
- ./apps/filebrowser/filebrowser.nginx.conf:/etc/nginx/conf.d/apps-enabled/filebrowser.conf
|
||||
- ./apps/foundry/foundry.nginx.conf:/etc/nginx/conf.d/apps-enabled/foundry.conf
|
||||
- ./apps/nginx/conf.d/swrpg.ascorrea.com.conf:/etc/nginx/conf.d/swrpg.ascorrea.com.conf
|
||||
- ./apps/vouch/vouch.nginx.conf:/etc/nginx/conf.d/apps-enabled/vouch.conf
|
||||
- ./apps/metube/metube.nginx.conf:/etc/nginx/conf.d/apps-enabled/metube.conf
|
||||
- ./apps/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
|
||||
environment:
|
||||
TZ: "America/Chicago"
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
networks:
|
||||
- internal
|
||||
certbot:
|
||||
container_name: certbot
|
||||
image: certbot/certbot:latest
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./apps/certbot/www
|
||||
target: /var/www/certbot
|
||||
- type: bind
|
||||
source: ./apps/certbot/conf
|
||||
target: /etc/letsencrypt
|
||||
php:
|
||||
container_name: php
|
||||
image: php:7.0-fpm
|
||||
hostname: php
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./apps/podcast
|
||||
target: /var/www/podcast
|
||||
- dir2cast:/var/www/dir2cast
|
||||
environment:
|
||||
TZ: "America/Chicago"
|
||||
UID: 33
|
||||
GID: 33
|
||||
networks:
|
||||
- internal
|
||||
filebrowser:
|
||||
container_name: filebrowser
|
||||
build:
|
||||
context: ./apps/filebrowser
|
||||
hostname: filebrowser
|
||||
volumes:
|
||||
- filebrowser:/srv/filebrowser
|
||||
- foundry:/srv/foundry
|
||||
- metube:/srv/metube
|
||||
# - ./apps/filebrowser/database.db:/database.db
|
||||
- ./apps/filebrowser/filebrowser.json:/.filebrowser.json
|
||||
- ./apps/filebrowser/docker-entrypoint.sh:/docker-entrypoint.sh
|
||||
- ./apps/podcast:/srv/podcast
|
||||
environment:
|
||||
TZ: "America/Chicago"
|
||||
UID: 33
|
||||
GID: 33
|
||||
AUTH_METHOD: proxy
|
||||
AUTH_HEADER: X-Vouch-User
|
||||
networks:
|
||||
- internal
|
||||
foundry:
|
||||
container_name: foundry
|
||||
build:
|
||||
context: ./apps/foundry
|
||||
hostname: foundry
|
||||
init: true
|
||||
volumes:
|
||||
- foundry:/data
|
||||
- metube:/srv/metube
|
||||
- ./apps/foundry/container_cache:/data/container_cache
|
||||
environment:
|
||||
TZ: "America/Chicago"
|
||||
FOUNDRY_UID: 33
|
||||
FOUNDRY_GID: 33
|
||||
FOUNDRY_ROUTE_PREFIX: "foundry"
|
||||
secrets:
|
||||
- source: config_json_foundry
|
||||
target: config.json
|
||||
networks:
|
||||
- internal
|
||||
vouch:
|
||||
container_name: vouch
|
||||
image: quay.io/vouch/vouch-proxy
|
||||
environment:
|
||||
TZ: "America/Chicago"
|
||||
UID: 33
|
||||
GID: 33
|
||||
volumes:
|
||||
- ./apps/vouch/config.yml:/config/config.yml
|
||||
networks:
|
||||
- internal
|
||||
metube:
|
||||
container_name: metube
|
||||
hostname: metube
|
||||
image: ghcr.io/alexta69/metube
|
||||
# restart: unless-stopped
|
||||
environment:
|
||||
URL_PREFIX: "/metube"
|
||||
volumes:
|
||||
- metube:/downloads
|
||||
networks:
|
||||
- internal
|
||||
networks:
|
||||
internal:
|
||||
driver: bridge
|
||||
|
||||
|
||||
secrets:
|
||||
config_json_foundry:
|
||||
file: apps/foundry/foundry_secrets.json
|
||||
|
||||
volumes:
|
||||
filebrowser:
|
||||
foundry:
|
||||
podcast:
|
||||
metube:
|
||||
dir2cast:
|
||||
@@ -1 +0,0 @@
|
||||
/Users/asc/documents-local/rpg/Podcast/publish/00dnd
|
||||
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"port": 80,
|
||||
"baseURL": "/filebrowser",
|
||||
"address": "",
|
||||
"log": "stdout",
|
||||
"database": "/database.db",
|
||||
"root": "/srv",
|
||||
"auth":{
|
||||
"method":"proxy",
|
||||
"header":"X-Vouch-User"
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
../../../../foundry/Data/
|
||||
@@ -1 +0,0 @@
|
||||
../../../../foundry/Data/worlds/bridgets-in-the-dark
|
||||
@@ -1 +0,0 @@
|
||||
8c78feb47ec9762b024341a0b439d8ddb6cc6cf1ff91c20d18fce9436d96c46fcdb815c7949028cb49d7d4a5e1ef36ee4e8a90a69429f9c590487bbe8365760c
|
||||
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"host": "foundry",
|
||||
"license": "STVDFOY4IH23OK9DQGXNZ9QJ",
|
||||
"version": "0.8.0",
|
||||
"time": "2023-03-19T20:05:29.567Z",
|
||||
"signature": "RxA8BNe7ayMF36Di2HUM7uqXfmRrx8WhRv/wm+lGfjlQJT4ZmJ5aiEEZHxr1x79LUlB1zEUEUejgE1yxxHQcDrR57gGnBAUiZlEUcBrTbJV8WPmObz2Zd7/HFa3V+tcAR4O3bf8GFP62e8YcYPXKCULz8o003lIqjP26k2a2iW5Oa74AuCV6gsVlHZre3Wa6PLtLVOXr35/9FqFBXTTT8MwqLIubsVaZnewL3+u2VFpqLOC55DrFkuvalcHK0r8byaq+BI1wZiOmR/20LET6vTpK+EoVgvnmWcgQ1kH1r4MriABoWHyq0FyrtMBIXDb06zXKyKAbN9SVhjptWigxcmW4yVmIG4gGDEljv4SCCUXQ0H7h0ZtbAR66hSflwd8XTvEmMx7bkF6/wHQoOFNNXLlLlpCylH1ly2/8hQGBQhmhi0uSOnjR4VCpE8uk7tcjCT4SZWdPh4zvN5UrI24Kol0SYTU5u0/vEU8d0ZjLceGNhP412fAtgA/U4nZ8VfNnlVZKPpTnL9ErYNVwYoiKn5a0fbuQZu3ht3TRlYwwS6QGjhno2JUerlir0D26DuyZemP0upXvk98ZEs9nT4dRP3rV9MuAyRpXO09yPUf5yJdZH/Ay9Ms5wZWvEdy0/TInLGezGnROshq+R3/DBEw/TlzmqTsK5SU2oyd6Kk9ZZ8E="
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
.customCssSettings {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
}
|
||||
.customCssSettings h2 {
|
||||
margin: .2em 0 0 0;
|
||||
font-size: 1.25em;
|
||||
}
|
||||
.customCssSettings .notes {
|
||||
flex-basis: unset;
|
||||
padding: 0;
|
||||
}
|
||||
.customCssSettings .stylesheet-editor {
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
flex-shrink: 0;
|
||||
flex-basis: 250px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.customCssSettings .stylesheet-editor .CodeMirror {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
.customCssSettings textarea {
|
||||
font-family: 'Courier New', Courier, monospace;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
.customCssSettings button {
|
||||
margin-top: .5em;
|
||||
}
|
||||