reorganized

i believe everything works
This commit is contained in:
2023-04-10 14:13:01 -05:00
parent 29c6567506
commit 65d36fe9d4
281 changed files with 340 additions and 88086 deletions

0
apps/certbot/.gitkeep Normal file
View File

View File

View File

1
apps/dir2cast Submodule

Submodule apps/dir2cast added at 178c977b3f

View File

View 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"]

View 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"

View File

@@ -0,0 +1,8 @@
{
"port": 80,
"baseURL": "/filebrowser",
"address": "",
"log": "stdout",
"database": "/srv/filebrowser/database.db",
"root": "/srv/filebrowser/files"
}

View 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/;
}

0
apps/foundry/.gitkeep Normal file
View File

1
apps/foundry/Dockerfile Normal file
View File

@@ -0,0 +1 @@
FROM felddy/foundryvtt:release

View File

View 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/;
}

View File

@@ -0,0 +1,3 @@
{
"foundry_admin_key": ""
}

21
apps/foundry/options.json Normal file
View File

@@ -0,0 +1,21 @@
{
"awsConfig": null,
"compressStatic": false,
"dataPath": "/srv/foundry",
"fullscreen": false,
"hostname": null,
"language": "en.core",
"localHostname": null,
"passwordSalt": null,
"port": 30000,
"protocol": null,
"proxyPort": 9090,
"proxySSL": true,
"routePrefix": "foundry",
"sslCert": null,
"sslKey": null,
"updateChannel": "release",
"upnp": false,
"upnpLeaseDuration": null,
"world": null
}

40
apps/html/01sw.html Normal file
View 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&amp;display=swap">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Oswald:200,300,400,500,600,700&amp;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"><img class="card-img-top w-100 d-block fit-cover" style="height: 200px;" src="assets/img/itunes_image-1.jpg">
<div class="card-body p-4">
<div class="list-group"><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/podcast/01sw/feed"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-rss" style="width: 32px;height: 32px;">
<path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"></path>
<path d="M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-3-8.5a1 1 0 0 1 1-1c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1-1-1zm0 4a1 1 0 0 1 1-1 6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1-1-1z"></path>
</svg><span class="mx-2">Podcast Feed</span></a><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/podcast/01sw"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-list-ul" style="width: 32px;height: 32px;">
<path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm-3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"></path>
</svg><span class="mx-2">Podcast Episode List</span></a></div>
</div>
</div>
</div>
</div>
</div>
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
</body>
</html>

19
apps/html/50x.html Normal file
View File

@@ -0,0 +1,19 @@
<!DOCTYPE html>
<html>
<head>
<title>Error</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>An error occurred.</h1>
<p>Sorry, the page you are looking for is currently unavailable.<br/>
Please try again later.</p>
<p>If you are the system administrator of this resource then you should check
the error log for details.</p>
<p><em>Faithfully yours, nginx.</em></p>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,4 @@
.fit-cover {
object-fit: cover;
}

View File

@@ -0,0 +1,57 @@
.bs-icon {
--bs-icon-size: .75rem;
display: flex;
flex-shrink: 0;
justify-content: center;
align-items: center;
font-size: var(--bs-icon-size);
width: calc(var(--bs-icon-size) * 2);
height: calc(var(--bs-icon-size) * 2);
color: var(--bs-primary);
}
.bs-icon-xs {
--bs-icon-size: 1rem;
width: calc(var(--bs-icon-size) * 1.5);
height: calc(var(--bs-icon-size) * 1.5);
}
.bs-icon-sm {
--bs-icon-size: 1rem;
}
.bs-icon-md {
--bs-icon-size: 1.5rem;
}
.bs-icon-lg {
--bs-icon-size: 2rem;
}
.bs-icon-xl {
--bs-icon-size: 2.5rem;
}
.bs-icon.bs-icon-primary {
color: var(--bs-white);
background: var(--bs-primary);
}
.bs-icon.bs-icon-primary-light {
color: var(--bs-primary);
background: rgba(var(--bs-primary-rgb), .2);
}
.bs-icon.bs-icon-semi-white {
color: var(--bs-primary);
background: rgba(255, 255, 255, .5);
}
.bs-icon.bs-icon-rounded {
border-radius: .5rem;
}
.bs-icon.bs-icon-circle {
border-radius: 50%;
}

