Compare commits
12 Commits
4d8d3be954
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 11e96df3eb | |||
| c8cf83a1c9 | |||
| ec828c185d | |||
| 8309328890 | |||
| 1b1d058ded | |||
| 472a09ea5c | |||
| 068ccd6b4d | |||
| 44c1de67cd | |||
| 80f173ebc5 | |||
| a4ec975fff | |||
| 12f661980e | |||
| 58c2c96c54 |
@@ -0,0 +1,40 @@
|
||||
# Mealie Docker Compose (NFS) - Environment Variables
|
||||
# Copy this file to .env and fill in your values
|
||||
|
||||
# --- Image ---
|
||||
|
||||
# Mealie image tag (use a specific version for stability, or 'latest')
|
||||
MEALIE_VERSION=latest
|
||||
|
||||
# --- Permissions ---
|
||||
|
||||
# User and group ID that Mealie runs as (match your host user to avoid permission issues)
|
||||
MEALIE_PUID=1000
|
||||
MEALIE_PGID=1000
|
||||
|
||||
# --- Network ---
|
||||
|
||||
# Host port to expose the Mealie web UI on
|
||||
MEALIE_PORT=9000
|
||||
|
||||
# --- Application ---
|
||||
|
||||
# Full public URL where Mealie is accessible (used for links in emails and API responses)
|
||||
MEALIE_BASE_URL=https://mealie.yourdomain.com
|
||||
|
||||
# Timezone for the container (affects scheduled tasks and timestamps)
|
||||
MEALIE_TZ=America/Los_Angeles
|
||||
|
||||
# Allow new users to self-register (true/false)
|
||||
MEALIE_ALLOW_SIGNUP=false
|
||||
|
||||
# Number of concurrent worker processes for the API server (tune to available CPU cores)
|
||||
MEALIE_UVICORN_WORKERS=4
|
||||
|
||||
# --- NFS Volume ---
|
||||
|
||||
# IP address or hostname of the NFS server
|
||||
MEALIE_NFS_SERVER=192.168.1.x
|
||||
|
||||
# NFS export path on the server (e.g. /mnt/pool/mealie)
|
||||
MEALIE_NFS_DEVICE=:/path/to/nfs/export
|
||||
@@ -0,0 +1,29 @@
|
||||
services:
|
||||
app:
|
||||
image: ghcr.io/mealie-recipes/mealie:${MEALIE_VERSION:-latest}
|
||||
container_name: mealie-app
|
||||
ports:
|
||||
- ${MEALIE_PORT:-9000}:9000
|
||||
volumes:
|
||||
- mealie-app:/app/data/
|
||||
environment:
|
||||
- ALLOW_SIGNUP=${MEALIE_ALLOW_SIGNUP:-false}
|
||||
- PUID=${MEALIE_PUID:-1000}
|
||||
- PGID=${MEALIE_PGID:-1000}
|
||||
- TZ=${MEALIE_TZ:-America/Los_Angeles}
|
||||
- BASE_URL=${MEALIE_BASE_URL}
|
||||
- UVICORN_WORKERS=${MEALIE_UVICORN_WORKERS:-4}
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 1000M
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
mealie-app:
|
||||
name: mealie-app
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: nfs
|
||||
o: "addr=${MEALIE_NFS_SERVER},rw,noatime,rsize=65536,wsize=65536,timeo=600,nfsvers=4"
|
||||
device: "${MEALIE_NFS_DEVICE}"
|
||||
@@ -0,0 +1,34 @@
|
||||
# MeTube Docker Compose - Environment Variables
|
||||
# Copy this file to .env and fill in your values
|
||||
|
||||
# --- Image ---
|
||||
|
||||
# MeTube image tag (use a specific version for stability, or 'latest')
|
||||
METUBE_VERSION=latest
|
||||
|
||||
# --- Permissions ---
|
||||
|
||||
# User and group ID that MeTube runs as (match your host user to avoid permission issues)
|
||||
METUBE_PUID=1000
|
||||
METUBE_PGID=1000
|
||||
|
||||
# File permission mask applied to downloaded files (022 = owner rw, group/others r)
|
||||
METUBE_UMASK=022
|
||||
|
||||
# --- Storage ---
|
||||
|
||||
# Host path where downloaded files will be saved
|
||||
METUBE_DOWNLOAD=/path/to/downloads
|
||||
|
||||
# --- Network ---
|
||||
|
||||
# Host port to expose the MeTube web UI on
|
||||
METUBE_PORT=8081
|
||||
|
||||
# --- Download Behavior ---
|
||||
|
||||
# Delete the file from disk when trashed in the UI (true/false)
|
||||
METUBE_DELETE_FILE_ON_TRASHCAN=true
|
||||
|
||||
# Seconds after completion before a finished download is removed from the queue (3600 = 1 hour, 0 = disabled)
|
||||
METUBE_CLEAR_COMPLETED_AFTER=3600
|
||||
@@ -0,0 +1,25 @@
|
||||
services:
|
||||
app:
|
||||
image: alexta69/metube:${METUBE_VERSION:-latest}
|
||||
container_name: metube-app
|
||||
environment:
|
||||
- PUID=${METUBE_PUID:-1000}
|
||||
- PGID=${METUBE_PGID:-1000}
|
||||
- UMASK=${METUBE_UMASK:-022}
|
||||
- DELETE_FILE_ON_TRASHCAN=${METUBE_DELETE_FILE_ON_TRASHCAN:-true}
|
||||
- CLEAR_COMPLETED_AFTER=${METUBE_CLEAR_COMPLETED_AFTER:-3600}
|
||||
volumes:
|
||||
- ${METUBE_DOWNLOAD}:/downloads
|
||||
ports:
|
||||
- ${METUBE_PORT}:8081
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8081/"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 512m
|
||||
restart: unless-stopped
|
||||
@@ -0,0 +1,41 @@
|
||||
# Pinchflat
|
||||
|
||||
# Docker image tag to use (e.g. "latest" or a pinned version like "v2024.5.30")
|
||||
PINCHFLAT_VERSION=latest
|
||||
|
||||
# IANA timezone name for the container (e.g. America/Chicago, America/New_York)
|
||||
PINCHFLAT_TZ=America/Los_Angeles
|
||||
|
||||
# Host port to expose the Pinchflat web UI on
|
||||
PINCHFLAT_PORT=8945
|
||||
|
||||
# Host path where downloaded media will be stored
|
||||
PINCHFLAT_DOWNLOAD=/path/to/downloads
|
||||
|
||||
# Auth - required for production
|
||||
|
||||
# Username for HTTP basic auth on the web UI
|
||||
PINCHFLAT_AUTH_USER=admin
|
||||
|
||||
# Password for HTTP basic auth — use a strong random value
|
||||
PINCHFLAT_AUTH_PASS=changeme
|
||||
|
||||
# Secret used to sign/encrypt session cookies — generate with: openssl rand -hex 64
|
||||
# Changing this will invalidate all active sessions
|
||||
PINCHFLAT_SECRET_KEY=
|
||||
|
||||
# Controls default permissions on created files (022 = owner rw, group/other r)
|
||||
PINCHFLAT_UMASK=022
|
||||
|
||||
# Bind mount only
|
||||
|
||||
# Host path for the config directory (SQLite DB, logs, metadata)
|
||||
PINCHFLAT_CONFIG=/path/to/config
|
||||
|
||||
# NFS only
|
||||
|
||||
# IP address or hostname of the NFS server
|
||||
PINCHFLAT_NFS_SERVER=192.168.1.x
|
||||
|
||||
# NFS export path on the server (e.g. :/mnt/pool/pinchflat)
|
||||
PINCHFLAT_NFS_DEVICE=:/path/to/nfs/share
|
||||
@@ -0,0 +1,22 @@
|
||||
services:
|
||||
app:
|
||||
image: keglin/pinchflat:${PINCHFLAT_VERSION:-latest}
|
||||
container_name: pinchflat-app
|
||||
environment:
|
||||
- TZ=${PINCHFLAT_TZ:-America/Los_Angeles}
|
||||
- LOG_LEVEL=info
|
||||
- YT_DLP_WORKER_CONCURRENCY=1
|
||||
- BASIC_AUTH_USERNAME=${PINCHFLAT_AUTH_USER:-admin}
|
||||
- BASIC_AUTH_PASSWORD=${PINCHFLAT_AUTH_PASS:-changeme}
|
||||
- SECRET_KEY_BASE=${PINCHFLAT_SECRET_KEY}
|
||||
- UMASK=${PINCHFLAT_UMASK:-022}
|
||||
ports:
|
||||
- ${PINCHFLAT_PORT:-8945}:8945
|
||||
volumes:
|
||||
- ${PINCHFLAT_CONFIG}:/config
|
||||
- ${PINCHFLAT_DOWNLOAD}:/downloads
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl --fail http://localhost:8945/healthcheck || exit 1"]
|
||||
interval: 30s
|
||||
start_period: 15s
|
||||
restart: unless-stopped
|
||||
@@ -0,0 +1,36 @@
|
||||
services:
|
||||
app:
|
||||
image: keglin/pinchflat:${PINCHFLAT_VERSION:-latest}
|
||||
container_name: pinchflat-app
|
||||
environment:
|
||||
- TZ=${PINCHFLAT_TZ:-America/Los_Angeles}
|
||||
- LOG_LEVEL=info
|
||||
- JOURNAL_MODE=delete
|
||||
- YT_DLP_WORKER_CONCURRENCY=1
|
||||
- BASIC_AUTH_USERNAME=${PINCHFLAT_AUTH_USER:-admin}
|
||||
- BASIC_AUTH_PASSWORD=${PINCHFLAT_AUTH_PASS:-changeme}
|
||||
- SECRET_KEY_BASE=${PINCHFLAT_SECRET_KEY}
|
||||
- UMASK=${PINCHFLAT_UMASK:-022}
|
||||
ports:
|
||||
- ${PINCHFLAT_PORT:-8945}:8945
|
||||
volumes:
|
||||
- pinchflat-app:/config
|
||||
- ${PINCHFLAT_DOWNLOAD}:/downloads
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl --fail http://localhost:8945/healthcheck || exit 1"]
|
||||
interval: 30s
|
||||
start_period: 15s
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 1G
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
pinchflat-app:
|
||||
name: pinchflat-app
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: nfs
|
||||
o: "addr=${PINCHFLAT_NFS_SERVER},rw,noatime,rsize=65536,wsize=65536,timeo=600,nfsvers=4"
|
||||
device: "${PINCHFLAT_NFS_DEVICE}"
|
||||
@@ -26,8 +26,11 @@ Feel free to use any of these as a starting point for your own setup. Each appli
|
||||
| IT-Tools | Collection of handy tools for developers and sysadmins | [Compose](./IT-Tools/docker-compose.yaml) | [Read the article](https://chns.tech/posts/2023/10-22-it-tools-handy-tools-for-developers/) |
|
||||
| Kanboard | Self-hosted Kanban project management board | [NFS](./Kanboard/docker-compose-nfs.yaml) | [Read the article](https://chns.tech/posts/2024/04-28-kanboard-project-management-software/) |
|
||||
| LinkStack | Self-hosted link-in-bio page builder | [NFS](./LinkStack/docker-compose-nfs.yaml) | [Read the article](https://chns.tech/posts/2024/02-04-linkstack-social-media-link-page/) |
|
||||
| MeTube | Self-hosted web UI for yt-dlp — download video and audio from YouTube and hundreds of other sites | [Compose](./Metube/docker-compose.yaml) | [Read the article](https://chns.tech/posts/2024/01-14-metube-youtube-downloader/) |
|
||||
| n8n | Open-source workflow automation platform with a visual node-based editor | [Volume](./n8n/docker-compose-volume.yaml) | [Read the article](#) |
|
||||
| Ntfy | Self-hosted push notification service via HTTP | [Bind](./Ntfy/docker-compose-bind.yaml) | [Read the article](https://chns.tech/posts/2026/05-08-ntfy-self-hosted-push-notifications/) |
|
||||
| OmniTools | Self-hosted collection of web-based utility tools | [Compose](./OmniTools/docker-compose.yaml) | [Read the article](#) |
|
||||
| Pinchflat | Self-hosted YouTube subscription manager that downloads content automatically like a podcast feed | [NFS](./Pinchflat/docker-compose-nfs.yaml) · [Bind](./Pinchflat/docker-compose-bind.yaml) | [Read the article](https://chns.tech/posts/2024/06-30-pinchflat-channel-monitoring-youtube-downloader/) |
|
||||
| Seerr | Media request management tool for self-hosted media servers | [Compose](./Seerr/docker-compose.yaml) · [NFS](./Seerr/docker-compose-nfs.yaml) | [Read the article](#) |
|
||||
| SearXNG | Privacy-respecting, self-hosted metasearch engine | [Bind](./SearXNG/docker-compose-bind.yaml) | [Read the article](https://chns.tech/posts/2024/06-23-searxng-internet-metasearch-engine/) |
|
||||
| Unifi-Network-Application | UniFi Network controller for managing Ubiquiti network devices | [NFS](./Unifi-Network-Application/docker-compose-nfs.yaml) | [Read the article](#) |
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ N8N_APP_VERSION=latest
|
||||
N8N_DB_VERSION=16
|
||||
|
||||
# Timezone for the n8n container (IANA format)
|
||||
N8N_TZ=America/Chicago
|
||||
N8N_TZ=America/Los_Angeles
|
||||
|
||||
# Password for the PostgreSQL n8n user (used by both app and db services)
|
||||
N8N_DB_PASSWORD=changeme
|
||||
|
||||
@@ -17,7 +17,18 @@ services:
|
||||
ports:
|
||||
- ${N8N_PORT:-5678}:5678
|
||||
depends_on:
|
||||
- db
|
||||
db:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "wget -qO- http://localhost:5678/healthz || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 512m
|
||||
restart: unless-stopped
|
||||
|
||||
db:
|
||||
@@ -29,8 +40,20 @@ services:
|
||||
- POSTGRES_PASSWORD=${N8N_DB_PASSWORD:-changeme}
|
||||
volumes:
|
||||
- n8n-db:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U n8n -d n8n"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 10s
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 512m
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
n8n-app:
|
||||
name: n8n-app
|
||||
n8n-db:
|
||||
name: n8n-db
|
||||
Reference in New Issue
Block a user