Compare commits
28 Commits
8229438aa4
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 2389c0eb00 | |||
| 4d0a0ce05d | |||
| 635e6db7d8 | |||
| 120bd43cbc | |||
| 23e5987799 | |||
| 4b50114591 | |||
| daa6f061fc | |||
| 9a0d137494 | |||
| fb0f74d72f | |||
| 2f2dc52f74 | |||
| 6044ba0566 | |||
| a522ab609e | |||
| 9f1fd502ea | |||
| e08dd5bc7b | |||
| a4abc5e710 | |||
| ae6dbd2bc6 | |||
| a0bb55116e | |||
| 11da62f1a6 | |||
| c58b474f32 | |||
| ea44449859 | |||
| 0c658372a5 | |||
| 77d62ea5c9 | |||
| 0235730a32 | |||
| c52b0d0352 | |||
| aca3b256bd | |||
| ab0a986913 | |||
| ebee8b437f | |||
| fee663aa8e |
460
README.md
460
README.md
@@ -1,126 +1,342 @@
|
|||||||
# Home-Server Development
|
# Docker-Home-Server Development
|
||||||
## This is my docker home server development repo.
|
## Docker Home Server Testing & Setup
|
||||||
|
|
||||||
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.
|
Welcome to my home server development repository! Over the past 4-5 years, I’ve tested a wide variety of Docker containers for self-hosting and automation. This repo collects the containers I’ve 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.
|
||||||
|
|
||||||
|
- [adguard](./docker-compose/adguard)
|
||||||
|
*Network-wide ad blocker and privacy protection.*
|
||||||
|
- [airdcpp](./docker-compose/airdcpp)
|
||||||
|
*Advanced Direct Connect client.*
|
||||||
|
- [amule](./docker-compose/amule)
|
||||||
|
*Peer-to-peer file sharing client for the eDonkey network.*
|
||||||
|
- [apprise](./docker-compose/apprise)
|
||||||
|
*Unified notification service for multiple platforms.*
|
||||||
|
- [aria2](./docker-compose/aria2)
|
||||||
|
*Lightweight multi-protocol & multi-source command-line download utility.*
|
||||||
|
- [audiobookshelf](./docker-compose/audiobookshelf)
|
||||||
|
*Self-hosted audiobook server and web player.*
|
||||||
|
- [authelia](./docker-compose/authelia)
|
||||||
|
*Authentication and authorization server for your applications.*
|
||||||
|
- [bazarr](./docker-compose/bazarr)
|
||||||
|
*Subtitle management for Radarr and Sonarr.*
|
||||||
|
- [beets](./docker-compose/beets)
|
||||||
|
*Music library organizer and tagger.*
|
||||||
|
- [btcpayserver](./docker-compose/btcpayserver)
|
||||||
|
*Self-hosted Bitcoin payment processor.*
|
||||||
|
- [calibre](./docker-compose/calibre)
|
||||||
|
*E-book management software.*
|
||||||
|
- [calibre-web](./docker-compose/calibre-web)
|
||||||
|
*Web-based interface for Calibre e-book library.*
|
||||||
|
- [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.*
|
||||||
|
- [dashy](./docker-compose/dashy)
|
||||||
|
*Self-hosted dashboard app for organizing links and services.*
|
||||||
|
- [ddclient](./docker-compose/ddclient)
|
||||||
|
*Dynamic DNS update client.*
|
||||||
|
- [deemix](./docker-compose/deemix)
|
||||||
|
*Music downloader for Deezer.*
|
||||||
|
- [deluge](./docker-compose/deluge)
|
||||||
|
*Lightweight, open-source BitTorrent client.*
|
||||||
|
- [dillinger](./docker-compose/dillinger)
|
||||||
|
*Online Markdown editor.*
|
||||||
|
- [doublecommander](./docker-compose/doublecommander)
|
||||||
|
*Cross-platform file manager.*
|
||||||
|
- [elasticsearch](./docker-compose/elasticsearch)
|
||||||
|
*Distributed search and analytics engine.*
|
||||||
|
- [filebrowser](./docker-compose/filebrowser)
|
||||||
|
*Web-based file manager for your server.*
|
||||||
|
- [filedrop](./docker-compose/filedrop)
|
||||||
|
*Simple file sharing app.*
|
||||||
|
- [filegator](./docker-compose/filegator)
|
||||||
|
*Web-based file manager.*
|
||||||
|
- [flaresolverr](./docker-compose/flaresolverr)
|
||||||
|
*Proxy server to bypass Cloudflare protection.*
|
||||||
|
- [foundryvtt](./docker-compose/foundryvtt)
|
||||||
|
*Virtual Tabletop for RPGs.*
|
||||||
|
- [freshrss](./docker-compose/freshrss)
|
||||||
|
*Self-hosted RSS feed aggregator.*
|
||||||
|
- [gamevault](./docker-compose/gamevault)
|
||||||
|
*Game library manager.*
|
||||||
|
- [gameyfin](./docker-compose/gameyfin)
|
||||||
|
*Game streaming server.*
|
||||||
|
- [ghostfolio](./docker-compose/ghostfolio)
|
||||||
|
*Personal finance management.*
|
||||||
|
- [gitea](./docker-compose/gitea)
|
||||||
|
*Self-hosted Git service.*
|
||||||
|
- [glances](./docker-compose/glances)
|
||||||
|
*System monitoring tool.*
|
||||||
|
- [gluetun](./docker-compose/gluetun)
|
||||||
|
*VPN client for Docker containers.*
|
||||||
|
- [gmod](./docker-compose/gmod)
|
||||||
|
*Garry's Mod game server.*
|
||||||
|
- [grafana](./docker-compose/grafana)
|
||||||
|
*Analytics and monitoring dashboard.*
|
||||||
|
- [grifter](./docker-compose/grifter)
|
||||||
|
*Automation and scripting tool.*
|
||||||
|
- [headphones](./docker-compose/headphones)
|
||||||
|
*Music download manager for Usenet and torrents.*
|
||||||
|
- [heimdall](./docker-compose/heimdall)
|
||||||
|
*Application dashboard for your server.*
|
||||||
|
- [homarr](./docker-compose/homarr)
|
||||||
|
*Modern dashboard for managing your home server.*
|
||||||
|
- [homeassistant](./docker-compose/homeassistant)
|
||||||
|
*Open-source home automation platform.*
|
||||||
|
- [homebridge](./docker-compose/homebridge)
|
||||||
|
*HomeKit support for non-Apple devices.*
|
||||||
|
- [immich](./docker-compose/immich)
|
||||||
|
*Self-hosted photo and video backup solution.*
|
||||||
|
- [iptv-org-epg](./docker-compose/iptv-org-epg)
|
||||||
|
*EPG for IPTV.*
|
||||||
|
- [it-tools](./docker-compose/it-tools)
|
||||||
|
*Handy web-based tools for developers.*
|
||||||
|
- [jackett](./docker-compose/jackett)
|
||||||
|
*API support for torrent indexers.*
|
||||||
|
- [jdownloader](./docker-compose/jdownloader)
|
||||||
|
*Download manager for various file hosts.*
|
||||||
|
- [jellyfin](./docker-compose/jellyfin)
|
||||||
|
*Open-source media server.*
|
||||||
|
- [joplin](./docker-compose/joplin)
|
||||||
|
*Note-taking and to-do application.*
|
||||||
|
- [jupyter](./docker-compose/jupyter)
|
||||||
|
*Interactive notebooks for code and data.*
|
||||||
|
- [karakeep](./docker-compose/karakeep)
|
||||||
|
*Self-hosted note-taking app.*
|
||||||
|
- [kometa](./docker-compose/kometa)
|
||||||
|
*Media library metadata manager.*
|
||||||
|
- [lancommander](./docker-compose/lancommander)
|
||||||
|
*LAN party management tool.*
|
||||||
|
- [lazylibrarian](./docker-compose/lazylibrarian)
|
||||||
|
*Book download and management tool.*
|
||||||
|
- [libation](./docker-compose/libation)
|
||||||
|
*Audiobook downloader and manager.*
|
||||||
|
- [lidarr](./docker-compose/lidarr)
|
||||||
|
*Music collection manager for Usenet and torrents.*
|
||||||
|
- [mailcow](./docker-compose/mailcow)
|
||||||
|
*Self-hosted mail server suite.*
|
||||||
|
- [mailserver](./docker-compose/mailserver)
|
||||||
|
*General purpose mail server.*
|
||||||
|
- [mariadb](./docker-compose/mariadb)
|
||||||
|
*Open-source relational database.*
|
||||||
|
- [mastodon](./docker-compose/mastodon)
|
||||||
|
*Decentralized social network server.*
|
||||||
|
- [mealie](./docker-compose/mealie)
|
||||||
|
*Recipe management and meal planning.*
|
||||||
|
- [mediacms](./docker-compose/mediacms)
|
||||||
|
*Open-source media content management system.*
|
||||||
|
- [minecraft-paper_itzg](./docker-compose/minecraft-paper_itzg)
|
||||||
|
*Minecraft Paper server by itzg.*
|
||||||
|
- [mixpost](./docker-compose/mixpost)
|
||||||
|
*Social media scheduling platform.*
|
||||||
|
- [mkvtoolnix](./docker-compose/mkvtoolnix)
|
||||||
|
*Tools for working with Matroska media files.*
|
||||||
|
- [mongodb](./docker-compose/mongodb)
|
||||||
|
*NoSQL document database.*
|
||||||
|
- [mosquitto-eclipse](./docker-compose/mosquitto-eclipse)
|
||||||
|
*MQTT broker for IoT messaging.*
|
||||||
|
- [musicbrainz](./docker-compose/musicbrainz)
|
||||||
|
*Open music encyclopedia database.*
|
||||||
|
- [n8n](./docker-compose/n8n)
|
||||||
|
*Workflow automation tool.*
|
||||||
|
- [navidrome](./docker-compose/navidrome)
|
||||||
|
*Music streaming server.*
|
||||||
|
- [netbootxyz](./docker-compose/netbootxyz)
|
||||||
|
*Network boot server for OS installations.*
|
||||||
|
- [nginxproxymanager](./docker-compose/nginxproxymanager)
|
||||||
|
*Web proxy management with a GUI.*
|
||||||
|
- [nicotineplus](./docker-compose/nicotineplus)
|
||||||
|
*Soulseek client. Download music, tv, movies, ebooks, and more.*
|
||||||
|
- [node-red](./docker-compose/node-red)
|
||||||
|
*Flow-based programming for IoT.*
|
||||||
|
- [nostr-relay](./docker-compose/nostr-relay)
|
||||||
|
*Relay server for Nostr protocol.*
|
||||||
|
- [notifiarr](./docker-compose/notifiarr)
|
||||||
|
*Notification integration for media servers.*
|
||||||
|
- [nzbget](./docker-compose/nzbget)
|
||||||
|
*Usenet downloader.*
|
||||||
|
- [ollama](./docker-compose/ollama)
|
||||||
|
*Run large language models locally.*
|
||||||
|
- [ombi](./docker-compose/ombi)
|
||||||
|
*Media request management for Plex/Emby/Jellyfin.*
|
||||||
|
- [omni-tools](./docker-compose/omni-tools)
|
||||||
|
*Collection of useful tools.*
|
||||||
|
- [open-assistant](./docker-compose/open-assistant)
|
||||||
|
*Open-source AI assistant.*
|
||||||
|
- [open-webui](./docker-compose/open-webui)
|
||||||
|
*Web UI for LLMs.*
|
||||||
|
- [openbooks](./docker-compose/openbooks)
|
||||||
|
*Book search and download tool.*
|
||||||
|
- [organizr](./docker-compose/organizr)
|
||||||
|
*Unified web interface for your services.*
|
||||||
|
- [paperless-ng](./docker-compose/paperless-ng)
|
||||||
|
*Document management system.*
|
||||||
|
- [phpmyadmin](./docker-compose/phpmyadmin)
|
||||||
|
*Web-based MySQL/MariaDB administration.*
|
||||||
|
- [picard](./docker-compose/picard)
|
||||||
|
*Music tagger by MusicBrainz.*
|
||||||
|
- [pidgin](./docker-compose/pidgin)
|
||||||
|
*Multi-protocol chat client.*
|
||||||
|
- [plex](./docker-compose/plex)
|
||||||
|
*Media server for streaming your content.*
|
||||||
|
- [plex-image-cleanup](./docker-compose/plex-image-cleanup)
|
||||||
|
*Tool to clean up Plex image cache.*
|
||||||
|
- [pms-docker](./docker-compose/pms-docker)
|
||||||
|
*Plex Media Server Docker image.*
|
||||||
|
- [podgrab](./docker-compose/podgrab)
|
||||||
|
*Podcast downloader and manager.*
|
||||||
|
- [portainer-be](./docker-compose/portainer-be)
|
||||||
|
*Portainer backend service.*
|
||||||
|
- [portainer-ce](./docker-compose/portainer-ce)
|
||||||
|
*Portainer Community Edition.*
|
||||||
|
- [postgres](./docker-compose/postgres)
|
||||||
|
*PostgreSQL database.*
|
||||||
|
- [postiz](./docker-compose/postiz)
|
||||||
|
*Post management tool.*
|
||||||
|
- [prometheus](./docker-compose/prometheus)
|
||||||
|
*Monitoring and alerting toolkit.*
|
||||||
|
- [prowlarr](./docker-compose/prowlarr)
|
||||||
|
*Indexer manager for Usenet and torrents.*
|
||||||
|
- [qbittorrent](./docker-compose/qbittorrent)
|
||||||
|
*Open-source BitTorrent client.*
|
||||||
|
- [radarr](./docker-compose/radarr)
|
||||||
|
*Movie collection manager for Usenet and torrents.*
|
||||||
|
- [rainloop](./docker-compose/rainloop)
|
||||||
|
*Webmail client.*
|
||||||
|
- [readarr](./docker-compose/readarr)
|
||||||
|
*Book collection manager for Usenet and torrents.*
|
||||||
|
- [readarr-audio](./docker-compose/readarr-audio)
|
||||||
|
*Audio book collection manager.*
|
||||||
|
- [recyclarr](./docker-compose/recyclarr)
|
||||||
|
*Syncs trash/recycle settings for media managers.*
|
||||||
|
- [romm](./docker-compose/romm)
|
||||||
|
*Retro game manager.*
|
||||||
|
- [romvault](./docker-compose/romvault)
|
||||||
|
*ROM management and auditing tool.*
|
||||||
|
- [sabnzbd](./docker-compose/sabnzbd)
|
||||||
|
*Usenet binary downloader.*
|
||||||
|
- [searxng](./docker-compose/searxng)
|
||||||
|
*Privacy-respecting metasearch engine.*
|
||||||
|
- [shoutrrr](./docker-compose/shoutrrr)
|
||||||
|
*Notification library for various services.*
|
||||||
|
- [sociaboard](./docker-compose/sociaboard)
|
||||||
|
*Social media management platform.*
|
||||||
|
- [sonarr](./docker-compose/sonarr)
|
||||||
|
*TV series collection manager for Usenet and torrents.*
|
||||||
|
- [soulseek](./docker-compose/soulseek)
|
||||||
|
*Peer-to-peer music sharing client.*
|
||||||
|
- [spotify-playlist-generator](./docker-compose/spotify-playlist-generator)
|
||||||
|
*Tool to generate Spotify playlists.*
|
||||||
|
- [spotisub](./docker-compose/spotisub)
|
||||||
|
*Spotify playlist subscription manager.*
|
||||||
|
- [sptnr](./docker-compose/sptnr)
|
||||||
|
*Spotify playlist and library manager.*
|
||||||
|
- [swag-letsencrypt](./docker-compose/swag-letsencrypt)
|
||||||
|
*Secure Web Application Gateway with Let's Encrypt.*
|
||||||
|
- [swag-letsencrypt_duckdns](./docker-compose/swag-letsencrypt_duckdns)
|
||||||
|
*SWAG with DuckDNS integration.*
|
||||||
|
- [tautulli](./docker-compose/tautulli)
|
||||||
|
*Plex usage monitoring and analytics.*
|
||||||
|
- [tdarr](./docker-compose/tdarr)
|
||||||
|
*Distributed media transcoding system.*
|
||||||
|
- [tellytv](./docker-compose/tellytv)
|
||||||
|
*IPTV proxy for Plex.*
|
||||||
|
- [traefik](./docker-compose/traefik)
|
||||||
|
*Modern reverse proxy and load balancer.*
|
||||||
|
- [trilium](./docker-compose/trilium)
|
||||||
|
*Hierarchical note-taking application.*
|
||||||
|
- [tubearchivist](./docker-compose/tubearchivist)
|
||||||
|
*YouTube archiving and management tool.*
|
||||||
|
- [tvheadend](./docker-compose/tvheadend)
|
||||||
|
*TV streaming server for DVB, ATSC, IPTV.*
|
||||||
|
- [unpackerr](./docker-compose/unpackerr)
|
||||||
|
*Automated extraction of archives for media managers.*
|
||||||
|
- [vocechat](./docker-compose/vocechat)
|
||||||
|
*Self-hosted chat platform.*
|
||||||
|
- [vscodium](./docker-compose/vscodium)
|
||||||
|
*Open-source build of VS Code.*
|
||||||
|
- [watchtower](./docker-compose/watchtower)
|
||||||
|
*Automatic update for Docker containers.*
|
||||||
|
- [webgrabplus](./docker-compose/webgrabplus)
|
||||||
|
*EPG (Electronic Program Guide) grabber.*
|
||||||
|
- [wg-easy](./docker-compose/wg-easy)
|
||||||
|
*Simple WireGuard VPN management.*
|
||||||
|
- [whisper-webui](./docker-compose/whisper-webui)
|
||||||
|
*Web UI for OpenAI Whisper speech-to-text.*
|
||||||
|
- [wireguard](./docker-compose/wireguard)
|
||||||
|
*Fast, modern VPN tunnel.*
|
||||||
|
- [wireshark](./docker-compose/wireshark)
|
||||||
|
*Network protocol analyzer.*
|
||||||
|
- [xbackbone](./docker-compose/xbackbone)
|
||||||
|
*File sharing and image hosting platform.*
|
||||||
|
- [xteve](./docker-compose/xteve)
|
||||||
|
*IPTV proxy for Plex and Emby.*
|
||||||
|
- [youtube-dl-material](./docker-compose/youtube-dl-material)
|
||||||
|
*Web UI for youtube-dl downloads.*
|
||||||
|
- [youtube-dl-server](./docker-compose/youtube-dl-server)
|
||||||
|
*REST API for youtube-dl.*
|
||||||
|
|
||||||
Docker containers in my testing library:
|
## How To Use This Repo
|
||||||
- adguard
|
|
||||||
- amule
|
|
||||||
- apprise
|
|
||||||
- audiobookshelf
|
|
||||||
- authelia
|
|
||||||
- bazarr
|
|
||||||
- beets
|
|
||||||
- calibre
|
|
||||||
- calibre-web
|
|
||||||
- chd-converter
|
|
||||||
- code-server
|
|
||||||
- ddclient
|
|
||||||
- deemix
|
|
||||||
- deluge
|
|
||||||
- dillinger
|
|
||||||
- doublecommander
|
|
||||||
- elasticsearch
|
|
||||||
- filebrowser
|
|
||||||
- flaresolverr
|
|
||||||
- gamevault
|
|
||||||
- gameyfin
|
|
||||||
- gitea
|
|
||||||
- glances
|
|
||||||
- gluetun
|
|
||||||
- gmod
|
|
||||||
- grafana
|
|
||||||
- grifter
|
|
||||||
- headphones
|
|
||||||
- heimdall
|
|
||||||
- homarr
|
|
||||||
- homeassistant
|
|
||||||
- homebridge
|
|
||||||
- immich
|
|
||||||
- jackett
|
|
||||||
- jdownloader
|
|
||||||
- jellyfin
|
|
||||||
- joplin
|
|
||||||
- jupyter
|
|
||||||
- kometa
|
|
||||||
- lazylibrarian
|
|
||||||
- libation
|
|
||||||
- lidarr
|
|
||||||
- mailcow
|
|
||||||
- mailserver
|
|
||||||
- mariadb
|
|
||||||
- mastadon
|
|
||||||
- mastodon
|
|
||||||
- mealie
|
|
||||||
- mediacms
|
|
||||||
- minecraft-paper_itzg
|
|
||||||
- mkvtoolnix
|
|
||||||
- mongodb
|
|
||||||
- mosquitto-eclipse
|
|
||||||
- musicbrainz
|
|
||||||
- n8n
|
|
||||||
- navidrome
|
|
||||||
- netbootxyz
|
|
||||||
- nginxproxymanager
|
|
||||||
- node-red
|
|
||||||
- nostr-relay
|
|
||||||
- notifiarr
|
|
||||||
- nzbget
|
|
||||||
- ombi
|
|
||||||
- open-assistant
|
|
||||||
- openbooks
|
|
||||||
- organizr
|
|
||||||
- paperless-ng
|
|
||||||
- phpmyadmin
|
|
||||||
- picard
|
|
||||||
- pidgin
|
|
||||||
- plex
|
|
||||||
- plex-image-cleanup
|
|
||||||
- pms-docker
|
|
||||||
- podgrab
|
|
||||||
- portainer
|
|
||||||
- portainer-be
|
|
||||||
- portainer-ce
|
|
||||||
- postgres_data
|
|
||||||
- prometheus
|
|
||||||
- prowlarr
|
|
||||||
- qbittorrent
|
|
||||||
- radarr
|
|
||||||
- rainloop
|
|
||||||
- readarr
|
|
||||||
- recyclarr
|
|
||||||
- requestrr
|
|
||||||
- romm
|
|
||||||
- romvault
|
|
||||||
- sabnzbd
|
|
||||||
- shoutrrr
|
|
||||||
- sonarr
|
|
||||||
- soulseek
|
|
||||||
- spotify-playlist-generator
|
|
||||||
- spotisub
|
|
||||||
- sptnr
|
|
||||||
- swag-letsencrypt
|
|
||||||
- swag-letsencrypt_duckdns
|
|
||||||
- tautulli
|
|
||||||
- tdarr
|
|
||||||
- tellytv
|
|
||||||
- traefik
|
|
||||||
- trilium
|
|
||||||
- tubearchivist
|
|
||||||
- tvheadend
|
|
||||||
- unpackerr
|
|
||||||
- vscodium
|
|
||||||
- watchtower
|
|
||||||
- web-dev-compose.yml
|
|
||||||
- webgrabplus
|
|
||||||
- wg-easy
|
|
||||||
- whisper-webui
|
|
||||||
- wireguard
|
|
||||||
- wireshark
|
|
||||||
- xbackbone
|
|
||||||
- xteve
|
|
||||||
- youtube-dl-material
|
|
||||||
- youtube-dl-server
|
|
||||||
|
|
||||||
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 server’s 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.
|
||||||
16
docker-compose/ghostfolio/.env
Normal file
16
docker-compose/ghostfolio/.env
Normal 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
|
||||||
83
docker-compose/ghostfolio/docker-compose.yml
Normal file
83
docker-compose/ghostfolio/docker-compose.yml
Normal 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
|
||||||
22
docker-compose/immich/.env
Normal file
22
docker-compose/immich/.env
Normal 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
|
||||||
@@ -39,6 +39,10 @@ services:
|
|||||||
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
|
||||||
@@ -56,7 +60,7 @@ services:
|
|||||||
healthcheck:
|
healthcheck:
|
||||||
disable: false
|
disable: false
|
||||||
networks: # Specify network for container
|
networks: # Specify network for container
|
||||||
- homelab
|
- immich_net
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
container_name: immich_redis
|
container_name: immich_redis
|
||||||
@@ -65,7 +69,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
|
||||||
- homelab
|
- immich_net
|
||||||
|
|
||||||
database:
|
database:
|
||||||
container_name: immich_postgres
|
container_name: immich_postgres
|
||||||
@@ -101,7 +105,7 @@ services:
|
|||||||
]
|
]
|
||||||
restart: always
|
restart: always
|
||||||
networks: # Specify network for container
|
networks: # Specify network for container
|
||||||
- homelab
|
- immich_net
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
pgdata:
|
pgdata:
|
||||||
@@ -110,3 +114,5 @@ 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
|
||||||
44
docker-compose/mongodb/docker-compose.yml
Normal file
44
docker-compose/mongodb/docker-compose.yml
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
# Use root/example as user/password credentials
|
||||||
|
version: '3.1'
|
||||||
|
services:
|
||||||
|
mongo-db:
|
||||||
|
image: mongo
|
||||||
|
container_name: mongo-db
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
UID: 1000
|
||||||
|
GID: 1006
|
||||||
|
MONGO_INITDB_ROOT_USERNAME: yourusername
|
||||||
|
MONGO_INITDB_ROOT_PASSWORD: ChangeMe123!
|
||||||
|
volumes:
|
||||||
|
- /docker-containers/mongodb/db:/data/db
|
||||||
|
- /docker-containers/mongodb/configdb:/data/configdb
|
||||||
|
- /docker-containers/mongodb/backup:/data/sickbackup
|
||||||
|
stdin_open: true
|
||||||
|
tty: true
|
||||||
|
networks:
|
||||||
|
homelab: # Specifying the network to join, simple way
|
||||||
|
aliases:
|
||||||
|
- mongo # how to add multiple aliases
|
||||||
|
- mongo-db
|
||||||
|
- mongodb
|
||||||
|
|
||||||
|
mongo-express:
|
||||||
|
image: mongo-express
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- 8081:8081
|
||||||
|
environment:
|
||||||
|
ME_CONFIG_MONGODB_ADMINUSERNAME: yourusername
|
||||||
|
ME_CONFIG_MONGODB_ADMINPASSWORD: ChangeMe123!
|
||||||
|
ME_CONFIG_MONGODB_URL: mongodb://yourusername:ChangeMe123!@mongo:27017/
|
||||||
|
ME_CONFIG_BASICAUTH_USERNAME: yourusername
|
||||||
|
ME_CONFIG_BASICAUTH_PASSWORD: ChangeMe123
|
||||||
|
networks:
|
||||||
|
- homelab # Specifying the network to join, simple way
|
||||||
|
|
||||||
|
networks: # I don't know why but you have to specify the network 2x. In service, and in this tag area..
|
||||||
|
# some-network:
|
||||||
|
homelab: # Sub-section, any network name or 'default' to edit default one created
|
||||||
|
# name: homelab # Networks can also be given a custom name, not needed if existing
|
||||||
|
external: true # This option causes compose to join the above network instead of making a _default one
|
||||||
@@ -9,18 +9,21 @@ version: "3.7"
|
|||||||
services:
|
services:
|
||||||
node-red:
|
node-red:
|
||||||
image: nodered/node-red:latest
|
image: nodered/node-red:latest
|
||||||
|
container_name: node-red
|
||||||
#image: nodered/node-red:2.2.3-12@sha256:051cdb78937b7396d5be102e575b3b47322bfa48efad5aeb0d86d0a3bef22d22 // armv7 version works for raspberry pi, apparently isn't very good at seeing whether 32 or 64 bit
|
#image: nodered/node-red:2.2.3-12@sha256:051cdb78937b7396d5be102e575b3b47322bfa48efad5aeb0d86d0a3bef22d22 // armv7 version works for raspberry pi, apparently isn't very good at seeing whether 32 or 64 bit
|
||||||
environment:
|
environment:
|
||||||
- TZ=America/New_York
|
- TZ=America/New_York
|
||||||
|
- NODE_RED_CREDENTIAL_SECRET=YourEncryptedString
|
||||||
ports:
|
ports:
|
||||||
- "1880:1880"
|
- "1880:1880"
|
||||||
networks:
|
|
||||||
- node-red-net
|
|
||||||
volumes:
|
volumes:
|
||||||
- /docker-containers/node-red:/data
|
- /docker-containers/node-red/data:/data
|
||||||
|
|
||||||
volumes:
|
|
||||||
node-red-data:
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
node-red-net:
|
homelab:
|
||||||
|
aliases:
|
||||||
|
- nodered
|
||||||
|
networks: # I don't know why but you have to specify the network 2x. In service, and in this tag area..
|
||||||
|
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
|
||||||
|
|
||||||
@@ -6,13 +6,20 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- /docker-containers/ollama/code:/code
|
- /docker-containers/ollama/code:/code
|
||||||
- /docker-containers/ollama/data:/root/.ollama
|
- /docker-containers/ollama/data:/root/.ollama
|
||||||
|
# - /usr/local/cuda:/usr/local/cuda:ro # <-- mount CUDA runtime from host maybe
|
||||||
container_name: ollama
|
container_name: ollama
|
||||||
pull_policy: always
|
|
||||||
tty: true
|
tty: true
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
environment:
|
||||||
- OLLAMA_KEEP_ALIVE=24h
|
- OLLAMA_KEEP_ALIVE=24h
|
||||||
- OLLAMA_HOST=0.0.0.0
|
- OLLAMA_HOST=0.0.0.0
|
||||||
|
- NVIDIA_VISIBLE_DEVICES=all
|
||||||
|
- NVIDIA_DRIVER_CAPABILITIES=compute,utility
|
||||||
|
# devices:
|
||||||
|
# - /dev/nvidia0:/dev/nvidia0
|
||||||
|
# - /dev/nvidiactl:/dev/nvidiactl
|
||||||
|
# - /dev/nvidia-uvm:/dev/nvidia-uvm
|
||||||
|
runtime: nvidia
|
||||||
networks:
|
networks:
|
||||||
- homelab
|
- homelab
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
version: "3.8"
|
version: "3.8"
|
||||||
services:
|
services:
|
||||||
open-webui:
|
open-webui:
|
||||||
image: ghcr.io/open-webui/open-webui:v0.6.36
|
image: ghcr.io/open-webui/open-webui:latest
|
||||||
|
|
||||||
container_name: open-webui
|
container_name: open-webui
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@@ -12,18 +12,18 @@ services:
|
|||||||
- MODEL_SERVER_URL=http://ollama:11434
|
- MODEL_SERVER_URL=http://ollama:11434
|
||||||
- PROVIDER=ollama,openai
|
- PROVIDER=ollama,openai
|
||||||
- OPENAI_API_KEY=YourAPIKEY
|
- OPENAI_API_KEY=YourAPIKEY
|
||||||
# This variable is required to be set, otherwise you may experience Websocket issues, doesn't fix my issues tho
|
# With below set, and turning off basic auth in nginx, I was able to get reverse proxy working
|
||||||
- CORS_ALLOW_ORIGIN=https://open-webui.example.com;https://example.com;http://open-webui;http://open-webui:8080;https://open-webui:8080;http://192.168.1.239;http://192.168.1.239:3030;http://localhost:3030;http://192.168.1.1:80;http://192.168.1.1:443
|
- CORS_ALLOW_ORIGIN=https://open-webui.example.com;https://example.com;http://open-webui;http://open-webui:8080;https://open-webui:8080;http://192.168.1.239;http://192.168.1.239:3030;http://localhost:3030;http://192.168.1.1:80;http://192.168.1.1:443
|
||||||
- WEBUI_URL=https://open-webui.example.com;https://example.com;http://open-webui;http://open-webui:8080;https://open-webui:8080;http://192.168.1.239;http://192.168.1.239:3030;http://localhost:3030;http://192.168.1.1:80;http://192.168.1.1:443
|
- WEBUI_URL=https://open-webui.example.com;https://example.com;http://open-webui;http://open-webui:8080;https://open-webui:8080;http://192.168.1.239;http://192.168.1.239:3030;http://localhost:3030;http://192.168.1.1:80;http://192.168.1.1:443
|
||||||
|
|
||||||
# - 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,17 +34,23 @@ services:
|
|||||||
aliases:
|
aliases:
|
||||||
- openwebui # adding multiple aliases under certain network
|
- openwebui # adding multiple aliases under certain network
|
||||||
- open-wui
|
- open-wui
|
||||||
# depends_on:
|
openwebui_net:
|
||||||
# - redis-valkey-webui
|
aliases:
|
||||||
|
- openwebui_internal # to connect to redis network, and not redis connect to homelab anymore (multi redis)
|
||||||
|
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:
|
||||||
# - homelab
|
- openwebui_net
|
||||||
|
|
||||||
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
Reference in New Issue
Block a user