feat: sexy
2
arty.yml
@@ -39,7 +39,7 @@ envs:
|
||||
SEXY_COMPOSE_PROJECT_NAME: sexy
|
||||
SEXY_TRAEFIK_HOST: sexy.pivoine.art
|
||||
SEXY_DIRECTUS_IMAGE: directus/directus:11.12.0
|
||||
SEXY_FRONTEND_IMAGE: node:22
|
||||
SEXY_FRONTEND_IMAGE: ghcr.io/valknarxxx/sexy:latest
|
||||
SEXY_DB_NAME: directus
|
||||
SEXY_PUBLIC_URL: https://sexy.pivoine.art/api
|
||||
SEXY_CORS_ORIGIN: https://sexy.pivoine.art
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
name: falcon
|
||||
include:
|
||||
- core/compose.yaml
|
||||
- sexy/compose.yaml
|
||||
- gotify/compose.yaml
|
||||
- track/compose.yaml
|
||||
- proxy/compose.yaml
|
||||
|
||||
91
sexy/compose.yaml
Normal file
@@ -0,0 +1,91 @@
|
||||
services:
|
||||
directus:
|
||||
image: ${SEXY_DIRECTUS_IMAGE}
|
||||
container_name: ${SEXY_COMPOSE_PROJECT_NAME}_api
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- compose_network
|
||||
volumes:
|
||||
- ${SEXY_DIRECTUS_UPLOADS:-directus_uploads}:/directus/uploads
|
||||
- ${SEXY_DIRECTUS_BUNDLE:-directus_bundle}:/directus/extensions/sexy.pivoine.art
|
||||
environment:
|
||||
TZ: ${TIMEZONE:-Europe/Amsterdam}
|
||||
SECRET: ${SEXY_DIRECTUS_SECRET}
|
||||
DB_CLIENT: pg
|
||||
DB_HOST: ${CORE_DB_HOST}
|
||||
DB_PORT: ${CORE_DB_PORT}
|
||||
DB_DATABASE: ${SEXY_DB_NAME}
|
||||
DB_USER: ${DB_USER}
|
||||
DB_PASSWORD: ${DB_PASSWORD}
|
||||
CACHE_ENABLED: ${SEXY_CACHE_ENABLED:-true}
|
||||
CACHE_AUTO_PURGE: ${SEXY_CACHE_AUTO_PURGE:-true}
|
||||
CACHE_STORE: redis
|
||||
REDIS: redis://${CORE_REDIS_HOST}:${CORE_REDIS_PORT}
|
||||
ADMIN_EMAIL: ${ADMIN_EMAIL}
|
||||
ADMIN_PASSWORD: ${ADMIN_PASSWORD}
|
||||
WEBSOCKETS_ENABLED: ${SEXY_WEBSOCKETS_ENABLED:-true}
|
||||
PUBLIC_URL: ${SEXY_PUBLIC_URL}
|
||||
CORS_ENABLED: ${SEXY_CORS_ENABLED:-true}
|
||||
CORS_ORIGIN: ${SEXY_CORS_ORIGIN}
|
||||
SESSION_COOKIE_SECURE: ${SEXY_SESSION_COOKIE_SECURE:-true}
|
||||
SESSION_COOKIE_SAME_SITE: ${SEXY_SESSION_COOKIE_SAME_SITE:-strict}
|
||||
SESSION_COOKIE_DOMAIN: ${SEXY_SESSION_COOKIE_DOMAIN}
|
||||
EXTENSIONS_PATH: ${SEXY_EXTENSIONS_PATH:-./extensions}
|
||||
EXTENSIONS_AUTO_RELOAD: ${SEXY_EXTENSIONS_AUTO_RELOAD:-false}
|
||||
CONTENT_SECURITY_POLICY_DIRECTIVES__FRAME_SRC: ${SEXY_CONTENT_SECURITY_POLICY_DIRECTIVES__FRAME_SRC}
|
||||
EMAIL_TRANSPORT: ${EMAIL_TRANSPORT}
|
||||
EMAIL_FROM: ${EMAIL_FROM}
|
||||
EMAIL_SMTP_HOST: ${EMAIL_SMTP_HOST}
|
||||
EMAIL_SMTP_PORT: ${EMAIL_SMTP_PORT}
|
||||
EMAIL_SMTP_USER: ${EMAIL_SMTP_USER}
|
||||
EMAIL_SMTP_PASSWORD: ${EMAIL_SMTP_PASSWORD}
|
||||
USER_REGISTER_URL_ALLOW_LIST: ${SEXY_USER_REGISTER_URL_ALLOW_LIST}
|
||||
PASSWORD_RESET_URL_ALLOW_LIST: ${SEXY_PASSWORD_RESET_URL_ALLOW_LIST}
|
||||
labels:
|
||||
- 'traefik.enable=${SEXY_TRAEFIK_ENABLED:-true}'
|
||||
- 'traefik.http.middlewares.${SEXY_COMPOSE_PROJECT_NAME}-api-redirect-web-secure.redirectscheme.scheme=https'
|
||||
- 'traefik.http.routers.${SEXY_COMPOSE_PROJECT_NAME}-api-web.middlewares=${SEXY_COMPOSE_PROJECT_NAME}-api-redirect-web-secure'
|
||||
- 'traefik.http.routers.${SEXY_COMPOSE_PROJECT_NAME}-api-web.rule=Host(`${SEXY_TRAEFIK_HOST}`) && PathPrefix(`/api`)'
|
||||
- 'traefik.http.routers.${SEXY_COMPOSE_PROJECT_NAME}-api-web.entrypoints=web'
|
||||
- 'traefik.http.routers.${SEXY_COMPOSE_PROJECT_NAME}-api-web-secure.rule=Host(`${SEXY_TRAEFIK_HOST}`) && PathPrefix(`/api`)'
|
||||
- 'traefik.http.routers.${SEXY_COMPOSE_PROJECT_NAME}-api-web-secure.tls.certresolver=resolver'
|
||||
- 'traefik.http.routers.${SEXY_COMPOSE_PROJECT_NAME}-api-web-secure.entrypoints=web-secure'
|
||||
- 'traefik.http.middlewares.${SEXY_COMPOSE_PROJECT_NAME}-api-web-secure-compress.compress=true'
|
||||
- 'traefik.http.middlewares.${SEXY_COMPOSE_PROJECT_NAME}-api-strip.stripprefix.prefixes=/api'
|
||||
- 'traefik.http.routers.${SEXY_COMPOSE_PROJECT_NAME}-api-web-secure.middlewares=${SEXY_COMPOSE_PROJECT_NAME}-api-strip,${SEXY_COMPOSE_PROJECT_NAME}-api-web-secure-compress'
|
||||
- 'traefik.http.services.${SEXY_COMPOSE_PROJECT_NAME}-api-web-secure.loadbalancer.server.port=8055'
|
||||
- 'traefik.docker.network=compose_network'
|
||||
|
||||
frontend:
|
||||
image: ${SEXY_FRONTEND_IMAGE}
|
||||
container_name: ${SEXY_COMPOSE_PROJECT_NAME}_frontend
|
||||
restart: unless-stopped
|
||||
user: node
|
||||
working_dir: /home/node/app/packages/frontend
|
||||
networks:
|
||||
- compose_network
|
||||
environment:
|
||||
TZ: ${TIMEZONE:-Europe/Amsterdam}
|
||||
NODE_ENV: production
|
||||
volumes:
|
||||
- ${SEXY_DIRECTUS_BUNDLE:-directus_bundle}:/home/node/app/packages/bundle
|
||||
command: ["node", "build/index.js"]
|
||||
labels:
|
||||
- 'traefik.enable=${SEXY_TRAEFIK_ENABLED:-true}'
|
||||
- 'traefik.http.middlewares.${SEXY_COMPOSE_PROJECT_NAME}-frontend-redirect-web-secure.redirectscheme.scheme=https'
|
||||
- 'traefik.http.routers.${SEXY_COMPOSE_PROJECT_NAME}-frontend-web.middlewares=${SEXY_COMPOSE_PROJECT_NAME}-frontend-redirect-web-secure'
|
||||
- 'traefik.http.routers.${SEXY_COMPOSE_PROJECT_NAME}-frontend-web.rule=Host(`${SEXY_TRAEFIK_HOST}`)'
|
||||
- 'traefik.http.routers.${SEXY_COMPOSE_PROJECT_NAME}-frontend-web.entrypoints=web'
|
||||
- 'traefik.http.routers.${SEXY_COMPOSE_PROJECT_NAME}-frontend-web-secure.rule=Host(`${SEXY_TRAEFIK_HOST}`)'
|
||||
- 'traefik.http.routers.${SEXY_COMPOSE_PROJECT_NAME}-frontend-web-secure.tls.certresolver=resolver'
|
||||
- 'traefik.http.routers.${SEXY_COMPOSE_PROJECT_NAME}-frontend-web-secure.entrypoints=web-secure'
|
||||
- 'traefik.http.middlewares.${SEXY_COMPOSE_PROJECT_NAME}-frontend-web-secure-compress.compress=true'
|
||||
- 'traefik.http.routers.${SEXY_COMPOSE_PROJECT_NAME}-frontend-web-secure.middlewares=${SEXY_COMPOSE_PROJECT_NAME}-frontend-web-secure-compress'
|
||||
- 'traefik.http.services.${SEXY_COMPOSE_PROJECT_NAME}-frontend-web-secure.loadbalancer.server.port=3000'
|
||||
- 'traefik.docker.network=compose_network'
|
||||
|
||||
volumes:
|
||||
directus_uploads:
|
||||
name: ${CORE_COMPOSE_PROJECT_NAME}_directus_uploads
|
||||
directus_bundle:
|
||||
name: ${CORE_COMPOSE_PROJECT_NAME}_directus_bundle
|
||||
4180
sexy/directus.sql
Normal file
2114
sexy/directus.yaml
Normal file
BIN
sexy/uploads/009f5bad-9a8a-401e-9cb1-5792fa41337f.mp4
Normal file
BIN
sexy/uploads/0a509923-853d-44e7-ad76-b6e6bdf89ba5.ico
Executable file
|
After Width: | Height: | Size: 15 KiB |
BIN
sexy/uploads/3001a83c-3033-4dd1-b3ac-c910bdb1ef2c.mp4
Normal file
BIN
sexy/uploads/318207c2-3846-4383-b0e2-60925992f781.png
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 1.8 KiB |
BIN
sexy/uploads/498e539a-7c86-44e3-9824-9a5bb0cc979e.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 1.7 KiB |
BIN
sexy/uploads/4be0073d-a30a-4bd3-937c-4da917f3833f.png
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 1.7 KiB |
BIN
sexy/uploads/6435caee-2da5-444a-b378-8c341bba6720.png
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 1.8 KiB |
BIN
sexy/uploads/69dfefa0-643d-44cd-8f08-bc68177a38a8.png
Normal file
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 1.9 KiB |
BIN
sexy/uploads/7779e362-8703-411d-882d-690fd1970566.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 2.2 KiB |
BIN
sexy/uploads/83c90c5c-5877-482c-8043-daa4d28e58de.png
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
BIN
sexy/uploads/8ad7e858-0c83-4d88-bb50-3680f1cfa9c2.png
Executable file
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 944 B |
|
After Width: | Height: | Size: 2.6 KiB |
BIN
sexy/uploads/9715bf21-05ce-4169-993b-a04edebe29af.png
Normal file
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 2.1 KiB |
BIN
sexy/uploads/b5c8e028-43c0-4eea-9b69-a3478d3f219b.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 22 KiB |
BIN
sexy/uploads/b85b3008-f592-4676-8c84-666e0a60423d.png
Normal file
|
After Width: | Height: | Size: 860 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 15 KiB |
BIN
sexy/uploads/bab78ff3-10bf-4fc6-9e3a-6e58bb6655b1.png
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
BIN
sexy/uploads/cecf7ce8-388a-43a9-b9bc-2ab4d44d3f7f.png
Normal file
|
After Width: | Height: | Size: 7.0 MiB |
|
After Width: | Height: | Size: 120 KiB |
|
After Width: | Height: | Size: 28 KiB |
BIN
sexy/uploads/d3f53a9b-bbce-436c-a6f4-04e5ef120d7e.png
Normal file
|
After Width: | Height: | Size: 4.5 MiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 7.8 KiB |
BIN
sexy/uploads/e77c58c1-f718-4b7a-b34c-c42861c8122f.png
Normal file
|
After Width: | Height: | Size: 716 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 11 KiB |
BIN
sexy/uploads/f718185e-fd82-4f16-971d-88baf2d069de.webp
Executable file
|
After Width: | Height: | Size: 280 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 5.5 KiB |