a nice production stack on my laptop for my personal velociy system
This commit is contained in:
13
released-to-production/atomichabits/docker-compose.yml
Normal file
13
released-to-production/atomichabits/docker-compose.yml
Normal file
@@ -0,0 +1,13 @@
|
||||
version: '3.8'
|
||||
services:
|
||||
tsys-atomichabits:
|
||||
image: ghcr.io/majorpeter/atomic-tracker:latest
|
||||
container_name: reachableceo-atomichabits
|
||||
ports:
|
||||
- "2008:8080"
|
||||
volumes:
|
||||
- tsys-atomichabits:/config
|
||||
restart: no
|
||||
|
||||
volumes:
|
||||
tsys-atomichabits:
|
9
released-to-production/easy-gate/docker-compose.yml
Normal file
9
released-to-production/easy-gate/docker-compose.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
services:
|
||||
easy-gate:
|
||||
image: r7wx/easy-gate:latest
|
||||
container_name: reachableceo-easy-gate
|
||||
restart: always
|
||||
ports:
|
||||
- 2005:8080
|
||||
volumes:
|
||||
- ./easy-gate.json:/etc/easy-gate/easy-gate.json
|
85
released-to-production/easy-gate/easy-gate.json
Normal file
85
released-to-production/easy-gate/easy-gate.json
Normal file
@@ -0,0 +1,85 @@
|
||||
{
|
||||
"addr": "0.0.0.0:8080",
|
||||
"use_tls": false,
|
||||
"cert_file": "",
|
||||
"key_file": "",
|
||||
"behind_proxy": false,
|
||||
"title": "ReachableCEO Laptop Dashboard",
|
||||
"theme": {
|
||||
"background": "#FFFFFF",
|
||||
"foreground": "#000000"
|
||||
},
|
||||
"groups": [
|
||||
{
|
||||
"name": "internal",
|
||||
"subnet": "192.168.1.1/24"
|
||||
},
|
||||
{
|
||||
"name": "vpn",
|
||||
"subnet": "10.8.1.1/24"
|
||||
}
|
||||
],
|
||||
"services": [
|
||||
{
|
||||
"name": "WAKAAPI Dashboard",
|
||||
"category": "",
|
||||
"url": "http://tsys1:2001",
|
||||
},
|
||||
{
|
||||
"name": "Metrics Dashboard",
|
||||
"category": "",
|
||||
"url": "http://tsys1:2002",
|
||||
},
|
||||
{
|
||||
"name": "wger-Workout Tracking",
|
||||
"category": "",
|
||||
"url": "http://tsys1:2003",
|
||||
},
|
||||
{
|
||||
"name": "Tube Archivist",
|
||||
"category": "",
|
||||
"url": "http://tsys1:2004",
|
||||
},
|
||||
{
|
||||
"name": "VsCode Server",
|
||||
"category": "",
|
||||
"url": "http://tsys1:2006",
|
||||
},
|
||||
{
|
||||
"name": "Reactive Resume",
|
||||
"category": "",
|
||||
"url": "http://tsys1:2007",
|
||||
},
|
||||
{
|
||||
"name": "Atomic Habits",
|
||||
"category": "",
|
||||
"url": "http://tsys1:2008"
|
||||
},
|
||||
{
|
||||
"name": "Cleanslate",
|
||||
"category": "",
|
||||
"url": "http://tsys1:2010"
|
||||
},
|
||||
{
|
||||
"name": "Influxdb",
|
||||
"category": "",
|
||||
"url": "http://tsys1:4000",
|
||||
},
|
||||
],
|
||||
"notes": [
|
||||
{
|
||||
"name": "Simple note",
|
||||
"text": "This is a simple note for vpn users",
|
||||
"groups": [
|
||||
"vpn"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Another note",
|
||||
"text": "Another note for internal users only",
|
||||
"groups": [
|
||||
"internal"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
114
released-to-production/reactive-resume/docker-compose.yml
Normal file
114
released-to-production/reactive-resume/docker-compose.yml
Normal file
@@ -0,0 +1,114 @@
|
||||
|
||||
# In this Docker Compose example, it assumes that you maintain a reverse proxy externally (or chose not to).
|
||||
# The only two exposed ports here are from minio (:9000) and the app itself (:3000).
|
||||
# If these ports are changed, ensure that the env vars passed to the app are also changed accordingly.
|
||||
|
||||
services:
|
||||
# Database (Postgres)
|
||||
reactiveresume-postgres:
|
||||
image: postgres:16-alpine
|
||||
container_name: tsys-reactiveresume-postgres
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- tsys-reactiveresume-postgres_data:/var/lib/postgresql/data
|
||||
environment:
|
||||
POSTGRES_DB: postgres
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U postgres -d postgres"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
# Storage (for image uploads)
|
||||
reactiveresume-minio:
|
||||
image: minio/minio
|
||||
container_name: tsys-reactiveresume-minio
|
||||
restart: unless-stopped
|
||||
command: server /data
|
||||
ports:
|
||||
- "9000:9000"
|
||||
volumes:
|
||||
- tsys-reactiveresume-minio_data:/data
|
||||
environment:
|
||||
MINIO_ROOT_USER: minioadmin
|
||||
MINIO_ROOT_PASSWORD: minioadmin
|
||||
|
||||
# Chrome Browser (for printing and previews)
|
||||
reactiveresume-chrome:
|
||||
image: ghcr.io/browserless/chromium:latest
|
||||
container_name: tsys-reactiveresume-chrome
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
TIMEOUT: 10000
|
||||
CONCURRENT: 10
|
||||
TOKEN: chrome_token
|
||||
EXIT_ON_HEALTH_FAILURE: true
|
||||
PRE_REQUEST_HEALTH_CHECK: true
|
||||
|
||||
reactiveresume-app:
|
||||
image: amruthpillai/reactive-resume:latest
|
||||
container_name: tsys-reactiveresume-app
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "2007:3000"
|
||||
depends_on:
|
||||
- reactiveresume-postgres
|
||||
- reactiveresume-minio
|
||||
- reactiveresume-chrome
|
||||
environment:
|
||||
# -- Environment Variables --
|
||||
PORT: 3000
|
||||
NODE_ENV: production
|
||||
|
||||
# -- URLs --
|
||||
PUBLIC_URL: http://localhost:2007
|
||||
STORAGE_URL: http://localhost:9000/default
|
||||
|
||||
# -- Printer (Chrome) --
|
||||
CHROME_TOKEN: chrome_token
|
||||
CHROME_URL: ws://tsys-reactiveresume-chrome:3000
|
||||
|
||||
# -- Database (Postgres) --
|
||||
DATABASE_URL: postgresql://postgres:postgres@tsys-reactiveresume-postgres:5432/postgres
|
||||
|
||||
# -- Auth --
|
||||
ACCESS_TOKEN_SECRET: access_token_secret
|
||||
REFRESH_TOKEN_SECRET: refresh_token_secret
|
||||
|
||||
# -- Emails --
|
||||
MAIL_FROM: noreply@localhost
|
||||
# SMTP_URL: smtp://user:pass@smtp:587 # Optional
|
||||
|
||||
# -- Storage (Minio) --
|
||||
STORAGE_ENDPOINT: tsys-reactiveresume-minio
|
||||
STORAGE_PORT: 9000
|
||||
STORAGE_REGION: us-east-1 # Optional
|
||||
STORAGE_BUCKET: default
|
||||
STORAGE_ACCESS_KEY: minioadmin
|
||||
STORAGE_SECRET_KEY: minioadmin
|
||||
STORAGE_USE_SSL: false
|
||||
STORAGE_SKIP_BUCKET_CHECK: false
|
||||
|
||||
# -- Crowdin (Optional) --
|
||||
# CROWDIN_PROJECT_ID:
|
||||
# CROWDIN_PERSONAL_TOKEN:
|
||||
|
||||
# -- Email (Optional) --
|
||||
# DISABLE_SIGNUPS: false
|
||||
# DISABLE_EMAIL_AUTH: false
|
||||
|
||||
# -- GitHub (Optional) --
|
||||
# GITHUB_CLIENT_ID: github_client_id
|
||||
# GITHUB_CLIENT_SECRET: github_client_secret
|
||||
# GITHUB_CALLBACK_URL: http://localhost:3000/api/auth/github/callback
|
||||
|
||||
# -- Google (Optional) --
|
||||
# GOOGLE_CLIENT_ID: google_client_id
|
||||
# GOOGLE_CLIENT_SECRET: google_client_secret
|
||||
# GOOGLE_CALLBACK_URL: http://localhost:3000/api/auth/google/callback
|
||||
|
||||
volumes:
|
||||
tsys-reactiveresume-minio_data:
|
||||
tsys-reactiveresume-postgres_data:
|
63
released-to-production/tube-archivist/docker-compose.yml
Normal file
63
released-to-production/tube-archivist/docker-compose.yml
Normal file
@@ -0,0 +1,63 @@
|
||||
services:
|
||||
tubearchivist:
|
||||
container_name: tubearchivist
|
||||
restart: unless-stopped
|
||||
image: bbilly1/tubearchivist
|
||||
ports:
|
||||
- 2004:8000
|
||||
volumes:
|
||||
- tubearchivist-media:/youtube
|
||||
- tubearchivist-cache:/cache
|
||||
environment:
|
||||
- ES_URL=http://tubearchivist-es:9200 # needs protocol e.g. http and port
|
||||
- REDIS_HOST=tubearchivist-redis # don't add protocol
|
||||
- HOST_UID=1000
|
||||
- HOST_GID=1000
|
||||
- TA_HOST=tsys1 # set your host name
|
||||
- TA_USERNAME=tubearchivist # your initial TA credentials
|
||||
- TA_PASSWORD=verysecret # your initial TA credentials
|
||||
- ELASTIC_PASSWORD=verysecret # set password for Elasticsearch
|
||||
- TZ=America/Chicago # set your time zone
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:2004/health"]
|
||||
interval: 2m
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
depends_on:
|
||||
- tubearchivist-es
|
||||
- tubearchivist-redis
|
||||
tubearchivist-redis:
|
||||
image: redis/redis-stack-server
|
||||
container_name: tubearchivist-redis
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- "6379"
|
||||
volumes:
|
||||
- tubearchivist-redis:/data
|
||||
depends_on:
|
||||
- tubearchivist-es
|
||||
tubearchivist-es:
|
||||
image: bbilly1/tubearchivist-es # only for amd64, or use official es 8.14.3
|
||||
container_name: tubearchivist-es
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- "ELASTIC_PASSWORD=verysecret" # matching Elasticsearch password
|
||||
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
|
||||
- "xpack.security.enabled=true"
|
||||
- "discovery.type=single-node"
|
||||
- "path.repo=/usr/share/elasticsearch/data/snapshot"
|
||||
ulimits:
|
||||
memlock:
|
||||
soft: -1
|
||||
hard: -1
|
||||
volumes:
|
||||
- tubearchivist-es:/usr/share/elasticsearch/data # check for permission error when using bind mount, see readme
|
||||
expose:
|
||||
- "9200"
|
||||
|
||||
volumes:
|
||||
tubearchivist-media:
|
||||
tubearchivist-cache:
|
||||
tubearchivist-redis:
|
||||
tubearchivist-es:
|
12
released-to-production/vscode-server/docker-compose.yml
Normal file
12
released-to-production/vscode-server/docker-compose.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
services:
|
||||
tsys-vscode-server:
|
||||
image: gitpod/openvscode-server
|
||||
container_name: reachableceo-vscode-server
|
||||
restart: always
|
||||
ports:
|
||||
- 2006:3000
|
||||
volumes:
|
||||
- tsys-vscode-server:/home/workspace:cached
|
||||
|
||||
volumes:
|
||||
tsys-vscode-server:
|
15
released-to-production/wakaapi/docker-compose.yml
Normal file
15
released-to-production/wakaapi/docker-compose.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
version: '3.8'
|
||||
services:
|
||||
wakaapi-tsys:
|
||||
image: ghcr.io/muety/wakapi:latest
|
||||
container_name: reachableceo-wakaapi
|
||||
environment:
|
||||
- WAKAPI_PASSWORD_SALT=1234
|
||||
volumes:
|
||||
- reachableceo-wakapi-data:/data
|
||||
ports:
|
||||
- "2001:3000"
|
||||
restart: always
|
||||
|
||||
volumes:
|
||||
reachableceo-wakapi-data:
|
Reference in New Issue
Block a user