View File

@@ -0,0 +1,77 @@
.navigation-clean {
background: #fff;
padding-top: .75rem;
padding-bottom: .75rem;
color: #333;
border-radius: 0;
box-shadow: none;
border: none;
margin-bottom: 0;
}
@media (min-width:768px) {
.navigation-clean {
padding-top: 1rem;
padding-bottom: 1rem;
}
}
.navigation-clean .navbar-brand {
font-weight: bold;
color: inherit;
}
.navigation-clean .navbar-brand:hover {
color: #222;
}
.navigation-clean .navbar-toggler {
border-color: #ddd;
}
.navigation-clean .navbar-toggler:hover, .navigation-clean .navbar-toggler:focus {
background: none;
}
.navigation-clean .navbar-toggler {
color: #888;
}
.navigation-clean.navbar-light .navbar-nav .nav-link.active, .navigation-clean.navbar-light .navbar-nav .nav-link.active:focus, .navigation-clean.navbar-light .navbar-nav .nav-link.active:hover {
color: #8f8f8f;
box-shadow: none;
background: none;
pointer-events: none;
}
.navigation-clean.navbar .navbar-nav .nav-link {
padding-left: 18px;
padding-right: 18px;
}
.navigation-clean.navbar-light .navbar-nav .nav-link {
color: #465765;
}
.navigation-clean.navbar-light .navbar-nav .nav-link:focus, .navigation-clean.navbar-light .navbar-nav .nav-link:hover {
color: #37434d !important;
background-color: transparent;
}
.navigation-clean .navbar-nav > li > .dropdown-menu {
margin-top: -5px;
box-shadow: none;
background-color: #fff;
border-radius: 2px;
}
.navigation-clean .dropdown-menu .dropdown-item:focus, .navigation-clean .dropdown-menu .dropdown-item {
line-height: 2;
color: #37434d;
}
.navigation-clean .dropdown-menu .dropdown-item:focus, .navigation-clean .dropdown-menu .dropdown-item:hover {
background: #eee;
color: inherit;
}

View File

