Compare commits

..

11 Commits

144 changed files with 334 additions and 355 deletions

309
README.md
View File

@@ -1,306 +1,243 @@
# Docker-Home-Server Development # Home-Server Development
## Docker Home Server Testing & Setup ## This is my docker home server development repo.
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. For the past 4-5 years I've been testing multiple docker containers. Here is a list of anything worth having in docker imo.. Few things may be left off or not currently maintained. I plan to add folders and update docker-compose.yml for each container later. At least for backup purposes. Some currently have private info so will need to refine those first.
Below is a list of containers Ive tested and recommend for various home server tasks. Docker containers in my testing library:
- [adguard](./docker-compose/adguard) - [adguard](./adguard)
*Network-wide ad blocker and privacy protection.* *Network-wide ad blocker and privacy protection.*
- [amule](./docker-compose/amule) - [amule](./amule)
*Peer-to-peer file sharing client for the eDonkey network.* *Peer-to-peer file sharing client for the eDonkey network.*
- [apprise](./docker-compose/apprise) - [apprise](./apprise)
*Unified notification service for multiple platforms.* *Unified notification service for multiple platforms.*
- [audiobookshelf](./docker-compose/audiobookshelf) - [audiobookshelf](./audiobookshelf)
*Self-hosted audiobook server and web player.* *Self-hosted audiobook server and web player.*
- [authelia](./docker-compose/authelia) - [authelia](./authelia)
*Authentication and authorization server for your applications.* *Authentication and authorization server for your applications.*
- [bazarr](./docker-compose/bazarr) - [bazarr](./bazarr)
*Subtitle management for Radarr and Sonarr.* *Subtitle management for Radarr and Sonarr.*
- [beets](./docker-compose/beets) - [beets](./beets)
*Music library organizer and tagger.* *Music library organizer and tagger.*
- [calibre](./docker-compose/calibre) - [calibre](./calibre)
*E-book management software.* *E-book management software.*
- [calibre-web](./docker-compose/calibre-web) - [calibre-web](./calibre-web)
*Web-based interface for Calibre e-book library.* *Web-based interface for Calibre e-book library.*
- [chd-converter](./docker-compose/chd-converter) - [chd-converter](./chd-converter)
*Tool for converting playstation disk images to CHD format.* *Tool for converting disk images to CHD format.*
- [code-server](./docker-compose/code-server) - [code-server](./code-server)
*VS Code running on a remote server accessible through the browser.* *VS Code running on a remote server accessible through the browser.*
- [ddclient](./docker-compose/ddclient) - [ddclient](./ddclient)
*Dynamic DNS update client.* *Dynamic DNS update client.*
- [deemix](./docker-compose/deemix) - [deemix](./deemix)
*Music downloader for Deezer.* *Music downloader for Deezer.*
- [deluge](./docker-compose/deluge) - [deluge](./deluge)
*Lightweight, open-source BitTorrent client.* *Lightweight, open-source BitTorrent client.*
- [dillinger](./docker-compose/dillinger) - [dillinger](./dillinger)
*Online Markdown editor.* *Online Markdown editor.*
- [doublecommander](./docker-compose/doublecommander) - [doublecommander](./doublecommander)
*Cross-platform file manager.* *Cross-platform file manager.*
- [elasticsearch](./docker-compose/elasticsearch) - [elasticsearch](./elasticsearch)
*Distributed search and analytics engine.* *Distributed search and analytics engine.*
- [filebrowser](./docker-compose/filebrowser) - [filebrowser](./filebrowser)
*Web-based file manager for your server.* *Web-based file manager for your server.*
- [flaresolverr](./docker-compose/flaresolverr) - [flaresolverr](./flaresolverr)
*Proxy server to bypass Cloudflare protection.* *Proxy server to bypass Cloudflare protection.*
- [gamevault](./docker-compose/gamevault) - [gamevault](./gamevault)
*Game library manager.* *Game library manager.*
- [gameyfin](./docker-compose/gameyfin) - [gameyfin](./gameyfin)
*Game streaming server.* *Game streaming server.*
- [gitea](./docker-compose/gitea) - [gitea](./gitea)
*Self-hosted Git service.* *Self-hosted Git service.*
- [glances](./docker-compose/glances) - [glances](./glances)
*System monitoring tool.* *System monitoring tool.*
- [gluetun](./docker-compose/gluetun) - [gluetun](./gluetun)
*VPN client for Docker containers.* *VPN client for Docker containers.*
- [gmod](./docker-compose/gmod) - [gmod](./gmod)
*Garry's Mod game server.* *Garry's Mod game server.*
- [grafana](./docker-compose/grafana) - [grafana](./grafana)
*Analytics and monitoring dashboard.* *Analytics and monitoring dashboard.*
- [grifter](./docker-compose/grifter) - [grifter](./grifter)
*Automation and scripting tool.* *Automation and scripting tool.*
- [headphones](./docker-compose/headphones) - [headphones](./headphones)
*Music download manager for Usenet and torrents.* *Music download manager for Usenet and torrents.*
- [heimdall](./docker-compose/heimdall) - [heimdall](./heimdall)
*Application dashboard for your server.* *Application dashboard for your server.*
- [homarr](./docker-compose/homarr) - [homarr](./homarr)
*Modern dashboard for managing your home server.* *Modern dashboard for managing your home server.*
- [homeassistant](./docker-compose/homeassistant) - [homeassistant](./homeassistant)
*Open-source home automation platform.* *Open-source home automation platform.*
- [homebridge](./docker-compose/homebridge) - [homebridge](./homebridge)
*HomeKit support for non-Apple devices.* *HomeKit support for non-Apple devices.*
- [immich](./docker-compose/immich) - [immich](./immich)
*Self-hosted photo and video backup solution.* *Self-hosted photo and video backup solution.*
- [jackett](./docker-compose/jackett) - [jackett](./jackett)
*API support for torrent indexers.* *API support for torrent indexers.*
- [jdownloader](./docker-compose/jdownloader) - [jdownloader](./jdownloader)
*Download manager for various file hosts.* *Download manager for various file hosts.*
- [jellyfin](./docker-compose/jellyfin) - [jellyfin](./jellyfin)
*Open-source media server.* *Open-source media server.*
- [joplin](./docker-compose/joplin) - [joplin](./joplin)
*Note-taking and to-do application.* *Note-taking and to-do application.*
- [jupyter](./docker-compose/jupyter) - [jupyter](./jupyter)
*Interactive notebooks for code and data.* *Interactive notebooks for code and data.*
- [kometa](./docker-compose/kometa) - [kometa](./kometa)
*Media library metadata manager.* *Media library metadata manager.*
- [lazylibrarian](./docker-compose/lazylibrarian) - [lazylibrarian](./lazylibrarian)
*Book download and management tool.* *Book download and management tool.*
- [libation](./docker-compose/libation) - [libation](./libation)
*Audiobook downloader and manager.* *Audiobook downloader and manager.*
- [lidarr](./docker-compose/lidarr) - [lidarr](./lidarr)
*Music collection manager for Usenet and torrents.* *Music collection manager for Usenet and torrents.*
- [mailcow](./docker-compose/mailcow) - [mailcow](./mailcow)
*Self-hosted mail server suite.* *Self-hosted mail server suite.*
- [mailserver](./docker-compose/mailserver) - [mailserver](./mailserver)
*General purpose mail server.* *General purpose mail server.*
- [mariadb](./docker-compose/mariadb) - [mariadb](./mariadb)
*Open-source relational database.* *Open-source relational database.*
- [mastadon](./docker-compose/mastadon) - [mastadon](./mastadon)
*Decentralized social network server.* *Decentralized social network server.*
- [mastodon](./docker-compose/mastodon) - [mastodon](./mastodon)
*Decentralized social network server.* *Decentralized social network server.*
- [mealie](./docker-compose/mealie) - [mealie](./mealie)
*Recipe management and meal planning.* *Recipe management and meal planning.*
- [mediacms](./docker-compose/mediacms) - [mediacms](./mediacms)
*Open-source media content management system.* *Open-source media content management system.*
- [minecraft-paper_itzg](./docker-compose/minecraft-paper_itzg) - [minecraft-paper_itzg](./minecraft-paper_itzg)
*Minecraft Paper server by itzg.* *Minecraft Paper server by itzg.*
- [mkvtoolnix](./docker-compose/mkvtoolnix) - [mkvtoolnix](./mkvtoolnix)
*Tools for working with Matroska media files.* *Tools for working with Matroska media files.*
- [mongodb](./docker-compose/mongodb) - [mongodb](./mongodb)
*NoSQL document database.* *NoSQL document database.*
- [mosquitto-eclipse](./docker-compose/mosquitto-eclipse) - [mosquitto-eclipse](./mosquitto-eclipse)
*MQTT broker for IoT messaging.* *MQTT broker for IoT messaging.*
- [musicbrainz](./docker-compose/musicbrainz) - [musicbrainz](./musicbrainz)
*Open music encyclopedia database.* *Open music encyclopedia database.*
- [n8n](./docker-compose/n8n) - [n8n](./n8n)
*Workflow automation tool.* *Workflow automation tool.*
- [navidrome](./docker-compose/navidrome) - [navidrome](./navidrome)
*Music streaming server.* *Music streaming server.*
- [netbootxyz](./docker-compose/netbootxyz) - [netbootxyz](./netbootxyz)
*Network boot server for OS installations.* *Network boot server for OS installations.*
- [nginxproxymanager](./docker-compose/nginxproxymanager) - [nginxproxymanager](./nginxproxymanager)
*Web proxy management with a GUI.* *Web proxy management with a GUI.*
- [node-red](./docker-compose/node-red) - [node-red](./node-red)
*Flow-based programming for IoT.* *Flow-based programming for IoT.*
- [nostr-relay](./docker-compose/nostr-relay) - [nostr-relay](./nostr-relay)
*Relay server for Nostr protocol.* *Relay server for Nostr protocol.*
- [notifiarr](./docker-compose/notifiarr) - [notifiarr](./notifiarr)
*Notification integration for media servers.* *Notification integration for media servers.*
- [nzbget](./docker-compose/nzbget) - [nzbget](./nzbget)
*Usenet downloader.* *Usenet downloader.*
- [ombi](./docker-compose/ombi) - [ombi](./ombi)
*Media request management for Plex/Emby/Jellyfin.* *Media request management for Plex/Emby/Jellyfin.*
- [open-assistant](./docker-compose/open-assistant) - [open-assistant](./open-assistant)
*Open-source AI assistant.* *Open-source AI assistant.*
- [openbooks](./docker-compose/openbooks) - [openbooks](./openbooks)
*Book search and download tool.* *Book search and download tool.*
- [organizr](./docker-compose/organizr) - [organizr](./organizr)
*Unified web interface for your services.* *Unified web interface for your services.*
- [paperless-ng](./docker-compose/paperless-ng) - [paperless-ng](./paperless-ng)
*Document management system.* *Document management system.*
- [phpmyadmin](./docker-compose/phpmyadmin) - [phpmyadmin](./phpmyadmin)
*Web-based MySQL/MariaDB administration.* *Web-based MySQL/MariaDB administration.*
- [picard](./docker-compose/picard) - [picard](./picard)
*Music tagger by MusicBrainz.* *Music tagger by MusicBrainz.*
- [pidgin](./docker-compose/pidgin) - [pidgin](./pidgin)
*Multi-protocol chat client.* *Multi-protocol chat client.*
- [plex](./docker-compose/plex) - [plex](./plex)
*Media server for streaming your content.* *Media server for streaming your content.*
- [plex-image-cleanup](./docker-compose/plex-image-cleanup) - [plex-image-cleanup](./plex-image-cleanup)
*Tool to clean up Plex image cache.* *Tool to clean up Plex image cache.*
- [pms-docker](./docker-compose/pms-docker) - [pms-docker](./pms-docker)
*Plex Media Server Docker image.* *Plex Media Server Docker image.*
- [podgrab](./docker-compose/podgrab) - [podgrab](./podgrab)
*Podcast downloader and manager.* *Podcast downloader and manager.*
- [portainer](./docker-compose/portainer) - [portainer](./portainer)
*Docker management GUI.* *Docker management GUI.*
- [portainer-be](./docker-compose/portainer-be) - [portainer-be](./portainer-be)
*Portainer backend service.* *Portainer backend service.*
- [portainer-ce](./docker-compose/portainer-ce) - [portainer-ce](./portainer-ce)
*Portainer Community Edition.* *Portainer Community Edition.*
- [postgres_data](./docker-compose/postgres_data) - [postgres_data](./postgres_data)
*PostgreSQL database data container.* *PostgreSQL database data container.*
- [prometheus](./docker-compose/prometheus) - [prometheus](./prometheus)
*Monitoring and alerting toolkit.* *Monitoring and alerting toolkit.*
- [prowlarr](./docker-compose/prowlarr) - [prowlarr](./prowlarr)
*Indexer manager for Usenet and torrents.* *Indexer manager for Usenet and torrents.*
- [qbittorrent](./docker-compose/qbittorrent) - [qbittorrent](./qbittorrent)
*Open-source BitTorrent client.* *Open-source BitTorrent client.*
- [radarr](./docker-compose/radarr) - [radarr](./radarr)
*Movie collection manager for Usenet and torrents.* *Movie collection manager for Usenet and torrents.*
- [rainloop](./docker-compose/rainloop) - [rainloop](./rainloop)
*Webmail client.* *Webmail client.*
- [readarr](./docker-compose/readarr) - [readarr](./readarr)
*Book collection manager for Usenet and torrents.* *Book collection manager for Usenet and torrents.*
- [recyclarr](./docker-compose/recyclarr) - [recyclarr](./recyclarr)
*Syncs trash/recycle settings for media managers.* *Syncs trash/recycle settings for media managers.*
- [requestrr](./docker-compose/requestrr) - [requestrr](./requestrr)
*Discord bot for media requests.* *Discord bot for media requests.*
- [romm](./docker-compose/romm) - [romm](./romm)
*Retro game manager.* *Retro game manager.*
- [romvault](./docker-compose/romvault) - [romvault](./romvault)
*ROM management and auditing tool.* *ROM management and auditing tool.*
- [sabnzbd](./docker-compose/sabnzbd) - [sabnzbd](./sabnzbd)
*Usenet binary downloader.* *Usenet binary downloader.*
- [shoutrrr](./docker-compose/shoutrrr) - [shoutrrr](./shoutrrr)
*Notification library for various services.* *Notification library for various services.*
- [sonarr](./docker-compose/sonarr) - [sonarr](./sonarr)
*TV series collection manager for Usenet and torrents.* *TV series collection manager for Usenet and torrents.*
- [soulseek](./docker-compose/soulseek) - [soulseek](./soulseek)
*Peer-to-peer music sharing client.* *Peer-to-peer music sharing client.*
- [spotify-playlist-generator](./docker-compose/spotify-playlist-generator) - [spotify-playlist-generator](./spotify-playlist-generator)
*Tool to generate Spotify playlists.* *Tool to generate Spotify playlists.*
- [spotisub](./docker-compose/spotisub) - [spotisub](./spotisub)
*Spotify playlist subscription manager.* *Spotify playlist subscription manager.*
- [sptnr](./docker-compose/sptnr) - [sptnr](./sptnr)
*Spotify playlist and library manager.* *Spotify playlist and library manager.*
- [swag-letsencrypt](./docker-compose/swag-letsencrypt) - [swag-letsencrypt](./swag-letsencrypt)
*Secure Web Application Gateway with Let's Encrypt.* *Secure Web Application Gateway with Let's Encrypt.*
- [swag-letsencrypt_duckdns](./docker-compose/swag-letsencrypt_duckdns) - [swag-letsencrypt_duckdns](./swag-letsencrypt_duckdns)
*SWAG with DuckDNS integration.* *SWAG with DuckDNS integration.*
- [tautulli](./docker-compose/tautulli) - [tautulli](./tautulli)
*Plex usage monitoring and analytics.* *Plex usage monitoring and analytics.*
- [tdarr](./docker-compose/tdarr) - [tdarr](./tdarr)
*Distributed media transcoding system.* *Distributed media transcoding system.*
- [tellytv](./docker-compose/tellytv) - [tellytv](./tellytv)
*IPTV proxy for Plex.* *IPTV proxy for Plex.*
- [traefik](./docker-compose/traefik) - [traefik](./traefik)
*Modern reverse proxy and load balancer.* *Modern reverse proxy and load balancer.*
- [trilium](./docker-compose/trilium) - [trilium](./trilium)
*Hierarchical note-taking application.* *Hierarchical note-taking application.*
- [tubearchivist](./docker-compose/tubearchivist) - [tubearchivist](./tubearchivist)
*YouTube archiving and management tool.* *YouTube archiving and management tool.*
- [tvheadend](./docker-compose/tvheadend) - [tvheadend](./tvheadend)
*TV streaming server for DVB, ATSC, IPTV.* *TV streaming server for DVB, ATSC, IPTV.*
- [unpackerr](./docker-compose/unpackerr) - [unpackerr](./unpackerr)
*Automated extraction of archives for media managers.* *Automated extraction of archives for media managers.*
- [vscodium](./docker-compose/vscodium) - [vscodium](./vscodium)
*Open-source build of VS Code.* *Open-source build of VS Code.*
- [watchtower](./docker-compose/watchtower) - [watchtower](./watchtower)
*Automatic update for Docker containers.* *Automatic update for Docker containers.*
- [web-dev-compose.yml](./docker-compose/web-dev-compose.yml) - [web-dev-compose.yml](./web-dev-compose.yml)
*Web development Docker Compose setup.* *Web development Docker Compose setup.*
- [webgrabplus](./docker-compose/webgrabplus) - [webgrabplus](./webgrabplus)
*EPG (Electronic Program Guide) grabber.* *EPG (Electronic Program Guide) grabber.*
- [wg-easy](./docker-compose/wg-easy) - [wg-easy](./wg-easy)
*Simple WireGuard VPN management.* *Simple WireGuard VPN management.*
- [whisper-webui](./docker-compose/whisper-webui) - [whisper-webui](./whisper-webui)
*Web UI for OpenAI Whisper speech-to-text.* *Web UI for OpenAI Whisper speech-to-text.*
- [wireguard](./docker-compose/wireguard) - [wireguard](./wireguard)
*Fast, modern VPN tunnel.* *Fast, modern VPN tunnel.*
- [wireshark](./docker-compose/wireshark) - [wireshark](./wireshark)
*Network protocol analyzer.* *Network protocol analyzer.*
- [xbackbone](./docker-compose/xbackbone) - [xbackbone](./xbackbone)
*File sharing and image hosting platform.* *File sharing and image hosting platform.*
- [xteve](./docker-compose/xteve) - [xteve](./xteve)
*IPTV proxy for Plex and Emby.* *IPTV proxy for Plex and Emby.*
- [youtube-dl-material](./docker-compose/youtube-dl-material) - [youtube-dl-material](./youtube-dl-material)
*Web UI for youtube-dl downloads.* *Web UI for youtube-dl downloads.*
- [youtube-dl-server](./docker-compose/youtube-dl-server) - [youtube-dl-server](./youtube-dl-server)
*REST API for youtube-dl.* *REST API for youtube-dl.*
## How To Use This Repo Most of these I have used, give or take a few. Around 70 or so active currently. Will format those later
### Prerequisites
- [Docker](https://docs.docker.com/get-docker/) installed on your server or local machine.
- [Docker Compose](https://docs.docker.com/compose/install/) (if using `docker-compose.yml` files).
- [Portainer](https://www.portainer.io/) (optional, for managing containers via a web UI).
### Getting Started
1. **Clone the Repository**
```sh
git clone https://github.com/yourusername/home-server.git
cd home-server
```
2. **Choose a Container**
- Browse the folders listed above.
- Each folder typically contains a `docker-compose.yml` or instructions for setup.
3. **Configure Environment Variables**
- Some containers require environment variables or custom configuration files.
- Review the comments in each `docker-compose.yml` or `.env` file within the container's folder for setup details.
- Comments are marked with `#` for easy reference.
4. **Start a Container**
```sh
cd <container-folder>
docker-compose up -d
```
- Or use Portainer to deploy and manage containers/stacks through its web interface.
5. **Access the Service**
- Most services will be available at `http://localhost:<port>` or via your servers IP.
### Updating Containers
- To update a running container:
```sh
docker-compose pull
docker-compose up -d
```
- Or use Portainer's update features. Portainer > Stack > Editor > Update The Stack > Tick (Re-pull image and redeploy)
- Or enable automatic updates with Watchtower.
Deploy Watchtower to monitor and update your containers automatically:
```sh
docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower
```
### Stopping Containers
- To stop a container:
```sh
docker-compose down
```
- Or stop containers from the Portainer dashboard.
### Backup & Restore
- Backup your configuration files and persistent data folders regularly.
- Restore by copying your backups back into the appropriate folders before starting the containers.
---
For container-specific instructions, see the comments within each file.

View File

@@ -1,16 +0,0 @@
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

@@ -1,83 +0,0 @@
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

@@ -1,22 +0,0 @@
# 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

@@ -0,0 +1,75 @@
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:
- ../.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
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:
- ../.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
volumes:
postgres:

111
immich/.env Normal file
View File

@@ -0,0 +1,111 @@
###################################################################################
# Database
###################################################################################
# NOTE: The following four database variables support Docker secrets by adding a *_FILE suffix to the variable name
# See the docker-compose documentation on secrets for additional details: https://docs.docker.com/compose/compose-file/compose-file-v3/#secrets
DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres
DB_PASSWORD=YourPassword
DB_DATABASE_NAME=immich
# Optional Database settings:
# DB_PORT=5432
###################################################################################
# Redis
###################################################################################
REDIS_HOSTNAME=immich_redis
# REDIS_URL will be used to pass custom options to ioredis.
# Example for Sentinel
# {"sentinels":[{"host":"redis-sentinel-node-0","port":26379},{"host":"redis-sentinel-node-1","port":26379},{"host":"redis-sentinel-node-2","port":26379}],"name":"redis-sentinel"}
# REDIS_URL=ioredis://eyJzZW50aW5lbHMiOlt7Imhvc3QiOiJyZWRpcy1zZW50aW5lbDEiLCJwb3J0IjoyNjM3OX0seyJob3N0IjoicmVkaXMtc2VudGluZWwyIiwicG9ydCI6MjYzNzl9XSwibmFtZSI6Im15bWFzdGVyIn0=
# Optional Redis settings:
# Note: these parameters are not automatically passed to the Redis Container
# to do so, please edit the docker-compose.yml file as well. Redis is not configured
# via environment variables, only redis.conf or the command line
# REDIS_PORT=6379
# REDIS_DBINDEX=0
# REDIS_USERNAME=
# REDIS_PASSWORD=
# REDIS_SOCKET=
###################################################################################
# Upload File Location
#
# This is the location where uploaded files are stored.
###################################################################################
UPLOAD_LOCATION=/docker-containers/immich/upload
POSTGRES_LOCATION=/docker-containers/immich/postgres_data
EXTERNAL_PATH=/Documents
###################################################################################
# Typesense
###################################################################################
TYPESENSE_API_KEY=some-random-text
# TYPESENSE_ENABLED=false
# TYPESENSE_URL uses base64 encoding for the nodes json.
# Example JSON that was used:
# [
# { 'host': 'typesense-1.example.net', 'port': '443', 'protocol': 'https' },
# { 'host': 'typesense-2.example.net', 'port': '443', 'protocol': 'https' },
# { 'host': 'typesense-3.example.net', 'port': '443', 'protocol': 'https' },
# ]
# TYPESENSE_URL=ha://WwogICAgeyAnaG9zdCc6ICd0eXBlc2Vuc2UtMS5leGFtcGxlLm5ldCcsICdwb3J0JzogJzQ0MycsICdwcm90b2NvbCc6ICdodHRwcycgfSwKICAgIHsgJ2hvc3QnOiAndHlwZXNlbnNlLTIuZXhhbXBsZS5uZXQnLCAncG9ydCc6ICc0NDMnLCAncHJvdG9jb2wnOiAnaHR0cHMnIH0sCiAgICB7ICdob3N0JzogJ3R5cGVzZW5zZS0zLmV4YW1wbGUubmV0JywgJ3BvcnQnOiAnNDQzJywgJ3Byb3RvY29sJzogJ2h0dHBzJyB9LApd
###################################################################################
# Reverse Geocoding
#
# Reverse geocoding is done locally which has a small impact on memory usage
# This memory usage can be altered by changing the REVERSE_GEOCODING_PRECISION variable
# This ranges from 0-3 with 3 being the most precise
# 3 - Cities > 500 population: ~200MB RAM
# 2 - Cities > 1000 population: ~150MB RAM
# 1 - Cities > 5000 population: ~80MB RAM
# 0 - Cities > 15000 population: ~40MB RAM
####################################################################################
# DISABLE_REVERSE_GEOCODING=false
# REVERSE_GEOCODING_PRECISION=3
####################################################################################
# WEB - Optional
#
# Custom message on the login page, should be written in HTML form.
# For example:
# PUBLIC_LOGIN_PAGE_MESSAGE="This is a demo instance of Immich.<br><br>Email: <i>demo@demo.de</i><br>Password: <i>demo</i>"
####################################################################################
PUBLIC_LOGIN_PAGE_MESSAGE=Welcome to Sick Photo Backups
####################################################################################
# Alternative Service Addresses - Optional
#
# This is an advanced feature for users who may be running their immich services on different hosts.
# It will not change which address or port that services bind to within their containers, but it will change where other services look for their peers.
# Note: immich-microservices is bound to 3002, but no references are made
####################################################################################
IMMICH_WEB_URL=http://immich-web:3000
IMMICH_SERVER_URL=http://immich-server:3001
IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003
####################################################################################
# Alternative API's External Address - Optional
#
# This is an advanced feature used to control the public server endpoint returned to clients during Well-known discovery.
# You should only use this if you want mobile apps to access the immich API over a custom URL. Do not include trailing slash.
# NOTE: At this time, the web app will not be affected by this setting and will continue to use the relative path: /api
# Examples: http://localhost:3001, http://immich-api.example.com, etc
####################################################################################
IMMICH_API_URL_EXTERNAL=https://immich.example.com
IMMICH_VERSION=release

View File

@@ -38,11 +38,7 @@ services:
homelab: homelab:
aliases: aliases:
- immich # how to add multiple 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: immich-machine-learning:
container_name: immich_machine_learning container_name: immich_machine_learning
@@ -60,7 +56,7 @@ services:
healthcheck: healthcheck:
disable: false disable: false
networks: # Specify network for container networks: # Specify network for container
- immich_net - homelab
redis: redis:
container_name: immich_redis container_name: immich_redis
@@ -69,7 +65,7 @@ services:
test: redis-cli ping || exit 1 test: redis-cli ping || exit 1
restart: always restart: always
networks: # Specify network for container networks: # Specify network for container
- immich_net - homelab
database: database:
container_name: immich_postgres container_name: immich_postgres
@@ -105,7 +101,7 @@ services:
] ]
restart: always restart: always
networks: # Specify network for container networks: # Specify network for container
- immich_net - homelab
volumes: volumes:
pgdata: pgdata:
@@ -113,6 +109,4 @@ volumes:
networks: # I don't know why but you have to specify the network 2x. In service, and in this tag area.. networks: # I don't know why but you have to specify the network 2x. In service, and in this tag area..
homelab: 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 # - ENABLE_WEBSOCKET_SUPPORT=false # didn't work, default true
# - WEBUI_AUTH=false # can't be any users in db # - WEBUI_AUTH=false # can't be any users in db
# Required for multi-worker/multi-instance deployments # # Required for multi-worker/multi-instance deployments
- REDIS_URL=redis://redis-valkey-webui:6379/0 # - REDIS_URL=redis://redis-valkey-webui:6379/0
# Required for websocket support # # Required for websocket support
- WEBSOCKET_MANAGER=redis # - WEBSOCKET_MANAGER=redis
- WEBSOCKET_REDIS_URL=redis://redis-valkey-webui:6379/1 # - WEBSOCKET_REDIS_URL=redis://redis-valkey-webui:6379/1
volumes: volumes:
- /docker-containers/open-webui/data:/app/backend/data - /docker-containers/open-webui/data:/app/backend/data
@@ -34,23 +34,17 @@ services:
aliases: aliases:
- openwebui # adding multiple aliases under certain network - openwebui # adding multiple aliases under certain network
- open-wui - open-wui
openwebui_net: # depends_on:
aliases: # - redis-valkey-webui
- openwebui_internal
depends_on:
- redis-valkey-webui
redis-valkey-webui: # redis-valkey-webui:
image: redis:7 # image: redis:7
container_name: redis-valkey-webui # container_name: redis-valkey-webui
restart: unless-stopped # restart: unless-stopped
networks: # networks:
- openwebui_net # - homelab
networks: networks:
homelab: homelab:
name: homelab # Networks can also be given a custom name 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