Compare commits

...

10 Commits

144 changed files with 287 additions and 329 deletions

238
README.md
View File

@@ -1,243 +1,243 @@
# Home-Server Development
# Docker-Home-Server Development
## Docker Home Server Testing & Setup
Welcome to my home server development repository! Over the past 4-5 years, Ive tested a wide variety of Docker containers for self-hosting and automation. This repo collects the containers Ive found most useful, though some may be missing or not actively maintained. My goal is to organize each container into its own folder with a `docker-compose.yml` for easy setup and backup. Some configurations contain private information and will be refined before public release.
Below is a list of containers Ive tested and recommend for various home server tasks.
- [adguard](./adguard)
- [adguard](./docker-compose/adguard)
*Network-wide ad blocker and privacy protection.*
- [amule](./amule)
- [amule](./docker-compose/amule)
*Peer-to-peer file sharing client for the eDonkey network.*
- [apprise](./apprise)
- [apprise](./docker-compose/apprise)
*Unified notification service for multiple platforms.*
- [audiobookshelf](./audiobookshelf)
- [audiobookshelf](./docker-compose/audiobookshelf)
*Self-hosted audiobook server and web player.*
- [authelia](./authelia)
- [authelia](./docker-compose/authelia)
*Authentication and authorization server for your applications.*
- [bazarr](./bazarr)
- [bazarr](./docker-compose/bazarr)
*Subtitle management for Radarr and Sonarr.*
- [beets](./beets)
- [beets](./docker-compose/beets)
*Music library organizer and tagger.*
- [calibre](./calibre)
- [calibre](./docker-compose/calibre)
*E-book management software.*
- [calibre-web](./calibre-web)
- [calibre-web](./docker-compose/calibre-web)
*Web-based interface for Calibre e-book library.*
- [chd-converter](./chd-converter)
*Tool for converting disk images to CHD format.*
- [code-server](./code-server)
- [chd-converter](./docker-compose/chd-converter)
*Tool for converting playstation disk images to CHD format.*
- [code-server](./docker-compose/code-server)
*VS Code running on a remote server accessible through the browser.*
- [ddclient](./ddclient)
- [ddclient](./docker-compose/ddclient)
*Dynamic DNS update client.*
- [deemix](./deemix)
- [deemix](./docker-compose/deemix)
*Music downloader for Deezer.*
- [deluge](./deluge)
- [deluge](./docker-compose/deluge)
*Lightweight, open-source BitTorrent client.*
- [dillinger](./dillinger)
- [dillinger](./docker-compose/dillinger)
*Online Markdown editor.*
- [doublecommander](./doublecommander)
- [doublecommander](./docker-compose/doublecommander)
*Cross-platform file manager.*
- [elasticsearch](./elasticsearch)
- [elasticsearch](./docker-compose/elasticsearch)
*Distributed search and analytics engine.*
- [filebrowser](./filebrowser)
- [filebrowser](./docker-compose/filebrowser)
*Web-based file manager for your server.*
- [flaresolverr](./flaresolverr)
- [flaresolverr](./docker-compose/flaresolverr)
*Proxy server to bypass Cloudflare protection.*
- [gamevault](./gamevault)
- [gamevault](./docker-compose/gamevault)
*Game library manager.*
- [gameyfin](./gameyfin)
- [gameyfin](./docker-compose/gameyfin)
*Game streaming server.*
- [gitea](./gitea)
- [gitea](./docker-compose/gitea)
*Self-hosted Git service.*
- [glances](./glances)
- [glances](./docker-compose/glances)
*System monitoring tool.*
- [gluetun](./gluetun)
- [gluetun](./docker-compose/gluetun)
*VPN client for Docker containers.*
- [gmod](./gmod)
- [gmod](./docker-compose/gmod)
*Garry's Mod game server.*
- [grafana](./grafana)
- [grafana](./docker-compose/grafana)
*Analytics and monitoring dashboard.*
- [grifter](./grifter)
- [grifter](./docker-compose/grifter)
*Automation and scripting tool.*
- [headphones](./headphones)
- [headphones](./docker-compose/headphones)
*Music download manager for Usenet and torrents.*
- [heimdall](./heimdall)
- [heimdall](./docker-compose/heimdall)
*Application dashboard for your server.*
- [homarr](./homarr)
- [homarr](./docker-compose/homarr)
*Modern dashboard for managing your home server.*
- [homeassistant](./homeassistant)
- [homeassistant](./docker-compose/homeassistant)
*Open-source home automation platform.*
- [homebridge](./homebridge)
- [homebridge](./docker-compose/homebridge)
*HomeKit support for non-Apple devices.*
- [immich](./immich)
- [immich](./docker-compose/immich)
*Self-hosted photo and video backup solution.*
- [jackett](./jackett)
- [jackett](./docker-compose/jackett)
*API support for torrent indexers.*
- [jdownloader](./jdownloader)
- [jdownloader](./docker-compose/jdownloader)
*Download manager for various file hosts.*
- [jellyfin](./jellyfin)
- [jellyfin](./docker-compose/jellyfin)
*Open-source media server.*
- [joplin](./joplin)
- [joplin](./docker-compose/joplin)
*Note-taking and to-do application.*
- [jupyter](./jupyter)
- [jupyter](./docker-compose/jupyter)
*Interactive notebooks for code and data.*
- [kometa](./kometa)
- [kometa](./docker-compose/kometa)
*Media library metadata manager.*
- [lazylibrarian](./lazylibrarian)
- [lazylibrarian](./docker-compose/lazylibrarian)
*Book download and management tool.*
- [libation](./libation)
- [libation](./docker-compose/libation)
*Audiobook downloader and manager.*
- [lidarr](./lidarr)
- [lidarr](./docker-compose/lidarr)
*Music collection manager for Usenet and torrents.*
- [mailcow](./mailcow)
- [mailcow](./docker-compose/mailcow)
*Self-hosted mail server suite.*
- [mailserver](./mailserver)
- [mailserver](./docker-compose/mailserver)
*General purpose mail server.*
- [mariadb](./mariadb)
- [mariadb](./docker-compose/mariadb)
*Open-source relational database.*
- [mastadon](./mastadon)
- [mastadon](./docker-compose/mastadon)
*Decentralized social network server.*
- [mastodon](./mastodon)
- [mastodon](./docker-compose/mastodon)
*Decentralized social network server.*
- [mealie](./mealie)
- [mealie](./docker-compose/mealie)
*Recipe management and meal planning.*
- [mediacms](./mediacms)
- [mediacms](./docker-compose/mediacms)
*Open-source media content management system.*
- [minecraft-paper_itzg](./minecraft-paper_itzg)
- [minecraft-paper_itzg](./docker-compose/minecraft-paper_itzg)
*Minecraft Paper server by itzg.*
- [mkvtoolnix](./mkvtoolnix)
- [mkvtoolnix](./docker-compose/mkvtoolnix)
*Tools for working with Matroska media files.*
- [mongodb](./mongodb)
- [mongodb](./docker-compose/mongodb)
*NoSQL document database.*
- [mosquitto-eclipse](./mosquitto-eclipse)
- [mosquitto-eclipse](./docker-compose/mosquitto-eclipse)
*MQTT broker for IoT messaging.*
- [musicbrainz](./musicbrainz)
- [musicbrainz](./docker-compose/musicbrainz)
*Open music encyclopedia database.*
- [n8n](./n8n)
- [n8n](./docker-compose/n8n)
*Workflow automation tool.*
- [navidrome](./navidrome)
- [navidrome](./docker-compose/navidrome)
*Music streaming server.*
- [netbootxyz](./netbootxyz)
- [netbootxyz](./docker-compose/netbootxyz)
*Network boot server for OS installations.*
- [nginxproxymanager](./nginxproxymanager)
- [nginxproxymanager](./docker-compose/nginxproxymanager)
*Web proxy management with a GUI.*
- [node-red](./node-red)
- [node-red](./docker-compose/node-red)
*Flow-based programming for IoT.*
- [nostr-relay](./nostr-relay)
- [nostr-relay](./docker-compose/nostr-relay)
*Relay server for Nostr protocol.*
- [notifiarr](./notifiarr)
- [notifiarr](./docker-compose/notifiarr)
*Notification integration for media servers.*
- [nzbget](./nzbget)
- [nzbget](./docker-compose/nzbget)
*Usenet downloader.*
- [ombi](./ombi)
- [ombi](./docker-compose/ombi)
*Media request management for Plex/Emby/Jellyfin.*
- [open-assistant](./open-assistant)
- [open-assistant](./docker-compose/open-assistant)
*Open-source AI assistant.*
- [openbooks](./openbooks)
- [openbooks](./docker-compose/openbooks)
*Book search and download tool.*
- [organizr](./organizr)
- [organizr](./docker-compose/organizr)
*Unified web interface for your services.*
- [paperless-ng](./paperless-ng)
- [paperless-ng](./docker-compose/paperless-ng)
*Document management system.*
- [phpmyadmin](./phpmyadmin)
- [phpmyadmin](./docker-compose/phpmyadmin)
*Web-based MySQL/MariaDB administration.*
- [picard](./picard)
- [picard](./docker-compose/picard)
*Music tagger by MusicBrainz.*
- [pidgin](./pidgin)
- [pidgin](./docker-compose/pidgin)
*Multi-protocol chat client.*
- [plex](./plex)
- [plex](./docker-compose/plex)
*Media server for streaming your content.*
- [plex-image-cleanup](./plex-image-cleanup)
- [plex-image-cleanup](./docker-compose/plex-image-cleanup)
*Tool to clean up Plex image cache.*
- [pms-docker](./pms-docker)
- [pms-docker](./docker-compose/pms-docker)
*Plex Media Server Docker image.*
- [podgrab](./podgrab)
- [podgrab](./docker-compose/podgrab)
*Podcast downloader and manager.*
- [portainer](./portainer)
- [portainer](./docker-compose/portainer)
*Docker management GUI.*
- [portainer-be](./portainer-be)
- [portainer-be](./docker-compose/portainer-be)
*Portainer backend service.*
- [portainer-ce](./portainer-ce)
- [portainer-ce](./docker-compose/portainer-ce)
*Portainer Community Edition.*
- [postgres_data](./postgres_data)
- [postgres_data](./docker-compose/postgres_data)
*PostgreSQL database data container.*
- [prometheus](./prometheus)
- [prometheus](./docker-compose/prometheus)
*Monitoring and alerting toolkit.*
- [prowlarr](./prowlarr)
- [prowlarr](./docker-compose/prowlarr)
*Indexer manager for Usenet and torrents.*
- [qbittorrent](./qbittorrent)
- [qbittorrent](./docker-compose/qbittorrent)
*Open-source BitTorrent client.*
- [radarr](./radarr)
- [radarr](./docker-compose/radarr)
*Movie collection manager for Usenet and torrents.*
- [rainloop](./rainloop)
- [rainloop](./docker-compose/rainloop)
*Webmail client.*
- [readarr](./readarr)
- [readarr](./docker-compose/readarr)
*Book collection manager for Usenet and torrents.*
- [recyclarr](./recyclarr)
- [recyclarr](./docker-compose/recyclarr)
*Syncs trash/recycle settings for media managers.*
- [requestrr](./requestrr)
- [requestrr](./docker-compose/requestrr)
*Discord bot for media requests.*
- [romm](./romm)
- [romm](./docker-compose/romm)
*Retro game manager.*
- [romvault](./romvault)
- [romvault](./docker-compose/romvault)
*ROM management and auditing tool.*
- [sabnzbd](./sabnzbd)
- [sabnzbd](./docker-compose/sabnzbd)
*Usenet binary downloader.*
- [shoutrrr](./shoutrrr)
- [shoutrrr](./docker-compose/shoutrrr)
*Notification library for various services.*
- [sonarr](./sonarr)
- [sonarr](./docker-compose/sonarr)
*TV series collection manager for Usenet and torrents.*
- [soulseek](./soulseek)
- [soulseek](./docker-compose/soulseek)
*Peer-to-peer music sharing client.*
- [spotify-playlist-generator](./spotify-playlist-generator)
- [spotify-playlist-generator](./docker-compose/spotify-playlist-generator)
*Tool to generate Spotify playlists.*
- [spotisub](./spotisub)
- [spotisub](./docker-compose/spotisub)
*Spotify playlist subscription manager.*
- [sptnr](./sptnr)
- [sptnr](./docker-compose/sptnr)
*Spotify playlist and library manager.*
- [swag-letsencrypt](./swag-letsencrypt)
- [swag-letsencrypt](./docker-compose/swag-letsencrypt)
*Secure Web Application Gateway with Let's Encrypt.*
- [swag-letsencrypt_duckdns](./swag-letsencrypt_duckdns)
- [swag-letsencrypt_duckdns](./docker-compose/swag-letsencrypt_duckdns)
*SWAG with DuckDNS integration.*
- [tautulli](./tautulli)
- [tautulli](./docker-compose/tautulli)
*Plex usage monitoring and analytics.*
- [tdarr](./tdarr)
- [tdarr](./docker-compose/tdarr)
*Distributed media transcoding system.*
- [tellytv](./tellytv)
- [tellytv](./docker-compose/tellytv)
*IPTV proxy for Plex.*
- [traefik](./traefik)
- [traefik](./docker-compose/traefik)
*Modern reverse proxy and load balancer.*
- [trilium](./trilium)
- [trilium](./docker-compose/trilium)
*Hierarchical note-taking application.*
- [tubearchivist](./tubearchivist)
- [tubearchivist](./docker-compose/tubearchivist)
*YouTube archiving and management tool.*
- [tvheadend](./tvheadend)
- [tvheadend](./docker-compose/tvheadend)
*TV streaming server for DVB, ATSC, IPTV.*
- [unpackerr](./unpackerr)
- [unpackerr](./docker-compose/unpackerr)
*Automated extraction of archives for media managers.*
- [vscodium](./vscodium)
- [vscodium](./docker-compose/vscodium)
*Open-source build of VS Code.*
- [watchtower](./watchtower)
- [watchtower](./docker-compose/watchtower)
*Automatic update for Docker containers.*
- [web-dev-compose.yml](./web-dev-compose.yml)
- [web-dev-compose.yml](./docker-compose/web-dev-compose.yml)
*Web development Docker Compose setup.*
- [webgrabplus](./webgrabplus)
- [webgrabplus](./docker-compose/webgrabplus)
*EPG (Electronic Program Guide) grabber.*
- [wg-easy](./wg-easy)
- [wg-easy](./docker-compose/wg-easy)
*Simple WireGuard VPN management.*
- [whisper-webui](./whisper-webui)
- [whisper-webui](./docker-compose/whisper-webui)
*Web UI for OpenAI Whisper speech-to-text.*
- [wireguard](./wireguard)
- [wireguard](./docker-compose/wireguard)
*Fast, modern VPN tunnel.*
- [wireshark](./wireshark)
- [wireshark](./docker-compose/wireshark)
*Network protocol analyzer.*
- [xbackbone](./xbackbone)
- [xbackbone](./docker-compose/xbackbone)
*File sharing and image hosting platform.*
- [xteve](./xteve)
- [xteve](./docker-compose/xteve)
*IPTV proxy for Plex and Emby.*
- [youtube-dl-material](./youtube-dl-material)
- [youtube-dl-material](./docker-compose/youtube-dl-material)
*Web UI for youtube-dl downloads.*
- [youtube-dl-server](./youtube-dl-server)
- [youtube-dl-server](./docker-compose/youtube-dl-server)
*REST API for youtube-dl.*
## How To Use This Repo