View File

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 1894 155" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1.5217,0,0,1.5217,-381.372,-182.583)">
<g transform="matrix(1.40878,0,0,1.3437,427.462,-195.111)">
<g transform="matrix(111.684,0,0,111.684,248.277,310)">
<path d="M0.729,-0L0.554,-0C0.498,-0 0.443,-0.028 0.388,-0.083L0.271,-0.2L0.271,-0L0.021,-0L0.021,-0.667L0.271,-0.667L0.271,-0.448L0.424,-0.667L0.729,-0.667L0.486,-0.318L0.586,-0.218C0.592,-0.212 0.606,-0.208 0.626,-0.208L0.729,-0.208L0.729,-0Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
</g>
<g transform="matrix(111.684,0,0,111.684,332.039,310)">
<path d="M0.771,-0L0.513,-0L0.491,-0.083L0.301,-0.083L0.279,-0L0.021,-0L0.196,-0.667L0.596,-0.667L0.771,-0ZM0.447,-0.25L0.396,-0.444L0.345,-0.25L0.447,-0.25Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
</g>
<g transform="matrix(111.684,0,0,111.684,420.437,310)">
<path d="M0.729,-0L0.479,-0L0.479,-0.246L0.271,-0.246L0.271,-0L0.021,-0L0.021,-0.667L0.271,-0.667L0.271,-0.421L0.479,-0.421L0.479,-0.667L0.729,-0.667L0.729,-0Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
</g>
<g transform="matrix(111.684,0,0,111.684,504.2,310)">
<path d="M0.729,-0.333C0.729,-0.24 0.693,-0.161 0.621,-0.095C0.551,-0.032 0.469,-0 0.375,-0C0.281,-0 0.199,-0.032 0.129,-0.095C0.057,-0.161 0.021,-0.24 0.021,-0.333L0.021,-0.667L0.246,-0.667L0.246,-0.333C0.246,-0.3 0.258,-0.27 0.284,-0.246C0.31,-0.221 0.34,-0.208 0.375,-0.208C0.409,-0.208 0.439,-0.221 0.465,-0.246C0.491,-0.27 0.504,-0.3 0.504,-0.333L0.504,-0.667L0.729,-0.667L0.729,-0.333Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
</g>
<g transform="matrix(111.684,0,0,111.684,587.963,310)">
<path d="M0.729,-0L0.479,-0L0.271,-0.267L0.271,-0L0.021,-0L0.021,-0.667L0.271,-0.667L0.479,-0.4L0.479,-0.667L0.729,-0.667L0.729,-0Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
</g>
<g transform="matrix(111.684,0,0,111.684,671.726,310)">
<path d="M0.771,-0L0.513,-0L0.491,-0.083L0.301,-0.083L0.279,-0L0.021,-0L0.196,-0.667L0.596,-0.667L0.771,-0ZM0.447,-0.25L0.396,-0.444L0.345,-0.25L0.447,-0.25Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
</g>
</g>
<g transform="matrix(0.99857,0,0,1.54876,0.767782,-65.8514)">
<rect x="704.901" y="120" width="69.099" height="10" style="fill:rgb(96,40,21);"/>
</g>
<g transform="matrix(0.570335,0,0,0.438706,299.054,121.033)">
<g transform="matrix(55.8419,0,0,55.8419,710,180)">
<path d="M0.729,-0.458L0.5,-0.458L0.5,-0L0.25,-0L0.25,-0.458L0.021,-0.458L0.021,-0.667L0.729,-0.667L0.729,-0.458Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
</g>
<g transform="matrix(55.8419,0,0,55.8419,751.881,180)">
<path d="M0.729,-0L0.479,-0L0.479,-0.246L0.271,-0.246L0.271,-0L0.021,-0L0.021,-0.667L0.271,-0.667L0.271,-0.421L0.479,-0.421L0.479,-0.667L0.729,-0.667L0.729,-0Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
</g>
<g transform="matrix(55.8419,0,0,55.8419,793.763,180)">
<path d="M0.688,-0L0.021,-0L0.021,-0.667L0.688,-0.667L0.688,-0.458L0.271,-0.458L0.271,-0.421L0.521,-0.421L0.521,-0.246L0.271,-0.246L0.271,-0.208L0.688,-0.208L0.688,-0Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
</g>
</g>
<g transform="matrix(0.872311,0,0,0.862479,84.2969,19.2979)">
<g transform="matrix(55.8419,0,0,55.8419,710,180)">
<path d="M0.729,-0.333C0.729,-0.24 0.693,-0.161 0.621,-0.095C0.551,-0.032 0.469,-0 0.375,-0C0.281,-0 0.199,-0.032 0.129,-0.095C0.057,-0.161 0.021,-0.24 0.021,-0.333C0.021,-0.426 0.057,-0.506 0.129,-0.572C0.199,-0.635 0.281,-0.667 0.375,-0.667C0.469,-0.667 0.551,-0.635 0.621,-0.572C0.693,-0.506 0.729,-0.426 0.729,-0.333ZM0.504,-0.333C0.504,-0.367 0.491,-0.396 0.465,-0.421C0.439,-0.446 0.409,-0.458 0.375,-0.458C0.34,-0.458 0.31,-0.446 0.284,-0.421C0.258,-0.397 0.246,-0.367 0.246,-0.333C0.246,-0.3 0.258,-0.27 0.284,-0.246C0.31,-0.221 0.34,-0.208 0.375,-0.208C0.41,-0.208 0.44,-0.221 0.465,-0.246C0.491,-0.271 0.504,-0.3 0.504,-0.333Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
</g>
<g transform="matrix(55.8419,0,0,55.8419,751.881,180)">
<path d="M0.688,-0.458L0.271,-0.458L0.271,-0.421L0.521,-0.421L0.521,-0.246L0.271,-0.246L0.271,-0L0.021,-0L0.021,-0.667L0.688,-0.667L0.688,-0.458Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
</g>
</g>
<g transform="matrix(0.99857,0,0,1.54876,0.767782,18.661)">
<rect x="704.901" y="120" width="69.099" height="10" style="fill:rgb(96,40,21);"/>
</g>
<g transform="matrix(1.00601,0,0,1.07473,-3.82916,-16.4396)">
<g transform="matrix(139.605,0,0,139.605,250,220)">
<path d="M0.646,-0L0.375,-0C0.281,-0 0.199,-0.032 0.129,-0.095C0.057,-0.161 0.021,-0.24 0.021,-0.333C0.021,-0.426 0.057,-0.506 0.129,-0.572C0.199,-0.635 0.281,-0.667 0.375,-0.667L0.646,-0.667L0.646,-0.458L0.375,-0.458C0.341,-0.458 0.311,-0.446 0.285,-0.421C0.259,-0.396 0.246,-0.367 0.246,-0.333C0.246,-0.3 0.258,-0.27 0.284,-0.246C0.31,-0.221 0.34,-0.208 0.375,-0.208L0.646,-0.208L0.646,-0Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
</g>
<g transform="matrix(139.605,0,0,139.605,343.047,220)">
<path d="M0.771,-0L0.554,-0C0.498,-0 0.443,-0.028 0.388,-0.083L0.271,-0.2L0.271,-0L0.021,-0L0.021,-0.667L0.496,-0.667C0.557,-0.667 0.611,-0.644 0.659,-0.6C0.706,-0.555 0.729,-0.502 0.729,-0.442C0.729,-0.397 0.716,-0.355 0.689,-0.316C0.662,-0.278 0.628,-0.251 0.586,-0.235C0.596,-0.217 0.611,-0.208 0.629,-0.208L0.771,-0.208L0.771,-0ZM0.479,-0.433C0.479,-0.446 0.474,-0.458 0.464,-0.468C0.454,-0.478 0.443,-0.483 0.429,-0.483L0.271,-0.483L0.271,-0.383L0.429,-0.383C0.443,-0.383 0.454,-0.388 0.464,-0.398C0.474,-0.409 0.479,-0.42 0.479,-0.433Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
</g>
<g transform="matrix(139.605,0,0,139.605,453.545,220)">
<path d="M0.688,-0L0.021,-0L0.021,-0.667L0.688,-0.667L0.688,-0.458L0.271,-0.458L0.271,-0.421L0.521,-0.421L0.521,-0.246L0.271,-0.246L0.271,-0.208L0.688,-0.208L0.688,-0Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
</g>
<g transform="matrix(139.605,0,0,139.605,552.454,220)">
<path d="M1.054,-0.667L0.879,-0L0.596,-0L0.538,-0.223L0.479,-0L0.196,-0L0.021,-0.667L0.279,-0.667L0.337,-0.444L0.396,-0.667L0.679,-0.667L0.737,-0.444L0.796,-0.667L1.054,-0.667Z" style="fill:rgb(96,40,21);fill-rule:nonzero;"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

