|
1 | | -# Ops repo: Containers for torrent clients et al. |
| 1 | +# Ops Containers |
2 | 2 |
|
3 | | -This set of compose collections are built to put my service containers on the tailnet without my needing to have an entire host for each one. |
| 3 | +A collection of Docker Compose services for my homelab infrastructure, designed to place service containers on a Tailscale network without requiring a dedicated host for each service. |
4 | 4 |
|
5 | | -All of these require: |
| 5 | +## Requirements |
6 | 6 |
|
7 | | -- a docker engine |
8 | | -- access to the CIFS file share on blob |
| 7 | +- Docker Engine |
| 8 | +- Access to CIFS file share on blob |
| 9 | +- Tailscale network (for sidecar containers) |
9 | 10 |
|
10 | | -## Which host? |
| 11 | +## Sidecar Containers |
11 | 12 |
|
12 | | -Most of the containers are not running properly on 32-bit ARM, which my raspberry pi lab devices are still on. I need to upgrade those before I can put them back. |
| 13 | +Many services in this repository use the "sidecar" pattern to expose them on the Tailscale network. Each service that needs to be accessible over Tailscale imports the common `sidecar-compose.yaml` configuration, which: |
13 | 14 |
|
14 | | -For now, a lot of these are running on the NUC (bitbucket) instead, but I'd like to move them back to torrents. |
| 15 | +1. Adds a Tailscale container to the service stack |
| 16 | +2. Connects the container to my tailnet using an auth key |
| 17 | +3. Optionally exposes the service using Tailscale Serve |
| 18 | +4. Optionally enables Tailscale Funnel for external access |
15 | 19 |
|
16 | | -### SickChill |
| 20 | +To use a sidecar with your service: |
17 | 21 |
|
18 | | -TV management. Connects to whatbox for transmission, and blob for media. Runs on torrent. |
| 22 | +```yaml |
| 23 | +# Import the sidecar configuration |
| 24 | +include: |
| 25 | + - ../sidecar-compose.yaml |
19 | 26 |
|
20 | | -This one entails a custom image build, since I run on ARM and the source doesn't release one. |
| 27 | +services: |
| 28 | + # Your regular service definition |
| 29 | + myservice: |
| 30 | + image: example/service:latest |
| 31 | + network_mode: "service:sidecar" # Share the network namespace |
| 32 | + # ... |
21 | 33 |
|
22 | | -### Radarr |
| 34 | + # Extend the sidecar to connect to your service |
| 35 | + sidecar: |
| 36 | + extends: |
| 37 | + service: .sidecar |
| 38 | + environment: |
| 39 | + - TS_AUTH_KEY=${TS_AUTH_KEY} |
| 40 | + - TS_SERVE_PORT=8080 # Port your service listens on |
| 41 | + # - TS_FUNNEL=yes # Uncomment to enable public access |
| 42 | +``` |
23 | 43 |
|
24 | | -Movie management. Connects to whatbox for transmission, and blob for media. Runs on bitbucket. |
| 44 | +## Available Services |
25 | 45 |
|
26 | | -The latest Radarr doesn't support the ARM userspace/kernel combo that my pi lab has. |
| 46 | +### Media Management |
27 | 47 |
|
28 | | -### Jackett |
| 48 | +- **Radarr**: Movie management, connects to transmission and media storage |
| 49 | +- **Sonarr**: TV show management, replacement for SickChill |
| 50 | +- **Lidarr**: Music management, connects to transmission and media storage |
| 51 | +- **Readarr**: E-book and audiobook management |
| 52 | +- **Jackett**: Torrent site proxy/indexer |
| 53 | +- **Tautulli**: Plex server statistics and monitoring |
29 | 54 |
|
30 | | -Torrent site proxy. Runs on torrents. |
| 55 | +### Media Libraries |
31 | 56 |
|
32 | | -### Lidarr |
| 57 | +- **Calibre**: E-book management system |
| 58 | +- **Calibre-Web**: Web interface for Calibre library |
| 59 | +- **YACReader**: Comic/manga reader and library manager |
| 60 | +- **Immich**: Self-hosted photo and video backup solution |
33 | 61 |
|
34 | | -Music management. Connects to whatbox for transmission, and blob for media. Runs on bitbucket. |
| 62 | +### Web Services |
35 | 63 |
|
36 | | -Same codebase as Radarr. |
| 64 | +- **ArchiveBox**: Self-hosted web archive solution |
| 65 | +- **ChangeDetection**: Monitor website changes |
| 66 | +- **Cobalt**: YouTube and media downloader |
| 67 | +- **Pocket-ID**: Self-hosted authentication server |
| 68 | +- **Postmarks**: Bookmark manager |
| 69 | +- **BreezeWiki**: Privacy-focused wiki proxy |
| 70 | + |
| 71 | +### Monitoring & Metrics |
| 72 | + |
| 73 | +- **Prometheus**: Metrics collection and storage |
| 74 | +- **Metrics**: Various exporters (Plex, SNMP, UDM, etc.) |
| 75 | +- **OpenObserve**: Log management and analytics |
| 76 | +- **Victoria-Logs**: High-performance logs storage |
| 77 | + |
| 78 | +### Utility Services |
| 79 | + |
| 80 | +- **Atuin**: Shell history sync server |
| 81 | +- **Hoarder**: Data collection service |
| 82 | +- **OFSM**: Factorio server _not enabled_ |
| 83 | + |
| 84 | +## Host Environment |
| 85 | + |
| 86 | +Most containers require a 64-bit architecture. While some can run on 32-bit ARM, many modern containers require 64-bit ARM or x86_64. Services are typically deployed across multiple hosts: |
| 87 | + |
| 88 | +- **NUC (bitbucket)**: Primary host for resource-intensive services |
| 89 | +- **NUC (prime)**: Primary host for video and AI-using services |
0 commit comments