View File

@@ -0,0 +1,16 @@
COMPOSE_PROJECT_NAME=Prodigy-Ghostfolio
# CACHE
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=RedisChangeMe123!
# POSTGRES
POSTGRES_DB=ghostfolio-db
POSTGRES_USER=yourusername
POSTGRES_PASSWORD=PostgresChangeMe123!
# VARIOUS
ACCESS_TOKEN_SALT=yourRandomSaltValue
DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?connect_timeout=300&sslmode=prefer
JWT_SECRET_KEY=openSSL-rand-hex-32byte

View File

@@ -0,0 +1,83 @@
name: ghostfolio
services:
ghostfolio:
image: docker.io/ghostfolio/ghostfolio:latest
container_name: ghostfolio
restart: unless-stopped
init: true
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
env_file: # using portainer and this is how I pass env vars within portainer
- stack.env
ports:
- 3333:3333
depends_on:
# postgres:
# condition: service_healthy
redis:
condition: service_healthy
healthcheck:
test: ['CMD-SHELL', 'curl -f http://localhost:3333/api/v1/health']
interval: 10s
timeout: 5s
retries: 5
networks:
- homelab
- ghostfolio_net
# Running separate compose container, 1 postgres for all apps
# postgres:
# image: docker.io/library/postgres:15-alpine
# container_name: gf-postgres
# restart: unless-stopped
# cap_drop:
# - ALL
# cap_add:
# - CHOWN
# - DAC_READ_SEARCH
# - FOWNER
# - SETGID
# - SETUID
# security_opt:
# - no-new-privileges:true
# env_file:
# - ../.env
# healthcheck:
# test:
# ['CMD-SHELL', 'pg_isready -d "$${POSTGRES_DB}" -U $${POSTGRES_USER}']
# interval: 10s
# timeout: 5s
# retries: 5
# volumes:
# - postgres:/var/lib/postgresql/data
redis:
image: docker.io/library/redis:alpine
container_name: gf-redis
restart: unless-stopped
user: '999:1000'
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
env_file:
- stack.env
command:
- /bin/sh
- -c
- redis-server --requirepass "$${REDIS_PASSWORD:?REDIS_PASSWORD variable is not set}"
healthcheck:
test:
['CMD-SHELL', 'redis-cli --pass "$${REDIS_PASSWORD}" ping | grep PONG']
interval: 10s
timeout: 5s
retries: 5
networks:
- ghostfolio_net
networks: # I don't know why but you have to specify the network 2x. In service, and in this tag area..
homelab: # Sub-section, any network name or 'default' to edit default one created
external: true # This option causes compose to join the above network instead of making a _default one
ghostfolio_net:
external: false

