Compare commits

..

22 Commits

Author SHA1 Message Date
de01e948e7 Merge pull request 'cleanup' (#7) from cleanup into main
Reviewed-on: #7
2024-11-12 14:56:07 -05:00
24fb73f1f8 removed old site 2024-11-12 14:55:16 -05:00
a66e102285 I completely lose track 2024-11-12 14:54:16 -05:00
4f16bd46d9 first commit 2024-09-23 21:25:54 -04:00
37b9645bb1 Merge pull request 'new-stuff' (#6) from new-stuff into main
Reviewed-on: #6
2024-09-14 14:43:55 -04:00
dda3adb723 removing whitespaces 2024-09-14 14:43:30 -04:00
79a57aac8f removing notes app. It wasn't great 2024-09-14 14:42:03 -04:00
6258e7b785 lots of dashboard and tech stuff 2024-09-14 14:41:15 -04:00
8d22db029a Merge pull request 'stats' (#5) from stats into main
Reviewed-on: #5
2024-08-29 19:08:52 -04:00
ce29e02049 adding example env 2024-08-29 19:08:19 -04:00
2ba39d8994 added lazylib for some reason 2024-08-29 17:59:41 -04:00
0215f55009 wrapping up changes 2024-08-29 17:59:10 -04:00
a14b7e37c9 FINALLY solved this 2024-08-19 14:18:53 -04:00
7c4cc5600d Merge pull request 'botc-switch' (#4) from botc-switch into main
Reviewed-on: #4
2024-08-15 02:06:52 -04:00
2899a31a1f Well that was an hour of my life gone 2024-08-15 02:05:16 -04:00
7d5b892a1c I think I got this bs working now 2024-08-15 01:59:58 -04:00
f381bb7a7b I HATE DOCKER VOLUMES SOOOO MUCH 2024-08-15 01:53:07 -04:00
9098407321 switching up sites 2024-08-15 01:20:30 -04:00
64eb98fe0e Merge pull request 'rss-bridge' (#3) from rss-bridge into main
Reviewed-on: #3
2024-08-11 01:40:38 -04:00
2cab330840 Way more stuff again 2024-08-11 01:38:11 -04:00
f5ede9f030 fixed gamesclub 2024-08-09 02:35:33 -04:00
b9eeffbe42 moving and making new sites 2024-08-09 01:24:54 -04:00
57 changed files with 720 additions and 172 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "sites/rittenhop/content/themes/rh-theme-v1"]
path = sites/rittenhop/content/themes/rh-theme-v1
url = git@github.com:b7s9/rh-theme-v1.git

View File

@ -1,9 +1,21 @@
# Docker Compose for my Media Server
A giant suite of web apps that I personally use on my local server. Some of them include:
* Arr - A collection of all the *arr apps like Radarr and Sonarr
* Dashboard - Replies on Homarr and Dashdot for a top-level dashboard
* Mail - An email service (WIP)
* Nginx-Proxy - Handles reverse proxy and SSL certs
* Git Repo
* Nextcloud - Cloud storage and sharing
* Plex - The Plex media server with stats
* Readers - Various media readers that can be accessed via the browser
* Wordpress - for making a site
* Sites - Various static sites I have. All of them are using the Ghost CMS
All the apps use Nginx-Proxy which handles reverse proxy and SSL certs for every app.
## Adding a new app
Use this checklist if you're having issue getting the app to run:
* Allow ports on your machine (e.g. `ufw allow 80`)
* Set port forwarding on your router

View File

@ -40,6 +40,12 @@ services:
ports:
- 8989:8989
restart: unless-stopped
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
restart: unless-stopped
ports:
- 8191:8191
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
@ -145,6 +151,7 @@ services:
- ${CONFIG_LOCATION}/readarr:/config
- ${DATA_LOCATION}/Books:/books
- /media/seedbox:/downloads
- ${DATA_LOCATION}/Downloads:/downloads-local
expose:
- "8787"
ports:
@ -164,6 +171,47 @@ services:
- ${CONFIG_LOCATION}/readarr-audio:/config
- ${DATA_LOCATION}/Audiobooks:/audiobooks
- /media/seedbox:/downloads
- ${DATA_LOCATION}/Downloads:/downloads-local
restart: unless-stopped
calibre:
image: lscr.io/linuxserver/calibre:latest
container_name: calibre
security_opt:
- seccomp:unconfined #optional
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
# - PASSWORD= #optional
# - CLI_ARGS= #optional
volumes:
- ${CONFIG_LOCATION}/calibre:/config
- ${DATA_LOCATION}/Books:/books
- ${DATA_LOCATION}/Audiobooks:/audiobooks
- /media/seedbox:/downloads
- ${DATA_LOCATION}/Downloads:/downloads-local
ports:
- 8180:8080
- 8281:8181
- 8182:8081
restart: unless-stopped
calibre-web:
image: lscr.io/linuxserver/calibre-web:latest
container_name: calibre-web
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- DOCKER_MODS=linuxserver/mods:universal-calibre #optional
- OAUTHLIB_RELAX_TOKEN_SCOPE=1 #optional
- VIRTUAL_HOST=books.${DOMAIN}
- LETSENCRYPT_HOST=books.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
volumes:
- ${CONFIG_LOCATION}/calibre-web:/config
- ${DATA_LOCATION}/Books:/books
ports:
- 8083:8083
restart: unless-stopped
networks:
default:

View File

@ -0,0 +1,20 @@
services:
pds:
container_name: pds
image: ghcr.io/bluesky-social/pds:0.4
restart: unless-stopped
volumes:
- ./data:/pds
env_file:
- ./.env
environment:
- VIRTUAL_HOST=bluesky.${DOMAIN}
- VIRTUAL_PORT=3005
- LETSENCRYPT_HOST=bluesky.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
ports:
- 3005:3005
networks:
default:
name: nginx-proxy
external: true

4
botc/.gitignore vendored
View File

@ -1,4 +0,0 @@
backup/*
wordpress/*
data/*
db/*

View File

@ -1,34 +0,0 @@
services:
db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: clocktower
MYSQL_USER: wordpress
MYSQL_PASSWORD: ${DBPASS}
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- ./db:/var/lib/mysql:rw
wordpress:
depends_on:
- db
image: wordpress
restart: always
environment:
# PUID: ${UID}
# PGID: ${GID}
WORDPRESS_DB_HOST: botc-db-1
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: ${DBPASS}
WORDPRESS_DB_NAME: clocktower
VIRTUAL_HOST: "www.phillybotc.com, phillybotc.com"
LETSENCRYPT_HOST: "phillybotc.com, www.phillybotc.com"
LETSENCRYPT_EMAIL: ${EMAIL}
# LETSENCRYPT_TEST: true
volumes:
- ./wordpress:/var/www/html:rw
- ./backup:/var/www/html/wp-content/updraft:rw
networks:
default:
name: nginx-proxy
external: true

View File

@ -1,65 +0,0 @@
# Use postgres/example user/password credentials
version: '3.8'
volumes:
database-data:
networks:
stack:
name: stack
external: false
services:
database:
container_name: database
image: postgres
restart: always
volumes:
- database-data:/var/lib/postgresql/data/
env_file: .env
networks:
- stack
calcom:
image: calcom.docker.scarf.sh/calcom/cal.com
build:
context: .
dockerfile: Dockerfile
args:
NEXT_PUBLIC_WEBAPP_URL: ${NEXT_PUBLIC_WEBAPP_URL}
NEXT_PUBLIC_API_V2_URL: ${NEXT_PUBLIC_API_V2_URL}
NEXT_PUBLIC_LICENSE_CONSENT: ${NEXT_PUBLIC_LICENSE_CONSENT}
CALCOM_TELEMETRY_DISABLED: ${CALCOM_TELEMETRY_DISABLED}
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
CALENDSO_ENCRYPTION_KEY: ${CALENDSO_ENCRYPTION_KEY}
DATABASE_URL: ${DATABASE_URL}
DATABASE_DIRECT_URL: ${DATABASE_URL}
network: stack
restart: always
networks:
- stack
ports:
- 3000:3000
env_file: .env
environment:
- DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}/${POSTGRES_DB}
- DATABASE_DIRECT_URL=${DATABASE_URL}
depends_on:
- database
# Optional use of Prisma Studio. In production, comment out or remove the section below to prevent unwanted access to your database.
studio:
image: calcom.docker.scarf.sh/calcom/cal.com
restart: always
networks:
- stack
ports:
- 5555:5555
env_file: .env
environment:
- DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_HOST}/${POSTGRES_DB}
- DATABASE_DIRECT_URL=${DATABASE_URL}
depends_on:
- database
command:
- npx
- prisma
- studio
# END SECTION: Optional use of Prisma Studio.

View File

View File

@ -6,14 +6,14 @@ services:
- PUID=1000
- PGID=1000
- TZ=${TZ}
- APP_URL=https://wiki.${DOMAIN}
- APP_URL=https://docs.${DOMAIN}
- DB_HOST=bookstack_db
- DB_PORT=3306
- DB_USER=bookstack
- DB_PASS=${DBPASS}
- DB_DATABASE=bookstackapp
- VIRTUAL_HOST=wiki.${DOMAIN}
- LETSENCRYPT_HOST=wiki.${DOMAIN}
- VIRTUAL_HOST=docs.${DOMAIN}
- LETSENCRYPT_HOST=docs.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
volumes:
- ./config:/config

2
games/.gitignore vendored
View File

@ -1 +1 @@
db/*
db

View File

@ -1,6 +1,6 @@
services:
gamevault-backend:
image: phalcode/gamevault-backend:latest
image: phalcode/gamevault-backend:13.1.0
restart: unless-stopped
environment:
- PUID=${UID}
@ -17,7 +17,7 @@ services:
# Mount the folder where your games are
- ${DATA_LOCATION}:/files
# Mount the folder where GameVault should store its images
- ${DATA_LOCATION}/images:/images
- ${DATA_LOCATION}/images:/media
expose:
- "8080"
ports:

View File

@ -1,31 +0,0 @@
{
"url": "http://localhost:2368",
"server": {
"port": 2368,
"host": "::"
},
"mail": {
"transport": "SMTP",
"options": {
"service": "Mailgun",
"host": "smtp.mailgun.org",
"port": 587,
"secure": false,
"auth": {
"user": "",
"pass": ""
}
}
},
"logging": {
"transports": [
"file",
"stdout"
]
},
"process": "systemd",
"paths": {
"contentPath": "/var/lib/ghost/content"
}
}

2
gitea/.gitignore vendored
View File

@ -1,3 +1,3 @@
config/*
data/*
db/*
db

View File

@ -11,7 +11,7 @@ services:
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=${DBPASS}
- VIRTUAL_HOST=git.${DOMAIN},git.${DOMAIN}
- VIRTUAL_PORT=3000
- VIRTUAL_PORT=3004
- LETSENCRYPT_HOST=git.${DOMAIN},git.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
restart: always
@ -21,10 +21,10 @@ services:
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "3004:3004"
- "2222:2222"
expose:
- "3000"
- "3004"
db:
image: postgres:14
restart: always

23
kiwix/docker-compose.yml Normal file
View File

@ -0,0 +1,23 @@
services:
kiwix-serve:
ports:
- 8082:8082
image: ghcr.io/kiwix/kiwix-serve:latest
# uncomment next 4 lines to use it with local zim file in /tmp/zim
volumes:
- /tank/storage/media/Cloud/Kiwix:/data
command:
- 'wikipedia_en_all_maxi_2024-01.zim'
# uncomment next 2 lines to use it with remote zim file
environment:
- PORT=8082
- VIRTUAL_HOST=wiki.${DOMAIN}
- VIRTUAL_PORT=8082
- LETSENCRYPT_HOST=wiki.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
expose:
- "8082"
networks:
default:
name: nginx-proxy
external: true

View File

@ -0,0 +1,7 @@
DOMAIN=example.com
UID=1000
GID=1000
TZ=Etc/UTC
CONFIG_LOCATION=./config
DATA_LOCATION=./data
EMAIL=example@mail.com

View File

@ -0,0 +1,25 @@
services:
lazylibrarian:
image: lscr.io/linuxserver/lazylibrarian:latest
container_name: lazylibrarian
environment:
PUID: 1000
PGID: 1000
TZ: Etc/UTC
DOCKER_MODS: linuxserver/mods:universal-calibre|linuxserver/mods:lazylibrarian-ffmpeg #optional
VIRTUAL_HOST: lazylib.brodin.rocks
LETSENCRYPT_HOST: lazylib.brodin.rocks
LETSENCRYPT_EMAIL: ${EMAIL}
volumes:
- ./config/lazylibrarian:/config
- /media/seedbox:/downloads
- ${DATA_LOCATION}/Downloads:/downloads-local
- ${DATA_LOCATION}/Audiobooks:/audiobooks
- ${DATA_LOCATION}/Books:/books
ports:
- 5299:5299
restart: unless-stopped
networks:
default:
name: nginx-proxy
external: true

7
monitoring/.env.example Normal file
View File

@ -0,0 +1,7 @@
DOMAIN=example.com
UID=1000
GID=1000
TZ=Etc/UTC
CONFIG_LOCATION=./config
DATA_LOCATION=./data
EMAIL=example@mail.com

1
monitoring/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
data/

View File

@ -0,0 +1,60 @@
services:
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
container_name: cadvisor
privileged: true
restart: unless-stopped
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
prometheus:
image: prom/prometheus
container_name: prometheus
user: '0'
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- 9090:9090
restart: unless-stopped
volumes:
- ${CONFIG_LOCATION}/prometheus:/etc/prometheus
- ${DATA_LOCATION}/prometheus:/prometheus
node-exporter:
image: quay.io/prometheus/node-exporter:latest
container_name: node-exporter
command:
- '--path.rootfs=/host'
ports:
- 9100:9100
pid: host
restart: unless-stopped
volumes:
- '/:/host:ro,rslave'
smartctl-exporter:
image: prometheuscommunity/smartctl-exporter
container_name: smartctl-exporter
privileged: true
user: root
ports:
- "9633:9633"
grafana:
image: grafana/grafana-enterprise
container_name: grafana
restart: unless-stopped
user: '0'
environment:
- GF_SERVER_ROOT_URL=https://grafana.${DOMAIN}
- GF_INSTALL_PLUGINS=grafana-clock-panel
- VIRTUAL_HOST=grafana.${DOMAIN}
- LETSENCRYPT_HOST=grafana.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
volumes:
- ${CONFIG_LOCATION}/grafana:/var/lib/grafana
ports:
- '3003:3000'
networks:
default:
name: nginx-proxy
external: true

View File

@ -1 +0,0 @@
client_max_body_size 100000m;

View File

@ -10,7 +10,8 @@ services:
- ./nginx/certs:/etc/nginx/certs
- ./nginx/html:/usr/share/nginx/html
- ./nginx/vhost.d:/etc/nginx/vhost.d
- ./client_max_body_size.conf:/etc/nginx/conf.d/client_max_body_size.conf:ro
- ./settings.conf:/etc/nginx/conf.d/settings.conf:ro
# - ./keepalive_requests.conf:/etc/nginx/conf.d/keepalive_requests.conf:ro
nginx-letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: nginx-letsencrypt

View File

@ -1,9 +0,0 @@
location /tt-rss/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8280/tt-rss/;
break;
}

View File

@ -0,0 +1,2 @@
client_max_body_size 100000m;
keepalive_requests 1000000;

View File

@ -26,9 +26,9 @@ services:
- PUID=${UID}
- PGID=${GID}
- TZ=${TZ}
- VIRTUAL_HOST=ubooquity.${DOMAIN}
- VIRTUAL_HOST=comics.${DOMAIN}
- VIRTUAL_PORT=2202
- LETSENCRYPT_HOST=ubooquity.${DOMAIN}
- LETSENCRYPT_HOST=comics.${DOMAIN}
- LETSENCRYPT_EMAIL= ${EMAIL}
# - MAXMEM= #optional
volumes:

16
recipes/.env.example Normal file
View File

@ -0,0 +1,16 @@
DOMAIN=
EMAIl=
# random secret key, use for example `base64 /dev/urandom | head -c50` to generate one
SECRET_KEY=
# allowed hosts (see documentation), should be set to your hostname(s) but might be * (default) for some proxies/providers
# ALLOWED_HOSTS=recipes.mydomain.com
# add only a database password if you want to run with the default postgres, otherwise change settings accordingly
DB_ENGINE=django.db.backends.postgresql
POSTGRES_HOST=db_recipes
POSTGRES_DB=djangodb
POSTGRES_PORT=5432
POSTGRES_USER=djangouser
POSTGRES_PASSWORD=

View File

@ -0,0 +1,33 @@
services:
db:
container_name: db-recipes
restart: always
image: postgres:16-alpine
volumes:
- ./data:/var/lib/postgresql/data
env_file:
- ./.env
app:
restart: always
image: vabene1111/recipes
env_file:
- ./.env
environment:
VIRTUAL_HOST: "recipes.${DOMAIN}"
LETSENCRYPT_HOST: "recipes.${DOMAIN}"
LETSENCRYPT_EMAIL: ${EMAIL}
volumes:
- ./config/staticfiles:/opt/recipes/staticfiles
# Do not make this a bind mount, see https://docs.tandoor.dev/install/docker/#volumes-vs-bind-mounts
- nginx_config:/opt/recipes/nginx/conf.d
- ./config/mediafiles:/opt/recipes/mediafiles
ports:
- 8075:8080
depends_on:
- db
networks:
default:
name: nginx-proxy
external: true
volumes:
nginx_config:

40
restart_all.sh Executable file
View File

@ -0,0 +1,40 @@
#!/bin/bash
# cd nginx-proxy
# sudo docker compose restart
cd ../arr
sudo docker compose restart
cd ../dashboard
sudo docker compose restart
cd ../games
sudo docker compose restart
cd ../gita
sudo docker compose restart
cd ../lazylibrarian
sudo docker compose restart
cd ../nextcloud
sudo docker compose restart
cd ../plex
sudo docker compose restart
cd ../readers
sudo docker compose restart
cd ../recipes
sudo docker compose restart
cd ../rss-reader
sudo docker compose restart
cd ../sites
cd botc
sudo docker compose restart
cd ../fusiondance
sudo docker compose restart
cd ../gamesclub
sudo docker compose restart
cd ../photos
sudo docker compose restart
cd ..
cd ../stats
sudo docker compose restart
cd ../vnc
sudo docker compose restart
cd ../wiki
sudo docker compose restart

View File

@ -30,6 +30,17 @@ services:
volumes:
- ${CONFIG_LOCATION}/mariadb:/config
restart: unless-stopped
rss-bridge:
image: rssbridge/rss-bridge:latest
environment:
- VIRTUAL_HOST=rss-bridge.${DOMAIN}
- LETSENCRYPT_HOST=rss-bridge.${DOMAIN}
- LETSENCRYPT_EMAIL=${EMAIL}
volumes:
- ${CONFIG_LOCATION}/rss-bridge:/config:rw
ports:
- 3002:80
restart: unless-stopped
networks:
default:
name: nginx-proxy

View File

@ -1,19 +1,40 @@
#!/bin/bash
cd arr
cd nginx-proxy
sudo docker compose up -d
cd ../botc
cd ../arr
sudo docker compose up -d
cd ../dashboard
sudo docker compose up -d
cd ../fusiondance
cd ../dashboard
sudo docker compose up -d
cd ../games
sudo docker compose up -d
cd ../gita
sudo docker compose up -d
cd ../lazylibrarian
sudo docker compose up -d
cd ../nextcloud
sudo docker compose up -d
cd ../plex
sudo docker compose up -d
cd ../readers
sudo docker compose up -d
cd ../recipes
sudo docker compose up -d
cd ../rss-reader
sudo docker compose up -d
cd ../sites
cd botc
sudo docker compose up -d
cd ../fusiondance
sudo docker compose up -d
cd ../gamesclub
sudo docker compose up -d
cd ../photos
sudo docker compose up -d
cd ..
cd ../stats
sudo docker compose up -d
cd ../vnc
sudo docker compose up -d
cd ../wiki
sudo docker compose up -d

View File

@ -0,0 +1,12 @@
EMAIL=example@gmail.com
DOMAIN=example.com
DATABASE_URL=postgresql://umami_user:umami_pass@db:5432/umami_db
DATABASE_TYPE=postgresql
HASH_SALT=generate_a_random_salt
POSTGRES_DB=umami_db
POSTGRES_USER=umami_user
POSTGRES_PASSWORD=umami_pass
APP_SECRET=random-string

View File

@ -0,0 +1,33 @@
services:
umami:
image: ghcr.io/umami-software/umami:postgresql-latest
env_file: .env
environment:
TRACKER_SCRIPT_NAME: getinfo
API_COLLECT_ENDPOINT: all
VIRTUAL_HOST: "analytics.${DOMAIN}"
VIRTUAL_PORT: 3000
CLIENT_IP_HEADER: x-real-ip
# HOSTNAME: "analytics.${DOMAIN}"
# PORT: 3004
# FORCE_SSL: 0
LETSENCRYPT_HOST: "analytics.${DOMAIN}"
LETSENCRYPT_EMAIL: ${EMAIL}
depends_on:
- db
restart: always
ports:
- 3000:3000
expose:
- 3000
db:
container_name: umami-db
image: postgres:15-alpine
env_file: .env
volumes:
- ./data:/var/lib/postgresql/data
restart: always
networks:
default:
name: nginx-proxy
external: true

View File

@ -1,19 +1,19 @@
{
"url": "http://localhost:2368",
"url": "http://localhost:2371",
"server": {
"port": 2368,
"port": 2371,
"host": "::"
},
"mail": {
"transport": "SMTP",
"options": {
"service": "Mailgun",
"host": "smtp.mailgun.org",
"service": "Sendgrid",
"host": "smtp.sendgrid.net",
"port": 587,
"secure": false,
"secure": true,
"auth": {
"user": "",
"pass": ""
"user": "apikey",
"pass": "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"
}
}
},

View File

@ -0,0 +1,42 @@
services:
ghost:
image: ghost:5
restart: always
ports:
- 2371:2368
expose:
- 2371
environment:
# see https://ghost.org/docs/config/#configuration-options
database__client: mysql
database__connection__host: botc-db-1
database__connection__user: root
database__connection__password: ${DBPASS}
database__connection__database: ghost
# VIRTUAL_HOST: "www.${DOMAIN}, ${DOMAIN}"
VIRTUAL_HOST: "www.phillybotc.com, phillybotc.com"
VIRTUAL_PORT: 2371
# LETSENCRYPT_HOST: "${DOMAIN}, www.${DOMAIN}"
LETSENCRYPT_HOST: "www.phillybotc.com, phillybotc.com"
LETSENCRYPT_EMAIL: ${EMAIL}
# url: http://0.0.0.0:2371 #Dev
url: "https://phillybotc.com" #Prod
# contrary to the default mentioned in the linked documentation, this image defaults to NODE_ENV=production (so development mode needs to be explicitly specified if desired)
NODE_ENV: production
volumes:
- ./content:/var/lib/ghost/content
# - ./themes:/var/lib/ghost/current/content/themes:rw
db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: ghost
MYSQL_ROOT_PASSWORD: ${DBPASS}
volumes:
- ./data:/var/lib/mysql
volumes:
db:
networks:
default:
name: nginx-proxy
external: true

2
sites/botc/update.sh Executable file
View File

@ -0,0 +1,2 @@
sudo docker cp config.development.json botc-ghost-1:/var/lib/ghost/.
sudo docker cp config.production.json botc-ghost-1:/var/lib/ghost/.

View File

@ -1,3 +1,5 @@
DOMAIN=example.com
DBPASS=password
EMAIL=example@mail.com
DOMAIN=example.com

3
sites/fusiondance/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
db/*
content/*
config.*.json

1
sites/fusiondance/update.sh Executable file
View File

@ -0,0 +1 @@
sudo docker cp config.production.json fusiondance-ghost-1:/var/lib/ghost/.

View File

@ -0,0 +1,5 @@
DOMAIN=example.com
DBPASS=password
EMAIL=example@mail.com
DOMAIN=example.com

3
sites/gamesclub/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
db/*
content/*
config.*.json

View File

@ -0,0 +1,41 @@
services:
ghost:
image: ghost:5
restart: always
ports:
- 2369:2368
expose:
- 2369
environment:
# see https://ghost.org/docs/config/#configuration-options
database__client: mysql
database__connection__host: gamesclub-db-1
database__connection__user: root
database__connection__password: ${DBPASS}
database__connection__database: ghost
VIRTUAL_HOST: "${DOMAIN}, www.${DOMAIN}"
VIRTUAL_PORT: 2369
LETSENCRYPT_HOST: "${DOMAIN}, www.${DOMAIN}"
LETSENCRYPT_EMAIL: ${EMAIL}
# url: http://0.0.0.0:2369 #Dev
url: "https://${DOMAIN}" #Prod
# contrary to the default mentioned in the linked documentation, this image defaults to NODE_ENV=production (so development mode needs to be explicitly specified if desired)
# NODE_ENV: development
volumes:
- ./content:/var/lib/ghost/content
# - ./themes:/var/lib/ghost/current/content/themes:rw
db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: ghost
MYSQL_ROOT_PASSWORD: ${DBPASS}
volumes:
- db:/var/lib/mysql
volumes:
db:
networks:
default:
name: nginx-proxy
external: true

2
sites/gamesclub/update.sh Executable file
View File

@ -0,0 +1,2 @@
sudo docker cp config.development.json gamesclub-ghost-1:/var/lib/ghost/.
sudo docker cp config.production.json gamesclub-ghost-1:/var/lib/ghost/.

View File

@ -0,0 +1,5 @@
DOMAIN=example.com
DBPASS=password
EMAIL=example@mail.com
DOMAIN=example.com

3
sites/photos/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
db/*
content/*
config.*.json

View File

@ -0,0 +1,42 @@
services:
ghost:
image: ghost:5
restart: always
ports:
- 2370:2368
expose:
- 2370
environment:
# see https://ghost.org/docs/config/#configuration-options
database__client: mysql
database__connection__host: photos-db-1
database__connection__user: root
database__connection__password: ${DBPASS}
database__connection__database: ghost
# VIRTUAL_HOST: "www.${DOMAIN}, ${DOMAIN}"
VIRTUAL_HOST: "photos.${DOMAIN}"
VIRTUAL_PORT: 2370
# LETSENCRYPT_HOST: "${DOMAIN}, www.${DOMAIN}"
LETSENCRYPT_HOST: "photos.${DOMAIN}"
LETSENCRYPT_EMAIL: ${EMAIL}
# url: http://0.0.0.0:2370 #Dev
url: "https://photos.${DOMAIN}" #Prod
# contrary to the default mentioned in the linked documentation, this image defaults to NODE_ENV=production (so development mode needs to be explicitly specified if desired)
NODE_ENV: production
volumes:
- ./content:/var/lib/ghost/content
# - ./themes:/var/lib/ghost/current/content/themes:rw
db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: ghost
MYSQL_ROOT_PASSWORD: ${DBPASS}
volumes:
- db:/var/lib/mysql
volumes:
db:
networks:
default:
name: nginx-proxy
external: true

2
sites/photos/update.sh Executable file
View File

@ -0,0 +1,2 @@
sudo docker cp config.development.json photos-ghost-1:/var/lib/ghost/.
sudo docker cp config.production.json photos-ghost-1:/var/lib/ghost/.

View File

@ -0,0 +1,5 @@
DOMAIN=example.com
DBPASS=password
EMAIL=example@mail.com
DOMAIN=example.com

3
sites/techblog/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
db/*
content/*
config.*.json

View File

@ -0,0 +1,40 @@
services:
ghost:
image: ghost:5
restart: always
ports:
- 2373:2368
expose:
- 2373
environment:
# see https://ghost.org/docs/config/#configuration-options
database__client: mysql
database__connection__host: techblog-db-1
database__connection__user: root
database__connection__password: ${DBPASS}
database__connection__database: ghost
VIRTUAL_HOST: "blog.${DOMAIN}"
VIRTUAL_PORT: 2373
LETSENCRYPT_HOST: "blog.${DOMAIN}"
LETSENCRYPT_EMAIL: ${EMAIL}
# url: http://0.0.0.0:2373 #Dev
url: "https://blog.${DOMAIN}" #Prod
# contrary to the default mentioned in the linked documentation, this image defaults to NODE_ENV=production (so development mode needs to be explicitly specified if desired)
# NODE_ENV: development
volumes:
- ./content:/var/lib/ghost/content
# - ./themes:/var/lib/ghost/current/content/themes:rw
db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: ghost
MYSQL_ROOT_PASSWORD: ${DBPASS}
volumes:
- db:/var/lib/mysql
volumes:
db:
networks:
default:
name: nginx-proxy
external: true

2
sites/techblog/update.sh Executable file
View File

@ -0,0 +1,2 @@
sudo docker cp config.development.json techblog-ghost-1:/var/lib/ghost/.
sudo docker cp config.production.json techblog-ghost-1:/var/lib/ghost/.

48
stats/.env.example Normal file
View File

@ -0,0 +1,48 @@
DBPASS=password
REDISPASS=password
EMAIL=bjageman@gmail.com
TZ=America/New_York
DOMAIN=brodin.rocks
# For all variables, see https://docs.lightdash.com/self-host/customize-deployment/environment-variables
PORT=4018
SITE_URL=http://localhost:4018
PGHOST=metabase-db
PGPORT=5432
PGUSER=postgres
PGDATABASE=postgres
PGPASSWORD="password"
LIGHTDASH_SECRET="not very secret"
SECURE_COOKIES=false
TRUST_PROXY=false
LIGHTDASH_LOG_LEVEL=debug
LIGHTDASH_QUERY_MAX_LIMIT=5000
NODE_ENV=production
LIGHTDASH_LOG_LEVEL=debug
LIGHTDASH_QUERY_MAX_LIMIT=5000
ALLOW_MULTIPLE_ORGS=false
DBT_PROJECT_DIR=./dbt
SCHEDULER_ENABLED=true
LIGHTDASH_MAX_PAYLOAD=5mb
#AUTH_DISABLE_PASSWORD_AUTHENTICATION=
#AUTH_GOOGLE_OAUTH2_CLIENT_ID=
#AUTH_GOOGLE_OAUTH2_CLIENT_SECRET=
#EMAIL_SMTP_HOST=
#EMAIL_SMTP_PORT=
#EMAIL_SMTP_SECURE=
#EMAIL_SMTP_USER=
#EMAIL_SMTP_PASSWORD=
#EMAIL_SMTP_ALLOW_INVALID_CERT=
#EMAIL_SMTP_SENDER_NAME=
#EMAIL_SMTP_SENDER_EMAIL=

1
stats/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
noco/

65
stats/docker-compose.yml Normal file
View File

@ -0,0 +1,65 @@
services:
share-db:
environment:
POSTGRES_DB: share-db
POSTGRES_PASSWORD: password
POSTGRES_USER: postgres
image: postgres
restart: always
volumes:
- ./data/sharedb:/var/lib/postgresql/data
noco:
container_name: noco
image: nocodb/nocodb:latest
depends_on:
- noco-db
ports:
- 3006:8080
environment:
NC_DB: pg://noco-db:5432?u=postgres&p=password&d=database-noco
VIRTUAL_HOST: sheets.phillybotc.com
LETSENCRYPT_HOST: sheets.phillybotc.com
LETSENCRYPT_EMAIL: ${EMAIL}
volumes:
- ./noco:/usr/app/data
noco-db:
environment:
POSTGRES_DB: database-noco
POSTGRES_PASSWORD: password
POSTGRES_USER: postgres
image: postgres
restart: always
volumes:
- ./data/nocodb:/var/lib/postgresql/data
metabase:
container_name: metabase
image: metabase/metabase:latest
depends_on:
- metabase-db
ports:
- 4018:3000
environment:
JAVA_OPTS: "-Xmx1g" #-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/directory
MB_DB_TYPE: postgres
MB_DB_DBNAME: ${PGDATABASE:-postgres}
MB_DB_PORT: 5432
MB_DB_USER: ${PGUSER:-postgres}
MB_DB_PASS: ${PGPASSWORD}
MB_DB_HOST: ${PGHOST}
VIRTUAL_HOST: "dash.phillybotc.com"
LETSENCRYPT_HOST: "dash.phillybotc.com"
LETSENCRYPT_EMAIL: ${EMAIL}
metabase-db:
container_name: metabase-db
image: postgres:15.4
restart: always
environment:
POSTGRES_PASSWORD: ${PGPASSWORD}
POSTGRES_USER: ${PGUSER:-postgres}
POSTGRES_DB: ${PGDATABASE:-postgres}
volumes:
- ./data/metabase:/var/lib/postgresql/data
networks:
default:
name: nginx-proxy
external: true