89 Commits

Author SHA1 Message Date
Renovate Bot
0e9e1153d0 Update grafana/alloy Docker tag to v1.14.2 2026-03-28 00:03:20 +00:00
b0d631ac0e Update pocketid/docker-compose.yml 2026-03-27 15:55:50 +00:00
2ca2dccb9e Merge pull request 'Update Paperless-ngx' (#293) from renovate/paperless-ngx into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/293
2026-03-27 15:09:34 +00:00
9258764f78 Merge pull request 'Update ghcr.io/advplyr/audiobookshelf Docker tag to v2.33.1' (#294) from renovate/ghcr.io-advplyr-audiobookshelf-2.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/294
2026-03-27 15:09:28 +00:00
5f1b95d4d4 Merge pull request 'Update dock.mau.dev/mautrix/signal Docker tag to v26' (#295) from renovate/major-matrix into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/295
2026-03-27 15:09:21 +00:00
ce1e53a29f Merge pull request 'Update Matrix' (#296) from renovate/matrix into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/296
2026-03-27 15:09:14 +00:00
e0468e34dd Merge pull request 'Update Immich to v2.6.3' (#297) from renovate/immich into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/297
2026-03-27 15:08:52 +00:00
Renovate Bot
11b4a39955 Update Immich to v2.6.3 2026-03-27 00:03:03 +00:00
Renovate Bot
59f227936d Update Paperless-ngx 2026-03-25 00:02:48 +00:00
Renovate Bot
540eed20fc Update Matrix 2026-03-25 00:02:38 +00:00
Renovate Bot
e36cd570cc Update dock.mau.dev/mautrix/signal Docker tag to v26 2026-03-23 00:02:47 +00:00
Renovate Bot
a1f6c22cec Update ghcr.io/advplyr/audiobookshelf Docker tag to v2.33.1 2026-03-22 00:03:14 +00:00
c45d67e3df Update immich/docker-compose.yml 2026-03-21 08:56:44 +00:00
1948c02f18 Merge pull request 'Update grafana/grafana Docker tag to v12.4.1' (#287) from renovate/grafana-grafana-12.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/287
2026-03-21 08:55:25 +00:00
967233ffa6 Merge pull request 'Update grafana/alloy Docker tag to v1.14.1' (#288) from renovate/grafana-alloy-1.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/288
2026-03-21 08:55:10 +00:00
4cf9b0713a Merge pull request 'Update prom/prometheus Docker tag to v3.10.0' (#290) from renovate/prom-prometheus-3.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/290
2026-03-21 08:55:01 +00:00
e688ba0110 Merge pull request 'Update Paperless-ngx' (#291) from renovate/paperless-ngx into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/291
2026-03-21 08:54:06 +00:00
fe8ec0e3e8 Merge pull request 'Update oci.element.io/element-admin Docker tag to v0.1.11' (#292) from renovate/oci.element.io-element-admin-0.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/292
2026-03-21 08:48:21 +00:00
Renovate Bot
23b0d1af5c Update Paperless-ngx 2026-03-21 00:05:54 +00:00
Renovate Bot
c1eb2f15cb Update oci.element.io/element-admin Docker tag to v0.1.11 2026-03-19 00:10:45 +00:00
5bfa160d29 Merge pull request 'Update Matrix' (#289) from renovate/matrix into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/289
2026-03-18 15:40:16 +00:00
5bc70f6cce Merge pull request 'Update ghcr.io/neptunehub/audiomuse-ai Docker tag to v0.9.3' (#274) from renovate/ghcr.io-neptunehub-audiomuse-ai-0.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/274
2026-03-18 15:40:06 +00:00
Renovate Bot
b9856e16db Update grafana/alloy Docker tag to v1.14.1 2026-03-18 00:03:15 +00:00
Renovate Bot
c6c4af0b35 Update Matrix 2026-03-17 00:03:10 +00:00
Renovate Bot
db0ba9988f Update ghcr.io/neptunehub/audiomuse-ai Docker tag to v0.9.3 2026-03-17 00:03:04 +00:00
Renovate Bot
0f32669ed5 Update prom/prometheus Docker tag to v3.10.0 2026-03-12 00:03:39 +00:00
9628167fb9 Merge pull request 'Update ghcr.io/pocket-id/pocket-id Docker tag to v2.4.0' (#286) from renovate/ghcr.io-pocket-id-pocket-id-2.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/286
2026-03-11 10:31:01 +00:00
ca6353f375 Merge pull request 'Update Matrix' (#285) from renovate/matrix into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/285
2026-03-11 10:30:45 +00:00
Renovate Bot
cfc8bcd306 Update Matrix 2026-03-11 00:04:27 +00:00
Renovate Bot
9e5cd238f3 Update grafana/grafana Docker tag to v12.4.1 2026-03-10 00:03:02 +00:00
Renovate Bot
96fa190d52 Update ghcr.io/pocket-id/pocket-id Docker tag to v2.4.0 2026-03-09 00:03:10 +00:00
Peter Smit
d735f5e310 Add central postgres instance 2026-03-08 16:05:21 +01:00
916bfa53a2 Merge pull request 'Update grafana/alloy Docker tag to v1.13.2' (#273) from renovate/grafana-alloy-1.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/273
2026-03-07 19:10:11 +00:00
03fb4155c7 Merge pull request 'Update grafana/loki Docker tag to v3.6.7' (#278) from renovate/grafana-loki-3.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/278
2026-03-07 19:10:01 +00:00
6478592b59 Merge pull request 'Update grafana/grafana Docker tag to v12.4.0' (#283) from renovate/grafana-grafana-12.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/283
2026-03-07 19:09:48 +00:00
13c57d685f Merge pull request 'Update Paperless-ngx' (#284) from renovate/paperless-ngx into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/284
2026-03-07 19:09:43 +00:00
Renovate Bot
064b76b892 Update Paperless-ngx 2026-03-05 00:03:07 +00:00
Renovate Bot
8d446c0126 Update grafana/grafana Docker tag to v12.4.0 2026-03-01 00:02:54 +00:00
5b75e245d9 Merge pull request 'Update Matrix' (#281) from renovate/matrix into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/281
2026-02-28 13:07:51 +00:00
209ea8a867 Merge pull request 'Update ghcr.io/pocket-id/pocket-id Docker tag to v2.3.0' (#282) from renovate/ghcr.io-pocket-id-pocket-id-2.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/282
2026-02-28 13:07:42 +00:00
Renovate Bot
26939558ee Update ghcr.io/pocket-id/pocket-id Docker tag to v2.3.0 2026-02-28 00:03:03 +00:00
Renovate Bot
5c17af8ed7 Update Matrix 2026-02-28 00:02:58 +00:00
261c420bbf Merge pull request 'Update gitea/act_runner Docker tag to v0.3.0' (#279) from renovate/gitea-act_runner-0.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/279
2026-02-27 10:53:06 +00:00
7e48a8450c Merge pull request 'Update vaultwarden/server Docker tag to v1.35.4' (#280) from renovate/vaultwarden-server-1.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/280
2026-02-27 08:02:27 +00:00
Renovate Bot
11c9f1dcc4 Update vaultwarden/server Docker tag to v1.35.4 2026-02-27 00:03:09 +00:00
Peter Smit
029553b910 Update synapse 2026-02-26 15:52:00 +01:00
663f02bae0 Merge pull request 'Update pihole/pihole Docker tag to v2026' (#277) from renovate/pihole-pihole-2026.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/277
2026-02-26 14:43:26 +00:00
Renovate Bot
c222574b63 Update grafana/loki Docker tag to v3.6.7 2026-02-24 00:02:59 +00:00
Renovate Bot
17433c93b2 Update grafana/alloy Docker tag to v1.13.2 2026-02-24 00:02:53 +00:00
Renovate Bot
c5052ead02 Update gitea/act_runner Docker tag to v0.3.0 2026-02-19 00:02:58 +00:00
Renovate Bot
8036f0601f Update pihole/pihole Docker tag to v2026 2026-02-18 00:03:22 +00:00
4ac1007b5b Merge pull request 'Update Matrix to v0.2602.0' (#276) from renovate/matrix into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/276
2026-02-17 08:40:04 +00:00
5b3c66bbf0 Merge pull request 'Update ghcr.io/paperless-ngx/paperless-ngx Docker tag to v2.20.7' (#275) from renovate/paperless-ngx into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/275
2026-02-17 08:39:55 +00:00
Renovate Bot
bdf9578b78 Update Matrix to v0.2602.0 2026-02-17 00:02:52 +00:00
Renovate Bot
91fc229856 Update ghcr.io/paperless-ngx/paperless-ngx Docker tag to v2.20.7 2026-02-17 00:02:35 +00:00
1e0470c79a Merge pull request 'Update matrixdotorg/synapse Docker tag to v1.147.1' (#272) from renovate/matrix into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/272
2026-02-13 06:44:04 +00:00
cd04f0563c Merge pull request 'Update grafana/grafana Docker tag to v12.3.3' (#271) from renovate/grafana-grafana-12.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/271
2026-02-13 06:43:58 +00:00
Renovate Bot
51e5bf13db Update matrixdotorg/synapse Docker tag to v1.147.1 2026-02-13 00:03:05 +00:00
Renovate Bot
fc8ecd119b Update grafana/grafana Docker tag to v12.3.3 2026-02-13 00:02:54 +00:00
95ef2f21f4 Merge pull request 'Update ghcr.io/neptunehub/audiomuse-ai Docker tag to v0.8.9' (#269) from renovate/ghcr.io-neptunehub-audiomuse-ai-0.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/269
2026-02-12 09:18:50 +00:00
416b8616cf Merge pull request 'Update Matrix' (#270) from renovate/matrix into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/270
2026-02-12 09:18:39 +00:00
Renovate Bot
8cd806d4bd Update Matrix 2026-02-12 00:02:39 +00:00
Renovate Bot
fe64784b82 Update ghcr.io/neptunehub/audiomuse-ai Docker tag to v0.8.9 2026-02-12 00:02:31 +00:00
d54ce9000e Merge pull request 'Update Immich to v2.5.6' (#267) from renovate/immich into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/267
2026-02-11 13:37:13 +00:00
dedf653fa0 Merge pull request 'Update vaultwarden/server Docker tag to v1.35.3' (#268) from renovate/vaultwarden-server-1.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/268
2026-02-11 13:37:02 +00:00
Renovate Bot
a957e7c256 Update vaultwarden/server Docker tag to v1.35.3 2026-02-11 00:02:54 +00:00
Renovate Bot
8c85e1e10d Update Immich to v2.5.6 2026-02-11 00:02:46 +00:00
9accb73198 Merge pull request 'Update grafana/loki Docker tag to v3.6.5' (#258) from renovate/grafana-loki-3.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/258
2026-02-08 08:46:22 +00:00
7ea78420d4 Merge pull request 'Update grafana/grafana Docker tag to v12.3.2' (#259) from renovate/grafana-grafana-12.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/259
2026-02-08 08:46:17 +00:00
d20e312c92 Merge pull request 'Update grafana/alloy Docker tag to v1.13.0' (#265) from renovate/grafana-alloy-1.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/265
2026-02-08 08:46:12 +00:00
d6c67bfe14 Merge pull request 'Update Immich to v2.5.5' (#266) from renovate/immich into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/266
2026-02-08 08:46:02 +00:00
Renovate Bot
9ef370d983 Update Immich to v2.5.5 2026-02-07 00:02:59 +00:00
Renovate Bot
c388dec33d Update grafana/loki Docker tag to v3.6.5 2026-02-07 00:02:54 +00:00
Renovate Bot
310b0c9534 Update grafana/alloy Docker tag to v1.13.0 2026-02-06 00:02:36 +00:00
f4863e897f Merge pull request 'Update Immich to v2.5.3' (#264) from renovate/immich into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/264
2026-02-04 06:38:28 +00:00
Renovate Bot
aec019fff2 Update Immich to v2.5.3 2026-02-04 00:02:29 +00:00
746b8b419c Merge pull request 'Update Paperless-ngx' (#260) from renovate/paperless-ngx into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/260
2026-02-03 07:38:49 +00:00
c47117d3a6 Merge pull request 'Update ghcr.io/neptunehub/audiomuse-ai Docker tag to v0.8.8' (#263) from renovate/ghcr.io-neptunehub-audiomuse-ai-0.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/263
2026-02-03 07:38:40 +00:00
573caeaa42 Merge pull request 'Update Matrix' (#262) from renovate/matrix into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/262
2026-02-03 07:38:21 +00:00
Renovate Bot
2bd74c9f8c Update ghcr.io/neptunehub/audiomuse-ai Docker tag to v0.8.8 2026-02-03 00:02:43 +00:00
Peter Smit
72fd259006 Update immich and add TZ env var 2026-02-02 12:04:11 +01:00
Renovate Bot
ed43046811 Update Paperless-ngx 2026-02-01 00:02:04 +00:00
Renovate Bot
eaa996f117 Update Matrix 2026-01-29 00:02:12 +00:00
Renovate Bot
8d23c2c0f5 Update grafana/grafana Docker tag to v12.3.2 2026-01-28 00:02:26 +00:00
Peter Smit
6bb1159d85 Mount external library for immich 2026-01-25 14:33:14 +01:00
bc10065147 Merge pull request 'Update ghcr.io/paperless-ngx/paperless-ngx Docker tag to v2.20.5' (#257) from renovate/paperless-ngx into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/257
2026-01-24 18:21:25 +00:00
485c17ab9f Merge pull request 'Update ghcr.io/neptunehub/audiomuse-ai Docker tag to v0.8.7' (#256) from renovate/ghcr.io-neptunehub-audiomuse-ai-0.x into master
Reviewed-on: https://git.smittenfeld.nl/peter/homelab-docker-config/pulls/256
2026-01-24 18:21:23 +00:00
Renovate Bot
499aa614f4 Update ghcr.io/paperless-ngx/paperless-ngx Docker tag to v2.20.5 2026-01-20 00:01:53 +00:00
Renovate Bot
78547623b5 Update ghcr.io/neptunehub/audiomuse-ai Docker tag to v0.8.7 2026-01-20 00:01:47 +00:00
18 changed files with 610 additions and 23 deletions

View File

@@ -1,6 +1,6 @@
services:
audiobookshelf:
image: ghcr.io/advplyr/audiobookshelf:2.32.1
image: ghcr.io/advplyr/audiobookshelf:2.33.1
restart: always
ports:
- 13378:80

View File

@@ -31,7 +31,7 @@ services:
# AudioMuse-AI Flask application service
audiomuse-ai-flask:
image: ghcr.io/neptunehub/audiomuse-ai:0.8.6 # Reflects deployment.yaml
image: ghcr.io/neptunehub/audiomuse-ai:0.9.3 # Reflects deployment.yaml
container_name: audiomuse-ai-flask-app
ports:
- "8013:8000"
@@ -69,7 +69,7 @@ services:
# AudioMuse-AI RQ Worker service
audiomuse-ai-worker:
image: ghcr.io/neptunehub/audiomuse-ai:0.8.6 # Reflects deployment.yaml
image: ghcr.io/neptunehub/audiomuse-ai:0.9.3 # Reflects deployment.yaml
container_name: audiomuse-ai-worker-instance
env_file:
- .env

View 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=

View 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"]

View 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
View 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

View 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

View 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!"

View 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: ***"

View File

@@ -14,7 +14,7 @@ services:
- "3000:3000"
- "2222:2222"
gitea-runner:
image: gitea/act_runner:0.2.13
image: gitea/act_runner:0.3.0
restart: always
environment:
CONFIG_FILE: /config.yaml

View File

@@ -8,3 +8,8 @@ IMMICH_POSTGRES_USER=
IMMICH_POSTGRES_PASSWORD=
REDIS_HOSTNAME=
IMMICH_EXTERNAL_MEDIA_LOCATION=
# Default timezone for images without a timezone set
TZ=

View File

@@ -1,13 +1,13 @@
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:v2.4.1
image: ghcr.io/immich-app/immich-server:v2.6.3
# extends:
# file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
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
- ${IMMICH_EXTERNAL_MEDIA_LOCATION}:/external:ro
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
@@ -25,7 +25,7 @@ services:
immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:v2.4.1
image: ghcr.io/immich-app/immich-machine-learning:v2.6.3
volumes:
- model-cache:/cache
env_file:

View File

@@ -1,7 +1,7 @@
services:
# Prometheus - Metrics Collection
prometheus:
image: prom/prometheus:v3.9.1
image: prom/prometheus:v3.10.0
restart: unless-stopped
ports:
- "9091:9090"
@@ -19,7 +19,7 @@ services:
# Grafana - Visualization Dashboard
grafana:
image: grafana/grafana:12.3.1
image: grafana/grafana:12.4.1
restart: unless-stopped
ports:
- "3002:3000"
@@ -41,7 +41,7 @@ services:
- prometheus
loki:
image: grafana/loki:3.6.3
image: grafana/loki:3.6.7
restart: unless-stopped
ports:
- "3100:3100"
@@ -53,7 +53,7 @@ services:
- '-target=all'
alloy:
image: grafana/alloy:v1.12.2
image: grafana/alloy:v1.14.2
restart: unless-stopped
ports:
- "12345:12345"

View File

@@ -18,7 +18,7 @@ services:
- 5434:5432
paperless:
image: ghcr.io/paperless-ngx/paperless-ngx:2.20.4
image: ghcr.io/paperless-ngx/paperless-ngx:2.20.13
restart: always
depends_on:
- db
@@ -49,7 +49,7 @@ services:
PAPERLESS_REDIRECT_LOGIN_TO_SSO: true
gotenberg:
image: docker.io/gotenberg/gotenberg:8.25.1
image: docker.io/gotenberg/gotenberg:8.28.0
restart: always
# The gotenberg chromium route is used to convert .eml files. We do not
@@ -60,5 +60,5 @@ services:
- "--chromium-allow-list=file:///tmp/.*"
tika:
image: docker.io/apache/tika:3.2.3.0
image: docker.io/apache/tika:3.3.0.0
restart: always

View File

@@ -2,7 +2,7 @@
services:
pihole:
container_name: pihole
image: pihole/pihole:2025.11.1
image: pihole/pihole:2026.02.0
ports:
# DNS Ports
- "53:53/tcp"

View File

@@ -1,6 +1,6 @@
services:
pocket-id:
image: ghcr.io/pocket-id/pocket-id:v2.2.0
image: ghcr.io/pocket-id/pocket-id:v2.5.0
restart: always
env_file: .env
ports:

View File

@@ -13,7 +13,7 @@ services:
ports:
- 8071:8080
element-call-livekit:
image: livekit/livekit-server:v1.9.11
image: livekit/livekit-server:v1.10.0
command: --config /etc/livekit.yaml
ports:
- "7880:7880/tcp"
@@ -25,7 +25,7 @@ services:
- ${LIVEKIT_CONFIG_DIR}/config.yaml:/etc/livekit.yaml:ro
mautrix-signal:
container_name: mautrix-signal
image: dock.mau.dev/mautrix/signal:v0.2601.0
image: dock.mau.dev/mautrix/signal:v26.02.2
restart: always
volumes:
- ${MAUTRIX_SIGNAL_DATA_DIR}:/data
@@ -42,7 +42,7 @@ services:
- 5439:5432
mautrix-whatsapp:
container_name: mautrix-whatsapp
image: dock.mau.dev/mautrix/whatsapp:v0.2601.0
image: dock.mau.dev/mautrix/whatsapp:v0.2603.0
#image: petersmit27/mautrix-whatsapp:latest
restart: always
volumes:
@@ -61,7 +61,7 @@ services:
ports:
- 5440:5432
mas:
image: ghcr.io/element-hq/matrix-authentication-service:1.9.0
image: ghcr.io/element-hq/matrix-authentication-service:1.14.0
restart: always
working_dir: /config
volumes:
@@ -97,7 +97,7 @@ services:
- 5442:5432
synapse:
container_name: synapse
image: matrixdotorg/synapse:v1.145.0
image: matrixdotorg/synapse:v1.150.0
restart: always
volumes:
- ${SYNAPSE_CONFIG_DIR}:/data
@@ -108,7 +108,7 @@ services:
- mas
- mautrix-whatsapp
element-admin:
image: oci.element.io/element-admin:0.1.10
image: oci.element.io/element-admin:0.1.11
restart: unless-stopped
ports:
- "8079:8080"

View File

@@ -1,7 +1,7 @@
services:
vaultwarden:
container_name: vaultwarden
image: vaultwarden/server:1.35.2
image: vaultwarden/server:1.35.4
restart: always
volumes:
- ${VAULTWARDEN_DATA_LOCATION}:/data/