View File

@@ -0,0 +1,22 @@
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
# The location where your uploaded files are stored
UPLOAD_LOCATION=/docker-containers/immich/upload
# The location where your database files are stored
DB_DATA_LOCATION=/docker-containers/immich/postgres_data
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
TZ=America/New_York
# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release
# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
DB_PASSWORD=YourPassword
# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

View File

@@ -38,7 +38,11 @@ services:
homelab:
aliases:
- immich # how to add multiple aliases
- immich-server
- immich-server
immich_net:
aliases:
- immich # how to add multiple aliases
- immich-server
immich-machine-learning:
container_name: immich_machine_learning
@@ -56,7 +60,7 @@ services:
healthcheck:
disable: false
networks: # Specify network for container
- homelab
- immich_net
redis:
container_name: immich_redis
@@ -65,7 +69,7 @@ services:
test: redis-cli ping || exit 1
restart: always
networks: # Specify network for container
- homelab
- immich_net
database:
container_name: immich_postgres
@@ -101,7 +105,7 @@ services:
]
restart: always
networks: # Specify network for container
- homelab
- immich_net
volumes:
pgdata:
@@ -109,4 +113,6 @@ volumes:
networks: # I don't know why but you have to specify the network 2x. In service, and in this tag area..
homelab:
external: true # This option causes compose to join the above network instead of making a _default one (supposedly)
external: true # This option causes compose to join the above network instead of making a _default one (supposedly)
immich_net:
external: false

