Merge branch 'refactor'
27
.gitignore
vendored
@@ -1,19 +1,18 @@
|
|||||||
*.mp3
|
*.mp3
|
||||||
root/secrets
|
apps/certbot/conf/*
|
||||||
root/foundry_secrets.json
|
!apps/certbot/conf/.gitkeep
|
||||||
home/certbot/conf/*
|
apps/dir2cast/getID3
|
||||||
!home/certbot/conf/.gitkeep
|
apps/dir2cast/temp
|
||||||
home/dir2cast/getID3
|
apps/foundry/Data/modules/*
|
||||||
home/dir2cast/temp
|
!apps/foundry/Data/modules/asc
|
||||||
home/foundry/Data/modules/*
|
apps/foundry/Data/systems/*
|
||||||
!home/foundry/Data/modules/asc
|
apps/foundry/Data/worlds/*
|
||||||
home/foundry/Data/systems/*
|
apps/foundry/foundry_secrets.json
|
||||||
home/foundry/Data/worlds/*
|
apps/foundry/container_cache
|
||||||
home/foundry/container_cache
|
apps/yacht/data.sqlite
|
||||||
home/yacht/data.sqlite
|
apps/filebrowser/database.db
|
||||||
home/filebrowser/database.db
|
|
||||||
**/.idea/**
|
**/.idea/**
|
||||||
home/vouch/config.yml
|
apps/vouch/config.yml
|
||||||
design/
|
design/
|
||||||
|
|
||||||
# General
|
# 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,
|
"awsConfig": null,
|
||||||
"compressStatic": false,
|
"compressStatic": false,
|
||||||
"dataPath": "/data",
|
"dataPath": "/srv/foundry",
|
||||||
"fullscreen": false,
|
"fullscreen": false,
|
||||||
"hostname": null,
|
"hostname": null,
|
||||||
"language": "en.core",
|
"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>
|
<h5 class="text-uppercase" style="font-family: Oswald, sans-serif;">Links</h5>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body p-0">
|
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -71,7 +75,7 @@
|
|||||||
<div class="list-group list-group-flush">
|
<div class="list-group list-group-flush">
|
||||||
<div class="accordion accordion-flush" role="tablist" id="accordion-2">
|
<div class="accordion accordion-flush" role="tablist" id="accordion-2">
|
||||||
<div class="accordion-item">
|
<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>
|
<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>
|
</a></button></h2>
|
||||||
<div class="accordion-collapse collapse item-1" role="tabpanel" data-bs-parent="#accordion-2">
|
<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;
|
# rewrite /podcast/(dir2cast.php) /dir2cast/$1;
|
||||||
#}
|
#}
|
||||||
|
|
||||||
|
location /podcast {
|
||||||
|
return 301 /podcast/;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
location /podcast/ {
|
location /podcast/ {
|
||||||
alias /var/www/dir2cast/;
|
alias /var/www/podcast/;
|
||||||
autoindex on;
|
autoindex on;
|
||||||
|
|
||||||
if ( $arg_name) {
|
if ( $arg_name) {
|
||||||
return 301 /podcast/media/$arg_name;
|
return 301 /podcast/media/$arg_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
location ~* /podcast/(?<dir>.*)/feed {
|
location ~* (/podcast/)(?<dir>.*)/feed {
|
||||||
# return 501;
|
|
||||||
rewrite /podcast/ /dir2cast/dir2cast.php?dir=$dir;
|
rewrite /podcast/ /dir2cast/dir2cast.php?dir=podcast/$dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
location ~ (\.php|\.ini)$ {
|
location ~ (\.php|\.ini|\.conf)$ {
|
||||||
return 403;
|
return 403;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
location /dir2cast/ {
|
location /dir2cast/ {
|
||||||
root /var/www;
|
alias /var/www/dir2cast/;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
location ~ ^/dir2cast/dir2cast.php {
|
location ~ ^/dir2cast/dir2cast.php {
|
||||||
# return 501;
|
# return 501;
|
||||||
include fastcgi_params;
|
include fastcgi_params;
|
||||||
fastcgi_pass php:9000;
|
fastcgi_pass php:9000;
|
||||||
add_header x-test "$args" always;
|
add_header x-test "$args" always;
|
||||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
fastcgi_param SCRIPT_FILENAME $request_filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
location ~ (\.php|\.ini)$ {
|
location ~ (\.php|\.ini)$ {
|
||||||
return 403;
|
return 403;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
1
apps/rolladvantage
Submodule
@@ -1,7 +1,7 @@
|
|||||||
# https://github.com/vouch/vouch-proxy#vouch-proxy-in-a-path
|
# https://github.com/vouch/vouch-proxy#vouch-proxy-in-a-path
|
||||||
|
|
||||||
location /vouch {
|
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_set_header Host $http_host;
|
||||||
proxy_pass_request_body off;
|
proxy_pass_request_body off;
|
||||||
proxy_set_header Content-Length "";
|
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;
|
|
||||||
}
|
|
||||||