Compare commits
No commits in common. "main" and "sites" have entirely different histories.
18
README.md
18
README.md
|
@ -1,21 +1,9 @@
|
|||
# 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
|
||||
* Git Repo
|
||||
* Nextcloud - Cloud storage and sharing
|
||||
* Mail - An email service (WIP)
|
||||
* Nginx-Proxy - Handles reverse proxy and SSL certs
|
||||
* Plex - The Plex media server with stats
|
||||
* Readers - Various media readers that can be accessed via the browser
|
||||
* 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
|
||||
* Wordpress - for making a site
|
|
@ -40,12 +40,6 @@ 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
|
||||
|
@ -151,7 +145,6 @@ services:
|
|||
- ${CONFIG_LOCATION}/readarr:/config
|
||||
- ${DATA_LOCATION}/Books:/books
|
||||
- /media/seedbox:/downloads
|
||||
- ${DATA_LOCATION}/Downloads:/downloads-local
|
||||
expose:
|
||||
- "8787"
|
||||
ports:
|
||||
|
@ -171,47 +164,6 @@ 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=calibre-web.${DOMAIN}
|
||||
- LETSENCRYPT_HOST=calibre-web.${DOMAIN}
|
||||
- LETSENCRYPT_EMAIL=${EMAIL}
|
||||
volumes:
|
||||
- ${CONFIG_LOCATION}/calibre-web:/config
|
||||
- ${DATA_LOCATION}/Books:/books
|
||||
ports:
|
||||
- 8083:8083
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
default:
|
||||
|
|
|
@ -34,44 +34,6 @@ services:
|
|||
- 3001:3001
|
||||
volumes:
|
||||
- /:/mnt/host: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'
|
||||
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
|
||||
|
|
2
games/.gitignore
vendored
2
games/.gitignore
vendored
|
@ -1 +1 @@
|
|||
db
|
||||
db/*
|
2
gitea/.gitignore
vendored
2
gitea/.gitignore
vendored
|
@ -1,3 +1,3 @@
|
|||
config/*
|
||||
data/*
|
||||
db
|
||||
db/*
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
DOMAIN=example.com
|
||||
UID=1000
|
||||
GID=1000
|
||||
TZ=Etc/UTC
|
||||
CONFIG_LOCATION=./config
|
||||
DATA_LOCATION=./data
|
||||
EMAIL=example@mail.com
|
|
@ -1,25 +0,0 @@
|
|||
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
|
|
@ -0,0 +1,9 @@
|
|||
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;
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
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=
|
|
@ -1,33 +0,0 @@
|
|||
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:
|
|
@ -30,17 +30,6 @@ 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
|
||||
|
|
31
run_all.sh
31
run_all.sh
|
@ -1,40 +1,19 @@
|
|||
#!/bin/bash
|
||||
|
||||
cd nginx-proxy
|
||||
cd arr
|
||||
sudo docker compose up -d
|
||||
cd ../arr
|
||||
cd ../botc
|
||||
sudo docker compose up -d
|
||||
cd ../dashboard
|
||||
cd ../dashboard
|
||||
sudo docker compose up -d
|
||||
cd ../fusiondance
|
||||
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
|
|
@ -1,5 +1,3 @@
|
|||
DOMAIN=example.com
|
||||
DBPASS=password
|
||||
EMAIL=example@mail.com
|
||||
DOMAIN=example.com
|
||||
|
||||
|
|
5
sites/botc/.gitignore
vendored
5
sites/botc/.gitignore
vendored
|
@ -1,3 +1,4 @@
|
|||
backup/*
|
||||
wordpress/*
|
||||
data/*
|
||||
db/*
|
||||
content/*
|
||||
config.*.json
|
|
@ -1,42 +1,34 @@
|
|||
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}
|
||||
MYSQL_DATABASE: clocktower
|
||||
MYSQL_USER: wordpress
|
||||
MYSQL_PASSWORD: ${DBPASS}
|
||||
MYSQL_RANDOM_ROOT_PASSWORD: '1'
|
||||
volumes:
|
||||
- ./data:/var/lib/mysql
|
||||
volumes:
|
||||
db:
|
||||
- ./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
|
||||
external: true
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
sudo docker cp config.development.json botc-ghost-1:/var/lib/ghost/.
|
||||
sudo docker cp config.production.json botc-ghost-1:/var/lib/ghost/.
|
|
@ -1,2 +0,0 @@
|
|||
sudo docker cp config.development.json photos-ghost-1:/var/lib/ghost/.
|
||||
sudo docker cp config.production.json photos-ghost-1:/var/lib/ghost/.
|
|
@ -1,5 +0,0 @@
|
|||
DOMAIN=example.com
|
||||
DBPASS=password
|
||||
EMAIL=example@mail.com
|
||||
DOMAIN=example.com
|
||||
|
3
sites/techblog/.gitignore
vendored
3
sites/techblog/.gitignore
vendored
|
@ -1,3 +0,0 @@
|
|||
db/*
|
||||
content/*
|
||||
config.*.json
|
|
@ -1,40 +0,0 @@
|
|||
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
|
|
@ -1,2 +0,0 @@
|
|||
sudo docker cp config.development.json techblog-ghost-1:/var/lib/ghost/.
|
||||
sudo docker cp config.production.json techblog-ghost-1:/var/lib/ghost/.
|
|
@ -1,48 +0,0 @@
|
|||
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
1
stats/.gitignore
vendored
|
@ -1 +0,0 @@
|
|||
noco/
|
|
@ -1,64 +0,0 @@
|
|||
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:
|
||||
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
|
Loading…
Reference in New Issue
Block a user