View File

@@ -18,12 +18,12 @@ services:
# - ENABLE_WEBSOCKET_SUPPORT=false # didn't work, default true
# - WEBUI_AUTH=false # can't be any users in db
# # Required for multi-worker/multi-instance deployments
# - REDIS_URL=redis://redis-valkey-webui:6379/0
# Required for multi-worker/multi-instance deployments
- REDIS_URL=redis://redis-valkey-webui:6379/0
# # Required for websocket support
# - WEBSOCKET_MANAGER=redis
# - WEBSOCKET_REDIS_URL=redis://redis-valkey-webui:6379/1
# Required for websocket support
- WEBSOCKET_MANAGER=redis
- WEBSOCKET_REDIS_URL=redis://redis-valkey-webui:6379/1
volumes:
- /docker-containers/open-webui/data:/app/backend/data
@@ -34,17 +34,23 @@ services:
aliases:
- openwebui # adding multiple aliases under certain network
- open-wui
# depends_on:
# - redis-valkey-webui
openwebui_net:
aliases:
- openwebui_internal
depends_on:
- redis-valkey-webui
# redis-valkey-webui:
# image: redis:7
# container_name: redis-valkey-webui
# restart: unless-stopped
# networks:
# - homelab
redis-valkey-webui:
image: redis:7
container_name: redis-valkey-webui
restart: unless-stopped
networks:
- openwebui_net
networks:
homelab:
name: homelab # Networks can also be given a custom name
external: true # This option causes compose to join the above network instead of making a _default one
external: true # This option causes compose to join the above network instead of making a _default one
openwebui_net:
name: openwebui_net
external: false

Some files were not shown because too many files have changed in this diff Show More