Compare commits
31 Commits
25f0fe9684
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| fe50b1db30 | |||
|
|
a769356f31 | ||
|
|
22d9444d0f | ||
|
|
15c10fa570 | ||
|
|
8501b5f381 | ||
|
|
649e019028 | ||
|
|
e637e839c0 | ||
|
|
658285f13c | ||
|
|
35790d786b | ||
|
|
3ae1187928 | ||
|
|
961c894a5e | ||
|
|
d64b5504e0 | ||
|
|
e50817db0c | ||
|
|
18d251f09f | ||
|
|
af37f66fbe | ||
|
|
1bfd569816 | ||
|
|
806a5812a0 | ||
|
|
2ac8df2a1f | ||
|
|
6866d75e3b | ||
|
|
1af6a726fb | ||
|
|
6025d8ec78 | ||
|
|
f0ec9c7a4a | ||
|
|
47cc083199 | ||
|
|
4550a7e3c2 | ||
|
|
0045db906a | ||
|
|
3e23a943cb | ||
|
|
0f80e2c1c2 | ||
|
|
ac903c6db8 | ||
|
|
ce97e8659b | ||
|
|
bfe190b57c | ||
|
|
71ab4fb685 |
29
.env
Normal file
29
.env
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Base directory for docker-compose
|
||||||
|
DOCKER_DIR=/docker
|
||||||
|
|
||||||
|
# Directory for env files
|
||||||
|
ENV_DIR=/docker/env
|
||||||
|
|
||||||
|
# The IP of this server in the tailscale network
|
||||||
|
DNS_IP=100.111.0.126
|
||||||
|
|
||||||
|
# Time zone
|
||||||
|
TZ=America/Chicago
|
||||||
|
|
||||||
|
# Jellyfin directories
|
||||||
|
JF_MOVIES=/media/jf/movies
|
||||||
|
JF_SHOWS=/media/jf/shows
|
||||||
|
JF_MUSIC=/media/jf/music
|
||||||
|
|
||||||
|
# Immich directories
|
||||||
|
IMMICH_LIBRARY=/media/immich
|
||||||
|
|
||||||
|
# Kiwix directories
|
||||||
|
KIWIX_DIR=/media/kiwix
|
||||||
|
|
||||||
|
# qBittorrent directories
|
||||||
|
QB_EXT_DL=/media/dl
|
||||||
|
|
||||||
|
# Audiobookshelf directories
|
||||||
|
ABS_BOOKS=/media/abs/audiobooks
|
||||||
|
ABS_PODS=/media/abs/podcasts
|
||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
|||||||
*
|
*
|
||||||
!docker-compose.yml
|
!docker-compose.yml
|
||||||
|
!.env
|
||||||
!readme.md
|
!readme.md
|
||||||
|
|||||||
@@ -1,19 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
|
|
||||||
|
|
||||||
#---------------- USER-FACING SERVICES ----------------#
|
#---------------- MEDIA ----------------#
|
||||||
|
|
||||||
## Actual (budget)
|
|
||||||
actual_server:
|
|
||||||
image: docker.io/actualbudget/actual-server:latest
|
|
||||||
container_name: actual
|
|
||||||
ports:
|
|
||||||
- 5006:5006
|
|
||||||
volumes:
|
|
||||||
- /docker/actual:/data
|
|
||||||
dns:
|
|
||||||
- 100.111.0.126
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
## AudioBookShelf (audiobook downloading)
|
## AudioBookShelf (audiobook downloading)
|
||||||
audiobookshelf:
|
audiobookshelf:
|
||||||
@@ -25,12 +13,12 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- 13378:80
|
- 13378:80
|
||||||
volumes:
|
volumes:
|
||||||
- /media/audiobooks:/audiobooks
|
- ${ABS_BOOKS}:/audiobooks
|
||||||
- /media/podcasts:/podcasts
|
- ${ABS_PODS}:/podcasts
|
||||||
- /docker/audiobookshelf/config:/config
|
- ${DOCKER_DIR}/audiobookshelf/config:/config
|
||||||
- /docker/audiobookshelf/metadata:/metadata
|
- ${DOCKER_DIR}/audiobookshelf/metadata:/metadata
|
||||||
dns:
|
dns:
|
||||||
- 100.111.0.126
|
- ${DNS_IP}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
## AudioBookShelf metadata provider
|
## AudioBookShelf metadata provider
|
||||||
abs-tract:
|
abs-tract:
|
||||||
@@ -39,147 +27,127 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- 5585:5555
|
- 5585:5555
|
||||||
dns:
|
dns:
|
||||||
- 100.111.0.126
|
- ${DNS_IP}
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
## Calibre (ebook management)
|
|
||||||
calibre-web:
|
|
||||||
image: lscr.io/linuxserver/calibre-web:latest
|
|
||||||
container_name: calibre-web
|
|
||||||
environment:
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- TZ=America/Chicago
|
|
||||||
- DOCKER_MODS=linuxserver/mods:universal-calibre #optional
|
|
||||||
- OAUTHLIB_RELAX_TOKEN_SCOPE=1 #optional
|
|
||||||
volumes:
|
|
||||||
- /docker/calibre/config:/config
|
|
||||||
- /docker/calibre/books:/books
|
|
||||||
ports:
|
|
||||||
- 8083:8083
|
|
||||||
dns:
|
|
||||||
- 100.111.0.126
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
## Gitea
|
|
||||||
gitea:
|
|
||||||
image: docker.io/gitea/gitea:latest-rootless
|
|
||||||
container_name: gitea
|
|
||||||
user: "1001"
|
|
||||||
volumes:
|
|
||||||
- /docker/gitea/data:/var/lib/gitea
|
|
||||||
- /docker/gitea/config:/etc/gitea
|
|
||||||
- /etc/timezone:/etc/timezone:ro
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
ports:
|
|
||||||
- 3003:3000
|
|
||||||
- 2222:2222
|
|
||||||
dns:
|
|
||||||
- 100.111.0.126
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
## Grocy (home inventory management)
|
|
||||||
grocy:
|
|
||||||
container_name: grocy
|
|
||||||
image: lscr.io/linuxserver/grocy:latest
|
|
||||||
environment:
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- TZ=America/Chicago
|
|
||||||
volumes:
|
|
||||||
- /docker/grocy:/config
|
|
||||||
ports:
|
|
||||||
- 9283:80
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
## Homepage (server dashboard)
|
|
||||||
homepage:
|
|
||||||
image: ghcr.io/gethomepage/homepage:latest
|
|
||||||
container_name: homepage
|
|
||||||
environment:
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
ports:
|
|
||||||
- 3000:3000
|
|
||||||
volumes:
|
|
||||||
- /docker/homepage:/app/config
|
|
||||||
- /docker/homepage/images:/app/public/images
|
|
||||||
- /docker/homepage/fonts:/app/public/fonts
|
|
||||||
- /media:/media:ro
|
|
||||||
dns:
|
|
||||||
- 100.111.0.126
|
|
||||||
restart: unless-stopped
|
|
||||||
docker-proxy:
|
|
||||||
image: ghcr.io/tecnativa/docker-socket-proxy:latest
|
|
||||||
container_name: docker-proxy
|
|
||||||
environment:
|
|
||||||
- CONTAINERS=1 # Allow access to viewing containers
|
|
||||||
- POST=0 # Disallow any POST operations (effectively read-only)
|
|
||||||
ports:
|
|
||||||
- 2375:2375
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
## Immich (photo library management)
|
## Immich (photo library management)
|
||||||
immich-server:
|
immich_server:
|
||||||
container_name: immich_server
|
container_name: immich_server
|
||||||
image: ghcr.io/immich-app/immich-server:v1.123.0
|
image: ghcr.io/immich-app/immich-server:release
|
||||||
volumes:
|
volumes:
|
||||||
- /media/immich:/usr/src/app/upload
|
- ${IMMICH_LIBRARY}:/data
|
||||||
- /docker/immich_db_dump:/db_dump
|
|
||||||
env_file:
|
env_file:
|
||||||
- /docker/env/immich.env
|
- ${ENV_DIR}/immich.env
|
||||||
environment:
|
environment:
|
||||||
|
- TZ=${TZ}
|
||||||
- PUID=1000
|
- PUID=1000
|
||||||
- PGID=1000
|
- PGID=1000
|
||||||
ports:
|
ports:
|
||||||
- 2283:2283
|
- 2283:2283
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- immich_redis
|
||||||
- database
|
- immich_db
|
||||||
devices:
|
devices:
|
||||||
- /dev/dri:/dev/dri
|
- /dev/dri:/dev/dri
|
||||||
dns:
|
dns:
|
||||||
- 100.111.0.126
|
- ${DNS_IP}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
immich-machine-learning:
|
immich-machine-learning:
|
||||||
container_name: immich_machine_learning
|
container_name: immich_machine_learning
|
||||||
image: ghcr.io/immich-app/immich-machine-learning:v1.123.0
|
image: ghcr.io/immich-app/immich-machine-learning:release
|
||||||
volumes:
|
volumes:
|
||||||
- model-cache:/cache
|
- model-cache:/cache
|
||||||
env_file:
|
env_file:
|
||||||
- /docker/env/immich.env
|
- ${ENV_DIR}/immich.env
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
redis:
|
immich_redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3
|
image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
database:
|
immich_db:
|
||||||
container_name: immich_postgres
|
container_name: immich_db
|
||||||
image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
|
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0
|
||||||
env_file:
|
env_file:
|
||||||
- /docker/env/immich.env
|
- ${ENV_DIR}/immich.env
|
||||||
volumes:
|
volumes:
|
||||||
- /docker/immich:/var/lib/postgresql/data
|
- ${DOCKER_DIR}/immich:/var/lib/postgresql/data
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
## Invidious (youtube client)
|
||||||
|
invidious:
|
||||||
|
container_name: invidious
|
||||||
|
image: quay.io/invidious/invidious:latest
|
||||||
|
ports:
|
||||||
|
- 9080:3000
|
||||||
|
env_file:
|
||||||
|
- ${ENV_DIR}/invidious.env
|
||||||
|
healthcheck:
|
||||||
|
test: wget -nv --tries=1 --spider http://127.0.0.1:3000/api/v1/trending || exit 1
|
||||||
|
interval: 30s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 2
|
||||||
|
depends_on:
|
||||||
|
- invidious-db
|
||||||
|
- invidious-companion
|
||||||
|
restart: unless-stopped
|
||||||
|
invidious-companion:
|
||||||
|
container_name: invidious-companion
|
||||||
|
image: quay.io/invidious/invidious-companion:latest
|
||||||
|
logging:
|
||||||
|
options:
|
||||||
|
max-size: "1G"
|
||||||
|
max-file: "4"
|
||||||
|
volumes:
|
||||||
|
- companioncache:/var/tmp/youtubei.js:rw
|
||||||
|
env_file:
|
||||||
|
- ${ENV_DIR}/invidious.env
|
||||||
|
cap_drop:
|
||||||
|
- ALL
|
||||||
|
read_only: true
|
||||||
|
security_opt:
|
||||||
|
- no-new-privileges:true
|
||||||
|
restart: unless-stopped
|
||||||
|
# invidious-sighelper:
|
||||||
|
# container_name: invidious-sighelper
|
||||||
|
# image: quay.io/invidious/inv-sig-helper:latest
|
||||||
|
# init: true
|
||||||
|
# command: ["--tcp", "0.0.0.0:12999"]
|
||||||
|
# ports:
|
||||||
|
# - 12999:12999
|
||||||
|
# environment:
|
||||||
|
# - RUST_LOG=info
|
||||||
|
# cap_drop:
|
||||||
|
# - ALL
|
||||||
|
# read_only: true
|
||||||
|
# security_opt:
|
||||||
|
# - no-new-privileges:true
|
||||||
|
# restart: unless-stopped
|
||||||
|
invidious-db:
|
||||||
|
container_name: invidious-db
|
||||||
|
image: docker.io/library/postgres:14
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/invidious/data:/var/lib/postgresql/data
|
||||||
|
- ${DOCKER_DIR}/invidious/config/sql:/config/sql
|
||||||
|
- ${DOCKER_DIR}/invidious/docker/init-invidious-db.sh:/docker-entrypoint-initdb.d/init-invidious-db.sh
|
||||||
|
env_file:
|
||||||
|
- ${ENV_DIR}/invidious.env
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
## Jellyfin (media server)
|
## Jellyfin (media server)
|
||||||
jellyfin:
|
jellyfin:
|
||||||
image: lscr.io/linuxserver/jellyfin:latest
|
|
||||||
container_name: jellyfin
|
container_name: jellyfin
|
||||||
|
image: lscr.io/linuxserver/jellyfin:10.10.7
|
||||||
environment:
|
environment:
|
||||||
|
- TZ=${TZ}
|
||||||
- PUID=1000
|
- PUID=1000
|
||||||
- PGID=1000
|
- PGID=1000
|
||||||
- TZ=America/Chicago
|
|
||||||
- JELLYFIN_PublishedServerUrl=https://watch.azpsen.com
|
- JELLYFIN_PublishedServerUrl=https://watch.azpsen.com
|
||||||
volumes:
|
volumes:
|
||||||
- /docker/jellyfin:/config
|
- ${DOCKER_DIR}/jellyfin:/config
|
||||||
- /docker/jellyfin/theme:/usr/share/jellyfin/web/theme
|
- ${DOCKER_DIR}/jellyfin/theme:/usr/share/jellyfin/web/theme
|
||||||
- /media/jellyfin/Movies:/data/movies
|
- ${JF_MOVIES}:/data/movies
|
||||||
- /media/jellyfin/TV Shows:/data/tvshows
|
- ${JF_SHOWS}:/data/tvshows
|
||||||
- /media/jellyfin/Music:/data/music
|
- ${JF_MUSIC}:/data/music
|
||||||
- /media/jellyfin/Live TV:/data/livetv
|
|
||||||
ports:
|
ports:
|
||||||
- 8096:8096
|
- 8096:8096
|
||||||
- 7539:7539/udp
|
- 7539:7539/udp
|
||||||
@@ -187,81 +155,181 @@ services:
|
|||||||
devices:
|
devices:
|
||||||
- /dev/dri:/dev/dri
|
- /dev/dri:/dev/dri
|
||||||
dns:
|
dns:
|
||||||
- 100.111.0.126
|
- ${DNS_IP}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
## Joplin (notes)
|
|
||||||
joplin:
|
#---------------- UTILITIES ----------------#
|
||||||
image: joplin/server:latest
|
|
||||||
container_name: joplin
|
## Actual (budget)
|
||||||
|
actual:
|
||||||
|
container_name: actual
|
||||||
|
image: docker.io/actualbudget/actual-server:latest
|
||||||
ports:
|
ports:
|
||||||
- 22300:22300
|
- 5006:5006
|
||||||
env_file:
|
|
||||||
- /docker/env/joplin.env
|
|
||||||
depends_on:
|
|
||||||
- joplin-db
|
|
||||||
dns:
|
|
||||||
- 100.111.0.126
|
|
||||||
restart: unless-stopped
|
|
||||||
joplin-db:
|
|
||||||
image: postgres:15
|
|
||||||
container_name: joplin-db
|
|
||||||
volumes:
|
volumes:
|
||||||
- /docker/joplin:/var/lib/postgresql/data
|
- ${DOCKER_DIR}/actual:/data
|
||||||
|
dns:
|
||||||
|
- ${DNS_IP}
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
## Baikal (calendar/contacts)
|
||||||
|
baikal:
|
||||||
|
container_name: baikal
|
||||||
|
image: ckulka/baikal:nginx
|
||||||
ports:
|
ports:
|
||||||
- 5432:5432
|
- 8391:80
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/baikal/config:/var/www/baikal/config
|
||||||
|
- ${DOCKER_DIR}/baikal/data:/var/www/baikal/Specific
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
## Backrest (backup GUI)
|
||||||
|
backrest:
|
||||||
|
container_name: backrest
|
||||||
|
image: garethgeorge/backrest:latest
|
||||||
|
hostname: backrest
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/backrest/data:/data
|
||||||
|
- ${DOCKER_DIR}/backrest/config:/config
|
||||||
|
- ${DOCKER_DIR}/backrest/cache:/cache
|
||||||
|
- ${DOCKER_DIR}/backrest/tmp:/tmp
|
||||||
|
- ${DOCKER_DIR}:/userdata/docker
|
||||||
|
- ${IMMICH_LIBRARY}:/userdata/immich
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_PASSWORD=d8t3nmcj3
|
- BACKREST_DATA=/data
|
||||||
- POSTGRES_USER=april
|
- BACKREST_CONFIG=/config/config.json
|
||||||
- POSTGRES_DB=joplin
|
- XDG_CACHE_HOME=/cache
|
||||||
|
- TMPDIR=/tmp
|
||||||
|
- TZ=${TZ}
|
||||||
|
dns:
|
||||||
|
- ${DNS_IP}
|
||||||
|
network_mode: host
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
## ConvertX (file converter)
|
||||||
|
convertx:
|
||||||
|
container_name: convertx
|
||||||
|
image: ghcr.io/c4illin/convertx
|
||||||
|
ports:
|
||||||
|
- 9132:3000
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/convertx:/app/data
|
||||||
|
env_file:
|
||||||
|
- ${ENV_DIR}/convertx.env
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
## Gitea
|
||||||
|
gitea:
|
||||||
|
container_name: gitea
|
||||||
|
image: docker.io/gitea/gitea:latest-rootless
|
||||||
|
user: "1001"
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/gitea/data:/var/lib/gitea
|
||||||
|
- ${DOCKER_DIR}/gitea/config:/etc/gitea
|
||||||
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
ports:
|
||||||
|
- 3003:3000
|
||||||
|
- 2222:2222
|
||||||
|
dns:
|
||||||
|
- ${DNS_IP}
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
## IT Tools (misc utilities)
|
||||||
|
it-tools:
|
||||||
|
container_name: it-tools
|
||||||
|
image: corentinth/it-tools:latest
|
||||||
|
ports:
|
||||||
|
- 5734:80
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
## Kiwix (offline wiki)
|
## Kiwix (offline wiki)
|
||||||
kiwix-serve:
|
kiwix-serve:
|
||||||
image: ghcr.io/kiwix/kiwix-serve
|
|
||||||
container_name: kiwix-serve
|
container_name: kiwix-serve
|
||||||
|
image: ghcr.io/kiwix/kiwix-serve
|
||||||
volumes:
|
volumes:
|
||||||
- /media/kiwix:/data
|
- ${KIWIX_DIR}:/data
|
||||||
ports:
|
ports:
|
||||||
- 8765:8080
|
- 8765:8080
|
||||||
command: '*.zim'
|
command: '*.zim'
|
||||||
|
dns:
|
||||||
|
- ${DNS_IP}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
## Link Stack
|
## LubeLogger (car mileage tracker)
|
||||||
linkstack:
|
lubelogger:
|
||||||
image: linkstackorg/linkstack
|
container_name: lubelogger
|
||||||
container_name: linkstack
|
image: ghcr.io/hargata/lubelogger:latest
|
||||||
env_file:
|
|
||||||
- /docker/env/linkstack.env
|
|
||||||
ports:
|
|
||||||
- 4000:80
|
|
||||||
dns:
|
|
||||||
- 100.111.0.126
|
|
||||||
volumes:
|
volumes:
|
||||||
- linkstack:/htdocs
|
- ${DOCKER_DIR}/lubelogger/data:/App/data
|
||||||
|
- ${DOCKER_DIR}/lubelogger/keys:/root/.aspnet/DataProtection-Keys
|
||||||
|
ports:
|
||||||
|
- 8103:8080
|
||||||
|
env_file:
|
||||||
|
- ${ENV_DIR}/lubelogger.env
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
## Maloja (music listen tracking)
|
||||||
|
maloja:
|
||||||
|
container_name: maloja
|
||||||
|
image: krateng/maloja
|
||||||
|
ports:
|
||||||
|
- 42010:42010
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/maloja:/mljdata
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- MALOJA_DATA_DIRECTORY=/mljdata
|
||||||
|
dns:
|
||||||
|
- ${DNS_IP}
|
||||||
|
restart: unless-stopped
|
||||||
|
multi-scrobbler:
|
||||||
|
container_name: multi-scrobbler
|
||||||
|
image: foxxmd/multi-scrobbler
|
||||||
|
env_file:
|
||||||
|
- ${ENV_DIR}/scrobbler.env
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/scrobbler:/config
|
||||||
|
ports:
|
||||||
|
- 9078:9078
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
## Memos (simple note app)
|
||||||
|
memos:
|
||||||
|
container_name: memos
|
||||||
|
image: neosmemo/memos:stable
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/memos:/var/opt/memos
|
||||||
|
ports:
|
||||||
|
- 5230:5230
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
## Miniflux (rss feed reader)
|
## Miniflux (rss feed reader)
|
||||||
miniflux:
|
miniflux:
|
||||||
image: miniflux/miniflux:latest
|
|
||||||
container_name: miniflux
|
container_name: miniflux
|
||||||
|
image: miniflux/miniflux:latest
|
||||||
ports:
|
ports:
|
||||||
- 8772:8080
|
- 8772:8080
|
||||||
depends_on:
|
depends_on:
|
||||||
rss_db:
|
rss_db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
env_file:
|
env_file:
|
||||||
- /docker/env/miniflux.env
|
- ${ENV_DIR}/miniflux.env
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "/usr/bin/miniflux", "-healthcheck", "auto"]
|
test: ["CMD", "/usr/bin/miniflux", "-healthcheck", "auto"]
|
||||||
dns:
|
dns:
|
||||||
- 100.111.0.126
|
- ${DNS_IP}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
rss_db:
|
rss_db:
|
||||||
image: postgres:15
|
|
||||||
container_name: rss_db
|
container_name: rss_db
|
||||||
|
image: postgres:15
|
||||||
env_file:
|
env_file:
|
||||||
- /docker/env/miniflux.env
|
- ${ENV_DIR}/miniflux.env
|
||||||
volumes:
|
volumes:
|
||||||
- miniflux-db:/var/lib/postgresql/data
|
- miniflux-db:/var/lib/postgresql/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@@ -272,8 +340,8 @@ services:
|
|||||||
|
|
||||||
## Paperless (document management)
|
## Paperless (document management)
|
||||||
paperless:
|
paperless:
|
||||||
image: ghcr.io/paperless-ngx/paperless-ngx:latest
|
|
||||||
container_name: paperless
|
container_name: paperless
|
||||||
|
image: ghcr.io/paperless-ngx/paperless-ngx:latest
|
||||||
user: 1000:1000
|
user: 1000:1000
|
||||||
depends_on:
|
depends_on:
|
||||||
- paperless_broker
|
- paperless_broker
|
||||||
@@ -282,77 +350,236 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- paperless-data:/usr/src/paperless/data
|
- paperless-data:/usr/src/paperless/data
|
||||||
- paperless-media:/usr/src/paperless/media
|
- paperless-media:/usr/src/paperless/media
|
||||||
- /docker/paperless/export:/usr/src/paperless/export
|
- ${DOCKER_DIR}/paperless/export:/usr/src/paperless/export
|
||||||
- /docker/paperless/consume:/usr/src/paperless/consume
|
- ${DOCKER_DIR}/paperless/consume:/usr/src/paperless/consume
|
||||||
env_file:
|
env_file:
|
||||||
- /docker/env/paperless.env
|
- ${ENV_DIR}/paperless.env
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
paperless_broker:
|
paperless_broker:
|
||||||
image: docker.io/library/redis:7
|
|
||||||
container_name: paperless_broker
|
container_name: paperless_broker
|
||||||
|
image: docker.io/library/redis:7
|
||||||
volumes:
|
volumes:
|
||||||
- redis-data:/data
|
- redis-data:/data
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
|
## PicoShare (file sharing tool)
|
||||||
|
picoshare:
|
||||||
|
container_name: picoshare
|
||||||
|
image: mtlynch/picoshare
|
||||||
|
env_file:
|
||||||
|
- ${ENV_DIR}/picoshare.env
|
||||||
|
ports:
|
||||||
|
- 4001:4001
|
||||||
|
command: -db /data/store.db
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/picoshare:/data
|
||||||
|
dns:
|
||||||
|
- ${DNS_IP}
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
## SeaFile (cloud drive)
|
||||||
|
seafile:
|
||||||
|
container_name: seafile
|
||||||
|
image: seafileltd/seafile-mc:11.0-latest
|
||||||
|
ports:
|
||||||
|
- 8623:80
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/seafile/data:/shared
|
||||||
|
env_file:
|
||||||
|
- ${ENV_DIR}/seafile.env
|
||||||
|
environment:
|
||||||
|
- TIME_ZONE=${TZ}
|
||||||
|
depends_on:
|
||||||
|
- seafile_db
|
||||||
|
- seafile_cache
|
||||||
|
restart: unless-stopped
|
||||||
|
seafile_db:
|
||||||
|
container_name: seafile-mysql
|
||||||
|
image: mariadb:10.11
|
||||||
|
env_file:
|
||||||
|
- ${ENV_DIR}/seafile.env
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/seafile/db:/var/lib/mysql
|
||||||
|
restart: unless-stopped
|
||||||
|
seafile_cache:
|
||||||
|
container_name: seafile_cache
|
||||||
|
image: memcached:1.6.18
|
||||||
|
entrypoint: memcached -m 256
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
## Stirling PDF (pdf utilities)
|
||||||
|
stirling-pdf:
|
||||||
|
container_name: stirling-pdf
|
||||||
|
image: docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest
|
||||||
|
ports:
|
||||||
|
- 8710:8080
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/stirlingpdf/trainingData:/usr/share/tessdata
|
||||||
|
- ${DOCKER_DIR}/stirlingpdf/extraConfigs:/configs
|
||||||
|
- ${DOCKER_DIR}/stirlingpdf/customFiles:/customFiles/
|
||||||
|
- ${DOCKER_DIR}/stirlingpdf/logs:/logs/
|
||||||
|
- ${DOCKER_DIR}/stirlingpdf/pipeline:/pipeline/
|
||||||
|
environment:
|
||||||
|
- TZ=${TZ}
|
||||||
|
- DOCKER_ENABLE_SECURITY=false
|
||||||
|
- LANGS=en_US
|
||||||
|
- DOCKER_ENABLE_SECURITY=true
|
||||||
|
- SECURITY_ENABLELOGIN=true
|
||||||
|
- SECURITY_CSRFDISABLED=false
|
||||||
|
- SECURITY_INITIALLOGIN_USERNAME=april
|
||||||
|
- SECURITY_INITIALLOGIN_PASSWORD="qYoK!FVom%bpg24Xd$@g"
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
## Tandoor (recipe management)
|
## Tandoor (recipe management)
|
||||||
tandoor:
|
tandoor:
|
||||||
container_name: tandoor
|
container_name: tandoor
|
||||||
image: vabene1111/recipes
|
image: vabene1111/recipes
|
||||||
user: 1000:1000
|
user: 1000:1000
|
||||||
env_file:
|
env_file:
|
||||||
- /docker/env/tandoor.env
|
- ${ENV_DIR}/tandoor.env
|
||||||
volumes:
|
volumes:
|
||||||
- tandoor-server-config:/opt/recipes/nginx/conf.d
|
- tandoor-server-config:/opt/recipes/nginx/conf.d
|
||||||
- /docker/tandoor/static:/opt/recipes/staticfiles
|
- ${DOCKER_DIR}/tandoor/static:/opt/recipes/staticfiles
|
||||||
- /docker/tandoor/media:/opt/recipes/mediafiles
|
- ${DOCKER_DIR}/tandoor/media:/opt/recipes/mediafiles
|
||||||
depends_on:
|
depends_on:
|
||||||
- tandoor-db
|
- tandoor-db
|
||||||
dns:
|
dns:
|
||||||
- 100.111.0.126
|
- ${DNS_IP}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
tandoor-server:
|
tandoor-server:
|
||||||
image: nginx:mainline-alpine
|
|
||||||
container_name: tandoor-server
|
container_name: tandoor-server
|
||||||
|
image: nginx:mainline-alpine
|
||||||
ports:
|
ports:
|
||||||
- 8554:80
|
- 8554:80
|
||||||
env_file:
|
env_file:
|
||||||
- /docker/env/tandoor.env
|
- ${ENV_DIR}/tandoor.env
|
||||||
volumes:
|
volumes:
|
||||||
- tandoor-server-config:/etc/nginx/conf.d:ro
|
- tandoor-server-config:/etc/nginx/conf.d:ro
|
||||||
- /docker/tandoor/static:/static:ro
|
- ${DOCKER_DIR}/tandoor/static:/static:ro
|
||||||
- /docker/tandoor/media:/media:ro
|
- ${DOCKER_DIR}/tandoor/media:/media:ro
|
||||||
depends_on:
|
depends_on:
|
||||||
- tandoor
|
- tandoor
|
||||||
dns:
|
dns:
|
||||||
- 100.111.0.126
|
- ${DNS_IP}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
tandoor-db:
|
tandoor-db:
|
||||||
container_name: tandoor-db
|
container_name: tandoor-db
|
||||||
image: postgres:16-alpine
|
image: postgres:16-alpine
|
||||||
user: 1000:1000
|
user: 1000:1000
|
||||||
env_file:
|
env_file:
|
||||||
- /docker/env/tandoor.env
|
- ${ENV_DIR}/tandoor.env
|
||||||
volumes:
|
volumes:
|
||||||
- /docker/tandoor/postgresql:/var/lib/postgresql/data
|
- ${DOCKER_DIR}/tandoor/postgresql:/var/lib/postgresql/data
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
## TinyHome (server dashboard)
|
||||||
|
tinyhome:
|
||||||
|
container_name: tinyhome
|
||||||
|
image: azpsen/tinyhome:main
|
||||||
|
environment:
|
||||||
|
- REFRESH_INTERVAL=360
|
||||||
|
ports:
|
||||||
|
- 3000:80
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/tinyhome:/config:rw
|
||||||
|
dns:
|
||||||
|
- ${DNS_IP}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
## Vaultwarden (password manager)
|
## Vaultwarden (password manager)
|
||||||
vaultwarden:
|
vaultwarden:
|
||||||
image: vaultwarden/server:latest
|
|
||||||
container_name: vaultwarden
|
container_name: vaultwarden
|
||||||
|
image: vaultwarden/server:latest
|
||||||
env_file:
|
env_file:
|
||||||
- /docker/env/vaultwarden.env
|
- ${ENV_DIR}/vaultwarden.env
|
||||||
volumes:
|
volumes:
|
||||||
- /docker/vaultwarden:/data
|
- ${DOCKER_DIR}/vaultwarden:/data
|
||||||
ports:
|
ports:
|
||||||
- 8912:80
|
- 8912:80
|
||||||
dns:
|
dns:
|
||||||
- 100.111.0.126
|
- ${DNS_IP}
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
## Wallabag (bookmark manager)
|
||||||
|
wallabag:
|
||||||
|
container_name: wallabag
|
||||||
|
image: wallabag/wallabag
|
||||||
|
env_file:
|
||||||
|
- ${ENV_DIR}/wallabag.env
|
||||||
|
ports:
|
||||||
|
- 5438:80
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/wallabag/images:/var/www/wallabag/web/assets/images
|
||||||
|
- ${DOCKER_DIR}/wallabag/data:/var/www/wallabag/data
|
||||||
|
dns:
|
||||||
|
- ${DNS_IP}
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
## Personal Website
|
||||||
|
webserver:
|
||||||
|
container_name: azpsen
|
||||||
|
image: lipanski/docker-static-website:latest
|
||||||
|
ports:
|
||||||
|
- 4000:3000
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/azpsen/static:/home/static
|
||||||
|
- ${DOCKER_DIR}/azpsen/httpd.conf:/home/static/httpd.conf:ro
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
## Wizarr (jellyfin invites)
|
||||||
|
wizarr:
|
||||||
|
container_name: wizarr
|
||||||
|
image: ghcr.io/wizarrrr/wizarr:latest
|
||||||
|
ports:
|
||||||
|
- 5690:5690
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/wizarr/database:/data/database
|
||||||
|
dns:
|
||||||
|
- ${DNS_IP}
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
## Workout Tracker
|
||||||
|
workout-tracker:
|
||||||
|
container_name: workout-tracker
|
||||||
|
image: ghcr.io/jovandeginste/workout-tracker:master
|
||||||
|
ports:
|
||||||
|
# Host Port:Container Port
|
||||||
|
- 5021:8080
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/workout-tracker:/data
|
||||||
|
env_file:
|
||||||
|
- ${ENV_DIR}/workout-tracker.env
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#---------------- MONITORING ----------------#
|
#---------------- MONITORING ----------------#
|
||||||
|
|
||||||
|
|
||||||
|
## Beszel (system monitoring)
|
||||||
|
beszel:
|
||||||
|
container_name: beszel
|
||||||
|
image: henrygd/beszel
|
||||||
|
env_file:
|
||||||
|
- ${ENV_DIR}/beszel.env
|
||||||
|
ports:
|
||||||
|
- 2493:8090
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/beszel/data:/beszel_data
|
||||||
|
- ${DOCKER_DIR}/beszel/socket:/beszel_socket
|
||||||
|
restart: unless-stopped
|
||||||
|
beszel-agent:
|
||||||
|
container_name: beszel-agent
|
||||||
|
image: henrygd/beszel-agent:latest
|
||||||
|
env_file:
|
||||||
|
- ${ENV_DIR}/beszel.env
|
||||||
|
volumes:
|
||||||
|
- ${DOCKER_DIR}/beszel/socket:/beszel_socket
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
- /media:/extra-filesystems/media:ro
|
||||||
|
network_mode: host
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
## Dozzle (docker logs)
|
## Dozzle (docker logs)
|
||||||
dozzle:
|
dozzle:
|
||||||
container_name: dozzle
|
container_name: dozzle
|
||||||
@@ -363,23 +590,6 @@ services:
|
|||||||
- 9999:8080
|
- 9999:8080
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
## Glances (system monitor)
|
|
||||||
glances:
|
|
||||||
image: nicolargo/glances:latest
|
|
||||||
container_name: glances
|
|
||||||
pid: host
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- /:/glances/root:ro
|
|
||||||
environment:
|
|
||||||
- "GLANCES_OPT=-w"
|
|
||||||
ports:
|
|
||||||
- 61208:61208
|
|
||||||
secrets:
|
|
||||||
- source: glances_password
|
|
||||||
target: /root/.config/glances/glances.pwd
|
|
||||||
restart: unless-stopped
|
|
||||||
|
|
||||||
## Scrutiny (disk health monitoring)
|
## Scrutiny (disk health monitoring)
|
||||||
scrutiny:
|
scrutiny:
|
||||||
container_name: scrutiny
|
container_name: scrutiny
|
||||||
@@ -391,8 +601,8 @@ services:
|
|||||||
- 8086:8086
|
- 8086:8086
|
||||||
volumes:
|
volumes:
|
||||||
- /run/udev:/run/udev:ro
|
- /run/udev:/run/udev:ro
|
||||||
- /docker/scrutiny/config:/opt/scrutiny/config
|
- ${DOCKER_DIR}/scrutiny/config:/opt/scrutiny/config
|
||||||
- /docker/scrutiny/influxdb:/opt/scrutiny/influxdb
|
- ${DOCKER_DIR}/scrutiny/influxdb:/opt/scrutiny/influxdb
|
||||||
devices:
|
devices:
|
||||||
- /dev/sda:/dev/sda
|
- /dev/sda:/dev/sda
|
||||||
- /dev/sdb:/dev/sdb
|
- /dev/sdb:/dev/sdb
|
||||||
@@ -400,19 +610,16 @@ services:
|
|||||||
- /dev/sdd:/dev/sdd
|
- /dev/sdd:/dev/sdd
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
## Speedtest Tracker
|
## MySpeed (internet speed tracker)
|
||||||
speedtest-tracker:
|
myspeed:
|
||||||
image: lscr.io/linuxserver/speedtest-tracker:latest
|
container_name: myspeed
|
||||||
container_name: speedtest-tracker
|
image: germannewsmaker/myspeed
|
||||||
ports:
|
|
||||||
- 8465:80
|
|
||||||
- 8466:443
|
|
||||||
env_file:
|
|
||||||
- /docker/env/speedtest.env
|
|
||||||
volumes:
|
volumes:
|
||||||
- /docker/speedtest-tracker:/config
|
- ${DOCKER_DIR}/myspeed:/myspeed/data
|
||||||
|
ports:
|
||||||
|
- 5216:5216
|
||||||
dns:
|
dns:
|
||||||
- 100.111.0.126
|
- ${DNS_IP}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
|
|
||||||
@@ -420,38 +627,30 @@ services:
|
|||||||
|
|
||||||
## AdGuard Home (ad-blocking dns provider)
|
## AdGuard Home (ad-blocking dns provider)
|
||||||
adguard:
|
adguard:
|
||||||
image: adguard/adguardhome
|
|
||||||
container_name: adguard
|
container_name: adguard
|
||||||
|
image: adguard/adguardhome
|
||||||
network_mode: host
|
network_mode: host
|
||||||
ports:
|
|
||||||
- 53:53/tcp
|
|
||||||
- 53:53/udp
|
|
||||||
- 784:784/udp
|
|
||||||
- 853:853/tcp
|
|
||||||
- 3000:3000/tcp
|
|
||||||
- 80:80/tcp
|
|
||||||
- 443:443/tcp
|
|
||||||
volumes:
|
volumes:
|
||||||
- /docker/adguard/working:/opt/adguardhome/work
|
- ${DOCKER_DIR}/adguard/working:/opt/adguardhome/work
|
||||||
- /docker/adguard/conf:/opt/adguardhome/conf
|
- ${DOCKER_DIR}/adguard/conf:/opt/adguardhome/conf
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
## Cloudflared (tunnel service for outside web access)
|
## Cloudflared (tunnel service for outside web access)
|
||||||
cloudflared:
|
cloudflared:
|
||||||
container_name: cloudflared
|
container_name: cloudflared
|
||||||
image: cloudflare/cloudflared:latest
|
image: cloudflare/cloudflared:latest
|
||||||
network_mode: "host"
|
network_mode: host
|
||||||
volumes:
|
volumes:
|
||||||
- /docker/cloudflared:/etc/cloudflared
|
- ${DOCKER_DIR}/cloudflared:/etc/cloudflared
|
||||||
command: tunnel --no-autoupdate run
|
command: tunnel --no-autoupdate run
|
||||||
env_file:
|
env_file:
|
||||||
- /docker/env/cloudflared.env
|
- ${ENV_DIR}/cloudflared.env
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
## Gluetun (vpn connector)
|
## Gluetun (vpn connector)
|
||||||
gluetun:
|
gluetun:
|
||||||
image: qmcgaw/gluetun:latest
|
|
||||||
container_name: gluetun
|
container_name: gluetun
|
||||||
|
image: qmcgaw/gluetun:latest
|
||||||
hostname: gluetun
|
hostname: gluetun
|
||||||
cap_add:
|
cap_add:
|
||||||
- NET_ADMIN
|
- NET_ADMIN
|
||||||
@@ -470,12 +669,12 @@ services:
|
|||||||
- 8989:8989 # Radarr
|
- 8989:8989 # Radarr
|
||||||
- 7878:7878 # Sonarr
|
- 7878:7878 # Sonarr
|
||||||
volumes:
|
volumes:
|
||||||
- /docker/gluetun:/gluetun
|
- ${DOCKER_DIR}/gluetun:/gluetun
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
devices:
|
devices:
|
||||||
- /dev/net/tun:/dev/net/tun
|
- /dev/net/tun:/dev/net/tun
|
||||||
env_file:
|
env_file:
|
||||||
- /docker/env/gluetun.env
|
- ${ENV_DIR}/gluetun.env
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
|
|
||||||
@@ -483,96 +682,93 @@ services:
|
|||||||
|
|
||||||
## Bazarr (subtitle downloading)
|
## Bazarr (subtitle downloading)
|
||||||
bazarr:
|
bazarr:
|
||||||
image: lscr.io/linuxserver/bazarr:latest
|
|
||||||
container_name: bazarr
|
container_name: bazarr
|
||||||
|
image: lscr.io/linuxserver/bazarr:latest
|
||||||
environment:
|
environment:
|
||||||
- puid=1000
|
- PUID=1000
|
||||||
- pgid=1000
|
- PGID=1000
|
||||||
- tz=america/chicago
|
- TZ=${TZ}
|
||||||
volumes:
|
volumes:
|
||||||
- /docker/bazarr:/config
|
- ${DOCKER_DIR}/bazarr:/config
|
||||||
- /media/jellyfin/movies:/movies
|
- ${JF_MOVIES}:/movies
|
||||||
- /media/jellyfin/tv shows:/tv
|
- ${JF_SHOWS}:/tv
|
||||||
ports:
|
ports:
|
||||||
- 6767:6767
|
- 6767:6767
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
## Prowlarr (torrent indexer management)
|
## Prowlarr (torrent indexer management)
|
||||||
prowlarr:
|
prowlarr:
|
||||||
image: ghcr.io/linuxserver/prowlarr:nightly
|
|
||||||
container_name: prowlarr
|
container_name: prowlarr
|
||||||
|
image: ghcr.io/linuxserver/prowlarr:nightly
|
||||||
network_mode: "service:gluetun"
|
network_mode: "service:gluetun"
|
||||||
environment:
|
environment:
|
||||||
|
- TZ=${TZ}
|
||||||
- PUID=1000
|
- PUID=1000
|
||||||
- PGID=1000
|
- PGID=1000
|
||||||
- TZ=America/Chicago
|
|
||||||
volumes:
|
volumes:
|
||||||
- /docker/prowlarr:/config
|
- ${DOCKER_DIR}/prowlarr:/config
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
## QBittorrent (torrent client)
|
## QBittorrent (torrent client)
|
||||||
qbittorrent:
|
qbittorrent:
|
||||||
image: ghcr.io/linuxserver/qbittorrent:latest
|
|
||||||
container_name: qbittorrent
|
container_name: qbittorrent
|
||||||
|
image: ghcr.io/linuxserver/qbittorrent:latest
|
||||||
network_mode: "service:gluetun"
|
network_mode: "service:gluetun"
|
||||||
environment:
|
environment:
|
||||||
|
- TZ=${TZ}
|
||||||
- PUID=1000
|
- PUID=1000
|
||||||
- PGID=1000
|
- PGID=1000
|
||||||
- TZ=America/Chicago
|
|
||||||
- WEBUI_PORT=8080
|
- WEBUI_PORT=8080
|
||||||
volumes:
|
volumes:
|
||||||
- /docker/qbittorrent/config:/config
|
- ${DOCKER_DIR}/qbittorrent/config:/config
|
||||||
- /docker/qbittorrent/downloads:/downloads
|
- ${DOCKER_DIR}/qbittorrent/downloads:/downloads
|
||||||
- /media/downloads:/ext_dl
|
- ${QB_EXT_DL}:/ext_dl
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
## Radarr (movie downloading)
|
## Radarr (movie downloading)
|
||||||
radarr:
|
radarr:
|
||||||
image: ghcr.io/linuxserver/radarr:latest
|
|
||||||
container_name: radarr
|
container_name: radarr
|
||||||
|
image: ghcr.io/linuxserver/radarr:latest
|
||||||
network_mode: "service:gluetun"
|
network_mode: "service:gluetun"
|
||||||
environment:
|
environment:
|
||||||
|
- TZ=${TZ}
|
||||||
- PUID=1000
|
- PUID=1000
|
||||||
- PGID=1000
|
- PGID=1000
|
||||||
- TZ=America/Chicago
|
|
||||||
volumes:
|
volumes:
|
||||||
- /docker/radarr:/config
|
- ${DOCKER_DIR}/radarr:/config
|
||||||
- /media/jellyfin/Movies:/Movies #optional
|
- ${JF_MOVIES}:/Movies #optional
|
||||||
- /docker/qbittorrent/downloads:/downloads #optional
|
- ${DOCKER_DIR}/qbittorrent/downloads:/downloads #optional
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
## Sonarr (tv show downloading)
|
## Sonarr (tv show downloading)
|
||||||
sonarr:
|
sonarr:
|
||||||
image: ghcr.io/linuxserver/sonarr:latest
|
|
||||||
container_name: sonarr
|
container_name: sonarr
|
||||||
|
image: ghcr.io/linuxserver/sonarr:latest
|
||||||
network_mode: "service:gluetun"
|
network_mode: "service:gluetun"
|
||||||
environment:
|
environment:
|
||||||
|
- TZ=${TZ}
|
||||||
- PUID=1000
|
- PUID=1000
|
||||||
- PGID=1000
|
- PGID=1000
|
||||||
- TZ=America/Chicago
|
|
||||||
- DOCKER_MODS=ghcr.io/gilbn/theme.park:sonarr
|
- DOCKER_MODS=ghcr.io/gilbn/theme.park:sonarr
|
||||||
- TP_ADDON=sonarr-darker
|
- TP_ADDON=sonarr-darker
|
||||||
- TP_THEME=dark
|
- TP_THEME=dark
|
||||||
volumes:
|
volumes:
|
||||||
- /docker/sonarr:/config
|
- ${DOCKER_DIR}/sonarr:/config
|
||||||
- /media/jellyfin/TV Shows:/TV Shows
|
- ${JF_SHOWS}:/TV Shows
|
||||||
- /docker/qbittorrent/downloads:/downloads
|
- ${DOCKER_DIR}/qbittorrent/downloads:/downloads
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
|
|
||||||
#---------------- DOCKER ----------------#
|
#---------------- DOCKER ----------------#
|
||||||
|
|
||||||
secrets:
|
|
||||||
glances_password:
|
|
||||||
file: /docker/secrets/glances_password
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
|
companioncache:
|
||||||
|
hoarder:
|
||||||
|
meilisearch:
|
||||||
model-cache:
|
model-cache:
|
||||||
miniflux-db:
|
miniflux-db:
|
||||||
paperless-data:
|
paperless-data:
|
||||||
paperless-media:
|
paperless-media:
|
||||||
redis-data:
|
redis-data:
|
||||||
tandoor-server-config:
|
tandoor-server-config:
|
||||||
joplindb:
|
|
||||||
linkstack:
|
|
||||||
|
|
||||||
|
|||||||
253
readme.md
253
readme.md
@@ -14,57 +14,69 @@ I have a dedicated home server that I run a lot of services on. This repo has my
|
|||||||
|
|
||||||
These are all the services hosted, what they are for, and any clients I use with them, in alphabetical order.
|
These are all the services hosted, what they are for, and any clients I use with them, in alphabetical order.
|
||||||
|
|
||||||
### User-Facing Services
|
### Media
|
||||||
|
|
||||||
- [Actual Budget](https://actualbudget.org/) - Excellent budgeting app. It can be automatically synced with your bank ([SimpleFIN Bridge](https://beta-bridge.simplefin.org/) for US banks, $15/year), but I have found that to be unstable
|
- [Audiobookshelf](https://www.audiobookshelf.org/) - Audiobook, ebook, and podcast server
|
||||||
- There used to be an official app but it has been discontinued - I added the website to my phone's home screen and it works quite well
|
|
||||||
- [AudioBookShelf](https://www.audiobookshelf.org/) - Audiobook server
|
|
||||||
- The official mobile client works great
|
- The official mobile client works great
|
||||||
- [Calibre Web](https://github.com/janeczku/calibre-web) - Ebook management
|
|
||||||
- [Yomu](https://www.yomu-reader.com/) for iOS is nice and minimal and supports OPDS for use with Calibre Web
|
|
||||||
- [Gitea](https://about.gitea.com/) - Git server - in the process of replacing my GitHub account
|
|
||||||
- [Grocy](https://github.com/grocy/grocy) - Household management (Am I out of milk? Do I have AAA batteries? What can I make for dinner?)
|
|
||||||
- [iOS Client](https://apps.apple.com/us/app/grocy-mobile/id1567803209)
|
|
||||||
- [Homepage](https://gethomepage.dev/) - My default new tab page - has info and stats about all my services plus links
|
|
||||||
- [Immich](https://immich.app/) - Photo and video management
|
- [Immich](https://immich.app/) - Photo and video management
|
||||||
- Their official mobile apps are quite good
|
- Their official mobile apps are quite good
|
||||||
- [Jellyfin](https://jellyfin.org) - Media server for movies, TV shows, and music
|
- [Jellyfin](https://jellyfin.org) - Media server for movies, TV shows, and music
|
||||||
- [Feishin](https://github.com/jeffvli/feishin) - Desktop music client (soon to be replaced by [audioling](https://github.com/audioling/audioling))
|
- [Feishin](https://github.com/jeffvli/feishin) - Desktop music client
|
||||||
- [Finamp](https://github.com/jmshrv/finamp) - Mobile music client
|
- [Finamp](https://github.com/jmshrv/finamp) - Mobile music client
|
||||||
- For other devices (desktop, mobile, Roku/Android TV) I use either the web app or the official Jellyfin client
|
- For other devices (desktop, mobile, Roku/Android TV) I use either the web app or the official Jellyfin client
|
||||||
- [Joplin](https://joplinapp.org/) - Notes (Obsidian alternative)
|
|
||||||
|
### Utilities
|
||||||
|
|
||||||
|
- [Actual Budget](https://actualbudget.org/) - Excellent budgeting app. It can be automatically synced with your bank ([SimpleFIN Bridge](https://beta-bridge.simplefin.org/) for US banks, $15/year), but I have found that to be unstable
|
||||||
|
- There used to be an official app but it has been discontinued - I added the website to my phone's home screen and it works quite well
|
||||||
|
- [Baikal](https://sabre.io/baikal/) - Calendar/contacts
|
||||||
|
- [Backrest](https://github.com/garethgeorge/backrest) - UI to manage backups (sent to a Raspberry Pi 5 running [restic](https://restic.net/))
|
||||||
|
- [ConvertX](https://github.com/C4illin/ConvertX) - File conversion utility
|
||||||
|
- [Gitea](https://about.gitea.com/) - Git server - in the process of replacing my GitHub account
|
||||||
|
- [Wallabag](https://wallabag.org/) - Bookmark tool for links, pictures, notes, etc.
|
||||||
|
- [IT Tools](https://github.com/CorentinTh/it-tools) - Collection of random useful development/IT utilities
|
||||||
- [Kiwix](https://kiwix.org/en/) - Offline wiki hosting - I have Wikipedia, the Arch Linux wiki, and several others downloaded
|
- [Kiwix](https://kiwix.org/en/) - Offline wiki hosting - I have Wikipedia, the Arch Linux wiki, and several others downloaded
|
||||||
- [LinkStack](https://linkstack.org/) - Self-hosted LinkTree alternative ([azpsen.com](https://azpsen.com)) - more for content creators, definitely overkill for what I need. I'll probably replace it with a simple static site at some point
|
- [LubeLogger](https://lubelogger.com/) - Car mileage and service tracker
|
||||||
|
- [Maloja](https://github.com/krateng/maloja) - Self-hosted music listen tracker (last.fm replacement) - with [multi-scrobbler](https://github.com/FoxxMD/multi-scrobbler) for Jellyfin support
|
||||||
|
- [Memos](https://github.com/usememos/memos) - Super simple note/list/todo/memo app
|
||||||
- [Miniflux](https://miniflux.app/) - Minimalist RSS feed reader
|
- [Miniflux](https://miniflux.app/) - Minimalist RSS feed reader
|
||||||
- [NetNewsWire](https://netnewswire.com/) - Wonderful all-purpose iOS RSS client
|
- [Capy Reader](https://github.com/jocmp/capyreader) - Android RSS client
|
||||||
- [Paperless-ngx](https://docs.paperless-ngx.com/) - Document management system for legal documents, IDs, bank statements, etc.
|
- [Paperless-ngx](https://docs.paperless-ngx.com/) - Document management system for legal documents, IDs, bank statements, etc.
|
||||||
- [Swift Paperless](https://github.com/paulgessinger/swift-paperless) - iOS client
|
- [PicoShare](https://github.com/picocss/pico) - Super simple file sharing tool
|
||||||
|
- [Seafile](https://www.seafile.com/en/home/) - Cloud drive
|
||||||
|
- [Static Webserver](https://github.com/lipanski/docker-static-website) - Simple Docker container with BusyBox to serve my personal website ([azpsen.com](https://azpsen.com))
|
||||||
|
- [Stirling PDF](https://www.stirlingpdf.com/) - PDF tools for viewing, editing, converting, and everything else
|
||||||
- [Tandoor](https://tandoor.dev/) - Recipe management, so I always know which zucchine muffin recipe is the good one
|
- [Tandoor](https://tandoor.dev/) - Recipe management, so I always know which zucchine muffin recipe is the good one
|
||||||
- [Untare](https://github.com/phantomate/Untare) - Mobile client (discontinued but it still works for now)
|
- [Tinyhome](https://github.com/bderenzo/tinyhome) - Static new tab page set up with links to all my server stuff
|
||||||
- [vaultwarden](https://github.com/dani-garcia/vaultwarden) - Password manager
|
- [Vaultwarden](https://github.com/dani-garcia/vaultwarden) - Password manager
|
||||||
- [Bitwarden clients](https://bitwarden.com/download/)
|
- [Bitwarden clients](https://bitwarden.com/download/)
|
||||||
|
- [Wizarr](https://github.com/Wizarrrr/wizarr?tab=readme-ov-file) - Jellyfin user invite manager
|
||||||
|
- [Workout Tracker](https://github.com/jovandeginste/workout-tracker) - Used with [OpenTracks](https://github.com/OpenTracksApp/OpenTracks) to track my cycling
|
||||||
|
|
||||||
### Monitoring
|
### Monitoring
|
||||||
|
|
||||||
|
- [Beszel](https://www.beszel.dev/) - System stats with pretty graphs
|
||||||
- [Dozzle](https://dozzle.dev/) - Docker logs all in one place
|
- [Dozzle](https://dozzle.dev/) - Docker logs all in one place
|
||||||
- [Glances](https://github.com/nicolargo/glances) - System monitor - I mostly have this for dashboard widgets but it can be useful by itself
|
- [Glances](https://github.com/nicolargo/glances) - System monitor - I mostly have this for dashboard widgets but it can be useful by itself
|
||||||
- [Scrutiny](https://github.com/AnalogJ/scrutiny) - HDD SMART monitoring, so I know when to prepare for a drive failure
|
- [Scrutiny](https://github.com/AnalogJ/scrutiny) - HDD SMART monitoring, so I know when to prepare for a drive failure
|
||||||
- [Speedtest Tracker](https://speedtest-tracker.dev/) - Runs scheduled internet speedtests and creates pretty graphs to keep my ISP honest
|
- [MySpeed](https://github.com/gnmyt/myspeed) - Runs scheduled internet speedtests and creates pretty graphs to keep my ISP honest
|
||||||
|
|
||||||
### Networking
|
### Networking
|
||||||
|
|
||||||
- [AdGuard Home](https://adguard.com/en/adguard-home/overview.html) - DNS filtering - I use this with [tailscale](https://tailscale.com/) to block ads on my phone
|
- [AdGuard Home](https://adguard.com/en/adguard-home/overview.html) - DNS filtering - I use this with [tailscale](https://tailscale.com/) to block ads on my phone
|
||||||
- [cloudflared](https://github.com/cloudflare/cloudflared) - CloudFlare tunnel client for easy and secure external service access
|
- [Cloudflared](https://github.com/cloudflare/cloudflared) - CloudFlare tunnel client for easy and secure external service access
|
||||||
- [gluetun](https://github.com/qdm12/gluetun) - Docker VPN client and kill-switch. Very useful, allows for per-container VPN routing.
|
- [Gluetun](https://github.com/qdm12/gluetun) - Docker VPN client and kill-switch. Very useful, allows for per-container VPN routing.
|
||||||
|
|
||||||
Note that I run tailscale as a system service, not in a container, so it is not listed here, but it is very useful for secure remote access - both for SSH and for services that don't need to be publicly visible.
|
Note that I run tailscale as a system service, not in a container, so it is not listed here, but it is very useful for secure remote access - both for SSH and for services that don't need to be publicly visible.
|
||||||
|
|
||||||
|
In `docker-compose.yml`, services that I access through tailscale need the `dns: 100.111.0.126` section in order to access the internet (`100.111.0.126` is the tailscale IP of the server).
|
||||||
|
|
||||||
### Downloading
|
### Downloading
|
||||||
|
|
||||||
- [Bazarr](https://www.bazarr.media/) - Automated subtitle fetching (I also use the OpenSubtitles plugin within Jellyfin when needed, but this works hands-off most of the time)
|
- [Bazarr](https://www.bazarr.media/) - Automated subtitle fetching (I also use the OpenSubtitles plugin within Jellyfin when needed, but this works hands-off most of the time)
|
||||||
- [Prowlarr](https://prowlarr.com/) - Torrent indexer that interfaces with the other *arrs
|
- [Prowlarr](https://prowlarr.com/) - Torrent indexer that interfaces with the other \*arrs
|
||||||
- [Radarr](https://radarr.video/) - Automated movie fetching
|
|
||||||
- [qBittorrent](https://www.qbittorrent.org/) - The only torrent client I'll ever use
|
- [qBittorrent](https://www.qbittorrent.org/) - The only torrent client I'll ever use
|
||||||
|
- [Radarr](https://radarr.video/) - Automated movie fetching
|
||||||
- [Sonarr](https://sonarr.tv/) - Automated TV show fetching
|
- [Sonarr](https://sonarr.tv/) - Automated TV show fetching
|
||||||
|
|
||||||
I use [LunaSea](https://www.lunasea.app/) as a mobile client for Radarr and Sonarr.
|
I use [LunaSea](https://www.lunasea.app/) as a mobile client for Radarr and Sonarr.
|
||||||
@@ -94,7 +106,22 @@ Below are the variables that need to be set in the `.env` file for each service.
|
|||||||
> - Password: API Key generated in SendGrid
|
> - Password: API Key generated in SendGrid
|
||||||
> - From: `<mailer-name>@<your-domain>` - For each custom sender (`mailer-name`), there needs to be a verified sender in SendGrid.
|
> - From: `<mailer-name>@<your-domain>` - For each custom sender (`mailer-name`), there needs to be a verified sender in SendGrid.
|
||||||
|
|
||||||
### cloudflared
|
### Beszel
|
||||||
|
|
||||||
|
[Docs](https://www.beszel.dev/guide/environment-variables)
|
||||||
|
|
||||||
|
```env
|
||||||
|
# beszel.env
|
||||||
|
|
||||||
|
# Hub settings
|
||||||
|
BESZEL_HUB_APP_URL=
|
||||||
|
|
||||||
|
# Agent settings
|
||||||
|
BESZEL_AGENT_LISTEN=/beszel_socket/beszel.sock
|
||||||
|
BESZEL_AGENT_KEY=''
|
||||||
|
```
|
||||||
|
|
||||||
|
### Cloudflared
|
||||||
|
|
||||||
[Docs](https://github.com/cloudflare/cloudflared?tab=readme-ov-file)
|
[Docs](https://github.com/cloudflare/cloudflared?tab=readme-ov-file)
|
||||||
|
|
||||||
@@ -105,7 +132,18 @@ Below are the variables that need to be set in the `.env` file for each service.
|
|||||||
TUNNEL_TOKEN=
|
TUNNEL_TOKEN=
|
||||||
```
|
```
|
||||||
|
|
||||||
### gluetun
|
### ConvertX
|
||||||
|
|
||||||
|
[Docs](https://github.com/C4illin/ConvertX#environment-variables)
|
||||||
|
|
||||||
|
```env
|
||||||
|
# convertx.env
|
||||||
|
|
||||||
|
JWT_SECRET=
|
||||||
|
HTTP_ALLOWED=true
|
||||||
|
```
|
||||||
|
|
||||||
|
### Gluetun
|
||||||
|
|
||||||
[Docs](https://github.com/qdm12/gluetun)
|
[Docs](https://github.com/qdm12/gluetun)
|
||||||
|
|
||||||
@@ -133,7 +171,6 @@ My current Immich docker setup has a lot of repetition - when I want to update,
|
|||||||
# immich.env
|
# immich.env
|
||||||
|
|
||||||
UPLOAD_LOCATION=/media/immich
|
UPLOAD_LOCATION=/media/immich
|
||||||
IMMICH_VERSION="v1.123.0"
|
|
||||||
|
|
||||||
TYPESENSE_API_KEY=
|
TYPESENSE_API_KEY=
|
||||||
DB_PASSWORD=
|
DB_PASSWORD=
|
||||||
@@ -150,44 +187,69 @@ POSTGRES_USER=postgres
|
|||||||
POSTGRES_DB=immich
|
POSTGRES_DB=immich
|
||||||
```
|
```
|
||||||
|
|
||||||
### Joplin
|
### Invidious
|
||||||
|
|
||||||
[Docs](https://github.com/flosoft/docker-joplin-server)
|
[Docs](https://docs.invidious.io/installation/)
|
||||||
|
|
||||||
|
Note that the `password` under `db` in `INVIDIOUS_CONFIG` should be the same as the `POSTGRES_PASSWORD`.
|
||||||
|
|
||||||
|
The `hmac_key` should be a different, randomly generated value, and the `invidious_companion_key`/`SERVER_SECRET_KEY` should both be set to another different, randomly generated value.
|
||||||
|
|
||||||
```env
|
```env
|
||||||
# joplin.env
|
# invidious.env
|
||||||
|
|
||||||
APP_PORT=22300
|
# Invidious
|
||||||
APP_BASE_URL=
|
INVIDIOUS_CONFIG='
|
||||||
DB_CLIENT=pg
|
db:
|
||||||
|
dbname: invidious
|
||||||
|
user: invidious
|
||||||
|
password:
|
||||||
|
host: invidious-db
|
||||||
|
port: 5432
|
||||||
|
check_tables: true
|
||||||
|
invidious_companion:
|
||||||
|
- private_url: "http://invidious-companion:8282/companion"
|
||||||
|
invidious_companion_key: ""
|
||||||
|
external_port: 9080
|
||||||
|
https_only: false
|
||||||
|
statistics_enabled: false
|
||||||
|
registration_enabled: false
|
||||||
|
popular_enabled: false
|
||||||
|
hmac_key:
|
||||||
|
admins: ["april"]
|
||||||
|
default_user_preferences:
|
||||||
|
quality: dash
|
||||||
|
feed_menu: ["Trending", "Subscriptions", "Playlists"]
|
||||||
|
default_home: Trending
|
||||||
|
'
|
||||||
|
|
||||||
|
# Companion
|
||||||
|
SERVER_SECRET_KEY=
|
||||||
|
|
||||||
|
# Database
|
||||||
|
POSTGRES_DB=invidious
|
||||||
|
POSTGRES_USER=invidious
|
||||||
POSTGRES_PASSWORD=
|
POSTGRES_PASSWORD=
|
||||||
POSTGRES_DATABASE=joplin
|
|
||||||
POSTGRES_USER=
|
|
||||||
POSTGRES_PORT=5432
|
|
||||||
POSTGRES_HOST=joplin-db
|
|
||||||
|
|
||||||
# Optional SMTP settings
|
# to update the visitor_data and po_token:
|
||||||
MAILER_ENABLED=1
|
# docker run quay.io/invidious/youtube-trusted-session-generator
|
||||||
MAILER_HOST=
|
# or, for use with gluetun:
|
||||||
MAILER_PORT=465
|
# docker run --network=container:gluetun quay.io/invidious/youtube-trusted-session-generator
|
||||||
MAILER_SECURE=1
|
|
||||||
MAILER_AUTH_USER=
|
|
||||||
MAILER_AUTH_PASSWORD=
|
|
||||||
MAILER_NOREPLY_NAME=
|
|
||||||
MAILER_NOREPLY_EMAIL=
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### LinkStack
|
### LubeLogger
|
||||||
|
|
||||||
[Docs](https://linkstack.org/docker/)
|
[Docs](https://docs.lubelogger.com/Advanced/Environment%20Variables)
|
||||||
|
|
||||||
This one just needs the public hostname and admin email.
|
|
||||||
|
|
||||||
```env
|
```env
|
||||||
# linkstack.env
|
# lubelogger.env
|
||||||
|
LC_ALL=en_US
|
||||||
HTTPS_SERVER_NAME=
|
LANG=en_US
|
||||||
SERVER_ADMIN=
|
MailConfig__EmailServer=
|
||||||
|
MailConfig__EmailFrom=
|
||||||
|
MailConfig__Port=587
|
||||||
|
MailConfig__Username=
|
||||||
|
MailConfig__Password=
|
||||||
```
|
```
|
||||||
|
|
||||||
### Miniflux
|
### Miniflux
|
||||||
@@ -205,6 +267,24 @@ POSTGRES_PASSWORD= # this is the password used above
|
|||||||
POSTGRES_DB=miniflux
|
POSTGRES_DB=miniflux
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### MultiScrobbler
|
||||||
|
|
||||||
|
[Docs](https://foxxmd.github.io/multi-scrobbler/docs/configuration/)
|
||||||
|
|
||||||
|
```env
|
||||||
|
# scrobbler.env
|
||||||
|
|
||||||
|
TZ=America/Chicago
|
||||||
|
PUID=1000
|
||||||
|
PGID=1000
|
||||||
|
MALOJA_URL=http://maloja:42010
|
||||||
|
MALOJA_API_KEY=
|
||||||
|
JELLYFIN_URL=http://jellyfin:8096
|
||||||
|
JELLYFIN_USER=
|
||||||
|
JELLYFIN_APIKEY=
|
||||||
|
JELLYFIN_USERS_ALLOW=
|
||||||
|
```
|
||||||
|
|
||||||
### Paperless-ngx
|
### Paperless-ngx
|
||||||
|
|
||||||
[Docs](https://docs.paperless-ngx.com/setup/#docker)
|
[Docs](https://docs.paperless-ngx.com/setup/#docker)
|
||||||
@@ -238,26 +318,35 @@ PAPERLESS_EMAIL_HOST_PASSWORD=
|
|||||||
PAPERLESS_EMAIL_FROM=
|
PAPERLESS_EMAIL_FROM=
|
||||||
```
|
```
|
||||||
|
|
||||||
### Speedtest Tracker
|
### PicoShare
|
||||||
|
|
||||||
[Docs](https://docs.speedtest-tracker.dev/getting-started/installation/using-docker-compose)
|
[Docs](https://github.com/mtlynch/picoshare)
|
||||||
|
|
||||||
```env
|
```env
|
||||||
# speedtest.env
|
# picoshare.env
|
||||||
|
|
||||||
PUID=1000
|
PORT=4001
|
||||||
PGID=1000
|
PS_SHARED_SECRET=
|
||||||
|
PS_BEHIND_PROXY=true
|
||||||
|
```
|
||||||
|
|
||||||
# Generate with `echo -n 'base64:'; openssl rand -base64 32;` or use the speedtest-tracker website
|
### Seafile
|
||||||
APP_KEY=
|
|
||||||
|
|
||||||
# Public address or IP
|
[Docs](https://manual.seafile.com/11.0/docker/deploy_seafile_with_docker/)
|
||||||
APP_URL=
|
|
||||||
|
|
||||||
DB_CONNECTION=sqlite
|
```env
|
||||||
APP_TIMEZONE=
|
# seafile.env
|
||||||
DISPLAY_TIMEZONE=
|
|
||||||
SPEEDTEST_SCHEDULE=0,15,30,45 * * * * # run speedtest every 15 minutes
|
DB_HOST=seafile_db
|
||||||
|
DB_ROOT_PASSWD=
|
||||||
|
SEAFILE_ADMIN_EMAIL=
|
||||||
|
SEAFILE_ADMIN_PASSWORD=
|
||||||
|
SEAFILE_SERVER_HOSTNAME=
|
||||||
|
FORCE_HTTPS_IN_CONF=true
|
||||||
|
|
||||||
|
MYSQL_ROOT_PASSWORD= # same as DB_ROOT_PASSWD above
|
||||||
|
MYSQL_LOG_CONSOLE=true
|
||||||
|
MARIADB_AUTO_UPGRADE=1
|
||||||
```
|
```
|
||||||
|
|
||||||
### Tandoor
|
### Tandoor
|
||||||
@@ -282,7 +371,7 @@ POSTGRES_USER=tandoor
|
|||||||
POSTGRES_PASSWORD=
|
POSTGRES_PASSWORD=
|
||||||
```
|
```
|
||||||
|
|
||||||
### vaultwarden
|
### Vaultwarden
|
||||||
|
|
||||||
[Docs](https://github.com/dani-garcia/vaultwarden)
|
[Docs](https://github.com/dani-garcia/vaultwarden)
|
||||||
|
|
||||||
@@ -308,3 +397,35 @@ SMTP_SECURITY=starttls
|
|||||||
SMTP_USERNAME=
|
SMTP_USERNAME=
|
||||||
SMTP_PASSWORD=
|
SMTP_PASSWORD=
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Wallabag
|
||||||
|
|
||||||
|
[Docs](https://hub.docker.com/r/wallabag/wallabag/)
|
||||||
|
|
||||||
|
The domain name should be set to your Wallabag instance's domain (e.g. links.mysite.com). Server name is just a pretty name for your instance. The DB password and secret can be set to randomly generated strings.
|
||||||
|
|
||||||
|
FOSUSER_REGISTRATION must be set to `true` for at least the first run so a user can be created.
|
||||||
|
|
||||||
|
Note: The username/password need to be included in the mailer DSN (e.g. smtp://apikey:mykey12345@smtp.sendgrid.net)
|
||||||
|
|
||||||
|
```env
|
||||||
|
# wallabag.env
|
||||||
|
|
||||||
|
SYMFONY__ENV__DOMAIN_NAME=
|
||||||
|
SYMFONY__ENV__SERVER_NAME=
|
||||||
|
SYMFONY__ENV__DATABASE_PASSWORD=
|
||||||
|
SYMFONY__ENV__SECRET=
|
||||||
|
SYMFONY__ENV__FOSUSER_REGISTRATION=false
|
||||||
|
SYMFONY__ENV__MAILER_DSN=
|
||||||
|
SYMFONY__ENV__FROM_EMAIL=
|
||||||
|
```
|
||||||
|
|
||||||
|
### Workout Tracker
|
||||||
|
|
||||||
|
[Docs](https://github.com/jovandeginste/workout-tracker#docker)
|
||||||
|
|
||||||
|
```env
|
||||||
|
# workout-tracker.env
|
||||||
|
|
||||||
|
WT_JWT_ENCRYPTION_KEY=
|
||||||
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user