116
apps/html/index.html Normal file
View File

@@ -0,0 +1,116 @@
<!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&amp;display=swap">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Oswald:200,300,400,500,600,700&amp;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;">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>
</div>
</div>
</div>
<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;">Current Campaign</h5>
</div>
<div class="card-body p-0">
<div class="list-group list-group-flush">
<div class="accordion accordion-flush" role="tablist" id="accordion-1">
<div class="accordion-item">
<h2 class="accordion-header" role="tab"><button class="accordion-button p-2" type="button" data-bs-toggle="collapse" data-bs-target="#accordion-1 .item-1" aria-expanded="true" aria-controls="accordion-1 .item-1"><a class="d-flex align-items-center text-decoration-none" href="#">
<div class="d-inline-block rounded-3" style="background: url(&quot;assets/img/itunes_image-2.jpg&quot;) center / cover;height: 128px;width: 128px;"></div><span class="text-dark mx-3" style="font-family: 'Open Sans', sans-serif;">Blades in the Dark</span>
</a></button></h2>
<div class="accordion-collapse collapse show item-1" role="tabpanel" data-bs-parent="#accordion-1">
<div class="accordion-body">
<div class="list-group"><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/podcast/03bitd/feed"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-rss" style="width: 32px;height: 32px;">
<path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"></path>
<path d="M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-3-8.5a1 1 0 0 1 1-1c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1-1-1zm0 4a1 1 0 0 1 1-1 6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1-1-1z"></path>
</svg><span class="mx-2">Podcast Feed</span></a><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/podcast/03bitd"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-list-ul" style="width: 32px;height: 32px;">
<path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm-3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"></path>
</svg><span class="mx-2">Podcast Episode List</span></a></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<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;">Previous Campaigns</h5>
</div>
<div class="card-body p-0">
<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/">
<div class="d-inline-block rounded-3" style="background: url(&quot;assets/img/itunes_image.jpg&quot;) center / cover;height: 128px;width: 128px;"></div><span class="text-dark mx-3" style="font-family: 'Open Sans', sans-serif;">D&amp;D vs. Rick and Morty</span>
</a></button></h2>
<div class="accordion-collapse collapse item-1" role="tabpanel" data-bs-parent="#accordion-2">
<div class="accordion-body">
<div class="list-group"><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/podcast/02ram/feed"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-rss" style="width: 32px;height: 32px;">
<path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"></path>
<path d="M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-3-8.5a1 1 0 0 1 1-1c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1-1-1zm0 4a1 1 0 0 1 1-1 6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1-1-1z"></path>
</svg><span class="mx-2">Podcast Feed</span></a><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/podcast/02ram"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-list-ul" style="width: 32px;height: 32px;">
<path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm-3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"></path>
</svg><span class="mx-2">Podcast Episode List</span></a></div>
</div>
</div>
</div>
<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-2" aria-expanded="false" aria-controls="accordion-2 .item-2"><a class="d-flex align-items-center text-decoration-none" href="#">
<div class="d-inline-block rounded-3" style="background: url(&quot;assets/img/itunes_image-1.jpg&quot;) center / cover;height: 128px;width: 128px;"></div><span class="text-dark mx-3" style="font-family: 'Open Sans', sans-serif;">Crew of the Kahuna</span>
</a></button></h2>
<div class="accordion-collapse collapse item-2" role="tabpanel" data-bs-parent="#accordion-2">
<div class="accordion-body">
<div class="list-group"><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="https://kanka.io/en/campaign/79412"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-journal" style="width: 32px;height: 32px;">
<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">Kanka</span></a><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/podcast/01sw/feed"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-rss" style="width: 32px;height: 32px;">
<path d="M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z"></path>
<path d="M5.5 12a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-3-8.5a1 1 0 0 1 1-1c5.523 0 10 4.477 10 10a1 1 0 1 1-2 0 8 8 0 0 0-8-8 1 1 0 0 1-1-1zm0 4a1 1 0 0 1 1-1 6 6 0 0 1 6 6 1 1 0 1 1-2 0 4 4 0 0 0-4-4 1 1 0 0 1-1-1z"></path>
</svg><span class="mx-2">Podcast Feed</span></a><a class="d-lg-flex align-items-lg-center list-group-item list-group-item-action" href="/podcast/01sw"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-list-ul" style="width: 32px;height: 32px;">
<path fill-rule="evenodd" d="M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm-3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"></path>
</svg><span class="mx-2">Podcast Episode List</span></a></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
</body>
</html>

