Snapshot both servers: the VPS catalog moves to server/vps, the home server joins as server/home

The catalog in server/containers had drifted from the VPS. Eleven compose
files and twelve units no longer matched what runs, and two running
services, Gbrown_Agent and BillTracker, were missing. server/vps is now a
copy of the live files, and panama-server reads from it.

server/home holds the home server's services in the same shape. They still
run under Docker, so the podman units there are drafts for a later move, and
nothing installs from that tree. PostHog, Sentry and Plausible are checkouts
of upstream repositories. Only their local files are kept, next to an
UPSTREAM file naming the repository and the exact commit.

Every secret in both trees is a ${VAR} reference named in .env.example, or
CHANGE_ME in files that are not compose files. The live servers still hold
some of those values inline, so a live file can differ from its copy on
those lines alone. Existing .env.example files keep their comments, with new
keys appended at the end.

The ignore rules and the secrets contract now cover both trees, plus the
volume/ and volumes/ directories the home server uses.
This commit is contained in:
Gabriel Brown committed 2026-10-06 10:52:47 -04:00
1 parent a664cf68f5
commit 913a57f8a6
146 files changed
+5258 -354

No files matched your search

+7
View File
@@ -0,0 +1,7 @@
UPLOAD_LOCATION=CHANGE_ME
DB_DATA_LOCATION=CHANGE_ME
IMMICH_VERSION=CHANGE_ME
DB_PASSWORD=CHANGE_ME
DB_USERNAME=CHANGE_ME
DB_DATABASE_NAME=CHANGE_ME
TZ=CHANGE_ME
+86
View File
@@ -0,0 +1,86 @@
name: immich
networks:
nginx-bridge:
external: true
services:
immich-server:
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
extends:
file: hwaccel.transcoding.yml
service: nvenc
container_name: immich-server
hostname: immich-server
domainname: immich.gbrown.org
networks: ['nginx-bridge']
#ports: ['2283:2283']
env_file: [.env]
labels:
com.centurylinklabs.watchtower.enable: "true"
volumes:
- ${UPLOAD_LOCATION}:/data
- /etc/localtime:/etc/localtime:ro
tty: true
stdin_open: true
restart: unless-stopped
depends_on:
- redis
- database
healthcheck:
disable: false
privileged: true
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-cuda
extends:
file: hwaccel.transcoding.yml
service: nvenc
container_name: immich-machine-learning
hostname: immich-machine-learning
networks: ['nginx-bridge']
#ports: ['3003:3003']
env_file: [.env]
labels:
com.centurylinklabs.watchtower.enable: "true"
volumes: ['./volumes/model-cache:/cache:z']
tty: true
stdin_open: true
restart: unless-stopped
healthcheck:
disable: false
privileged: true
redis:
image: docker.io/valkey/valkey:9@sha256:fb8d272e529ea567b9bf1302245796f21a2672b8368ca3fcb938ac334e613c8f
container_name: immich-redis
hostname: immich-redis
networks: ['nginx-bridge']
env_file: [.env]
labels:
com.centurylinklabs.watchtower.enable: "true"
tty: true
stdin_open: true
restart: unless-stopped
healthcheck:
test: redis-cli ping || exit 1
database:
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
container_name: immich-postgres
hostname: immich-postgres
networks: ['nginx-bridge']
#ports: ['5432:5432']
env_file: [.env]
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
labels:
com.centurylinklabs.watchtower.enable: "true"
volumes:
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
tty: true
stdin_open: true
restart: unless-stopped
shm_size: 128mb
+18
View File
@@ -0,0 +1,18 @@
[Unit]
Description=Podman Compose: Immich
After=network-online.target podman.socket
Wants=network-online.target
[Service]
Type=oneshot
WorkingDirectory=%h/Server/Immich
ExecStart=/usr/bin/podman compose up -d
ExecStop=/usr/bin/podman compose down
RemainAfterExit=yes
TimeoutStartSec=900
TimeoutStopSec=90
Restart=on-failure
RestartSec=30
[Install]
WantedBy=default.target