Compare commits

..

8 Commits

Author SHA1 Message Date
Shaun Collins a6a778f993 Added it tools and named container 2026-03-04 14:50:57 +00:00
Shaun Collins c6270fde68 Removed boilerplate that was incorrectly added 2026-03-04 14:50:47 +00:00
Shaun Collins be0c3a7eca Removed homepage and added in it tools 2026-03-04 14:31:47 +00:00
Shaun Collins 011ac8df08 Added Newt service for Pangolin 2026-02-26 01:39:49 +00:00
Shaun Collins 371fff18c0 Init 2026-02-23 13:17:51 +00:00
Shaun Collins a58b9b04e2 Readded prunemate and changed minecraft to use crafty 2026-02-03 10:50:09 +00:00
Shaun Collins 4fae8e4798 Added a readme 2026-01-30 15:36:27 +00:00
Shaun Collins e20209bf9e Init 2026-01-30 15:26:59 +00:00
15 changed files with 46 additions and 302569 deletions
-3
View File
@@ -3,7 +3,6 @@
Ace/
Database/
BoilerPlate/
StuShifters/
Gitea/gitea/
Gitea/mysql/
@@ -18,7 +17,5 @@ JellyFin/JellySeerr
JellyFin/Prowlarr
JellyFin/Radarr
JellyFin/Sonarr
Vikunja/db
Vikunja/files
+6 -22
View File
@@ -3,10 +3,8 @@ services:
image: cloudreve/cloudreve:latest
container_name: cloudreve-backend
depends_on:
postgresql:
condition: service_healthy
redis:
condition: service_healthy
- postgresql
- redis
restart: unless-stopped
ports:
- "5212:5212"
@@ -21,14 +19,11 @@ services:
- CR_CONF_Redis.Server=redis:6379
volumes:
- "${DATA_PATH}:/cloudreve/data"
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:5212/api/v4/site/ping"]
interval: 30s
timeout: 5s
start_period: 40s
retries: 3
postgresql:
# Best practice: Pin to major version.
# NOTE: For major version jumps:
# backup & consult https://www.postgresql.org/docs/current/pgupgrade.html
image: postgres:17
container_name: postgresql
restart: unless-stopped
@@ -38,12 +33,6 @@ services:
- POSTGRES_HOST_AUTH_METHOD=trust
volumes:
- database_postgres:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U cloudreve"]
interval: 10s
timeout: 5s
start_period: 30s
retries: 5
redis:
image: redis:latest
@@ -51,13 +40,8 @@ services:
restart: unless-stopped
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
start_period: 30s
retries: 5
volumes:
# backend_data:
database_postgres:
redis_data:
+2 -15
View File
@@ -1,3 +1,4 @@
services:
gitea:
image: gitea/gitea:latest
@@ -21,15 +22,6 @@ services:
ports:
- "3001:3000"
- "222:22"
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/api/healthz"]
interval: 30s
timeout: 5s
start_period: 40s
retries: 3
depends_on:
db:
condition: service_healthy
db:
image: mysql:8
@@ -45,12 +37,7 @@ services:
- gitea
volumes:
- ./mysql:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
start_period: 30s
retries: 5
networks:
gitea:
-2
View File
@@ -5,5 +5,3 @@ JellySeerr/*
Prowlarr/*
Radarr/*
Sonarr/*
Bazarr/*
Lidarr/*
File diff suppressed because it is too large Load Diff
-7
View File
@@ -13,10 +13,3 @@ nginx-down:
cd ../NginxReverseProxy
docker-compose down
cd -
restart-glue:
docker-compose down gluetun
docker-compose up -d gluetun
sleep 5
docker logs gluetun
+10 -149
View File
@@ -17,12 +17,6 @@ services:
- "7359:7359/udp"
- "1900:1900/udp"
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8096/health"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
networks:
- lingen
@@ -63,12 +57,6 @@ services:
- ${DOWNLOADS}:/data/downloads
ports:
- "8989:8989"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8989/ping"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
restart: unless-stopped
networks:
- lingen
@@ -85,12 +73,6 @@ services:
- TZ=${TZ}
volumes:
- ./Prowlarr/config:/config
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9696"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
networks:
- lingen
@@ -111,34 +93,26 @@ services:
- ${TVSHOWS}:/data/tvshows
- ${MOVIES}:/data/movies
- ${DOWNLOADS}:/data/downloads
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:7878/ping"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
networks:
- lingen
bazarr:
container_name: bazarr
image: lscr.io/linuxserver/bazarr:latest
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
ports:
- "8080:8080"
- "6881:6881"
- "6881:6881/udp"
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- WEBUI_PORT=8080
volumes:
- ./Bazarr/config:/config
- ./Radarr/config:/config
- ${TVSHOWS}:/data/tvshows
- ${MOVIES}:/data/movies
ports:
- "6767:6767"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:6767/health"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
- ${DOWNLOADS}:/data/downloads
restart: unless-stopped
networks:
- lingen
@@ -153,123 +127,10 @@ services:
- TZ=${TZ}
ports:
- ${PORT:-8191}:8191
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8191"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
restart: unless-stopped
networks:
- lingen
gluetun-webui:
image: scuzza/gluetun-webui:latest
container_name: gluetun-webui
ports:
- "127.0.0.1:3002:3000"
environment:
- GLUETUN_CONTROL_URL=http://gluetun:8000
- TRUST_PROXY=true
# - GLUETUN_API_KEY=${GLUETUN_API_KEY}
networks:
- lingen
restart: unless-stopped
read_only: true
tmpfs:
- /tmp
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
healthcheck:
test: ["CMD-SHELL", "wget -q -O- http://localhost:3000/api/health || exit 1"]
interval: 30s
timeout: 5s
start_period: 10s
retries: 3
gluetun:
image: qmcgaw/gluetun
container_name: gluetun
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
environment:
- VPN_SERVICE_PROVIDER=protonvpn
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY}
- SERVER_COUNTRIES=${SERVER_COUNTRIES}
- API_LOG_LEVEL=info
volumes:
- /home/shaun/Projects/JellyFin/Gluetun/auth:/gluetun/auth
ports:
- "51820:51820/udp"
- "8000:8000"
- "6881:6881" # Add qBittorrent listening port
- "6881:6881/udp" # Add qBittorrent listening port UDP
healthcheck:
test: ["CMD-SHELL", "wget -q -O- http://localhost:8000/v1/vpn/status || exit 1"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
networks:
- lingen
restart: unless-stopped
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
ports:
- "8080:8080"
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- WEBUI_PORT=8080
volumes:
- ./Radarr/config:/config
- ${TVSHOWS}:/data/tvshows
- ${MOVIES}:/data/movies
- ${DOWNLOADS}:/data/downloads
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
networks:
- lingen
restart: unless-stopped
lidarr:
container_name: lidarr
image: ghcr.io/hotio/lidarr
ports:
- "8686:8686"
environment:
- PUID=${PUID}
- PGID=${PGID}
- UMASK=002
- TZ=${TZ}
volumes:
- ./Lidarr/config:/config
- ./Lidarr/data:/data
- ./Lidarr/downloads:/downloads
- ${MUSIC}:/data/music
- ${DOWNLOADS}:/data/downloads
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8686/ping"]
start_period: 30s
timeout: 5s
interval: 30s
retries: 3
networks:
- lingen
restart: unless-stopped
networks:
lingen:
driver: bridge
+1 -5
View File
@@ -218,11 +218,7 @@
{ ipAddress: "192.168.40.5", port: "7676", name: "PruneMate", description: "Clean up Docker data", site: "prune", icon: "fa-solid fa-trash" },
{ ipAddress: "192.168.40.5", port: "60072", name: "Scanopy", description: "Scan and organize your network", site: "scan", icon: "fa-solid fa-satellite-dish" },
{ ipAddress: "192.168.40.5", scheme: 'https://', port: "8443", name: "Minecraft", description: "Crafty Minecraft server admin", site: "minecraft", icon: "fa-solid fa-cubes" },
{ ipAddress: "192.168.40.5", port: "8081", name: "IT Tools", description: "Collection of tools for IT Dev", site: "tools", icon: "fa-solid fa-tools" },
{ ipAddress: "192.168.40.5", port: "3002", name: "Gluetun", description: "Web UI for VPN status", site: "gluetun", icon: "fa-solid fa-shield" },
{ ipAddress: "192.168.40.5", port: "6767", name: "Bazarr", description: "Subtitle provider", site: "bazarr", icon: "fa-solid fa-closed-captioning" },
{ ipAddress: "192.168.40.5", port: "3456", name: "Vikunja", description: "Tasks and sprints", site: "vikunja", icon: "fa-solid fa-list-check" },
{ ipAddress: "192.168.40.5", port: "8084", name: "StirlingPDF", description: "PDF tools", site: "pdf", icon: "fa-solid fa-file-pdf" }
{ ipAddress: "192.168.40.5", port: "8081", name: "IT Tools", description: "Collection of tools for IT Dev", site: "tools", icon: "fa-solid fa-tools" }
];
const buttonContainer = document.querySelector(".button-container");
+2 -7
View File
@@ -9,19 +9,14 @@ services:
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
networks:
- lingen
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:81/api/version/check"]
interval: 30s
timeout: 5s
start_period: 40s
retries: 3
networks:
lingen:
driver: bridge
+21 -40
View File
@@ -1,8 +1,9 @@
# Lingen Homelab
# README
## Overview
The Lingen Homelab is a comprehensive self-hosted services repository designed to provide a complete ecosystem of applications for media management, VPN services, development tools, and more. All services are containerized using Docker and managed through a unified `Makefile` for simplified operations.
This repository contains multiple services, used within the Lingen Homelab.
They are all controlled via a `Makefile`
![Lingen landing page](lingen.png)
@@ -10,47 +11,27 @@ The Lingen Homelab is a comprehensive self-hosted services repository designed t
## Available Services
### Media & Entertainment
- **AudioBookShelf** - Self-hosted audiobook and podcast server
- **Jellyfin** - Open-source media system and home theater
- **JellySeerr** - Media request management for Jellyfin
- **Radarr** - Movie collection manager and download automation
- **Sonarr** - TV series collection manager and download automation
- **Lidarr** - Music collection manager and download automation
- **Bazarr** - Subtitle management for Radarr and Sonarr
Here is a list of available services within the repository:
### Content & Downloads
- **Prowlarr** - Indexer manager for Radarr, Sonarr, and Lidarr
- **Flaresolverr** - Proxy server to handle Cloudflare protection
- **Qbittorrent** - Lightweight torrent client for media downloads
- **Scanopy** - Container monitoring and management system
### Infrastructure & Security
- **Gluetun** - VPN client container for secure connections
- **Gluetun WebUI** - Web interface for Gluetun management
- **NginxReverseProxy** - Reverse proxy for routing and SSL termination
- **Newt** - API management and monitoring tool for use with Pangolin
### Development & Utilities
- **Gitea** - Lightweight Git service for version control
- **Cloudreve** - Self-hosted cloud storage solution
- **Dockhand** - Docker management utility
- **Database** - Shared database services
### Additional Services
- **Minecraft** - Minecraft game server management
- **Prunemate** - Docker cleanup and maintenance tool
- **Tools** - Development and operational tools
1. **AudioBookShelf**
2. **Cloudreve**
3. **Dockhand**
4. **Gitea**
5. **Jellyfin**
6. **Gluetun**
7. **JellySeerr**
8. **Prowlarr**
9. **Radarr**
10. **Sonarr**
11. **Minecraft**
12. **Scanopy**
13. **NginxReverseProxy**
---
## Quick Start
## General Commands
### Basic Commands
The repository uses a `Makefile` to simplify service management across the project. Below are the common commands available:
The repository uses a `Makefile` to simplify service management. Below are the common commands available:
```bash
make up # Bring all services up in the background
make down # Bring all services down
```
- `make up` Bring service up
- `make down` Bring service down
-5
View File
@@ -1,5 +0,0 @@
up:
docker-compose up -d
down:
docker-compose down
-12
View File
@@ -1,12 +0,0 @@
services:
StirlingPdf:
image: docker.stirlingpdf.com/stirlingtools/stirling-pdf
container_name: StirlingPdf
restart: unless-stopped
networks:
- lingen
ports:
- "8084:8080"
networks:
lingen:
driver: bridge
-5
View File
@@ -1,5 +0,0 @@
up:
docker-compose up -d
down:
docker-compose down
-20
View File
@@ -1,20 +0,0 @@
services:
vikunja:
image: vikunja/vikunja:2.3.0
container_name: vikunja
environment:
VIKUNJA_SERVICE_PUBLICURL: https:/tasks.shaunc.co.uk/
VIKUNJA_SERVICE_JWTSECRET: 4c9faad669e44f47d4055631403ba93ffa978f20015e45ab2e79b83daccc6f5a
VIKUNJA_DATABASE_PATH: /db/vikunja.db
ports:
- 3456:3456
# healthcheck:
# test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3456/api/v1/docs.json"]
# interval: 30s
# timeout: 5s
# start_period: 40s
# retries: 3
volumes:
- ./files:/app/vikunja/files
- ./db:/db
restart: unless-stopped
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 397 KiB

After

Width:  |  Height:  |  Size: 199 KiB