2025-10-25 13:52:01 +02:00
|
|
|
name: "docker.compose"
|
|
|
|
|
version: "1.0.0"
|
|
|
|
|
description: "Valknar's Stacks"
|
|
|
|
|
author: "valknar@pivoine.art"
|
|
|
|
|
license: "private"
|
|
|
|
|
|
|
|
|
|
envs:
|
|
|
|
|
default:
|
|
|
|
|
# Common
|
|
|
|
|
ADMIN_EMAIL: valknar@pivoine.art
|
2025-10-26 11:05:19 +01:00
|
|
|
NETWORK_NAME: falcon_network
|
2025-10-25 13:52:01 +02:00
|
|
|
TIMEZONE: Europe/Berlin
|
|
|
|
|
# Core
|
|
|
|
|
CORE_COMPOSE_PROJECT_NAME: core
|
|
|
|
|
CORE_DB_HOST: postgres
|
|
|
|
|
CORE_DB_PORT: 5432
|
|
|
|
|
CORE_REDIS_HOST: redis
|
|
|
|
|
CORE_REDIS_PORT: 6379
|
|
|
|
|
CORE_REDIS_IMAGE: redis:7-alpine
|
|
|
|
|
CORE_POSTGRES_IMAGE: postgres:16-alpine
|
|
|
|
|
# VPN
|
|
|
|
|
VPN_TRAEFIK_ENABLED: true
|
|
|
|
|
VPN_COMPOSE_PROJECT_NAME: vpn
|
|
|
|
|
VPN_DOCKER_IMAGE: ghcr.io/wg-easy/wg-easy:latest
|
|
|
|
|
VPN_TRAEFIK_HOST: vpn.pivoine.art
|
|
|
|
|
# Track
|
|
|
|
|
TRACK_TRAEFIK_ENABLED: true
|
|
|
|
|
TRACK_COMPOSE_PROJECT_NAME: track
|
|
|
|
|
TRACK_DOCKER_IMAGE: ghcr.io/umami-software/umami:postgresql-latest
|
2025-10-26 11:52:01 +01:00
|
|
|
TRACK_TRAEFIK_HOST: umami.pivoine.art
|
2025-10-25 13:52:01 +02:00
|
|
|
TRACK_DB_NAME: umami
|
|
|
|
|
# Sexy
|
|
|
|
|
SEXY_TRAEFIK_ENABLED: true
|
|
|
|
|
SEXY_COMPOSE_PROJECT_NAME: sexy
|
|
|
|
|
SEXY_TRAEFIK_HOST: sexy.pivoine.art
|
|
|
|
|
SEXY_DIRECTUS_IMAGE: directus/directus:11.12.0
|
2025-10-26 10:54:01 +01:00
|
|
|
SEXY_FRONTEND_IMAGE: ghcr.io/valknarxxx/sexy:latest
|
2025-10-25 13:52:01 +02:00
|
|
|
SEXY_DB_NAME: directus
|
|
|
|
|
SEXY_PUBLIC_URL: https://sexy.pivoine.art/api
|
|
|
|
|
SEXY_CORS_ORIGIN: https://sexy.pivoine.art
|
|
|
|
|
SEXY_SESSION_COOKIE_DOMAIN: sexy.pivoine.art
|
|
|
|
|
SEXY_CONTENT_SECURITY_POLICY_DIRECTIVES__FRAME_SRC: https://sexy.pivoine.art
|
|
|
|
|
SEXY_USER_REGISTER_URL_ALLOW_LIST: https://sexy.pivoine.art/signup/verify
|
|
|
|
|
SEXY_PASSWORD_RESET_URL_ALLOW_LIST: https://sexy.pivoine.art/password/reset
|
2025-10-26 12:33:05 +01:00
|
|
|
SEXY_FRONTEND_PUBLIC_API_URL: https://sexy.pivoine.art/api
|
|
|
|
|
SEXY_FRONTEND_PUBLIC_URL: https://sexy.pivoine.art
|
2025-10-25 13:52:01 +02:00
|
|
|
# Gotify
|
|
|
|
|
GOTIFY_TRAEFIK_ENABLED: true
|
|
|
|
|
GOTIFY_COMPOSE_PROJECT_NAME: track
|
|
|
|
|
GOTIFY_IMAGE: gotify/server:latest
|
|
|
|
|
GOTIFY_TRAEFIK_HOST: gotify.pivoine.art
|
|
|
|
|
# Proxy
|
|
|
|
|
PROXY_COMPOSE_PROJECT_NAME: proxy
|
|
|
|
|
PROXY_DOCKER_IMAGE: traefik:latest
|
|
|
|
|
|
|
|
|
|
scripts:
|
|
|
|
|
config: docker compose config
|
|
|
|
|
up: docker compose up -d
|
|
|
|
|
down: docker compose down
|
|
|
|
|
logs: docker compose logs -f
|
2025-10-26 12:07:06 +01:00
|
|
|
restart: docker compose restart
|
|
|
|
|
ps: docker compose ps
|
2025-10-26 14:15:21 +01:00
|
|
|
pull: docker compose pull
|
2025-10-26 12:07:06 +01:00
|
|
|
env/sync: rsync -avzhe ssh ./.env root@vps:~/Projects/docker-compose/
|
2025-10-25 13:52:01 +02:00
|
|
|
db/dump: |
|
2025-10-26 11:33:39 +01:00
|
|
|
PGPASSWORD="${DB_PASSWORD}" pg_dump -h "${CORE_DB_HOST}" -p "${CORE_DB_PORT}" -U "${DB_USER}" -d "${SEXY_DB_NAME}" > sexy/directus.sql; \
|
|
|
|
|
docker exec "sexy_api" npx directus schema snapshot "/directus/directus.yaml"; \
|
|
|
|
|
docker cp "sexy/directus.yaml" "sexy_api:/directus/directus.yaml"
|
2025-10-25 13:52:01 +02:00
|
|
|
db/import: |
|
2025-10-26 11:11:31 +01:00
|
|
|
PGPASSWORD="${DB_PASSWORD}" psql -h "${CORE_DB_HOST}" -p "${CORE_DB_PORT}" -U "${DB_USER}" -d postgres -c \
|
2025-10-26 11:19:55 +01:00
|
|
|
"SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '${SEXY_DB_NAME}' AND pid <> pg_backend_pid();"; \
|
|
|
|
|
PGPASSWORD="${DB_PASSWORD}" psql -h "${CORE_DB_HOST}" -p "${CORE_DB_PORT}" -U "${DB_USER}" -d postgres -c "DROP DATABASE IF EXISTS ${SEXY_DB_NAME};"; \
|
|
|
|
|
PGPASSWORD="${DB_PASSWORD}" psql -h "${CORE_DB_HOST}" -p "${CORE_DB_PORT}" -U "${DB_USER}" -d postgres -c "CREATE DATABASE ${SEXY_DB_NAME};"; \
|
|
|
|
|
PGPASSWORD="${DB_PASSWORD}" psql -h "${CORE_DB_HOST}" -p "${CORE_DB_PORT}" -U "${DB_USER}" -d "${SEXY_DB_NAME}" -f "sexy/directus.sql"; \
|
2025-10-26 11:33:39 +01:00
|
|
|
docker cp "sexy/directus.yaml" "sexy_api:/directus/directus.yaml"; \
|
|
|
|
|
docker exec "sexy_api" npx directus schema apply /directus/directus.yaml \
|
2025-10-26 11:38:32 +01:00
|
|
|
uploads/export: |
|
|
|
|
|
rm -rf sexy/uploads
|
|
|
|
|
docker cp "sexy_api:/directus/uploads" "sexy/uploads"
|
|
|
|
|
uploads/import: |
|
2025-10-26 11:40:07 +01:00
|
|
|
docker cp "sexy/uploads" "sexy_api:/directus"
|
2025-10-26 12:07:06 +01:00
|
|
|
net/create: docker network create "$NETWORK_NAME"
|