View 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;
}

View File

@@ -0,0 +1,35 @@
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;
}
include /etc/nginx/conf.d/apps-enabled/*.conf;
}

View File

@@ -0,0 +1,15 @@
server {
server_name swrpg.ascorrea.com; # you can serve any number of redirects from here...
listen 80;
return 301 https://rpg.ascorrea.com$request_uri;
}
server {
server_name swrpg.ascorrea.com; # you can serve any number of redirects from here...
listen 443;
ssl_certificate /etc/nginx/ssl/live/swrpg.ascorrea.com/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/live/swrpg.ascorrea.com/privkey.pem;
return 301 https://rpg.ascorrea.com$request_uri;
}

32
apps/nginx/nginx.conf Normal file
View File

@@ -0,0 +1,32 @@
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
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;
include /etc/nginx/conf.d/*.conf;
}

View File

@@ -0,0 +1 @@
Mack Skyblade, Sarn Turbo, RX-78 and Ghost participate in grim and gritty adventures in places where morality is gray and nothing is certain

View File

@@ -0,0 +1,8 @@
; Configuration for dir2cast by Ben XO. http://www.ben-xo.com/dir2cast
; https://github.com/ben-xo/dir2cast/blob/main/dir2cast.ini
; *** INFORMATION ABOUT YOUR PODCAST - you SHOULD set this how you like it ***
; The title of the feed.
; This defaults to the name of the directory you're casting
TITLE = "Kwave: Edge of the Empire"

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

View File

@@ -0,0 +1 @@
A FFG Star Wars RPG Story

View File

@@ -0,0 +1,8 @@
; Configuration for dir2cast by Ben XO. http://www.ben-xo.com/dir2cast
; https://github.com/ben-xo/dir2cast/blob/main/dir2cast.ini
; *** INFORMATION ABOUT YOUR PODCAST - you SHOULD set this how you like it ***
; The title of the feed.
; This defaults to the name of the directory you're casting
TITLE = "Kwave: D&D vs. Rick and Morty"

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 KiB

View File

@@ -0,0 +1,8 @@
; Configuration for dir2cast by Ben XO. http://www.ben-xo.com/dir2cast
; https://github.com/ben-xo/dir2cast/blob/main/dir2cast.ini
; *** INFORMATION ABOUT YOUR PODCAST - you SHOULD set this how you like it ***
; The title of the feed.
; This defaults to the name of the directory you're casting
TITLE = "Kwave: Blades in the Dark"

Binary file not shown.

After

Width:  |  Height:  |  Size: 654 KiB

54
apps/podcast/dir2cast.ini Normal file
View File

@@ -0,0 +1,54 @@
; Configuration for dir2cast by Ben XO. http://www.ben-xo.com/dir2cast
; https://github.com/ben-xo/dir2cast/blob/main/dir2cast.ini
; *** INFORMATION ABOUT YOUR PODCAST - you SHOULD set this how you like it ***
; The copyright notice of the feed
; This defaults to this year (e.g. '2008')
; The string %YEAR% will be replaced with the current year.
COPYRIGHT = "Anthony Correa (%YEAR%)"
; Webmaster of the feed. This must be an email address,
WEBMASTER = "a@correa.co (Anthony Correa)"
; Name of the Owner of the podcast for iTunes
; This defaults to empty
ITUNES_OWNER_NAME = "Anthony Correa"
; Email of the Author of the podcast for iTunes
; This defaults to empty
;ITUNES_OWNER_EMAIL = "me-dir2cast@ben-xo.com"
; URL of the feed's home page (this is NOT where the MP3s are! It is
; just the link to your "about" page).
; This defaults to the URL of the script or http://www.example.com/
LINK = "http://rpg.ascorrea.com/podcast"
; The Author of the podcast for iTunes
; This defaults to whatever WEBMASTER is set to
ITUNES_AUTHOR = "Anthony Correa"
ITUNES_OWNER_EMAIL = "a@correa.co"
; Categories for iTunes
;
; You may add as many as you like from the category list at
; https://help.apple.com/itc/podcasts_connect/#/itc9267a2f12
;
; Here is an example which means "Both the 'Music' category and
; the 'Gadgets' subcategory of 'Technology'
;
; Please note that the entire setting must have double quotes ("")
; like in the example, otherwise categories with '&' in the name won't work
ITUNES_CATEGORIES = "Fiction, Comedy, Leisure, Games"
; Whether or not the feed contains explicit content.
ITUNES_EXPLICIT = "yes"
; *** CHECK THESE ARE OK. ***
; Language of the feed
LANGUAGE = "en-us"
; Number of items to show in the feed
; This defaults to 10
ITEM_COUNT = 500

View File

@@ -0,0 +1,57 @@
location ~ ^/podcast/feed.xml$ {
return 301 /podcast/01sw;
}
#/podcast/media/2022-03-09-ep42.mp3
location ~* /podcast/media/(?:.*)-(?<season_2>s02)?(?<episode_label>ep\d+)(\.mp3) {
if ($season_2 = "s02") {
return 301 /dir2cast/02ram/$season_2$episode_label.mp3;
}
return 301 /dir2cast/01sw/$episode_label.mp3;
}
#location /podcast/dir2cast.php {
# rewrite /podcast/(dir2cast.php) /dir2cast/$1;
#}
location /podcast {
return 301 /podcast/;
}
location /podcast/ {
alias /var/www/podcast/;
autoindex on;
if ( $arg_name) {
return 301 /podcast/media/$arg_name;
}
location ~* (/podcast/)(?<dir>.*)/feed {
rewrite /podcast/ /dir2cast/dir2cast.php?dir=podcast/$dir;
}
location ~ (\.php|\.ini|\.conf)$ {
return 403;
}
}
location /dir2cast/ {
alias /var/www/dir2cast/;
location ~ ^/dir2cast/dir2cast.php {
# return 501;
include fastcgi_params;
fastcgi_pass php:9000;
add_header x-test "$args" always;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
location ~ (\.php|\.ini)$ {
return 403;
}
}

1
apps/rolladvantage Submodule

Submodule apps/rolladvantage added at eb720963a3

View File

@@ -0,0 +1,57 @@
# https://github.com/vouch/vouch-proxy/blob/master/config/config.yml_example
vouch:
# logLevel: debug # VOUCH_LOGLEVEL
logLevel: debug
# testing: false - VOUCH_TESTING
# force all 302 redirects to be rendered as a webpage with a link
# if you're having problems, turn on testing
# testing: true
listen: 0.0.0.0 # VOUCH_LISTEN
port: 9090 # VOUCH_PORT
# document_root - VOUCH_DOCUMENT_ROOT
# see README for `Vouch Proxy "in a path"` - https://github.com/vouch/vouch-proxy#vouch-proxy-in-a-path
document_root: /vouch
# domains - VOUCH_DOMAINS
# each of these domains must serve the url https://vouch.$domains[0] https://vouch.$domains[1] ...
# so that the cookie which stores the JWT can be set in the relevant domain
# you usually *don't* want to list every individual website that will be protected
# if you have siteA.internal.yourdomain.com and siteB.internal.yourdomain.com
# then your domains should be set as yourdomain.com or perhaps internal.yourdomain.com
# usually you'll just have one.
# Comment `domains:` out if you set allowAllUser:true
domains:
- rpg.ascorrea.com
- localhost
# whiteList (optional) allows only the listed usernames - VOUCH_WHITELIST
# usernames are usually email addresses (google, most oidc providers) or login/username for github and github enterprise
whiteList:
- anthonyscorrea@gmail.com
- anthony@correa.co
- bridgetcrase@gmail.com
- brandonmboo@gmail.com
- acorre20@gmail.com
oauth:
# Google
provider: google
# create new credentials at:
# https://console.developers.google.com/apis/credentials
client_id: ...
client_secret: ...
callback_urls:
- https://rpg.ascorrea.com/vouch/auth
- https://localhost/vouch/auth
# preferredDomain: yourdomain.com
# optionally set scopes, defaults to 'email'
# https://developers.google.com/identity/protocols/googlescopes#google_sign-in
# scopes:
# - email

View File

@@ -0,0 +1,22 @@
# https://github.com/vouch/vouch-proxy#vouch-proxy-in-a-path
location /vouch {
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 "";
# optionally add X-Vouch-User as returned by Vouch Proxy along with the request
auth_request_set $auth_resp_x_vouch_user $upstream_http_x_vouch_user;
# these return values are used by the @error401 call
auth_request_set $auth_resp_jwt $upstream_http_x_vouch_jwt;
auth_request_set $auth_resp_err $upstream_http_x_vouch_err;
auth_request_set $auth_resp_failcount $upstream_http_x_vouch_failcount;
}
location @error401 {
# redirect to Vouch Proxy for login
return 302 https://$host/vouch/login?url=$scheme://$http_host$request_uri&vouch-failcount=$auth_resp_failcount&X-Vouch-Token=$auth_resp_jwt&error=$auth_resp_err;
}