Compare commits
193 Commits
279f35f7e9
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5551273f02 | ||
|
|
8a9998ec82 | ||
| 4ecaf941ab | |||
| 621855f358 | |||
|
|
caa48a711a | ||
|
|
264413ebfd | ||
|
|
5cb4924656 | ||
| 4096c9e8ec | |||
| e6ffdf05fa | |||
|
|
1033be0ace | ||
|
|
160cb33802 | ||
| 0ad13bb6d4 | |||
| 79598b58f3 | |||
| 81b5faf24b | |||
| 1f11d757b9 | |||
|
|
f462f02186 | ||
|
|
1134931b0d | ||
|
|
4f0c36116a | ||
|
|
7d2569cd29 | ||
| 948076c855 | |||
| dcf7a52826 | |||
| caaffede93 | |||
| c9d8ea3247 | |||
| ecb7afa10a | |||
| 2a4a73b712 | |||
|
|
c46998c3f1 | ||
|
|
80fcd1103f | ||
|
|
ae2466d8f4 | ||
|
|
051bd480bf | ||
|
|
de9b8d8de8 | ||
| b0d631ac0e | |||
| 2ca2dccb9e | |||
| 9258764f78 | |||
| 5f1b95d4d4 | |||
| ce1e53a29f | |||
| e0468e34dd | |||
|
|
11b4a39955 | ||
|
|
59f227936d | ||
|
|
540eed20fc | ||
|
|
e36cd570cc | ||
|
|
a1f6c22cec | ||
| c45d67e3df | |||
| 1948c02f18 | |||
| 967233ffa6 | |||
| 4cf9b0713a | |||
| e688ba0110 | |||
| fe8ec0e3e8 | |||
|
|
23b0d1af5c | ||
|
|
c1eb2f15cb | ||
| 5bfa160d29 | |||
| 5bc70f6cce | |||
|
|
b9856e16db | ||
|
|
c6c4af0b35 | ||
|
|
db0ba9988f | ||
|
|
0f32669ed5 | ||
| 9628167fb9 | |||
| ca6353f375 | |||
|
|
cfc8bcd306 | ||
|
|
9e5cd238f3 | ||
|
|
96fa190d52 | ||
|
|
d735f5e310 | ||
| 916bfa53a2 | |||
| 03fb4155c7 | |||
| 6478592b59 | |||
| 13c57d685f | |||
|
|
064b76b892 | ||
|
|
8d446c0126 | ||
| 5b75e245d9 | |||
| 209ea8a867 | |||
|
|
26939558ee | ||
|
|
5c17af8ed7 | ||
| 261c420bbf | |||
| 7e48a8450c | |||
|
|
11c9f1dcc4 | ||
|
|
029553b910 | ||
| 663f02bae0 | |||
|
|
c222574b63 | ||
|
|
17433c93b2 | ||
|
|
c5052ead02 | ||
|
|
8036f0601f | ||
| 4ac1007b5b | |||
| 5b3c66bbf0 | |||
|
|
bdf9578b78 | ||
|
|
91fc229856 | ||
| 1e0470c79a | |||
| cd04f0563c | |||
|
|
51e5bf13db | ||
|
|
fc8ecd119b | ||
| 95ef2f21f4 | |||
| 416b8616cf | |||
|
|
8cd806d4bd | ||
|
|
fe64784b82 | ||
| d54ce9000e | |||
| dedf653fa0 | |||
|
|
a957e7c256 | ||
|
|
8c85e1e10d | ||
| 9accb73198 | |||
| 7ea78420d4 | |||
| d20e312c92 | |||
| d6c67bfe14 | |||
|
|
9ef370d983 | ||
|
|
c388dec33d | ||
|
|
310b0c9534 | ||
| f4863e897f | |||
|
|
aec019fff2 | ||
| 746b8b419c | |||
| c47117d3a6 | |||
| 573caeaa42 | |||
|
|
2bd74c9f8c | ||
|
|
72fd259006 | ||
|
|
ed43046811 | ||
|
|
eaa996f117 | ||
|
|
8d23c2c0f5 | ||
|
|
6bb1159d85 | ||
| bc10065147 | |||
| 485c17ab9f | |||
|
|
b2cc33a63b | ||
|
|
5243527119 | ||
|
|
25b2b7198d | ||
|
|
5e6184502a | ||
|
|
eba54706d1 | ||
|
|
499aa614f4 | ||
|
|
78547623b5 | ||
|
|
969b16136a | ||
| 019862d1c4 | |||
| 32cb44d8fc | |||
| 5d497f0887 | |||
|
|
511cb80900 | ||
|
|
2038a34008 | ||
|
|
7e6f9a6dad | ||
|
|
58d5a4f033 | ||
|
|
a6dde041a6 | ||
|
|
1a73ba35af | ||
|
|
f601ab02da | ||
|
|
46fe423058 | ||
|
|
a8b440c4f2 | ||
|
|
b517e3f0a6 | ||
| 8898ddb3c2 | |||
| 365096ab12 | |||
| c683451235 | |||
|
|
81578d3180 | ||
|
|
e5a67ed0ba | ||
| e4dfb24d7e | |||
|
|
2a5d92b8ab | ||
|
|
413dc45652 | ||
|
|
122a1c9139 | ||
| 299b01a03e | |||
| 566359efa4 | |||
|
|
aae7300424 | ||
|
|
d105050830 | ||
| 5acefd094e | |||
|
|
2fb1a3ff47 | ||
| 9d5a57c81d | |||
| d61fa09cef | |||
| 34e4eaa029 | |||
| c5f92c9411 | |||
| 0b354d937a | |||
|
|
debd7834fc | ||
| a668b5dba7 | |||
| e9e2dca344 | |||
|
|
90b305fe33 | ||
|
|
e4eec8a487 | ||
| 9925ed05ff | |||
| 34440c3792 | |||
|
|
113bf1988e | ||
|
|
1e5f8b25f2 | ||
| 882491a48d | |||
| c9268738fa | |||
| da9c1380b1 | |||
|
|
7b92eaa090 | ||
|
|
45b1fe7008 | ||
|
|
64057945f1 | ||
|
|
dd6285eeb7 | ||
|
|
c3c9776bb4 | ||
| f3e715275a | |||
|
|
3884644dfc | ||
| 37fca8eb77 | |||
|
|
c570f52fb8 | ||
| 1f541189a6 | |||
| d706fcdcd8 | |||
| 819f145200 | |||
| 9598316e7d | |||
| 8a04ba27d4 | |||
|
|
6aec3c1f25 | ||
|
|
0128da950f | ||
|
|
7277c47ad9 | ||
|
|
003b9db402 | ||
|
|
29446b72c3 | ||
|
|
0e2c6a889a | ||
| def08d6c00 | |||
| f37d9e1a68 | |||
|
|
4e0012ba18 | ||
|
|
ebfe68c838 |
0
aiworkshop.md
Normal file
0
aiworkshop.md
Normal file
@@ -1,6 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
audiobookshelf:
|
audiobookshelf:
|
||||||
image: ghcr.io/advplyr/audiobookshelf:2.30.0
|
image: ghcr.io/advplyr/audiobookshelf:2.33.1
|
||||||
restart: always
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
- 13378:80
|
- 13378:80
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
version: '3.8'
|
|
||||||
services:
|
services:
|
||||||
# Redis service for RQ (task queue)
|
# Redis service for RQ (task queue)
|
||||||
audiomuse-ai-redis:
|
audiomuse-ai-redis:
|
||||||
image: redis:7-alpine
|
image: redis:8-alpine
|
||||||
container_name: audiomuse-redis
|
container_name: audiomuse-redis
|
||||||
ports:
|
ports:
|
||||||
- "6379:6379" # Expose Redis port to the host
|
- "6379:6379" # Expose Redis port to the host
|
||||||
@@ -22,8 +21,8 @@ services:
|
|||||||
POSTGRES_USER: ${AUDIOMUSE_POSTGRES_USER}
|
POSTGRES_USER: ${AUDIOMUSE_POSTGRES_USER}
|
||||||
POSTGRES_PASSWORD: ${AUDIOMUSE_POSTGRES_PASSWORD}
|
POSTGRES_PASSWORD: ${AUDIOMUSE_POSTGRES_PASSWORD}
|
||||||
POSTGRES_DB: ${AUDIOMUSE_POSTGRES_DB}
|
POSTGRES_DB: ${AUDIOMUSE_POSTGRES_DB}
|
||||||
# ports:
|
ports:
|
||||||
# - "5432:5432" # Expose PostgreSQL port to the host
|
- "5435:5432" # Expose PostgreSQL port to the host
|
||||||
volumes:
|
volumes:
|
||||||
- postgres-data:/var/lib/postgresql/data # Persistent storage for PostgreSQL data
|
- postgres-data:/var/lib/postgresql/data # Persistent storage for PostgreSQL data
|
||||||
networks:
|
networks:
|
||||||
@@ -32,7 +31,7 @@ services:
|
|||||||
|
|
||||||
# AudioMuse-AI Flask application service
|
# AudioMuse-AI Flask application service
|
||||||
audiomuse-ai-flask:
|
audiomuse-ai-flask:
|
||||||
image: ghcr.io/neptunehub/audiomuse-ai:0.8.2 # Reflects deployment.yaml
|
image: ghcr.io/neptunehub/audiomuse-ai:0.9.5 # Reflects deployment.yaml
|
||||||
container_name: audiomuse-ai-flask-app
|
container_name: audiomuse-ai-flask-app
|
||||||
ports:
|
ports:
|
||||||
- "8013:8000"
|
- "8013:8000"
|
||||||
@@ -70,7 +69,7 @@ services:
|
|||||||
|
|
||||||
# AudioMuse-AI RQ Worker service
|
# AudioMuse-AI RQ Worker service
|
||||||
audiomuse-ai-worker:
|
audiomuse-ai-worker:
|
||||||
image: ghcr.io/neptunehub/audiomuse-ai:0.8.2 # Reflects deployment.yaml
|
image: ghcr.io/neptunehub/audiomuse-ai:0.9.5 # Reflects deployment.yaml
|
||||||
container_name: audiomuse-ai-worker-instance
|
container_name: audiomuse-ai-worker-instance
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
BAIKAL_CONFIG_DIR=
|
|
||||||
BAIKAL_DATA_DIR=
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
services:
|
|
||||||
baikal:
|
|
||||||
image: ckulka/baikal:0.10.1-nginx
|
|
||||||
restart: always
|
|
||||||
ports:
|
|
||||||
- "8083:80"
|
|
||||||
volumes:
|
|
||||||
- ${BAIKAL_CONFIG_DIR}:/var/www/baikal/config
|
|
||||||
- ${BAIKAL_DATA_DIR}:/var/www/baikal/Specific
|
|
||||||
env_file:
|
|
||||||
- .env
|
|
||||||
11
central-database/.env.example
Normal file
11
central-database/.env.example
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
POSTGRES_ADMIN_PASSWORD=
|
||||||
|
|
||||||
|
MATRIX_SYNAPSE_USER_PASSWORD=
|
||||||
|
MATRIX_MAS_USER_PASSWORD=
|
||||||
|
MATRIX_SIGNAL_USER_PASSWORD=
|
||||||
|
MATRIX_WHATSAPP_USER_PASSWORD=
|
||||||
|
PAPERLESS_USER_PASSWORD=
|
||||||
|
IMMICH_USER_PASSWORD=
|
||||||
|
SHLINK_USER_PASSWORD=
|
||||||
|
SPLIIT_USER_PASSWORD=
|
||||||
|
AUDIOMUSE_USER_PASSWORD=
|
||||||
43
central-database/Dockerfile
Normal file
43
central-database/Dockerfile
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
# PostgreSQL 18 with pgvector and vectorchord extensions
|
||||||
|
FROM postgres:18-alpine
|
||||||
|
|
||||||
|
# Install build dependencies
|
||||||
|
RUN apk add --no-cache --virtual .build-deps \
|
||||||
|
gcc \
|
||||||
|
musl-dev \
|
||||||
|
postgresql-dev \
|
||||||
|
make \
|
||||||
|
git \
|
||||||
|
cmake \
|
||||||
|
clang \
|
||||||
|
openssl-dev \
|
||||||
|
libxml2-dev \
|
||||||
|
libxslt-dev \
|
||||||
|
python3 \
|
||||||
|
py3-pip \
|
||||||
|
build-base
|
||||||
|
|
||||||
|
# Install pgvector extension
|
||||||
|
RUN git clone --branch v0.7.3 https://github.com/pgvector/pgvector.git /tmp/pgvector \
|
||||||
|
&& cd /tmp/pgvector \
|
||||||
|
&& make \
|
||||||
|
&& make install
|
||||||
|
|
||||||
|
# Install vectorchord extension (for Immich)
|
||||||
|
RUN git clone --branch v0.3.0 https://github.com/vectorchord/pg_vectorscale.git /tmp/pg_vectorscale \
|
||||||
|
&& cd /tmp/pg_vectorscale \
|
||||||
|
&& make \
|
||||||
|
&& make install
|
||||||
|
|
||||||
|
# Clean up build dependencies
|
||||||
|
RUN apk del .build-deps \
|
||||||
|
&& rm -rf /tmp/* \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Configure PostgreSQL to load extensions
|
||||||
|
RUN echo "shared_preload_libraries = 'pg_vectorscale,vector'" >> /var/lib/postgresql/data/postgresql.conf
|
||||||
|
|
||||||
|
COPY init-postgres.sh /docker-entrypoint-initdb.d/
|
||||||
|
|
||||||
|
EXPOSE 5432
|
||||||
|
CMD ["postgres"]
|
||||||
215
central-database/MIGRATION_GUIDE.md
Normal file
215
central-database/MIGRATION_GUIDE.md
Normal file
@@ -0,0 +1,215 @@
|
|||||||
|
# Service Configuration Migration Guide
|
||||||
|
|
||||||
|
This guide shows how to update each service to use the central PostgreSQL database.
|
||||||
|
|
||||||
|
## Service-Specific Configuration Updates
|
||||||
|
|
||||||
|
### 1. Synapse Matrix
|
||||||
|
|
||||||
|
**Current configuration in `synapse/docker-compose.yml`:**
|
||||||
|
```yaml
|
||||||
|
synapse_db:
|
||||||
|
image: docker.io/library/postgres:17
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- ${SYNAPSE_POSTGRES_DATA_DIR}:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
POSTGRES_DB: ${SYNAPSE_POSTGRES_DB}
|
||||||
|
POSTGRES_USER: ${SYNAPSE_POSTGRES_USER}
|
||||||
|
POSTGRES_PASSWORD: ${SYNAPSE_POSTGRES_PASSWORD}
|
||||||
|
POSTGRES_INITDB_ARGS: '--encoding=UTF-8 --locale=C'
|
||||||
|
ports:
|
||||||
|
- 5442:5432
|
||||||
|
|
||||||
|
synapse:
|
||||||
|
# ... other config ...
|
||||||
|
environment:
|
||||||
|
POSTGRES_HOST: synapse_db
|
||||||
|
POSTGRES_PORT: 5432
|
||||||
|
POSTGRES_DB: ${SYNAPSE_POSTGRES_DB}
|
||||||
|
POSTGRES_USER: ${SYNAPSE_POSTGRES_USER}
|
||||||
|
POSTGRES_PASSWORD: ${SYNAPSE_POSTGRES_PASSWORD}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Updated configuration:**
|
||||||
|
```yaml
|
||||||
|
# Remove the synapse_db service entirely
|
||||||
|
|
||||||
|
synapse:
|
||||||
|
# ... other config ...
|
||||||
|
environment:
|
||||||
|
POSTGRES_HOST: postgres
|
||||||
|
POSTGRES_PORT: 5432
|
||||||
|
POSTGRES_DB: synapse
|
||||||
|
POSTGRES_USER: synapse_user
|
||||||
|
POSTGRES_PASSWORD: ${SYNAPSE_POSTGRES_PASSWORD}
|
||||||
|
depends_on:
|
||||||
|
- postgres # Add this dependency
|
||||||
|
networks:
|
||||||
|
- default # Ensure same network as postgres container
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Paperless
|
||||||
|
|
||||||
|
**Current configuration in `paperless/docker-compose.yml`:**
|
||||||
|
```yaml
|
||||||
|
db:
|
||||||
|
image: docker.io/library/postgres:17
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- ${PAPERLESS_POSTGRES_DATA_DIR}:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
POSTGRES_DB: ${PAPERLESS_POSTGRES_DB}
|
||||||
|
POSTGRES_USER: ${PAPERLESS_POSTGRES_USER}
|
||||||
|
POSTGRES_PASSWORD: ${PAPERLESS_POSTGRES_PASSWORD}
|
||||||
|
ports:
|
||||||
|
- 5434:5432
|
||||||
|
|
||||||
|
paperless:
|
||||||
|
# ... other config ...
|
||||||
|
environment:
|
||||||
|
PAPERLESS_DBHOST: db
|
||||||
|
PAPERLESS_DBNAME: ${PAPERLESS_POSTGRES_DB}
|
||||||
|
PAPERLESS_DBUSER: ${PAPERLESS_POSTGRES_USER}
|
||||||
|
PAPERLESS_DBPASS: ${PAPERLESS_POSTGRES_PASSWORD}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Updated configuration:**
|
||||||
|
```yaml
|
||||||
|
# Remove the db service entirely
|
||||||
|
|
||||||
|
paperless:
|
||||||
|
# ... other config ...
|
||||||
|
environment:
|
||||||
|
PAPERLESS_DBHOST: postgres
|
||||||
|
PAPERLESS_DBNAME: paperless
|
||||||
|
PAPERLESS_DBUSER: paperless_user
|
||||||
|
PAPERLESS_DBPASS: ${PAPERLESS_POSTGRES_PASSWORD}
|
||||||
|
depends_on:
|
||||||
|
- postgres # Add this dependency
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Immich
|
||||||
|
|
||||||
|
**Current configuration in `immich/docker-compose.yml`:**
|
||||||
|
```yaml
|
||||||
|
database:
|
||||||
|
container_name: immich_postgres
|
||||||
|
image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: ${IMMICH_POSTGRES_USER}
|
||||||
|
POSTGRES_PASSWORD: ${IMMICH_POSTGRES_PASSWORD}
|
||||||
|
POSTGRES_DB: ${IMMICH_POSTGRES_DB}
|
||||||
|
POSTGRES_INITDB_ARGS: '--data-checksums'
|
||||||
|
ports:
|
||||||
|
- 5433:5432
|
||||||
|
volumes:
|
||||||
|
- ${IMMICH_DB_LOCATION}:/var/lib/postgresql/data
|
||||||
|
|
||||||
|
immich-server:
|
||||||
|
# ... other config ...
|
||||||
|
environment:
|
||||||
|
DB_HOSTNAME: ${IMMICH_DB_HOSTNAME}
|
||||||
|
DB_USERNAME: ${IMMICH_POSTGRES_USER}
|
||||||
|
DB_PASSWORD: ${IMMICH_POSTGRES_PASSWORD}
|
||||||
|
DB_DATABASE_NAME: ${IMMICH_POSTGRES_DB}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Updated configuration:**
|
||||||
|
```yaml
|
||||||
|
# Remove the database service entirely
|
||||||
|
|
||||||
|
immich-server:
|
||||||
|
# ... other config ...
|
||||||
|
environment:
|
||||||
|
DB_HOSTNAME: postgres
|
||||||
|
DB_USERNAME: immich_user
|
||||||
|
DB_PASSWORD: ${IMMICH_POSTGRES_PASSWORD}
|
||||||
|
DB_DATABASE_NAME: immich
|
||||||
|
depends_on:
|
||||||
|
- postgres # Add this dependency
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Shlink
|
||||||
|
|
||||||
|
**Current configuration in `shlink/docker-compose.yml`:**
|
||||||
|
```yaml
|
||||||
|
shlink_db:
|
||||||
|
image: postgres:17
|
||||||
|
container_name: shlink_db
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- ${SHLINK_POSTGRES_DIR}:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
POSTGRES_DB: ${SHLINK_POSTGRES_DB}
|
||||||
|
POSTGRES_USER: ${SHLINK_POSTGRES_USER}
|
||||||
|
POSTGRES_PASSWORD: ${SHLINK_POSTGRES_PASSWORD}
|
||||||
|
ports:
|
||||||
|
- 5436:5432
|
||||||
|
|
||||||
|
shlink:
|
||||||
|
# ... other config ...
|
||||||
|
environment:
|
||||||
|
DB_HOST: shlink_db
|
||||||
|
DB_NAME: ${SHLINK_POSTGRES_DB}
|
||||||
|
DB_USER: ${SHLINK_POSTGRES_USER}
|
||||||
|
DB_PASSWORD: ${SHLINK_POSTGRES_PASSWORD}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Updated configuration:**
|
||||||
|
```yaml
|
||||||
|
# Remove the shlink_db service entirely
|
||||||
|
|
||||||
|
shlink:
|
||||||
|
# ... other config ...
|
||||||
|
environment:
|
||||||
|
DB_HOST: postgres
|
||||||
|
DB_NAME: shlink
|
||||||
|
DB_USER: shlink_user
|
||||||
|
DB_PASSWORD: ${SHLINK_POSTGRES_PASSWORD}
|
||||||
|
depends_on:
|
||||||
|
- postgres # Add this dependency
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
```
|
||||||
|
|
||||||
|
## General Pattern
|
||||||
|
|
||||||
|
For each service:
|
||||||
|
|
||||||
|
1. **Remove** the service-specific database container
|
||||||
|
2. **Update** the main service container's environment variables:
|
||||||
|
- `POSTGRES_HOST`/`DB_HOST` → `postgres`
|
||||||
|
- `POSTGRES_PORT`/`DB_PORT` → `5432`
|
||||||
|
- `POSTGRES_DB`/`DB_NAME` → `<service_name>` (e.g., `synapse`, `paperless`)
|
||||||
|
- `POSTGRES_USER`/`DB_USER` → `<service_name>_user`
|
||||||
|
- `POSTGRES_PASSWORD`/`DB_PASSWORD` → `${SERVICE_POSTGRES_PASSWORD}` (keep existing)
|
||||||
|
|
||||||
|
3. **Add dependency** on `postgres` service
|
||||||
|
4. **Update network** configuration if needed (ensure services can reach postgres container)
|
||||||
|
|
||||||
|
## Testing Migration
|
||||||
|
|
||||||
|
After updating each service:
|
||||||
|
|
||||||
|
1. **Stop the service**: `docker-compose down`
|
||||||
|
2. **Start with new config**: `docker-compose up -d`
|
||||||
|
3. **Check logs**: `docker-compose logs -f`
|
||||||
|
4. **Test functionality**: Verify the service works correctly
|
||||||
|
5. **Rollback plan**: Keep old database container until migration is confirmed successful
|
||||||
|
|
||||||
|
## Network Considerations
|
||||||
|
|
||||||
|
Ensure all services are on the same Docker network or can reach the `central_postgres` container. You may need to:
|
||||||
|
|
||||||
|
1. Add services to the same network
|
||||||
|
2. Use Docker's internal DNS
|
||||||
|
3. Configure network aliases if needed
|
||||||
|
|
||||||
|
## Password Management
|
||||||
|
|
||||||
|
Keep using the same password variables but ensure they match the central database user passwords. The migration script preserves existing passwords for seamless transition.
|
||||||
145
central-database/README.md
Normal file
145
central-database/README.md
Normal file
@@ -0,0 +1,145 @@
|
|||||||
|
# Central PostgreSQL Database Consolidation
|
||||||
|
|
||||||
|
This directory contains the configuration for consolidating all PostgreSQL databases into a single PostgreSQL 18 instance with schema isolation.
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
### Before (Multiple Containers)
|
||||||
|
```
|
||||||
|
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
||||||
|
│ Synapse DB │ │ Paperless DB │ │ Immich DB │
|
||||||
|
│ PostgreSQL 17 │ │ PostgreSQL 17 │ │ PostgreSQL 14 │
|
||||||
|
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
||||||
|
Port 5442 Port 5434 Port 5433
|
||||||
|
```
|
||||||
|
|
||||||
|
### After (Single Container)
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────────┐
|
||||||
|
│ PostgreSQL 18 (container name: postgres) │
|
||||||
|
│ │
|
||||||
|
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||||
|
│ │ synapse │ │ paperless │ │
|
||||||
|
│ │ database │ │ database │ │
|
||||||
|
│ └─────────────────┘ └─────────────────┘ │
|
||||||
|
│ │
|
||||||
|
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||||
|
│ │ immich │ │ shlink │ │
|
||||||
|
│ │ database │ │ database │ │
|
||||||
|
│ └─────────────────┘ └─────────────────┘ │
|
||||||
|
│ │
|
||||||
|
│ Extensions: vector, pg_vectorscale │
|
||||||
|
└─────────────────────────────────────────────────────┘
|
||||||
|
Port 5432
|
||||||
|
```
|
||||||
|
|
||||||
|
## Setup Instructions
|
||||||
|
|
||||||
|
### 1. Setup Environment
|
||||||
|
```bash
|
||||||
|
cd central-database
|
||||||
|
cp .env.template .env
|
||||||
|
# Edit .env with your actual passwords (do not commit this file)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Build and Start PostgreSQL Container
|
||||||
|
```bash
|
||||||
|
docker-compose up -d --build postgres
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Verify Database is Running
|
||||||
|
```bash
|
||||||
|
docker-compose logs -f postgres
|
||||||
|
docker-compose exec postgres psql -U admin -c "\l"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Migrate Services
|
||||||
|
Use the generic migration script for each service:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Set environment variables (or use .env file)
|
||||||
|
export SYNAPSE_POSTGRES_PASSWORD="your_actual_password"
|
||||||
|
|
||||||
|
# Example: Migrate Synapse
|
||||||
|
./migrate_service.sh synapse localhost 5442 synapse synapse_password synapse
|
||||||
|
|
||||||
|
# Example: Migrate Paperless
|
||||||
|
./migrate_service.sh paperless localhost 5434 paperless paperless_password paperless
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. Update Service Configurations
|
||||||
|
After migration, update each service's docker-compose.yml to point to the central postgres container:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Example for Synapse
|
||||||
|
environment:
|
||||||
|
POSTGRES_HOST: postgres
|
||||||
|
POSTGRES_PORT: 5432
|
||||||
|
POSTGRES_DB: synapse
|
||||||
|
POSTGRES_USER: synapse_user
|
||||||
|
POSTGRES_PASSWORD: ${SYNAPSE_POSTGRES_PASSWORD}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Migration Order Recommendation
|
||||||
|
1. **Non-critical services first**: shlink, spliit
|
||||||
|
2. **Document management**: paperless
|
||||||
|
3. **Media services**: immich, audiomuse
|
||||||
|
4. **Matrix ecosystem**: mas, signal, whatsapp, synapse
|
||||||
|
|
||||||
|
## Backup Strategy
|
||||||
|
|
||||||
|
### Full Backup (all databases)
|
||||||
|
```bash
|
||||||
|
docker-compose exec postgres pg_dumpall -U admin > full_backup_$(date +%Y%m%d).sql
|
||||||
|
```
|
||||||
|
|
||||||
|
### Individual Database Backup
|
||||||
|
```bash
|
||||||
|
# Backup specific database
|
||||||
|
docker-compose exec postgres pg_dump -U synapse_user -d synapse > synapse_backup_$(date +%Y%m%d).sql
|
||||||
|
|
||||||
|
# Backup all databases individually
|
||||||
|
for db in synapse mas signal whatsapp paperless immich shlink spliit audiomuse; do
|
||||||
|
docker-compose exec postgres pg_dump -U ${db}_user -d $db > ${db}_backup_$(date +%Y%m%d).sql
|
||||||
|
done
|
||||||
|
```
|
||||||
|
|
||||||
|
### Automated Backup (add to cron)
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
# Daily backup script
|
||||||
|
BACKUP_DIR="/backups/postgres"
|
||||||
|
mkdir -p $BACKUP_DIR
|
||||||
|
|
||||||
|
# Full backup
|
||||||
|
docker-compose -f /path/to/central-database/docker-compose.yml exec postgres pg_dumpall -U admin | gzip > $BACKUP_DIR/full_backup_$(date +%Y%m%d_%H%M%S).sql.gz
|
||||||
|
|
||||||
|
# Individual database backups
|
||||||
|
for db in synapse mas signal whatsapp paperless immich shlink spliit audiomuse; do
|
||||||
|
docker-compose -f /path/to/central-database/docker-compose.yml exec postgres pg_dump -U ${db}_user -d $db | gzip > $BACKUP_DIR/${db}_backup_$(date +%Y%m%d_%H%M%S).sql.gz
|
||||||
|
done
|
||||||
|
|
||||||
|
# Keep last 7 days
|
||||||
|
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Connection Issues
|
||||||
|
- Verify central database is running: `docker-compose ps`
|
||||||
|
- Check logs: `docker-compose logs central_postgres`
|
||||||
|
- Test connection: `psql -h localhost -p 5432 -U admin -d central_db`
|
||||||
|
|
||||||
|
### Permission Issues
|
||||||
|
- Ensure service users have correct permissions on their schemas
|
||||||
|
- Check schema ownership: `\dn+` in psql
|
||||||
|
|
||||||
|
### Extension Issues
|
||||||
|
- Verify extensions are loaded: `\dx` in psql
|
||||||
|
- Check PostgreSQL logs for extension errors
|
||||||
|
|
||||||
|
## Security Notes
|
||||||
|
- Use strong passwords for all service users
|
||||||
|
- Rotate passwords after migration
|
||||||
|
- Consider using PostgreSQL role attributes for additional security
|
||||||
|
- Enable SSL for production environments
|
||||||
23
central-database/docker-compose.yml
Normal file
23
central-database/docker-compose.yml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
build: .
|
||||||
|
container_name: postgres
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- postgres_data:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: admin
|
||||||
|
POSTGRES_PASSWORD: ${POSTGRES_ADMIN_PASSWORD}
|
||||||
|
ports:
|
||||||
|
- "5432:5432"
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U admin"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
postgres_data:
|
||||||
|
driver: local
|
||||||
39
central-database/init-postgres.sh
Executable file
39
central-database/init-postgres.sh
Executable file
@@ -0,0 +1,39 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Waiting for PostgreSQL to start..."
|
||||||
|
until pg_isready -U admin -h localhost; do
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "PostgreSQL is ready. Creating databases and users..."
|
||||||
|
|
||||||
|
# Create databases
|
||||||
|
for db in matrix_synapse matrix_mas matrix_signal matrix_whatsapp paperless immich shlink spliit audiomuse; do
|
||||||
|
echo "Creating database: $db"
|
||||||
|
createdb -U admin "$db"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Create users and set permissions
|
||||||
|
for db in matrix_synapse matrix_mas matrix_signal matrix_whatsapp paperless immich shlink spliit audiomuse; do
|
||||||
|
user="${db}_user"
|
||||||
|
password_var="${user^^}_PASSWORD"
|
||||||
|
password=${!password_var}
|
||||||
|
|
||||||
|
if [ -z "$password" ]; then
|
||||||
|
echo "Warning: Password for $user not set. Using default."
|
||||||
|
password="default_password"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Creating user: $user"
|
||||||
|
psql -U admin -c "CREATE USER $user WITH PASSWORD '$password';"
|
||||||
|
psql -U admin -c "GRANT ALL PRIVILEGES ON DATABASE $db TO $user;"
|
||||||
|
psql -U admin -c "ALTER DATABASE $db OWNER TO $user;"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Enable extensions in immich database
|
||||||
|
echo "Enabling extensions in immich database..."
|
||||||
|
psql -U admin -d immich -c "CREATE EXTENSION IF NOT EXISTS vector;"
|
||||||
|
psql -U admin -d immich -c "CREATE EXTENSION IF NOT EXISTS pg_vectorscale;"
|
||||||
|
|
||||||
|
echo "PostgreSQL initialization complete!"
|
||||||
106
central-database/migrate_service.sh
Executable file
106
central-database/migrate_service.sh
Executable file
@@ -0,0 +1,106 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Generic PostgreSQL service migration script
|
||||||
|
# Usage: ./migrate_service.sh <service_name> <old_host> <old_port> <old_user> <old_password> <old_db>
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ "$#" -ne 6 ]; then
|
||||||
|
echo "Usage: $0 <service_name> <old_host> <old_port> <old_user> <old_password> <old_db>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
SERVICE_NAME=$1
|
||||||
|
OLD_HOST=$2
|
||||||
|
OLD_PORT=$3
|
||||||
|
OLD_USER=$4
|
||||||
|
OLD_PASSWORD=$5
|
||||||
|
OLD_DB=$6
|
||||||
|
|
||||||
|
# Map service names to database names and users
|
||||||
|
case $SERVICE_NAME in
|
||||||
|
synapse)
|
||||||
|
NEW_DB="synapse"
|
||||||
|
NEW_USER="synapse_user"
|
||||||
|
NEW_PASSWORD="${SYNAPSE_POSTGRES_PASSWORD}"
|
||||||
|
;;
|
||||||
|
mas)
|
||||||
|
NEW_DB="mas"
|
||||||
|
NEW_USER="mas_user"
|
||||||
|
NEW_PASSWORD="${MAS_POSTGRES_PASSWORD}"
|
||||||
|
;;
|
||||||
|
signal)
|
||||||
|
NEW_DB="signal"
|
||||||
|
NEW_USER="signal_user"
|
||||||
|
NEW_PASSWORD="${MAUTRIX_SIGNAL_POSTGRES_PASSWORD}"
|
||||||
|
;;
|
||||||
|
whatsapp)
|
||||||
|
NEW_DB="whatsapp"
|
||||||
|
NEW_USER="whatsapp_user"
|
||||||
|
NEW_PASSWORD="${MAUTRIX_WHATSAPP_POSTGRES_PASSWORD}"
|
||||||
|
;;
|
||||||
|
paperless)
|
||||||
|
NEW_DB="paperless"
|
||||||
|
NEW_USER="paperless_user"
|
||||||
|
NEW_PASSWORD="${PAPERLESS_POSTGRES_PASSWORD}"
|
||||||
|
;;
|
||||||
|
immich)
|
||||||
|
NEW_DB="immich"
|
||||||
|
NEW_USER="immich_user"
|
||||||
|
NEW_PASSWORD="${IMMICH_POSTGRES_PASSWORD}"
|
||||||
|
;;
|
||||||
|
shlink)
|
||||||
|
NEW_DB="shlink"
|
||||||
|
NEW_USER="shlink_user"
|
||||||
|
NEW_PASSWORD="${SHLINK_POSTGRES_PASSWORD}"
|
||||||
|
;;
|
||||||
|
spliit)
|
||||||
|
NEW_DB="spliit"
|
||||||
|
NEW_USER="spliit_user"
|
||||||
|
NEW_PASSWORD="${SPLIIT_POSTGRES_PASSWORD}"
|
||||||
|
;;
|
||||||
|
audiomuse)
|
||||||
|
NEW_DB="audiomuse"
|
||||||
|
NEW_USER="audiomuse_user"
|
||||||
|
NEW_PASSWORD="${AUDIOMUSE_POSTGRES_PASSWORD}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown service: $SERVICE_NAME"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "Starting migration for $SERVICE_NAME to database $NEW_DB..."
|
||||||
|
|
||||||
|
# Export from old database
|
||||||
|
echo "Exporting data from $OLD_DB..."
|
||||||
|
PGPASSWORD="$OLD_PASSWORD" pg_dump \
|
||||||
|
-h "$OLD_HOST" \
|
||||||
|
-p "$OLD_PORT" \
|
||||||
|
-U "$OLD_USER" \
|
||||||
|
-d "$OLD_DB" \
|
||||||
|
-F custom \
|
||||||
|
-f "/tmp/${SERVICE_NAME}_dump.custom"
|
||||||
|
|
||||||
|
# Import to new database
|
||||||
|
echo "Importing data to $NEW_DB database..."
|
||||||
|
PGPASSWORD="$NEW_PASSWORD" pg_restore \
|
||||||
|
-h localhost \
|
||||||
|
-p 5432 \
|
||||||
|
-U "$NEW_USER" \
|
||||||
|
-d "$NEW_DB" \
|
||||||
|
--clean \
|
||||||
|
--if-exists \
|
||||||
|
"/tmp/${SERVICE_NAME}_dump.custom"
|
||||||
|
|
||||||
|
echo "Migration completed for $SERVICE_NAME!"
|
||||||
|
|
||||||
|
# Clean up
|
||||||
|
rm -f "/tmp/${SERVICE_NAME}_dump.custom"
|
||||||
|
|
||||||
|
echo "You can now update your $SERVICE_NAME service configuration to use:"
|
||||||
|
echo " Host: localhost"
|
||||||
|
echo " Port: 5432"
|
||||||
|
echo " Database: $NEW_DB"
|
||||||
|
echo " User: $NEW_USER"
|
||||||
|
echo " Password: ***"
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
include:
|
include:
|
||||||
- audiobookshelf/docker-compose.yml
|
- audiobookshelf/docker-compose.yml
|
||||||
- audiomuse/docker-compose.yml
|
- audiomuse/docker-compose.yml
|
||||||
- baikal/docker-compose.yml
|
|
||||||
- gitea/docker-compose.yml
|
- gitea/docker-compose.yml
|
||||||
- immich/docker-compose.yml
|
- immich/docker-compose.yml
|
||||||
- jellyfin/docker-compose.yml
|
- jellyfin/docker-compose.yml
|
||||||
|
- monitoring/docker-compose.yml
|
||||||
- nextcloud/docker-compose.yml
|
- nextcloud/docker-compose.yml
|
||||||
- paperless/docker-compose.yml
|
- paperless/docker-compose.yml
|
||||||
- pihole/docker-compose.yml
|
- pihole/docker-compose.yml
|
||||||
- pingvin/docker-compose.yml
|
- pingvin/docker-compose.yml
|
||||||
- pocketid/docker-compose.yml
|
# - pocketid/docker-compose.yml
|
||||||
# - spliit/docker-compose.yml
|
# - spliit/docker-compose.yml
|
||||||
- shlink/docker-compose.yml
|
- shlink/docker-compose.yml
|
||||||
- synapse/docker-compose.yml
|
- synapse/docker-compose.yml
|
||||||
- updater/docker-compose.yml
|
# - updater/docker-compose.yml
|
||||||
- vaultwarden/docker-compose.yml
|
# - vaultwarden/docker-compose.yml
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ services:
|
|||||||
- "3000:3000"
|
- "3000:3000"
|
||||||
- "2222:2222"
|
- "2222:2222"
|
||||||
gitea-runner:
|
gitea-runner:
|
||||||
image: gitea/act_runner:0.2.13
|
image: gitea/act_runner:0.3.1
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
environment:
|
||||||
CONFIG_FILE: /config.yaml
|
CONFIG_FILE: /config.yaml
|
||||||
|
|||||||
@@ -8,3 +8,8 @@ IMMICH_POSTGRES_USER=
|
|||||||
IMMICH_POSTGRES_PASSWORD=
|
IMMICH_POSTGRES_PASSWORD=
|
||||||
|
|
||||||
REDIS_HOSTNAME=
|
REDIS_HOSTNAME=
|
||||||
|
|
||||||
|
IMMICH_EXTERNAL_MEDIA_LOCATION=
|
||||||
|
|
||||||
|
# Default timezone for images without a timezone set
|
||||||
|
TZ=
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
services:
|
services:
|
||||||
immich-server:
|
immich-server:
|
||||||
container_name: immich_server
|
container_name: immich_server
|
||||||
image: ghcr.io/immich-app/immich-server:v2.3.1
|
image: ghcr.io/immich-app/immich-server:v2.7.5
|
||||||
# extends:
|
# extends:
|
||||||
# file: hwaccel.transcoding.yml
|
# file: hwaccel.transcoding.yml
|
||||||
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
|
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
|
||||||
volumes:
|
volumes:
|
||||||
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
|
|
||||||
- ${UPLOAD_LOCATION}:/data
|
- ${UPLOAD_LOCATION}:/data
|
||||||
|
- ${IMMICH_EXTERNAL_MEDIA_LOCATION}:/external:ro
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
@@ -25,7 +25,7 @@ services:
|
|||||||
|
|
||||||
immich-machine-learning:
|
immich-machine-learning:
|
||||||
container_name: immich_machine_learning
|
container_name: immich_machine_learning
|
||||||
image: ghcr.io/immich-app/immich-machine-learning:v2.3.1
|
image: ghcr.io/immich-app/immich-machine-learning:v2.7.5
|
||||||
volumes:
|
volumes:
|
||||||
- model-cache:/cache
|
- model-cache:/cache
|
||||||
env_file:
|
env_file:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
jellyfin:
|
jellyfin:
|
||||||
image: jellyfin/jellyfin:10.11.5
|
image: jellyfin/jellyfin:10.11.8
|
||||||
user: ${JELLYFIN_USER_UID}:${JELLYFIN_USER_GID}
|
user: ${JELLYFIN_USER_UID}:${JELLYFIN_USER_GID}
|
||||||
network_mode: 'host'
|
network_mode: 'host'
|
||||||
restart: always
|
restart: always
|
||||||
|
|||||||
27
monitoring/.env.example
Normal file
27
monitoring/.env.example
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
GRAFANA_ADMIN_USER=
|
||||||
|
GRAFANA_ADMIN_PASSWORD=
|
||||||
|
GRAFANA_DOMAIN=
|
||||||
|
GRAFANA_ROOT_URL=
|
||||||
|
GRAFANA_DISABLE_LOGIN_FORM=false
|
||||||
|
|
||||||
|
GRAFANA_SMTP_ENABLED=true
|
||||||
|
GRAFANA_SMTP_HOST=
|
||||||
|
GRAFANA_SMTP_USER=
|
||||||
|
GRAFANA_SMTP_PASSWORD=
|
||||||
|
GRAFANA_SMTP_FROM=
|
||||||
|
|
||||||
|
GRAFANA_DATA_DIR=
|
||||||
|
|
||||||
|
PROMETHEUS_CONFIG_PATH=
|
||||||
|
PROMETHEUS_DATA_DIR=
|
||||||
|
|
||||||
|
BLACKBOX_CONFIG_PATH=
|
||||||
|
|
||||||
|
LOKI_CONFIG_PATH=
|
||||||
|
LOKI_DATA_DIR=
|
||||||
|
|
||||||
|
ALLOY_CONFIG_PATH=
|
||||||
|
|
||||||
|
GMF_MATRIX_HOMESERVER=
|
||||||
|
GMF_MATRIX_USER=
|
||||||
|
GMF_MATRIX_TOKEN=
|
||||||
115
monitoring/docker-compose.yml
Normal file
115
monitoring/docker-compose.yml
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
services:
|
||||||
|
# Prometheus - Metrics Collection
|
||||||
|
prometheus:
|
||||||
|
image: prom/prometheus:v3.10.0
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "9091:9090"
|
||||||
|
volumes:
|
||||||
|
- ${PROMETHEUS_CONFIG_PATH}:/etc/prometheus/prometheus.yml:ro
|
||||||
|
- ${PROMETHEUS_DATA_DIR}:/prometheus
|
||||||
|
command:
|
||||||
|
- '--config.file=/etc/prometheus/prometheus.yml'
|
||||||
|
- '--storage.tsdb.path=/prometheus'
|
||||||
|
- '--web.console.libraries=/etc/prometheus/console_libraries'
|
||||||
|
- '--web.console.templates=/etc/prometheus/consoles'
|
||||||
|
- '--storage.tsdb.retention.time=200h'
|
||||||
|
- '--web.enable-lifecycle'
|
||||||
|
- '--web.enable-admin-api'
|
||||||
|
|
||||||
|
# Grafana - Visualization Dashboard
|
||||||
|
grafana:
|
||||||
|
image: grafana/grafana:12.4.2
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "3002:3000"
|
||||||
|
volumes:
|
||||||
|
- ${GRAFANA_DATA_DIR}:/var/lib/grafana
|
||||||
|
environment:
|
||||||
|
- GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER}
|
||||||
|
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD}
|
||||||
|
- GF_USERS_ALLOW_SIGN_UP=false
|
||||||
|
- GF_SERVER_DOMAIN=${GRAFANA_DOMAIN}
|
||||||
|
- GF_SERVER_ROOT_URL=${GRAFANA_ROOT_URL}
|
||||||
|
- GF_AUTH_DISABLE_LOGIN_FORM=${GRAFANA_DISABLE_LOGIN_FORM}
|
||||||
|
- GF_SMTP_ENABLED=${GRAFANA_SMTP_ENABLED}
|
||||||
|
- GF_SMTP_HOST=${GRAFANA_SMTP_HOST}
|
||||||
|
- GF_SMTP_USER=${GRAFANA_SMTP_USER}
|
||||||
|
- GF_SMTP_PASSWORD=${GRAFANA_SMTP_PASSWORD}
|
||||||
|
- GF_SMTP_FROM_ADDRESS=${GRAFANA_SMTP_FROM}
|
||||||
|
depends_on:
|
||||||
|
- prometheus
|
||||||
|
|
||||||
|
loki:
|
||||||
|
image: grafana/loki:3.7.1
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "3100:3100"
|
||||||
|
volumes:
|
||||||
|
- ${LOKI_CONFIG_PATH}:/etc/loki/local-config.yaml
|
||||||
|
- ${LOKI_DATA_DIR}:/loki
|
||||||
|
command:
|
||||||
|
- '-config.file=/etc/loki/local-config.yaml'
|
||||||
|
- '-target=all'
|
||||||
|
|
||||||
|
alloy:
|
||||||
|
image: grafana/alloy:v1.15.0
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "12345:12345"
|
||||||
|
volumes:
|
||||||
|
- ${ALLOY_CONFIG_PATH}:/etc/alloy/config.alloy:ro
|
||||||
|
- /var/log:/var/log:ro
|
||||||
|
|
||||||
|
# Node Exporter - Host System Metrics
|
||||||
|
node_exporter:
|
||||||
|
image: prom/node-exporter:v1.10.2
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "9100:9100"
|
||||||
|
volumes:
|
||||||
|
- /proc:/host/proc:ro
|
||||||
|
- /sys:/host/sys:ro
|
||||||
|
- /:/rootfs:ro
|
||||||
|
command:
|
||||||
|
- '--path.procfs=/host/proc'
|
||||||
|
- '--path.rootfs=/rootfs'
|
||||||
|
- '--path.sysfs=/host/sys'
|
||||||
|
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
|
||||||
|
|
||||||
|
# cAdvisor - Container Metrics
|
||||||
|
cadvisor:
|
||||||
|
image: gcr.io/cadvisor/cadvisor:v0.55.1
|
||||||
|
restart: unless-stopped
|
||||||
|
privileged: true
|
||||||
|
ports:
|
||||||
|
- "8081:8080"
|
||||||
|
volumes:
|
||||||
|
- /:/rootfs:ro
|
||||||
|
- /var/run:/var/run:ro
|
||||||
|
- /sys:/sys:ro
|
||||||
|
- /var/lib/docker/:/var/lib/docker:ro
|
||||||
|
devices:
|
||||||
|
- /dev/kmsg
|
||||||
|
command:
|
||||||
|
- '--housekeeping_interval=30s'
|
||||||
|
- '--max_housekeeping_interval=35s'
|
||||||
|
- '--event_storage_event_limit=default=0'
|
||||||
|
- '--event_storage_age_limit=default=0'
|
||||||
|
- '--disable_metrics=disk,diskIO,tcp,udp,percpu,sched,process,hugetlb,referenced_memory'
|
||||||
|
- '--docker_only=true'
|
||||||
|
|
||||||
|
# Blackbox Exporter - Endpoint Monitoring
|
||||||
|
blackbox_exporter:
|
||||||
|
image: prom/blackbox-exporter:v0.28.0
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "9115:9115"
|
||||||
|
volumes:
|
||||||
|
- ${BLACKBOX_CONFIG_PATH}:/etc/blackbox_exporter/config.yml
|
||||||
|
|
||||||
|
grafana-matrix-forwarder:
|
||||||
|
build: ./grafana-matrix-forwarder
|
||||||
|
restart: unless-stopped
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
9
monitoring/grafana-matrix-forwarder/Dockerfile
Normal file
9
monitoring/grafana-matrix-forwarder/Dockerfile
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
FROM alpine
|
||||||
|
|
||||||
|
# Create main app folder to run from
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Copy compiled binary to release image
|
||||||
|
COPY grafana-matrix-forwarder /app/grafana-matrix-forwarder
|
||||||
|
|
||||||
|
ENTRYPOINT ["/app/grafana-matrix-forwarder"]
|
||||||
BIN
monitoring/grafana-matrix-forwarder/grafana-matrix-forwarder
Executable file
BIN
monitoring/grafana-matrix-forwarder/grafana-matrix-forwarder
Executable file
Binary file not shown.
@@ -1,12 +1,2 @@
|
|||||||
NEXTCLOUD_DOMAIN=
|
NEXTCLOUD_AIO_DIR=
|
||||||
|
|
||||||
NEXTCLOUD_DATA_DIR=
|
NEXTCLOUD_DATA_DIR=
|
||||||
|
|
||||||
NEXTCLOUD_POSTGRES_DATA_DIR=
|
|
||||||
NEXTCLOUD_POSTGRES_DB=
|
|
||||||
NEXTCLOUD_POSTGRES_USER=
|
|
||||||
NEXTCLOUD_POSTGRES_PASSWORD=
|
|
||||||
|
|
||||||
COLLABORA_DOMAIN=
|
|
||||||
COLLABORA_USER=
|
|
||||||
COLLABORA_PASSWORD=
|
|
||||||
@@ -1,50 +1,40 @@
|
|||||||
services:
|
services:
|
||||||
nextcloud_db:
|
nextcloud-aio-mastercontainer:
|
||||||
image: docker.io/library/postgres:17
|
image: ghcr.io/nextcloud-releases/all-in-one:latest # This is the container image used. You can switch to ghcr.io/nextcloud-releases/all-in-one:beta if you want to help testing new releases. See https://github.com/nextcloud/all-in-one#how-to-switch-the-channel
|
||||||
restart: always
|
init: true # This setting makes sure that signals from main process inside the container are correctly forwarded to children. See https://docs.docker.com/reference/compose-file/services/#init
|
||||||
|
restart: always # This makes sure that the container starts always together with the host OS. See https://docs.docker.com/reference/compose-file/services/#restart
|
||||||
|
container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed as otherwise AIO will not work correctly
|
||||||
volumes:
|
volumes:
|
||||||
- ${NEXTCLOUD_POSTGRES_DATA_DIR}:/var/lib/postgresql/data
|
- nextcloud_aio_mastercontainer:/mnt/docker-aio-config # This line is not allowed to be changed as otherwise the built-in backup solution will not work
|
||||||
environment:
|
- /var/run/docker.sock:/var/run/docker.sock:ro # May be changed on macOS, Windows or docker rootless. See the applicable documentation. If adjusting, don't forget to also set 'WATCHTOWER_DOCKER_SOCKET_PATH'!
|
||||||
POSTGRES_DB: ${NEXTCLOUD_POSTGRES_DB}
|
network_mode: bridge
|
||||||
POSTGRES_USER: ${NEXTCLOUD_POSTGRES_USER}
|
|
||||||
POSTGRES_PASSWORD: ${NEXTCLOUD_POSTGRES_PASSWORD}
|
|
||||||
ports:
|
ports:
|
||||||
- 5438:5432
|
- 8014:8080 # This is the AIO interface, served via https and self-signed certificate. See https://github.com/nextcloud/all-in-one#explanation-of-used-ports
|
||||||
networks:
|
environment: # Is needed when using any of the options below
|
||||||
- nextcloud
|
# AIO_DISABLE_BACKUP_SECTION: false # Setting this to true allows to hide the backup section in the AIO interface. See https://github.com/nextcloud/all-in-one#how-to-disable-the-backup-section
|
||||||
nextcloud:
|
APACHE_PORT: 11000 # Is needed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else). See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||||
image: nextcloud:32.0.1
|
# APACHE_IP_BINDING: 127.0.0.1 # Should be set when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) that is running on the same host. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||||
restart: always
|
# APACHE_ADDITIONAL_NETWORK: frontend_net # (Optional) Connect the apache container to an additional docker network. Needed when behind a web server or reverse proxy (like Apache, Nginx, Caddy, Cloudflare Tunnel and else) running in a different docker network on same server. See https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md
|
||||||
ports:
|
# BORG_RETENTION_POLICY: --keep-within=7d --keep-weekly=4 --keep-monthly=6 # Allows to adjust borgs retention policy. See https://github.com/nextcloud/all-in-one#how-to-adjust-borgs-retention-policy
|
||||||
- 8081:80
|
# COLLABORA_SECCOMP_DISABLED: false # Setting this to true allows to disable Collabora's Seccomp feature. See https://github.com/nextcloud/all-in-one#how-to-disable-collaboras-seccomp-feature
|
||||||
links:
|
# DOCKER_API_VERSION: 1.44 # You can adjust the internally used docker api version with this variable. ⚠️⚠️⚠️ Warning: please note that only the default api version (unset this variable) is supported and tested by the maintainers of Nextcloud AIO. So use this on your own risk and things might break without warning. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-internally-used-docker-api-version
|
||||||
- db
|
# FULLTEXTSEARCH_JAVA_OPTIONS: "-Xms1024M -Xmx1024M" # Allows to adjust the fulltextsearch java options. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-fulltextsearch-java-options
|
||||||
volumes:
|
NEXTCLOUD_DATADIR: ${NEXTCLOUD_DATA_DIR} # Allows to set the host directory for Nextcloud's datadir. ⚠️⚠️⚠️ Warning: do not set or adjust this value after the initial Nextcloud installation is done! See https://github.com/nextcloud/all-in-one#how-to-change-the-default-location-of-nextclouds-datadir
|
||||||
- ${NEXTCLOUD_DATA_DIR}:/var/www/html
|
# NEXTCLOUD_MOUNT: /mnt/ # Allows the Nextcloud container to access the chosen directory on the host. See https://github.com/nextcloud/all-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host
|
||||||
environment:
|
# NEXTCLOUD_UPLOAD_LIMIT: 16G # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-upload-limit-for-nextcloud
|
||||||
- POSTGRES_HOST=nextcloud_db
|
# NEXTCLOUD_MAX_TIME: 3600 # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-max-execution-time-for-nextcloud
|
||||||
- POSTGRES_DB=${NEXTCLOUD_POSTGRES_DB}
|
# NEXTCLOUD_MEMORY_LIMIT: 512M # Can be adjusted if you need more. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-php-memory-limit-for-nextcloud
|
||||||
- POSTGRES_USER=${NEXTCLOUD_POSTGRES_USER}
|
# NEXTCLOUD_TRUSTED_CACERTS_DIR: /path/to/my/cacerts # CA certificates in this directory will be trusted by the OS of the nextcloud container (Useful e.g. for LDAPS) See https://github.com/nextcloud/all-in-one#how-to-trust-user-defined-certification-authorities-ca
|
||||||
- POSTGRES_PASSWORD=${NEXTCLOUD_POSTGRES_PASSWORD}
|
# NEXTCLOUD_STARTUP_APPS: deck twofactor_totp tasks calendar contacts notes # Allows to modify the Nextcloud apps that are installed on starting AIO the first time. See https://github.com/nextcloud/all-in-one#how-to-change-the-nextcloud-apps-that-are-installed-on-the-first-startup
|
||||||
- REDIS_HOST=nextcloud-redis
|
# NEXTCLOUD_ADDITIONAL_APKS: imagemagick # This allows to add additional packages to the Nextcloud container permanently. Default is imagemagick but can be overwritten by modifying this value. See https://github.com/nextcloud/all-in-one#how-to-add-os-packages-permanently-to-the-nextcloud-container
|
||||||
- REDIS_PORT=6379
|
# NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS: imagick # This allows to add additional php extensions to the Nextcloud container permanently. Default is imagick but can be overwritten by modifying this value. See https://github.com/nextcloud/all-in-one#how-to-add-php-extensions-permanently-to-the-nextcloud-container
|
||||||
- NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_DOMAIN}
|
# NEXTCLOUD_ENABLE_DRI_DEVICE: true # This allows to enable the /dev/dri device for containers that profit from it. ⚠️⚠️⚠️ Warning: this only works if the '/dev/dri' device is present on the host! If it should not exist on your host, don't set this to true as otherwise the Nextcloud container will fail to start! See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-acceleration-for-nextcloud
|
||||||
networks:
|
# NEXTCLOUD_ENABLE_NVIDIA_GPU: true # This allows to enable the NVIDIA runtime and GPU access for containers that profit from it. ⚠️⚠️⚠️ Warning: this only works if an NVIDIA gpu is installed on the server. See https://github.com/nextcloud/all-in-one#how-to-enable-hardware-acceleration-for-nextcloud.
|
||||||
- nextcloud
|
# NEXTCLOUD_KEEP_DISABLED_APPS: false # Setting this to true will keep Nextcloud apps that are disabled in the AIO interface and not uninstall them if they should be installed. See https://github.com/nextcloud/all-in-one#how-to-keep-disabled-apps
|
||||||
cron:
|
# SKIP_DOMAIN_VALIDATION: false # This should only be set to true if things are correctly configured. See https://github.com/nextcloud/all-in-one#how-to-skip-the-domain-validation
|
||||||
image: nextcloud:32.0.1
|
# TALK_PORT: 3478 # This allows to adjust the port that the talk container is using which is exposed on the host. See https://github.com/nextcloud/all-in-one#how-to-adjust-the-talk-port
|
||||||
container_name: nextcloud-cron
|
|
||||||
volumes:
|
|
||||||
- ${NEXTCLOUD_DATA_DIR}:/var/www/html
|
|
||||||
entrypoint: /cron.sh
|
|
||||||
restart: always
|
|
||||||
networks:
|
|
||||||
- nextcloud
|
|
||||||
nextcloud-redis:
|
|
||||||
image: redis:7
|
|
||||||
restart: always
|
|
||||||
networks:
|
|
||||||
- nextcloud
|
|
||||||
|
|
||||||
networks:
|
|
||||||
nextcloud:
|
volumes: # If you want to store the data on a different drive, see https://github.com/nextcloud/all-in-one#how-to-store-the-filesinstallation-on-a-separate-drive
|
||||||
|
nextcloud_aio_mastercontainer:
|
||||||
|
name: nextcloud_aio_mastercontainer # This line is not allowed to be changed as otherwise the built-in backup solution will not work
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ services:
|
|||||||
- 5434:5432
|
- 5434:5432
|
||||||
|
|
||||||
paperless:
|
paperless:
|
||||||
image: ghcr.io/paperless-ngx/paperless-ngx:2.20.2
|
image: ghcr.io/paperless-ngx/paperless-ngx:2.20.13
|
||||||
restart: always
|
restart: always
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
@@ -49,7 +49,7 @@ services:
|
|||||||
PAPERLESS_REDIRECT_LOGIN_TO_SSO: true
|
PAPERLESS_REDIRECT_LOGIN_TO_SSO: true
|
||||||
|
|
||||||
gotenberg:
|
gotenberg:
|
||||||
image: docker.io/gotenberg/gotenberg:8.25.1
|
image: docker.io/gotenberg/gotenberg:8.29.1
|
||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
# The gotenberg chromium route is used to convert .eml files. We do not
|
# The gotenberg chromium route is used to convert .eml files. We do not
|
||||||
@@ -60,5 +60,5 @@ services:
|
|||||||
- "--chromium-allow-list=file:///tmp/.*"
|
- "--chromium-allow-list=file:///tmp/.*"
|
||||||
|
|
||||||
tika:
|
tika:
|
||||||
image: docker.io/apache/tika:3.2.3.0
|
image: docker.io/apache/tika:3.3.0.0
|
||||||
restart: always
|
restart: always
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
services:
|
services:
|
||||||
pihole:
|
pihole:
|
||||||
container_name: pihole
|
container_name: pihole
|
||||||
image: pihole/pihole:2025.11.0
|
image: pihole/pihole:2026.04.0
|
||||||
ports:
|
ports:
|
||||||
# DNS Ports
|
# DNS Ports
|
||||||
- "53:53/tcp"
|
- "53:53/tcp"
|
||||||
|
|||||||
@@ -3,3 +3,5 @@ TRUST_PROXY=
|
|||||||
MAXMIND_LICENSE_KEY=
|
MAXMIND_LICENSE_KEY=
|
||||||
PUID=
|
PUID=
|
||||||
PGID=
|
PGID=
|
||||||
|
ENCRYPTION_KEY=
|
||||||
|
POCKETID_DATA_DIR=
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
services:
|
services:
|
||||||
pocket-id:
|
pocket-id:
|
||||||
image: ghcr.io/pocket-id/pocket-id:v1.15.0
|
image: ghcr.io/pocket-id/pocket-id:v2.5.0
|
||||||
restart: always
|
restart: always
|
||||||
env_file: .env
|
env_file: .env
|
||||||
ports:
|
ports:
|
||||||
- "3043:1411"
|
- "3043:1411"
|
||||||
volumes:
|
volumes:
|
||||||
#TODO change this to a more appropriate location
|
- ${POCKETID_DATA_DIR}:/app/data
|
||||||
- ./data:/app/data
|
|
||||||
# Optional healthcheck
|
# Optional healthcheck
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: "curl -f http://localhost:1411/healthz"
|
test: "curl -f http://localhost:1411/healthz"
|
||||||
|
|||||||
@@ -23,7 +23,9 @@
|
|||||||
"matrixdotorg/synapse",
|
"matrixdotorg/synapse",
|
||||||
"ghcr.io/element-hq/matrix-authentication-service",
|
"ghcr.io/element-hq/matrix-authentication-service",
|
||||||
"dock.mau.dev/mautrix/whatsapp",
|
"dock.mau.dev/mautrix/whatsapp",
|
||||||
"dock.mau.dev/mautrix/signal"
|
"dock.mau.dev/mautrix/signal",
|
||||||
|
"ghcr.io/element-hq/lk-jwt-service",
|
||||||
|
"livekit/livekit-server"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
shlink:
|
shlink:
|
||||||
image: shlinkio/shlink:4.6
|
image: shlinkio/shlink:5.0
|
||||||
container_name: shlink
|
container_name: shlink
|
||||||
restart: always
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
spliit:
|
spliit:
|
||||||
image: ghcr.io/spliit-app/spliit:1.19.1
|
#image: ghcr.io/spliit-app/spliit:1.19.1
|
||||||
|
image: petersmit27/spliit:latest
|
||||||
restart: always
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
- 3001:3000
|
- 3001:3000
|
||||||
|
|||||||
119
spliit/spliit.yaml
Normal file
119
spliit/spliit.yaml
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: spliit
|
||||||
|
---
|
||||||
|
apiVersion: postgresql.cnpg.io/v1
|
||||||
|
kind: Cluster
|
||||||
|
metadata:
|
||||||
|
name: spliit-db
|
||||||
|
namespace: spliit
|
||||||
|
spec:
|
||||||
|
instances: 1
|
||||||
|
storage:
|
||||||
|
size: 2Gi
|
||||||
|
bootstrap:
|
||||||
|
initdb:
|
||||||
|
database: spliit
|
||||||
|
owner: spliit
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: spliit
|
||||||
|
namespace: spliit
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: spliit
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: spliit
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: spliit
|
||||||
|
image: petersmit27/spliit:latest
|
||||||
|
ports:
|
||||||
|
- containerPort: 3000
|
||||||
|
env:
|
||||||
|
- name: POSTGRES_PRISMA_URL
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: spliit-db-app
|
||||||
|
key: uri
|
||||||
|
- name: POSTGRES_URL_NON_POOLING
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: spliit-db-app
|
||||||
|
key: uri
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: spliit
|
||||||
|
namespace: spliit
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: spliit
|
||||||
|
ports:
|
||||||
|
- port: 3000
|
||||||
|
targetPort: 3000
|
||||||
|
---
|
||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: HTTPRoute
|
||||||
|
metadata:
|
||||||
|
name: spliit
|
||||||
|
namespace: spliit
|
||||||
|
spec:
|
||||||
|
parentRefs:
|
||||||
|
- name: main
|
||||||
|
namespace: envoy-gateway-system
|
||||||
|
sectionName: https-smittenfeld
|
||||||
|
hostnames:
|
||||||
|
- split.smittenfeld.nl
|
||||||
|
rules:
|
||||||
|
- backendRefs:
|
||||||
|
- name: spliit
|
||||||
|
port: 3000
|
||||||
|
---
|
||||||
|
apiVersion: gateway.networking.k8s.io/v1
|
||||||
|
kind: HTTPRoute
|
||||||
|
metadata:
|
||||||
|
name: spliit-create-group
|
||||||
|
namespace: spliit
|
||||||
|
spec:
|
||||||
|
parentRefs:
|
||||||
|
- name: main
|
||||||
|
namespace: envoy-gateway-system
|
||||||
|
sectionName: https-smittenfeld
|
||||||
|
hostnames:
|
||||||
|
- split.smittenfeld.nl
|
||||||
|
rules:
|
||||||
|
- matches:
|
||||||
|
- path:
|
||||||
|
type: PathPrefix
|
||||||
|
value: /groups/create
|
||||||
|
backendRefs:
|
||||||
|
- name: spliit
|
||||||
|
port: 3000
|
||||||
|
---
|
||||||
|
apiVersion: gateway.envoyproxy.io/v1alpha1
|
||||||
|
kind: SecurityPolicy
|
||||||
|
metadata:
|
||||||
|
name: spliit-create-ip-restriction
|
||||||
|
namespace: spliit
|
||||||
|
spec:
|
||||||
|
targetRefs:
|
||||||
|
- group: gateway.networking.k8s.io
|
||||||
|
kind: HTTPRoute
|
||||||
|
name: spliit-create-group
|
||||||
|
authorization:
|
||||||
|
defaultAction: Deny
|
||||||
|
rules:
|
||||||
|
- action: Allow
|
||||||
|
principal:
|
||||||
|
clientCIDRs:
|
||||||
|
- 188.91.195.91/32
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
element-call-auth-service:
|
element-call-auth-service:
|
||||||
image: ghcr.io/element-hq/lk-jwt-service:0.3.0
|
image: ghcr.io/element-hq/lk-jwt-service:0.4.3
|
||||||
container_name: element-call-jwt
|
container_name: element-call-jwt
|
||||||
hostname: auth-server
|
hostname: auth-server
|
||||||
environment:
|
environment:
|
||||||
@@ -13,7 +13,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- 8071:8080
|
- 8071:8080
|
||||||
element-call-livekit:
|
element-call-livekit:
|
||||||
image: livekit/livekit-server:v1.9.8
|
image: livekit/livekit-server:v1.11.0
|
||||||
command: --config /etc/livekit.yaml
|
command: --config /etc/livekit.yaml
|
||||||
ports:
|
ports:
|
||||||
- "7880:7880/tcp"
|
- "7880:7880/tcp"
|
||||||
@@ -25,7 +25,7 @@ services:
|
|||||||
- ${LIVEKIT_CONFIG_DIR}/config.yaml:/etc/livekit.yaml:ro
|
- ${LIVEKIT_CONFIG_DIR}/config.yaml:/etc/livekit.yaml:ro
|
||||||
mautrix-signal:
|
mautrix-signal:
|
||||||
container_name: mautrix-signal
|
container_name: mautrix-signal
|
||||||
image: dock.mau.dev/mautrix/signal:v0.2511.0
|
image: dock.mau.dev/mautrix/signal:v26.02.2
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- ${MAUTRIX_SIGNAL_DATA_DIR}:/data
|
- ${MAUTRIX_SIGNAL_DATA_DIR}:/data
|
||||||
@@ -42,7 +42,7 @@ services:
|
|||||||
- 5439:5432
|
- 5439:5432
|
||||||
mautrix-whatsapp:
|
mautrix-whatsapp:
|
||||||
container_name: mautrix-whatsapp
|
container_name: mautrix-whatsapp
|
||||||
image: dock.mau.dev/mautrix/whatsapp:v0.2511.0
|
image: dock.mau.dev/mautrix/whatsapp:v0.2604.0
|
||||||
#image: petersmit27/mautrix-whatsapp:latest
|
#image: petersmit27/mautrix-whatsapp:latest
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
@@ -61,7 +61,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- 5440:5432
|
- 5440:5432
|
||||||
mas:
|
mas:
|
||||||
image: ghcr.io/element-hq/matrix-authentication-service:1.6.0
|
image: ghcr.io/element-hq/matrix-authentication-service:1.15.0
|
||||||
restart: always
|
restart: always
|
||||||
working_dir: /config
|
working_dir: /config
|
||||||
volumes:
|
volumes:
|
||||||
@@ -97,7 +97,7 @@ services:
|
|||||||
- 5442:5432
|
- 5442:5432
|
||||||
synapse:
|
synapse:
|
||||||
container_name: synapse
|
container_name: synapse
|
||||||
image: matrixdotorg/synapse:v1.142.1
|
image: matrixdotorg/synapse:v1.151.0
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- ${SYNAPSE_CONFIG_DIR}:/data
|
- ${SYNAPSE_CONFIG_DIR}:/data
|
||||||
@@ -107,3 +107,10 @@ services:
|
|||||||
- synapse_db
|
- synapse_db
|
||||||
- mas
|
- mas
|
||||||
- mautrix-whatsapp
|
- mautrix-whatsapp
|
||||||
|
element-admin:
|
||||||
|
image: oci.element.io/element-admin:0.1.11
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "8079:8080"
|
||||||
|
environment:
|
||||||
|
- SERVER_NAME=${MATRIX_DOMAIN}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Use the official PHP image with Apache
|
# Use the official PHP image with Apache
|
||||||
FROM php:8.4-apache
|
FROM php:8.5-apache
|
||||||
|
|
||||||
# Add Docker's official GPG key:
|
# Add Docker's official GPG key:
|
||||||
RUN apt-get update &&\
|
RUN apt-get update &&\
|
||||||
@@ -16,7 +16,7 @@ RUN echo \
|
|||||||
|
|
||||||
# Install git and docker-compose
|
# Install git and docker-compose
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y git docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin && \
|
apt-get install -y git docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-model-plugin && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Create .docker directory and set permissions
|
# Create .docker directory and set permissions
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
vaultwarden:
|
vaultwarden:
|
||||||
container_name: vaultwarden
|
container_name: vaultwarden
|
||||||
image: vaultwarden/server:1.34.3
|
image: vaultwarden/server:1.35.4
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- ${VAULTWARDEN_DATA_LOCATION}:/data/
|
- ${VAULTWARDEN_DATA_LOCATION}:/data/
|
||||||
|
|||||||
Reference in New Issue
Block a user